@flare-ts/lib 0.1.0 → 0.2.0
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/dist/schema/index.d.ts +2 -2
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +17 -1
- package/dist/schema/json/serializer.d.ts +3 -1
- package/dist/schema/json/serializer.d.ts.map +1 -1
- package/dist/schema/model.d.ts +6 -4
- package/dist/schema/model.d.ts.map +1 -1
- package/dist/schema/primitives/email.d.ts +15 -0
- package/dist/schema/primitives/email.d.ts.map +1 -0
- package/dist/schema/primitives/email.js +13 -0
- package/dist/schema/primitives/index.d.ts +2 -0
- package/dist/schema/primitives/index.d.ts.map +1 -1
- package/dist/schema/primitives/index.js +4 -0
- package/dist/schema/primitives/str.d.ts +3 -3
- package/dist/schema/primitives/url.d.ts +18 -0
- package/dist/schema/primitives/url.d.ts.map +1 -0
- package/dist/schema/primitives/url.js +18 -0
- package/dist/schema/schema.d.ts +3 -3
- package/dist/schema/schema.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/schema/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export { array, bool, date, defaultTo, enums, float, int, optional, str, text, uuid } from "./primitives/index.js";
|
|
1
|
+
export { array, bool, date, defaultTo, email, enums, float, int, optional, str, text, url, uuid, } from "./primitives/index.js";
|
|
2
2
|
export type { ArrayTypedPrimitive, Primitive, PrimitiveJsonSchema, TypedPrimitive } from "./primitives/index.js";
|
|
3
3
|
export { model } from "./model.js";
|
|
4
4
|
export { schema } from "./schema.js";
|
|
5
5
|
export type { ModelTokenBuilder } from "./model.js";
|
|
6
6
|
export type { BranchShape, DescriptorValue, DiscriminantValues, OpaqueSchemaToken, SchemaToken } from "./schema.js";
|
|
7
|
-
export type { FieldError, JsonObject, JsonValue, SafeParseResult,
|
|
7
|
+
export type { FieldError, JsonObject, JsonValue, SafeParseResult, SchemaError } from "./schema.js";
|
|
8
8
|
export { compileSerializer, toJsonSchema } from "./json/serializer.js";
|
|
9
9
|
export type { Serializer } from "./json/serializer.js";
|
|
10
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,KAAK,EACL,KAAK,EACL,KAAK,EACL,GAAG,EACH,QAAQ,EACR,GAAG,EACH,IAAI,EACJ,GAAG,EACH,IAAI,GACL,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EAAE,mBAAmB,EAAE,SAAS,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEjH,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEpH,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEnG,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACvE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/schema/index.js
CHANGED
|
@@ -1,4 +1,18 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
array,
|
|
3
|
+
bool,
|
|
4
|
+
date,
|
|
5
|
+
defaultTo,
|
|
6
|
+
email,
|
|
7
|
+
enums,
|
|
8
|
+
float,
|
|
9
|
+
int,
|
|
10
|
+
optional,
|
|
11
|
+
str,
|
|
12
|
+
text,
|
|
13
|
+
url,
|
|
14
|
+
uuid
|
|
15
|
+
} from "./primitives/index.js";
|
|
2
16
|
import { model } from "./model.js";
|
|
3
17
|
import { schema } from "./schema.js";
|
|
4
18
|
import { compileSerializer, toJsonSchema } from "./json/serializer.js";
|
|
@@ -8,6 +22,7 @@ export {
|
|
|
8
22
|
compileSerializer,
|
|
9
23
|
date,
|
|
10
24
|
defaultTo,
|
|
25
|
+
email,
|
|
11
26
|
enums,
|
|
12
27
|
float,
|
|
13
28
|
int,
|
|
@@ -17,5 +32,6 @@ export {
|
|
|
17
32
|
str,
|
|
18
33
|
text,
|
|
19
34
|
toJsonSchema,
|
|
35
|
+
url,
|
|
20
36
|
uuid
|
|
21
37
|
};
|
|
@@ -44,7 +44,9 @@ export declare function compileSerializer(token: OpaqueSchemaToken): Serializer;
|
|
|
44
44
|
/**
|
|
45
45
|
* Converts a schema token into a JSON Schema Draft 7 object.
|
|
46
46
|
*
|
|
47
|
-
*
|
|
47
|
+
* Supports flat object descriptors, top-level array tokens, record tokens
|
|
48
|
+
* (`[{ $record: … }]`), and discriminated unions. Unrecognized descriptor
|
|
49
|
+
* fields are omitted from `properties` rather than throwing.
|
|
48
50
|
*/
|
|
49
51
|
export declare function toJsonSchema(token: OpaqueSchemaToken): JsonSchema;
|
|
50
52
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../../../src/schema/json/serializer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAsBjE;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,SAAS,KAAK,MAAM,CAAC;AAoEpD,KAAK,UAAU,GACX;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CAAE,GAChF;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,oBAAoB,EAAE,UAAU,CAAC;CAAE,GACrD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,UAAU,CAAC;CAAE,GACrC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAAE,GAC9D;IAAE,IAAI,EAAE,SAAS,GAAG,QAAQ,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAAE,GACnE;IAAE,IAAI,EAAE,SAAS,CAAC;CAAE,GACpB;IAAE,KAAK,EAAE,UAAU,EAAE,CAAC;CAAE,GACxB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAO1B;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,GAAG,UAAU,CA4BtE;AAwMD
|
|
1
|
+
{"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../../../src/schema/json/serializer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAsBjE;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,SAAS,KAAK,MAAM,CAAC;AAoEpD,KAAK,UAAU,GACX;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CAAE,GAChF;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,oBAAoB,EAAE,UAAU,CAAC;CAAE,GACrD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,UAAU,CAAC;CAAE,GACrC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAAE,GAC9D;IAAE,IAAI,EAAE,SAAS,GAAG,QAAQ,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAAE,GACnE;IAAE,IAAI,EAAE,SAAS,CAAC;CAAE,GACpB;IAAE,KAAK,EAAE,UAAU,EAAE,CAAC;CAAE,GACxB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAO1B;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,GAAG,UAAU,CA4BtE;AAwMD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,UAAU,CAEjE"}
|
package/dist/schema/model.d.ts
CHANGED
|
@@ -31,12 +31,14 @@ export type ModelTokenBuilder<T> = (abstract new (...args: never[]) => T) & Sche
|
|
|
31
31
|
* class UserModel extends model(UserSchema) {}
|
|
32
32
|
* ```
|
|
33
33
|
*
|
|
34
|
-
* **Discriminated union** - branch on a string discriminant key
|
|
34
|
+
* **Discriminated union** - branch on a string discriminant key (TypeScript cannot
|
|
35
|
+
* `extends` a union; use a const base class and cast the union branch):
|
|
35
36
|
* ```ts
|
|
36
|
-
*
|
|
37
|
+
* const PetBase = model<Cat | Dog, "union">("kind", {
|
|
37
38
|
* cat: { lives: int },
|
|
38
|
-
* dog: { breed:
|
|
39
|
-
* })
|
|
39
|
+
* dog: { breed: str },
|
|
40
|
+
* });
|
|
41
|
+
* class PetModel extends (PetBase as ModelTokenBuilder<Cat | Dog>) {}
|
|
40
42
|
* ```
|
|
41
43
|
*
|
|
42
44
|
* The returned token also satisfies {@link SchemaToken}`<T>`, so it can be used
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/schema/model.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EAIvB,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AAGrB;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,CAAC,QAAQ,MAAK,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAE1F
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/schema/model.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EAIvB,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AAGrB;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,CAAC,QAAQ,MAAK,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAE1F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACtF,wBAAgB,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,UAAU,EAAE;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACtH,wBAAgB,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,EACtG,YAAY,EAAE,CAAC,EACf,QAAQ,EAAE;KACP,CAAC,IAAI,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;SAAG,CAAC,IAAI,MAAM,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAAG;CAClH,GACA,iBAAiB,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { TypedPrimitive } from "./index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Email address primitive. Validates against a simplified RFC 5322 pattern
|
|
4
|
+
* and returns the input lowercased for consistent storage and comparison.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```ts
|
|
8
|
+
* email("user@example.com") // "user@example.com"
|
|
9
|
+
* email("User@Example.COM") // "user@example.com"
|
|
10
|
+
* email("not-an-email") // throws
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
declare const email: TypedPrimitive<string>;
|
|
14
|
+
export { email };
|
|
15
|
+
//# sourceMappingURL=email.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../../src/schema/primitives/email.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAOjD;;;;;;;;;;GAUG;AACH,QAAA,MAAM,KAAK,EAAE,cAAc,CAAC,MAAM,CAQjC,CAAC;AAEF,OAAO,EAAE,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const EMAIL_RE = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
|
|
2
|
+
const email = Object.assign(
|
|
3
|
+
(v) => {
|
|
4
|
+
if (!EMAIL_RE.test(v)) {
|
|
5
|
+
throw new Error(`Expected email address, got "${v}"`);
|
|
6
|
+
}
|
|
7
|
+
return v.toLowerCase();
|
|
8
|
+
},
|
|
9
|
+
{ _type: "email", _required: true, jsonSchema: { type: "string", format: "email" } }
|
|
10
|
+
);
|
|
11
|
+
export {
|
|
12
|
+
email
|
|
13
|
+
};
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
export { array } from "./array.js";
|
|
2
2
|
export { bool } from "./bool.js";
|
|
3
3
|
export { date } from "./date.js";
|
|
4
|
+
export { email } from "./email.js";
|
|
4
5
|
export { enums } from "./enum.js";
|
|
5
6
|
export { float } from "./float.js";
|
|
6
7
|
export { int } from "./int.js";
|
|
7
8
|
export { str } from "./str.js";
|
|
8
9
|
export { text } from "./text.js";
|
|
10
|
+
export { url } from "./url.js";
|
|
9
11
|
export { uuid } from "./uuid.js";
|
|
10
12
|
/**
|
|
11
13
|
* JSON Schema fragment describing the constraints of a single primitive.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/schema/primitives/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;;;;;GAMG;AACH,MAAM,MAAM,mBAAmB,GAC3B,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GACrB;IACA,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GACC;IACA,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GACC;IACA,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GACC;IACA,IAAI,EAAE,SAAS,CAAC;CACjB,GACC;IACA,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,mBAAmB,CAAC;CAC5B,CAAC;AAEJ;;;;;;;GAOG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC;CAC1C,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,SAAS,GAAG;IAC1C,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;CAChB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,SAAS,GAAG;IAC/C,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;CAC7B,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,GAAG,SAAS,CAAC,CAUvF;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAUzF"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/schema/primitives/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;;;;;GAMG;AACH,MAAM,MAAM,mBAAmB,GAC3B,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GACrB;IACA,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GACC;IACA,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GACC;IACA,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GACC;IACA,IAAI,EAAE,SAAS,CAAC;CACjB,GACC;IACA,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,mBAAmB,CAAC;CAC5B,CAAC;AAEJ;;;;;;;GAOG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC;CAC1C,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,SAAS,GAAG;IAC1C,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;CAChB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,SAAS,GAAG;IAC/C,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;CAC7B,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,GAAG,SAAS,CAAC,CAUvF;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAUzF"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { array } from "./array.js";
|
|
2
2
|
import { bool } from "./bool.js";
|
|
3
3
|
import { date } from "./date.js";
|
|
4
|
+
import { email } from "./email.js";
|
|
4
5
|
import { enums } from "./enum.js";
|
|
5
6
|
import { float } from "./float.js";
|
|
6
7
|
import { int } from "./int.js";
|
|
7
8
|
import { str } from "./str.js";
|
|
8
9
|
import { text } from "./text.js";
|
|
10
|
+
import { url } from "./url.js";
|
|
9
11
|
import { uuid } from "./uuid.js";
|
|
10
12
|
function optional(primitive) {
|
|
11
13
|
const optionalPrimitive = (v) => {
|
|
@@ -34,11 +36,13 @@ export {
|
|
|
34
36
|
bool,
|
|
35
37
|
date,
|
|
36
38
|
defaultTo,
|
|
39
|
+
email,
|
|
37
40
|
enums,
|
|
38
41
|
float,
|
|
39
42
|
int,
|
|
40
43
|
optional,
|
|
41
44
|
str,
|
|
42
45
|
text,
|
|
46
|
+
url,
|
|
43
47
|
uuid
|
|
44
48
|
};
|
|
@@ -16,9 +16,9 @@ type StringPrimitive = TypedPrimitive<string> & {
|
|
|
16
16
|
*
|
|
17
17
|
* @example
|
|
18
18
|
* ```ts
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
19
|
+
* str // any string
|
|
20
|
+
* str.min(3).max(50) // length range
|
|
21
|
+
* str.pattern(/^\S+@\S+\..+$/) // regex constraint
|
|
22
22
|
* ```
|
|
23
23
|
*/
|
|
24
24
|
export declare const str: StringPrimitive;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { TypedPrimitive } from "./index.js";
|
|
2
|
+
/**
|
|
3
|
+
* URL primitive. Validates using the WHATWG URL constructor and returns
|
|
4
|
+
* the normalized `href` (trailing slash, lowercased scheme + host).
|
|
5
|
+
*
|
|
6
|
+
* Only `http:` and `https:` schemes are accepted by default.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* url("https://example.com") // "https://example.com/"
|
|
11
|
+
* url("https://example.com/path") // "https://example.com/path"
|
|
12
|
+
* url("ftp://example.com") // throws (scheme not allowed)
|
|
13
|
+
* url("not a url") // throws
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
declare const url: TypedPrimitive<string>;
|
|
17
|
+
export { url };
|
|
18
|
+
//# sourceMappingURL=url.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../../src/schema/primitives/url.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;;;;;;;;;GAaG;AACH,QAAA,MAAM,GAAG,EAAE,cAAc,CAAC,MAAM,CAc/B,CAAC;AAEF,OAAO,EAAE,GAAG,EAAE,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const url = Object.assign(
|
|
2
|
+
(v) => {
|
|
3
|
+
let parsed;
|
|
4
|
+
try {
|
|
5
|
+
parsed = new URL(v);
|
|
6
|
+
} catch {
|
|
7
|
+
throw new Error(`Expected URL, got "${v}"`);
|
|
8
|
+
}
|
|
9
|
+
if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
|
|
10
|
+
throw new Error(`Expected http or https URL, got "${parsed.protocol}" in "${v}"`);
|
|
11
|
+
}
|
|
12
|
+
return parsed.href;
|
|
13
|
+
},
|
|
14
|
+
{ _type: "url", _required: true, jsonSchema: { type: "string", format: "uri" } }
|
|
15
|
+
);
|
|
16
|
+
export {
|
|
17
|
+
url
|
|
18
|
+
};
|
package/dist/schema/schema.d.ts
CHANGED
|
@@ -18,21 +18,21 @@ export type FieldError = {
|
|
|
18
18
|
/**
|
|
19
19
|
* Collection of field-level errors produced by a failed schema parse.
|
|
20
20
|
*/
|
|
21
|
-
export type
|
|
21
|
+
export type SchemaError = {
|
|
22
22
|
fields: FieldError[];
|
|
23
23
|
};
|
|
24
24
|
/**
|
|
25
25
|
* Result of a schema parse operation.
|
|
26
26
|
*
|
|
27
27
|
* On success, `data` holds the parsed value typed as `T`. On failure, `error`
|
|
28
|
-
* holds a {@link
|
|
28
|
+
* holds a {@link SchemaError} describing which fields failed.
|
|
29
29
|
*/
|
|
30
30
|
export type SafeParseResult<T> = {
|
|
31
31
|
success: true;
|
|
32
32
|
data: T;
|
|
33
33
|
} | {
|
|
34
34
|
success: false;
|
|
35
|
-
error:
|
|
35
|
+
error: SchemaError;
|
|
36
36
|
};
|
|
37
37
|
/**
|
|
38
38
|
* Any value that can appear in a JSON payload.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/schema/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAC1F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAM5D,OAAO,EAAE,YAAY,EAAsC,MAAM,6BAA6B,CAAC;AAE/F,sEAAsE;AACtE,KAAK,wBAAwB,CAAC,CAAC,IAAI,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAE7D,sEAAsE;AACtE,KAAK,yBAAyB,CAAC,CAAC,IAAI,SAAS,CAAC;IAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,CAAC;AAE5E;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/schema/schema.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flare-ts/lib",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Schema primitives and standard library for Flare, with zero runtime dependencies.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Lumex Solutions",
|
|
7
7
|
"homepage": "https://github.com/lumex-solutions/flare-ts#readme",
|