@soda-gql/core 0.9.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/README.md +67 -0
  2. package/dist/adapter.cjs +52 -5
  3. package/dist/adapter.cjs.map +1 -1
  4. package/dist/adapter.d.cts +52 -5
  5. package/dist/adapter.d.cts.map +1 -1
  6. package/dist/adapter.d.ts +52 -5
  7. package/dist/adapter.d.ts.map +1 -1
  8. package/dist/adapter.js +51 -4
  9. package/dist/adapter.js.map +1 -1
  10. package/dist/{index-wkJ6KSwK.d.ts → index-CHshzPrG.d.cts} +343 -66
  11. package/dist/index-CHshzPrG.d.cts.map +1 -0
  12. package/dist/{schema-2qqtKss4.d.ts → index-CnQ5XVCf.d.ts} +371 -300
  13. package/dist/index-CnQ5XVCf.d.ts.map +1 -0
  14. package/dist/{schema-CPTxQbTv.d.cts → index-DnLzk2bC.d.cts} +371 -300
  15. package/dist/index-DnLzk2bC.d.cts.map +1 -0
  16. package/dist/{index-Ib9pb2Si.d.cts → index-J050RXPw.d.ts} +343 -66
  17. package/dist/index-J050RXPw.d.ts.map +1 -0
  18. package/dist/index.cjs +425 -67
  19. package/dist/index.cjs.map +1 -1
  20. package/dist/index.d.cts +4 -125
  21. package/dist/index.d.cts.map +1 -1
  22. package/dist/index.d.ts +4 -125
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +408 -61
  25. package/dist/index.js.map +1 -1
  26. package/dist/runtime.cjs +4 -0
  27. package/dist/runtime.cjs.map +1 -1
  28. package/dist/runtime.d.cts +13 -3
  29. package/dist/runtime.d.cts.map +1 -1
  30. package/dist/runtime.d.ts +13 -3
  31. package/dist/runtime.d.ts.map +1 -1
  32. package/dist/runtime.js +4 -0
  33. package/dist/runtime.js.map +1 -1
  34. package/dist/schema-builder-C9Qj5zQg.js +58 -0
  35. package/dist/schema-builder-C9Qj5zQg.js.map +1 -0
  36. package/dist/schema-builder-CJe30s_R.d.ts +63 -0
  37. package/dist/schema-builder-CJe30s_R.d.ts.map +1 -0
  38. package/dist/schema-builder-CwRmtxHx.d.cts +63 -0
  39. package/dist/schema-builder-CwRmtxHx.d.cts.map +1 -0
  40. package/dist/schema-builder-D2ay11cE.cjs +82 -0
  41. package/dist/schema-builder-D2ay11cE.cjs.map +1 -0
  42. package/package.json +1 -1
  43. package/dist/index-Ib9pb2Si.d.cts.map +0 -1
  44. package/dist/index-wkJ6KSwK.d.ts.map +0 -1
  45. package/dist/schema-2qqtKss4.d.ts.map +0 -1
  46. package/dist/schema-BiYcVVvm.js +0 -171
  47. package/dist/schema-BiYcVVvm.js.map +0 -1
  48. package/dist/schema-CPTxQbTv.d.cts.map +0 -1
  49. package/dist/schema-D2MW4DOF.cjs +0 -207
  50. package/dist/schema-D2MW4DOF.cjs.map +0 -1
  51. package/dist/schema-builder-BYJd50o2.d.cts +0 -97
  52. package/dist/schema-builder-BYJd50o2.d.cts.map +0 -1
  53. package/dist/schema-builder-Dhss2O1I.d.ts +0 -97
  54. package/dist/schema-builder-Dhss2O1I.d.ts.map +0 -1
package/README.md CHANGED
@@ -251,6 +251,73 @@ $var.getVariablePath(varRef, (p) => p.profile.name);
251
251
  // Returns: ["$user", "name"] (variable name + path after variable reference point)
