@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/CHANGELOG.md +6 -0
- package/README.md +22 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/GraphQL.d.ts +1 -0
- package/dist/GraphQL.d.ts.map +1 -1
- package/dist/GraphQL.js +1 -0
- package/dist/GraphQL.js.map +1 -1
- package/dist/Registry.d.ts +1 -1
- package/dist/Registry.d.ts.map +1 -1
- package/dist/Scalars.d.ts +24 -2
- package/dist/Scalars.d.ts.map +1 -1
- package/dist/Scalars.js +27 -3
- package/dist/Scalars.js.map +1 -1
- package/package.json +1 -1
- package/src/GraphQL.ts +1 -0
- package/src/Registry.ts +8 -5
- package/src/Scalars.ts +36 -2
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
|
package/dist/GraphQL.d.ts.map
CHANGED
|
@@ -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
|
package/dist/GraphQL.js.map
CHANGED
|
@@ -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"}
|
package/dist/Registry.d.ts
CHANGED
|
@@ -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"]>;
|
package/dist/Registry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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,
|
|
1
|
+
{"version":3,"file":"Registry.d.ts","sourceRoot":"","sources":["../src/Registry.ts"],"names":[],"mappings":"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"}
|
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
|
-
/**
|
|
7
|
-
export
|
|
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
|
package/dist/Scalars.d.ts.map
CHANGED
|
@@ -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,
|
|
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
|
-
/**
|
|
84
|
-
|
|
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:
|
|
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,
|
package/dist/Scalars.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Scalars.js","sourceRoot":"","sources":["../src/Scalars.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Scalars.js","sourceRoot":"","sources":["../src/Scalars.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/GraphQL.ts
CHANGED
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
|
-
:
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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
|
-
/**
|
|
114
|
-
export
|
|
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,
|