@model-ts/graphql 7.3.0 → 7.4.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/GraphQL.d.ts CHANGED
@@ -6,5 +6,6 @@ export type { Connection, ConnectionArgs, Edge, PageInfo, } from "./Connections.
6
6
  export type { ErrorSchema, ResultOptions } from "./Results.ts";
7
7
  export { ErrorReporter, type ErrorReport, type ErrorPolicyOptions, } from "./Errors.ts";
8
8
  export { ID, JSONValue, DateTime, id, input, defaulted } from "./SchemaTypes.ts";
9
+ export { jsonScalar, type JSONScalarOptions } from "./Scalars.ts";
9
10
  export { executor, type Executor, type Execution, type Json, execute, subscribe, type BuiltSchema, type Request, type ExecutionResult, type FormattedExecutionResult, } from "./Execution.ts";
10
11
  //# sourceMappingURL=GraphQL.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"GraphQL.d.ts","sourceRoot":"","sources":["../src/GraphQL.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAA;AAC/E,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAC5E,YAAY,EACV,KAAK,EACL,MAAM,EACN,SAAS,EACT,GAAG,EACH,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,YAAY,GACb,MAAM,iBAAiB,CAAA;AACxB,YAAY,EACV,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,eAAe,GAChB,MAAM,kBAAkB,CAAA;AACzB,YAAY,EACV,UAAU,EACV,cAAc,EACd,IAAI,EACJ,QAAQ,GACT,MAAM,kBAAkB,CAAA;AACzB,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC9D,OAAO,EACL,aAAa,EACb,KAAK,WAAW,EAChB,KAAK,kBAAkB,GACxB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAChF,OAAO,EACL,QAAQ,EACR,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,IAAI,EACT,OAAO,EACP,SAAS,EACT,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,eAAe,EACpB,KAAK,wBAAwB,GAC9B,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"GraphQL.d.ts","sourceRoot":"","sources":["../src/GraphQL.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAA;AAC/E,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAC5E,YAAY,EACV,KAAK,EACL,MAAM,EACN,SAAS,EACT,GAAG,EACH,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,YAAY,GACb,MAAM,iBAAiB,CAAA;AACxB,YAAY,EACV,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,eAAe,GAChB,MAAM,kBAAkB,CAAA;AACzB,YAAY,EACV,UAAU,EACV,cAAc,EACd,IAAI,EACJ,QAAQ,GACT,MAAM,kBAAkB,CAAA;AACzB,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC9D,OAAO,EACL,aAAa,EACb,KAAK,WAAW,EAChB,KAAK,kBAAkB,GACxB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAChF,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAA;AACjE,OAAO,EACL,QAAQ,EACR,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,IAAI,EACT,OAAO,EACP,SAAS,EACT,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,eAAe,EACpB,KAAK,wBAAwB,GAC9B,MAAM,gBAAgB,CAAA"}
package/dist/GraphQL.js CHANGED
@@ -1,5 +1,6 @@
1
1
  export { createBuilder } from "./Builder.js";
2
2
  export { ErrorReporter, } from "./Errors.js";
3
3
  export { ID, JSONValue, DateTime, id, input, defaulted } from "./SchemaTypes.js";
4
+ export { jsonScalar } from "./Scalars.js";
4
5
  export { executor, execute, subscribe, } from "./Execution.js";
5
6
  //# sourceMappingURL=GraphQL.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GraphQL.js","sourceRoot":"","sources":["../src/GraphQL.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAqC,MAAM,cAAc,CAAA;AAgC/E,OAAO,EACL,aAAa,GAGd,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAChF,OAAO,EACL,QAAQ,EAIR,OAAO,EACP,SAAS,GAKV,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"GraphQL.js","sourceRoot":"","sources":["../src/GraphQL.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAqC,MAAM,cAAc,CAAA;AAgC/E,OAAO,EACL,aAAa,GAGd,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAChF,OAAO,EAAE,UAAU,EAA0B,MAAM,cAAc,CAAA;AACjE,OAAO,EACL,QAAQ,EAIR,OAAO,EACP,SAAS,GAKV,MAAM,gBAAgB,CAAA"}
