diff --git a/.eslintrc.js b/.eslintrc.js index 6636c8f319f..4b57462e1d3 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -56,7 +56,6 @@ module.exports = defineConfig({ 'unicorn/numeric-separators-style': 'off', 'unicorn/prefer-code-point': 'off', 'unicorn/prefer-export-from': 'off', - 'unicorn/prefer-module': 'off', 'unicorn/prefer-string-slice': 'off', 'unicorn/prevent-abbreviations': 'off', 'unicorn/require-array-join-separator': 'off', diff --git a/scripts/apidoc/utils.ts b/scripts/apidoc/utils.ts index 18176da5b33..f26c6cdd5e2 100644 --- a/scripts/apidoc/utils.ts +++ b/scripts/apidoc/utils.ts @@ -1,5 +1,6 @@ import { createHash } from 'node:crypto'; -import { resolve } from 'node:path'; +import { dirname, resolve } from 'node:path'; +import { fileURLToPath } from 'node:url'; import type { Method } from '../../docs/.vitepress/components/api-docs/method'; // Types @@ -31,7 +32,7 @@ export interface DocsApiDiff { // Paths -const pathRoot = resolve(__dirname, '..', '..'); +const pathRoot = resolve(dirname(fileURLToPath(import.meta.url)), '..', '..'); export const pathDocsDir = resolve(pathRoot, 'docs'); const pathPublicDir = resolve(pathDocsDir, 'public'); export const nameDocsDiffIndexFile = 'api-diff-index.json'; diff --git a/scripts/generate-locales.ts b/scripts/generate-locales.ts index d2e9513e1b0..ebc06670124 100644 --- a/scripts/generate-locales.ts +++ b/scripts/generate-locales.ts @@ -21,7 +21,8 @@ import { readFileSync, writeFileSync, } from 'node:fs'; -import { resolve } from 'node:path'; +import { dirname, resolve } from 'node:path'; +import { fileURLToPath } from 'node:url'; import type { Options } from 'prettier'; import { format } from 'prettier'; import options from '../.prettierrc.js'; @@ -29,7 +30,7 @@ import type { LocaleDefinition, MetadataDefinition } from '../src/definitions'; // Constants -const pathRoot = resolve(__dirname, '..'); +const pathRoot = resolve(dirname(fileURLToPath(import.meta.url)), '..'); const pathLocale = resolve(pathRoot, 'src', 'locale'); const pathLocales = resolve(pathRoot, 'src', 'locales'); const pathLocaleIndex = resolve(pathLocale, 'index.ts'); @@ -359,8 +360,8 @@ async function normalizeLocaleFile(filePath: string, definitionKey: string) { } const fileContentPreData = fileContent.substring(0, compareIndex); - // eslint-disable-next-line @typescript-eslint/no-var-requires - const localeData = normalizeDataRecursive(require(filePath).default); + const fileImport = await import(`file:${filePath}`); + const localeData = normalizeDataRecursive(fileImport.default); // We reattach the content before the actual data implementation to keep stuff like comments. // In the long term we should probably define a whether we want those in the files at all. @@ -388,8 +389,8 @@ async function main(): Promise { const pathMetadata = resolve(pathModules, 'metadata.ts'); let localeTitle = 'No title found'; try { - // eslint-disable-next-line @typescript-eslint/no-var-requires - const metadata: MetadataDefinition = require(pathMetadata).default; + const metadataImport = await import(`file:${pathMetadata}`); + const metadata: MetadataDefinition = metadataImport.default; const { title } = metadata; if (!title) { throw new Error( diff --git a/test/all-functional.spec.ts b/test/all-functional.spec.ts index 4b822175be2..5718ec4befa 100644 --- a/test/all-functional.spec.ts +++ b/test/all-functional.spec.ts @@ -73,7 +73,7 @@ const BROKEN_LOCALE_METHODS = { jobType: ['ur'], }, } satisfies { - [module in keyof Faker]?: SkipConfig; + [module_ in keyof Faker]?: SkipConfig; }; function isWorkingLocaleForMethod( diff --git a/test/faker.spec.ts b/test/faker.spec.ts index bd42246a5a5..a098d89856e 100644 --- a/test/faker.spec.ts +++ b/test/faker.spec.ts @@ -19,7 +19,7 @@ describe('faker', () => { vi.spyOn(console, methodName as keyof typeof console) ); - // eslint-disable-next-line @typescript-eslint/no-var-requires + // eslint-disable-next-line @typescript-eslint/no-var-requires, unicorn/prefer-module -- Using import() requires types being build but the CI / TS-Check runs without them. require('..').faker; new Faker({ locale: { metadata: { title: '' } } }); diff --git a/test/locale-imports.spec.ts b/test/locale-imports.spec.ts index 6882d5379c8..999a7223437 100644 --- a/test/locale-imports.spec.ts +++ b/test/locale-imports.spec.ts @@ -4,7 +4,7 @@ import { allLocales } from '../src'; describe.each(Object.keys(allLocales))('locale imports', (locale) => { it(`should be possible to directly require('@faker-js/faker/locale/${locale}')`, () => { - // eslint-disable-next-line @typescript-eslint/no-var-requires + // eslint-disable-next-line @typescript-eslint/no-var-requires, unicorn/prefer-module const { faker } = require(`../dist/cjs/locale/${locale}`) as { faker: Faker; }; diff --git a/test/scripts/apidoc/verify-jsdoc-tags.spec.ts b/test/scripts/apidoc/verify-jsdoc-tags.spec.ts index b4a9f5ff730..29a487a51ae 100644 --- a/test/scripts/apidoc/verify-jsdoc-tags.spec.ts +++ b/test/scripts/apidoc/verify-jsdoc-tags.spec.ts @@ -1,5 +1,6 @@ import { existsSync, mkdirSync, rmSync, writeFileSync } from 'node:fs'; -import { resolve } from 'node:path'; +import { dirname, resolve } from 'node:path'; +import { fileURLToPath } from 'node:url'; import type { ReflectionType, SomeType } from 'typedoc'; import validator from 'validator'; import { afterAll, beforeAll, describe, expect, it, vi } from 'vitest'; @@ -25,7 +26,7 @@ import { loadProjectModules } from './utils'; beforeAll(initMarkdownRenderer); -const tempDir = resolve(__dirname, 'temp'); +const tempDir = resolve(dirname(fileURLToPath(import.meta.url)), 'temp'); afterAll(() => { // Remove temp folder diff --git a/test/simple-faker.spec.ts b/test/simple-faker.spec.ts index c416f4fed4c..899bcafedfa 100644 --- a/test/simple-faker.spec.ts +++ b/test/simple-faker.spec.ts @@ -10,7 +10,7 @@ describe('simpleFaker', () => { vi.spyOn(console, methodName as keyof typeof console) ); - // eslint-disable-next-line @typescript-eslint/no-var-requires + // eslint-disable-next-line @typescript-eslint/no-var-requires, unicorn/prefer-module -- Using import() requires types being build but the CI / TS-Check runs without them. require('..').simpleFaker; new SimpleFaker();