Skip to content

Commit

Permalink
[Tool][Codegen] Add script to post format the generated graphql file
Browse files Browse the repository at this point in the history
Makes it possible to modify the generated graphql file by codegen.
  • Loading branch information
schroda committed Oct 27, 2023
1 parent 10a57d3 commit 0087d3a
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 1 deletion.
4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@
"lint": "eslint src --ext .ts,.tsx,.js,.jsx",
"createChangelog": "ts-node tools/scripts/createReleaseChanglog.ts",
"updateDeps": "yarn outdated && yarn upgrade && yarn syncyarnlock -s -k && yarn && git add package.json yarn.lock && git commit -m \"Update dependencies\"",
"gql:codegen": "graphql-codegen --config gql_codegen.ts"
"gql:codegen-base": "graphql-codegen --config gql_codegen.ts",
"gql:codegen-formatter": "ts-node tools/scripts/codegenFormatter.ts",
"gql:codegen": "yarn gql:codegen-base & yarn gql:codegen-formatter"
},
"browserslist": {
"production": [
Expand Down
33 changes: 33 additions & 0 deletions tools/scripts/codegenFormatter.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/*
* Copyright (C) Contributors to the Suwayomi project
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/

import fs from 'fs';
import * as path from 'path';

const format = (source: string, regex: RegExp, replaceValue: string): string => source.replace(regex, replaceValue);

const generatedGraphQLFilePath = path.resolve(__dirname, '../../src/lib/graphql/generated/graphql.ts');
const generatedGraphQLFile = fs.readFileSync(generatedGraphQLFilePath, 'utf8');

// add logic to format the codegen generated graphql file

const fixCursorTyping = format(
generatedGraphQLFile,
/Cursor: \{ input: any; output: any; }/g,
'Cursor: { input: string; output: string; }',
);

const fixLongStringTyping = format(
fixCursorTyping,
/LongString: \{ input: any; output: any; }/g,
'LongString: { input: string; output: string; }',
);

const fixSubscriptionHookNameSuffix = format(fixLongStringTyping, /SubscriptionSubscription/g, 'Subscription');

fs.writeFileSync(generatedGraphQLFilePath, fixSubscriptionHookNameSuffix);

0 comments on commit 0087d3a

Please sign in to comment.