@gqlbase/plugins 0.0.6 → 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 (85) hide show
  1. package/dist/base/InterfaceUtilsPlugin/InterfaceUtilsPlugin.d.ts +55 -0
  2. package/dist/base/InterfaceUtilsPlugin/InterfaceUtilsPlugin.d.ts.map +1 -0
  3. package/dist/base/InterfaceUtilsPlugin/InterfaceUtilsPlugin.js +100 -0
  4. package/dist/base/InterfaceUtilsPlugin/InterfaceUtilsPlugin.js.map +1 -0
  5. package/dist/base/InterfaceUtilsPlugin/InterfaceUtilsPlugin.utils.d.ts +3 -0
  6. package/dist/base/InterfaceUtilsPlugin/InterfaceUtilsPlugin.utils.d.ts.map +1 -0
  7. package/dist/base/InterfaceUtilsPlugin/InterfaceUtilsPlugin.utils.js +4 -0
  8. package/dist/base/InterfaceUtilsPlugin/InterfaceUtilsPlugin.utils.js.map +1 -0
  9. package/dist/base/InterfaceUtilsPlugin/index.d.ts +3 -0
  10. package/dist/base/InterfaceUtilsPlugin/index.d.ts.map +1 -0
  11. package/dist/base/InterfaceUtilsPlugin/index.js +3 -0
  12. package/dist/base/InterfaceUtilsPlugin/index.js.map +1 -0
  13. package/dist/base/ModelTypesGeneratorPlugin/ModelTypesGeneratorPlugin.d.ts +9 -3
  14. package/dist/base/ModelTypesGeneratorPlugin/ModelTypesGeneratorPlugin.d.ts.map +1 -1
  15. package/dist/base/ModelTypesGeneratorPlugin/ModelTypesGeneratorPlugin.js +26 -16
  16. package/dist/base/ModelTypesGeneratorPlugin/ModelTypesGeneratorPlugin.js.map +1 -1
  17. package/dist/base/ModelTypesGeneratorPlugin/ModelTypesGeneratorPlugin.utils.d.ts +19 -9
  18. package/dist/base/ModelTypesGeneratorPlugin/ModelTypesGeneratorPlugin.utils.d.ts.map +1 -1
  19. package/dist/base/ModelTypesGeneratorPlugin/ModelTypesGeneratorPlugin.utils.js +11 -11
  20. package/dist/base/ModelTypesGeneratorPlugin/ModelTypesGeneratorPlugin.utils.js.map +1 -1
  21. package/dist/base/RelationsPlugin/RelationsPlugin.d.ts +13 -8
  22. package/dist/base/RelationsPlugin/RelationsPlugin.d.ts.map +1 -1
  23. package/dist/base/RelationsPlugin/RelationsPlugin.js +30 -46
  24. package/dist/base/RelationsPlugin/RelationsPlugin.js.map +1 -1
  25. package/dist/base/RelationsPlugin/RelationsPlugin.utils.d.ts +5 -3
  26. package/dist/base/RelationsPlugin/RelationsPlugin.utils.d.ts.map +1 -1
  27. package/dist/base/RelationsPlugin/RelationsPlugin.utils.js +26 -1
  28. package/dist/base/RelationsPlugin/RelationsPlugin.utils.js.map +1 -1
  29. package/dist/base/RelationsPlugin/index.d.ts +1 -1
  30. package/dist/base/RelationsPlugin/index.d.ts.map +1 -1
  31. package/dist/base/RelationsPlugin/index.js +1 -1
  32. package/dist/base/RelationsPlugin/index.js.map +1 -1
  33. package/dist/base/RfcFeaturesPlugin/RfcFeaturesPlugin.d.ts +28 -0
  34. package/dist/base/RfcFeaturesPlugin/RfcFeaturesPlugin.d.ts.map +1 -0
  35. package/dist/base/RfcFeaturesPlugin/RfcFeaturesPlugin.js +33 -0
  36. package/dist/base/RfcFeaturesPlugin/RfcFeaturesPlugin.js.map +1 -0
  37. package/dist/base/RfcFeaturesPlugin/RfcFeaturesPlugin.utils.d.ts +14 -0
  38. package/dist/base/RfcFeaturesPlugin/RfcFeaturesPlugin.utils.d.ts.map +1 -0
  39. package/dist/base/RfcFeaturesPlugin/RfcFeaturesPlugin.utils.js +39 -0
  40. package/dist/base/RfcFeaturesPlugin/RfcFeaturesPlugin.utils.js.map +1 -0
  41. package/dist/base/RfcFeaturesPlugin/index.d.ts +3 -0
  42. package/dist/base/RfcFeaturesPlugin/index.d.ts.map +1 -0
  43. package/dist/base/RfcFeaturesPlugin/index.js +3 -0
  44. package/dist/base/RfcFeaturesPlugin/index.js.map +1 -0
  45. package/dist/base/basePreset.d.ts +2 -0
  46. package/dist/base/basePreset.d.ts.map +1 -1
  47. package/dist/base/basePreset.js +6 -0
  48. package/dist/base/basePreset.js.map +1 -1
  49. package/dist/base/index.d.ts +2 -0
  50. package/dist/base/index.d.ts.map +1 -1
  51. package/dist/base/index.js +2 -0
  52. package/dist/base/index.js.map +1 -1
  53. package/dist/relay/ConnectionPlugin/ConnectionPlugin.d.ts +63 -0
  54. package/dist/relay/ConnectionPlugin/ConnectionPlugin.d.ts.map +1 -0
  55. package/dist/relay/ConnectionPlugin/ConnectionPlugin.js +156 -0
  56. package/dist/relay/ConnectionPlugin/ConnectionPlugin.js.map +1 -0
  57. package/dist/relay/ConnectionPlugin/ConnectionPlugin.utils.d.ts +4 -0
  58. package/dist/relay/ConnectionPlugin/ConnectionPlugin.utils.d.ts.map +1 -0
  59. package/dist/relay/ConnectionPlugin/ConnectionPlugin.utils.js +26 -0
  60. package/dist/relay/ConnectionPlugin/ConnectionPlugin.utils.js.map +1 -0
  61. package/dist/relay/ConnectionPlugin/index.d.ts +3 -0
  62. package/dist/relay/ConnectionPlugin/index.d.ts.map +1 -0
  63. package/dist/relay/ConnectionPlugin/index.js +3 -0
  64. package/dist/relay/ConnectionPlugin/index.js.map +1 -0
  65. package/dist/relay/{NodeInterfacePlugin.d.ts → NodeInterfacePlugin/NodeInterfacePlugin.d.ts} +30 -6
  66. package/dist/relay/NodeInterfacePlugin/NodeInterfacePlugin.d.ts.map +1 -0
  67. package/dist/relay/{NodeInterfacePlugin.js → NodeInterfacePlugin/NodeInterfacePlugin.js} +37 -27
  68. package/dist/relay/NodeInterfacePlugin/NodeInterfacePlugin.js.map +1 -0
  69. package/dist/relay/NodeInterfacePlugin/index.d.ts +2 -0
  70. package/dist/relay/NodeInterfacePlugin/index.d.ts.map +1 -0
  71. package/dist/relay/NodeInterfacePlugin/index.js +2 -0
  72. package/dist/relay/NodeInterfacePlugin/index.js.map +1 -0
  73. package/dist/relay/index.d.ts +3 -2
  74. package/dist/relay/index.d.ts.map +1 -1
  75. package/dist/relay/index.js +3 -2
  76. package/dist/relay/index.js.map +1 -1
  77. package/dist/relay/relayPreset.js +2 -2
  78. package/dist/relay/relayPreset.js.map +1 -1
  79. package/package.json +3 -3
  80. package/dist/relay/ConnectionPlugin.d.ts +0 -46
  81. package/dist/relay/ConnectionPlugin.d.ts.map +0 -1
  82. package/dist/relay/ConnectionPlugin.js +0 -200
  83. package/dist/relay/ConnectionPlugin.js.map +0 -1
  84. package/dist/relay/NodeInterfacePlugin.d.ts.map +0 -1
  85. package/dist/relay/NodeInterfacePlugin.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"RelationsPlugin.js","sourceRoot":"","sources":["../../../src/base/RelationsPlugin/RelationsPlugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RelationsPlugin.js","sourceRoot":"","sources":["../../../src/base/RelationsPlugin/RelationsPlugin.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { DefinitionNode, FieldNode, InterfaceNode, ObjectNode, UnionNode } from "@gqlbase/core/definition";
2
2
  export interface RelationPluginOptions {
3
- useConnections?: boolean;
3
+ usePaginationTypes?: boolean;
4
4
  }
5
5
  export declare const RelationDirective: {
6
6
  readonly HAS_ONE: "hasOne";
@@ -11,9 +11,11 @@ export interface FieldRelationship {
11
11
  target: ObjectNode | InterfaceNode | UnionNode;
12
12
  key?: string;
13
13
  }
14
+ export type RelationTarget = ObjectNode | InterfaceNode | UnionNode;
14
15
  export declare const isOneRelationship: (field: FieldNode) => boolean;
15
16
  export declare const isManyRelationship: (field: FieldNode) => boolean;
16
17
  export declare const isRelationField: (field: FieldNode) => boolean;
17
- export declare const isConnectionNode: (node: DefinitionNode) => boolean;
18
- export declare const isValidRelationTarget: (node: DefinitionNode) => node is ObjectNode | InterfaceNode | UnionNode;
18
+ export declare const isPaginationConnection: (node: DefinitionNode) => boolean;
19
+ export declare const isValidRelationTarget: (node: DefinitionNode) => node is RelationTarget;
20
+ export declare const parseFieldRelation: (object: ObjectNode | InterfaceNode, field: FieldNode, target: RelationTarget) => Required<FieldRelationship> | null;
19
21
  //# sourceMappingURL=RelationsPlugin.utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RelationsPlugin.utils.d.ts","sourceRoot":"","sources":["../../../src/base/RelationsPlugin/RelationsPlugin.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,SAAS,EACT,aAAa,EACb,UAAU,EACV,SAAS,EACV,MAAM,0BAA0B,CAAC;AAElC,MAAM,WAAW,qBAAqB;IACpC,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,eAAO,MAAM,iBAAiB;;;CAGpB,CAAC;AAEX,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,UAAU,GAAG,WAAW,CAAC;IAC/B,MAAM,EAAE,UAAU,GAAG,aAAa,GAAG,SAAS,CAAC;IAC/C,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,iBAAiB,GAAI,OAAO,SAAS,KAAG,OAEpD,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,OAAO,SAAS,KAAG,OAErD,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,OAAO,SAAS,KAAG,OAElD,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,MAAM,cAAc,KAAG,OASvD,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,MAAM,cAAc,KACnB,IAAI,IAAI,UAAU,GAAG,aAAa,GAAG,SAEvC,CAAC"}
1
+ {"version":3,"file":"RelationsPlugin.utils.d.ts","sourceRoot":"","sources":["../../../src/base/RelationsPlugin/RelationsPlugin.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,SAAS,EACT,aAAa,EACb,UAAU,EACV,SAAS,EACV,MAAM,0BAA0B,CAAC;AAGlC,MAAM,WAAW,qBAAqB;IACpC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,eAAO,MAAM,iBAAiB;;;CAGpB,CAAC;AAEX,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,UAAU,GAAG,WAAW,CAAC;IAC/B,MAAM,EAAE,UAAU,GAAG,aAAa,GAAG,SAAS,CAAC;IAC/C,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,aAAa,GAAG,SAAS,CAAC;AAEpE,eAAO,MAAM,iBAAiB,GAAI,OAAO,SAAS,KAAG,OAEpD,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,OAAO,SAAS,KAAG,OAErD,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,OAAO,SAAS,KAAG,OAElD,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,MAAM,cAAc,KAAG,OAS7D,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,MAAM,cAAc,KAAG,IAAI,IAAI,cAEpE,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,UAAU,GAAG,aAAa,EAClC,OAAO,SAAS,EAChB,QAAQ,cAAc,KACrB,QAAQ,CAAC,iBAAiB,CAAC,GAAG,IA4BhC,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { InterfaceNode, ObjectNode, UnionNode, } from "@gqlbase/core/definition";
2
+ import { camelCase } from "@gqlbase/shared/format";
2
3
  export const RelationDirective = {
3
4
  HAS_ONE: "hasOne",
4
5
  HAS_MANY: "hasMany",
@@ -12,7 +13,7 @@ export const isManyRelationship = (field) => {
12
13
  export const isRelationField = (field) => {
13
14
  return isOneRelationship(field) || isManyRelationship(field);
14
15
  };
15
- export const isConnectionNode = (node) => {
16
+ export const isPaginationConnection = (node) => {
16
17
  if (node instanceof ObjectNode) {
17
18
  if (!node.name.endsWith("Connection"))
18
19
  return false;
@@ -27,4 +28,28 @@ export const isConnectionNode = (node) => {
27
28
  export const isValidRelationTarget = (node) => {
28
29
  return node instanceof ObjectNode || node instanceof InterfaceNode || node instanceof UnionNode;
29
30
  };
31
+ export const parseFieldRelation = (object, field, target) => {
32
+ if (isOneRelationship(field) && isManyRelationship(field)) {
33
+ throw new Error(`Multiple relationship directives detected for field: ${field.name}`);
34
+ }
35
+ if (isOneRelationship(field)) {
36
+ const directive = field.getDirective(RelationDirective.HAS_ONE);
37
+ const args = directive?.getArgumentsJSON();
38
+ return {
39
+ type: "oneToOne",
40
+ target: target,
41
+ key: args?.key ?? camelCase(field.name, "id"),
42
+ };
43
+ }
44
+ if (isManyRelationship(field)) {
45
+ const directive = field.getDirective(RelationDirective.HAS_MANY);
46
+ const args = directive?.getArgumentsJSON();
47
+ return {
48
+ type: "oneToMany",
49
+ target: target,
50
+ key: args?.key ?? camelCase(object.name, "id"),
51
+ };
52
+ }
53
+ return null;
54
+ };
30
55
  //# sourceMappingURL=RelationsPlugin.utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RelationsPlugin.utils.js","sourceRoot":"","sources":["../../../src/base/RelationsPlugin/RelationsPlugin.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,aAAa,EACb,UAAU,EACV,SAAS,GACV,MAAM,0BAA0B,CAAC;AAMlC,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,OAAO,EAAE,QAAQ;IACjB,QAAQ,EAAE,SAAS;CACX,CAAC;AAQX,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAgB,EAAW,EAAE;IAC7D,OAAO,KAAK,CAAC,YAAY,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACvD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAgB,EAAW,EAAE;IAC9D,OAAO,KAAK,CAAC,YAAY,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AACxD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAgB,EAAW,EAAE;IAC3D,OAAO,iBAAiB,CAAC,KAAK,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAC/D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAoB,EAAW,EAAE;IAChE,IAAI,IAAI,YAAY,UAAU,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;YAAE,OAAO,KAAK,CAAC;QACpD,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QACzD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;YAAE,OAAO,KAAK,CAAC;QACzE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,IAAoB,EAC4B,EAAE;IAClD,OAAO,IAAI,YAAY,UAAU,IAAI,IAAI,YAAY,aAAa,IAAI,IAAI,YAAY,SAAS,CAAC;AAClG,CAAC,CAAC"}
1
+ {"version":3,"file":"RelationsPlugin.utils.js","sourceRoot":"","sources":["../../../src/base/RelationsPlugin/RelationsPlugin.utils.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  export { RelationsPlugin, relationPlugin } from "./RelationsPlugin.js";
2
- export { type RelationPluginOptions, type FieldRelationship, RelationDirective, isConnectionNode, isManyRelationship, isOneRelationship, isRelationField, isValidRelationTarget, } from "./RelationsPlugin.utils.js";
2
+ export { RelationDirective, isPaginationConnection, isManyRelationship, isOneRelationship, isRelationField, isValidRelationTarget, parseFieldRelation, type RelationPluginOptions, type FieldRelationship, type RelationTarget, } from "./RelationsPlugin.utils.js";
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/base/RelationsPlugin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,qBAAqB,GACtB,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/base/RelationsPlugin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,cAAc,GACpB,MAAM,4BAA4B,CAAC"}
@@ -1,3 +1,3 @@
1
1
  export { RelationsPlugin, relationPlugin } from "./RelationsPlugin.js";
2
- export { RelationDirective, isConnectionNode, isManyRelationship, isOneRelationship, isRelationField, isValidRelationTarget, } from "./RelationsPlugin.utils.js";
2
+ export { RelationDirective, isPaginationConnection, isManyRelationship, isOneRelationship, isRelationField, isValidRelationTarget, parseFieldRelation, } from "./RelationsPlugin.utils.js";
3
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/base/RelationsPlugin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAGL,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,qBAAqB,GACtB,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/base/RelationsPlugin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,qBAAqB,EACrB,kBAAkB,GAInB,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { ITransformerContext, TransformerPluginBase } from "@gqlbase/core";
2
+ /**
3
+ * Adds support for features that are in RFC status or draft mode.
4
+ *
5
+ * @see https://github.com/graphql/graphql-wg
6
+ *
7
+ * @definition
8
+ * ```graphql
9
+ * directive `@semanticNonNull(levels: [Int!]! = [0])` on FIELD_DEFINITION
10
+ * ```
11
+ *
12
+ * @example
13
+ * ```graphql
14
+ * type User {
15
+ * id: ID!
16
+ * name: String `@semanticNonNull`
17
+ * tags: [String] `@semanticNonNull(levels: [0, 1])`
18
+ * }
19
+ * ```
20
+ *
21
+ * In the above example, the `name` field is decorated with the `@semanticNonNull` directive, indicating that it is semantically non-nullable. The plugin will use this information to enforce non-nullability at runtime, even if the field is not marked as non-nullable in the schema.
22
+ */
23
+ export declare class RfcFeaturesPlugin extends TransformerPluginBase {
24
+ constructor(context: ITransformerContext);
25
+ init(): void;
26
+ }
27
+ export declare const rfcFeaturesPlugin: (options?: unknown) => import("@gqlbase/core").IPluginFactory;
28
+ //# sourceMappingURL=RfcFeaturesPlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RfcFeaturesPlugin.d.ts","sourceRoot":"","sources":["../../../src/base/RfcFeaturesPlugin/RfcFeaturesPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAUhG;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,qBAAa,iBAAkB,SAAQ,qBAAqB;gBAC9C,OAAO,EAAE,mBAAmB;IAIjC,IAAI;CAeZ;AAED,eAAO,MAAM,iBAAiB,+DAAyC,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { createPluginFactory, TransformerPluginBase } from "@gqlbase/core";
2
+ import { DirectiveDefinitionNode, InputValueNode, ListTypeNode, NamedTypeNode, NonNullTypeNode, ValueNode, } from "@gqlbase/core/definition";
3
+ /**
4
+ * Adds support for features that are in RFC status or draft mode.
5
+ *
6
+ * @see https://github.com/graphql/graphql-wg
7
+ *
8
+ * @definition
9
+ * ```graphql
10
+ * directive `@semanticNonNull(levels: [Int!]! = [0])` on FIELD_DEFINITION
11
+ * ```
12
+ *
13
+ * @example
14
+ * ```graphql
15
+ * type User {
16
+ * id: ID!
17
+ * name: String `@semanticNonNull`
18
+ * tags: [String] `@semanticNonNull(levels: [0, 1])`
19
+ * }
20
+ * ```
21
+ *
22
+ * In the above example, the `name` field is decorated with the `@semanticNonNull` directive, indicating that it is semantically non-nullable. The plugin will use this information to enforce non-nullability at runtime, even if the field is not marked as non-nullable in the schema.
23
+ */
24
+ export class RfcFeaturesPlugin extends TransformerPluginBase {
25
+ constructor(context) {
26
+ super("RfcFeaturesPlugin", context);
27
+ }
28
+ init() {
29
+ this.context.base.addNode(DirectiveDefinitionNode.create("semanticNonNull", ["FIELD_DEFINITION"], InputValueNode.create("levels", NonNullTypeNode.create(ListTypeNode.create(NonNullTypeNode.create(NamedTypeNode.create("Int")))), ValueNode.list([ValueNode.int(0)]))));
30
+ }
31
+ }
32
+ export const rfcFeaturesPlugin = createPluginFactory(RfcFeaturesPlugin);
33
+ //# sourceMappingURL=RfcFeaturesPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RfcFeaturesPlugin.js","sourceRoot":"","sources":["../../../src/base/RfcFeaturesPlugin/RfcFeaturesPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAuB,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAChG,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,YAAY,EACZ,aAAa,EACb,eAAe,EACf,SAAS,GACV,MAAM,0BAA0B,CAAC;AAElC;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,OAAO,iBAAkB,SAAQ,qBAAqB;IAC1D,YAAY,OAA4B;QACtC,KAAK,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CACvB,uBAAuB,CAAC,MAAM,CAC5B,iBAAiB,EACjB,CAAC,kBAAkB,CAAC,EACpB,cAAc,CAAC,MAAM,CACnB,QAAQ,EACR,eAAe,CAAC,MAAM,CACpB,YAAY,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CACzE,EACD,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CACnC,CACF,CACF,CAAC;IACJ,CAAC;CACF;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,iBAAiB,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { FieldNode } from "@gqlbase/core/definition";
2
+ export declare const RfcDirective: {
3
+ readonly SEMANTIC_NON_NULL: "semanticNonNull";
4
+ };
5
+ /**
6
+ * Determines if a field is semantically nullable based on its type and/or the presence of the `@semanticNonNull` directive.
7
+ *
8
+ * @param field Fiel node to check
9
+ * @param level Semantic nullability level
10
+ *
11
+ * @returns `false` if the field is non-nullable either by being a NonNullType or by having the `@semanticNonNull` directive at the specified level, `true` otherwise.
12
+ */
13
+ export declare const isSemanticNullable: (field: FieldNode, level?: number) => boolean;
14
+ //# sourceMappingURL=RfcFeaturesPlugin.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RfcFeaturesPlugin.utils.d.ts","sourceRoot":"","sources":["../../../src/base/RfcFeaturesPlugin/RfcFeaturesPlugin.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA2C,MAAM,0BAA0B,CAAC;AAE9F,eAAO,MAAM,YAAY;;CAEf,CAAC;AAgBX;;;;;;;GAOG;AAEH,eAAO,MAAM,kBAAkB,GAAI,OAAO,SAAS,EAAE,cAAS,YAe7D,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { ListTypeNode, NonNullTypeNode } from "@gqlbase/core/definition";
2
+ export const RfcDirective = {
3
+ SEMANTIC_NON_NULL: "semanticNonNull",
4
+ };
5
+ /**
6
+ * Unwraps a type to the given depth level.
7
+ * Only `ListTypeNode` counts as a level — `NonNullTypeNode` is
8
+ * a modifier at the same depth and is skipped transparently.
9
+ */
10
+ const getTypeAtLevel = (type, level) => {
11
+ if (level <= 0)
12
+ return type;
13
+ if (type instanceof NonNullTypeNode)
14
+ return getTypeAtLevel(type.type, level);
15
+ if (type instanceof ListTypeNode)
16
+ return getTypeAtLevel(type.type, level - 1);
17
+ return type;
18
+ };
19
+ /**
20
+ * Determines if a field is semantically nullable based on its type and/or the presence of the `@semanticNonNull` directive.
21
+ *
22
+ * @param field Fiel node to check
23
+ * @param level Semantic nullability level
24
+ *
25
+ * @returns `false` if the field is non-nullable either by being a NonNullType or by having the `@semanticNonNull` directive at the specified level, `true` otherwise.
26
+ */
27
+ export const isSemanticNullable = (field, level = 0) => {
28
+ const typeAtLevel = getTypeAtLevel(field.type, level);
29
+ if (typeAtLevel instanceof NonNullTypeNode) {
30
+ return false;
31
+ }
32
+ if (field.hasDirective(RfcDirective.SEMANTIC_NON_NULL)) {
33
+ const directive = field.getDirective(RfcDirective.SEMANTIC_NON_NULL);
34
+ const { levels = [0] } = directive?.getArgumentsJSON() ?? {};
35
+ return !levels?.includes(level);
36
+ }
37
+ return true;
38
+ };
39
+ //# sourceMappingURL=RfcFeaturesPlugin.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RfcFeaturesPlugin.utils.js","sourceRoot":"","sources":["../../../src/base/RfcFeaturesPlugin/RfcFeaturesPlugin.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAE,eAAe,EAAY,MAAM,0BAA0B,CAAC;AAE9F,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,iBAAiB,EAAE,iBAAiB;CAC5B,CAAC;AAEX;;;;GAIG;AACH,MAAM,cAAc,GAAG,CAAC,IAAc,EAAE,KAAa,EAAY,EAAE;IACjE,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAE5B,IAAI,IAAI,YAAY,eAAe;QAAE,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7E,IAAI,IAAI,YAAY,YAAY;QAAE,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IAE9E,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF;;;;;;;GAOG;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAgB,EAAE,KAAK,GAAG,CAAC,EAAE,EAAE;IAChE,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAEtD,IAAI,WAAW,YAAY,eAAe,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACvD,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;QACrE,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,EAAE,gBAAgB,EAAwB,IAAI,EAAE,CAAC;QAEnF,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { RfcFeaturesPlugin, rfcFeaturesPlugin } from "./RfcFeaturesPlugin.js";
2
+ export { RfcDirective, isSemanticNullable } from "./RfcFeaturesPlugin.utils.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/base/RfcFeaturesPlugin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { RfcFeaturesPlugin, rfcFeaturesPlugin } from "./RfcFeaturesPlugin.js";
2
+ export { RfcDirective, isSemanticNullable } from "./RfcFeaturesPlugin.utils.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/base/RfcFeaturesPlugin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC"}
@@ -3,9 +3,11 @@
3
3
  *
4
4
  * Inludes:
5
5
  * - `UtilitiesPlugin`
6
+ * - `InterfaceUtilsPlugin`
6
7
  * - `ScalarsPlugin`
7
8
  * - `ModelPlugin`
8
9
  * - `RelationsPlugin`
10
+ * - `RfcFeaturesPlugin`
9
11
  * - `SchemaGeneratorPlugin`
10
12
  * - `ModelTypesGeneratorPlugin`
11
13
  *
@@ -1 +1 @@
1
- {"version":3,"file":"basePreset.d.ts","sourceRoot":"","sources":["../../src/base/basePreset.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;GAYG;AAEH,wBAAgB,UAAU,6CASzB"}
1
+ {"version":3,"file":"basePreset.d.ts","sourceRoot":"","sources":["../../src/base/basePreset.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;GAcG;AAEH,wBAAgB,UAAU,6CAWzB"}
@@ -1,7 +1,9 @@
1
1
  import { utilsPlugin } from "./UtilitiesPlugin/index.js";
2
+ import { interfaceUtilsPlugin } from "./InterfaceUtilsPlugin/index.js";
2
3
  import { scalarsPlugin } from "./ScalarsPlugin/index.js";
3
4
  import { modelPlugin } from "./ModelPlugin/index.js";
4
5
  import { relationPlugin } from "./RelationsPlugin/index.js";
6
+ import { rfcFeaturesPlugin } from "./RfcFeaturesPlugin/index.js";
5
7
  import { schemaGeneratorPlugin } from "./SchemaGeneratorPlugin.js";
6
8
  import { modelTypesGeneratorPlugin } from "./ModelTypesGeneratorPlugin/index.js";
7
9
  /**
@@ -9,9 +11,11 @@ import { modelTypesGeneratorPlugin } from "./ModelTypesGeneratorPlugin/index.js"
9
11
  *
10
12
  * Inludes:
11
13
  * - `UtilitiesPlugin`
14
+ * - `InterfaceUtilsPlugin`
12
15
  * - `ScalarsPlugin`
13
16
  * - `ModelPlugin`
14
17
  * - `RelationsPlugin`
18
+ * - `RfcFeaturesPlugin`
15
19
  * - `SchemaGeneratorPlugin`
16
20
  * - `ModelTypesGeneratorPlugin`
17
21
  *
@@ -20,9 +24,11 @@ import { modelTypesGeneratorPlugin } from "./ModelTypesGeneratorPlugin/index.js"
20
24
  export function basePreset() {
21
25
  return [
22
26
  utilsPlugin(),
27
+ interfaceUtilsPlugin(),
23
28
  scalarsPlugin(),
24
29
  modelPlugin(),
25
30
  relationPlugin(),
31
+ rfcFeaturesPlugin(),
26
32
  schemaGeneratorPlugin(),
27
33
  modelTypesGeneratorPlugin(),
28
34
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"basePreset.js","sourceRoot":"","sources":["../../src/base/basePreset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AAEjF;;;;;;;;;;;;GAYG;AAEH,MAAM,UAAU,UAAU;IACxB,OAAO;QACL,WAAW,EAAE;QACb,aAAa,EAAE;QACf,WAAW,EAAE;QACb,cAAc,EAAE;QAChB,qBAAqB,EAAE;QACvB,yBAAyB,EAAE;KAC5B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"basePreset.js","sourceRoot":"","sources":["../../src/base/basePreset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AAEjF;;;;;;;;;;;;;;GAcG;AAEH,MAAM,UAAU,UAAU;IACxB,OAAO;QACL,WAAW,EAAE;QACb,oBAAoB,EAAE;QACtB,aAAa,EAAE;QACf,WAAW,EAAE;QACb,cAAc,EAAE;QAChB,iBAAiB,EAAE;QACnB,qBAAqB,EAAE;QACvB,yBAAyB,EAAE;KAC5B,CAAC;AACJ,CAAC"}
@@ -1,6 +1,8 @@
1
1
  export { ModelPlugin, type ModelPluginOptions, ModelDirective, ModelOperation, modelPlugin, isModel, } from "./ModelPlugin/index.js";
2
2
  export { RelationsPlugin, relationPlugin, RelationDirective, isRelationField, isOneRelationship, isManyRelationship, type FieldRelationship, type RelationPluginOptions, } from "./RelationsPlugin/index.js";
3
3
  export { UtilitiesPlugin, UtilityDirective, utilsPlugin, isReadOnly, isClientOnly, isCreateOnly, isFilterOnly, isServerOnly, isUpdateOnly, isWriteOnly, } from "./UtilitiesPlugin/index.js";
4
+ export { RfcFeaturesPlugin, RfcDirective, rfcFeaturesPlugin, isSemanticNullable, } from "./RfcFeaturesPlugin/index.js";
5
+ export { ScalarsPlugin, scalarsPlugin } from "./ScalarsPlugin/index.js";
4
6
  export { SchemaGeneratorPlugin, schemaGeneratorPlugin } from "./SchemaGeneratorPlugin.js";
5
7
  export { ModelTypesGeneratorPlugin, modelTypesGeneratorPlugin, } from "./ModelTypesGeneratorPlugin/index.js";
6
8
  export { basePreset } from "./basePreset.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/base/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,KAAK,kBAAkB,EACvB,cAAc,EACd,cAAc,EACd,WAAW,EACX,OAAO,GACR,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,GAC3B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,WAAW,GACZ,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAC1F,OAAO,EACL,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/base/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,KAAK,kBAAkB,EACvB,cAAc,EACd,cAAc,EACd,WAAW,EACX,OAAO,GACR,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,GAC3B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,WAAW,GACZ,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAC1F,OAAO,EACL,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
@@ -1,6 +1,8 @@
1
1
  export { ModelPlugin, ModelDirective, ModelOperation, modelPlugin, isModel, } from "./ModelPlugin/index.js";
2
2
  export { RelationsPlugin, relationPlugin, RelationDirective, isRelationField, isOneRelationship, isManyRelationship, } from "./RelationsPlugin/index.js";
3
3
  export { UtilitiesPlugin, UtilityDirective, utilsPlugin, isReadOnly, isClientOnly, isCreateOnly, isFilterOnly, isServerOnly, isUpdateOnly, isWriteOnly, } from "./UtilitiesPlugin/index.js";
4
+ export { RfcFeaturesPlugin, RfcDirective, rfcFeaturesPlugin, isSemanticNullable, } from "./RfcFeaturesPlugin/index.js";
5
+ export { ScalarsPlugin, scalarsPlugin } from "./ScalarsPlugin/index.js";
4
6
  export { SchemaGeneratorPlugin, schemaGeneratorPlugin } from "./SchemaGeneratorPlugin.js";
5
7
  export { ModelTypesGeneratorPlugin, modelTypesGeneratorPlugin, } from "./ModelTypesGeneratorPlugin/index.js";
6
8
  export { basePreset } from "./basePreset.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/base/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAEX,cAAc,EACd,cAAc,EACd,WAAW,EACX,OAAO,GACR,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,GAGnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,WAAW,GACZ,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAC1F,OAAO,EACL,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/base/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAEX,cAAc,EACd,cAAc,EACd,WAAW,EACX,OAAO,GACR,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,GAGnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,WAAW,GACZ,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAC1F,OAAO,EACL,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,63 @@
1
+ import { ITransformerContext } from "@gqlbase/core/context";
2
+ import { TransformerPluginBase } from "@gqlbase/core/plugins";
3
+ import { DefinitionNode, InterfaceNode, ObjectNode } from "@gqlbase/core/definition";
4
+ /**
5
+ * Transforms many relationships into Relay compaticale connections, and adds the necessary fields and arguments to support cursor based pagination.
6
+ *
7
+ * @example
8
+ * ```graphql
9
+ * # Before
10
+ * type User {
11
+ * id: ID!
12
+ * name: String!
13
+ * posts: Post `@hasMany`
14
+ * }
15
+ *
16
+ * type Post {
17
+ * id: ID!
18
+ * title: String!
19
+ * }
20
+ *
21
+ * # After
22
+ * type User {
23
+ * id: ID!
24
+ * name: String!
25
+ * posts: PostConnection
26
+ * }
27
+ *
28
+ * type Post {
29
+ * id: ID!
30
+ * title: String!
31
+ * }
32
+ *
33
+ * type PostConnection {
34
+ * edges: [PostEdge]
35
+ * pageInfo: PageInfo!
36
+ * }
37
+ *
38
+ * type PostEdge {
39
+ * cursor: String
40
+ * node: Post
41
+ * }
42
+ *
43
+ * type PageInfo {
44
+ * hasNextPage: Boolean!
45
+ * hasPreviousPage: Boolean!
46
+ * startCursor: String
47
+ * endCursor: String
48
+ * }
49
+ *
50
+ * ```
51
+ */
52
+ export declare class ConnectionPlugin extends TransformerPluginBase {
53
+ constructor(context: ITransformerContext);
54
+ private _getConnectionTarget;
55
+ private _getFieldConnection;
56
+ private _setConnectionArguments;
57
+ private _createConnection;
58
+ before(): void;
59
+ match(definition: DefinitionNode): boolean;
60
+ execute(definition: ObjectNode | InterfaceNode): void;
61
+ }
62
+ export declare const connectionPlugin: (options?: unknown) => import("@gqlbase/core/plugins").IPluginFactory;
63
+ //# sourceMappingURL=ConnectionPlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectionPlugin.d.ts","sourceRoot":"","sources":["../../../src/relay/ConnectionPlugin/ConnectionPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAuB,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EACL,cAAc,EAEd,aAAa,EACb,UAAU,EAQX,MAAM,0BAA0B,CAAC;AAalC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAEH,qBAAa,gBAAiB,SAAQ,qBAAqB;gBAC7C,OAAO,EAAE,mBAAmB;IAIxC,OAAO,CAAC,oBAAoB;IAoB5B,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,uBAAuB;IAU/B,OAAO,CAAC,iBAAiB;IAqDlB,MAAM,IAAI,IAAI;IAad,KAAK,CAAC,UAAU,EAAE,cAAc,GAAG,OAAO;IAY1C,OAAO,CAAC,UAAU,EAAE,UAAU,GAAG,aAAa;CAatD;AAED,eAAO,MAAM,gBAAgB,uEAAwC,CAAC"}
@@ -0,0 +1,156 @@
1
+ import { createPluginFactory, TransformerPluginBase } from "@gqlbase/core/plugins";
2
+ import { InputValueNode, InterfaceNode, ObjectNode, FieldNode, NonNullTypeNode, ListTypeNode, NamedTypeNode, DirectiveNode, ArgumentNode, ValueNode, } from "@gqlbase/core/definition";
3
+ import { TransformerPluginExecutionError } from "@gqlbase/shared/errors";
4
+ import { pascalCase } from "@gqlbase/shared/format";
5
+ import { RfcDirective, UtilityDirective } from "../../base/index.js";
6
+ import { isPaginationConnection, isRelationField, isValidRelationTarget, parseFieldRelation, } from "../../base/RelationsPlugin/index.js";
7
+ import { isRelayConnection, isRelayEdge } from "./ConnectionPlugin.utils.js";
8
+ /**
9
+ * Transforms many relationships into Relay compaticale connections, and adds the necessary fields and arguments to support cursor based pagination.
10
+ *
11
+ * @example
12
+ * ```graphql
13
+ * # Before
14
+ * type User {
15
+ * id: ID!
16
+ * name: String!
17
+ * posts: Post `@hasMany`
18
+ * }
19
+ *
20
+ * type Post {
21
+ * id: ID!
22
+ * title: String!
23
+ * }
24
+ *
25
+ * # After
26
+ * type User {
27
+ * id: ID!
28
+ * name: String!
29
+ * posts: PostConnection
30
+ * }
31
+ *
32
+ * type Post {
33
+ * id: ID!
34
+ * title: String!
35
+ * }
36
+ *
37
+ * type PostConnection {
38
+ * edges: [PostEdge]
39
+ * pageInfo: PageInfo!
40
+ * }
41
+ *
42
+ * type PostEdge {
43
+ * cursor: String
44
+ * node: Post
45
+ * }
46
+ *
47
+ * type PageInfo {
48
+ * hasNextPage: Boolean!
49
+ * hasPreviousPage: Boolean!
50
+ * startCursor: String
51
+ * endCursor: String
52
+ * }
53
+ *
54
+ * ```
55
+ */
56
+ export class ConnectionPlugin extends TransformerPluginBase {
57
+ constructor(context) {
58
+ super("ConnectionPlugin", context);
59
+ }
60
+ _getConnectionTarget(object, field) {
61
+ const target = this.context.document.getNode(field.type.getTypeName());
62
+ if (!target || !isValidRelationTarget(target)) {
63
+ throw new TransformerPluginExecutionError(this.name, `Type ${target?.name ?? "unknwon type"} is not a valid connection target for ${object.name}.${field.name} `);
64
+ }
65
+ if (isPaginationConnection(target)) {
66
+ throw new TransformerPluginExecutionError(this.name, `Unexpected conflicting pagination connection type ${target.name} used as a connection target for ${object.name}.${field.name}. Make sure you set "usePaginationTypes" to "false" when using relay ConnectionPlugin.`);
67
+ }
68
+ return target;
69
+ }
70
+ _getFieldConnection(object, field) {
71
+ if (!isRelationField(field)) {
72
+ return null;
73
+ }
74
+ const target = this._getConnectionTarget(object, field);
75
+ return parseFieldRelation(object, field, target);
76
+ }
77
+ _setConnectionArguments(field) {
78
+ if (!field.hasArgument("first")) {
79
+ field.addArgument(InputValueNode.create("first", NamedTypeNode.create("Int")));
80
+ }
81
+ if (!field.hasArgument("after")) {
82
+ field.addArgument(InputValueNode.create("after", NamedTypeNode.create("String")));
83
+ }
84
+ }
85
+ _createConnection(field, connection) {
86
+ const { target } = connection;
87
+ const hasSemanticNonNull = this.context.document.hasNode(RfcDirective.SEMANTIC_NON_NULL);
88
+ if (!isRelayConnection(target)) {
89
+ const connectionTypeName = pascalCase(target.name, "connection");
90
+ const edgeTypeName = pascalCase(target.name, "edge");
91
+ let connectionType = this.context.document.getNode(connectionTypeName);
92
+ let edgeType = this.context.document.getNode(edgeTypeName);
93
+ if (!connectionType) {
94
+ connectionType = ObjectNode.create(connectionTypeName, [
95
+ FieldNode.create("edges", ListTypeNode.create(NamedTypeNode.create(edgeTypeName)), null, hasSemanticNonNull
96
+ ? [
97
+ DirectiveNode.create(RfcDirective.SEMANTIC_NON_NULL, [
98
+ ArgumentNode.create("levels", ValueNode.list([ValueNode.int(0), ValueNode.int(1)])),
99
+ ]),
100
+ ]
101
+ : undefined),
102
+ FieldNode.create("pageInfo", NonNullTypeNode.create("PageInfo")),
103
+ ]);
104
+ this.context.document.addNode(connectionType);
105
+ }
106
+ if (!edgeType) {
107
+ edgeType = ObjectNode.create(edgeTypeName, [
108
+ FieldNode.create("cursor", NamedTypeNode.create("String"), null, [
109
+ DirectiveNode.create(UtilityDirective.CLIENT_ONLY),
110
+ ]),
111
+ FieldNode.create("node", NamedTypeNode.create(target.name), null, [
112
+ DirectiveNode.create(UtilityDirective.CLIENT_ONLY),
113
+ ]),
114
+ ]);
115
+ this.context.document.addNode(edgeType);
116
+ }
117
+ this._setConnectionArguments(field);
118
+ field.setType(NonNullTypeNode.create(connectionTypeName));
119
+ }
120
+ }
121
+ before() {
122
+ if (!this.context.document.hasNode("PageInfo")) {
123
+ this.context.document.addNode(ObjectNode.create("PageInfo", [
124
+ FieldNode.create("hasNextPage", NonNullTypeNode.create("Boolean")),
125
+ FieldNode.create("hasPreviousPage", NonNullTypeNode.create("Boolean")),
126
+ FieldNode.create("startCursor", NamedTypeNode.create("String")),
127
+ FieldNode.create("endCursor", NamedTypeNode.create("String")),
128
+ ]));
129
+ }
130
+ }
131
+ match(definition) {
132
+ if (definition instanceof InterfaceNode || definition instanceof ObjectNode) {
133
+ if (definition.name === "Mutation")
134
+ return false;
135
+ if (isRelayConnection(definition) || isRelayEdge(definition))
136
+ return false;
137
+ if (!definition.fields?.length)
138
+ return false;
139
+ return true;
140
+ }
141
+ return false;
142
+ }
143
+ execute(definition) {
144
+ for (const field of definition.fields ?? []) {
145
+ const connection = this._getFieldConnection(definition, field);
146
+ if (!connection) {
147
+ continue;
148
+ }
149
+ if (connection.type === "oneToMany") {
150
+ this._createConnection(field, connection);
151
+ }
152
+ }
153
+ }
154
+ }
155
+ export const connectionPlugin = createPluginFactory(ConnectionPlugin);
156
+ //# sourceMappingURL=ConnectionPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectionPlugin.js","sourceRoot":"","sources":["../../../src/relay/ConnectionPlugin/ConnectionPlugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAEL,cAAc,EACd,aAAa,EACb,UAAU,EACV,SAAS,EACT,eAAe,EACf,YAAY,EACZ,aAAa,EACb,aAAa,EACb,YAAY,EACZ,SAAS,GACV,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,+BAA+B,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAEL,sBAAsB,EACtB,eAAe,EACf,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE7E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAEH,MAAM,OAAO,gBAAiB,SAAQ,qBAAqB;IACzD,YAAY,OAA4B;QACtC,KAAK,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAEO,oBAAoB,CAAC,MAAkC,EAAE,KAAgB;QAC/E,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAEvE,IAAI,CAAC,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,+BAA+B,CACvC,IAAI,CAAC,IAAI,EACT,QAAQ,MAAM,EAAE,IAAI,IAAI,cAAc,yCAAyC,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,GAAG,CAC5G,CAAC;QACJ,CAAC;QAED,IAAI,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,+BAA+B,CACvC,IAAI,CAAC,IAAI,EACT,qDAAqD,MAAM,CAAC,IAAI,oCAAoC,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,wFAAwF,CACtN,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,mBAAmB,CACzB,MAAkC,EAClC,KAAgB;QAEhB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAExD,OAAO,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAEO,uBAAuB,CAAC,KAAgB;QAC9C,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;IAEO,iBAAiB,CAAC,KAAgB,EAAE,UAA6B;QACvE,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;QAE9B,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;QAEzF,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,MAAM,kBAAkB,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YACjE,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAErD,IAAI,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,kBAAkB,CAAe,CAAC;YACrF,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAe,CAAC;YAEzE,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,kBAAkB,EAAE;oBACrD,SAAS,CAAC,MAAM,CACd,OAAO,EACP,YAAY,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,EACvD,IAAI,EACJ,kBAAkB;wBAChB,CAAC,CAAC;4BACE,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,iBAAiB,EAAE;gCACnD,YAAY,CAAC,MAAM,CACjB,QAAQ,EACR,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CACrD;6BACF,CAAC;yBACH;wBACH,CAAC,CAAC,SAAS,CACd;oBACD,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;iBACjE,CAAC,CAAC;gBAEH,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YAChD,CAAC;YAED,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,EAAE;oBACzC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE;wBAC/D,aAAa,CAAC,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC;qBACnD,CAAC;oBACF,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE;wBAChE,aAAa,CAAC,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC;qBACnD,CAAC;iBACH,CAAC,CAAC;gBAEH,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC1C,CAAC;YAED,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;YACpC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAEM,MAAM;QACX,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAC3B,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE;gBAC5B,SAAS,CAAC,MAAM,CAAC,aAAa,EAAE,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAClE,SAAS,CAAC,MAAM,CAAC,iBAAiB,EAAE,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACtE,SAAS,CAAC,MAAM,CAAC,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC/D,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;aAC9D,CAAC,CACH,CAAC;QACJ,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,UAA0B;QACrC,IAAI,UAAU,YAAY,aAAa,IAAI,UAAU,YAAY,UAAU,EAAE,CAAC;YAC5E,IAAI,UAAU,CAAC,IAAI,KAAK,UAAU;gBAAE,OAAO,KAAK,CAAC;YACjD,IAAI,iBAAiB,CAAC,UAAU,CAAC,IAAI,WAAW,CAAC,UAAU,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC3E,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM;gBAAE,OAAO,KAAK,CAAC;YAE7C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,OAAO,CAAC,UAAsC;QACnD,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;YAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YAE/D,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,SAAS;YACX,CAAC;YAED,IAAI,UAAU,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBACpC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,gBAAgB,CAAC,CAAC"}