252
252
  ```
253
253
 
254
+ ## Adapter
255
+
256
+ Adapters customize the behavior of your GraphQL system with helpers, metadata configuration, and document transformation.
257
+
258
+ ### Basic Usage
259
+
260
+ ```typescript
261
+ import { defineAdapter } from "@soda-gql/core/adapter";
262
+
263
+ const adapter = defineAdapter({
264
+ helpers: {
265
+ auth: {
266
+ requiresLogin: () => ({ requiresAuth: true }),
267
+ },
268
+ },
269
+ metadata: {
270
+ aggregateFragmentMetadata: (fragments) => ({
271
+ count: fragments.length,
272
+ }),
273
+ schemaLevel: { apiVersion: "v2" },
274
+ },
275
+ transformDocument: ({ document, operationType }) => {
276
+ // Schema-wide document transformation
277
+ return document;
278
+ },
279
+ });
280
+ ```
281
+
282
+ ### Document Transform
283
+
284
+ Operations can also define their own transform with typed metadata:
285
+
286
+ ```typescript
287
+ gql.default(({ query, $var }) =>
288
+ query.operation({
289
+ name: "GetUser",
290
+ metadata: () => ({ cacheHint: 300 }),
291
+ transformDocument: ({ document, metadata }) => {
292
+ // metadata is typed as { cacheHint: number }
293
+ return document;
294
+ },
295
+ fields: ({ f, $ }) => ({ ... }),
296
+ }),
297
+ );
298
+ ```
299
+
300
+ **Best Practice:** Define transform logic in helpers for reusability:
301
+
302
+ ```typescript
303
+ const adapter = defineAdapter({
304
+ helpers: {
305
+ transform: {
306
+ addCache: (ttl: number) => ({ document }) => {
307
+ // Transform logic here
308
+ return document;
309
+ },
310
+ },
311
+ },
312
+ });
313
+
314
+ // Use helper in operation
315
+ query.operation({
316
+ transformDocument: transform.addCache(300),
317
+ ...
318
+ });
319
+ ```
320
+
254
321
  ## Runtime Exports
255
322
 
256
323
  The `/runtime` subpath provides utilities for operation registration and retrieval:
package/dist/adapter.cjs CHANGED
@@ -1,11 +1,11 @@
1
- const require_schema = require('./schema-D2MW4DOF.cjs');
1
+ const require_schema_builder = require('./schema-builder-D2ay11cE.cjs');
2
2
 
3
3
  //#region packages/core/src/adapter/define-adapter.ts
4
4
  /**
5
- * Helper function for defining a unified adapter with helpers and metadata.
6
- * Provides type inference for helpers, aggregateFragmentMetadata and schemaLevel.
5
+ * Helper function for defining a unified adapter with helpers, metadata, and document transformation.
6
+ * Provides type inference for helpers, aggregateFragmentMetadata, schemaLevel, and transformDocument.
7
7
  *
8
- * @example
8
+ * @example Basic adapter with helpers and metadata
9
9
  * ```typescript
10
10
  * import { defineAdapter } from "@soda-gql/core/adapter";
11
11
  * import type { FragmentMetaInfo, OperationMetadata } from "@soda-gql/core";
@@ -26,10 +26,57 @@ const require_schema = require('./schema-D2MW4DOF.cjs');
26
26
  * },
27
27
  * });
