@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.
- package/README.md +67 -0
- package/dist/adapter.cjs +52 -5
- package/dist/adapter.cjs.map +1 -1
- package/dist/adapter.d.cts +52 -5
- package/dist/adapter.d.cts.map +1 -1
- package/dist/adapter.d.ts +52 -5
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +51 -4
- package/dist/adapter.js.map +1 -1
- package/dist/{index-wkJ6KSwK.d.ts → index-CHshzPrG.d.cts} +343 -66
- package/dist/index-CHshzPrG.d.cts.map +1 -0
- package/dist/{schema-2qqtKss4.d.ts → index-CnQ5XVCf.d.ts} +371 -300
- package/dist/index-CnQ5XVCf.d.ts.map +1 -0
- package/dist/{schema-CPTxQbTv.d.cts → index-DnLzk2bC.d.cts} +371 -300
- package/dist/index-DnLzk2bC.d.cts.map +1 -0
- package/dist/{index-Ib9pb2Si.d.cts → index-J050RXPw.d.ts} +343 -66
- package/dist/index-J050RXPw.d.ts.map +1 -0
- package/dist/index.cjs +425 -67
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -125
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +4 -125
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +408 -61
- package/dist/index.js.map +1 -1
- package/dist/runtime.cjs +4 -0
- package/dist/runtime.cjs.map +1 -1
- package/dist/runtime.d.cts +13 -3
- package/dist/runtime.d.cts.map +1 -1
- package/dist/runtime.d.ts +13 -3
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +4 -0
- package/dist/runtime.js.map +1 -1
- package/dist/schema-builder-C9Qj5zQg.js +58 -0
- package/dist/schema-builder-C9Qj5zQg.js.map +1 -0
- package/dist/schema-builder-CJe30s_R.d.ts +63 -0
- package/dist/schema-builder-CJe30s_R.d.ts.map +1 -0
- package/dist/schema-builder-CwRmtxHx.d.cts +63 -0
- package/dist/schema-builder-CwRmtxHx.d.cts.map +1 -0
- package/dist/schema-builder-D2ay11cE.cjs +82 -0
- package/dist/schema-builder-D2ay11cE.cjs.map +1 -0
- package/package.json +1 -1
- package/dist/index-Ib9pb2Si.d.cts.map +0 -1
- package/dist/index-wkJ6KSwK.d.ts.map +0 -1
- package/dist/schema-2qqtKss4.d.ts.map +0 -1
- package/dist/schema-BiYcVVvm.js +0 -171
- package/dist/schema-BiYcVVvm.js.map +0 -1
- package/dist/schema-CPTxQbTv.d.cts.map +0 -1
- package/dist/schema-D2MW4DOF.cjs +0 -207
- package/dist/schema-D2MW4DOF.cjs.map +0 -1
- package/dist/schema-builder-BYJd50o2.d.cts +0 -97
- package/dist/schema-builder-BYJd50o2.d.cts.map +0 -1
- package/dist/schema-builder-Dhss2O1I.d.ts +0 -97
- 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
|
|
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
|
|
6
|
-
* Provides type inference for helpers, aggregateFragmentMetadata and
|
|
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 =
|
|
81
|
+
exports.defineScalar = require_schema_builder.defineScalar;
|
|
35
82
|
//# sourceMappingURL=adapter.cjs.map
|
package/dist/adapter.cjs.map
CHANGED
|
@@ -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
|
|
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"}
|
package/dist/adapter.d.cts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { r as defineScalar } from "./schema-builder-
|
|
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
|
|
8
|
-
* Provides type inference for helpers, aggregateFragmentMetadata and
|
|
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
|
package/dist/adapter.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.cts","names":[],"sources":["../src/adapter/define-adapter.ts"],"sourcesContent":[],"mappings":";;;;;;;;
|
|
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 {
|
|
2
|
-
import { r as defineScalar } from "./schema-builder-
|
|
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
|
|
8
|
-
* Provides type inference for helpers, aggregateFragmentMetadata and
|
|
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
|
package/dist/adapter.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","names":[],"sources":["../src/adapter/define-adapter.ts"],"sourcesContent":[],"mappings":";;;;;;;;
|
|
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-
|
|
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
|
|
6
|
-
* Provides type inference for helpers, aggregateFragmentMetadata and
|
|
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
|
|
package/dist/adapter.js.map
CHANGED
|
@@ -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
|
|
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"}
|