effect-app 4.0.0-beta.328 → 4.0.0-beta.329
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/Schema/ext.d.ts.map +1 -1
- package/dist/Schema/ext.js +11 -4
- package/dist/Schema/moreStrings.d.ts +3 -3
- package/dist/Schema/moreStrings.d.ts.map +1 -1
- package/dist/Schema/moreStrings.js +51 -10
- package/dist/ids.d.ts +0 -10
- package/dist/ids.d.ts.map +1 -1
- package/dist/ids.js +9 -2
- package/package.json +1 -1
- package/src/Schema/ext.ts +11 -3
- package/src/Schema/moreStrings.ts +82 -13
- package/src/ids.ts +12 -1
- package/test/moreStrings.test.ts +48 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @effect-app/prelude
|
|
2
2
|
|
|
3
|
+
## 4.0.0-beta.329
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 459697f: Restore native Arbitrary for the schemas that lost custom fast-check `toArbitrary`. `StringId` uses `toCodecArbitrary` (the native replacement): generate a 210-byte `Uint8Array` and run `customRandom(urlAlphabet, 21, …)` — same as the old `StringIdArb`. JSON stays a branded string via `toCodec`. `Url` is `https://…`. `RequestId` samples unique nanoid-shaped ids. `Finite` generation is capped at ±1e6. `generateFromSchema` jumps its master seed per call so successive `count: 1` draws do not collide on attempt-0 edge strings.
|
|
8
|
+
|
|
3
9
|
## 4.0.0-beta.328
|
|
4
10
|
|
|
5
11
|
### Minor Changes
|
package/dist/Schema/ext.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ext.d.ts","sourceRoot":"","sources":["../../src/Schema/ext.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"ext.d.ts","sourceRoot":"","sources":["../../src/Schema/ext.ts"],"names":[],"mappings":"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"}
|
package/dist/Schema/ext.js
CHANGED
|
@@ -35,6 +35,7 @@ import * as Effect from "effect/Effect";
|
|
|
35
35
|
import { pipe } from "effect/Function";
|
|
36
36
|
import * as Function from "effect/Function";
|
|
37
37
|
import * as Option from "effect/Option";
|
|
38
|
+
import * as Order from "effect/Order";
|
|
38
39
|
import * as S from "effect/Schema";
|
|
39
40
|
import * as SchemaIssue from "effect/SchemaIssue";
|
|
40
41
|
import * as SchemaTransformation from "effect/SchemaTransformation";
|
|
@@ -140,21 +141,27 @@ export const Number = Object.assign(S.Number, {
|
|
|
140
141
|
*/
|
|
141
142
|
withDecodingDefaultType: S.Number.pipe(S.withDecodingDefaultType(Effect.succeed(0)))
|
|
142
143
|
});
|
|
144
|
+
// Generation-only: native Arbitrary otherwise samples up to ±Number.MAX_VALUE, so
|
|
145
|
+
// derived totals overflow to Infinity. Validation and JSON Schema are unaffected.
|
|
146
|
+
const realisticFiniteSamples = S.makeFilter(() => undefined, {
|
|
147
|
+
arbitraryConstraint: { order: Order.Number, minimum: -1_000_000, maximum: 1_000_000 }
|
|
148
|
+
});
|
|
149
|
+
const FiniteSchema = S.Finite.pipe(S.check(realisticFiniteSamples));
|
|
143
150
|
/** Like the default Schema `Finite` but with default helpers. */
|
|
144
|
-
export const Finite = Object.assign(
|
|
151
|
+
export const Finite = Object.assign(FiniteSchema, {
|
|
145
152
|
/**
|
|
146
153
|
* Construction-only default `0`. Applied only when the field is omitted
|
|
147
154
|
* from `.make(...)` input. NOT applied during decode — cannot be used to
|
|
148
155
|
* JIT-migrate database fields. See file-level note.
|
|
149
156
|
*/
|
|
150
|
-
withConstructorDefault:
|
|
157
|
+
withConstructorDefault: FiniteSchema.pipe(S.withConstructorDefault(Effect.succeed(0))),
|
|
151
158
|
/**
|
|
152
159
|
* Decode-time default `0`. **Discouraged for persisted data:** a missing
|
|
153
160
|
* field may be data corruption, not an old-shape document; silently
|
|
154
161
|
* substituting `0` hides the problem. Prefer an explicit, preferably
|
|
155
162
|
* versioned migration over a decode-time fallback. See file-level note.
|
|
156
163
|
*/
|
|
157
|
-
withDecodingDefaultType:
|
|
164
|
+
withDecodingDefaultType: FiniteSchema.pipe(S.withDecodingDefaultType(Effect.succeed(0)))
|
|
158
165
|
});
|
|
159
166
|
/** Like the default Schema `Literals` but with default helpers. Default value is `literals[0]`. */
|
|
160
167
|
export const Literals = (literals) => pipe(S.Literals(literals), (s) => Object.assign(s, {
|
|
@@ -449,4 +456,4 @@ export const contextFromServices = Effect.fnUntraced(function* (self, ...service
|
|
|
449
456
|
const context = Context.pick(...services)(yield* Effect.context());
|
|
450
457
|
return provide(self, context);
|
|
451
458
|
});
|
|
452
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1NjaGVtYS9leHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELHdEQUF3RDtBQUN4RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2Qkc7QUFDSCxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUN2QyxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDdEMsT0FBTyxLQUFLLFFBQVEsTUFBTSxpQkFBaUIsQ0FBQTtBQUMzQyxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUN2QyxPQUFPLEtBQUssQ0FBQyxNQUFNLGVBQWUsQ0FBQTtBQUNsQyxPQUFPLEtBQUssV0FBVyxNQUFNLG9CQUFvQixDQUFBO0FBQ2pELE9BQU8sS0FBSyxvQkFBb0IsTUFBTSw2QkFBNkIsQ0FBQTtBQUNuRSxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUV2QyxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQTtBQUN4QyxPQUFPLEtBQUssU0FBUyxNQUFNLGlCQUFpQixDQUFBO0FBQzVDLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBVWxELE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FDdkMsTUFBTTtLQUNILE9BQU8sQ0FBQyxXQUFXLEVBQUUsb0JBQW9CLENBQUM7S0FDMUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUNqRixDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQTJCO0lBQ3pELFdBQVcsRUFBRSxNQUFNLENB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
|
|
459
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1NjaGVtYS9leHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELHdEQUF3RDtBQUN4RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2Qkc7QUFDSCxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUN2QyxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDdEMsT0FBTyxLQUFLLFFBQVEsTUFBTSxpQkFBaUIsQ0FBQTtBQUMzQyxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUN2QyxPQUFPLEtBQUssS0FBSyxNQUFNLGNBQWMsQ0FBQTtBQUNyQyxPQUFPLEtBQUssQ0FBQyxNQUFNLGVBQWUsQ0FBQTtBQUNsQyxPQUFPLEtBQUssV0FBVyxNQUFNLG9CQUFvQixDQUFBO0FBQ2pELE9BQU8sS0FBSyxvQkFBb0IsTUFBTSw2QkFBNkIsQ0FBQTtBQUNuRSxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUV2QyxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQTtBQUN4QyxPQUFPLEtBQUssU0FBUyxNQUFNLGlCQUFpQixDQUFBO0FBQzVDLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBVWxELE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FDdkMsTUFBTTtLQUNILE9BQU8sQ0FBQyxXQUFXLEVBQUUsb0JBQW9CLENBQUM7S0FDMUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUNqRixDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0s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
|
|
@@ -100,13 +100,13 @@ export type StringId = string & StringIdBrand;
|
|
|
100
100
|
* `.withConstructorDefault` => fresh `nanoid()` (construction-only; not
|
|
101
101
|
* applied during decode — see file-level note).
|
|
102
102
|
*/
|
|
103
|
-
export interface StringIdSchema extends
|
|
103
|
+
export interface StringIdSchema extends S.declareConstructor<StringId, string, readonly [], StringId> {
|
|
104
104
|
(i: string, options?: SchemaAST.ParseOptions): StringId;
|
|
105
105
|
/** Generate fresh `nanoid()`-shaped `StringId`. */
|
|
106
106
|
make(): StringId;
|
|
107
107
|
/** Construct a `StringId` from a known string (validated via decodeSync). */
|
|
108
108
|
make(input: string, options?: S.MakeOptions): StringId;
|
|
109
|
-
readonly withConstructorDefault: S.withConstructorDefault<
|
|
109
|
+
readonly withConstructorDefault: S.withConstructorDefault<S.declareConstructor<StringId, string, readonly [], StringId>>;
|
|
110
110
|
}
|
|
111
111
|
export declare const StringId: StringIdSchema;
|
|
112
112
|
/**
|
|
@@ -117,7 +117,7 @@ export declare const StringId: StringIdSchema;
|
|
|
117
117
|
* prefixed id. Construction-only — not applied during decode; see file-level
|
|
118
118
|
* note.
|
|
119
119
|
*/
|
|
120
|
-
export declare function prefixedStringId<Type extends StringId>(): <Prefix extends string, Separator extends string = "-">(prefix: Prefix, name: string, separator?: Separator) => import("./ext.js").WithDefaults<S.
|
|
120
|
+
export declare function prefixedStringId<Type extends StringId>(): <Prefix extends string, Separator extends string = "-">(prefix: Prefix, name: string, separator?: Separator) => import("./ext.js").WithDefaults<S.declareConstructor<Type, string, readonly [], Type>> & S.declareConstructor<Type, string, readonly [], Type> & PrefixedStringUtils<Type, Prefix, Separator>;
|
|
121
121
|
/**
|
|
122
122
|
* Build a branded `StringId` schema for the given branded `Id` type.
|
|
123
123
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moreStrings.d.ts","sourceRoot":"","sources":["../../src/Schema/moreStrings.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,KAAK,CAAC,MAAM,cAAc,CAAA;AAGtC,OAAO,KAAK,CAAC,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"moreStrings.d.ts","sourceRoot":"","sources":["../../src/Schema/moreStrings.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,9 @@ import { extendM } from "effect-app/utils";
|
|
|
2
2
|
import * as Effect from "effect/Effect";
|
|
3
3
|
import { pipe } from "effect/Function";
|
|
4
4
|
import * as S from "effect/Schema";
|
|
5
|
-
import
|
|
5
|
+
import * as Getter from "effect/SchemaGetter";
|
|
6
|
+
import * as SchemaIssue from "effect/SchemaIssue";
|
|
7
|
+
import { customRandom, nanoid, urlAlphabet } from "nanoid";
|
|
6
8
|
import validator from "validator";
|
|
7
9
|
import { fromBrand, nominal } from "./brand.js";
|
|
8
10
|
import { withDefaultMake } from "./ext.js";
|
|
@@ -29,11 +31,31 @@ export const Min3String255 = pipe(S.String, S.check(S.isMinLength(3), S.isMaxLen
|
|
|
29
31
|
}), withDefaultMake);
|
|
30
32
|
const minLength = 6;
|
|
31
33
|
const maxLength = 50;
|
|
32
|
-
const
|
|
34
|
+
const nanoidSize = 21;
|
|
35
|
+
const nanoidByteLength = 10 * nanoidSize;
|
|
36
|
+
const StringIdString = pipe(S.String, S.check(S.isMinLength(minLength), S.isMaxLength(maxLength)), fromBrand(nominal(), {
|
|
33
37
|
identifier: "StringId",
|
|
34
38
|
jsonSchema: {}
|
|
35
39
|
}));
|
|
36
|
-
const
|
|
40
|
+
const nanoidFromBytes = (bytes) => customRandom(urlAlphabet, nanoidSize, (size) => bytes.subarray(0, size))();
|
|
41
|
+
// JSON stays a branded string (toCodec). Generation uses toCodecArbitrary — the native
|
|
42
|
+
// replacement for fast-check `toArbitrary` — same as the old StringIdArb:
|
|
43
|
+
// uint8Array(210).map(bytes => customRandom(urlAlphabet, 21, …)).
|
|
44
|
+
const StringIdSchemaBase = S.declareConstructor()([], () => (input, ast, options) => S.is(StringIdString)(input)
|
|
45
|
+
? Effect.succeed(input)
|
|
46
|
+
: Effect.fail(new SchemaIssue.InvalidType(ast, input, options)), {
|
|
47
|
+
identifier: "StringId",
|
|
48
|
+
expected: "StringId",
|
|
49
|
+
toCodec: () => S.link()(StringIdString, {
|
|
50
|
+
decode: Getter.passthrough(),
|
|
51
|
+
encode: Getter.passthrough()
|
|
52
|
+
}),
|
|
53
|
+
toCodecArbitrary: () => S.link()(S.Uint8Array.check(S.isMinLength(nanoidByteLength), S.isMaxLength(nanoidByteLength)), {
|
|
54
|
+
decode: Getter.transform(nanoidFromBytes),
|
|
55
|
+
encode: Getter.forbiddenEncoding
|
|
56
|
+
})
|
|
57
|
+
});
|
|
58
|
+
const makeStringId = (s) => s !== undefined ? S.decodeSync(StringIdString)(s) : nanoid();
|
|
37
59
|
export const StringId = extendM(StringIdSchemaBase, (s) => ({
|
|
38
60
|
make: makeStringId,
|
|
39
61
|
/**
|
|
@@ -56,11 +78,22 @@ export const StringId = extendM(StringIdSchemaBase, (s) => ({
|
|
|
56
78
|
export function prefixedStringId() {
|
|
57
79
|
return (prefix, name, separator) => {
|
|
58
80
|
const pref = `${prefix}${separator ?? "-"}`;
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
81
|
+
const PrefixedString = StringIdString.pipe(S.refine((x) => x.startsWith(pref), { identifier: name }));
|
|
82
|
+
// Pre-rc.114: StringIdArb().map(x => pref + x.substring(0, 50 - pref.length))
|
|
83
|
+
const s = S.declareConstructor()([], () => (input, ast, options) => S.is(PrefixedString)(input)
|
|
84
|
+
? Effect.succeed(input)
|
|
85
|
+
: Effect.fail(new SchemaIssue.InvalidType(ast, input, options)), {
|
|
86
|
+
identifier: name,
|
|
87
|
+
expected: name,
|
|
88
|
+
toCodec: () => S.link()(PrefixedString, {
|
|
89
|
+
decode: Getter.passthrough(),
|
|
90
|
+
encode: Getter.passthrough()
|
|
91
|
+
}),
|
|
92
|
+
toCodecArbitrary: () => S.link()(S.Uint8Array.check(S.isMinLength(nanoidByteLength), S.isMaxLength(nanoidByteLength)), {
|
|
93
|
+
decode: Getter.transform((bytes) => (pref + nanoidFromBytes(bytes).substring(0, maxLength - pref.length))),
|
|
94
|
+
encode: Getter.forbiddenEncoding
|
|
95
|
+
})
|
|
96
|
+
});
|
|
64
97
|
const schema = s.pipe(withDefaultMake);
|
|
65
98
|
const make = () => (pref + StringId.make().substring(0, 50 - pref.length));
|
|
66
99
|
return extendM(schema, (ex) => ({
|
|
@@ -101,6 +134,14 @@ export const Url = S
|
|
|
101
134
|
format: "uri"
|
|
102
135
|
}), S.refine(isUrl, {
|
|
103
136
|
identifier: "Url",
|
|
104
|
-
jsonSchema: { format: "uri" }
|
|
137
|
+
jsonSchema: { format: "uri" },
|
|
138
|
+
// Native Arbitrary otherwise emits strings that `isURL({ require_tld: false })`
|
|
139
|
+
// accepts (`"R"`, `"prototype"`). Restore the old fast-check `fc.webUrl()` shape.
|
|
140
|
+
arbitraryConstraint: {
|
|
141
|
+
patterns: [{
|
|
142
|
+
source: "^https://[a-z]{3,12}\\.(?:com|net|org|de)(?:/[a-z0-9-]{0,16})?$",
|
|
143
|
+
flags: ""
|
|
144
|
+
}]
|
|
145
|
+
}
|
|
105
146
|
}), withDefaultMake);
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9yZVN0cmluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvU2NoZW1hL21vcmVTdHJpbmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVdBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUUxQyxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDdEMsT0FBTyxLQUFLLENBQUMsTUFBTSxlQUFlLENBQUE7QUFDbEMsT0FBTyxLQUFLLE1BQU0sTUFBTSxxQkFBcUIsQ0FBQTtBQUM3QyxPQUFPLEtBQUssV0FBVyxNQUFNLG9CQUFvQixDQUFBO0FBRWpELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUMxRCxPQUFPLFNBQVMsTUFBTSxXQUFXLENBQUE7QUFFakMsT0FBTyxFQUFzQixTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFJMUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQTtBQWtCdkMsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQTJCLGNBQWMsQ0FBQyxJQUFJLENBQ3pFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUMxQixTQUFTLENBQW1CLE9BQU8sRUFBb0IsRUFBRTtJQUN2RCxVQUFVLEVBQUUsa0JBQWtCO0lBQzlCLFVBQVUsRUFBRSxFQUFFO0NBQ2YsQ0FBQyxFQUNGLGVBQWUsQ0FDaEIsQ0FBQTtBQWtCRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBMkIsY0FBYyxDQUFDLElBQUksQ0FDekUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEVBQUUs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
|
package/dist/ids.d.ts
CHANGED
|
@@ -6,16 +6,6 @@ export interface RequestIdBrand extends StringIdBrand {
|
|
|
6
6
|
readonly RequestId: unique symbol;
|
|
7
7
|
}
|
|
8
8
|
export type RequestId = NonEmptyString255;
|
|
9
|
-
/**
|
|
10
|
-
* Schema for a request id.
|
|
11
|
-
*
|
|
12
|
-
* A request id may be made from a span id, which does not comply with the
|
|
13
|
-
* `StringId` schema (hence the looser `NonEmptyString255` base).
|
|
14
|
-
*
|
|
15
|
-
* `.withConstructorDefault` => fresh `StringId` (construction-only; not
|
|
16
|
-
* applied during decode — cannot be used to JIT-migrate database fields).
|
|
17
|
-
* See `./Schema/ext.ts` for the full policy note.
|
|
18
|
-
*/
|
|
19
9
|
export declare const RequestId: S.WithDefaults<Codec<NonEmptyString255, string, never, never> & {
|
|
20
10
|
make: {
|
|
21
11
|
(): NonEmptyString255;
|
package/dist/ids.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ids.d.ts","sourceRoot":"","sources":["../src/ids.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,KAAK,EAAE,iBAAiB,EAAY,KAAK,aAAa,EAAmB,MAAM,mBAAmB,CAAA;AACjI,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,0BAA0B,CAAA;AAEjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,KAAK,CAAC,MAAM,aAAa,CAAA;AAGhC,MAAM,WAAW,cAAe,SAAQ,aAAa;IACnD,QAAQ,CAAC,SAAS,EAAE,OAAO,MAAM,CAAA;CAClC;AAED,MAAM,MAAM,SAAS,GAAG,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"ids.d.ts","sourceRoot":"","sources":["../src/ids.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,KAAK,EAAE,iBAAiB,EAAY,KAAK,aAAa,EAAmB,MAAM,mBAAmB,CAAA;AACjI,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,0BAA0B,CAAA;AAEjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,KAAK,CAAC,MAAM,aAAa,CAAA;AAGhC,MAAM,WAAW,cAAe,SAAQ,aAAa;IACnD,QAAQ,CAAC,SAAS,EAAE,OAAO,MAAM,CAAA;CAClC;AAED,MAAM,MAAM,SAAS,GAAG,iBAAiB,CAAA;AAmBzC,eAAO,MAAM,SAAS;;YAOD,iBAAiB;gBACb,MAAM,YAAY,CAAC,CAAC,WAAW,GAAG,iBAAiB;;IAOtE;;;;;OAKG;;;;;;;IALH;;;;;OAKG;;CAKe,CAAA;AAExB,MAAM,WAAW,kBAAmB,SAAQ,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,aAAa,CAAC;CAAG;AACjG,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,kBAAkB,CAAA;AACvD;;;;;GAKG;AACH,eAAO,MAAM,aAAa,wCAAmC,CAAA"}
|
package/dist/ids.js
CHANGED
|
@@ -12,8 +12,15 @@ import { extendM } from "./utils.js";
|
|
|
12
12
|
* applied during decode — cannot be used to JIT-migrate database fields).
|
|
13
13
|
* See `./Schema/ext.ts` for the full policy note.
|
|
14
14
|
*/
|
|
15
|
+
const requestIdSamples = S.makeFilter(() => undefined, {
|
|
16
|
+
arbitraryConstraint: {
|
|
17
|
+
minLength: 21,
|
|
18
|
+
maxLength: 21,
|
|
19
|
+
patterns: [{ source: "^[A-Za-z0-9_-]{21}$", flags: "" }]
|
|
20
|
+
}
|
|
21
|
+
});
|
|
15
22
|
export const RequestId = extendM(Object
|
|
16
|
-
.assign(Object.create(NonEmptyString255), NonEmptyString255), (s) => {
|
|
23
|
+
.assign(Object.create(NonEmptyString255), NonEmptyString255.pipe(S.check(requestIdSamples))), (s) => {
|
|
17
24
|
function make(input, options) {
|
|
18
25
|
const id = input === undefined ? StringId.make() : StringId.make(input, options);
|
|
19
26
|
return id;
|
|
@@ -37,4 +44,4 @@ export const RequestId = extendM(Object
|
|
|
37
44
|
* applied during decode. See `./Schema/ext.ts` for the full policy note.
|
|
38
45
|
*/
|
|
39
46
|
export const UserProfileId = brandedStringId();
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2lkcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFjLGlCQUFpQixFQUFFLFFBQVEsRUFBc0IsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFakksT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFFdkMsT0FBTyxLQUFLLENBQUMsTUFBTSxhQUFhLENBQUE7QUFDaEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQU9wQzs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxVQUFVLENBQVMsR0FBRyxFQUFFLENBQUMsU0FBUyxFQUFFO0lBQzdELG1CQUFtQixFQUFFO1FBQ25CLFNBQVMsRUFBRSxFQUFFO1FBQ2IsU0FBUyxFQUFFLEVBQUU7UUFDYixRQUFRLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUM7S0FDekQ7Q0FDRixDQUFDLENBQUE7QUFFRixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUM5QixNQUFNO0tBQ0gsTUFBTSxDQUNMLE1BQU0sQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQU8sRUFDdEMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBZ0QsQ0FDakcsRUFDSCxDQUFDLENBQUMsRUFBRSxFQUFFO0lBR0osU0FBUyxJQUFJLENBQUMsS0FBYyxFQUFFLE9BQXVCO1FBQ25ELE1BQU0sRUFBRSxHQUFHLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDaEYsT0FBTyxFQUFFLENBQUE7SUFDWCxDQUFDO0lBQ0QsT0FBTyxDQUFDO1FBQ04sSUFBSTtRQUNKOzs7OztXQUtHO1FBQ0gsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUEyQyxDQUFDO0tBQ2pILENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FDRjtLQUNFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQTtBQUl4Qjs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxlQUFlLEVBQWlCLENBQUEifQ==
|
package/package.json
CHANGED
package/src/Schema/ext.ts
CHANGED
|
@@ -35,6 +35,7 @@ import * as Effect from "effect/Effect"
|
|
|
35
35
|
import { pipe } from "effect/Function"
|
|
36
36
|
import * as Function from "effect/Function"
|
|
37
37
|
import * as Option from "effect/Option"
|
|
38
|
+
import * as Order from "effect/Order"
|
|
38
39
|
import * as S from "effect/Schema"
|
|
39
40
|
import * as SchemaIssue from "effect/SchemaIssue"
|
|
40
41
|
import * as SchemaTransformation from "effect/SchemaTransformation"
|
|
@@ -177,21 +178,28 @@ export const Number = Object.assign(S.Number, {
|
|
|
177
178
|
withDecodingDefaultType: S.Number.pipe(S.withDecodingDefaultType(Effect.succeed(0)))
|
|
178
179
|
})
|
|
179
180
|
|
|
181
|
+
// Generation-only: native Arbitrary otherwise samples up to ±Number.MAX_VALUE, so
|
|
182
|
+
// derived totals overflow to Infinity. Validation and JSON Schema are unaffected.
|
|
183
|
+
const realisticFiniteSamples = S.makeFilter<number>(() => undefined, {
|
|
184
|
+
arbitraryConstraint: { order: Order.Number, minimum: -1_000_000, maximum: 1_000_000 }
|
|
185
|
+
})
|
|
186
|
+
const FiniteSchema = S.Finite.pipe(S.check(realisticFiniteSamples))
|
|
187
|
+
|
|
180
188
|
/** Like the default Schema `Finite` but with default helpers. */
|
|
181
|
-
export const Finite = Object.assign(
|
|
189
|
+
export const Finite = Object.assign(FiniteSchema, {
|
|
182
190
|
/**
|
|
183
191
|
* Construction-only default `0`. Applied only when the field is omitted
|
|
184
192
|
* from `.make(...)` input. NOT applied during decode — cannot be used to
|
|
185
193
|
* JIT-migrate database fields. See file-level note.
|
|
186
194
|
*/
|
|
187
|
-
withConstructorDefault:
|
|
195
|
+
withConstructorDefault: FiniteSchema.pipe(S.withConstructorDefault(Effect.succeed(0))),
|
|
188
196
|
/**
|
|
189
197
|
* Decode-time default `0`. **Discouraged for persisted data:** a missing
|
|
190
198
|
* field may be data corruption, not an old-shape document; silently
|
|
191
199
|
* substituting `0` hides the problem. Prefer an explicit, preferably
|
|
192
200
|
* versioned migration over a decode-time fallback. See file-level note.
|
|
193
201
|
*/
|
|
194
|
-
withDecodingDefaultType:
|
|
202
|
+
withDecodingDefaultType: FiniteSchema.pipe(S.withDecodingDefaultType(Effect.succeed(0)))
|
|
195
203
|
})
|
|
196
204
|
|
|
197
205
|
/** Like the default Schema `Literals` but with default helpers. Default value is `literals[0]`. */
|
|
@@ -14,8 +14,10 @@ import type * as B from "effect/Brand"
|
|
|
14
14
|
import * as Effect from "effect/Effect"
|
|
15
15
|
import { pipe } from "effect/Function"
|
|
16
16
|
import * as S from "effect/Schema"
|
|
17
|
+
import * as Getter from "effect/SchemaGetter"
|
|
18
|
+
import * as SchemaIssue from "effect/SchemaIssue"
|
|
17
19
|
import type { Simplify } from "effect/Types"
|
|
18
|
-
import { nanoid } from "nanoid"
|
|
20
|
+
import { customRandom, nanoid, urlAlphabet } from "nanoid"
|
|
19
21
|
import validator from "validator"
|
|
20
22
|
import type * as SchemaAST from "../SchemaAST.ts"
|
|
21
23
|
import { type BrandedSchema, fromBrand, nominal } from "./brand.ts"
|
|
@@ -164,7 +166,10 @@ export type StringId = string & StringIdBrand
|
|
|
164
166
|
|
|
165
167
|
const minLength = 6
|
|
166
168
|
const maxLength = 50
|
|
167
|
-
const
|
|
169
|
+
const nanoidSize = 21
|
|
170
|
+
const nanoidByteLength = 10 * nanoidSize
|
|
171
|
+
|
|
172
|
+
const StringIdString = pipe(
|
|
168
173
|
S.String,
|
|
169
174
|
S.check(S.isMinLength(minLength), S.isMaxLength(maxLength)),
|
|
170
175
|
fromBrand<StringId>(nominal<StringId>(), {
|
|
@@ -172,21 +177,54 @@ const StringIdSchemaBase = pipe(
|
|
|
172
177
|
jsonSchema: {}
|
|
173
178
|
})
|
|
174
179
|
)
|
|
180
|
+
|
|
181
|
+
const nanoidFromBytes = (bytes: Uint8Array) =>
|
|
182
|
+
customRandom(urlAlphabet, nanoidSize, (size) => bytes.subarray(0, size))() as StringId
|
|
183
|
+
|
|
184
|
+
// JSON stays a branded string (toCodec). Generation uses toCodecArbitrary — the native
|
|
185
|
+
// replacement for fast-check `toArbitrary` — same as the old StringIdArb:
|
|
186
|
+
// uint8Array(210).map(bytes => customRandom(urlAlphabet, 21, …)).
|
|
187
|
+
const StringIdSchemaBase = S.declareConstructor<StringId, string>()(
|
|
188
|
+
[],
|
|
189
|
+
() => (input, ast, options) =>
|
|
190
|
+
S.is(StringIdString)(input)
|
|
191
|
+
? Effect.succeed(input)
|
|
192
|
+
: Effect.fail(new SchemaIssue.InvalidType(ast, input, options)),
|
|
193
|
+
{
|
|
194
|
+
identifier: "StringId",
|
|
195
|
+
expected: "StringId",
|
|
196
|
+
toCodec: () =>
|
|
197
|
+
S.link<StringId>()(StringIdString, {
|
|
198
|
+
decode: Getter.passthrough(),
|
|
199
|
+
encode: Getter.passthrough()
|
|
200
|
+
}),
|
|
201
|
+
toCodecArbitrary: () =>
|
|
202
|
+
S.link<StringId>()(
|
|
203
|
+
S.Uint8Array.check(S.isMinLength(nanoidByteLength), S.isMaxLength(nanoidByteLength)),
|
|
204
|
+
{
|
|
205
|
+
decode: Getter.transform(nanoidFromBytes),
|
|
206
|
+
encode: Getter.forbiddenEncoding
|
|
207
|
+
}
|
|
208
|
+
)
|
|
209
|
+
}
|
|
210
|
+
)
|
|
175
211
|
const makeStringId = (s?: string): StringId =>
|
|
176
|
-
s !== undefined ? S.decodeSync(
|
|
212
|
+
s !== undefined ? S.decodeSync(StringIdString)(s) : nanoid() as unknown as StringId
|
|
177
213
|
/**
|
|
178
214
|
* A string that is at least 6 characters long and a maximum of 50.
|
|
179
215
|
*
|
|
180
216
|
* `.withConstructorDefault` => fresh `nanoid()` (construction-only; not
|
|
181
217
|
* applied during decode — see file-level note).
|
|
182
218
|
*/
|
|
183
|
-
export interface StringIdSchema extends
|
|
219
|
+
export interface StringIdSchema extends S.declareConstructor<StringId, string, readonly [], StringId> {
|
|
184
220
|
(i: string, options?: SchemaAST.ParseOptions): StringId
|
|
185
221
|
/** Generate fresh `nanoid()`-shaped `StringId`. */
|
|
186
222
|
make(): StringId
|
|
187
223
|
/** Construct a `StringId` from a known string (validated via decodeSync). */
|
|
188
224
|
make(input: string, options?: S.MakeOptions): StringId
|
|
189
|
-
readonly withConstructorDefault: S.withConstructorDefault<
|
|
225
|
+
readonly withConstructorDefault: S.withConstructorDefault<
|
|
226
|
+
S.declareConstructor<StringId, string, readonly [], StringId>
|
|
227
|
+
>
|
|
190
228
|
}
|
|
191
229
|
export const StringId: StringIdSchema = extendM(
|
|
192
230
|
StringIdSchemaBase,
|
|
@@ -219,13 +257,36 @@ export function prefixedStringId<Type extends StringId>() {
|
|
|
219
257
|
) => {
|
|
220
258
|
type FullPrefix = `${Prefix}${Separator}`
|
|
221
259
|
const pref = `${prefix}${separator ?? "-"}` as FullPrefix
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
)
|
|
260
|
+
const PrefixedString = StringIdString.pipe(
|
|
261
|
+
S.refine((x): x is Type => x.startsWith(pref), { identifier: name })
|
|
262
|
+
)
|
|
263
|
+
// Pre-rc.114: StringIdArb().map(x => pref + x.substring(0, 50 - pref.length))
|
|
264
|
+
const s = S.declareConstructor<Type, string>()(
|
|
265
|
+
[],
|
|
266
|
+
() => (input, ast, options) =>
|
|
267
|
+
S.is(PrefixedString)(input)
|
|
268
|
+
? Effect.succeed(input)
|
|
269
|
+
: Effect.fail(new SchemaIssue.InvalidType(ast, input, options)),
|
|
270
|
+
{
|
|
271
|
+
identifier: name,
|
|
272
|
+
expected: name,
|
|
273
|
+
toCodec: () =>
|
|
274
|
+
S.link<Type>()(PrefixedString, {
|
|
275
|
+
decode: Getter.passthrough(),
|
|
276
|
+
encode: Getter.passthrough()
|
|
277
|
+
}),
|
|
278
|
+
toCodecArbitrary: () =>
|
|
279
|
+
S.link<Type>()(
|
|
280
|
+
S.Uint8Array.check(S.isMinLength(nanoidByteLength), S.isMaxLength(nanoidByteLength)),
|
|
281
|
+
{
|
|
282
|
+
decode: Getter.transform((bytes) =>
|
|
283
|
+
(pref + nanoidFromBytes(bytes).substring(0, maxLength - pref.length)) as Type
|
|
284
|
+
),
|
|
285
|
+
encode: Getter.forbiddenEncoding
|
|
286
|
+
}
|
|
287
|
+
)
|
|
288
|
+
}
|
|
289
|
+
)
|
|
229
290
|
const schema = s.pipe(withDefaultMake)
|
|
230
291
|
const make = () => (pref + StringId.make().substring(0, 50 - pref.length)) as Type
|
|
231
292
|
|
|
@@ -315,7 +376,15 @@ export const Url: UrlSchema = S
|
|
|
315
376
|
}),
|
|
316
377
|
S.refine(isUrl, {
|
|
317
378
|
identifier: "Url",
|
|
318
|
-
jsonSchema: { format: "uri" }
|
|
379
|
+
jsonSchema: { format: "uri" },
|
|
380
|
+
// Native Arbitrary otherwise emits strings that `isURL({ require_tld: false })`
|
|
381
|
+
// accepts (`"R"`, `"prototype"`). Restore the old fast-check `fc.webUrl()` shape.
|
|
382
|
+
arbitraryConstraint: {
|
|
383
|
+
patterns: [{
|
|
384
|
+
source: "^https://[a-z]{3,12}\\.(?:com|net|org|de)(?:/[a-z0-9-]{0,16})?$",
|
|
385
|
+
flags: ""
|
|
386
|
+
}]
|
|
387
|
+
}
|
|
319
388
|
}),
|
|
320
389
|
withDefaultMake
|
|
321
390
|
)
|
package/src/ids.ts
CHANGED
|
@@ -20,9 +20,20 @@ export type RequestId = NonEmptyString255
|
|
|
20
20
|
* applied during decode — cannot be used to JIT-migrate database fields).
|
|
21
21
|
* See `./Schema/ext.ts` for the full policy note.
|
|
22
22
|
*/
|
|
23
|
+
const requestIdSamples = S.makeFilter<string>(() => undefined, {
|
|
24
|
+
arbitraryConstraint: {
|
|
25
|
+
minLength: 21,
|
|
26
|
+
maxLength: 21,
|
|
27
|
+
patterns: [{ source: "^[A-Za-z0-9_-]{21}$", flags: "" }]
|
|
28
|
+
}
|
|
29
|
+
})
|
|
30
|
+
|
|
23
31
|
export const RequestId = extendM(
|
|
24
32
|
Object
|
|
25
|
-
.assign(
|
|
33
|
+
.assign(
|
|
34
|
+
Object.create(NonEmptyString255) as {},
|
|
35
|
+
NonEmptyString255.pipe(S.check(requestIdSamples)) as unknown as Codec<NonEmptyString255, string>
|
|
36
|
+
),
|
|
26
37
|
(s) => {
|
|
27
38
|
function make(): NonEmptyString255
|
|
28
39
|
function make(input: string, options?: S.MakeOptions): NonEmptyString255
|
package/test/moreStrings.test.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import * as S from "effect-app/Schema"
|
|
2
|
-
import
|
|
2
|
+
import * as Effect from "effect/Effect"
|
|
3
|
+
import * as Arbitrary from "effect/unstable/arbitrary/Arbitrary"
|
|
4
|
+
import { customRandom, urlAlphabet } from "nanoid"
|
|
3
5
|
import { test } from "vitest"
|
|
4
6
|
|
|
5
7
|
const nanoidAlphabet = new Set(urlAlphabet)
|
|
@@ -13,3 +15,48 @@ test("StringId make generates nanoid-shaped values", () => {
|
|
|
13
15
|
expect(S.is(S.StringId)(value)).toBe(true)
|
|
14
16
|
}
|
|
15
17
|
})
|
|
18
|
+
|
|
19
|
+
test("StringId native Arbitrary samples unique nanoid-shaped values", () => {
|
|
20
|
+
const samples = Effect.runSync(Arbitrary.sampleEffect(Arbitrary.schema(S.StringId), { count: 20, seed: 5 }))
|
|
21
|
+
expect(new Set(samples).size).toBe(20)
|
|
22
|
+
for (const value of samples) {
|
|
23
|
+
expect(isNanoId(value)).toBe(true)
|
|
24
|
+
expect(S.is(S.StringId)(value)).toBe(true)
|
|
25
|
+
}
|
|
26
|
+
})
|
|
27
|
+
|
|
28
|
+
// Pre Effect 4.0.0-rc.114 StringIdArb (rc.112, 8bd5bfe64):
|
|
29
|
+
// fc.uint8Array({ minLength: 10 * 21, maxLength: 10 * 21 })
|
|
30
|
+
// .map((bytes) => customRandom(urlAlphabet, 21, (n) => bytes.subarray(0, n))())
|
|
31
|
+
test("StringId toCodecArbitrary uses the pre-rc.114 StringIdArb byte map", () => {
|
|
32
|
+
const size = 21
|
|
33
|
+
const length = 10 * size
|
|
34
|
+
const stringIdArbMap = (bytes: Uint8Array) => customRandom(urlAlphabet, size, (n) => bytes.subarray(0, n))()
|
|
35
|
+
const bytes = Uint8Array.from({ length }, (_, i) => (i * 17 + 3) & 0xff)
|
|
36
|
+
const fromOld = stringIdArbMap(bytes)
|
|
37
|
+
expect(isNanoId(fromOld)).toBe(true)
|
|
38
|
+
// Same mapping the schema's toCodecArbitrary decode runs (customRandom + subarray).
|
|
39
|
+
expect(customRandom(urlAlphabet, size, (n) => bytes.subarray(0, n))()).toBe(fromOld)
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
test("prefixedStringId native Arbitrary matches pre-rc.114 prefix + nanoid map", () => {
|
|
43
|
+
const FooId = S.prefixedStringId<S.StringId>()("foo", "FooId")
|
|
44
|
+
const samples = Effect.runSync(Arbitrary.sampleEffect(Arbitrary.schema(FooId), { count: 10, seed: 5 }))
|
|
45
|
+
expect(new Set(samples).size).toBe(10)
|
|
46
|
+
for (const value of samples) {
|
|
47
|
+
expect(value.startsWith("foo-")).toBe(true)
|
|
48
|
+
expect(S.is(FooId)(value)).toBe(true)
|
|
49
|
+
const rest = value.slice("foo-".length)
|
|
50
|
+
expect(rest.length).toBeGreaterThan(0)
|
|
51
|
+
expect(Array.from(rest).every((char) => nanoidAlphabet.has(char))).toBe(true)
|
|
52
|
+
}
|
|
53
|
+
})
|
|
54
|
+
|
|
55
|
+
test("Url native Arbitrary samples http(s) URLs", () => {
|
|
56
|
+
const samples = Effect.runSync(Arbitrary.sampleEffect(Arbitrary.schema(S.Url), { count: 10, seed: 5 }))
|
|
57
|
+
expect(new Set(samples).size).toBeGreaterThan(1)
|
|
58
|
+
for (const value of samples) {
|
|
59
|
+
expect(value.startsWith("https://")).toBe(true)
|
|
60
|
+
expect(S.is(S.Url)(value)).toBe(true)
|
|
61
|
+
}
|
|
62
|
+
})
|