mirror of
https://gitlab.com/soapbox-pub/ditto.git
synced 2025-12-06 11:29:46 +00:00
refactor: rename isNumberFrom1To100 to percentageSchema
This commit is contained in:
parent
0aa0033c39
commit
9fe1633dd2
5 changed files with 39 additions and 33 deletions
22
src/schema.test.ts
Normal file
22
src/schema.test.ts
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
import { assertEquals } from '@std/assert';
|
||||||
|
|
||||||
|
import { percentageSchema } from '@/schema.ts';
|
||||||
|
|
||||||
|
Deno.test('Value is any percentage from 1 to 100', () => {
|
||||||
|
assertEquals(percentageSchema.safeParse('latvia' as unknown).success, false);
|
||||||
|
assertEquals(percentageSchema.safeParse(1.5).success, false);
|
||||||
|
assertEquals(percentageSchema.safeParse(Infinity).success, false);
|
||||||
|
assertEquals(percentageSchema.safeParse('Infinity').success, false);
|
||||||
|
assertEquals(percentageSchema.safeParse('0').success, false);
|
||||||
|
assertEquals(percentageSchema.safeParse(0).success, false);
|
||||||
|
assertEquals(percentageSchema.safeParse(-1).success, false);
|
||||||
|
assertEquals(percentageSchema.safeParse('-10').success, false);
|
||||||
|
assertEquals(percentageSchema.safeParse([]).success, false);
|
||||||
|
assertEquals(percentageSchema.safeParse(undefined).success, false);
|
||||||
|
|
||||||
|
for (let i = 1; i < 100; i++) {
|
||||||
|
assertEquals(percentageSchema.safeParse(String(i)).success, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
assertEquals(percentageSchema.safeParse('1e1').success, true);
|
||||||
|
});
|
||||||
|
|
@ -38,4 +38,14 @@ const booleanParamSchema = z.enum(['true', 'false']).transform((value) => value
|
||||||
/** Schema for `File` objects. */
|
/** Schema for `File` objects. */
|
||||||
const fileSchema = z.custom<File>((value) => value instanceof File);
|
const fileSchema = z.custom<File>((value) => value instanceof File);
|
||||||
|
|
||||||
export { booleanParamSchema, decode64Schema, fileSchema, filteredArray, hashtagSchema, safeUrlSchema };
|
const percentageSchema = z.coerce.number().int().gte(1).lte(100);
|
||||||
|
|
||||||
|
export {
|
||||||
|
booleanParamSchema,
|
||||||
|
decode64Schema,
|
||||||
|
fileSchema,
|
||||||
|
filteredArray,
|
||||||
|
hashtagSchema,
|
||||||
|
percentageSchema,
|
||||||
|
safeUrlSchema,
|
||||||
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
import { assertEquals } from '@std/assert';
|
|
||||||
|
|
||||||
import { isNumberFrom1To100 } from '@/utils.ts';
|
|
||||||
|
|
||||||
Deno.test('Value is any number from 1 to 100', () => {
|
|
||||||
assertEquals(isNumberFrom1To100('latvia'), false);
|
|
||||||
assertEquals(isNumberFrom1To100(1.5), false);
|
|
||||||
assertEquals(isNumberFrom1To100(Infinity), false);
|
|
||||||
assertEquals(isNumberFrom1To100('Infinity'), false);
|
|
||||||
assertEquals(isNumberFrom1To100('0'), false);
|
|
||||||
assertEquals(isNumberFrom1To100(0), false);
|
|
||||||
assertEquals(isNumberFrom1To100(-1), false);
|
|
||||||
assertEquals(isNumberFrom1To100('-10'), false);
|
|
||||||
assertEquals(isNumberFrom1To100([]), false);
|
|
||||||
assertEquals(isNumberFrom1To100(undefined), false);
|
|
||||||
|
|
||||||
for (let i = 1; i < 100; i++) {
|
|
||||||
assertEquals(isNumberFrom1To100(String(i)), true);
|
|
||||||
}
|
|
||||||
|
|
||||||
assertEquals(isNumberFrom1To100('1e1'), true);
|
|
||||||
});
|
|
||||||
|
|
@ -93,17 +93,12 @@ function isURL(value: unknown): boolean {
|
||||||
return z.string().url().safeParse(value).success;
|
return z.string().url().safeParse(value).success;
|
||||||
}
|
}
|
||||||
|
|
||||||
function isNumberFrom1To100(value: unknown): boolean {
|
|
||||||
return z.coerce.number().int().gte(1).lte(100).safeParse(value).success;
|
|
||||||
}
|
|
||||||
|
|
||||||
export {
|
export {
|
||||||
bech32ToPubkey,
|
bech32ToPubkey,
|
||||||
dedupeEvents,
|
dedupeEvents,
|
||||||
eventAge,
|
eventAge,
|
||||||
findTag,
|
findTag,
|
||||||
isNostrId,
|
isNostrId,
|
||||||
isNumberFrom1To100,
|
|
||||||
isURL,
|
isURL,
|
||||||
type Nip05,
|
type Nip05,
|
||||||
nostrDate,
|
nostrDate,
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,10 @@
|
||||||
import { Conf } from '@/config.ts';
|
|
||||||
import { NSchema as n, NStore } from '@nostrify/nostrify';
|
|
||||||
import { isNumberFrom1To100, nostrNow } from '@/utils.ts';
|
|
||||||
import { Storages } from '@/storages.ts';
|
|
||||||
import { AdminSigner } from '@/signers/AdminSigner.ts';
|
import { AdminSigner } from '@/signers/AdminSigner.ts';
|
||||||
|
import { Conf } from '@/config.ts';
|
||||||
import { handleEvent } from '@/pipeline.ts';
|
import { handleEvent } from '@/pipeline.ts';
|
||||||
|
import { NSchema as n, NStore } from '@nostrify/nostrify';
|
||||||
|
import { nostrNow } from '@/utils.ts';
|
||||||
|
import { percentageSchema } from '@/schema.ts';
|
||||||
|
import { Storages } from '@/storages.ts';
|
||||||
|
|
||||||
type Pubkey = string;
|
type Pubkey = string;
|
||||||
type ExtraMessage = string;
|
type ExtraMessage = string;
|
||||||
|
|
@ -29,7 +30,7 @@ export async function getZapSplits(store: NStore, pubkey: string): Promise<Ditto
|
||||||
for (const tag of event.tags) {
|
for (const tag of event.tags) {
|
||||||
if (
|
if (
|
||||||
tag[0] === 'p' && n.id().safeParse(tag[1]).success &&
|
tag[0] === 'p' && n.id().safeParse(tag[1]).success &&
|
||||||
isNumberFrom1To100(tag[2])
|
percentageSchema.safeParse(tag[2]).success
|
||||||
) {
|
) {
|
||||||
zapSplits[tag[1]] = { amount: Number(tag[2]), message: tag[3] };
|
zapSplits[tag[1]] = { amount: Number(tag[2]), message: tag[3] };
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue