@gqlbase/plugins 0.0.5 → 0.0.7

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.
Files changed (86) hide show
  1. package/README.md +25 -0
  2. package/dist/base/InterfaceUtilsPlugin/InterfaceUtilsPlugin.d.ts +55 -0
  3. package/dist/base/InterfaceUtilsPlugin/InterfaceUtilsPlugin.d.ts.map +1 -0
  4. package/dist/base/InterfaceUtilsPlugin/InterfaceUtilsPlugin.js +100 -0
  5. package/dist/base/InterfaceUtilsPlugin/InterfaceUtilsPlugin.js.map +1 -0
  6. package/dist/base/InterfaceUtilsPlugin/InterfaceUtilsPlugin.utils.d.ts +3 -0
  7. package/dist/base/InterfaceUtilsPlugin/InterfaceUtilsPlugin.utils.d.ts.map +1 -0
  8. package/dist/base/InterfaceUtilsPlugin/InterfaceUtilsPlugin.utils.js +4 -0
  9. package/dist/base/InterfaceUtilsPlugin/InterfaceUtilsPlugin.utils.js.map +1 -0
  10. package/dist/base/InterfaceUtilsPlugin/index.d.ts +3 -0
  11. package/dist/base/InterfaceUtilsPlugin/index.d.ts.map +1 -0
  12. package/dist/base/InterfaceUtilsPlugin/index.js +3 -0
  13. package/dist/base/InterfaceUtilsPlugin/index.js.map +1 -0
  14. package/dist/base/ModelTypesGeneratorPlugin/ModelTypesGeneratorPlugin.d.ts +9 -3
  15. package/dist/base/ModelTypesGeneratorPlugin/ModelTypesGeneratorPlugin.d.ts.map +1 -1
  16. package/dist/base/ModelTypesGeneratorPlugin/ModelTypesGeneratorPlugin.js +26 -16
  17. package/dist/base/ModelTypesGeneratorPlugin/ModelTypesGeneratorPlugin.js.map +1 -1
  18. package/dist/base/ModelTypesGeneratorPlugin/ModelTypesGeneratorPlugin.utils.d.ts +19 -9
  19. package/dist/base/ModelTypesGeneratorPlugin/ModelTypesGeneratorPlugin.utils.d.ts.map +1 -1
  20. package/dist/base/ModelTypesGeneratorPlugin/ModelTypesGeneratorPlugin.utils.js +11 -11
  21. package/dist/base/ModelTypesGeneratorPlugin/ModelTypesGeneratorPlugin.utils.js.map +1 -1
  22. package/dist/base/RelationsPlugin/RelationsPlugin.d.ts +13 -8
  23. package/dist/base/RelationsPlugin/RelationsPlugin.d.ts.map +1 -1
  24. package/dist/base/RelationsPlugin/RelationsPlugin.js +30 -46
  25. package/dist/base/RelationsPlugin/RelationsPlugin.js.map +1 -1
  26. package/dist/base/RelationsPlugin/RelationsPlugin.utils.d.ts +5 -3
  27. package/dist/base/RelationsPlugin/RelationsPlugin.utils.d.ts.map +1 -1
  28. package/dist/base/RelationsPlugin/RelationsPlugin.utils.js +26 -1
  29. package/dist/base/RelationsPlugin/RelationsPlugin.utils.js.map +1 -1
  30. package/dist/base/RelationsPlugin/index.d.ts +1 -1
  31. package/dist/base/RelationsPlugin/index.d.ts.map +1 -1
  32. package/dist/base/RelationsPlugin/index.js +1 -1
  33. package/dist/base/RelationsPlugin/index.js.map +1 -1
  34. package/dist/base/RfcFeaturesPlugin/RfcFeaturesPlugin.d.ts +28 -0
  35. package/dist/base/RfcFeaturesPlugin/RfcFeaturesPlugin.d.ts.map +1 -0
  36. package/dist/base/RfcFeaturesPlugin/RfcFeaturesPlugin.js +33 -0
  37. package/dist/base/RfcFeaturesPlugin/RfcFeaturesPlugin.js.map +1 -0
  38. package/dist/base/RfcFeaturesPlugin/RfcFeaturesPlugin.utils.d.ts +14 -0
  39. package/dist/base/RfcFeaturesPlugin/RfcFeaturesPlugin.utils.d.ts.map +1 -0
  40. package/dist/base/RfcFeaturesPlugin/RfcFeaturesPlugin.utils.js +39 -0
  41. package/dist/base/RfcFeaturesPlugin/RfcFeaturesPlugin.utils.js.map +1 -0
  42. package/dist/base/RfcFeaturesPlugin/index.d.ts +3 -0
  43. package/dist/base/RfcFeaturesPlugin/index.d.ts.map +1 -0
  44. package/dist/base/RfcFeaturesPlugin/index.js +3 -0
  45. package/dist/base/RfcFeaturesPlugin/index.js.map +1 -0
  46. package/dist/base/basePreset.d.ts +2 -0
  47. package/dist/base/basePreset.d.ts.map +1 -1
  48. package/dist/base/basePreset.js +6 -0
  49. package/dist/base/basePreset.js.map +1 -1
  50. package/dist/base/index.d.ts +2 -0
  51. package/dist/base/index.d.ts.map +1 -1
  52. package/dist/base/index.js +2 -0
  53. package/dist/base/index.js.map +1 -1
  54. package/dist/relay/ConnectionPlugin/ConnectionPlugin.d.ts +63 -0
  55. package/dist/relay/ConnectionPlugin/ConnectionPlugin.d.ts.map +1 -0
  56. package/dist/relay/ConnectionPlugin/ConnectionPlugin.js +156 -0
  57. package/dist/relay/ConnectionPlugin/ConnectionPlugin.js.map +1 -0
  58. package/dist/relay/ConnectionPlugin/ConnectionPlugin.utils.d.ts +4 -0
  59. package/dist/relay/ConnectionPlugin/ConnectionPlugin.utils.d.ts.map +1 -0
  60. package/dist/relay/ConnectionPlugin/ConnectionPlugin.utils.js +26 -0
  61. package/dist/relay/ConnectionPlugin/ConnectionPlugin.utils.js.map +1 -0
  62. package/dist/relay/ConnectionPlugin/index.d.ts +3 -0
  63. package/dist/relay/ConnectionPlugin/index.d.ts.map +1 -0
  64. package/dist/relay/ConnectionPlugin/index.js +3 -0
  65. package/dist/relay/ConnectionPlugin/index.js.map +1 -0
  66. package/dist/relay/{NodeInterfacePlugin.d.ts → NodeInterfacePlugin/NodeInterfacePlugin.d.ts} +30 -6
  67. package/dist/relay/NodeInterfacePlugin/NodeInterfacePlugin.d.ts.map +1 -0
  68. package/dist/relay/{NodeInterfacePlugin.js → NodeInterfacePlugin/NodeInterfacePlugin.js} +37 -27
  69. package/dist/relay/NodeInterfacePlugin/NodeInterfacePlugin.js.map +1 -0
  70. package/dist/relay/NodeInterfacePlugin/index.d.ts +2 -0
  71. package/dist/relay/NodeInterfacePlugin/index.d.ts.map +1 -0
  72. package/dist/relay/NodeInterfacePlugin/index.js +2 -0
  73. package/dist/relay/NodeInterfacePlugin/index.js.map +1 -0
  74. package/dist/relay/index.d.ts +3 -2
  75. package/dist/relay/index.d.ts.map +1 -1
  76. package/dist/relay/index.js +3 -2
  77. package/dist/relay/index.js.map +1 -1
  78. package/dist/relay/relayPreset.js +2 -2
  79. package/dist/relay/relayPreset.js.map +1 -1
  80. package/package.json +3 -3
  81. package/dist/relay/ConnectionPlugin.d.ts +0 -46
  82. package/dist/relay/ConnectionPlugin.d.ts.map +0 -1
  83. package/dist/relay/ConnectionPlugin.js +0 -200
  84. package/dist/relay/ConnectionPlugin.js.map +0 -1
  85. package/dist/relay/NodeInterfacePlugin.d.ts.map +0 -1
  86. package/dist/relay/NodeInterfacePlugin.js.map +0 -1
