/* * 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 | string, replaceValue: string): string => source.replace(regex, replaceValue); let generatedGraphQLFilePath = path.resolve(import.meta.dirname, '../../src/lib/graphql/generated/graphql.ts'); let generatedGraphQLFile = fs.readFileSync(generatedGraphQLFilePath, 'utf8'); // add logic to format the codegen generated graphql file /* ******************************************* */ /* */ /* typescript, typescript-operations */ /* */ /* ******************************************* */ const fixSubscriptionHookNameSuffix = format(generatedGraphQLFile, /SubscriptionSubscription/g, 'Subscription'); fs.writeFileSync(generatedGraphQLFilePath, fixSubscriptionHookNameSuffix); /* ****************************************** */ /* */ /* typescript-apollo-client-helpers */ /* */ /* ****************************************** */ generatedGraphQLFilePath = path.resolve(import.meta.dirname, '../../src/lib/graphql/generated/apollo-helpers.ts'); generatedGraphQLFile = fs.readFileSync(generatedGraphQLFilePath, 'utf8'); const addImports = format( generatedGraphQLFile, `import { FieldPolicy, FieldReadFunction, TypePolicies, TypePolicy } from '@apollo/client/cache';`, `import {FieldPolicy, FieldReadFunction, Reference, TypePolicies, TypePolicy} from '@apollo/client/cache'; import { \tGetChaptersMangaQuery, GetDownloadStatusQueryVariables, GetGlobalMetadataQueryVariables, \tGetMangaScreenQueryVariables, GetSourceBrowseQueryVariables, GetUpdateStatusQueryVariables, GetWebuiUpdateStatusQueryVariables, } from "@/lib/graphql/generated/graphql.ts"; import {FieldFunctionOptions} from "@apollo/client/cache/inmemory/policies";`, ); const fixTypingOfQueryTypePolicies = format( addImports, `export type QueryFieldPolicy = { \taboutServer?: FieldPolicy | FieldReadFunction, \taboutWebUI?: FieldPolicy | FieldReadFunction, \tcategories?: FieldPolicy | FieldReadFunction, \tcategory?: FieldPolicy | FieldReadFunction, \tchapter?: FieldPolicy | FieldReadFunction, \tchapters?: FieldPolicy | FieldReadFunction, \tcheckForServerUpdates?: FieldPolicy | FieldReadFunction, \tcheckForWebUIUpdate?: FieldPolicy | FieldReadFunction, \tdownloadStatus?: FieldPolicy | FieldReadFunction, \textension?: FieldPolicy | FieldReadFunction, \textensions?: FieldPolicy | FieldReadFunction, \tgetWebUIUpdateStatus?: FieldPolicy | FieldReadFunction, \tlastUpdateTimestamp?: FieldPolicy | FieldReadFunction, \tmanga?: FieldPolicy | FieldReadFunction, \tmangas?: FieldPolicy | FieldReadFunction, \tmeta?: FieldPolicy | FieldReadFunction, \tmetas?: FieldPolicy | FieldReadFunction, \trestoreStatus?: FieldPolicy | FieldReadFunction, \tsearchTracker?: FieldPolicy | FieldReadFunction, \tsettings?: FieldPolicy | FieldReadFunction, \tsource?: FieldPolicy | FieldReadFunction, \tsources?: FieldPolicy | FieldReadFunction, \ttrackRecord?: FieldPolicy | FieldReadFunction, \ttrackRecords?: FieldPolicy | FieldReadFunction, \ttracker?: FieldPolicy | FieldReadFunction, \ttrackers?: FieldPolicy | FieldReadFunction, \tupdateStatus?: FieldPolicy | FieldReadFunction, \tvalidateBackup?: FieldPolicy | FieldReadFunction };`, `export type QueryFieldPolicy = { \taboutServer?: FieldPolicy | FieldReadFunction, \taboutWebUI?: FieldPolicy | FieldReadFunction, \tcategories?: FieldPolicy | FieldReadFunction, \tcategory?: FieldPolicy | FieldReadFunction, \tchapter?: FieldPolicy | FieldReadFunction, \tchapters?: FieldPolicy | FieldReadFunction, \tcheckForServerUpdates?: FieldPolicy | FieldReadFunction, \tcheckForWebUIUpdate?: FieldPolicy | FieldReadFunction, \tdownloadStatus?: FieldPolicy> | FieldReadFunction>, \textension?: FieldPolicy | FieldReadFunction, \textensions?: FieldPolicy | FieldReadFunction, \tgetWebUIUpdateStatus?: FieldPolicy> | FieldReadFunction>, \tlastUpdateTimestamp?: FieldPolicy | FieldReadFunction, \tmanga?: FieldPolicy> | FieldReadFunction>, \tmangas?: FieldPolicy | FieldReadFunction, \tmeta?: FieldPolicy> | FieldReadFunction>, \tmetas?: FieldPolicy | FieldReadFunction, \trestoreStatus?: FieldPolicy | FieldReadFunction, \tsearchTracker?: FieldPolicy | FieldReadFunction, \tsettings?: FieldPolicy | FieldReadFunction, \tsource?: FieldPolicy> | FieldReadFunction>, \tsources?: FieldPolicy | FieldReadFunction, \ttrackRecord?: FieldPolicy | FieldReadFunction, \ttrackRecords?: FieldPolicy | FieldReadFunction, \ttracker?: FieldPolicy | FieldReadFunction, \ttrackers?: FieldPolicy | FieldReadFunction, \tupdateStatus?: FieldPolicy> | FieldReadFunction>, \tvalidateBackup?: FieldPolicy | FieldReadFunction };`, ); fs.writeFileSync(generatedGraphQLFilePath, fixTypingOfQueryTypePolicies);