From 9d74380e94903d2feea7083e63aba8944a2f645c Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Tue, 24 Dec 2024 03:32:55 +0100 Subject: [PATCH] Convert to ESM --- .eslintignore | 2 +- .eslintrc.js => .eslintrc.cjs | 0 package.json | 15 ++++++++------- tools/scripts/codegenFormatter.ts | 4 ++-- tools/scripts/createTranslationChangelog.ts | 2 +- tools/scripts/generateDayJsLocales.ts | 4 ++-- tools/scripts/generateDayJsLocalesImport.ts | 4 ++-- tools/scripts/generatei18nResources.ts | 4 ++-- tools/scripts/tsconfig.json | 8 +------- vite.config.ts | 4 +--- 10 files changed, 20 insertions(+), 27 deletions(-) rename .eslintrc.js => .eslintrc.cjs (100%) diff --git a/.eslintignore b/.eslintignore index bad9857a..ef2bbcff 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,2 +1,2 @@ -.eslintrc.js +.eslintrc.cjs src/lib/graphql/generated diff --git a/.eslintrc.js b/.eslintrc.cjs similarity index 100% rename from .eslintrc.js rename to .eslintrc.cjs diff --git a/package.json b/package.json index 50e48b40..d3da5c51 100644 --- a/package.json +++ b/package.json @@ -2,6 +2,7 @@ "name": "project", "version": "0.1.0", "private": true, + "type": "module", "scripts": { "ci": "yarn install --frozen-lockfile", "dev": "vite", @@ -11,15 +12,15 @@ "build-md5": "find build -type f | sort | xargs md5sum | awk '{ print $1 }' | tr -d '\n' | md5sum| awk '{ print $1 }' > buildZip/md5sum ", "build-zip": "cd build && rev=$(git rev-list HEAD --count) && echo r$rev > revision && zip -9 -r ../buildZip/Suwayomi-WebUI-r$rev *", "lint": "eslint src --ext .ts,.tsx,.js,.jsx --max-warnings=0 --cache", - "createChangelog": "ts-node -T tools/scripts/createReleaseChangelog.ts", - "createTranslationChangelog": "ts-node -T -r tsconfig-paths/register tools/scripts/createTranslationChangelog.ts", - "updateDeps": "ts-node -T tools/scripts/updateDependencies.ts", + "createChangelog": "node --loader ts-node/esm tools/scripts/createReleaseChangelog.ts", + "createTranslationChangelog": "node --loader ts-node/esm -r tsconfig-paths/register tools/scripts/createTranslationChangelog.ts", + "updateDeps": "node --loader ts-node/esm tools/scripts/updateDependencies.ts", "gql:codegen-base": "graphql-codegen --config gql_codegen.ts", - "gql:codegen-formatter": "ts-node -T tools/scripts/codegenFormatter.ts", + "gql:codegen-formatter": "node --loader ts-node/esm tools/scripts/codegenFormatter.ts", "gql:codegen": "yarn gql:codegen-base & yarn gql:codegen-formatter", - "i18n:gen-resources": "ts-node -T tools/scripts/generatei18nResources.ts", - "dayjs:gen-locales-array": "ts-node -T tools/scripts/generateDayJsLocales.ts", - "dayjs:gen-locales-import": "ts-node -T tools/scripts/generateDayJsLocalesImport.ts", + "i18n:gen-resources": "node --loader ts-node/esm tools/scripts/generatei18nResources.ts", + "dayjs:gen-locales-array": "node --loader ts-node/esm tools/scripts/generateDayJsLocales.ts", + "dayjs:gen-locales-import": "node --loader ts-node/esm tools/scripts/generateDayJsLocalesImport.ts", "dayjs:gen-locales": "yarn dayjs:gen-locales-array && yarn dayjs:gen-locales-import", "prepare": "husky" }, diff --git a/tools/scripts/codegenFormatter.ts b/tools/scripts/codegenFormatter.ts index 630a7ad6..5d2a8a28 100644 --- a/tools/scripts/codegenFormatter.ts +++ b/tools/scripts/codegenFormatter.ts @@ -12,7 +12,7 @@ import * as path from 'path'; const format = (source: string, regex: RegExp | string, replaceValue: string): string => source.replace(regex, replaceValue); -let generatedGraphQLFilePath = path.resolve(__dirname, '../../src/lib/graphql/generated/graphql.ts'); +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 @@ -33,7 +33,7 @@ fs.writeFileSync(generatedGraphQLFilePath, fixSubscriptionHookNameSuffix); /* */ /* ****************************************** */ -generatedGraphQLFilePath = path.resolve(__dirname, '../../src/lib/graphql/generated/apollo-helpers.ts'); +generatedGraphQLFilePath = path.resolve(import.meta.dirname, '../../src/lib/graphql/generated/apollo-helpers.ts'); generatedGraphQLFile = fs.readFileSync(generatedGraphQLFilePath, 'utf8'); const addImports = format( diff --git a/tools/scripts/createTranslationChangelog.ts b/tools/scripts/createTranslationChangelog.ts index 728cb706..fd9b076b 100644 --- a/tools/scripts/createTranslationChangelog.ts +++ b/tools/scripts/createTranslationChangelog.ts @@ -284,7 +284,7 @@ const getContributorsForRange = async (url: string, authToken: string): Promise< const getLanguageLinesFromChangelog = (): Promise => { const fileReadPromise = new ControlledPromise(); - const changelogFile = path.resolve(__dirname, '../../CHANGELOG.md'); + const changelogFile = path.resolve(import.meta.dirname, '../../CHANGELOG.md'); const fileStream = fs.createReadStream(changelogFile); const fileLineReader = readline.createInterface({ input: fileStream, diff --git a/tools/scripts/generateDayJsLocales.ts b/tools/scripts/generateDayJsLocales.ts index fccffbc3..0a70d8f0 100644 --- a/tools/scripts/generateDayJsLocales.ts +++ b/tools/scripts/generateDayJsLocales.ts @@ -9,8 +9,8 @@ import path from 'path'; import fs from 'fs'; -const outputFilePath = path.join(__dirname, '../../src/lib/dayjs/Locales.ts'); -const resourcesDirPath = path.join(__dirname, '../../node_modules/dayjs/locale'); +const outputFilePath = path.join(import.meta.dirname, '../../src/lib/dayjs/Locales.ts'); +const resourcesDirPath = path.join(import.meta.dirname, '../../node_modules/dayjs/locale'); const dayjsLocaleFileNames = fs.readdirSync(resourcesDirPath); diff --git a/tools/scripts/generateDayJsLocalesImport.ts b/tools/scripts/generateDayJsLocalesImport.ts index 7e38f0d6..4f6d1ade 100644 --- a/tools/scripts/generateDayJsLocalesImport.ts +++ b/tools/scripts/generateDayJsLocalesImport.ts @@ -9,8 +9,8 @@ import path from 'path'; import fs from 'fs'; -const outputFilePath = path.join(__dirname, '../../src/lib/dayjs/LocaleImporter.ts'); -const resourcesDirPath = path.join(__dirname, '../../node_modules/dayjs/locale'); +const outputFilePath = path.join(import.meta.dirname, '../../src/lib/dayjs/LocaleImporter.ts'); +const resourcesDirPath = path.join(import.meta.dirname, '../../node_modules/dayjs/locale'); const dayjsLocaleFileNames = fs.readdirSync(resourcesDirPath); diff --git a/tools/scripts/generatei18nResources.ts b/tools/scripts/generatei18nResources.ts index 5e197f79..c4ec4156 100644 --- a/tools/scripts/generatei18nResources.ts +++ b/tools/scripts/generatei18nResources.ts @@ -9,8 +9,8 @@ import path from 'path'; import fs from 'fs'; -const outputFilePath = path.join(__dirname, '../../src/i18n/index.ts'); -const resourcesDirPath = path.join(__dirname, '../../public/locales'); +const outputFilePath = path.join(import.meta.dirname, '../../src/i18n/index.ts'); +const resourcesDirPath = path.join(import.meta.dirname, '../../public/locales'); const resourceFileNames = fs.readdirSync(resourcesDirPath); diff --git a/tools/scripts/tsconfig.json b/tools/scripts/tsconfig.json index 9ad84a1c..cf1bcac4 100644 --- a/tools/scripts/tsconfig.json +++ b/tools/scripts/tsconfig.json @@ -6,11 +6,5 @@ "compilerOptions": { "moduleResolution": "node" }, - "ts-node": { - // these options are overrides used only by ts-node - // same as the --compilerOptions flag and the TS_NODE_COMPILER_OPTIONS environment variable - "compilerOptions": { - "module": "commonjs" - } - } + "ts-node": {} } diff --git a/vite.config.ts b/vite.config.ts index ad69c208..56f8a72c 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -14,8 +14,6 @@ import react from '@vitejs/plugin-react-swc'; import viteTsconfigPaths from 'vite-tsconfig-paths'; import legacy from '@vitejs/plugin-legacy'; -// TODO - switch to ESM - with Vite v5.x the CJS build is deprecated (https://vitejs.dev/guide/migration) - // eslint-disable-next-line import/no-default-export export default defineConfig(() => ({ build: { @@ -26,7 +24,7 @@ export default defineConfig(() => ({ }, resolve: { alias: { - '@': path.resolve(__dirname, './src'), + '@': path.resolve(import.meta.dirname, './src'), }, }, optimizeDeps: {