package/README.md ADDED
@@ -0,0 +1,25 @@
1
+ # @gqlbase/plugins
2
+
3
+ Built-in plugins and presets for gqlbase.
4
+
5
+ This is an internal package. Install the main [`gqlbase`](https://www.npmjs.com/package/gqlbase) package instead.
6
+
7
+ ## What this package provides
8
+
9
+ **Base preset** (`gqlbase/plugins/base`):
10
+
11
+ - `ScalarsPlugin` — registers built-in scalar types
12
+ - `UtilitiesPlugin` — processes visibility and scope directives
13
+ - `ModelPlugin` — generates CRUD operations from `@model` types
14
+ - `RelationsPlugin` — resolves `@hasOne` and `@hasMany` relations
15
+ - `SchemaGeneratorPlugin` — outputs the transformed schema
16
+ - `ModelTypesGeneratorPlugin` — outputs TypeScript type definitions
17
+
18
+ **Relay preset** (`gqlbase/plugins/relay`):
19
+
20
+ - `NodeInterfacePlugin` — adds the Relay `Node` interface
21
+ - `ConnectionPlugin` — generates connection and edge types
22
+
23
+ ## License
24
+
25
+ MIT
@@ -0,0 +1,55 @@
1
+ import { ITransformerContext, TransformerPluginBase } from "@gqlbase/core";
2
+ import { DefinitionNode, InterfaceNode, ObjectNode } from "@gqlbase/core/definition";
3
+ /**
4
+ * Normalizes interface implementation by other interfaces and objects, makeing sure that all fields defined in an interface are implemented by its implementors, and that interfaces can implement other interfaces:
5
+ *
6
+ * - When an object or interface implements another interface, it must implement all fields defined in the implemented interface.
7
+ * - "Transitively implemented interfaces (interfaces implemented by the interface that is being implemented) must also be defined on an implementing type or interface."
8
+ *
9
+ * @see https://spec.graphql.org/September2025/#sec-Interfaces
10
+ *
11
+ * @example
12
+ * ```graphql
13
+ * # Before
14
+ * interface Node {
15
+ * id: ID!
16
+ * }
17
+ *
18
+ * interface Timestamped {
19
+ * createdAt: DateTime!
20
+ * updatedAt: DateTime!
21
+ * }
22
+ *
23
+ * interface User implements Node & Timestamped {
24
+ * id: ID!
25
+ * name: String!
26
+ * }
27
+ *
28
+ * # After
29
+ * interface Node {
30
+ * id: ID!
31
+ * }
32
+ *
33
+ * interface Timestamped {
34
+ * createdAt: DateTime!
35
+ * updatedAt: DateTime!
36
+ * }
37
+ *
38
+ * interface User implements Node & Timestamped {
39
+ * id: ID!
40
+ * name: String!
41
+ * createdAt: DateTime! # added by the plugin
42
+ * updatedAt: DateTime! # added by the plugin
43
+ * }
44
+ * ```
45
+ */
46
+ export declare class InterfaceUtilsPlugin extends TransformerPluginBase {
47
+ constructor(context: ITransformerContext);
48
+ private _getValidInterface;
49
+ private _normalizeTransitiveInterfaces;
50
+ private _normalizeInterfaceFields;
51
+ match(definition: DefinitionNode): definition is InterfaceNode | ObjectNode;
52
+ normalize(node: InterfaceNode | ObjectNode): void;
53
+ }
54
+ export declare const interfaceUtilsPlugin: (options?: unknown) => import("@gqlbase/core").IPluginFactory;
55
+ //# sourceMappingURL=InterfaceUtilsPlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InterfaceUtilsPlugin.d.ts","sourceRoot":"","sources":["../../../src/base/InterfaceUtilsPlugin/InterfaceUtilsPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAChG,OAAO,EACL,cAAc,EAEd,aAAa,EAEb,UAAU,EACX,MAAM,0BAA0B,CAAC;AAIlC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,qBAAa,oBAAqB,SAAQ,qBAAqB;gBACjD,OAAO,EAAE,mBAAmB;IAIxC,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,8BAA8B;IAgBtC,OAAO,CAAC,yBAAyB;IAwB1B,KAAK,CAAC,UAAU,EAAE,cAAc;IAIhC,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,UAAU;CAQlD;AAED,eAAO,MAAM,oBAAoB,+DAA4C,CAAC"}
@@ -0,0 +1,100 @@
1
+ import { createPluginFactory, TransformerPluginBase } from "@gqlbase/core";
2
+ import { FieldNode, InterfaceNode, NamedTypeNode, ObjectNode, } from "@gqlbase/core/definition";
3
+ import { hasInterfaces } from "./InterfaceUtilsPlugin.utils.js";
4
+ import { TransformerPluginExecutionError } from "@gqlbase/shared/errors";
5
+ /**
6
+ * Normalizes interface implementation by other interfaces and objects, makeing sure that all fields defined in an interface are implemented by its implementors, and that interfaces can implement other interfaces:
7
+ *
8
+ * - When an object or interface implements another interface, it must implement all fields defined in the implemented interface.
9
+ * - "Transitively implemented interfaces (interfaces implemented by the interface that is being implemented) must also be defined on an implementing type or interface."
10
+ *
11
+ * @see https://spec.graphql.org/September2025/#sec-Interfaces
12
+ *
13
+ * @example
14
+ * ```graphql
15
+ * # Before
16
+ * interface Node {
17
+ * id: ID!
18
+ * }
19
+ *
20
+ * interface Timestamped {
21
+ * createdAt: DateTime!
22
+ * updatedAt: DateTime!
23
+ * }
24
+ *
25
+ * interface User implements Node & Timestamped {
26
+ * id: ID!
27
+ * name: String!
28
+ * }
29
+ *
30
+ * # After
31
+ * interface Node {
32
+ * id: ID!
33
+ * }
34
+ *
35
+ * interface Timestamped {
36
+ * createdAt: DateTime!
37
+ * updatedAt: DateTime!
38
+ * }
39
+ *
40
+ * interface User implements Node & Timestamped {
41
+ * id: ID!
42
+ * name: String!
43
+ * createdAt: DateTime! # added by the plugin
44
+ * updatedAt: DateTime! # added by the plugin
45
+ * }
46
+ * ```
47
+ */
48
+ export class InterfaceUtilsPlugin extends TransformerPluginBase {
49
+ constructor(context) {
50
+ super("InterfaceUtilsPlugin", context);
51
+ }
52
+ _getValidInterface(name) {
53
+ const iface = this.context.document.getNodeOrThrow(name);
54
+ if (!(iface instanceof InterfaceNode)) {
55
+ throw new TransformerPluginExecutionError(this.name, `Node ${name} is not an interface but is implemented by ${name}`);
56
+ }
57
+ return iface;
58
+ }
59
+ _normalizeTransitiveInterfaces(node) {
60
+ for (const ifaceName of node.getInterfaces()) {
61
+ const iface = this._getValidInterface(ifaceName.getTypeName());
62
+ if (!hasInterfaces(iface)) {
63
+ continue;
64
+ }
65
+ for (const transitiveIfaceName of iface.getInterfaces()) {
66
+ if (!node.hasInterface(transitiveIfaceName.getTypeName())) {
67
+ node.addInterface(transitiveIfaceName);
68
+ }
69
+ }
70
+ }
71
+ }
72
+ _normalizeInterfaceFields(node) {
73
+ for (const ifaceName of node.getInterfaces()) {
74
+ const iface = this._getValidInterface(ifaceName.getTypeName());
75
+ for (const field of iface.getFields()) {
76
+ if (node.hasField(field.name)) {
77
+ const nodeField = node.getField(field.name);
78
+ if (nodeField?.type.getTypeName() !== field.type.getTypeName()) {
79
+ this.context.logger.warn(`Field ${field.name} on ${node.name} has type ${nodeField?.type.getTypeName()} but should be ${field.type.getTypeName()} as defined in interface ${iface.name}`);
80
+ nodeField?.setType(NamedTypeNode.create(field.type.getTypeName()));
81
+ }
82
+ continue;
83
+ }
84
+ node.addField(FieldNode.fromDefinition(field.serialize()));
85
+ }
86
+ }
87
+ }
88
+ match(definition) {
89
+ return definition instanceof InterfaceNode || definition instanceof ObjectNode;
90
+ }
91
+ normalize(node) {
92
+ if (!hasInterfaces(node)) {
93
+ return;
94
+ }
95
+ this._normalizeTransitiveInterfaces(node);
96
+ this._normalizeInterfaceFields(node);
97
+ }
98
+ }
99
+ export const interfaceUtilsPlugin = createPluginFactory(InterfaceUtilsPlugin);
100
+ //# sourceMappingURL=InterfaceUtilsPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InterfaceUtilsPlugin.js","sourceRoot":"","sources":["../../../src/base/InterfaceUtilsPlugin/InterfaceUtilsPlugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { InterfaceNode, ObjectNode } from "@gqlbase/core/definition";
2
+ export declare const hasInterfaces: (node: ObjectNode | InterfaceNode) => boolean;
3
+ //# sourceMappingURL=InterfaceUtilsPlugin.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InterfaceUtilsPlugin.utils.d.ts","sourceRoot":"","sources":["../../../src/base/InterfaceUtilsPlugin/InterfaceUtilsPlugin.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAErE,eAAO,MAAM,aAAa,GAAI,MAAM,UAAU,GAAG,aAAa,KAAG,OAEhE,CAAC"}
@@ -0,0 +1,4 @@
1
+ export const hasInterfaces = (node) => {
2
+ return Array.isArray(node.interfaces) && node.interfaces.length > 0;
3
+ };
4
+ //# sourceMappingURL=InterfaceUtilsPlugin.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InterfaceUtilsPlugin.utils.js","sourceRoot":"","sources":["../../../src/base/InterfaceUtilsPlugin/InterfaceUtilsPlugin.utils.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAgC,EAAW,EAAE;IACzE,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;AACtE,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { InterfaceUtilsPlugin, interfaceUtilsPlugin } from "./InterfaceUtilsPlugin.js";
2
+ export { hasInterfaces } from "./InterfaceUtilsPlugin.utils.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/base/InterfaceUtilsPlugin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { InterfaceUtilsPlugin, interfaceUtilsPlugin } from "./InterfaceUtilsPlugin.js";
2
+ export { hasInterfaces } from "./InterfaceUtilsPlugin.utils.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/base/InterfaceUtilsPlugin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC"}
@@ -1,11 +1,13 @@
1
1
  import { ITransformerContext, TransformerPluginBase } from "@gqlbase/core";
