@smartive/graphql-magic 8.1.3 → 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 +23 -21
- package/dist/cjs/index.cjs +2 -13
- 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/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
|
-
* Merge resolvers ([#59](https://github.com/smartive/graphql-magic/issues/59)) ([6d0f0c1](https://github.com/smartive/graphql-magic/commit/6d0f0c1228eff0da992435b7aa6e7cf00d0c283f))
|
|
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
|
@@ -893,15 +893,6 @@ var import_flatMap2 = __toESM(require("lodash/flatMap"), 1);
|
|
|
893
893
|
|
|
894
894
|
// src/schema/utils.ts
|
|
895
895
|
var import_luxon = require("luxon");
|
|
896
|
-
|
|
897
|
-
// src/values.ts
|
|
898
|
-
var Enum = class {
|
|
899
|
-
constructor(value2) {
|
|
900
|
-
this.value = value2;
|
|
901
|
-
}
|
|
902
|
-
};
|
|
903
|
-
|
|
904
|
-
// src/schema/utils.ts
|
|
905
896
|
var document = (definitions) => ({
|
|
906
897
|
kind: "Document",
|
|
907
898
|
definitions
|
|
@@ -1007,9 +998,9 @@ var value = (val = null) => val === null ? {
|
|
|
1007
998
|
} : typeof val === "string" ? {
|
|
1008
999
|
kind: "StringValue",
|
|
1009
1000
|
value: val
|
|
1010
|
-
} : val instanceof
|
|
1001
|
+
} : val instanceof Symbol ? {
|
|
1011
1002
|
kind: "EnumValue",
|
|
1012
|
-
value: val.
|
|
1003
|
+
value: val.description
|
|
1013
1004
|
} : Array.isArray(val) ? {
|
|
1014
1005
|
kind: "ListValue",
|
|
1015
1006
|
values: val.map(value)
|
|
@@ -1485,16 +1476,23 @@ var import_ts_morph2 = require("ts-morph");
|
|
|
1485
1476
|
|
|
1486
1477
|
// src/bin/gqm/visitor.ts
|
|
1487
1478
|
var import_ts_morph = require("ts-morph");
|
|
1488
|
-
var visit = (node, context,
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
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);
|
|
1492
1491
|
}
|
|
1493
|
-
if (
|
|
1494
|
-
return
|
|
1492
|
+
if (visitor.unknown) {
|
|
1493
|
+
return visitor.unknown(node);
|
|
1495
1494
|
}
|
|
1496
1495
|
console.error(node.getText());
|
|
1497
|
-
console.error(node.getParent().getText());
|
|
1498
1496
|
throw new Error(
|
|
1499
1497
|
`Cannot handle kind ${get(
|
|
1500
1498
|
Object.entries(import_ts_morph.SyntaxKind).find(([, val]) => val === kind),
|
|
@@ -1504,8 +1502,8 @@ var visit = (node, context, visitor2) => {
|
|
|
1504
1502
|
};
|
|
1505
1503
|
|
|
1506
1504
|
// src/bin/gqm/static-eval.ts
|
|
1507
|
-
var staticEval = (node, context) => visit(node, context,
|
|
1508
|
-
var
|
|
1505
|
+
var staticEval = (node, context) => visit(node, context, VISITOR);
|
|
1506
|
+
var VISITOR = {
|
|
1509
1507
|
undefined: () => void 0,
|
|
1510
1508
|
[import_ts_morph2.SyntaxKind.VariableDeclaration]: (node, context) => staticEval(node.getInitializer(), context),
|
|
1511
1509
|
[import_ts_morph2.SyntaxKind.ArrayLiteralExpression]: (node, context) => {
|
|
@@ -1541,6 +1539,8 @@ var visitor = {
|
|
|
1541
1539
|
return void 0;
|
|
1542
1540
|
case "process":
|
|
1543
1541
|
return process;
|
|
1542
|
+
case "Symbol":
|
|
1543
|
+
return Symbol;
|
|
1544
1544
|
}
|
|
1545
1545
|
const definitionNodes = node.getDefinitionNodes();
|
|
1546
1546
|
if (!definitionNodes.length) {
|
|
@@ -1554,6 +1554,7 @@ var visitor = {
|
|
|
1554
1554
|
[import_ts_morph2.SyntaxKind.TrueKeyword]: () => true,
|
|
1555
1555
|
[import_ts_morph2.SyntaxKind.FalseKeyword]: () => false,
|
|
1556
1556
|
[import_ts_morph2.SyntaxKind.NumericLiteral]: (node) => node.getLiteralValue(),
|
|
1557
|
+
[import_ts_morph2.SyntaxKind.BigIntLiteral]: (node) => node.getLiteralValue(),
|
|
1557
1558
|
[import_ts_morph2.SyntaxKind.CallExpression]: (node, context) => {
|
|
1558
1559
|
const method = staticEval(node.getExpression(), context);
|
|
1559
1560
|
const args2 = node.getArguments().map((arg) => staticEval(arg, context));
|
|
@@ -1679,7 +1680,8 @@ var visitor = {
|
|
|
1679
1680
|
const argument = staticEval(node.getArgumentExpression(), context);
|
|
1680
1681
|
return target[argument];
|
|
1681
1682
|
},
|
|
1682
|
-
[import_ts_morph2.SyntaxKind.NoSubstitutionTemplateLiteral]: (node) => node.getLiteralValue()
|
|
1683
|
+
[import_ts_morph2.SyntaxKind.NoSubstitutionTemplateLiteral]: (node) => node.getLiteralValue(),
|
|
1684
|
+
[import_ts_morph2.SyntaxKind.NullKeyword]: () => null
|
|
1683
1685
|
};
|
|
1684
1686
|
|
|
1685
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,
|
|
@@ -2374,15 +2373,6 @@ var import_flatMap2 = __toESM(require("lodash/flatMap"), 1);
|
|
|
2374
2373
|
|
|
2375
2374
|
// src/schema/utils.ts
|
|
2376
2375
|
var import_luxon = require("luxon");
|
|
2377
|
-
|
|
2378
|
-
// src/values.ts
|
|
2379
|
-
var Enum = class {
|
|
2380
|
-
constructor(value2) {
|
|
2381
|
-
this.value = value2;
|
|
2382
|
-
}
|
|
2383
|
-
};
|
|
2384
|
-
|
|
2385
|
-
// src/schema/utils.ts
|
|
2386
2376
|
var document = (definitions) => ({
|
|
2387
2377
|
kind: "Document",
|
|
2388
2378
|
definitions
|
|
@@ -2509,9 +2499,9 @@ var value = (val = null) => val === null ? {
|
|
|
2509
2499
|
} : typeof val === "string" ? {
|
|
2510
2500
|
kind: "StringValue",
|
|
2511
2501
|
value: val
|
|
2512
|
-
} : val instanceof
|
|
2502
|
+
} : val instanceof Symbol ? {
|
|
2513
2503
|
kind: "EnumValue",
|
|
2514
|
-
value: val.
|
|
2504
|
+
value: val.description
|
|
2515
2505
|
} : Array.isArray(val) ? {
|
|
2516
2506
|
kind: "ListValue",
|
|
2517
2507
|
values: val.map(value)
|
|
@@ -2757,7 +2747,6 @@ var printSchemaFromModels = (models) => printSchema((0, import_graphql5.buildAST
|
|
|
2757
2747
|
// Annotate the CommonJS export names for ESM import in node:
|
|
2758
2748
|
0 && (module.exports = {
|
|
2759
2749
|
AliasGenerator,
|
|
2760
|
-
Enum,
|
|
2761
2750
|
ForbiddenError,
|
|
2762
2751
|
GraphQLError,
|
|
2763
2752
|
ID_ALIAS,
|
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
|
@@ -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;
|