@smartive/graphql-magic 8.1.2 → 9.0.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 +1 -6
- package/dist/bin/gqm.cjs +24 -21
- package/dist/cjs/index.cjs +8 -21
- package/dist/esm/api/execute.js +2 -4
- package/dist/esm/api/execute.js.map +1 -1
- package/dist/esm/schema/utils.js +2 -3
- package/dist/esm/schema/utils.js.map +1 -1
- package/dist/esm/values.d.ts +0 -4
- package/dist/esm/values.js +1 -6
- package/dist/esm/values.js.map +1 -1
- package/package.json +1 -1
- package/src/api/execute.ts +2 -4
- package/src/bin/gqm/static-eval.ts +7 -3
- package/src/bin/gqm/visitor.ts +15 -7
- package/src/schema/utils.ts +3 -3
- package/src/values.ts +1 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
### Bug Fixes
|
|
5
|
-
|
|
6
|
-
* gqm build ([#58](https://github.com/smartive/graphql-magic/issues/58)) ([e40e550](https://github.com/smartive/graphql-magic/commit/e40e5506efd43ca93dc5dff835221b6b31c2a383))
|
|
1
|
+
# [9.0.0](https://github.com/smartive/graphql-magic/compare/v8.1.3...v9.0.0) (2023-09-06)
|
package/dist/bin/gqm.cjs
CHANGED
|
@@ -31,6 +31,7 @@ var import_simple_git = require("simple-git");
|
|
|
31
31
|
// src/api/execute.ts
|
|
32
32
|
var import_schema = require("@graphql-tools/schema");
|
|
33
33
|
var import_graphql = require("graphql");
|
|
34
|
+
var import_lodash = require("lodash");
|
|
34
35
|
|
|
35
36
|
// src/client/mutations.ts
|
|
36
37
|
var import_upperCase = __toESM(require("lodash/upperCase"), 1);
|
|
@@ -892,15 +893,6 @@ var import_flatMap2 = __toESM(require("lodash/flatMap"), 1);
|
|
|
892
893
|
|
|
893
894
|
// src/schema/utils.ts
|
|
894
895
|
var import_luxon = require("luxon");
|
|
895
|
-
|
|
896
|
-
// src/values.ts
|
|
897
|
-
var Enum = class {
|
|
898
|
-
constructor(value2) {
|
|
899
|
-
this.value = value2;
|
|
900
|
-
}
|
|
901
|
-
};
|
|
902
|
-
|
|
903
|
-
// src/schema/utils.ts
|
|
904
896
|
var document = (definitions) => ({
|
|
905
897
|
kind: "Document",
|
|
906
898
|
definitions
|
|
@@ -1006,9 +998,9 @@ var value = (val = null) => val === null ? {
|
|
|
1006
998
|
} : typeof val === "string" ? {
|
|
1007
999
|
kind: "StringValue",
|
|
1008
1000
|
value: val
|
|
1009
|
-
} : val instanceof
|
|
1001
|
+
} : val instanceof Symbol ? {
|
|
1010
1002
|
kind: "EnumValue",
|
|
1011
|
-
value: val.
|
|
1003
|
+
value: val.description
|
|
1012
1004
|
} : Array.isArray(val) ? {
|
|
1013
1005
|
kind: "ListValue",
|
|
1014
1006
|
values: val.map(value)
|
|
@@ -1484,16 +1476,23 @@ var import_ts_morph2 = require("ts-morph");
|
|
|
1484
1476
|
|
|
1485
1477
|
// src/bin/gqm/visitor.ts
|
|
1486
1478
|
var import_ts_morph = require("ts-morph");
|
|
1487
|
-
var visit = (node, context,
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1479
|
+
var visit = (node, context, visitor) => {
|
|
1480
|
+
if (!node) {
|
|
1481
|
+
if (visitor.undefined) {
|
|
1482
|
+
return visitor.undefined();
|
|
1483
|
+
}
|
|
1484
|
+
console.trace();
|
|
1485
|
+
throw new Error(`Cannot handle undefined node.`);
|
|
1486
|
+
}
|
|
1487
|
+
const kind = node.getKind();
|
|
1488
|
+
const func = visitor[kind];
|
|
1489
|
+
if (func) {
|
|
1490
|
+
return func(node, context);
|
|
1491
1491
|
}
|
|
1492
|
-
if (
|
|
1493
|
-
return
|
|
1492
|
+
if (visitor.unknown) {
|
|
1493
|
+
return visitor.unknown(node);
|
|
1494
1494
|
}
|
|
1495
1495
|
console.error(node.getText());
|
|
1496
|
-
console.error(node.getParent().getText());
|
|
1497
1496
|
throw new Error(
|
|
1498
1497
|
`Cannot handle kind ${get(
|
|
1499
1498
|
Object.entries(import_ts_morph.SyntaxKind).find(([, val]) => val === kind),
|
|
@@ -1503,8 +1502,8 @@ var visit = (node, context, visitor2) => {
|
|
|
1503
1502
|
};
|
|
1504
1503
|
|
|
1505
1504
|
// src/bin/gqm/static-eval.ts
|
|
1506
|
-
var staticEval = (node, context) => visit(node, context,
|
|
1507
|
-
var
|
|
1505
|
+
var staticEval = (node, context) => visit(node, context, VISITOR);
|
|
1506
|
+
var VISITOR = {
|
|
1508
1507
|
undefined: () => void 0,
|
|
1509
1508
|
[import_ts_morph2.SyntaxKind.VariableDeclaration]: (node, context) => staticEval(node.getInitializer(), context),
|
|
1510
1509
|
[import_ts_morph2.SyntaxKind.ArrayLiteralExpression]: (node, context) => {
|
|
@@ -1540,6 +1539,8 @@ var visitor = {
|
|
|
1540
1539
|
return void 0;
|
|
1541
1540
|
case "process":
|
|
1542
1541
|
return process;
|
|
1542
|
+
case "Symbol":
|
|
1543
|
+
return Symbol;
|
|
1543
1544
|
}
|
|
1544
1545
|
const definitionNodes = node.getDefinitionNodes();
|
|
1545
1546
|
if (!definitionNodes.length) {
|
|
@@ -1553,6 +1554,7 @@ var visitor = {
|
|
|
1553
1554
|
[import_ts_morph2.SyntaxKind.TrueKeyword]: () => true,
|
|
1554
1555
|
[import_ts_morph2.SyntaxKind.FalseKeyword]: () => false,
|
|
1555
1556
|
[import_ts_morph2.SyntaxKind.NumericLiteral]: (node) => node.getLiteralValue(),
|
|
1557
|
+
[import_ts_morph2.SyntaxKind.BigIntLiteral]: (node) => node.getLiteralValue(),
|
|
1556
1558
|
[import_ts_morph2.SyntaxKind.CallExpression]: (node, context) => {
|
|
1557
1559
|
const method = staticEval(node.getExpression(), context);
|
|
1558
1560
|
const args2 = node.getArguments().map((arg) => staticEval(arg, context));
|
|
@@ -1678,7 +1680,8 @@ var visitor = {
|
|
|
1678
1680
|
const argument = staticEval(node.getArgumentExpression(), context);
|
|
1679
1681
|
return target[argument];
|
|
1680
1682
|
},
|
|
1681
|
-
[import_ts_morph2.SyntaxKind.NoSubstitutionTemplateLiteral]: (node) => node.getLiteralValue()
|
|
1683
|
+
[import_ts_morph2.SyntaxKind.NoSubstitutionTemplateLiteral]: (node) => node.getLiteralValue(),
|
|
1684
|
+
[import_ts_morph2.SyntaxKind.NullKeyword]: () => null
|
|
1682
1685
|
};
|
|
1683
1686
|
|
|
1684
1687
|
// src/bin/gqm/utils.ts
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -30,7 +30,6 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
30
30
|
var src_exports = {};
|
|
31
31
|
__export(src_exports, {
|
|
32
32
|
AliasGenerator: () => AliasGenerator,
|
|
33
|
-
Enum: () => Enum,
|
|
34
33
|
ForbiddenError: () => ForbiddenError,
|
|
35
34
|
GraphQLError: () => GraphQLError,
|
|
36
35
|
ID_ALIAS: () => ID_ALIAS,
|
|
@@ -128,7 +127,7 @@ __export(src_exports, {
|
|
|
128
127
|
isVisibleRelation: () => isVisibleRelation,
|
|
129
128
|
it: () => it,
|
|
130
129
|
list: () => list,
|
|
131
|
-
merge: () =>
|
|
130
|
+
merge: () => merge2,
|
|
132
131
|
mutationResolver: () => mutationResolver,
|
|
133
132
|
name: () => name,
|
|
134
133
|
namedType: () => namedType,
|
|
@@ -158,6 +157,7 @@ module.exports = __toCommonJS(src_exports);
|
|
|
158
157
|
// src/api/execute.ts
|
|
159
158
|
var import_schema = require("@graphql-tools/schema");
|
|
160
159
|
var import_graphql = require("graphql");
|
|
160
|
+
var import_lodash = require("lodash");
|
|
161
161
|
var execute = async ({
|
|
162
162
|
additionalResolvers,
|
|
163
163
|
body,
|
|
@@ -167,10 +167,7 @@ var execute = async ({
|
|
|
167
167
|
const generatedResolvers = getResolvers(ctx.models);
|
|
168
168
|
const schema = (0, import_schema.makeExecutableSchema)({
|
|
169
169
|
typeDefs: document2,
|
|
170
|
-
resolvers:
|
|
171
|
-
...generatedResolvers,
|
|
172
|
-
...additionalResolvers
|
|
173
|
-
}
|
|
170
|
+
resolvers: (0, import_lodash.merge)(generatedResolvers, additionalResolvers)
|
|
174
171
|
});
|
|
175
172
|
const contextValue = {
|
|
176
173
|
document: document2,
|
|
@@ -255,7 +252,7 @@ var import_get = __toESM(require("lodash/get"), 1);
|
|
|
255
252
|
var import_kebabCase = __toESM(require("lodash/kebabCase"), 1);
|
|
256
253
|
var import_startCase = __toESM(require("lodash/startCase"), 1);
|
|
257
254
|
var isNotFalsy = (v) => typeof v !== "undefined" && v !== null && v !== false;
|
|
258
|
-
var
|
|
255
|
+
var merge2 = (objects) => (objects || []).filter(isNotFalsy).reduce((i, acc) => ({ ...acc, ...i }), {});
|
|
259
256
|
var typeToField = (type) => type.substr(0, 1).toLowerCase() + type.substr(1);
|
|
260
257
|
var getModelPlural = (model) => model.plural || (0, import_inflection.pluralize)(model.name);
|
|
261
258
|
var getModelPluralField = (model) => typeToField(getModelPlural(model));
|
|
@@ -2345,7 +2342,7 @@ var isEndOfDay = (field) => isPrimitive(field) && field.type === "DateTime" && f
|
|
|
2345
2342
|
|
|
2346
2343
|
// src/resolvers/resolvers.ts
|
|
2347
2344
|
var getResolvers = (models) => ({
|
|
2348
|
-
Query:
|
|
2345
|
+
Query: merge2([
|
|
2349
2346
|
{
|
|
2350
2347
|
me: queryResolver
|
|
2351
2348
|
},
|
|
@@ -2356,7 +2353,7 @@ var getResolvers = (models) => ({
|
|
|
2356
2353
|
[getModelPluralField(model)]: queryResolver
|
|
2357
2354
|
}))
|
|
2358
2355
|
]),
|
|
2359
|
-
Mutation:
|
|
2356
|
+
Mutation: merge2([
|
|
2360
2357
|
...models.filter(({ creatable }) => creatable).map((model) => ({
|
|
2361
2358
|
[`create${model.name}`]: mutationResolver
|
|
2362
2359
|
})),
|
|
@@ -2376,15 +2373,6 @@ var import_flatMap2 = __toESM(require("lodash/flatMap"), 1);
|
|
|
2376
2373
|
|
|
2377
2374
|
// src/schema/utils.ts
|
|
2378
2375
|
var import_luxon = require("luxon");
|
|
2379
|
-
|
|
2380
|
-
// src/values.ts
|
|
2381
|
-
var Enum = class {
|
|
2382
|
-
constructor(value2) {
|
|
2383
|
-
this.value = value2;
|
|
2384
|
-
}
|
|
2385
|
-
};
|
|
2386
|
-
|
|
2387
|
-
// src/schema/utils.ts
|
|
2388
2376
|
var document = (definitions) => ({
|
|
2389
2377
|
kind: "Document",
|
|
2390
2378
|
definitions
|
|
@@ -2511,9 +2499,9 @@ var value = (val = null) => val === null ? {
|
|
|
2511
2499
|
} : typeof val === "string" ? {
|
|
2512
2500
|
kind: "StringValue",
|
|
2513
2501
|
value: val
|
|
2514
|
-
} : val instanceof
|
|
2502
|
+
} : val instanceof Symbol ? {
|
|
2515
2503
|
kind: "EnumValue",
|
|
2516
|
-
value: val.
|
|
2504
|
+
value: val.description
|
|
2517
2505
|
} : Array.isArray(val) ? {
|
|
2518
2506
|
kind: "ListValue",
|
|
2519
2507
|
values: val.map(value)
|
|
@@ -2759,7 +2747,6 @@ var printSchemaFromModels = (models) => printSchema((0, import_graphql5.buildAST
|
|
|
2759
2747
|
// Annotate the CommonJS export names for ESM import in node:
|
|
2760
2748
|
0 && (module.exports = {
|
|
2761
2749
|
AliasGenerator,
|
|
2762
|
-
Enum,
|
|
2763
2750
|
ForbiddenError,
|
|
2764
2751
|
GraphQLError,
|
|
2765
2752
|
ID_ALIAS,
|
package/dist/esm/api/execute.js
CHANGED
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
import { makeExecutableSchema } from '@graphql-tools/schema';
|
|
2
2
|
import { Source, execute as graphqlExecute, parse } from 'graphql';
|
|
3
|
+
import { merge } from 'lodash';
|
|
3
4
|
import { generate, get, getResolvers } from '..';
|
|
4
5
|
export const execute = async ({ additionalResolvers, body, ...ctx }) => {
|
|
5
6
|
const document = generate(ctx.rawModels);
|
|
6
7
|
const generatedResolvers = getResolvers(ctx.models);
|
|
7
8
|
const schema = makeExecutableSchema({
|
|
8
9
|
typeDefs: document,
|
|
9
|
-
resolvers:
|
|
10
|
-
...generatedResolvers,
|
|
11
|
-
...additionalResolvers,
|
|
12
|
-
},
|
|
10
|
+
resolvers: merge(generatedResolvers, additionalResolvers),
|
|
13
11
|
});
|
|
14
12
|
const contextValue = {
|
|
15
13
|
document,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../src/api/execute.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,EAAsB,MAAM,EAAE,OAAO,IAAI,cAAc,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACvF,OAAO,EAAW,QAAQ,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAE1D,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,EAAE,EAC5B,mBAAmB,EACnB,IAAI,EACJ,GAAG,GAAG,EAIqB,EAAE,EAAE;IAC/B,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAEzC,MAAM,kBAAkB,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEpD,MAAM,MAAM,GAAG,oBAAoB,CAAC;QAClC,QAAQ,EAAE,QAAQ;QAClB,SAAS,EAAE
|
|
1
|
+
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../src/api/execute.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,EAAsB,MAAM,EAAE,OAAO,IAAI,cAAc,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACvF,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAW,QAAQ,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAE1D,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,EAAE,EAC5B,mBAAmB,EACnB,IAAI,EACJ,GAAG,GAAG,EAIqB,EAAE,EAAE;IAC/B,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAEzC,MAAM,kBAAkB,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEpD,MAAM,MAAM,GAAG,oBAAoB,CAAC;QAClC,QAAQ,EAAE,QAAQ;QAClB,SAAS,EAAE,KAAK,CAAC,kBAAkB,EAAE,mBAAmB,CAAC;KAC1D,CAAC,CAAC;IAEH,MAAM,YAAY,GAAY;QAC5B,QAAQ;QACR,GAAG,GAAG;KACP,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;QAClC,MAAM;QACN,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;QAC1D,YAAY;QACZ,cAAc,EAAE,IAAI,CAAC,SAAS;QAC9B,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,aAAa,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAwB,EAAE,EAAE;YAC/D,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YACrC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACzB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvD,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
|
package/dist/esm/schema/utils.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { DateTime } from 'luxon';
|
|
2
|
-
import { Enum } from '../values';
|
|
3
2
|
export const document = (definitions) => ({
|
|
4
3
|
kind: 'Document',
|
|
5
4
|
definitions,
|
|
@@ -124,10 +123,10 @@ export const value = (val = null) => val === null
|
|
|
124
123
|
kind: 'StringValue',
|
|
125
124
|
value: val,
|
|
126
125
|
}
|
|
127
|
-
: val instanceof
|
|
126
|
+
: val instanceof Symbol
|
|
128
127
|
? {
|
|
129
128
|
kind: 'EnumValue',
|
|
130
|
-
value: val.
|
|
129
|
+
value: val.description,
|
|
131
130
|
}
|
|
132
131
|
: Array.isArray(val)
|
|
133
132
|
? {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/schema/utils.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/schema/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/values.d.ts
CHANGED
package/dist/esm/values.js
CHANGED
package/dist/esm/values.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"values.js","sourceRoot":"","sources":["../../src/values.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"values.js","sourceRoot":"","sources":["../../src/values.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
package/src/api/execute.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { makeExecutableSchema } from '@graphql-tools/schema';
|
|
2
2
|
import { IResolvers } from '@graphql-tools/utils';
|
|
3
3
|
import { GraphQLResolveInfo, Source, execute as graphqlExecute, parse } from 'graphql';
|
|
4
|
+
import { merge } from 'lodash';
|
|
4
5
|
import { Context, generate, get, getResolvers } from '..';
|
|
5
6
|
|
|
6
7
|
export const execute = async ({
|
|
@@ -17,10 +18,7 @@ export const execute = async ({
|
|
|
17
18
|
|
|
18
19
|
const schema = makeExecutableSchema({
|
|
19
20
|
typeDefs: document,
|
|
20
|
-
resolvers:
|
|
21
|
-
...generatedResolvers,
|
|
22
|
-
...additionalResolvers,
|
|
23
|
-
},
|
|
21
|
+
resolvers: merge(generatedResolvers, additionalResolvers),
|
|
24
22
|
});
|
|
25
23
|
|
|
26
24
|
const contextValue: Context = {
|
|
@@ -13,10 +13,10 @@ import {
|
|
|
13
13
|
} from 'ts-morph';
|
|
14
14
|
import { Visitor, visit } from './visitor';
|
|
15
15
|
|
|
16
|
-
export const staticEval = (node: Node, context: Dictionary<unknown>) =>
|
|
17
|
-
visit<unknown, Dictionary<unknown>>(node, context,
|
|
16
|
+
export const staticEval = (node: Node | undefined, context: Dictionary<unknown>) =>
|
|
17
|
+
visit<unknown, Dictionary<unknown>>(node, context, VISITOR);
|
|
18
18
|
|
|
19
|
-
const
|
|
19
|
+
const VISITOR: Visitor<unknown, Dictionary<unknown>> = {
|
|
20
20
|
undefined: () => undefined,
|
|
21
21
|
[SyntaxKind.VariableDeclaration]: (node, context) => staticEval(node.getInitializer(), context),
|
|
22
22
|
[SyntaxKind.ArrayLiteralExpression]: (node, context) => {
|
|
@@ -52,6 +52,8 @@ const visitor: Visitor<unknown, Dictionary<unknown>> = {
|
|
|
52
52
|
return undefined;
|
|
53
53
|
case 'process':
|
|
54
54
|
return process;
|
|
55
|
+
case 'Symbol':
|
|
56
|
+
return Symbol;
|
|
55
57
|
}
|
|
56
58
|
const definitionNodes = node.getDefinitionNodes();
|
|
57
59
|
if (!definitionNodes.length) {
|
|
@@ -68,6 +70,7 @@ const visitor: Visitor<unknown, Dictionary<unknown>> = {
|
|
|
68
70
|
[SyntaxKind.TrueKeyword]: () => true,
|
|
69
71
|
[SyntaxKind.FalseKeyword]: () => false,
|
|
70
72
|
[SyntaxKind.NumericLiteral]: (node) => node.getLiteralValue(),
|
|
73
|
+
[SyntaxKind.BigIntLiteral]: (node) => node.getLiteralValue(),
|
|
71
74
|
[SyntaxKind.CallExpression]: (node, context) => {
|
|
72
75
|
const method = staticEval(node.getExpression(), context) as (...args: unknown[]) => unknown;
|
|
73
76
|
const args = node.getArguments().map((arg) => staticEval(arg, context));
|
|
@@ -200,4 +203,5 @@ const visitor: Visitor<unknown, Dictionary<unknown>> = {
|
|
|
200
203
|
return target[argument];
|
|
201
204
|
},
|
|
202
205
|
[SyntaxKind.NoSubstitutionTemplateLiteral]: (node) => node.getLiteralValue(),
|
|
206
|
+
[SyntaxKind.NullKeyword]: () => null,
|
|
203
207
|
};
|
package/src/bin/gqm/visitor.ts
CHANGED
|
@@ -1,25 +1,33 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ImplementedKindToNodeMappings, Node, SyntaxKind } from 'ts-morph';
|
|
2
2
|
import { get } from '../..';
|
|
3
3
|
|
|
4
4
|
export type Visitor<T, C> = {
|
|
5
5
|
undefined?: () => T;
|
|
6
6
|
unknown?: (node: Node) => T;
|
|
7
7
|
} & {
|
|
8
|
-
[kind in keyof
|
|
8
|
+
[kind in keyof ImplementedKindToNodeMappings]?: (node: ImplementedKindToNodeMappings[kind], context: C) => T;
|
|
9
9
|
};
|
|
10
10
|
|
|
11
11
|
export const visit = <T, C>(node: Node | undefined, context: C, visitor: Visitor<T, C>) => {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
if (!node) {
|
|
13
|
+
if (visitor.undefined) {
|
|
14
|
+
return visitor.undefined();
|
|
15
|
+
}
|
|
16
|
+
console.trace();
|
|
17
|
+
throw new Error(`Cannot handle undefined node.`);
|
|
15
18
|
}
|
|
16
19
|
|
|
17
|
-
|
|
20
|
+
const kind = node.getKind();
|
|
21
|
+
const func = visitor[kind];
|
|
22
|
+
if (func) {
|
|
23
|
+
return func(node, context);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
if (visitor.unknown) {
|
|
18
27
|
return visitor.unknown(node);
|
|
19
28
|
}
|
|
20
29
|
|
|
21
30
|
console.error(node.getText());
|
|
22
|
-
console.error(node.getParent().getText());
|
|
23
31
|
throw new Error(
|
|
24
32
|
`Cannot handle kind ${get(
|
|
25
33
|
Object.entries(SyntaxKind).find(([, val]) => val === kind),
|
package/src/schema/utils.ts
CHANGED
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
ValueNode,
|
|
23
23
|
} from 'graphql';
|
|
24
24
|
import { DateTime } from 'luxon';
|
|
25
|
-
import { Directive,
|
|
25
|
+
import { Directive, Value, Values } from '../values';
|
|
26
26
|
|
|
27
27
|
export type Field = {
|
|
28
28
|
name: string;
|
|
@@ -206,10 +206,10 @@ export const value = (val: Value = null): ValueNode =>
|
|
|
206
206
|
kind: 'StringValue',
|
|
207
207
|
value: val,
|
|
208
208
|
}
|
|
209
|
-
: val instanceof
|
|
209
|
+
: val instanceof Symbol
|
|
210
210
|
? {
|
|
211
211
|
kind: 'EnumValue',
|
|
212
|
-
value: val.
|
|
212
|
+
value: val.description,
|
|
213
213
|
}
|
|
214
214
|
: Array.isArray(val)
|
|
215
215
|
? {
|
package/src/values.ts
CHANGED
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
import { DateTime } from 'luxon';
|
|
2
2
|
|
|
3
|
-
export class Enum {
|
|
4
|
-
constructor(public value: string) {}
|
|
5
|
-
}
|
|
6
|
-
|
|
7
3
|
export type BasicValue = undefined | null | boolean | string | number | DateTime;
|
|
8
4
|
|
|
9
|
-
export type Value = any; // BasicValue |
|
|
5
|
+
export type Value = any; // BasicValue | Symbol | Symbol[] | Record<string, Value> | Value[];
|
|
10
6
|
|
|
11
7
|
export type Values = {
|
|
12
8
|
name: string;
|