@@ -21,7 +21,7 @@ export type Model = {
21
21
  export type Tag<M extends Model> = M["Type"] extends {
22
22
  readonly _tag: infer N extends string;
23
23
  } ? N : never;
24
- export type InferKind<M extends Model> = M extends Schema.Literals<readonly string[]> ? "enum" : M extends Schema.Union<readonly Schema.Top[]> ? "union" : M["Type"] extends string | number | boolean | Date ? "scalar" : "object";
24
+ export type InferKind<M extends Model> = M extends Schema.Literals<readonly string[]> ? "enum" : unknown extends M["Type"] ? "scalar" : M extends Schema.Union<readonly Schema.Top[]> ? "union" : M["Type"] extends string | number | boolean | Date ? "scalar" : "object";
25
25
  /** Tagged models need no name; non-object abstract types specify their kind. */
26
26
  export type Register<M extends Model, N extends string = Tag<M>, K extends DefinitionKind = InferKind<M>> = {
27
27
  readonly [Name in N]: Registration<K, M["Type"]>;
@@ -1 +1 @@
1
- {"version":3,"file":"Registry.d.ts","sourceRoot":"","sources":["../src/Registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Registry.d.ts","sourceRoot":"","sources":["../src/Registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,IAAI,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC5E,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEhE,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,IAAI,GAAG,MAAM,CAAA;IACvB,IAAI,EAAE,OAAO,CAAA;CACd;AAED,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,WAAW,GACX,OAAO,GACP,QAAQ,GACR,MAAM,CAAA;AAEV,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,cAAc,EAAE,CAAC;IACvD,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;IAChB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;CAClB;AAED,MAAM,MAAM,KAAK,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAA;AAE9C,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,MAAM,CAAA;CACtC,GACG,CAAC,GACD,KAAK,CAAA;AAET,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,KAAK,IACnC,CAAC,SAAS,MAAM,CAAC,QAAQ,CAAC,SAAS,MAAM,EAAE,CAAC,GACxC,MAAM,GAEN,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,GACvB,QAAQ,GACR,CAAC,SAAS,MAAM,CAAC,KAAK,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,CAAC,GAC3C,OAAO,GACP,CAAC,CAAC,MAAM,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAChD,QAAQ,GACR,QAAQ,CAAA;AACpB,gFAAgF;AAEhF,MAAM,MAAM,QAAQ,CAClB,CAAC,SAAS,KAAK,EACf,CAAC,SAAS,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EACzB,CAAC,SAAS,cAAc,GAAG,SAAS,CAAC,CAAC,CAAC,IACrC;IACF,QAAQ,EAAE,IAAI,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;CACjD,CAAA;AAED,MAAM,MAAM,WAAW,CAAC,KAAK,EAAE,IAAI,SAAS,cAAc,IAAI,OAAO,CACnE;KACG,CAAC,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK;CAC7E,CAAC,MAAM,KAAK,CAAC,EACd,MAAM,CACP,CAAA;AAED,MAAM,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,SAAS,MAAM,KAAK,GACjD,KAAK,CAAC,CAAC,CAAC,SAAS,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,GACpD,CAAC,GACD,KAAK,GACP,KAAK,CAAA;AAET,MAAM,MAAM,MAAM,CAAC,KAAK,IAAI;IAC1B,QAAQ,EAAE,CAAC,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;CAC/C,GAAG;IACF,QAAQ,EACN,CAAC,IAAI,WAAW,CACd,KAAK,EACL,QAAQ,GAAG,WAAW,GAAG,OAAO,CACjC,IAAI,GAAG,CAAC,MAAM,SAAS,MAAM,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC,MAAM,GACvD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;CAC3B,GAAG;IACF,QAAQ,EACN,CAAC,IAAI,WAAW,CACd,KAAK,EACL,QAAQ,GAAG,WAAW,GAAG,OAAO,CACjC,IAAI,GAAG,CAAC,YAAY,SAAS,MAAM,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC,YAAY,GACnE,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;CACjC,GAAG,CAAC,UAAU,SAAS,MAAM,KAAK,GAAG,EAAE,GAAG;IAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAA;AAE3E,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS;IAChC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAA;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,SAAS,MAAM,CAAA;CACzC,GACG,CAAC,GACD,KAAK,CAAA;AAET,MAAM,MAAM,iBAAiB,CAC3B,KAAK,EACL,CAAC,SAAS,MAAM,EAChB,CAAC,EACD,CAAC,SAAS,cAAc,IACtB,CAAC,SAAS,MAAM,KAAK,GACrB,KAAK,CAAC,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,EAAE,MAAM,QAAQ,CAAC,GAC9C,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,GACpB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,GACpB,OAAO,GACP,oCAAoC,CAAC,oCAAoC,GAC3E,oCAAoC,CAAC,oCAAoC,GAC3E,mCAAmC,CAAC,eAAe,CAAC,EAAE,GACxD,aAAa,CAAC,gFAAgF,CAAC,GAAG,CAAC,SAAS,QAAQ,GAAG,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,MAAM,GAAG,QAAQ,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAA;AAElM,MAAM,MAAM,iBAAiB,CAC3B,KAAK,EACL,CAAC,SAAS,MAAM,EAChB,CAAC,EACD,CAAC,SAAS,cAAc,IAExB,iBAAiB,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,SAAS,MAAM,KAAK,GACjD,KAAK,SAAS,MAAM,GAClB;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GACzB,OAAO,GACT,KAAK,CAAA;AAEX,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,GAAG;IACrC,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IACxC,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAA;KAAE,CAAA;CACtD,CAAA;AAED,MAAM,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC,SAAS,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,WAAW,GACxE,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,SAAS,MAAM,KAAK,GACvE,KAAK,SAAS,MAAM,GAClB,KAAK,GACL,KAAK,GACP,KAAK,GACP,oHAAoH,CAAA;AAExH,MAAM,MAAM,cAAc,CAAC,KAAK,EAAE,OAAO,SAAS,SAAS,MAAM,CAAC,GAAG,EAAE,IACrE,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,MAAM,KAAK,GACnD,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GACrB,OAAO,GACP;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAC3B,KAAK,CAAA;AAEX,MAAM,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,IAC3B,OAAO,CAAC,MAAM,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,OAAO,GAC1D,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,GACvB,OAAO,GACP,uBAAuB,OAAO,GAAG,MAAM,uCAAuC,GAChF,KAAK,CAAA;AAEX,0FAA0F;AAC1F,MAAM,MAAM,kBAAkB,CAAC,CAAC,EAAE,CAAC,IAAI;IACrC,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;QACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;QACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KACzB,GACG,CAAC,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,GACxB,CAAC,SAAS,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,GACnC,OAAO,GACP,mIAAmI,GACrI,kIAAkI,GACpI,OAAO;CACZ,CAAA"}
package/dist/Scalars.d.ts CHANGED
@@ -3,7 +3,29 @@ import { GraphQLScalarType, GraphQLEnumType } from "graphql";
3
3
  export declare const date: (value: unknown) => Date;
4
4
  export declare const dateTime: () => GraphQLScalarType<unknown, unknown>;
5
5
  export declare function scalar<A, I>(name: string, codec: Schema.Codec<A, I>): GraphQLScalarType;
6
- /** Like graphql-type-json, variables and outputs are deliberately unrestricted JS values. */
7
- export declare const jsonScalar: () => GraphQLScalarType<unknown, unknown>;
6
+ /** Metadata of the built-in JSON scalar. */
7
+ export interface JSONScalarOptions {
8
+ /** Replaces the default description, which cites ECMA-404. */
9
+ readonly description?: string | undefined;
10
+ /** Printed as `@specifiedBy(url: ...)`. */
11
+ readonly specifiedByURL?: string | undefined;
12
+ }
13
+ /**
14
+ * The built-in `JSON` scalar. Like graphql-type-json, variables and outputs
15
+ * are deliberately unrestricted JS values; literals are JSON values, and enum
16
+ * literals are rejected at any depth. Pass it to `GraphQL.scalar("JSON", ...)`
17
+ * to give the scalar its own metadata.
18
+ *
19
+ * ```ts
20
+ * const specifiedByURL =
21
+ * "https://ecma-international.org/wp-content/uploads/ECMA-404_2nd_edition_december_2017.pdf"
22
+ * export const JSONType = GraphQL.scalar(
23
+ * "JSON",
24
+ * JSONValue.annotate({ specifiedByURL }),
25
+ * jsonScalar({ specifiedByURL }),
26
+ * )
27
+ * ```
28
+ */
29
+ export declare const jsonScalar: (options?: JSONScalarOptions) => GraphQLScalarType;
8
30
  export declare function enumeration(name: string, schema: Schema.Schema<string>): GraphQLEnumType;
9
31
  //# sourceMappingURL=Scalars.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Scalars.d.ts","sourceRoot":"","sources":["../src/Scalars.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EACL,iBAAiB,EACjB,eAAe,EAIhB,MAAM,SAAS,CAAA;AAKhB,eAAO,MAAM,IAAI,UAAW,OAAO,SAOlC,CAAA;AAcD,eAAO,MAAM,QAAQ,2CAelB,CAAA;AAEH,wBAAgB,MAAM,CAAC,CAAC,EAAE,CAAC,EACzB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GACxB,iBAAiB,CAkCnB;AAyBD,6FAA6F;AAC7F,eAAO,MAAM,UAAU,2CAUpB,CAAA;AAEH,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAC5B,eAAe,CAcjB"}
1
+ {"version":3,"file":"Scalars.d.ts","sourceRoot":"","sources":["../src/Scalars.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EACL,iBAAiB,EACjB,eAAe,EAIhB,MAAM,SAAS,CAAA;AAKhB,eAAO,MAAM,IAAI,UAAW,OAAO,SAOlC,CAAA;AAcD,eAAO,MAAM,QAAQ,2CAelB,CAAA;AAEH,wBAAgB,MAAM,CAAC,CAAC,EAAE,CAAC,EACzB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GACxB,iBAAiB,CAyCnB;AAyBD,4CAA4C;AAC5C,MAAM,WAAW,iBAAiB;IAChC,8DAA8D;IAC9D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACzC,2CAA2C;IAC3C,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC7C;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,UAAU,aACZ,iBAAiB,KACzB,iBAYA,CAAA;AAEH,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAC5B,eAAe,CAcjB"}
package/dist/Scalars.js CHANGED
@@ -34,6 +34,13 @@ export const dateTime = () => guardScalar(new GraphQLScalarType({
34
34
  : invalidInput("DateTime expects a string literal"),
35
35
  }));
36
36
  export function scalar(name, codec) {
37
+ // "JSON" registered with a permissive schema such as `JSONValue` keeps the
38
+ // built-in JSON parsing and takes the schema's metadata.
39
+ if (name === "JSON" && codec.ast._tag === "Unknown")
40
+ return jsonScalar({
41
+ ...metadata(codec.ast),
42
+ specifiedByURL: annotations(codec.ast).specifiedByURL,
43
+ });
37
44
  const decode = Schema.decodeUnknownSync(codec);
38
45
  const encode = Schema.encodeUnknownSync(codec);
39
46
  const decodeInput = (value) => {
@@ -80,10 +87,27 @@ function jsonLiteral(node, variables) {
80
87
  return valueFromASTUntyped(node, variables);
81
88
  }
82
89
  }
83
- /** Like graphql-type-json, variables and outputs are deliberately unrestricted JS values. */
84
- export const jsonScalar = () => guardScalar(new GraphQLScalarType({
90
+ /**
91
+ * The built-in `JSON` scalar. Like graphql-type-json, variables and outputs
92
+ * are deliberately unrestricted JS values; literals are JSON values, and enum
93
+ * literals are rejected at any depth. Pass it to `GraphQL.scalar("JSON", ...)`
94
+ * to give the scalar its own metadata.
95
+ *
96
+ * ```ts
97
+ * const specifiedByURL =
98
+ * "https://ecma-international.org/wp-content/uploads/ECMA-404_2nd_edition_december_2017.pdf"
99
+ * export const JSONType = GraphQL.scalar(
100
+ * "JSON",
101
+ * JSONValue.annotate({ specifiedByURL }),
102
+ * jsonScalar({ specifiedByURL }),
103
+ * )
104
+ * ```
105
+ */
106
+ export const jsonScalar = (options = {}) => guardScalar(new GraphQLScalarType({
85
107
  name: "JSON",
86
- description: "The `JSON` scalar type represents JSON values as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf).",
108
+ description: options.description ??
109
+ "The `JSON` scalar type represents JSON values as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf).",
110
+ specifiedByURL: options.specifiedByURL,
87
111
  serialize: (value) => value,
88
112
  parseValue: (value) => value,
89
113
  parseLiteral: jsonLiteral,
@@ -1 +1 @@
1
- {"version":3,"file":"Scalars.js","sourceRoot":"","sources":["../src/Scalars.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,IAAI,GAEL,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEjE,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAc,EAAE,EAAE;IACrC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAC3B,OAAO,OAAO,CAAC,gCAAgC,CAAC,CAAA;IAClD,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAA;IAC9B,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACtC,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAA;AACjC,CAAC,CAAA;AAED,MAAM,YAAY,GAAG,CAAC,OAAe,EAAS,EAAE;IAC9C,MAAM,UAAU,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAA;AACvD,CAAC,CAAA;AAED,MAAM,SAAS,GAAG,CAAC,KAAc,EAAU,EAAE;IAC3C,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,YAAY,CAAC,qCAAqC,CAAC,CAAA;IAC5D,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,EAAE,CAC3B,WAAW,CACT,IAAI,iBAAiB,CAAC;IACpB,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE,wBAAwB;IACrC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CACnB,KAAK,YAAY,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACvD,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE;QACrB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;IAC/B,UAAU,EAAE,SAAS;IACrB,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CACrB,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM;QACvB,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;QACvB,CAAC,CAAC,YAAY,CAAC,mCAAmC,CAAC;CACxD,CAAC,CACH,CAAA;AAEH,MAAM,UAAU,MAAM,CACpB,IAAY,EACZ,KAAyB;IAEzB,MAAM,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAA;IAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAA;IAC9C,MAAM,WAAW,GAAG,CAAC,KAAc,EAAE,EAAE;QACrC,IAAI,CAAC;YACH,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC;gBAC7B,OAAO,YAAY,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAA;YAClD,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC,CAAA;IACD,OAAO,WAAW,CAChB,IAAI,iBAAiB,CAAC;QACpB,IAAI;QACJ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;QACtB,cAAc,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,cAAc;QACrD,SAAS,EAAE,MAAM;QACjB,0FAA0F;QAC1F,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE;YACpB,WAAW,CAAC,KAAK,CAAC,CAAA;YAClB,OAAO,KAAK,CAAA;QACd,CAAC;QACD,YAAY,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;YAChC,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;gBACzB,OAAO,YAAY,CACjB,GAAG,IAAI,gEAAgE,CACxE,CAAA;YACH,MAAM,KAAK,GAAY,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;YAC3D,WAAW,CAAC,KAAK,CAAC,CAAA;YAClB,OAAO,KAAK,CAAA;QACd,CAAC;KACF,CAAC,CACH,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAClB,IAAe,EACf,SAAoD;IAEpD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,IAAI,CAAC,IAAI;YACZ,OAAO,YAAY,CACjB,oEAAoE,CACrE,CAAA;QACH,KAAK,IAAI,CAAC,MAAM;YACd,OAAO,MAAM,CAAC,WAAW,CACvB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;gBACzB,KAAK,CAAC,IAAI,CAAC,KAAK;gBAChB,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC;aACpC,CAAC,CACH,CAAA;QACH,KAAK,IAAI,CAAC,IAAI;YACZ,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAA;QAClE;YACE,OAAO,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IAC/C,CAAC;AACH,CAAC;AAED,6FAA6F;AAC7F,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,EAAE,CAC7B,WAAW,CACT,IAAI,iBAAiB,CAAC;IACpB,IAAI,EAAE,MAAM;IACZ,WAAW,EACT,sJAAsJ;IACxJ,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;IAC3B,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;IAC5B,YAAY,EAAE,WAAW;CAC1B,CAAC,CACH,CAAA;AAEH,MAAM,UAAU,WAAW,CACzB,IAAY,EACZ,MAA6B;IAE7B,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAA;IACtB,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACvD,OAAO,IAAI,eAAe,CAAC;QACzB,IAAI;QACJ,GAAG,QAAQ,CAAC,GAAG,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC,WAAW,CACxB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACnB,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;gBAC/D,OAAO,OAAO,CAAC,GAAG,IAAI,wCAAwC,CAAC,CAAA;YACjE,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QACtE,CAAC,CAAC,CACH;KACF,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"Scalars.js","sourceRoot":"","sources":["../src/Scalars.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@model-ts/graphql",
3
- "version": "7.3.0",
3
+ "version": "7.4.0",
4
4
  "description": "Effect-native GraphQL schemas, typed model registration and resolver services.",
5
5
  "keywords": [
6
6
  "effect",
package/src/GraphQL.ts CHANGED
@@ -36,6 +36,7 @@ export {
36
36
  type ErrorPolicyOptions,
37
37
  } from "./Errors.ts"
38
38
  export { ID, JSONValue, DateTime, id, input, defaulted } from "./SchemaTypes.ts"
39
+ export { jsonScalar, type JSONScalarOptions } from "./Scalars.ts"
39
40
  export {
40
41
  executor,
41
42
  type Executor,
package/src/Registry.ts CHANGED
@@ -35,11 +35,14 @@ export type Tag<M extends Model> = M["Type"] extends {
35
35
  export type InferKind<M extends Model> =
36
36
  M extends Schema.Literals<readonly string[]>
37
37
  ? "enum"
38
- : M extends Schema.Union<readonly Schema.Top[]>
39
- ? "union"
40
- : M["Type"] extends string | number | boolean | Date
41
- ? "scalar"
42
- : "object"
38
+ : // An unknown value, such as `JSONValue`, can only be a scalar.
39
+ unknown extends M["Type"]
40
+ ? "scalar"
41
+ : M extends Schema.Union<readonly Schema.Top[]>
42
+ ? "union"
43
+ : M["Type"] extends string | number | boolean | Date
44
+ ? "scalar"
45
+ : "object"
43
46
  /** Tagged models need no name; non-object abstract types specify their kind. */
44
47
 
45
48
  export type Register<
package/src/Scalars.ts CHANGED
@@ -52,6 +52,13 @@ export function scalar<A, I>(
52
52
  name: string,
53
53
  codec: Schema.Codec<A, I>,
54
54
  ): GraphQLScalarType {
55
+ // "JSON" registered with a permissive schema such as `JSONValue` keeps the
56
+ // built-in JSON parsing and takes the schema's metadata.
57
+ if (name === "JSON" && codec.ast._tag === "Unknown")
58
+ return jsonScalar({
59
+ ...metadata(codec.ast),
60
+ specifiedByURL: annotations(codec.ast).specifiedByURL,
61
+ })
55
62
  const decode = Schema.decodeUnknownSync(codec)
56
63
  const encode = Schema.encodeUnknownSync(codec)
57
64
  const decodeInput = (value: unknown) => {
@@ -110,13 +117,40 @@ function jsonLiteral(
110
117
  }
111
118
  }
112
119
 
113
- /** Like graphql-type-json, variables and outputs are deliberately unrestricted JS values. */
114
- export const jsonScalar = () =>
120
+ /** Metadata of the built-in JSON scalar. */
121
+ export interface JSONScalarOptions {
122
+ /** Replaces the default description, which cites ECMA-404. */
123
+ readonly description?: string | undefined
124
+ /** Printed as `@specifiedBy(url: ...)`. */
125
+ readonly specifiedByURL?: string | undefined
126
+ }
127
+
128
+ /**
129
+ * The built-in `JSON` scalar. Like graphql-type-json, variables and outputs
130
+ * are deliberately unrestricted JS values; literals are JSON values, and enum
131
+ * literals are rejected at any depth. Pass it to `GraphQL.scalar("JSON", ...)`
132
+ * to give the scalar its own metadata.
133
+ *
134
+ * ```ts
135
+ * const specifiedByURL =
136
+ * "https://ecma-international.org/wp-content/uploads/ECMA-404_2nd_edition_december_2017.pdf"
137
+ * export const JSONType = GraphQL.scalar(
138
+ * "JSON",
139
+ * JSONValue.annotate({ specifiedByURL }),
140
+ * jsonScalar({ specifiedByURL }),
141
+ * )
142
+ * ```
143
+ */
144
+ export const jsonScalar = (
145
+ options: JSONScalarOptions = {},
146
+ ): GraphQLScalarType =>
115
147
  guardScalar(
116
148
  new GraphQLScalarType({
117
149
  name: "JSON",
118
150
  description:
151
+ options.description ??
119
152
  "The `JSON` scalar type represents JSON values as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf).",
153
+ specifiedByURL: options.specifiedByURL,
120
154
  serialize: (value) => value,
121
155
  parseValue: (value) => value,
122
156
  parseLiteral: jsonLiteral,