chore: Update default

This commit is contained in:
BluJ
2023-02-13 15:18:31 -07:00
parent 9430d1ceb2
commit 88fef833ee
2 changed files with 30 additions and 2 deletions

View File

@@ -596,6 +596,32 @@ const { test } = Deno;
console.log("Checker = ", matches.Parser.parserAsString(checker.parser));
checker.unsafeCast({ mode: "automatic", size: 1234 });
});
test("Something that broke", () => {
const checker = PM.typeFromProps({
pubkey_whitelist: {
name: "Pubkey Whitelist (hex)",
description:
"A list of pubkeys that are permitted to publish through your relay. A minimum, you need to enter your own Nostr hex (not npub) pubkey. Go to https://damus.io/key/ to convert from npub to hex.",
type: "list",
nullable: true,
range: "[1,*)",
subtype: "string",
spec: {
placeholder: "hex (not npub) pubkey",
pattern: "[0-9a-fA-F]{3}",
"pattern-description":
"Must be a valid 64-digit hexadecimal value (ie a Nostr hex pubkey, not an npub). Go to https://damus.io/key/ to convert npub to hex.",
},
default: [] as string[], // [] as string []
},
} as const);
checker.unsafeCast({
pubkey_whitelist: ["aaa"],
});
});
test("Full spec", () => {
const checker = PM.typeFromProps(bitcoinProperties);

View File

@@ -168,7 +168,7 @@ const isGenerator = matches.shape({ charset: matches.string, len: matches.number
function defaultNullable<A>(parser: matches.Parser<unknown, A>, value: unknown) {
if (matchDefault.test(value)) {
if (isGenerator(value.default)) return parser.defaultTo(parser.unsafeCast(generateDefault(value.default)));
return parser.defaultTo(parser.unsafeCast(value.default));
return parser.defaultTo(value.default);
}
if (matchNullable.test(value)) return parser.optional();
return parser;
@@ -215,11 +215,13 @@ export function guardAll<A extends ValueSpecAny>(value: A): matches.Parser<unkno
const spec = (matchSpec.test(value) && value.spec) || {};
const rangeValidate = (matchRange.test(value) && matchNumberWithRange(value.range).test) || (() => true);
const { default: _, ...arrayOfSpec } = spec;
const subtype = matchSubType.unsafeCast(value).subtype;
return defaultNullable(
matches
// deno-lint-ignore no-explicit-any
.arrayOf(guardAll({ type: subtype, ...spec } as any))
.arrayOf(guardAll({ type: subtype, ...arrayOfSpec } as any))
.validate((x) => rangeValidate(x.length), "valid length"),
value
// deno-lint-ignore no-explicit-any