2
2
  import { DefinitionNode } from "@gqlbase/core/definition";
3
+ import { ModelTypesGeneratorPluginOptions } from "./ModelTypesGeneratorPlugin.utils.js";
3
4
  /**
4
5
  * This plugin generates TypeScript types for all objects defined in the schema.
5
6
  */
6
7
  export declare class ModelTypesGeneratorPlugin extends TransformerPluginBase {
7
8
  private nodes;
8
- constructor(context: ITransformerContext);
9
+ private options;
10
+ constructor(context: ITransformerContext, options?: ModelTypesGeneratorPluginOptions);
9
11
  private _getContent;
10
12
  private _createTypeNameIdentifier;
11
13
  private _createValueTypeReference;
@@ -17,7 +19,11 @@ export declare class ModelTypesGeneratorPlugin extends TransformerPluginBase {
17
19
  before(): void;
18
20
  match(definition: DefinitionNode): boolean;
19
21
  generate(definition: DefinitionNode): void;
20
- output(): {};
22
+ output(): {
23
+ modelTypes: string;
24
+ } | {
25
+ modelTypes?: undefined;
26
+ };
21
27
  }
22
- export declare const modelTypesGeneratorPlugin: (options?: unknown) => import("@gqlbase/core").IPluginFactory;
28
+ export declare const modelTypesGeneratorPlugin: (options?: ModelTypesGeneratorPluginOptions | undefined) => import("@gqlbase/core").IPluginFactory;
23
29
  //# sourceMappingURL=ModelTypesGeneratorPlugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ModelTypesGeneratorPlugin.d.ts","sourceRoot":"","sources":["../../../src/base/ModelTypesGeneratorPlugin/ModelTypesGeneratorPlugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAuB,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAGhG,OAAO,EACL,cAAc,EAQf,MAAM,0BAA0B,CAAC;AAWlC;;GAEG;AAEH,qBAAa,yBAA0B,SAAQ,qBAAqB;IAClE,OAAO,CAAC,KAAK,CAAiB;gBAElB,OAAO,EAAE,mBAAmB;IAIxC,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,yBAAyB;IAkCjC,OAAO,CAAC,yBAAyB;IAajC,OAAO,CAAC,mBAAmB;IAoC3B,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,oBAAoB;IAc5B,OAAO,CAAC,eAAe;IAsBvB,OAAO,CAAC,gBAAgB;IAsBjB,MAAM;IAkBN,KAAK,CAAC,UAAU,EAAE,cAAc,GAAG,OAAO;IAQ1C,QAAQ,CAAC,UAAU,EAAE,cAAc;IAkBnC,MAAM;CAMd;AAED,eAAO,MAAM,yBAAyB,+DAAiD,CAAC"}
1
+ {"version":3,"file":"ModelTypesGeneratorPlugin.d.ts","sourceRoot":"","sources":["../../../src/base/ModelTypesGeneratorPlugin/ModelTypesGeneratorPlugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAuB,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAGhG,OAAO,EACL,cAAc,EASf,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAIL,gCAAgC,EACjC,MAAM,sCAAsC,CAAC;AAO9C;;GAEG;AAEH,qBAAa,yBAA0B,SAAQ,qBAAqB;IAClE,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,OAAO,CAA6C;gBAEhD,OAAO,EAAE,mBAAmB,EAAE,OAAO,GAAE,gCAAqC;IAMxF,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,yBAAyB;IAkCjC,OAAO,CAAC,yBAAyB;IAuBjC,OAAO,CAAC,mBAAmB;IAmC3B,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,oBAAoB;IAc5B,OAAO,CAAC,eAAe;IAsBvB,OAAO,CAAC,gBAAgB;IAsBjB,MAAM;IAkBN,KAAK,CAAC,UAAU,EAAE,cAAc,GAAG,OAAO;IAQ1C,QAAQ,CAAC,UAAU,EAAE,cAAc;IAkBnC,MAAM;;;;;CASd;AAED,eAAO,MAAM,yBAAyB,oGAAiD,CAAC"}
@@ -3,21 +3,24 @@ import { createPluginFactory, TransformerPluginBase } from "@gqlbase/core";
3
3
  import { writeOutputFile } from "@gqlbase/shared/files";
4
4
  import { createFileHeaders } from "@gqlbase/shared/codegen";
5
5
  import { EnumNode, InterfaceNode, ListTypeNode, NonNullTypeNode, ObjectNode, UnionNode, } from "@gqlbase/core/definition";
6
- import { getBuildinScalarTypeKeyword, isNonNullableField, isOperationNode, } from "./ModelTypesGeneratorPlugin.utils.js";
6
+ import { getBuildinScalarTypeKeyword, isOperationNode, mergeOptions, } from "./ModelTypesGeneratorPlugin.utils.js";
7
7
  import { isEnum, isObjectLike, isScalar } from "../ModelPlugin/ModelPlugin.utils.js";
8
8
  import { isRelationField } from "../RelationsPlugin/RelationsPlugin.utils.js";
9
9
  import { isBuildInScalar } from "@gqlbase/shared/definition";
10
10
  import { getTypeHint, isInternal } from "@gqlbase/core/plugins";
11
+ import { isSemanticNullable } from "../RfcFeaturesPlugin/RfcFeaturesPlugin.utils.js";
11
12
  /**
12
13
  * This plugin generates TypeScript types for all objects defined in the schema.
13
14
  */
14
15
  export class ModelTypesGeneratorPlugin extends TransformerPluginBase {
15
16
  nodes = [];
16
- constructor(context) {
17
+ options;
18
+ constructor(context, options = {}) {
17
19
  super("ModelTypesGeneratorPlugin", context);
20
+ this.options = mergeOptions(options);
18
21
  }
19
22
  _getContent() {
20
- const file = ts.createSourceFile("models.typegen.ts",
23
+ const file = ts.createSourceFile(this.options.fileName,
21
24
  /*sourceText*/ "", ts.ScriptTarget.Latest,
22
25
  /*setParentNodes*/ false, ts.ScriptKind.TS);
23
26
  const printer = ts.createPrinter({
@@ -53,15 +56,21 @@ export class ModelTypesGeneratorPlugin extends TransformerPluginBase {
53
56
  }
54
57
  return ts.factory.createIdentifier(typeName);
55
58
  }
56
- _createValueTypeReference(fieldType) {
59
+ _createValueTypeReference(field, fieldType, level = 0) {
57
60
  if (fieldType instanceof NonNullTypeNode) {
58
- return this._createValueTypeReference(fieldType.type);
61
+ return this._createValueTypeReference(field, fieldType.type, level);
59
62
  }
60
63
  if (fieldType instanceof ListTypeNode) {
61
- const elementType = this._createValueTypeReference(fieldType.type);
62
- return ts.factory.createArrayTypeNode(elementType);
64
+ const elementType = this._createValueTypeReference(field, fieldType.type, level + 1);
65
+ const arrayType = ts.factory.createArrayTypeNode(elementType);
66
+ return isSemanticNullable(field, level)
67
+ ? ts.factory.createTypeReferenceNode("Maybe", [arrayType])
68
+ : arrayType;
63
69
  }
64
- return ts.factory.createTypeReferenceNode(this._createTypeNameIdentifier(fieldType.name));
70
+ const baseType = ts.factory.createTypeReferenceNode(this._createTypeNameIdentifier(fieldType.name));
71
+ return isSemanticNullable(field, level)
72
+ ? ts.factory.createTypeReferenceNode("Maybe", [baseType])
73
+ : baseType;
65
74
  }
66
75
  _createFieldMembers(definition) {
67
76
  const members = [];
@@ -69,13 +78,12 @@ export class ModelTypesGeneratorPlugin extends TransformerPluginBase {
69
78
  if (isRelationField(field)) {
70
79
  continue;
71
80
  }
72
- const questionToken = isNonNullableField(field)
73
- ? undefined
74
- : ts.factory.createToken(ts.SyntaxKind.QuestionToken);
75
- const typeNode = isNonNullableField(field)
76
- ? this._createValueTypeReference(field.type)
77
- : ts.factory.createTypeReferenceNode("Maybe", [this._createValueTypeReference(field.type)]);
81
+ const questionToken = isSemanticNullable(field)
82
+ ? ts.factory.createToken(ts.SyntaxKind.QuestionToken)
83
+ : undefined;
84
+ const typeNode = this._createValueTypeReference(field, field.type);
78
85
  const propertySignature = ts.factory.createPropertySignature([ts.factory.createModifier(ts.SyntaxKind.ReadonlyKeyword)], ts.factory.createIdentifier(field.name), questionToken, typeNode);
86
+ // TODO: consider adding JSDoc comments with field descriptions and deprecation notices
79
87
  // ts.addSyntheticLeadingComment(
80
88
  // propertySignature,
81
89
  // ts.SyntaxKind.MultiLineCommentTrivia,
@@ -153,8 +161,10 @@ export class ModelTypesGeneratorPlugin extends TransformerPluginBase {
153
161
  }
154
162
  output() {
155
163
  const content = this._getContent();
156
- writeOutputFile(this.context.outputDirectory, "models.typegen.ts", content);
157
- return {};
164
+ if (this.options.emitFile) {
165
+ writeOutputFile(this.context.outputDirectory, this.options.fileName, content);
166
+ }
167
+ return this.options.emitOutput ? { modelTypes: content } : {};
158
168
  }
159
169
  }
160
170
  export const modelTypesGeneratorPlugin = createPluginFactory(ModelTypesGeneratorPlugin);
@@ -1 +1 @@
1
- {"version":3,"file":"ModelTypesGeneratorPlugin.js","sourceRoot":"","sources":["../../../src/base/ModelTypesGeneratorPlugin/ModelTypesGeneratorPlugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ModelTypesGeneratorPlugin.js","sourceRoot":"","sources":["../../../src/base/ModelTypesGeneratorPlugin/ModelTypesGeneratorPlugin.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,22 @@
1
- import { DefinitionNode, FieldNode, InputValueNode } from "@gqlbase/core/definition";
1
+ import { DefinitionNode } from "@gqlbase/core/definition";
2
+ export interface ModelTypesGeneratorPluginOptions {
3
+ /** If true, the plugin will not emit any files.
4
+ * @default true
5
+ */
6
+ emitFile?: boolean;
7
+ /**
8
+ * The output file name for the generated types.
9
+ * @default "models.typegen.ts"
10
+ */
11
+ fileName?: string;
12
+ /**
13
+ * Whether to include the generated types in the output object.
14
+ * @default false
15
+ */
16
+ emitOutput?: boolean;
17
+ }
18
+ export declare const DEFAULT_OPTIONS: Required<ModelTypesGeneratorPluginOptions>;
19
+ export declare const mergeOptions: (options?: ModelTypesGeneratorPluginOptions) => Required<ModelTypesGeneratorPluginOptions>;
2
20
  export declare const isOperationNode: (node: DefinitionNode) => boolean;
3
- /**
4
- *
5
- * @param field Field node to check for non-nullability
6
- * @returns True if the field is non-nullable, false otherwise
7
- *
8
- * TODO: check for semantic nullability based on directives.
9
- */
10
- export declare const isNonNullableField: (field: FieldNode | InputValueNode) => boolean;
11
21
  export declare const getBuildinScalarTypeKeyword: (typeName: string) => string;
12
22
  //# sourceMappingURL=ModelTypesGeneratorPlugin.utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ModelTypesGeneratorPlugin.utils.d.ts","sourceRoot":"","sources":["../../../src/base/ModelTypesGeneratorPlugin/ModelTypesGeneratorPlugin.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,SAAS,EACT,cAAc,EAEf,MAAM,0BAA0B,CAAC;AAIlC,eAAO,MAAM,eAAe,GAAI,MAAM,cAAc,YAEnD,CAAC;AAEF;;;;;;GAMG;AAEH,eAAO,MAAM,kBAAkB,GAAI,OAAO,SAAS,GAAG,cAAc,YAEnE,CAAC;AAEF,eAAO,MAAM,2BAA2B,GAAI,UAAU,MAAM,KAAG,MAa9D,CAAC"}
1
+ {"version":3,"file":"ModelTypesGeneratorPlugin.utils.d.ts","sourceRoot":"","sources":["../../../src/base/ModelTypesGeneratorPlugin/ModelTypesGeneratorPlugin.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,MAAM,WAAW,gCAAgC;IAC/C;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,gCAAgC,CAI7D,CAAC;AAEX,eAAO,MAAM,YAAY,GACvB,UAAU,gCAAgC,KACzC,QAAQ,CAAC,gCAAgC,CAK3C,CAAC;AAIF,eAAO,MAAM,eAAe,GAAI,MAAM,cAAc,YAEnD,CAAC;AAEF,eAAO,MAAM,2BAA2B,GAAI,UAAU,MAAM,KAAG,MAa9D,CAAC"}
@@ -1,18 +1,18 @@
1
- import { NonNullTypeNode, } from "@gqlbase/core/definition";
1
+ export const DEFAULT_OPTIONS = {
2
+ emitFile: true,
3
+ fileName: "models.typegen.ts",
4
+ emitOutput: false,
5
+ };
6
+ export const mergeOptions = (options) => {
7
+ return {
8
+ ...DEFAULT_OPTIONS,
9
+ ...options,
10
+ };
11
+ };
2
12
  const OPERATION_NODE_NAME = ["Query", "Mutation", "Subscription"];
3
13
  export const isOperationNode = (node) => {
4
14
  return OPERATION_NODE_NAME.includes(node.name);
5
15
  };
6
- /**
7
- *
8
- * @param field Field node to check for non-nullability
9
- * @returns True if the field is non-nullable, false otherwise
10
- *
11
- * TODO: check for semantic nullability based on directives.
12
- */
13
- export const isNonNullableField = (field) => {
14
- return field.type instanceof NonNullTypeNode;
15
- };
16
16
  export const getBuildinScalarTypeKeyword = (typeName) => {
17
17
  switch (typeName) {
18
18
  case "ID":
@@ -1 +1 @@
1
- {"version":3,"file":"ModelTypesGeneratorPlugin.utils.js","sourceRoot":"","sources":["../../../src/base/ModelTypesGeneratorPlugin/ModelTypesGeneratorPlugin.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,eAAe,GAChB,MAAM,0BAA0B,CAAC;AAElC,MAAM,mBAAmB,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,cAAc,CAAU,CAAC;AAE3E,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAoB,EAAE,EAAE;IACtD,OAAO,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAA4C,CAAC,CAAC;AACzF,CAAC,CAAC;AAEF;;;;;;GAMG;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAiC,EAAE,EAAE;IACtE,OAAO,KAAK,CAAC,IAAI,YAAY,eAAe,CAAC;AAC/C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,QAAgB,EAAU,EAAE;IACtE,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,IAAI,CAAC;QACV,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,KAAK,CAAC;QACX,KAAK,OAAO;YACV,OAAO,QAAQ,CAAC;QAClB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB;YACE,MAAM,IAAI,KAAK,CAAC,qCAAqC,QAAQ,EAAE,CAAC,CAAC;IACrE,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"ModelTypesGeneratorPlugin.utils.js","sourceRoot":"","sources":["../../../src/base/ModelTypesGeneratorPlugin/ModelTypesGeneratorPlugin.utils.ts"],"names":[],"mappings":"AAqBA,MAAM,CAAC,MAAM,eAAe,GAA+C;IACzE,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,mBAAmB;IAC7B,UAAU,EAAE,KAAK;CACT,CAAC;AAEX,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,OAA0C,EACE,EAAE;IAC9C,OAAO;QACL,GAAG,eAAe;QAClB,GAAG,OAAO;KACX,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,cAAc,CAAU,CAAC;AAE3E,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAoB,EAAE,EAAE;IACtD,OAAO,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAA4C,CAAC,CAAC;AACzF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,QAAgB,EAAU,EAAE;IACtE,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,IAAI,CAAC;QACV,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,KAAK,CAAC;QACX,KAAK,OAAO;YACV,OAAO,QAAQ,CAAC;QAClB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB;YACE,MAAM,IAAI,KAAK,CAAC,qCAAqC,QAAQ,EAAE,CAAC,CAAC;IACrE,CAAC;AACH,CAAC,CAAC"}
@@ -2,12 +2,20 @@ import { ITransformerContext, ITransformerPlugin } from "@gqlbase/core";
2
2
  import { DefinitionNode, InterfaceNode, ObjectNode } from "@gqlbase/core/definition";
3
3
  import { RelationPluginOptions } from "./RelationsPlugin.utils.js";
4
4
  /**
5
- * This plugin is responsible for adding the `@hasOne` and `@hasMany` directives to the schema, which can be used to define relationships between types. It also adds the necessary fields and arguments to the schema to support these directives.
5
+ * This plugin is responsible for adding the `@hasOne` and `@hasMany` directives to the schema, which can be used to define relationships between types.
6
6
  *
7
- * @example
7
+ * It also adds the necessary fields and arguments to the schema to support these directives.
8
8
  *
9
+ * @definition
9
10
  * ```graphql
11
+ * directive `@hasOne(key: String)` on FIELD_DEFINITION
12
+ *
13
+ * directive `@hasMany(key: String)` on FIELD_DEFINITION
14
+ *
15
+ * ```
10
16
  *
17
+ * @example
18
+ * ```graphql
11
19
  * # Before
12
20
  * type User {
13
21
  * id: ID!
@@ -25,24 +33,21 @@ import { RelationPluginOptions } from "./RelationsPlugin.utils.js";
25
33
  * type User {
26
34
  * id: ID!
27
35
  * name: String!
28
- * posts: [Post]
36
+ * posts: [Post] # formatted by the plugin
29
37
  * }
30
38
  *
31
39
  * type Post {
32
40
  * id: ID!
33
41
  * title: String!
34
- * authorId: ID
42
+ * authorId: ID # added by the plugin
35
43
  * author: User
36
44
  * }
37
45
  * ```
38
- *
39
- * In the above example, the `User` type has a `posts` field that is decorated with the `@hasMany` directive, indicating that a user can have many posts. The plugin will automatically add the necessary fields and arguments to support this relationship in the schema.
40
- *
41
46
  */
42
47
  export declare class RelationsPlugin implements ITransformerPlugin {
43
48
  readonly name = "RelationsPlugin";
44
49
  readonly context: ITransformerContext;
45
- private readonly _useConnections;
50
+ private readonly options;
46
51
  constructor(context: ITransformerContext, options?: RelationPluginOptions);
47
52
  private _getRelationshipTarget;
48
53
  private _getFieldRelation;
@@ -1 +1 @@
1
- {"version":3,"file":"RelationsPlugin.d.ts","sourceRoot":"","sources":["../../../src/base/RelationsPlugin/RelationsPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAC7F,OAAO,EACL,cAAc,EAId,aAAa,EAGb,UAAU,EAEX,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAQL,qBAAqB,EACtB,MAAM,4BAA4B,CAAC;AAGpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,qBAAa,eAAgB,YAAW,kBAAkB;IACxD,QAAQ,CAAC,IAAI,qBAAqB;IAClC,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;IACtC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;gBAGxC,OAAO,EAAE,mBAAmB,EAC5B,OAAO,GAAE,qBAAiD;IAM5D,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,iBAAiB;IAmDzB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,uBAAuB;IAU/B,OAAO,CAAC,sBAAsB;IAiBvB,IAAI;IAkBJ,KAAK,CAAC,UAAU,EAAE,cAAc,GAAG,OAAO;IAW1C,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,aAAa,GAAG,IAAI;IAiC9D,OAAO,CAAC,UAAU,EAAE,UAAU,GAAG,aAAa,GAAG,IAAI;IAoB9C,OAAO,CAAC,UAAU,EAAE,UAAU,GAAG,aAAa,GAAG,IAAI;IAY5D,KAAK,IAAI,IAAI;CAKd;AAED,eAAO,MAAM,cAAc,yFAAuC,CAAC"}
1
+ {"version":3,"file":"RelationsPlugin.d.ts","sourceRoot":"","sources":["../../../src/base/RelationsPlugin/RelationsPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAC7F,OAAO,EACL,cAAc,EAId,aAAa,EAGb,UAAU,EAEX,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EASL,qBAAqB,EAEtB,MAAM,4BAA4B,CAAC;AAGpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,qBAAa,eAAgB,YAAW,kBAAkB;IACxD,QAAQ,CAAC,IAAI,qBAAqB;IAClC,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;gBAE9C,OAAO,EAAE,mBAAmB,EAAE,OAAO,GAAE,qBAA0B;IAO7E,OAAO,CAAC,sBAAsB;IAgB9B,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,uBAAuB;IAU/B,OAAO,CAAC,sBAAsB;IAiBvB,IAAI;IAkBJ,KAAK,CAAC,UAAU,EAAE,cAAc,GAAG,OAAO;IAW1C,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,aAAa,GAAG,IAAI;IAiC9D,OAAO,CAAC,UAAU,EAAE,UAAU,GAAG,aAAa,GAAG,IAAI;IAoB9C,OAAO,CAAC,UAAU,EAAE,UAAU,GAAG,aAAa,GAAG,IAAI;IAY5D,KAAK,IAAI,IAAI;CAKd;AAED,eAAO,MAAM,cAAc,yFAAuC,CAAC"}