@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
@@ -0,0 +1,4 @@
1
+ import { DefinitionNode } from "@gqlbase/core/definition";
2
+ export declare const isRelayConnection: (node: DefinitionNode) => boolean;
3
+ export declare const isRelayEdge: (node: DefinitionNode) => boolean;
4
+ //# sourceMappingURL=ConnectionPlugin.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectionPlugin.utils.d.ts","sourceRoot":"","sources":["../../../src/relay/ConnectionPlugin/ConnectionPlugin.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAc,MAAM,0BAA0B,CAAC;AAEtE,eAAO,MAAM,iBAAiB,GAAI,MAAM,cAAc,KAAG,OASxD,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,MAAM,cAAc,KAAG,OASlD,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { ObjectNode } from "@gqlbase/core/definition";
2
+ export const isRelayConnection = (node) => {
3
+ if (node instanceof ObjectNode) {
4
+ if (!node.name.endsWith("Connection"))
5
+ return false;
6
+ if (!node.fields || node.fields.length < 2)
7
+ return false;
8
+ if (!node.hasField("edges") || !node.hasField("pageInfo"))
9
+ return false;
10
+ return true;
11
+ }
12
+ return false;
13
+ };
14
+ export const isRelayEdge = (node) => {
15
+ if (node instanceof ObjectNode) {
16
+ if (!node.name.endsWith("Edge"))
17
+ return false;
18
+ if (!node.fields || node.fields.length < 2)
19
+ return false;
20
+ if (!node.hasField("node") || !node.hasField("cursor"))
21
+ return false;
22
+ return true;
23
+ }
24
+ return false;
25
+ };
26
+ //# sourceMappingURL=ConnectionPlugin.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectionPlugin.utils.js","sourceRoot":"","sources":["../../../src/relay/ConnectionPlugin/ConnectionPlugin.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAoB,EAAW,EAAE;IACjE,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,UAAU,CAAC;YAAE,OAAO,KAAK,CAAC;QACxE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAoB,EAAW,EAAE;IAC3D,IAAI,IAAI,YAAY,UAAU,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAC;QAC9C,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QACzD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;QACrE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { ConnectionPlugin, connectionPlugin } from "./ConnectionPlugin.js";
2
+ export { isRelayConnection, isRelayEdge } from "./ConnectionPlugin.utils.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/relay/ConnectionPlugin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { ConnectionPlugin, connectionPlugin } from "./ConnectionPlugin.js";
2
+ export { isRelayConnection, isRelayEdge } from "./ConnectionPlugin.utils.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/relay/ConnectionPlugin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC"}
@@ -1,16 +1,40 @@
1
- import { type ITransformerPlugin } from "@gqlbase/core/plugins";
1
+ import { TransformerPluginBase } from "@gqlbase/core/plugins";
2
2
  import type { ITransformerContext } from "@gqlbase/core/context";
3
3
  import { DefinitionNode, ObjectNode } from "@gqlbase/core/definition";
4
4
  /**
5
5
  * Adds a `Node` interface with an `id: ID!` field to the schema and ensures that all types that implement the `Node` interface also have the `id: ID!` field.
6
6
  *
7
- * @dependency ModelPlugin
7
+ * @definition
8
+ * ```graphql
9
+ * interface Node {
10
+ * id: ID!
11
+ * }
12
+ * ```
13
+ *
14
+ * @example
15
+ * ```graphql
16
+ * # Before
17
+ * type User `@model` {
18
+ * name: String!
19
+ * }
20
+ *
21
+ * # After
22
+ * interface Node {
23
+ * id: ID!
24
+ * }
25
+ *
26
+ * type User implements Node `@model` {
27
+ * id: ID!
28
+ * name: String!
29
+ * }
30
+ *
31
+ * type Query {
32
+ * node(id: ID!): Node @hasOne
33
+ * }
34
+ * ```
8
35
  */