28
28
  * ```
29
+ *
30
+ * @example Adapter with document transformation
31
+ * ```typescript
32
+ * import { defineAdapter } from "@soda-gql/core/adapter";
33
+ * import { Kind, visit } from "graphql";
34
+ *
35
+ * export const adapter = defineAdapter({
36
+ * transformDocument: ({ document, operationType }) => {
37
+ * // Add @auth directive to all queries
38
+ * if (operationType === "query") {
39
+ * return visit(document, {
40
+ * OperationDefinition: (node) => ({
41
+ * ...node,
42
+ * directives: [
43
+ * ...(node.directives ?? []),
44
+ * { kind: Kind.DIRECTIVE, name: { kind: Kind.NAME, value: "auth" } },
45
+ * ],
46
+ * }),
47
+ * });
48
+ * }
49
+ * return document;
50
+ * },
51
+ * });
52
+ * ```
53
+ *
54
+ * @example Using helpers for operation-level transform functions (recommended)
55
+ * ```typescript
56
+ * // Define transform functions as helpers for reusability
57
+ * const adapter = defineAdapter({
58
+ * helpers: {
59
+ * transform: {
60
+ * addCacheDirective: (ttl: number) => ({ document }) => {
61
+ * return visit(document, { ... });
62
+ * },
63
+ * },
64
+ * },
65
+ * });
66
+ *
67
+ * // Use helper in operation - clean and declarative
68
+ * gql(({ query, transform }) =>
69
+ * query.operation({
70
+ * name: "GetUser",
71
+ * transformDocument: transform.addCacheDirective(300),
72
+ * fields: ({ f }) => ({ ... }),
73
+ * }),
74
+ * );
75
+ * ```
29
76
  */
30
77
  const defineAdapter = (adapter) => adapter;
31
78
 
32
79
  //#endregion
33
80
  exports.defineAdapter = defineAdapter;
34
- exports.defineScalar = require_schema.defineScalar;
81
+ exports.defineScalar = require_schema_builder.defineScalar;
35
82
  //# sourceMappingURL=adapter.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.cjs","names":[],"sources":["../src/adapter/define-adapter.ts"],"sourcesContent":["import type { Adapter } from \"../types/metadata\";\n\n/**\n * Helper function for defining a unified adapter with helpers and metadata.\n * Provides type inference for helpers, aggregateFragmentMetadata and schemaLevel.\n *\n * @example\n * ```typescript\n * import { defineAdapter } from \"@soda-gql/core/adapter\";\n * import type { FragmentMetaInfo, OperationMetadata } from \"@soda-gql/core\";\n *\n * export const adapter = defineAdapter({\n * helpers: {\n * auth: {\n * requiresLogin: () => ({ requiresAuth: true }),\n * adminOnly: () => ({ requiresAuth: true, role: \"admin\" }),\n * },\n * },\n * metadata: {\n * aggregateFragmentMetadata: (fragments: readonly FragmentMetaInfo<OperationMetadata>[]) =>\n * fragments.map((m) => m.metadata),\n * schemaLevel: {\n * apiVersion: \"v2\",\n * },\n * },\n * });\n * ```\n */\nexport const defineAdapter = <\n THelpers extends object = object,\n TFragmentMetadata = unknown,\n TAggregatedFragmentMetadata = unknown,\n TSchemaLevel = unknown,\n>(\n adapter: Adapter<THelpers, TFragmentMetadata, TAggregatedFragmentMetadata, TSchemaLevel>,\n): Adapter<THelpers, TFragmentMetadata, TAggregatedFragmentMetadata, TSchemaLevel> => adapter;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,MAAa,iBAMX,YACoF"}
