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
f3d521356d
commit
882f8009dc
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. */
|
||||
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;
|
||||
}
|
||||
|
||||
function isNumberFrom1To100(value: unknown): boolean {
|
||||
return z.coerce.number().int().gte(1).lte(100).safeParse(value).success;
|
||||
}
|
||||
|
||||
export {
|
||||
bech32ToPubkey,
|
||||
dedupeEvents,
|
||||
eventAge,
|
||||
findTag,
|
||||
isNostrId,
|
||||
isNumberFrom1To100,
|
||||
isURL,
|
||||
type Nip05,
|
||||
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 { Conf } from '@/config.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 ExtraMessage = string;
|
||||
|
|
@ -29,7 +30,7 @@ export async function getZapSplits(store: NStore, pubkey: string): Promise<Ditto
|
|||
for (const tag of event.tags) {
|
||||
if (
|
||||
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] };
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue