graphql-codegen-plugin-typescript-swr 0.8.4 → 0.8.6
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 +5 -0
- package/build/main/config.d.ts +27 -0
- package/build/main/config.js +3 -0
- package/build/main/index.d.ts +6 -0
- package/build/main/index.js +35 -0
- package/build/main/visitor.d.ts +30 -0
- package/build/main/visitor.js +160 -0
- package/build/module/config.d.ts +27 -0
- package/build/module/config.js +2 -0
- package/build/module/index.d.ts +6 -0
- package/build/module/index.js +30 -0
- package/build/module/visitor.d.ts +30 -0
- package/build/module/visitor.js +153 -0
- package/package.json +5 -2
- package/.editorconfig +0 -13
- package/.eslintrc.js +0 -63
- package/.github/CONTRIBUTING.md +0 -3
- package/.github/ISSUE_TEMPLATE.md +0 -9
- package/.github/PULL_REQUEST_TEMPLATE.md +0 -7
- package/.github/workflows/main.yml +0 -28
- package/.gitignore +0 -8
- package/.prettierignore +0 -3
- package/.prettierrc.json +0 -4
- package/.vscode/extensions.json +0 -8
- package/.vscode/launch.json +0 -29
- package/.vscode/settings.json +0 -41
- package/dev-test/.env +0 -1
- package/dev-test/codegen.yml +0 -357
- package/dev-test/githunt/__generated__/comment-added.subscription.stencil-component.tsx +0 -47
- package/dev-test/githunt/__generated__/comment.query.stencil-component.tsx +0 -68
- package/dev-test/githunt/__generated__/comments-page-comment.fragment.stencil-component.tsx +0 -20
- package/dev-test/githunt/__generated__/current-user.query.stencil-component.tsx +0 -34
- package/dev-test/githunt/__generated__/feed-entry.fragment.stencil-component.tsx +0 -30
- package/dev-test/githunt/__generated__/feed.query.stencil-component.tsx +0 -40
- package/dev-test/githunt/__generated__/new-entry.mutation.stencil-component.tsx +0 -35
- package/dev-test/githunt/__generated__/repo-info.fragment.stencil-component.tsx +0 -26
- package/dev-test/githunt/__generated__/submit-comment.mutation.stencil-component.tsx +0 -35
- package/dev-test/githunt/__generated__/vote-buttons.fragment.stencil-component.tsx +0 -16
- package/dev-test/githunt/__generated__/vote.mutation.stencil-component.tsx +0 -41
- package/dev-test/githunt/comment-added.subscription.graphql +0 -11
- package/dev-test/githunt/comment.query.graphql +0 -33
- package/dev-test/githunt/comments-page-comment.fragment.graphql +0 -9
- package/dev-test/githunt/current-user.query.graphql +0 -6
- package/dev-test/githunt/feed-entry.fragment.graphql +0 -13
- package/dev-test/githunt/feed.query.graphql +0 -8
- package/dev-test/githunt/flow.flow.js +0 -367
- package/dev-test/githunt/graphql-declared-modules.d.ts +0 -87
- package/dev-test/githunt/new-entry.mutation.graphql +0 -5
- package/dev-test/githunt/repo-info.fragment.graphql +0 -12
- package/dev-test/githunt/schema.js +0 -3
- package/dev-test/githunt/schema.json +0 -1750
- package/dev-test/githunt/submit-comment.mutation.graphql +0 -5
- package/dev-test/githunt/typed-document-nodes.ts +0 -892
- package/dev-test/githunt/types.apolloAngular.sdk.ts +0 -570
- package/dev-test/githunt/types.apolloAngular.ts +0 -491
- package/dev-test/githunt/types.avoidOptionals.ts +0 -266
- package/dev-test/githunt/types.d.ts +0 -261
- package/dev-test/githunt/types.enumsAsTypes.ts +0 -261
- package/dev-test/githunt/types.flatten.preResolveTypes.ts +0 -289
- package/dev-test/githunt/types.immutableTypes.ts +0 -267
- package/dev-test/githunt/types.preResolveTypes.compatibility.ts +0 -368
- package/dev-test/githunt/types.preResolveTypes.onlyOperationTypes.ts +0 -156
- package/dev-test/githunt/types.preResolveTypes.ts +0 -293
- package/dev-test/githunt/types.reactApollo.customSuffix.tsx +0 -634
- package/dev-test/githunt/types.reactApollo.hooks.tsx +0 -621
- package/dev-test/githunt/types.reactApollo.preResolveTypes.tsx +0 -648
- package/dev-test/githunt/types.reactApollo.tsx +0 -621
- package/dev-test/githunt/types.reactApollo.v2.tsx +0 -635
- package/dev-test/githunt/types.stencilApollo.tsx +0 -484
- package/dev-test/githunt/types.ts +0 -266
- package/dev-test/githunt/types.urql.tsx +0 -444
- package/dev-test/githunt/types.vueApollo.ts +0 -647
- package/dev-test/githunt/vote-buttons.fragment.graphql +0 -6
- package/dev-test/githunt/vote.mutation.graphql +0 -9
- package/dev-test/setup.js +0 -3
- package/dev-test/test-message/documents.ts +0 -46
- package/dev-test/test-message/schema.graphql +0 -23
- package/dev-test/test-message/types.tsx +0 -237
- package/dev-test/test-schema/env.types.ts +0 -35
- package/dev-test/test-schema/flow-types.flow.js +0 -139
- package/dev-test/test-schema/local/schema-ast.js +0 -2
- package/dev-test/test-schema/local/schema-formats.js +0 -20
- package/dev-test/test-schema/local/schema-object.js +0 -2
- package/dev-test/test-schema/local/schema-text.js +0 -2
- package/dev-test/test-schema/local/schema.graphql +0 -8
- package/dev-test/test-schema/resolvers-federation.ts +0 -233
- package/dev-test/test-schema/resolvers-root.ts +0 -178
- package/dev-test/test-schema/resolvers-types.ts +0 -168
- package/dev-test/test-schema/schema-ast.js +0 -2
- package/dev-test/test-schema/schema-federation.graphql +0 -30
- package/dev-test/test-schema/schema-formats.js +0 -38
- package/dev-test/test-schema/schema-json.js +0 -2
- package/dev-test/test-schema/schema-object.js +0 -2
- package/dev-test/test-schema/schema-text.js +0 -2
- package/dev-test/test-schema/schema-with-imports.graphql +0 -9
- package/dev-test/test-schema/schema-with-root.graphql +0 -22
- package/dev-test/test-schema/schema.graphql +0 -19
- package/dev-test/test-schema/schema.json +0 -1070
- package/dev-test/test-schema/types.preResolveTypes.onlyOperationTypes.ts +0 -19
- package/dev-test/test-schema/types.preResolveTypes.ts +0 -44
- package/dev-test/test-schema/typings.avoidOptionals.ts +0 -27
- package/dev-test/test-schema/typings.enum.ts +0 -19
- package/dev-test/test-schema/typings.immutableTypes.ts +0 -27
- package/dev-test/test-schema/typings.ts +0 -156
- package/dev-test/test-schema/typings.wrapped.ts +0 -29
- package/dev-test/tsconfig.json +0 -18
- package/jest.config.js +0 -30
- package/renovate.json +0 -2
- package/src/config.ts +0 -29
- package/src/index.ts +0 -54
- package/src/visitor.ts +0 -259
- package/tests/outputs/autogenSWRKey.ts +0 -46
- package/tests/outputs/excludeQueries.ts +0 -13
- package/tests/outputs/infinite.ts +0 -49
- package/tests/outputs/mutations.ts +0 -19
- package/tests/outputs/rawRequest.ts +0 -19
- package/tests/outputs/straight.ts +0 -19
- package/tests/swr.spec.ts +0 -306
- package/tests/visitor.spec.ts +0 -19
- package/tsconfig.json +0 -32
- package/tsconfig.main.json +0 -11
- package/tsconfig.module.json +0 -13
- package/yarn-error.log +0 -5477
- package/yarn.lock +0 -5359
package/README.md
CHANGED
|
@@ -13,6 +13,7 @@ A [GraphQL code generator](https://graphql-code-generator.com/) plug-in that aut
|
|
|
13
13
|
- [Pagination](#pagination)
|
|
14
14
|
- [Authorization](#authorization)
|
|
15
15
|
- [Next.js](#nextjs)
|
|
16
|
+
- [Development](#development)
|
|
16
17
|
|
|
17
18
|
## API Reference
|
|
18
19
|
|
|
@@ -236,3 +237,7 @@ export const ArticlePage: NextPage<ArticlePageProps> = ({ slug, initialData, pre
|
|
|
236
237
|
)
|
|
237
238
|
}
|
|
238
239
|
```
|
|
240
|
+
|
|
241
|
+
## Development
|
|
242
|
+
|
|
243
|
+
[`sample/`](./sample) is a small React + Tailwind CSS app for manually smoke-testing this plugin's generated SWR hooks in a real browser — useful when bumping `react`/`swr`/`graphql-request`/`graphql`. It mocks its GraphQL backend entirely in-browser (via [MSW](https://mswjs.io/)), so no server setup is required. See [`sample/README.md`](./sample/README.md) for usage.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { RawClientSideBasePluginConfig } from '@graphql-codegen/visitor-plugin-common';
|
|
2
|
+
/**
|
|
3
|
+
* @description This plugin generates [`graphql-request`](https://www.npmjs.com/package/graphql-request) ready-to-use SDK, which is fully-typed.
|
|
4
|
+
*/
|
|
5
|
+
export interface RawSWRPluginConfig extends RawClientSideBasePluginConfig {
|
|
6
|
+
/**
|
|
7
|
+
* @description By default the `request` method return the `data` or `errors` key from the response. If you need to access the `extensions` key you can use the `rawRequest` method.
|
|
8
|
+
* @default false
|
|
9
|
+
*
|
|
10
|
+
* @exampleMarkdown
|
|
11
|
+
* ```yml
|
|
12
|
+
* generates:
|
|
13
|
+
* path/to/file.ts:
|
|
14
|
+
* plugins:
|
|
15
|
+
* - typescript
|
|
16
|
+
* - typescript-operations
|
|
17
|
+
* - typescript-graphql-request
|
|
18
|
+
* - graphql-codegen-plugin-typescript-swr
|
|
19
|
+
* config:
|
|
20
|
+
* rawRequest: true
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
rawRequest?: boolean;
|
|
24
|
+
excludeQueries?: string | string[];
|
|
25
|
+
useSWRInfinite?: string | string[];
|
|
26
|
+
autogenSWRKey?: boolean;
|
|
27
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { PluginValidateFn, PluginFunction } from '@graphql-codegen/plugin-helpers';
|
|
2
|
+
import { RawSWRPluginConfig } from './config';
|
|
3
|
+
import { SWRVisitor } from './visitor';
|
|
4
|
+
export declare const plugin: PluginFunction<RawSWRPluginConfig>;
|
|
5
|
+
export declare const validate: PluginValidateFn<any>;
|
|
6
|
+
export { SWRVisitor };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SWRVisitor = exports.validate = exports.plugin = void 0;
|
|
4
|
+
const path_1 = require("path");
|
|
5
|
+
const plugin_helpers_1 = require("@graphql-codegen/plugin-helpers");
|
|
6
|
+
const graphql_1 = require("graphql");
|
|
7
|
+
const visitor_1 = require("./visitor");
|
|
8
|
+
Object.defineProperty(exports, "SWRVisitor", { enumerable: true, get: function () { return visitor_1.SWRVisitor; } });
|
|
9
|
+
const plugin = (schema, documents, config) => {
|
|
10
|
+
const allAst = (0, graphql_1.concatAST)(documents.map((v) => v.document));
|
|
11
|
+
const allFragments = [
|
|
12
|
+
// prettier-ignore
|
|
13
|
+
...allAst.definitions.filter((d) => d.kind === graphql_1.Kind.FRAGMENT_DEFINITION).map((fragmentDef) => ({
|
|
14
|
+
node: fragmentDef,
|
|
15
|
+
name: fragmentDef.name.value,
|
|
16
|
+
onType: fragmentDef.typeCondition.name.value,
|
|
17
|
+
isExternal: false,
|
|
18
|
+
})),
|
|
19
|
+
...(config.externalFragments || []),
|
|
20
|
+
];
|
|
21
|
+
const visitor = new visitor_1.SWRVisitor(schema, allFragments, config);
|
|
22
|
+
(0, plugin_helpers_1.oldVisit)(allAst, { leave: visitor });
|
|
23
|
+
return {
|
|
24
|
+
prepend: visitor.getImports(),
|
|
25
|
+
content: visitor.sdkContent,
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
exports.plugin = plugin;
|
|
29
|
+
const validate = async (_schema, _documents, _config, outputFile) => {
|
|
30
|
+
if ((0, path_1.extname)(outputFile) !== '.ts') {
|
|
31
|
+
throw new Error(`Plugin "typescript-swr" requires extension to be ".ts"!`);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
exports.validate = validate;
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQThCO0FBRTlCLG9FQUt3QztBQUV4QyxxQ0FBZ0Y7QUFHaEYsdUNBQXNDO0FBeUM3QiwyRkF6Q0Esb0JBQVUsT0F5Q0E7QUF2Q1osTUFBTSxNQUFNLEdBQXVDLENBQ3hELE1BQXFCLEVBQ3JCLFNBQStCLEVBQy9CLE1BQTBCLEVBQzFCLEVBQUU7SUFDRixNQUFNLE1BQU0sR0FBRyxJQUFBLG1CQUFTLEVBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUE7SUFFMUQsTUFBTSxZQUFZLEdBQXFCO1FBQ3JDLGtCQUFrQjtRQUNsQixHQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUMzQixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxjQUFJLENBQUMsbUJBQW1CLENBQ2QsQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbkQsSUFBSSxFQUFFLFdBQVc7WUFDakIsSUFBSSxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSztZQUM1QixNQUFNLEVBQUUsV0FBVyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSztZQUM1QyxVQUFVLEVBQUUsS0FBSztTQUNsQixDQUFDLENBQUM7UUFDSCxHQUFHLENBQUMsTUFBTSxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQztLQUNwQyxDQUFBO0lBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxvQkFBVSxDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDNUQsSUFBQSx5QkFBUSxFQUFDLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFBO0lBQ3BDLE9BQU87UUFDTCxPQUFPLEVBQUUsT0FBTyxDQUFDLFVBQVUsRUFBRTtRQUM3QixPQUFPLEVBQUUsT0FBTyxDQUFDLFVBQVU7S0FDNUIsQ0FBQTtBQUNILENBQUMsQ0FBQTtBQTFCWSxRQUFBLE1BQU0sVUEwQmxCO0FBRU0sTUFBTSxRQUFRLEdBQTBCLEtBQUssRUFDbEQsT0FBc0IsRUFDdEIsVUFBZ0MsRUFDaEMsT0FBMkIsRUFDM0IsVUFBa0IsRUFDbEIsRUFBRTtJQUNGLElBQUksSUFBQSxjQUFPLEVBQUMsVUFBVSxDQUFDLEtBQUssS0FBSyxFQUFFO1FBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMseURBQXlELENBQUMsQ0FBQTtLQUMzRTtBQUNILENBQUMsQ0FBQTtBQVRZLFFBQUEsUUFBUSxZQVNwQiJ9
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { ClientSideBasePluginConfig, ClientSideBaseVisitor, LoadedFragment, ParsedConfig } from '@graphql-codegen/visitor-plugin-common';
|
|
2
|
+
import { GraphQLSchema, OperationDefinitionNode } from 'graphql';
|
|
3
|
+
import { RawSWRPluginConfig } from './config';
|
|
4
|
+
export interface SWRPluginConfig extends ClientSideBasePluginConfig {
|
|
5
|
+
rawRequest: boolean;
|
|
6
|
+
excludeQueries: string | string[];
|
|
7
|
+
useSWRInfinite: string | string[];
|
|
8
|
+
autogenSWRKey: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface Operation {
|
|
11
|
+
node: OperationDefinitionNode;
|
|
12
|
+
documentVariableName: string;
|
|
13
|
+
operationType: string;
|
|
14
|
+
operationResultType: string;
|
|
15
|
+
operationVariablesTypes: string;
|
|
16
|
+
}
|
|
17
|
+
export interface ComposeQueryHandlerConfig {
|
|
18
|
+
autogenKey: SWRPluginConfig['autogenSWRKey'];
|
|
19
|
+
infinite: boolean;
|
|
20
|
+
rawRequest: SWRPluginConfig['rawRequest'];
|
|
21
|
+
typesPrefix: ParsedConfig['typesPrefix'];
|
|
22
|
+
typesSuffix: ParsedConfig['typesSuffix'];
|
|
23
|
+
}
|
|
24
|
+
export declare class SWRVisitor extends ClientSideBaseVisitor<RawSWRPluginConfig, SWRPluginConfig> {
|
|
25
|
+
private _operationsToInclude;
|
|
26
|
+
private _enabledInfinite;
|
|
27
|
+
constructor(schema: GraphQLSchema, fragments: LoadedFragment[], rawConfig: RawSWRPluginConfig);
|
|
28
|
+
protected buildOperation(node: OperationDefinitionNode, documentVariableName: string, operationType: string, operationResultType: string, operationVariablesTypes: string): string;
|
|
29
|
+
get sdkContent(): string;
|
|
30
|
+
}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SWRVisitor = void 0;
|
|
7
|
+
const visitor_plugin_common_1 = require("@graphql-codegen/visitor-plugin-common");
|
|
8
|
+
const graphql_1 = require("graphql");
|
|
9
|
+
const micromatch_1 = __importDefault(require("micromatch"));
|
|
10
|
+
const pascal_case_1 = require("pascal-case");
|
|
11
|
+
const composeQueryHandler = (operation, config) => {
|
|
12
|
+
const codes = [];
|
|
13
|
+
const { node } = operation;
|
|
14
|
+
const optionalVariables = !node.variableDefinitions ||
|
|
15
|
+
node.variableDefinitions.length === 0 ||
|
|
16
|
+
node.variableDefinitions.every((v) => v.type.kind !== graphql_1.Kind.NON_NULL_TYPE || v.defaultValue)
|
|
17
|
+
? '?'
|
|
18
|
+
: '';
|
|
19
|
+
const name = node.name.value;
|
|
20
|
+
const pascalName = (0, pascal_case_1.pascalCase)(node.name.value);
|
|
21
|
+
const responseType = config.rawRequest
|
|
22
|
+
? `SWRRawResponse<${operation.operationResultType}>`
|
|
23
|
+
: operation.operationResultType;
|
|
24
|
+
const variablesType = operation.operationVariablesTypes;
|
|
25
|
+
codes.push(`use${pascalName}(${config.autogenKey ? '' : 'key: SWRKeyInterface, '}variables${optionalVariables}: ${variablesType}, config?: SWRConfigInterface<${responseType}, ClientError>) {
|
|
26
|
+
return useSWR<${responseType}, ClientError>(${config.autogenKey
|
|
27
|
+
? `genKey<${variablesType}>('${pascalName}', variables)`
|
|
28
|
+
: 'key'}, () => sdk.${name}(variables), config);
|
|
29
|
+
}`);
|
|
30
|
+
if (config.infinite) {
|
|
31
|
+
codes.push(`use${pascalName}Infinite(${config.autogenKey ? '' : 'id: string, '}getKey: ${config.typesPrefix}SWRInfiniteKeyLoader${config.typesSuffix}<${responseType}, ${variablesType}>, variables${optionalVariables}: ${variablesType}, config?: SWRInfiniteConfiguration<${responseType}, ClientError>) {
|
|
32
|
+
return useSWRInfinite<${responseType}, ClientError>(
|
|
33
|
+
utilsForInfinite.generateGetKey<${responseType}, ${variablesType}>(${config.autogenKey
|
|
34
|
+
? `genKey<${variablesType}>('${pascalName}', variables)`
|
|
35
|
+
: 'id'}, getKey),
|
|
36
|
+
utilsForInfinite.generateFetcher<${responseType}, ${variablesType}>(sdk.${name}, variables),
|
|
37
|
+
config);
|
|
38
|
+
}`);
|
|
39
|
+
}
|
|
40
|
+
return codes;
|
|
41
|
+
};
|
|
42
|
+
class SWRVisitor extends visitor_plugin_common_1.ClientSideBaseVisitor {
|
|
43
|
+
constructor(schema, fragments, rawConfig) {
|
|
44
|
+
super(schema, fragments, rawConfig, {
|
|
45
|
+
excludeQueries: rawConfig.excludeQueries || null,
|
|
46
|
+
useSWRInfinite: rawConfig.useSWRInfinite || null,
|
|
47
|
+
autogenSWRKey: rawConfig.autogenSWRKey || false,
|
|
48
|
+
});
|
|
49
|
+
this._operationsToInclude = [];
|
|
50
|
+
this._enabledInfinite = false;
|
|
51
|
+
this._enabledInfinite =
|
|
52
|
+
(this.config.useSWRInfinite &&
|
|
53
|
+
typeof this.config.useSWRInfinite === 'string') ||
|
|
54
|
+
(Array.isArray(this.config.useSWRInfinite) &&
|
|
55
|
+
this.config.useSWRInfinite.length > 0);
|
|
56
|
+
const typeImport = this.config.useTypeImports ? 'import type' : 'import';
|
|
57
|
+
this._additionalImports.push(`${typeImport} { ClientError } from 'graphql-request/dist/types';`);
|
|
58
|
+
if (this.config.useTypeImports) {
|
|
59
|
+
if (this._enabledInfinite) {
|
|
60
|
+
this._additionalImports.push(`import type { SWRConfiguration as SWRConfigInterface, Key as SWRKeyInterface } from 'swr';`);
|
|
61
|
+
this._additionalImports.push(`import type { SWRInfiniteConfiguration } from 'swr/infinite';`);
|
|
62
|
+
this._additionalImports.push(`import useSWR from 'swr';`);
|
|
63
|
+
this._additionalImports.push(`import useSWRInfinite from 'swr/infinite';`);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
this._additionalImports.push(`import type { SWRConfiguration as SWRConfigInterface, Key as SWRKeyInterface } from 'swr';`);
|
|
67
|
+
this._additionalImports.push(`import useSWR from 'swr';`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
else if (this._enabledInfinite) {
|
|
71
|
+
this._additionalImports.push(`import useSWR, { SWRConfiguration as SWRConfigInterface, Key as SWRKeyInterface } from 'swr';`);
|
|
72
|
+
this._additionalImports.push(`import useSWRInfinite, { SWRInfiniteConfiguration } from 'swr/infinite';`);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
this._additionalImports.push(`import useSWR, { SWRConfiguration as SWRConfigInterface, Key as SWRKeyInterface } from 'swr';`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
buildOperation(node, documentVariableName, operationType, operationResultType, operationVariablesTypes) {
|
|
79
|
+
this._operationsToInclude.push({
|
|
80
|
+
node,
|
|
81
|
+
documentVariableName,
|
|
82
|
+
operationType,
|
|
83
|
+
operationResultType,
|
|
84
|
+
operationVariablesTypes,
|
|
85
|
+
});
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
get sdkContent() {
|
|
89
|
+
const codes = [];
|
|
90
|
+
const { config } = this;
|
|
91
|
+
const disabledexcludeQueries = !config.excludeQueries ||
|
|
92
|
+
(Array.isArray(config.excludeQueries) && !config.excludeQueries.length);
|
|
93
|
+
const allPossibleActions = this._operationsToInclude
|
|
94
|
+
.filter((o) => {
|
|
95
|
+
if (o.operationType !== 'Query') {
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
if (disabledexcludeQueries) {
|
|
99
|
+
return true;
|
|
100
|
+
}
|
|
101
|
+
return !micromatch_1.default.isMatch(o.node.name.value, config.excludeQueries);
|
|
102
|
+
})
|
|
103
|
+
.map((o) => composeQueryHandler(o, {
|
|
104
|
+
autogenKey: config.autogenSWRKey,
|
|
105
|
+
infinite: this._enabledInfinite &&
|
|
106
|
+
micromatch_1.default.isMatch(o.node.name.value, config.useSWRInfinite),
|
|
107
|
+
rawRequest: config.rawRequest,
|
|
108
|
+
typesPrefix: config.typesPrefix,
|
|
109
|
+
typesSuffix: config.typesSuffix,
|
|
110
|
+
}))
|
|
111
|
+
.reduce((p, c) => p.concat(c), [])
|
|
112
|
+
.map((s) => (0, visitor_plugin_common_1.indentMultiline)(s, 2));
|
|
113
|
+
// Add type of SWRRawResponse
|
|
114
|
+
if (config.rawRequest) {
|
|
115
|
+
codes.push(`type SWRRawResponse<Data = any> = { data?: Data | undefined; extensions?: any; headers: Headers; status: number; errors?: GraphQLError[] | undefined; };`);
|
|
116
|
+
}
|
|
117
|
+
// Add type of SWRInfiniteKeyLoader
|
|
118
|
+
if (this._enabledInfinite) {
|
|
119
|
+
codes.push(`export type ${config.typesPrefix}SWRInfiniteKeyLoader${config.typesSuffix}<Data = unknown, Variables = unknown> = (
|
|
120
|
+
index: number,
|
|
121
|
+
previousPageData: Data | null
|
|
122
|
+
) => [keyof Variables, Variables[keyof Variables] | null] | null;`);
|
|
123
|
+
}
|
|
124
|
+
// Add getSdkWithHooks function
|
|
125
|
+
codes.push(`export function getSdkWithHooks(client: GraphQLClient, withWrapper: SdkFunctionWrapper = defaultWrapper) {
|
|
126
|
+
const sdk = getSdk(client, withWrapper);`);
|
|
127
|
+
// Add the utility for useSWRInfinite
|
|
128
|
+
if (this._enabledInfinite) {
|
|
129
|
+
codes.push(` const utilsForInfinite = {
|
|
130
|
+
generateGetKey: <Data = unknown, Variables = unknown>(
|
|
131
|
+
id: ${config.autogenSWRKey ? 'SWRKeyInterface' : 'string'},
|
|
132
|
+
getKey: ${config.typesPrefix}SWRInfiniteKeyLoader${config.typesSuffix}<Data, Variables>
|
|
133
|
+
) => (pageIndex: number, previousData: Data | null) => {
|
|
134
|
+
const key = getKey(pageIndex, previousData)
|
|
135
|
+
return key ? [id, ...key] : null
|
|
136
|
+
},
|
|
137
|
+
generateFetcher: <Query = unknown, Variables = unknown>(query: (variables: Variables) => Promise<Query>, variables?: Variables) => (
|
|
138
|
+
id: string,
|
|
139
|
+
fieldName: keyof Variables,
|
|
140
|
+
fieldValue: Variables[typeof fieldName]
|
|
141
|
+
) => query({ ...variables, [fieldName]: fieldValue } as Variables)
|
|
142
|
+
}`);
|
|
143
|
+
}
|
|
144
|
+
// Add the function for auto-generation key for SWR
|
|
145
|
+
if (config.autogenSWRKey) {
|
|
146
|
+
codes.push(` const genKey = <V extends Record<string, unknown> = Record<string, unknown>>(name: string, object: V = {} as V): SWRKeyInterface => [name, ...Object.keys(object).sort().map(key => object[key])];`);
|
|
147
|
+
}
|
|
148
|
+
// Add return statement for getSdkWithHooks function and close the function
|
|
149
|
+
codes.push(` return {
|
|
150
|
+
...sdk,
|
|
151
|
+
${allPossibleActions.join(',\n')}
|
|
152
|
+
};
|
|
153
|
+
}`);
|
|
154
|
+
// Add type of Sdk
|
|
155
|
+
codes.push(`export type ${config.typesPrefix}SdkWithHooks${config.typesSuffix} = ReturnType<typeof getSdkWithHooks>;`);
|
|
156
|
+
return codes.join('\n');
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
exports.SWRVisitor = SWRVisitor;
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92aXNpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGtGQU0rQztBQUMvQyxxQ0FBc0U7QUFDdEUsNERBQTZCO0FBQzdCLDZDQUF3QztBQTJCeEMsTUFBTSxtQkFBbUIsR0FBRyxDQUMxQixTQUFvQixFQUNwQixNQUFpQyxFQUN2QixFQUFFO0lBQ1osTUFBTSxLQUFLLEdBQWEsRUFBRSxDQUFBO0lBQzFCLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxTQUFTLENBQUE7SUFDMUIsTUFBTSxpQkFBaUIsR0FDckIsQ0FBQyxJQUFJLENBQUMsbUJBQW1CO1FBQ3pCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUNyQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUM1QixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssY0FBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUM1RDtRQUNDLENBQUMsQ0FBQyxHQUFHO1FBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUNSLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFBO0lBQzVCLE1BQU0sVUFBVSxHQUFHLElBQUEsd0JBQVUsRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzlDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxVQUFVO1FBQ3BDLENBQUMsQ0FBQyxrQkFBa0IsU0FBUyxDQUFDLG1CQUFtQixHQUFHO1FBQ3BELENBQUMsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUE7SUFDakMsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLHVCQUF1QixDQUFBO0lBRXZELEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxVQUFVLElBQ3pCLE1BQU0sQ0FBQyxV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
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { RawClientSideBasePluginConfig } from '@graphql-codegen/visitor-plugin-common';
|
|
2
|
+
/**
|
|
3
|
+
* @description This plugin generates [`graphql-request`](https://www.npmjs.com/package/graphql-request) ready-to-use SDK, which is fully-typed.
|
|
4
|
+
*/
|
|
5
|
+
export interface RawSWRPluginConfig extends RawClientSideBasePluginConfig {
|
|
6
|
+
/**
|
|
7
|
+
* @description By default the `request` method return the `data` or `errors` key from the response. If you need to access the `extensions` key you can use the `rawRequest` method.
|
|
8
|
+
* @default false
|
|
9
|
+
*
|
|
10
|
+
* @exampleMarkdown
|
|
11
|
+
* ```yml
|
|
12
|
+
* generates:
|
|
13
|
+
* path/to/file.ts:
|
|
14
|
+
* plugins:
|
|
15
|
+
* - typescript
|
|
16
|
+
* - typescript-operations
|
|
17
|
+
* - typescript-graphql-request
|
|
18
|
+
* - graphql-codegen-plugin-typescript-swr
|
|
19
|
+
* config:
|
|
20
|
+
* rawRequest: true
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
rawRequest?: boolean;
|
|
24
|
+
excludeQueries?: string | string[];
|
|
25
|
+
useSWRInfinite?: string | string[];
|
|
26
|
+
autogenSWRKey?: boolean;
|
|
27
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { PluginValidateFn, PluginFunction } from '@graphql-codegen/plugin-helpers';
|
|
2
|
+
import { RawSWRPluginConfig } from './config';
|
|
3
|
+
import { SWRVisitor } from './visitor';
|
|
4
|
+
export declare const plugin: PluginFunction<RawSWRPluginConfig>;
|
|
5
|
+
export declare const validate: PluginValidateFn<any>;
|
|
6
|
+
export { SWRVisitor };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { extname } from 'path';
|
|
2
|
+
import { oldVisit, } from '@graphql-codegen/plugin-helpers';
|
|
3
|
+
import { concatAST, Kind } from 'graphql';
|
|
4
|
+
import { SWRVisitor } from './visitor';
|
|
5
|
+
export const plugin = (schema, documents, config) => {
|
|
6
|
+
const allAst = concatAST(documents.map((v) => v.document));
|
|
7
|
+
const allFragments = [
|
|
8
|
+
// prettier-ignore
|
|
9
|
+
...allAst.definitions.filter((d) => d.kind === Kind.FRAGMENT_DEFINITION).map((fragmentDef) => ({
|
|
10
|
+
node: fragmentDef,
|
|
11
|
+
name: fragmentDef.name.value,
|
|
12
|
+
onType: fragmentDef.typeCondition.name.value,
|
|
13
|
+
isExternal: false,
|
|
14
|
+
})),
|
|
15
|
+
...(config.externalFragments || []),
|
|
16
|
+
];
|
|
17
|
+
const visitor = new SWRVisitor(schema, allFragments, config);
|
|
18
|
+
oldVisit(allAst, { leave: visitor });
|
|
19
|
+
return {
|
|
20
|
+
prepend: visitor.getImports(),
|
|
21
|
+
content: visitor.sdkContent,
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
export const validate = async (_schema, _documents, _config, outputFile) => {
|
|
25
|
+
if (extname(outputFile) !== '.ts') {
|
|
26
|
+
throw new Error(`Plugin "typescript-swr" requires extension to be ".ts"!`);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
export { SWRVisitor };
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUU5QixPQUFPLEVBSUwsUUFBUSxHQUNULE1BQU0saUNBQWlDLENBQUE7QUFFeEMsT0FBTyxFQUFpQixTQUFTLEVBQUUsSUFBSSxFQUEwQixNQUFNLFNBQVMsQ0FBQTtBQUdoRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBRXRDLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBdUMsQ0FDeEQsTUFBcUIsRUFDckIsU0FBK0IsRUFDL0IsTUFBMEIsRUFDMUIsRUFBRTtJQUNGLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtJQUUxRCxNQUFNLFlBQVksR0FBcUI7UUFDckMsa0JBQWtCO1FBQ2xCLEdBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQzNCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxtQkFBbUIsQ0FDZCxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNuRCxJQUFJLEVBQUUsV0FBVztZQUNqQixJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLO1lBQzVCLE1BQU0sRUFBRSxXQUFXLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLO1lBQzVDLFVBQVUsRUFBRSxLQUFLO1NBQ2xCLENBQUMsQ0FBQztRQUNILEdBQUcsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLElBQUksRUFBRSxDQUFDO0tBQ3BDLENBQUE7SUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBQzVELFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQTtJQUNwQyxPQUFPO1FBQ0wsT0FBTyxFQUFFLE9BQU8sQ0FBQyxVQUFVLEVBQUU7UUFDN0IsT0FBTyxFQUFFLE9BQU8sQ0FBQyxVQUFVO0tBQzVCLENBQUE7QUFDSCxDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQTBCLEtBQUssRUFDbEQsT0FBc0IsRUFDdEIsVUFBZ0MsRUFDaEMsT0FBMkIsRUFDM0IsVUFBa0IsRUFDbEIsRUFBRTtJQUNGLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEtBQUssRUFBRTtRQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLHlEQUF5RCxDQUFDLENBQUE7S0FDM0U7QUFDSCxDQUFDLENBQUE7QUFFRCxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUEifQ==
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { ClientSideBasePluginConfig, ClientSideBaseVisitor, LoadedFragment, ParsedConfig } from '@graphql-codegen/visitor-plugin-common';
|
|
2
|
+
import { GraphQLSchema, OperationDefinitionNode } from 'graphql';
|
|
3
|
+
import { RawSWRPluginConfig } from './config';
|
|
4
|
+
export interface SWRPluginConfig extends ClientSideBasePluginConfig {
|
|
5
|
+
rawRequest: boolean;
|
|
6
|
+
excludeQueries: string | string[];
|
|
7
|
+
useSWRInfinite: string | string[];
|
|
8
|
+
autogenSWRKey: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface Operation {
|
|
11
|
+
node: OperationDefinitionNode;
|
|
12
|
+
documentVariableName: string;
|
|
13
|
+
operationType: string;
|
|
14
|
+
operationResultType: string;
|
|
15
|
+
operationVariablesTypes: string;
|
|
16
|
+
}
|
|
17
|
+
export interface ComposeQueryHandlerConfig {
|
|
18
|
+
autogenKey: SWRPluginConfig['autogenSWRKey'];
|
|
19
|
+
infinite: boolean;
|
|
20
|
+
rawRequest: SWRPluginConfig['rawRequest'];
|
|
21
|
+
typesPrefix: ParsedConfig['typesPrefix'];
|
|
22
|
+
typesSuffix: ParsedConfig['typesSuffix'];
|
|
23
|
+
}
|
|
24
|
+
export declare class SWRVisitor extends ClientSideBaseVisitor<RawSWRPluginConfig, SWRPluginConfig> {
|
|
25
|
+
private _operationsToInclude;
|
|
26
|
+
private _enabledInfinite;
|
|
27
|
+
constructor(schema: GraphQLSchema, fragments: LoadedFragment[], rawConfig: RawSWRPluginConfig);
|
|
28
|
+
protected buildOperation(node: OperationDefinitionNode, documentVariableName: string, operationType: string, operationResultType: string, operationVariablesTypes: string): string;
|
|
29
|
+
get sdkContent(): string;
|
|
30
|
+
}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { ClientSideBaseVisitor, indentMultiline, } from '@graphql-codegen/visitor-plugin-common';
|
|
2
|
+
import { Kind } from 'graphql';
|
|
3
|
+
import glob from 'micromatch';
|
|
4
|
+
import { pascalCase } from 'pascal-case';
|
|
5
|
+
const composeQueryHandler = (operation, config) => {
|
|
6
|
+
const codes = [];
|
|
7
|
+
const { node } = operation;
|
|
8
|
+
const optionalVariables = !node.variableDefinitions ||
|
|
9
|
+
node.variableDefinitions.length === 0 ||
|
|
10
|
+
node.variableDefinitions.every((v) => v.type.kind !== Kind.NON_NULL_TYPE || v.defaultValue)
|
|
11
|
+
? '?'
|
|
12
|
+
: '';
|
|
13
|
+
const name = node.name.value;
|
|
14
|
+
const pascalName = pascalCase(node.name.value);
|
|
15
|
+
const responseType = config.rawRequest
|
|
16
|
+
? `SWRRawResponse<${operation.operationResultType}>`
|
|
17
|
+
: operation.operationResultType;
|
|
18
|
+
const variablesType = operation.operationVariablesTypes;
|
|
19
|
+
codes.push(`use${pascalName}(${config.autogenKey ? '' : 'key: SWRKeyInterface, '}variables${optionalVariables}: ${variablesType}, config?: SWRConfigInterface<${responseType}, ClientError>) {
|
|
20
|
+
return useSWR<${responseType}, ClientError>(${config.autogenKey
|
|
21
|
+
? `genKey<${variablesType}>('${pascalName}', variables)`
|
|
22
|
+
: 'key'}, () => sdk.${name}(variables), config);
|
|
23
|
+
}`);
|
|
24
|
+
if (config.infinite) {
|
|
25
|
+
codes.push(`use${pascalName}Infinite(${config.autogenKey ? '' : 'id: string, '}getKey: ${config.typesPrefix}SWRInfiniteKeyLoader${config.typesSuffix}<${responseType}, ${variablesType}>, variables${optionalVariables}: ${variablesType}, config?: SWRInfiniteConfiguration<${responseType}, ClientError>) {
|
|
26
|
+
return useSWRInfinite<${responseType}, ClientError>(
|
|
27
|
+
utilsForInfinite.generateGetKey<${responseType}, ${variablesType}>(${config.autogenKey
|
|
28
|
+
? `genKey<${variablesType}>('${pascalName}', variables)`
|
|
29
|
+
: 'id'}, getKey),
|
|
30
|
+
utilsForInfinite.generateFetcher<${responseType}, ${variablesType}>(sdk.${name}, variables),
|
|
31
|
+
config);
|
|
32
|
+
}`);
|
|
33
|
+
}
|
|
34
|
+
return codes;
|
|
35
|
+
};
|
|
36
|
+
export class SWRVisitor extends ClientSideBaseVisitor {
|
|
37
|
+
_operationsToInclude = [];
|
|
38
|
+
_enabledInfinite = false;
|
|
39
|
+
constructor(schema, fragments, rawConfig) {
|
|
40
|
+
super(schema, fragments, rawConfig, {
|
|
41
|
+
excludeQueries: rawConfig.excludeQueries || null,
|
|
42
|
+
useSWRInfinite: rawConfig.useSWRInfinite || null,
|
|
43
|
+
autogenSWRKey: rawConfig.autogenSWRKey || false,
|
|
44
|
+
});
|
|
45
|
+
this._enabledInfinite =
|
|
46
|
+
(this.config.useSWRInfinite &&
|
|
47
|
+
typeof this.config.useSWRInfinite === 'string') ||
|
|
48
|
+
(Array.isArray(this.config.useSWRInfinite) &&
|
|
49
|
+
this.config.useSWRInfinite.length > 0);
|
|
50
|
+
const typeImport = this.config.useTypeImports ? 'import type' : 'import';
|
|
51
|
+
this._additionalImports.push(`${typeImport} { ClientError } from 'graphql-request/dist/types';`);
|
|
52
|
+
if (this.config.useTypeImports) {
|
|
53
|
+
if (this._enabledInfinite) {
|
|
54
|
+
this._additionalImports.push(`import type { SWRConfiguration as SWRConfigInterface, Key as SWRKeyInterface } from 'swr';`);
|
|
55
|
+
this._additionalImports.push(`import type { SWRInfiniteConfiguration } from 'swr/infinite';`);
|
|
56
|
+
this._additionalImports.push(`import useSWR from 'swr';`);
|
|
57
|
+
this._additionalImports.push(`import useSWRInfinite from 'swr/infinite';`);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
this._additionalImports.push(`import type { SWRConfiguration as SWRConfigInterface, Key as SWRKeyInterface } from 'swr';`);
|
|
61
|
+
this._additionalImports.push(`import useSWR from 'swr';`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
else if (this._enabledInfinite) {
|
|
65
|
+
this._additionalImports.push(`import useSWR, { SWRConfiguration as SWRConfigInterface, Key as SWRKeyInterface } from 'swr';`);
|
|
66
|
+
this._additionalImports.push(`import useSWRInfinite, { SWRInfiniteConfiguration } from 'swr/infinite';`);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
this._additionalImports.push(`import useSWR, { SWRConfiguration as SWRConfigInterface, Key as SWRKeyInterface } from 'swr';`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
buildOperation(node, documentVariableName, operationType, operationResultType, operationVariablesTypes) {
|
|
73
|
+
this._operationsToInclude.push({
|
|
74
|
+
node,
|
|
75
|
+
documentVariableName,
|
|
76
|
+
operationType,
|
|
77
|
+
operationResultType,
|
|
78
|
+
operationVariablesTypes,
|
|
79
|
+
});
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
get sdkContent() {
|
|
83
|
+
const codes = [];
|
|
84
|
+
const { config } = this;
|
|
85
|
+
const disabledexcludeQueries = !config.excludeQueries ||
|
|
86
|
+
(Array.isArray(config.excludeQueries) && !config.excludeQueries.length);
|
|
87
|
+
const allPossibleActions = this._operationsToInclude
|
|
88
|
+
.filter((o) => {
|
|
89
|
+
if (o.operationType !== 'Query') {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
if (disabledexcludeQueries) {
|
|
93
|
+
return true;
|
|
94
|
+
}
|
|
95
|
+
return !glob.isMatch(o.node.name.value, config.excludeQueries);
|
|
96
|
+
})
|
|
97
|
+
.map((o) => composeQueryHandler(o, {
|
|
98
|
+
autogenKey: config.autogenSWRKey,
|
|
99
|
+
infinite: this._enabledInfinite &&
|
|
100
|
+
glob.isMatch(o.node.name.value, config.useSWRInfinite),
|
|
101
|
+
rawRequest: config.rawRequest,
|
|
102
|
+
typesPrefix: config.typesPrefix,
|
|
103
|
+
typesSuffix: config.typesSuffix,
|
|
104
|
+
}))
|
|
105
|
+
.reduce((p, c) => p.concat(c), [])
|
|
106
|
+
.map((s) => indentMultiline(s, 2));
|
|
107
|
+
// Add type of SWRRawResponse
|
|
108
|
+
if (config.rawRequest) {
|
|
109
|
+
codes.push(`type SWRRawResponse<Data = any> = { data?: Data | undefined; extensions?: any; headers: Headers; status: number; errors?: GraphQLError[] | undefined; };`);
|
|
110
|
+
}
|
|
111
|
+
// Add type of SWRInfiniteKeyLoader
|
|
112
|
+
if (this._enabledInfinite) {
|
|
113
|
+
codes.push(`export type ${config.typesPrefix}SWRInfiniteKeyLoader${config.typesSuffix}<Data = unknown, Variables = unknown> = (
|
|
114
|
+
index: number,
|
|
115
|
+
previousPageData: Data | null
|
|
116
|
+
) => [keyof Variables, Variables[keyof Variables] | null] | null;`);
|
|
117
|
+
}
|
|
118
|
+
// Add getSdkWithHooks function
|
|
119
|
+
codes.push(`export function getSdkWithHooks(client: GraphQLClient, withWrapper: SdkFunctionWrapper = defaultWrapper) {
|
|
120
|
+
const sdk = getSdk(client, withWrapper);`);
|
|
121
|
+
// Add the utility for useSWRInfinite
|
|
122
|
+
if (this._enabledInfinite) {
|
|
123
|
+
codes.push(` const utilsForInfinite = {
|
|
124
|
+
generateGetKey: <Data = unknown, Variables = unknown>(
|
|
125
|
+
id: ${config.autogenSWRKey ? 'SWRKeyInterface' : 'string'},
|
|
126
|
+
getKey: ${config.typesPrefix}SWRInfiniteKeyLoader${config.typesSuffix}<Data, Variables>
|
|
127
|
+
) => (pageIndex: number, previousData: Data | null) => {
|
|
128
|
+
const key = getKey(pageIndex, previousData)
|
|
129
|
+
return key ? [id, ...key] : null
|
|
130
|
+
},
|
|
131
|
+
generateFetcher: <Query = unknown, Variables = unknown>(query: (variables: Variables) => Promise<Query>, variables?: Variables) => (
|
|
132
|
+
id: string,
|
|
133
|
+
fieldName: keyof Variables,
|
|
134
|
+
fieldValue: Variables[typeof fieldName]
|
|
135
|
+
) => query({ ...variables, [fieldName]: fieldValue } as Variables)
|
|
136
|
+
}`);
|
|
137
|
+
}
|
|
138
|
+
// Add the function for auto-generation key for SWR
|
|
139
|
+
if (config.autogenSWRKey) {
|
|
140
|
+
codes.push(` const genKey = <V extends Record<string, unknown> = Record<string, unknown>>(name: string, object: V = {} as V): SWRKeyInterface => [name, ...Object.keys(object).sort().map(key => object[key])];`);
|
|
141
|
+
}
|
|
142
|
+
// Add return statement for getSdkWithHooks function and close the function
|
|
143
|
+
codes.push(` return {
|
|
144
|
+
...sdk,
|
|
145
|
+
${allPossibleActions.join(',\n')}
|
|
146
|
+
};
|
|
147
|
+
}`);
|
|
148
|
+
// Add type of Sdk
|
|
149
|
+
codes.push(`export type ${config.typesPrefix}SdkWithHooks${config.typesSuffix} = ReturnType<typeof getSdkWithHooks>;`);
|
|
150
|
+
return codes.join('\n');
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92aXNpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxxQkFBcUIsRUFDckIsZUFBZSxHQUdoQixNQUFNLHdDQUF3QyxDQUFBO0FBQy9DLE9BQU8sRUFBaUIsSUFBSSxFQUEyQixNQUFNLFNBQVMsQ0FBQTtBQUN0RSxPQUFPLElBQUksTUFBTSxZQUFZLENBQUE7QUFDN0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQTJCeEMsTUFBTSxtQkFBbUIsR0FBRyxDQUMxQixTQUFvQixFQUNwQixNQUFpQyxFQUN2QixFQUFFO0lBQ1osTUFBTSxLQUFLLEdBQWEsRUFBRSxDQUFBO0lBQzFCLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxTQUFTLENBQUE7SUFDMUIsTUFBTSxpQkFBaUIsR0FDckIsQ0FBQyxJQUFJLENBQUMsbUJBQW1CO1FBQ3pCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUNyQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUM1QixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUM1RDtRQUNDLENBQUMsQ0FBQyxHQUFHO1FBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUNSLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFBO0lBQzVCLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzlDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxVQUFVO1FBQ3BDLENBQUMsQ0FBQyxrQkFBa0IsU0FBUyxDQUFDLG1CQUFtQixHQUFHO1FBQ3BELENBQUMsQ0FBQyxTQUFTLENBQUMs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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "graphql-codegen-plugin-typescript-swr",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.6",
|
|
4
4
|
"description": "A GraphQL code generator plug-in that automatically generates utility functions for SWR.",
|
|
5
5
|
"main": "build/main/index.js",
|
|
6
6
|
"typings": "build/main/index.d.ts",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"repository": "https://github.com/croutonn/graphql-codegen-plugin-typescript-swr",
|
|
9
9
|
"license": "MIT",
|
|
10
10
|
"engines": {
|
|
11
|
-
"node": ">=
|
|
11
|
+
"node": ">=22.0.0"
|
|
12
12
|
},
|
|
13
13
|
"keywords": [
|
|
14
14
|
"graphql",
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
"build": "run-p build:*",
|
|
24
24
|
"build:main": "tsc -p tsconfig.main.json",
|
|
25
25
|
"build:module": "tsc -p tsconfig.module.json",
|
|
26
|
+
"prepublishOnly": "yarn build",
|
|
26
27
|
"fix": "run-s fix:*",
|
|
27
28
|
"fix:prettier": "prettier \"src/**/*.ts\" --write",
|
|
28
29
|
"fix:lint": "eslint src --ext .ts --fix",
|
|
@@ -30,6 +31,7 @@
|
|
|
30
31
|
"test:lint": "eslint src --ext .ts",
|
|
31
32
|
"test:prettier": "prettier \"src/**/*.ts\" --list-different",
|
|
32
33
|
"test:integrate": "jest --no-watchman",
|
|
34
|
+
"sample:codegen": "cd sample && ../node_modules/.bin/graphql-codegen --config codegen.yml",
|
|
33
35
|
"watch:build": "tsc -p tsconfig.json -w"
|
|
34
36
|
},
|
|
35
37
|
"peerDependencies": {
|
|
@@ -46,6 +48,7 @@
|
|
|
46
48
|
"tslib": "^2.2.0"
|
|
47
49
|
},
|
|
48
50
|
"devDependencies": {
|
|
51
|
+
"@graphql-codegen/cli": "^2.16.5",
|
|
49
52
|
"@graphql-codegen/testing": "^1.17.7",
|
|
50
53
|
"@graphql-codegen/typescript": "^2.0.0",
|
|
51
54
|
"@graphql-codegen/typescript-graphql-request": "^4.0.0",
|
package/.editorconfig
DELETED