structured-outputs 0.1.0-beta.21 → 0.1.0-beta.23
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +46 -40
- package/esm/ResponseFormat.d.ts +8 -8
- package/esm/ResponseFormat.d.ts.map +1 -1
- package/esm/ResponseFormat.js +4 -7
- package/esm/ResponseFormat.js.map +1 -1
- package/esm/Tool.d.ts +2 -2
- package/esm/Tool.d.ts.map +1 -1
- package/esm/Tool.js +2 -2
- package/esm/Tool.js.map +1 -1
- package/esm/types/Ty.d.ts +26 -23
- package/esm/types/Ty.d.ts.map +1 -1
- package/esm/types/Ty.js +29 -12
- package/esm/types/Ty.js.map +1 -1
- package/esm/types/array.d.ts +1 -1
- package/esm/types/array.d.ts.map +1 -1
- package/esm/types/array.js +2 -3
- package/esm/types/array.js.map +1 -1
- package/esm/types/constantUnion.d.ts +1 -1
- package/esm/types/constantUnion.d.ts.map +1 -1
- package/esm/types/constantUnion.js +16 -19
- package/esm/types/constantUnion.js.map +1 -1
- package/esm/types/mod.d.ts +4 -5
- package/esm/types/mod.d.ts.map +1 -1
- package/esm/types/mod.js +4 -5
- package/esm/types/mod.js.map +1 -1
- package/esm/types/object.d.ts +4 -5
- package/esm/types/object.d.ts.map +1 -1
- package/esm/types/object.js +3 -4
- package/esm/types/object.js.map +1 -1
- package/esm/types/primitives.d.ts +6 -0
- package/esm/types/primitives.d.ts.map +1 -0
- package/esm/types/primitives.js +14 -0
- package/esm/types/primitives.js.map +1 -0
- package/esm/types/std/Date.d.ts +4 -0
- package/esm/types/std/Date.d.ts.map +1 -0
- package/esm/types/std/Date.js +14 -0
- package/esm/types/std/Date.js.map +1 -0
- package/esm/types/std/Option.d.ts +3 -2
- package/esm/types/std/Option.d.ts.map +1 -1
- package/esm/types/std/Option.js +2 -2
- package/esm/types/std/Option.js.map +1 -1
- package/esm/types/std/Wrapper.d.ts +0 -1
- package/esm/types/std/Wrapper.d.ts.map +1 -1
- package/esm/types/std/Wrapper.js.map +1 -1
- package/esm/types/std/color.d.ts +8 -0
- package/esm/types/std/color.d.ts.map +1 -0
- package/esm/types/std/color.js +13 -0
- package/esm/types/std/color.js.map +1 -0
- package/esm/types/std/mod.d.ts +2 -0
- package/esm/types/std/mod.d.ts.map +1 -1
- package/esm/types/std/mod.js +2 -0
- package/esm/types/std/mod.js.map +1 -1
- package/esm/types/taggedUnion.d.ts +2 -2
- package/esm/types/taggedUnion.d.ts.map +1 -1
- package/esm/types/taggedUnion.js +20 -15
- package/esm/types/taggedUnion.js.map +1 -1
- package/esm/types/transform.d.ts +3 -0
- package/esm/types/transform.d.ts.map +1 -0
- package/esm/types/transform.js +5 -0
- package/esm/types/transform.js.map +1 -0
- package/esm/types/tuple.d.ts +5 -0
- package/esm/types/tuple.d.ts.map +1 -0
- package/esm/types/tuple.js +11 -0
- package/esm/types/tuple.js.map +1 -0
- package/esm/util/recombine.d.ts +2 -0
- package/esm/util/recombine.d.ts.map +1 -0
- package/esm/util/recombine.js +4 -0
- package/esm/util/recombine.js.map +1 -0
- package/package.json +2 -2
- package/src/ResponseFormat.ts +14 -17
- package/src/Tool.ts +5 -5
- package/src/types/Ty.ts +75 -41
- package/src/types/array.ts +9 -6
- package/src/types/constantUnion.ts +17 -20
- package/src/types/mod.ts +4 -5
- package/src/types/object.ts +17 -13
- package/src/types/primitives.ts +17 -0
- package/src/types/std/Date.ts +19 -0
- package/src/types/std/Option.ts +3 -3
- package/src/types/std/Wrapper.ts +0 -2
- package/src/types/std/color.ts +27 -0
- package/src/types/std/mod.ts +2 -0
- package/src/types/taggedUnion.ts +29 -17
- package/src/types/transform.ts +8 -0
- package/src/types/tuple.ts +17 -0
- package/src/util/recombine.ts +3 -0
- package/esm/oai.d.ts +0 -5
- package/esm/oai.d.ts.map +0 -1
- package/esm/oai.js +0 -2
- package/esm/oai.js.map +0 -1
- package/esm/types/Ref.d.ts +0 -4
- package/esm/types/Ref.d.ts.map +0 -1
- package/esm/types/Ref.js +0 -11
- package/esm/types/Ref.js.map +0 -1
- package/esm/types/RootTy.d.ts +0 -8
- package/esm/types/RootTy.d.ts.map +0 -1
- package/esm/types/RootTy.js +0 -19
- package/esm/types/RootTy.js.map +0 -1
- package/esm/types/constant.d.ts +0 -3
- package/esm/types/constant.d.ts.map +0 -1
- package/esm/types/constant.js +0 -8
- package/esm/types/constant.js.map +0 -1
- package/esm/types/leaves.d.ts +0 -6
- package/esm/types/leaves.d.ts.map +0 -1
- package/esm/types/leaves.js +0 -18
- package/esm/types/leaves.js.map +0 -1
- package/esm/util/phantoms.d.ts +0 -2
- package/esm/util/phantoms.d.ts.map +0 -1
- package/esm/util/phantoms.js +0 -4
- package/esm/util/phantoms.js.map +0 -1
- package/esm/util/recombineTaggedTemplateArgs.d.ts +0 -2
- package/esm/util/recombineTaggedTemplateArgs.d.ts.map +0 -1
- package/esm/util/recombineTaggedTemplateArgs.js +0 -4
- package/esm/util/recombineTaggedTemplateArgs.js.map +0 -1
- package/src/oai.ts +0 -5
- package/src/types/Ref.ts +0 -16
- package/src/types/RootTy.ts +0 -40
- package/src/types/constant.ts +0 -8
- package/src/types/leaves.ts +0 -21
- package/src/util/phantoms.ts +0 -3
- package/src/util/recombineTaggedTemplateArgs.ts +0 -6
package/README.md
CHANGED
@@ -1,7 +1,13 @@
|
|
1
|
-
# Structured Outputs
|
1
|
+
# Structured Outputs TypeScript
|
2
2
|
|
3
|
-
A
|
4
|
-
|
3
|
+
> A library for working with OpenAI's structured outputs.
|
4
|
+
|
5
|
+
- [Documentation →](https://structured-outputs.dev)<br />Expanded introduction and usage
|
6
|
+
instructions.
|
7
|
+
- [OpenAI Guide →](https://platform.openai.com/docs/guides/structured-outputs)<br />The OpenAI
|
8
|
+
platform's guide on Structured Outputs
|
9
|
+
- [Pattern Libraries →](https://structured-outputs.dev/patterns)<br />Pattern libraries
|
10
|
+
modeling common schemas using Structured Outputs TypeScript.
|
5
11
|
|
6
12
|
## Installation
|
7
13
|
|
@@ -14,66 +20,66 @@ npm i structured-outputs
|
|
14
20
|
### Deno
|
15
21
|
|
16
22
|
```ts
|
17
|
-
deno add jsr:@crosshatch/structured-outputs
|
23
|
+
deno add jsr:@crosshatch/structured-outputs@0.1.0-beta.X
|
18
24
|
```
|
19
25
|
|
20
|
-
|
26
|
+
> Note: replace "X" with the latest beta version number. Version specificity will be unnecessary
|
27
|
+
> upon the first stable release of `structured-outputs`.
|
28
|
+
|
29
|
+
## Example Usage
|
21
30
|
|
22
|
-
###
|
31
|
+
### Declare a Type
|
23
32
|
|
24
33
|
```ts
|
25
|
-
import {
|
34
|
+
import { T } from "structured-outputs"
|
26
35
|
|
27
|
-
// 1. Define the shape of the desired response.
|
28
36
|
const Character = T.object({
|
29
37
|
name: T.string,
|
30
38
|
age: T.number`Ensure between 1 and 110.`,
|
39
|
+
home: T.string`The name of a fictional realm of magic and wonder.`,
|
40
|
+
disposition: T.constantUnion("Optimistic", "Reserved", "Inquisitive"),
|
31
41
|
})
|
42
|
+
```
|
32
43
|
|
33
|
-
|
34
|
-
const response_format = ResponseFormat("create_character", Character)
|
44
|
+
### Create a `ResponseFormat`
|
35
45
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
response_format,
|
41
|
-
})
|
46
|
+
```ts
|
47
|
+
// ...
|
48
|
+
|
49
|
+
import { ResponseFormat } from "structured-outputs"
|
42
50
|
|
43
|
-
|
44
|
-
|
51
|
+
const response_format = ResponseFormat("create_character", Character)`
|
52
|
+
Create a character to be the protagonist of a children's story.
|
53
|
+
`
|
45
54
|
```
|
46
55
|
|
47
|
-
|
56
|
+
### Create Chat Completions
|
48
57
|
|
49
58
|
```ts
|
50
|
-
|
59
|
+
// ...
|
60
|
+
|
61
|
+
const character = await openai.chat.completions
|
51
62
|
.create({
|
52
|
-
model:
|
53
|
-
messages: [
|
63
|
+
model: "gpt-4o-mini",
|
64
|
+
messages: [...yourMessages],
|
54
65
|
response_format,
|
55
66
|
})
|
56
|
-
.then(response_format.
|
67
|
+
.then(response_format.into)
|
57
68
|
```
|
58
69
|
|
59
|
-
|
70
|
+
### Utilize The Typed, Unwrapped Data
|
60
71
|
|
61
|
-
```
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
72
|
+
```ts
|
73
|
+
// ...
|
74
|
+
|
75
|
+
character satisfies {
|
76
|
+
name: string
|
77
|
+
age: number
|
78
|
+
home: string
|
79
|
+
disposition: "Optimistic" | "Reserved" | "Inquisitive"
|
80
|
+
}
|
66
81
|
```
|
67
82
|
|
68
|
-
|
83
|
+
## License
|
69
84
|
|
70
|
-
|
71
|
-
const Character = T.object({
|
72
|
-
name: T.string`Preferably names common to those who are {"national identity"}.`,
|
73
|
-
age: T.number`Ensure between 1 and 110.`,
|
74
|
-
})
|
75
|
-
|
76
|
-
const AmericanCharacter = Character.apply({
|
77
|
-
"national identity": "american",
|
78
|
-
})
|
79
|
-
```
|
85
|
+
Structured Outputs TypeScript is [Apache licensed](LICENSE).
|
package/esm/ResponseFormat.d.ts
CHANGED
@@ -1,16 +1,14 @@
|
|
1
|
-
import type
|
2
|
-
import type {
|
1
|
+
import type Openai from "openai";
|
2
|
+
import type { Ty } from "./types/mod.js";
|
3
3
|
export interface ResponseFormat<T> {
|
4
4
|
(template: TemplateStringsArray, ...quasis: Array<string>): ResponseFormat<T>;
|
5
5
|
type: "json_schema";
|
6
6
|
/** The desired return type in JSON Schema. */
|
7
|
-
json_schema:
|
8
|
-
/**
|
9
|
-
|
10
|
-
/** Parse all choice contents into an array of typed object. */
|
11
|
-
parseChoices(completion: ChatCompletion): Array<T>;
|
7
|
+
json_schema: Openai.ResponseFormatJSONSchema["json_schema"];
|
8
|
+
/** Transform the content of the first choice into a typed object. */
|
9
|
+
into(completion: ChatCompletion): T;
|
12
10
|
}
|
13
|
-
export declare function ResponseFormat<T>(name: string, ty:
|
11
|
+
export declare function ResponseFormat<T>(name: string, ty: Ty<T, never, true>): ResponseFormat<T>;
|
14
12
|
export declare namespace ResponseFormat {
|
15
13
|
function unwrapFirstChoice(completion: ChatCompletion): string;
|
16
14
|
function unwrapChoices(completions: ChatCompletion): string[];
|
@@ -18,4 +16,6 @@ export declare namespace ResponseFormat {
|
|
18
16
|
export declare class ResponseFormatUnwrapError extends Error {
|
19
17
|
readonly name = "UnwrapResponseError";
|
20
18
|
}
|
19
|
+
type ChatCompletion = Openai.Chat.ChatCompletion;
|
20
|
+
export {};
|
21
21
|
//# sourceMappingURL=ResponseFormat.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ResponseFormat.d.ts","sourceRoot":"","sources":["../src/ResponseFormat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
1
|
+
{"version":3,"file":"ResponseFormat.d.ts","sourceRoot":"","sources":["../src/ResponseFormat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAA;AAChC,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAA;AAGxC,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,CAAC,QAAQ,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAA;IAC7E,IAAI,EAAE,aAAa,CAAA;IACnB,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAAA;IAC3D,qEAAqE;IACrE,IAAI,CAAC,UAAU,EAAE,cAAc,GAAG,CAAC,CAAA;CACpC;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAEzF;AAiCD,yBAAiB,cAAc,CAAC;IAC9B,SAAgB,iBAAiB,CAAC,UAAU,EAAE,cAAc,GAAG,MAAM,CAMpE;IAED,SAAgB,aAAa,CAAC,WAAW,EAAE,cAAc,GAAG,MAAM,EAAE,CAEnE;CAoBF;AAED,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,SAAkB,IAAI,yBAAwB;CAC/C;AAED,KAAK,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAA"}
|
package/esm/ResponseFormat.js
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
-
import {
|
1
|
+
import { recombine } from "./util/recombine.js";
|
2
2
|
export function ResponseFormat(name, ty) {
|
3
3
|
return ResponseFormat_(name, ty);
|
4
4
|
}
|
5
5
|
function ResponseFormat_(name, ty, description) {
|
6
|
-
return Object.assign((template, ...quasis) => ResponseFormat_(name, ty, description ? `${description} ${
|
6
|
+
return Object.assign((template, ...quasis) => ResponseFormat_(name, ty, description ? `${description} ${recombine(template, quasis)}` : undefined), {
|
7
7
|
type: "json_schema",
|
8
8
|
json_schema: {
|
9
9
|
name,
|
@@ -11,11 +11,8 @@ function ResponseFormat_(name, ty, description) {
|
|
11
11
|
schema: ty.schema(),
|
12
12
|
strict: true,
|
13
13
|
},
|
14
|
-
|
15
|
-
return JSON.parse(ResponseFormat.unwrapFirstChoice(completion));
|
16
|
-
},
|
17
|
-
parseChoices: (completion) => {
|
18
|
-
return ResponseFormat.unwrapChoices(completion).map((content) => JSON.parse(content));
|
14
|
+
into: (completion) => {
|
15
|
+
return ty[""].transform(JSON.parse(ResponseFormat.unwrapFirstChoice(completion)));
|
19
16
|
},
|
20
17
|
toJSON() {
|
21
18
|
const { type, json_schema } = this;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ResponseFormat.js","sourceRoot":"","sources":["../src/ResponseFormat.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"ResponseFormat.js","sourceRoot":"","sources":["../src/ResponseFormat.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAW/C,MAAM,UAAU,cAAc,CAAI,IAAY,EAAE,EAAsB;IACpE,OAAO,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;AAClC,CAAC;AAED,SAAS,eAAe,CACtB,IAAY,EACZ,EAAgB,EAChB,WAAoB;IAEpB,OAAO,MAAM,CAAC,MAAM,CAClB,CAAC,QAA8B,EAAE,GAAG,MAAqB,EAAE,EAAE,CAC3D,eAAe,CACb,IAAI,EACJ,EAAE,EACF,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,IAAI,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAC1E,EACH;QACE,IAAI,EAAE,aAAsB;QAC5B,WAAW,EAAE;YACX,IAAI;YACJ,WAAW;YACX,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE;YACnB,MAAM,EAAE,IAAI;SACb;QACD,IAAI,EAAE,CAAC,UAA0B,EAAK,EAAE;YACtC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QACnF,CAAC;QACD,MAAM;YACJ,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI,CAAA;YAClC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;QAC9B,CAAC;KACF,CACF,CAAA;AACH,CAAC;AAED,WAAiB,cAAc;IAC7B,SAAgB,iBAAiB,CAAC,UAA0B;QAC1D,MAAM,EAAE,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE,GAAG,UAAU,CAAA;QAC7C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,yBAAyB,CAAC,sDAAsD,CAAC,CAAA;QAC7F,CAAC;QACD,OAAO,YAAY,CAAC,WAAW,CAAC,CAAA;IAClC,CAAC;IANe,gCAAiB,oBAMhC,CAAA;IAED,SAAgB,aAAa,CAAC,WAA2B;QACvD,OAAO,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;IAC9C,CAAC;IAFe,4BAAa,gBAE5B,CAAA;IAED,SAAS,YAAY,CAAC,MAAqD;QACzE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,MAAM,CAAA;QACzC,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;YAC7B,MAAM,IAAI,yBAAyB,CACjC,8BAA8B,aAAa,uBAAuB,OAAO,EAAE,CAC5E,CAAA;QACH,CAAC;QACD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;QACpC,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,IAAI,yBAAyB,CACjC,iDAAiD,OAAO,EAAE,CAC3D,CAAA;QACH,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,yBAAyB,CAAC,6CAA6C,CAAC,CAAA;QACpF,CAAC;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;AACH,CAAC,EA/BgB,cAAc,KAAd,cAAc,QA+B9B;AAED,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAApD;;QACoB;;;;mBAAO,qBAAqB;WAAA;IAChD,CAAC;CAAA"}
|
package/esm/Tool.d.ts
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
import type {
|
2
|
-
export declare function Tool<T>(name: string, ty:
|
1
|
+
import type { Schema, Ty } from "./types/mod.js";
|
2
|
+
export declare function Tool<T>(name: string, ty: Ty<T, never, true>): Tool<T>;
|
3
3
|
export interface Tool<T = any> {
|
4
4
|
(template: TemplateStringsArray, ...quasis: Array<string>): Tool<T>;
|
5
5
|
type: "function";
|
package/esm/Tool.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Tool.d.ts","sourceRoot":"","sources":["../src/Tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,
|
1
|
+
{"version":3,"file":"Tool.d.ts","sourceRoot":"","sources":["../src/Tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAA;AAGhD,wBAAgB,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAErE;AAuBD,MAAM,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG;IAC3B,CAAC,QAAQ,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;IACnE,IAAI,EAAE,UAAU,CAAA;IAChB,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAA;IACZ,mEAAmE;IACnE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,8DAA8D;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB"}
|
package/esm/Tool.js
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
-
import {
|
1
|
+
import { recombine } from "./util/recombine.js";
|
2
2
|
export function Tool(name, ty) {
|
3
3
|
return Tool_(name, ty);
|
4
4
|
}
|
5
5
|
function Tool_(name, ty, description) {
|
6
|
-
return Object.assign((template, ...quasis) => Tool_(name, ty, description ? `${description} ${
|
6
|
+
return Object.assign((template, ...quasis) => Tool_(name, ty, description ? `${description} ${recombine(template, quasis)}` : undefined), {
|
7
7
|
type: "function",
|
8
8
|
name,
|
9
9
|
description,
|
package/esm/Tool.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Tool.js","sourceRoot":"","sources":["../src/Tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
1
|
+
{"version":3,"file":"Tool.js","sourceRoot":"","sources":["../src/Tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAE/C,MAAM,UAAU,IAAI,CAAI,IAAY,EAAE,EAAsB;IAC1D,OAAO,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;AACxB,CAAC;AAED,SAAS,KAAK,CAAI,IAAY,EAAE,EAAsB,EAAE,WAAoB;IAC1E,OAAO,MAAM,CAAC,MAAM,CAClB,CAAC,QAA8B,EAAE,GAAG,MAAqB,EAAE,EAAE,CAC3D,KAAK,CACH,IAAI,EACJ,EAAE,EACF,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,IAAI,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAC1E,EACH;QACE,IAAI,EAAE,UAAmB;QACzB,IAAI;QACJ,WAAW;QACX,UAAU,EAAE,EAAE,CAAC,MAAM,EAAE;QACvB,MAAM;YACJ,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,IAAI,CAAA;YACpD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,CAAA;QAChD,CAAC;KACF,CACF,CAAA;AACH,CAAC"}
|
package/esm/types/Ty.d.ts
CHANGED
@@ -1,27 +1,30 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
1
|
+
export interface Ty<T = any, P extends keyof any = keyof any, R extends boolean = boolean> {
|
2
|
+
<P2 extends Array<keyof any>>(template: TemplateStringsArray, ...placeheld: P2): Ty<T, P | P2[number], R>;
|
3
|
+
/** The native TypeScript type. The runtime value is nonexistent. */
|
4
|
+
T: T;
|
5
|
+
/** The literal types of the placeheld keys. The runtime value is nonexistent. */
|
6
|
+
P: P;
|
7
|
+
"": {
|
8
|
+
subschema: Subschema;
|
9
|
+
root: R;
|
10
|
+
transform: (value: any) => any;
|
11
|
+
context: Array<Context>;
|
12
|
+
applied: Applied;
|
13
|
+
};
|
14
|
+
/** Inject context into that which is placeheld. */
|
15
|
+
fill: <A extends Partial<Record<P, number | string>>>(values: A) => Ty<T, Exclude<P, keyof A>, R>;
|
16
|
+
/** Get the corresponding JSON Schema. */
|
17
|
+
schema(this: Ty<T, never>): Schema;
|
13
18
|
}
|
14
|
-
export declare
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
}
|
20
|
-
export type ToSchema = (description: string | undefined, ref: Ref) => Schema;
|
21
|
-
export type Schema = Record<string, unknown>;
|
22
|
-
export interface Description {
|
19
|
+
export declare function Ty<T, P extends keyof any, R extends boolean, I = T>(subschema: Subschema, root: R, transform?: (value: I) => T, context?: Array<Context>, applied?: Applied): Ty<T, P, R>;
|
20
|
+
export type Subschema = (subschema: SubschemaFactory) => Schema;
|
21
|
+
export type SubschemaFactory = (ty: Ty) => Schema;
|
22
|
+
export declare function SubschemaFactory(applied: Applied): SubschemaFactory;
|
23
|
+
interface Context {
|
23
24
|
template: TemplateStringsArray;
|
24
|
-
placeheld: Array<
|
25
|
+
placeheld: Array<keyof any>;
|
25
26
|
}
|
26
|
-
|
27
|
+
type Applied = Record<keyof any, number | string>;
|
28
|
+
export type Schema = Record<string, unknown>;
|
29
|
+
export {};
|
27
30
|
//# sourceMappingURL=Ty.d.ts.map
|
package/esm/types/Ty.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Ty.d.ts","sourceRoot":"","sources":["../../src/types/Ty.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"Ty.d.ts","sourceRoot":"","sources":["../../src/types/Ty.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,SAAS,MAAM,GAAG,GAAG,MAAM,GAAG,EAAE,CAAC,SAAS,OAAO,GAAG,OAAO;IACvF,CAAC,EAAE,SAAS,KAAK,CAAC,MAAM,GAAG,CAAC,EAC1B,QAAQ,EAAE,oBAAoB,EAC9B,GAAG,SAAS,EAAE,EAAE,GACf,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;IAE3B,oEAAoE;IACpE,CAAC,EAAE,CAAC,CAAA;IACJ,iFAAiF;IACjF,CAAC,EAAE,CAAC,CAAA;IAEJ,EAAE,EAAE;QACF,SAAS,EAAE,SAAS,CAAA;QACpB,IAAI,EAAE,CAAC,CAAA;QACP,SAAS,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAA;QAC9B,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;QACvB,OAAO,EAAE,OAAO,CAAA;KACjB,CAAA;IAED,mDAAmD;IACnD,IAAI,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,EAClD,MAAM,EAAE,CAAC,KACN,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAElC,yCAAyC;IACzC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,CAAA;CACnC;AAED,wBAAgB,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,GAAG,EAAE,CAAC,SAAS,OAAO,EAAE,CAAC,GAAG,CAAC,EACjE,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,CAAC,EACP,SAAS,GAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAA6B,EACtD,OAAO,GAAE,KAAK,CAAC,OAAO,CAAM,EAC5B,OAAO,GAAE,OAAY,GACpB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CA8Bb;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,gBAAgB,KAAK,MAAM,CAAA;AAE/D,MAAM,MAAM,gBAAgB,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK,MAAM,CAAA;AACjD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,gBAAgB,CAWnE;AAED,UAAU,OAAO;IACf,QAAQ,EAAE,oBAAoB,CAAA;IAC9B,SAAS,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;CAC5B;AACD,KAAK,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,CAAA;AAEjD,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA"}
|
package/esm/types/Ty.js
CHANGED
@@ -1,17 +1,34 @@
|
|
1
|
-
import {
|
2
|
-
export function Ty(
|
3
|
-
return Object.assign((template, ...placeheld) => Ty(
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
1
|
+
import { recombine } from "../util/recombine.js";
|
2
|
+
export function Ty(subschema, root, transform = (value) => value, context = [], applied = {}) {
|
3
|
+
return Object.assign((template, ...placeheld) => Ty(subschema, root, transform, [{ template, placeheld }, ...context], applied), {}, {
|
4
|
+
"": {
|
5
|
+
subschema,
|
6
|
+
root,
|
7
|
+
transform,
|
8
|
+
context,
|
9
|
+
applied,
|
9
10
|
},
|
10
|
-
|
11
|
-
return
|
11
|
+
fill: (values) => {
|
12
|
+
return Ty(subschema, root, transform, context, {
|
13
|
+
...applied,
|
14
|
+
...values,
|
15
|
+
});
|
16
|
+
},
|
17
|
+
schema() {
|
18
|
+
return SubschemaFactory({})(this);
|
12
19
|
},
|
13
20
|
});
|
14
21
|
}
|
15
|
-
|
16
|
-
|
22
|
+
export function SubschemaFactory(applied) {
|
23
|
+
return (ty) => {
|
24
|
+
applied = { ...applied, ...ty[""].applied };
|
25
|
+
const description = ty[""].context
|
26
|
+
.map(({ template, placeheld }) => recombine(template, placeheld.map((k) => applied[k])))
|
27
|
+
.join(" ");
|
28
|
+
return {
|
29
|
+
...ty[""].subschema(SubschemaFactory(applied)),
|
30
|
+
...description ? { description } : {},
|
31
|
+
};
|
32
|
+
};
|
33
|
+
}
|
17
34
|
//# sourceMappingURL=Ty.js.map
|
package/esm/types/Ty.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Ty.js","sourceRoot":"","sources":["../../src/types/Ty.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"Ty.js","sourceRoot":"","sources":["../../src/types/Ty.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AA8BhD,MAAM,UAAU,EAAE,CAChB,SAAoB,EACpB,IAAO,EACP,YAA6B,CAAC,KAAK,EAAE,EAAE,CAAC,KAAc,EACtD,UAA0B,EAAE,EAC5B,UAAmB,EAAE;IAErB,OAAO,MAAM,CAAC,MAAM,CAClB,CAA8B,QAA8B,EAAE,GAAG,SAAa,EAAE,EAAE,CAChF,EAAE,CACA,SAAS,EACT,IAAI,EACJ,SAAS,EACT,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,EACrC,OAAO,CACR,EACH,EAAoB,EACpB;QACE,EAAE,EAAE;YACF,SAAS;YACT,IAAI;YACJ,SAAS;YACT,OAAO;YACP,OAAO;SACR;QACD,IAAI,EAAE,CAAgD,MAAS,EAAE,EAAE;YACjE,OAAO,EAAE,CAA+B,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE;gBAC3E,GAAG,OAAO;gBACV,GAAG,MAAM;aACV,CAAC,CAAA;QACJ,CAAC;QACD,MAAM;YACJ,OAAO,gBAAgB,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;QACnC,CAAC;KACF,CACF,CAAA;AACH,CAAC;AAKD,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,OAAO,CAAC,EAAE,EAAE,EAAE;QACZ,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAA;QAC3C,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO;aAC/B,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC;aACxF,IAAI,CAAC,GAAG,CAAC,CAAA;QACZ,OAAO;YACL,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAC9C,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE;SACtC,CAAA;IACH,CAAC,CAAA;AACH,CAAC"}
|
package/esm/types/array.d.ts
CHANGED
package/esm/types/array.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../src/types/array.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAE5B,wBAAgB,KAAK,CAAC,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,
|
1
|
+
{"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../src/types/array.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAE5B,wBAAgB,KAAK,CAAC,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAShF"}
|
package/esm/types/array.js
CHANGED
@@ -1,9 +1,8 @@
|
|
1
1
|
import { Ty } from "./Ty.js";
|
2
2
|
export function array(element) {
|
3
|
-
return Ty((
|
3
|
+
return Ty((ref) => ({
|
4
4
|
type: "array",
|
5
|
-
description,
|
6
5
|
items: ref(element),
|
7
|
-
}));
|
6
|
+
}), false, (value) => value.map(element[""].transform));
|
8
7
|
}
|
9
8
|
//# sourceMappingURL=array.js.map
|
package/esm/types/array.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"array.js","sourceRoot":"","sources":["../../src/types/array.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAE5B,MAAM,UAAU,KAAK,CAAe,OAAU;IAC5C,OAAO,EAAE,
|
1
|
+
{"version":3,"file":"array.js","sourceRoot":"","sources":["../../src/types/array.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAE5B,MAAM,UAAU,KAAK,CAAe,OAAU;IAC5C,OAAO,EAAE,CACP,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACR,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC;KACpB,CAAC,EACF,KAAK,EACL,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAC5C,CAAA;AACH,CAAC"}
|
@@ -1,3 +1,3 @@
|
|
1
1
|
import { Ty } from "./Ty.js";
|
2
|
-
export declare function constantUnion<M extends Array<number | string>>(...members: M): Ty<M[number], never>;
|
2
|
+
export declare function constantUnion<M extends Array<number | string>>(...members: M): Ty<M[number], never, false>;
|
3
3
|
//# sourceMappingURL=constantUnion.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"constantUnion.d.ts","sourceRoot":"","sources":["../../src/types/constantUnion.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAE5B,wBAAgB,aAAa,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,EAC5D,GAAG,OAAO,EAAE,CAAC,GACZ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,
|
1
|
+
{"version":3,"file":"constantUnion.d.ts","sourceRoot":"","sources":["../../src/types/constantUnion.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAE5B,wBAAgB,aAAa,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,EAC5D,GAAG,OAAO,EAAE,CAAC,GACZ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAkB7B"}
|
@@ -2,24 +2,21 @@ import { partition } from "../deps/jsr.io/@std/collections/1.0.9/mod.js";
|
|
2
2
|
import { Ty } from "./Ty.js";
|
3
3
|
export function constantUnion(...members) {
|
4
4
|
const [strings, numbers] = partition(members, (v) => typeof v === "string");
|
5
|
-
return Ty((
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
description,
|
22
|
-
};
|
23
|
-
});
|
5
|
+
return Ty(() => ({
|
6
|
+
anyOf: [
|
7
|
+
...strings.length
|
8
|
+
? [{
|
9
|
+
type: "string",
|
10
|
+
enum: strings,
|
11
|
+
}]
|
12
|
+
: [],
|
13
|
+
...numbers.length
|
14
|
+
? [{
|
15
|
+
type: "number",
|
16
|
+
enum: numbers,
|
17
|
+
}]
|
18
|
+
: [],
|
19
|
+
],
|
20
|
+
}), false);
|
24
21
|
}
|
25
22
|
//# sourceMappingURL=constantUnion.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"constantUnion.js","sourceRoot":"","sources":["../../src/types/constantUnion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8CAA8C,CAAA;AACxE,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAE5B,MAAM,UAAU,aAAa,CAC3B,GAAG,OAAU;IAEb,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAA;IAC3E,OAAO,EAAE,CAAC,
|
1
|
+
{"version":3,"file":"constantUnion.js","sourceRoot":"","sources":["../../src/types/constantUnion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8CAA8C,CAAA;AACxE,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAE5B,MAAM,UAAU,aAAa,CAC3B,GAAG,OAAU;IAEb,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAA;IAC3E,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QACf,KAAK,EAAE;YACL,GAAG,OAAO,CAAC,MAAM;gBACf,CAAC,CAAC,CAAC;wBACD,IAAI,EAAE,QAAQ;wBACd,IAAI,EAAE,OAAO;qBACd,CAAC;gBACF,CAAC,CAAC,EAAE;YACN,GAAG,OAAO,CAAC,MAAM;gBACf,CAAC,CAAC,CAAC;wBACD,IAAI,EAAE,QAAQ;wBACd,IAAI,EAAE,OAAO;qBACd,CAAC;gBACF,CAAC,CAAC,EAAE;SACP;KACF,CAAC,EAAE,KAAK,CAAC,CAAA;AACZ,CAAC"}
|
package/esm/types/mod.d.ts
CHANGED
@@ -1,11 +1,10 @@
|
|
1
1
|
export * from "./array.js";
|
2
|
-
export * from "./leaves.js";
|
3
|
-
export * from "./constant.js";
|
4
2
|
export * from "./constantUnion.js";
|
5
|
-
export * from "./std/mod.js";
|
6
3
|
export * from "./object.js";
|
7
|
-
export * from "./
|
4
|
+
export * from "./primitives.js";
|
5
|
+
export * from "./std/mod.js";
|
8
6
|
export * from "./taggedUnion.js";
|
7
|
+
export * from "./transform.js";
|
8
|
+
export * from "./tuple.js";
|
9
9
|
export * from "./Ty.js";
|
10
|
-
export * from "./RootTy.js";
|
11
10
|
//# sourceMappingURL=mod.d.ts.map
|
package/esm/types/mod.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/types/mod.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/types/mod.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA"}
|
package/esm/types/mod.js
CHANGED
@@ -1,11 +1,10 @@
|
|
1
1
|
export * from "./array.js";
|
2
|
-
export * from "./leaves.js";
|
3
|
-
export * from "./constant.js";
|
4
2
|
export * from "./constantUnion.js";
|
5
|
-
export * from "./std/mod.js";
|
6
3
|
export * from "./object.js";
|
7
|
-
export * from "./
|
4
|
+
export * from "./primitives.js";
|
5
|
+
export * from "./std/mod.js";
|
8
6
|
export * from "./taggedUnion.js";
|
7
|
+
export * from "./transform.js";
|
8
|
+
export * from "./tuple.js";
|
9
9
|
export * from "./Ty.js";
|
10
|
-
export * from "./RootTy.js";
|
11
10
|
//# sourceMappingURL=mod.js.map
|
package/esm/types/mod.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/types/mod.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,
|
1
|
+
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/types/mod.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA"}
|
package/esm/types/object.d.ts
CHANGED
@@ -1,6 +1,5 @@
|
|
1
|
-
import {
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
}, F[keyof F][Ty.P]>;
|
1
|
+
import { Ty } from "./Ty.js";
|
2
|
+
export declare function object<F extends Record<string, Ty>>(fields: F): Ty<{
|
3
|
+
[K in keyof F]: F[K]["T"];
|
4
|
+
}, F[keyof F]["P"], true>;
|
6
5
|
//# sourceMappingURL=object.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../src/types/object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
1
|
+
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../src/types/object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAE5B,wBAAgB,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,EACjD,MAAM,EAAE,CAAC,GACR,EAAE,CAAC;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;CAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAc1D"}
|
package/esm/types/object.js
CHANGED
@@ -1,11 +1,10 @@
|
|
1
|
-
import {
|
1
|
+
import { Ty } from "./Ty.js";
|
2
2
|
export function object(fields) {
|
3
|
-
return
|
3
|
+
return Ty((ref) => ({
|
4
4
|
type: "object",
|
5
|
-
description,
|
6
5
|
properties: Object.fromEntries(Object.entries(fields).map(([k, v]) => [k, ref(v)])),
|
7
6
|
additionalProperties: false,
|
8
7
|
required: Object.keys(fields),
|
9
|
-
}));
|
8
|
+
}), true, (v) => Object.fromEntries(Object.entries(v).map(([k, v]) => [k, fields[k][""].transform(v)])));
|
10
9
|
}
|
11
10
|
//# sourceMappingURL=object.js.map
|
package/esm/types/object.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"object.js","sourceRoot":"","sources":["../../src/types/object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
1
|
+
{"version":3,"file":"object.js","sourceRoot":"","sources":["../../src/types/object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAE5B,MAAM,UAAU,MAAM,CACpB,MAAS;IAET,OAAO,EAAE,CACP,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACR,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnF,oBAAoB,EAAE,KAAK;QAC3B,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;KAC9B,CAAC,EACF,IAAI,EACJ,CAAC,CAAC,EAAE,EAAE,CACJ,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAC3D,CACb,CAAA;AACH,CAAC"}
|
@@ -0,0 +1,6 @@
|
|
1
|
+
import { Ty } from "./Ty.js";
|
2
|
+
export declare const none: Ty<null, never, false>;
|
3
|
+
export declare const boolean: Ty<boolean, never, false>;
|
4
|
+
export declare const number: Ty<number, never, false>;
|
5
|
+
export declare const string: Ty<string, never, false>;
|
6
|
+
//# sourceMappingURL=primitives.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../src/types/primitives.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAE5B,eAAO,MAAM,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAE9B,CAAA;AAEV,eAAO,MAAM,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAEpC,CAAA;AAEV,eAAO,MAAM,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAElC,CAAA;AAEV,eAAO,MAAM,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAElC,CAAA"}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
import { Ty } from "./Ty.js";
|
2
|
+
export const none = Ty(() => ({
|
3
|
+
type: "null",
|
4
|
+
}), false);
|
5
|
+
export const boolean = Ty(() => ({
|
6
|
+
type: "boolean",
|
7
|
+
}), false);
|
8
|
+
export const number = Ty(() => ({
|
9
|
+
type: "number",
|
10
|
+
}), false);
|
11
|
+
export const string = Ty(() => ({
|
12
|
+
type: "string",
|
13
|
+
}), false);
|
14
|
+
//# sourceMappingURL=primitives.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"primitives.js","sourceRoot":"","sources":["../../src/types/primitives.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAE5B,MAAM,CAAC,MAAM,IAAI,GAA2B,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IACpD,IAAI,EAAE,MAAM;CACb,CAAC,EAAE,KAAK,CAAC,CAAA;AAEV,MAAM,CAAC,MAAM,OAAO,GAA8B,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1D,IAAI,EAAE,SAAS;CAChB,CAAC,EAAE,KAAK,CAAC,CAAA;AAEV,MAAM,CAAC,MAAM,MAAM,GAA6B,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IACxD,IAAI,EAAE,QAAQ;CACf,CAAC,EAAE,KAAK,CAAC,CAAA;AAEV,MAAM,CAAC,MAAM,MAAM,GAA6B,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IACxD,IAAI,EAAE,QAAQ;CACf,CAAC,EAAE,KAAK,CAAC,CAAA"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Date.d.ts","sourceRoot":"","sources":["../../../src/types/std/Date.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAA;AAElC,OAAO,EAAE,KAAK,IAAI,IAAI,EAAE,CAAA;AACxB,QAAA,MAAM,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAYhC,CAAA"}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
import { object } from "../object.js";
|
2
|
+
import { number } from "../primitives.js";
|
3
|
+
import { transform } from "../transform.js";
|
4
|
+
export { Date_ as Date };
|
5
|
+
const Date_ = transform(object({
|
6
|
+
year: number,
|
7
|
+
month: number `Zero-based (0 for January, 11 for December).`,
|
8
|
+
day: number `Day of the month (1-31). Ensure within available range for the specified month.`,
|
9
|
+
hour: number `Zero-based (0-23)`,
|
10
|
+
minute: number `Zero-based (0-59)`,
|
11
|
+
second: number `Zero-based (0-59)`,
|
12
|
+
millisecond: number `Zero-based (0-999)`,
|
13
|
+
}), ({ year, month, day, hour, minute, second, millisecond }) => new Date(year, month, day, hour, minute, second, millisecond));
|
14
|
+
//# sourceMappingURL=Date.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Date.js","sourceRoot":"","sources":["../../../src/types/std/Date.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAG3C,OAAO,EAAE,KAAK,IAAI,IAAI,EAAE,CAAA;AACxB,MAAM,KAAK,GAA0B,SAAS,CAC5C,MAAM,CAAC;IACL,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,MAAM,CAAA,8CAA8C;IAC3D,GAAG,EAAE,MAAM,CAAA,iFAAiF;IAC5F,IAAI,EAAE,MAAM,CAAA,mBAAmB;IAC/B,MAAM,EAAE,MAAM,CAAA,mBAAmB;IACjC,MAAM,EAAE,MAAM,CAAA,mBAAmB;IACjC,WAAW,EAAE,MAAM,CAAA,oBAAoB;CACxC,CAAC,EACF,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,CAC1D,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAChE,CAAA"}
|