9
- export declare class NodeInterfacePlugin implements ITransformerPlugin {
10
- readonly name = "NodeInterfacePlugin";
11
- readonly context: ITransformerContext;
36
+ export declare class NodeInterfacePlugin extends TransformerPluginBase {
12
37
  constructor(context: ITransformerContext);
13
- init(): void;
14
38
  match(definition: DefinitionNode): boolean;
15
39
  before(): void;
16
40
  execute(definition: ObjectNode): void;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeInterfacePlugin.d.ts","sourceRoot":"","sources":["../../../src/relay/NodeInterfacePlugin/NodeInterfacePlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EACL,cAAc,EAOd,UAAU,EACX,MAAM,0BAA0B,CAAC;AAIlC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,qBAAa,mBAAoB,SAAQ,qBAAqB;gBAChD,OAAO,EAAE,mBAAmB;IAIxC,KAAK,CAAC,UAAU,EAAE,cAAc,GAAG,OAAO;IAU1C,MAAM,IAAI,IAAI;IAyBd,OAAO,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IA4B9B,KAAK,IAAI,IAAI;CAUrB;AAED,eAAO,MAAM,mBAAmB,uEAA2C,CAAC"}
@@ -1,20 +1,42 @@
1
- import { createPluginFactory } from "@gqlbase/core/plugins";
1
+ import { createPluginFactory, TransformerPluginBase } from "@gqlbase/core/plugins";
2
2
  import { DirectiveNode, FieldNode, InputValueNode, InterfaceNode, NamedTypeNode, NonNullTypeNode, ObjectNode, } from "@gqlbase/core/definition";
3
3
  import { InvalidDefinitionError, TransformerPluginExecutionError } from "@gqlbase/shared/errors";
4
- import { isModel } from "../base/index.js";
4
+ import { isModel } from "../../base/index.js";
5
5
  /**
6
6
  * Adds a `Node` interface with an `id: ID!` field to the schema and ensures that all types that implement the `Node` interface also have the `id: ID!` field.
7
7
  *
8
- * @dependency ModelPlugin
8
+ * @definition
9
+ * ```graphql
10
+ * interface Node {
11
+ * id: ID!
12
+ * }
13
+ * ```
14
+ *
15
+ * @example
16
+ * ```graphql
17
+ * # Before
18
+ * type User `@model` {
19
+ * name: String!
20
+ * }
21
+ *
22
+ * # After
23
+ * interface Node {
24
+ * id: ID!
25
+ * }
26
+ *
27
+ * type User implements Node `@model` {
28
+ * id: ID!
29
+ * name: String!
30
+ * }
31
+ *
32
+ * type Query {
33
+ * node(id: ID!): Node @hasOne
34
+ * }
35
+ * ```
9
36
  */
10
- export class NodeInterfacePlugin {
11
- name = "NodeInterfacePlugin";
12
- context;
37
+ export class NodeInterfacePlugin extends TransformerPluginBase {
13
38
  constructor(context) {
14
- this.context = context;
15
- }
16
- init() {
17
- // No initialization needed
39
+ super("NodeInterfacePlugin", context);
18
40
  }
19
41
  match(definition) {
20
42
  if (definition instanceof ObjectNode) {
@@ -25,15 +47,9 @@ export class NodeInterfacePlugin {
25
47
  return false;
26
48
  }
27
49
  before() {
28
- let node = this.context.document.getNode("Node");
29
- if (node) {
30
- if (!(node instanceof InterfaceNode)) {
31
- throw new InvalidDefinitionError("Node type must be an interface");
32
- }
33
- }
34
- else {
35
- node = InterfaceNode.create("Node", []);
36
- this.context.document.addNode(node);
50
+ const node = this.context.document.getOrCreateNode("Node", InterfaceNode.create("Node", []));
51
+ if (!(node instanceof InterfaceNode)) {
52
+ throw new InvalidDefinitionError("Node type must be an interface");
37
53
  }
38
54
  if (!node.hasField("id")) {
39
55
  node.addField(FieldNode.create("id", NonNullTypeNode.create(NamedTypeNode.create("ID"))));
@@ -44,10 +60,7 @@ export class NodeInterfacePlugin {
44
60
  }
45
61
  }
46
62
  execute(definition) {
47
- const nodeInterface = this.context.document.getNode("Node");
48
- if (!nodeInterface) {
49
- throw new TransformerPluginExecutionError(this.name, "Node Interface not found. Make sure you run `plugin.init()` before executing.");
50
- }
63
+ const nodeInterface = this.context.document.getNodeOrThrow("Node");
51
64
  // In definition has directive `@model` it should also implement `Node` interface
52
65
  if (isModel(definition) && !definition.hasInterface("Node")) {
53
66
  definition.addInterface(nodeInterface.name);
@@ -68,10 +81,7 @@ export class NodeInterfacePlugin {
68
81
  }
69
82
  }
70
83
  after() {
71
- const iface = this.context.document.getNode("Node");
72
- if (!iface || !(iface instanceof InterfaceNode)) {
73
- throw new TransformerPluginExecutionError(this.name, "Node Interface not found. Make sure you run `plugin.init()` before executing.");
74
- }
84
+ const iface = this.context.document.getNodeOrThrow("Node");
75
85
  // Node interface should have only 1 field, the `id`
76
86
  for (const field of iface.fields ?? []) {
77
87
  if (field.name !== "id") {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeInterfacePlugin.js","sourceRoot":"","sources":["../../../src/relay/NodeInterfacePlugin/NodeInterfacePlugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { NodeInterfacePlugin, nodeInterfacePlugin } from "./NodeInterfacePlugin.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/relay/NodeInterfacePlugin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { NodeInterfacePlugin, nodeInterfacePlugin } from "./NodeInterfacePlugin.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/relay/NodeInterfacePlugin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -1,3 +1,4 @@
1
- export { ConnectionPlugin, ConnectionDirective, connectionPlugin, isConnectionNode, isEdgeNode, } from "./ConnectionPlugin.js";
2
- export { NodeInterfacePlugin, nodeInterfacePlugin } from "./NodeInterfacePlugin.js";
1
+ export { NodeInterfacePlugin, nodeInterfacePlugin } from "./NodeInterfacePlugin/index.js";
2
+ export { ConnectionPlugin, connectionPlugin, isRelayConnection, isRelayEdge, } from "./ConnectionPlugin/index.js";
3
+ export { relayPreset } from "./relayPreset.js";
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/relay/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,GACX,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/relay/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1F,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,GACZ,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,3 +1,4 @@
1
- export { ConnectionPlugin, ConnectionDirective, connectionPlugin, isConnectionNode, isEdgeNode, } from "./ConnectionPlugin.js";
2
- export { NodeInterfacePlugin, nodeInterfacePlugin } from "./NodeInterfacePlugin.js";
1
+ export { NodeInterfacePlugin, nodeInterfacePlugin } from "./NodeInterfacePlugin/index.js";
2
+ export { ConnectionPlugin, connectionPlugin, isRelayConnection, isRelayEdge, } from "./ConnectionPlugin/index.js";
3
+ export { relayPreset } from "./relayPreset.js";
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/relay/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,GACX,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/relay/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1F,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,GACZ,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,5 +1,5 @@
1
- import { connectionPlugin } from "./ConnectionPlugin.js";
2
- import { nodeInterfacePlugin } from "./NodeInterfacePlugin.js";
1
+ import { connectionPlugin } from "./ConnectionPlugin/index.js";
2
+ import { nodeInterfacePlugin } from "./NodeInterfacePlugin/index.js";
3
3
  /**
4
4
  * A preset that includes all the Relay plugins
5
5
  *
@@ -1 +1 @@
1
- {"version":3,"file":"relayPreset.js","sourceRoot":"","sources":["../../src/relay/relayPreset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D;;;;;;;;GAQG;AAEH,MAAM,UAAU,WAAW;IACzB,OAAO,CAAC,mBAAmB,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC;AACrD,CAAC"}
1
+ {"version":3,"file":"relayPreset.js","sourceRoot":"","sources":["../../src/relay/relayPreset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAErE;;;;;;;;GAQG;AAEH,MAAM,UAAU,WAAW;IACzB,OAAO,CAAC,mBAAmB,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC;AACrD,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@gqlbase/plugins",
3
3
  "description": "Collection of plugins and presets for gqlbase, providing common transformations and utilities that can be used in GraphQL schema transformation processes.",
4
- "version": "0.0.6",
4
+ "version": "0.0.7",
5
5
  "sideEffects": false,
6
6
  "type": "module",
7
7
  "license": "MIT",
@@ -42,8 +42,8 @@
42
42
  "test": "vitest run"
43
43
  },
44
44
  "dependencies": {
45
- "@gqlbase/core": "^0.0.6",
46
- "@gqlbase/shared": "^0.0.6"
45
+ "@gqlbase/core": "^0.0.7",
46
+ "@gqlbase/shared": "^0.0.7"
47
47
  },
48
48
  "peerDependencies": {
49
49
  "graphql": ">=16"
@@ -1,46 +0,0 @@
1
- import { ITransformerContext } from "@gqlbase/core/context";
2
- import { ITransformerPlugin } from "@gqlbase/core/plugins";
3
- import { DefinitionNode, InterfaceNode, ObjectNode, UnionNode } from "@gqlbase/core/definition";
4
- export declare const ConnectionDirective: {
5
- readonly HAS_ONE: "hasOne";
6
- readonly HAS_MANY: "hasMany";
7
- };
8
- export declare const RelationType: {
9
- readonly ONE_TO_ONE: "oneToOne";
10
- readonly ONE_TO_MANY: "oneToMany";
11
- readonly MANY_TO_MANY: "manyToMany";
12
- };
13
- type Relation = (typeof RelationType)[keyof typeof RelationType];
14
- export declare const isConnectionNode: (node: DefinitionNode) => boolean;
15
- export declare const isEdgeNode: (node: DefinitionNode) => boolean;
16
- export interface DirectiveArgs {
17
- relation?: Relation;
18
- key?: string;
19
- }
20
- export interface FieldConnection {
21
- relation: Relation;
22
- target: ObjectNode | InterfaceNode | UnionNode;
23
- key?: string;
24
- }
25
- export declare class ConnectionPlugin implements ITransformerPlugin {
26
- readonly name = "ConnectionPlugin";
27
- readonly context: ITransformerContext;
28
- constructor(context: ITransformerContext);
29
- private _getConnectionTarget;
30
- private _getFieldConnection;
31
- private _setConnectionArguments;
32
- /**
33
- * For one-to-many connections user should be able to add the connection key via mutations.
34
- * By default the connection key is _writeOnly_ meaning we only add it to the mutation inputs.
35
- */
36
- private _setConnectionKey;
37
- private _createConnectionTypes;
38
- private _createEdgesConnection;
39
- init(): void;
40
- match(definition: DefinitionNode): boolean;
41
- normalize(definition: ObjectNode | InterfaceNode): void;
42
- execute(definition: ObjectNode | InterfaceNode): void;
43
- }
44
- export declare const connectionPlugin: (options?: unknown) => import("@gqlbase/core/plugins").IPluginFactory;
45
- export {};
46
- //# sourceMappingURL=ConnectionPlugin.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConnectionPlugin.d.ts","sourceRoot":"","sources":["../../src/relay/ConnectionPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAuB,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EACL,cAAc,EAEd,aAAa,EACb,UAAU,EAEV,SAAS,EAKV,MAAM,0BAA0B,CAAC;AAMlC,eAAO,MAAM,mBAAmB;;;CAGtB,CAAC;AAEX,eAAO,MAAM,YAAY;;;;CAIf,CAAC;AAEX,KAAK,QAAQ,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAEjE,eAAO,MAAM,gBAAgB,GAAI,MAAM,cAAc,KAAG,OASvD,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,MAAM,cAAc,KAAG,OASjD,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,UAAU,GAAG,aAAa,GAAG,SAAS,CAAC;IAC/C,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,gBAAiB,YAAW,kBAAkB;IACzD,SAAgB,IAAI,sBAAsB;IAC1C,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;gBAE1B,OAAO,EAAE,mBAAmB;IAIxC,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,mBAAmB;IAwD3B,OAAO,CAAC,uBAAuB;IAU/B;;;OAGG;IAEH,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,sBAAsB;IAwC9B,OAAO,CAAC,sBAAsB;IAQvB,IAAI,IAAI,IAAI;IAWZ,KAAK,CAAC,UAAU,EAAE,cAAc,GAAG,OAAO;IAY1C,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,aAAa,GAAG,IAAI;IAiCvD,OAAO,CAAC,UAAU,EAAE,UAAU,GAAG,aAAa;CAoBtD;AAED,eAAO,MAAM,gBAAgB,uEAAwC,CAAC"}
@@ -1,200 +0,0 @@
1
- import { createPluginFactory } from "@gqlbase/core/plugins";
2
- import { InputValueNode, InterfaceNode, ObjectNode, FieldNode, UnionNode, NonNullTypeNode, ListTypeNode, NamedTypeNode, DirectiveNode, } from "@gqlbase/core/definition";
3
- import { TransformerPluginExecutionError } from "@gqlbase/shared/errors";
4
- import { camelCase, pascalCase } from "@gqlbase/shared/format";
5
- import { UtilityDirective } from "../base/index.js";
6
- import { isRelationField } from "../base/RelationsPlugin/index.js";
7
- export const ConnectionDirective = {
8
- HAS_ONE: "hasOne",
9
- HAS_MANY: "hasMany",
10
- };
11
- export const RelationType = {
12
- ONE_TO_ONE: "oneToOne",
13
- ONE_TO_MANY: "oneToMany",
14
- MANY_TO_MANY: "manyToMany",
15
- };
16
- export const isConnectionNode = (node) => {
17
- if (node instanceof ObjectNode) {
18
- if (!node.name.endsWith("Connection"))
19
- return false;
20
- if (!node.fields || node.fields.length < 2)
21
- return false;
22
- if (!node.hasField("edges") || !node.hasField("pageInfo"))
23
- return false;
24
- return true;
25
- }
26
- return false;
27
- };
28
- export const isEdgeNode = (node) => {
29
- if (node instanceof ObjectNode) {
30
- if (!node.name.endsWith("Edge"))
31
- return false;
32
- if (!node.fields || node.fields.length < 2)
33
- return false;
34
- if (!node.hasField("node") || !node.hasField("cursor"))
35
- return false;
36
- return true;
37
- }
38
- return false;
39
- };
40
- export class ConnectionPlugin {
41
- name = "ConnectionPlugin";
42
- context;
43
- constructor(context) {
44
- this.context = context;
45
- }
46
- _getConnectionTarget(field) {
47
- const fieldType = this.context.document.getNode(field.type.getTypeName());
48
- if (isRelationField(field)) {
49
- return fieldType;
50
- }
51
- return undefined;
52
- }
53
- _getFieldConnection(object, field) {
54
- const target = this._getConnectionTarget(field);
55
- if (!target)
56
- return null;
57
- if (!(target instanceof ObjectNode) &&
58
- !(target instanceof InterfaceNode) &&
59
- !(target instanceof UnionNode)) {
60
- throw new TransformerPluginExecutionError(this.name, `Type ${target.name} is not a valid connection target for ${object.name}.${field.name} `);
61
- }
62
- let directive = field.getDirective(ConnectionDirective.HAS_ONE);
63
- if (directive) {
64
- if (field.hasDirective(ConnectionDirective.HAS_MANY)) {
65
- throw new TransformerPluginExecutionError(this.name, `Multiple connection directive detected for field: ${field.name}`);
66
- }
67
- const args = directive.getArgumentsJSON();
68
- return {
69
- relation: RelationType.ONE_TO_ONE,
70
- target: target,
71
- key: args.key ?? camelCase(field.name, "id"),
72
- };
73
- }
74
- directive = field.getDirective(ConnectionDirective.HAS_MANY);
75
- if (directive) {
76
- const args = directive.getArgumentsJSON();
77
- return {
78
- relation: args.relation ?? RelationType.ONE_TO_MANY,
79
- target: target,
80
- key: args.key,
81
- };
82
- }
83
- throw new TransformerPluginExecutionError(this.name, `Could not find connection directive: ${field.name}`);
84
- }
85
- _setConnectionArguments(field) {
86
- if (!field.hasArgument("first")) {
87
- field.addArgument(InputValueNode.create("first", NamedTypeNode.create("Int")));
88
- }
89
- if (!field.hasArgument("after")) {
90
- field.addArgument(InputValueNode.create("after", NamedTypeNode.create("String")));
91
- }
92
- }
93
- /**
94
- * For one-to-many connections user should be able to add the connection key via mutations.
95
- * By default the connection key is _writeOnly_ meaning we only add it to the mutation inputs.
96
- */
97
- _setConnectionKey(node, key, isPrivate = false) {
98
- if (!node.hasField(key)) {
99
- node.addField(FieldNode.create(key, NamedTypeNode.create("ID"), null, [
100
- isPrivate
101
- ? DirectiveNode.create(UtilityDirective.SERVER_ONLY)
102
- : DirectiveNode.create(UtilityDirective.WRITE_ONLY),
103
- ]));
104
- }
105
- }
106
- _createConnectionTypes(field, connection) {
107
- const { target } = connection;
108
- if (!isConnectionNode(target)) {
109
- const connectionTypeName = pascalCase(target.name, "connection");
110
- const edgeTypeName = pascalCase(target.name, "edge");
111
- let connectionType = this.context.document.getNode(connectionTypeName);
112
- let edgeType = this.context.document.getNode(edgeTypeName);
113
- if (!connectionType) {
114
- connectionType = ObjectNode.create(connectionTypeName, [
115
- FieldNode.create("edges", NonNullTypeNode.create(ListTypeNode.create(NonNullTypeNode.create(edgeTypeName)))),
116
- FieldNode.create("pageInfo", NonNullTypeNode.create("PageInfo")),
117
- ]);
118
- this.context.document.addNode(connectionType);
119
- }
120
- if (!edgeType) {
121
- edgeType = ObjectNode.create(`${target.name}Edge`, [
122
- FieldNode.create("cursor", NamedTypeNode.create("String"), null, [
123
- DirectiveNode.create(UtilityDirective.CLIENT_ONLY),
124
- ]),
125
- FieldNode.create("node", NamedTypeNode.create(target.name), null, [
126
- DirectiveNode.create(UtilityDirective.CLIENT_ONLY),
127
- ]),
128
- ]);
129
- this.context.document.addNode(edgeType);
130
- }
131
- this._setConnectionArguments(field);
132
- field.setType(NonNullTypeNode.create(connectionTypeName));
133
- }
134
- }
135
- _createEdgesConnection(parent, field, connection) {
136
- this._createConnectionTypes(field, connection);
137
- }
138
- init() {
139
- this.context.base.addNode(ObjectNode.create("PageInfo", [
140
- FieldNode.create("hasNextPage", NamedTypeNode.create("Boolean")),
141
- FieldNode.create("hasPreviousPage", NamedTypeNode.create("Boolean")),
142
- FieldNode.create("startCursor", NamedTypeNode.create("String")),
143
- FieldNode.create("endCursor", NamedTypeNode.create("String")),
144
- ]));
145
- }
146
- match(definition) {
147
- if (definition instanceof InterfaceNode || definition instanceof ObjectNode) {
148
- if (definition.name === "Mutation")
149
- return false;
150
- if (isConnectionNode(definition) || isEdgeNode(definition))
151
- return false;
152
- if (!definition.fields?.length)
153
- return false;
154
- return true;
155
- }
156
- return false;
157
- }
158
- normalize(definition) {
159
- for (const field of definition.fields ?? []) {
160
- const connection = this._getFieldConnection(definition, field);
161
- if (!connection) {
162
- continue;
163
- }
164
- if (connection.relation === RelationType.ONE_TO_ONE && connection.key) {
165
- this._setConnectionKey(definition, connection.key, true);
166
- }
167
- if (connection.relation === RelationType.ONE_TO_MANY &&
168
- !isConnectionNode(connection.target)) {
169
- const sourceKey = connection.key ?? camelCase(definition.name, "id");
170
- if (connection.target instanceof UnionNode) {
171
- for (const type of connection.target.types ?? []) {
172
- const unionType = this.context.document.getNode(type.getTypeName());
173
- if (unionType instanceof ObjectNode || unionType instanceof InterfaceNode) {
174
- this._setConnectionKey(unionType, sourceKey, false);
175
- }
176
- }
177
- }
178
- else {
179
- this._setConnectionKey(connection.target, sourceKey, false);
180
- }
181
- }
182
- }
183
- }
184
- execute(definition) {
185
- if (!definition.fields) {
186
- throw new TransformerPluginExecutionError(this.name, "Definition does not have any fields. Make sure you run `match` before calling `execute`.");
187
- }
188
- for (const field of definition.fields) {
189
- const connection = this._getFieldConnection(definition, field);
190
- if (!connection) {
191
- continue;
192
- }
193
- if (connection.relation === RelationType.ONE_TO_MANY) {
194
- this._createEdgesConnection(definition, field, connection);
195
- }
196
- }
197
- }
198
- }
199
- export const connectionPlugin = createPluginFactory(ConnectionPlugin);
200
- //# sourceMappingURL=ConnectionPlugin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConnectionPlugin.js","sourceRoot":"","sources":["../../src/relay/ConnectionPlugin.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NodeInterfacePlugin.d.ts","sourceRoot":"","sources":["../../src/relay/NodeInterfacePlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EACL,cAAc,EAOd,UAAU,EACX,MAAM,0BAA0B,CAAC;AAIlC;;;;GAIG;AAEH,qBAAa,mBAAoB,YAAW,kBAAkB;IAC5D,SAAgB,IAAI,yBAAyB;IAC7C,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;gBAE1B,OAAO,EAAE,mBAAmB;IAIjC,IAAI,IAAI,IAAI;IAInB,KAAK,CAAC,UAAU,EAAE,cAAc,GAAG,OAAO;IAU1C,MAAM,IAAI,IAAI;IA8Bd,OAAO,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAmC9B,KAAK,IAAI,IAAI;CAiBrB;AAED,eAAO,MAAM,mBAAmB,uEAA2C,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NodeInterfacePlugin.js","sourceRoot":"","sources":["../../src/relay/NodeInterfacePlugin.ts"],"names":[],"mappings":"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"}