1
+ {"version":3,"file":"adapter.cjs","names":[],"sources":["../src/adapter/define-adapter.ts"],"sourcesContent":["import type { Adapter } from \"../types/metadata\";\n\n/**\n * Helper function for defining a unified adapter with helpers, metadata, and document transformation.\n * Provides type inference for helpers, aggregateFragmentMetadata, schemaLevel, and transformDocument.\n *\n * @example Basic adapter with helpers and metadata\n * ```typescript\n * import { defineAdapter } from \"@soda-gql/core/adapter\";\n * import type { FragmentMetaInfo, OperationMetadata } from \"@soda-gql/core\";\n *\n * export const adapter = defineAdapter({\n * helpers: {\n * auth: {\n * requiresLogin: () => ({ requiresAuth: true }),\n * adminOnly: () => ({ requiresAuth: true, role: \"admin\" }),\n * },\n * },\n * metadata: {\n * aggregateFragmentMetadata: (fragments: readonly FragmentMetaInfo<OperationMetadata>[]) =>\n * fragments.map((m) => m.metadata),\n * schemaLevel: {\n * apiVersion: \"v2\",\n * },\n * },\n * });\n * ```\n *\n * @example Adapter with document transformation\n * ```typescript\n * import { defineAdapter } from \"@soda-gql/core/adapter\";\n * import { Kind, visit } from \"graphql\";\n *\n * export const adapter = defineAdapter({\n * transformDocument: ({ document, operationType }) => {\n * // Add @auth directive to all queries\n * if (operationType === \"query\") {\n * return visit(document, {\n * OperationDefinition: (node) => ({\n * ...node,\n * directives: [\n * ...(node.directives ?? []),\n * { kind: Kind.DIRECTIVE, name: { kind: Kind.NAME, value: \"auth\" } },\n * ],\n * }),\n * });\n * }\n * return document;\n * },\n * });\n * ```\n *\n * @example Using helpers for operation-level transform functions (recommended)\n * ```typescript\n * // Define transform functions as helpers for reusability\n * const adapter = defineAdapter({\n * helpers: {\n * transform: {\n * addCacheDirective: (ttl: number) => ({ document }) => {\n * return visit(document, { ... });\n * },\n * },\n * },\n * });\n *\n * // Use helper in operation - clean and declarative\n * gql(({ query, transform }) =>\n * query.operation({\n * name: \"GetUser\",\n * transformDocument: transform.addCacheDirective(300),\n * fields: ({ f }) => ({ ... }),\n * }),\n * );\n * ```\n */\nexport const defineAdapter = <\n THelpers extends object = object,\n TFragmentMetadata = unknown,\n TAggregatedFragmentMetadata = unknown,\n TSchemaLevel = unknown,\n>(\n adapter: Adapter<THelpers, TFragmentMetadata, TAggregatedFragmentMetadata, TSchemaLevel>,\n): Adapter<THelpers, TFragmentMetadata, TAggregatedFragmentMetadata, TSchemaLevel> => adapter;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2EA,MAAa,iBAMX,YACoF"}
@@ -1,13 +1,13 @@
1
- import { N as Adapter } from "./schema-CPTxQbTv.cjs";
2
- import { r as defineScalar } from "./schema-builder-BYJd50o2.cjs";
1
+ import { t as Adapter } from "./index-DnLzk2bC.cjs";
2
+ import { r as defineScalar } from "./schema-builder-CwRmtxHx.cjs";
3
3
 
4
4
  //#region packages/core/src/adapter/define-adapter.d.ts
5
5
 
6
6
  /**
7
- * Helper function for defining a unified adapter with helpers and metadata.
8
- * Provides type inference for helpers, aggregateFragmentMetadata and schemaLevel.
7
+ * Helper function for defining a unified adapter with helpers, metadata, and document transformation.
8
+ * Provides type inference for helpers, aggregateFragmentMetadata, schemaLevel, and transformDocument.
9
9
  *
10
- * @example
10
+ * @example Basic adapter with helpers and metadata
11
11
  * ```typescript
12
12
  * import { defineAdapter } from "@soda-gql/core/adapter";
13
13
  * import type { FragmentMetaInfo, OperationMetadata } from "@soda-gql/core";
@@ -28,6 +28,53 @@ import { r as defineScalar } from "./schema-builder-BYJd50o2.cjs";
28
28
  * },
29
29
  * });
30
30
  * ```
31
+ *
32
+ * @example Adapter with document transformation
33
+ * ```typescript
34
+ * import { defineAdapter } from "@soda-gql/core/adapter";
35
+ * import { Kind, visit } from "graphql";
36
+ *
37
+ * export const adapter = defineAdapter({
38
+ * transformDocument: ({ document, operationType }) => {
39
+ * // Add @auth directive to all queries
40
+ * if (operationType === "query") {
41
+ * return visit(document, {
42
+ * OperationDefinition: (node) => ({
43
+ * ...node,
44
+ * directives: [
45
+ * ...(node.directives ?? []),
46
+ * { kind: Kind.DIRECTIVE, name: { kind: Kind.NAME, value: "auth" } },
47
+ * ],
48
+ * }),
49
+ * });
50
+ * }
51
+ * return document;
52
+ * },
53
+ * });
54
+ * ```
55
+ *
56
+ * @example Using helpers for operation-level transform functions (recommended)
57
+ * ```typescript
58
+ * // Define transform functions as helpers for reusability
59
+ * const adapter = defineAdapter({
60
+ * helpers: {
61
+ * transform: {
62
+ * addCacheDirective: (ttl: number) => ({ document }) => {
63
+ * return visit(document, { ... });
64
+ * },
65
+ * },
66
+ * },
67
+ * });
68
+ *
69
+ * // Use helper in operation - clean and declarative
70
+ * gql(({ query, transform }) =>
71
+ * query.operation({
72
+ * name: "GetUser",
73
+ * transformDocument: transform.addCacheDirective(300),
74
+ * fields: ({ f }) => ({ ... }),
75
+ * }),
76
+ * );
77
+ * ```
31
78
  */
32
79
  declare const defineAdapter: <THelpers extends object = object, TFragmentMetadata = unknown, TAggregatedFragmentMetadata = unknown, TSchemaLevel = unknown>(adapter: Adapter<THelpers, TFragmentMetadata, TAggregatedFragmentMetadata, TSchemaLevel>) => Adapter<THelpers, TFragmentMetadata, TAggregatedFragmentMetadata, TSchemaLevel>;
33
80
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.cts","names":[],"sources":["../src/adapter/define-adapter.ts"],"sourcesContent":[],"mappings":";;;;;;;;AA4BA;;;;;;;;;;;;;;;;;;;;;;;cAAa,uJAMF,QAAQ,UAAU,mBAAmB,6BAA6B,kBAC1E,QAAQ,UAAU,mBAAmB,6BAA6B"}
1
+ {"version":3,"file":"adapter.d.cts","names":[],"sources":["../src/adapter/define-adapter.ts"],"sourcesContent":[],"mappings":";;;;;;;;AA2EA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAAa,uJAMF,QAAQ,UAAU,mBAAmB,6BAA6B,kBAC1E,QAAQ,UAAU,mBAAmB,6BAA6B"}
package/dist/adapter.d.ts CHANGED
@@ -1,13 +1,13 @@
1
- import { N as Adapter } from "./schema-2qqtKss4.js";
2
- import { r as defineScalar } from "./schema-builder-Dhss2O1I.js";
1
+ import { t as Adapter } from "./index-CnQ5XVCf.js";
2
+ import { r as defineScalar } from "./schema-builder-CJe30s_R.js";
3
3
 
4
4
  //#region packages/core/src/adapter/define-adapter.d.ts
5
5
 
6
6
  /**
7
- * Helper function for defining a unified adapter with helpers and metadata.
8
- * Provides type inference for helpers, aggregateFragmentMetadata and schemaLevel.
7
+ * Helper function for defining a unified adapter with helpers, metadata, and document transformation.
8
+ * Provides type inference for helpers, aggregateFragmentMetadata, schemaLevel, and transformDocument.
9
9
  *
10
- * @example
10
+ * @example Basic adapter with helpers and metadata
11
11
  * ```typescript
12
12
  * import { defineAdapter } from "@soda-gql/core/adapter";
13
13
  * import type { FragmentMetaInfo, OperationMetadata } from "@soda-gql/core";
@@ -28,6 +28,53 @@ import { r as defineScalar } from "./schema-builder-Dhss2O1I.js";
28
28
  * },
29
29
  * });
30
30
  * ```
31
+ *
32
+ * @example Adapter with document transformation
33
+ * ```typescript
34
+ * import { defineAdapter } from "@soda-gql/core/adapter";
35
+ * import { Kind, visit } from "graphql";
36
+ *
37
+ * export const adapter = defineAdapter({
38
+ * transformDocument: ({ document, operationType }) => {
39
+ * // Add @auth directive to all queries
40
+ * if (operationType === "query") {
41
+ * return visit(document, {
42
+ * OperationDefinition: (node) => ({
43
+ * ...node,
44
+ * directives: [
45
+ * ...(node.directives ?? []),
46
+ * { kind: Kind.DIRECTIVE, name: { kind: Kind.NAME, value: "auth" } },
47
+ * ],
48
+ * }),
49
+ * });
50
+ * }
51
+ * return document;
52
+ * },
53
+ * });
54
+ * ```
55
+ *
56
+ * @example Using helpers for operation-level transform functions (recommended)
57
+ * ```typescript
58
+ * // Define transform functions as helpers for reusability
59
+ * const adapter = defineAdapter({
60
+ * helpers: {
61
+ * transform: {
62
+ * addCacheDirective: (ttl: number) => ({ document }) => {
63
+ * return visit(document, { ... });
64
+ * },
65
+ * },
66
+ * },
67
+ * });
68
+ *
69
+ * // Use helper in operation - clean and declarative
70
+ * gql(({ query, transform }) =>
71
+ * query.operation({
72
+ * name: "GetUser",
73
+ * transformDocument: transform.addCacheDirective(300),
74
+ * fields: ({ f }) => ({ ... }),
75
+ * }),
76
+ * );
77
+ * ```
31
78
  */
32
79
  declare const defineAdapter: <THelpers extends object = object, TFragmentMetadata = unknown, TAggregatedFragmentMetadata = unknown, TSchemaLevel = unknown>(adapter: Adapter<THelpers, TFragmentMetadata, TAggregatedFragmentMetadata, TSchemaLevel>) => Adapter<THelpers, TFragmentMetadata, TAggregatedFragmentMetadata, TSchemaLevel>;
33
80
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","names":[],"sources":["../src/adapter/define-adapter.ts"],"sourcesContent":[],"mappings":";;;;;;;;AA4BA;;;;;;;;;;;;;;;;;;;;;;;cAAa,uJAMF,QAAQ,UAAU,mBAAmB,6BAA6B,kBAC1E,QAAQ,UAAU,mBAAmB,6BAA6B"}
1
+ {"version":3,"file":"adapter.d.ts","names":[],"sources":["../src/adapter/define-adapter.ts"],"sourcesContent":[],"mappings":";;;;;;;;AA2EA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAAa,uJAMF,QAAQ,UAAU,mBAAmB,6BAA6B,kBAC1E,QAAQ,UAAU,mBAAmB,6BAA6B"}
package/dist/adapter.js CHANGED
@@ -1,11 +1,11 @@
1
- import { r as defineScalar } from "./schema-BiYcVVvm.js";
1
+ import { r as defineScalar } from "./schema-builder-C9Qj5zQg.js";
2
2
 
3
3
  //#region packages/core/src/adapter/define-adapter.ts
4
4
  /**
5
- * Helper function for defining a unified adapter with helpers and metadata.
6
- * Provides type inference for helpers, aggregateFragmentMetadata and schemaLevel.
5
+ * Helper function for defining a unified adapter with helpers, metadata, and document transformation.
6
+ * Provides type inference for helpers, aggregateFragmentMetadata, schemaLevel, and transformDocument.
7
7
  *
8
- * @example
8
+ * @example Basic adapter with helpers and metadata
9
9
  * ```typescript
10
10
  * import { defineAdapter } from "@soda-gql/core/adapter";
11
11
  * import type { FragmentMetaInfo, OperationMetadata } from "@soda-gql/core";
@@ -26,6 +26,53 @@ import { r as defineScalar } from "./schema-BiYcVVvm.js";
26
26
  * },
27
27
  * });
28
28
  * ```
29
+ *
30
+ * @example Adapter with document transformation
31
+ * ```typescript
32
+ * import { defineAdapter } from "@soda-gql/core/adapter";
33
+ * import { Kind, visit } from "graphql";
34
+ *
35
+ * export const adapter = defineAdapter({
36
+ * transformDocument: ({ document, operationType }) => {
37
+ * // Add @auth directive to all queries
38
+ * if (operationType === "query") {
39
+ * return visit(document, {
40
+ * OperationDefinition: (node) => ({
41
+ * ...node,
42
+ * directives: [
43
+ * ...(node.directives ?? []),
44
+ * { kind: Kind.DIRECTIVE, name: { kind: Kind.NAME, value: "auth" } },
45
+ * ],
46
+ * }),
47
+ * });
48
+ * }
49
+ * return document;
50
+ * },
51
+ * });
52
+ * ```
53
+ *
54
+ * @example Using helpers for operation-level transform functions (recommended)
55
+ * ```typescript
56
+ * // Define transform functions as helpers for reusability
57
+ * const adapter = defineAdapter({
58
+ * helpers: {
59
+ * transform: {
60
+ * addCacheDirective: (ttl: number) => ({ document }) => {
61
+ * return visit(document, { ... });
62
+ * },
63
+ * },
64
+ * },
65
+ * });
66
+ *
67
+ * // Use helper in operation - clean and declarative
68
+ * gql(({ query, transform }) =>
69
+ * query.operation({
70
+ * name: "GetUser",
71
+ * transformDocument: transform.addCacheDirective(300),
72
+ * fields: ({ f }) => ({ ... }),
73
+ * }),
74
+ * );
75
+ * ```
29
76
  */
30
77
  const defineAdapter = (adapter) => adapter;
31
78
 
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","names":[],"sources":["../src/adapter/define-adapter.ts"],"sourcesContent":["import type { Adapter } from \"../types/metadata\";\n\n/**\n * Helper function for defining a unified adapter with helpers and metadata.\n * Provides type inference for helpers, aggregateFragmentMetadata and schemaLevel.\n *\n * @example\n * ```typescript\n * import { defineAdapter } from \"@soda-gql/core/adapter\";\n * import type { FragmentMetaInfo, OperationMetadata } from \"@soda-gql/core\";\n *\n * export const adapter = defineAdapter({\n * helpers: {\n * auth: {\n * requiresLogin: () => ({ requiresAuth: true }),\n * adminOnly: () => ({ requiresAuth: true, role: \"admin\" }),\n * },\n * },\n * metadata: {\n * aggregateFragmentMetadata: (fragments: readonly FragmentMetaInfo<OperationMetadata>[]) =>\n * fragments.map((m) => m.metadata),\n * schemaLevel: {\n * apiVersion: \"v2\",\n * },\n * },\n * });\n * ```\n */\nexport const defineAdapter = <\n THelpers extends object = object,\n TFragmentMetadata = unknown,\n TAggregatedFragmentMetadata = unknown,\n TSchemaLevel = unknown,\n>(\n adapter: Adapter<THelpers, TFragmentMetadata, TAggregatedFragmentMetadata, TSchemaLevel>,\n): Adapter<THelpers, TFragmentMetadata, TAggregatedFragmentMetadata, TSchemaLevel> => adapter;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,MAAa,iBAMX,YACoF"}
1
+ {"version":3,"file":"adapter.js","names":[],"sources":["../src/adapter/define-adapter.ts"],"sourcesContent":["import type { Adapter } from \"../types/metadata\";\n\n/**\n * Helper function for defining a unified adapter with helpers, metadata, and document transformation.\n * Provides type inference for helpers, aggregateFragmentMetadata, schemaLevel, and transformDocument.\n *\n * @example Basic adapter with helpers and metadata\n * ```typescript\n * import { defineAdapter } from \"@soda-gql/core/adapter\";\n * import type { FragmentMetaInfo, OperationMetadata } from \"@soda-gql/core\";\n *\n * export const adapter = defineAdapter({\n * helpers: {\n * auth: {\n * requiresLogin: () => ({ requiresAuth: true }),\n * adminOnly: () => ({ requiresAuth: true, role: \"admin\" }),\n * },\n * },\n * metadata: {\n * aggregateFragmentMetadata: (fragments: readonly FragmentMetaInfo<OperationMetadata>[]) =>\n * fragments.map((m) => m.metadata),\n * schemaLevel: {\n * apiVersion: \"v2\",\n * },\n * },\n * });\n * ```\n *\n * @example Adapter with document transformation\n * ```typescript\n * import { defineAdapter } from \"@soda-gql/core/adapter\";\n * import { Kind, visit } from \"graphql\";\n *\n * export const adapter = defineAdapter({\n * transformDocument: ({ document, operationType }) => {\n * // Add @auth directive to all queries\n * if (operationType === \"query\") {\n * return visit(document, {\n * OperationDefinition: (node) => ({\n * ...node,\n * directives: [\n * ...(node.directives ?? []),\n * { kind: Kind.DIRECTIVE, name: { kind: Kind.NAME, value: \"auth\" } },\n * ],\n * }),\n * });\n * }\n * return document;\n * },\n * });\n * ```\n *\n * @example Using helpers for operation-level transform functions (recommended)\n * ```typescript\n * // Define transform functions as helpers for reusability\n * const adapter = defineAdapter({\n * helpers: {\n * transform: {\n * addCacheDirective: (ttl: number) => ({ document }) => {\n * return visit(document, { ... });\n * },\n * },\n * },\n * });\n *\n * // Use helper in operation - clean and declarative\n * gql(({ query, transform }) =>\n * query.operation({\n * name: \"GetUser\",\n * transformDocument: transform.addCacheDirective(300),\n * fields: ({ f }) => ({ ... }),\n * }),\n * );\n * ```\n */\nexport const defineAdapter = <\n THelpers extends object = object,\n TFragmentMetadata = unknown,\n TAggregatedFragmentMetadata = unknown,\n TSchemaLevel = unknown,\n>(\n adapter: Adapter<THelpers, TFragmentMetadata, TAggregatedFragmentMetadata, TSchemaLevel>,\n): Adapter<THelpers, TFragmentMetadata, TAggregatedFragmentMetadata, TSchemaLevel> => adapter;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2EA,MAAa,iBAMX,YACoF"}