diff --git a/.eslintrc.js b/.eslintrc.cjs similarity index 99% rename from .eslintrc.js rename to .eslintrc.cjs index f4bb960d373..bf6789c6121 100644 --- a/.eslintrc.js +++ b/.eslintrc.cjs @@ -11,7 +11,7 @@ const { readGitignoreFiles } = require('eslint-gitignore'); module.exports = defineConfig({ ignorePatterns: [ ...readGitignoreFiles(), - '.eslintrc.js', // Skip self linting + '.eslintrc.cjs', // Skip self linting ], root: true, env: { diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6524af1402f..401eceb97e3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -173,6 +173,9 @@ jobs: env: CYPRESS_INSTALL_BINARY: 0 + - name: Build types + run: pnpm run build:types + - name: Check scripts run: pnpm run ts-check diff --git a/.github/workflows/commentCodeGeneration.ts b/.github/workflows/commentCodeGeneration.ts index f456e563a4e..ed5258d5899 100644 --- a/.github/workflows/commentCodeGeneration.ts +++ b/.github/workflows/commentCodeGeneration.ts @@ -10,11 +10,11 @@ import type { context as ctx, GitHub } from '@actions/github/lib/utils'; * @param context An object containing the context of the workflow run * @param isSuccess A boolean indicating whether the workflow was successful */ -module.exports = async ( +export async function script( github: InstanceType, context: typeof ctx, isSuccess: boolean -) => { +): Promise { const { data: comments } = await github.rest.issues.listComments({ owner: context.repo.owner, repo: context.repo.repo, @@ -45,4 +45,4 @@ module.exports = async ( body, }); } -}; +} diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index e250f9e425a..6b9138306e2 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -50,13 +50,13 @@ jobs: continue-on-error: true - name: Transpile ts - run: pnpm exec tsc .github/workflows/commentCodeGeneration.ts --outDir .github/workflows + run: pnpm tsup-node .github/workflows/commentCodeGeneration.ts --format cjs --clean false --out-dir .github/workflows - name: Comment uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: script: | - const script = require('${{ github.workspace }}/.github/workflows/commentCodeGeneration.js') + const { script } = require('${{ github.workspace }}/.github/workflows/commentCodeGeneration.cjs') await script(github, context, ${{ steps.generate.outcome == 'success' && steps.diff.outcome == 'success' }}) - name: Status diff --git a/.prettierrc.js b/.prettierrc.js index a81147f92ba..063dc85ae58 100644 --- a/.prettierrc.js +++ b/.prettierrc.js @@ -1,9 +1,9 @@ // @ts-check /** - * @type {import('prettier').Options} + * @type {import('prettier').Config} */ -module.exports = { +export default { plugins: ['prettier-plugin-organize-imports'], singleQuote: true, trailingComma: 'es5', @@ -20,6 +20,7 @@ module.exports = { { files: '*.md', options: { + // @ts-expect-error: known property organizeImportsSkipDestructiveCodeActions: true, }, }, diff --git a/package.json b/package.json index 6a8f60acb16..3fa55398052 100644 --- a/package.json +++ b/package.json @@ -28,8 +28,9 @@ ], "bugs": "https://github.com/faker-js/faker/issues", "license": "MIT", - "main": "dist/index.js", - "module": "dist/index.mjs", + "type": "module", + "main": "dist/index.cjs", + "module": "dist/index.js", "types": "index.d.ts", "typesVersions": { ">=4.0": { @@ -41,13 +42,15 @@ "exports": { ".": { "types": "./dist/types/index.d.ts", - "require": "./dist/index.js", - "import": "./dist/index.mjs" + "import": "./dist/index.js", + "require": "./dist/index.cjs", + "default": "./dist/index.js" }, "./locale/*": { "types": "./dist/types/locale/*.d.ts", - "require": "./dist/locale/*.js", - "import": "./dist/locale/*.mjs" + "import": "./dist/locale/*.js", + "require": "./dist/locale/*.cjs", + "default": "./dist/locale/*.js" }, "./package.json": "./package.json" }, diff --git a/test/faker.spec.ts b/test/faker.spec.ts index a026577bdf7..63ae794e5ac 100644 --- a/test/faker.spec.ts +++ b/test/faker.spec.ts @@ -13,15 +13,14 @@ describe('faker', () => { ); }); - it('should not log anything on startup', () => { + it('should not log anything on startup', async () => { const spies: MockInstance[] = keys(console) .filter((key) => typeof console[key] === 'function') .map((methodName) => vi.spyOn(console, methodName as keyof typeof console) ); - // 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; + (await import('..')).default; new Faker({ locale: { metadata: { title: '' } } }); diff --git a/test/locale-imports.spec.ts b/test/locale-imports.spec.ts index 5f07056bf4e..4c1197c886f 100644 --- a/test/locale-imports.spec.ts +++ b/test/locale-imports.spec.ts @@ -6,7 +6,7 @@ import { keys } from '../src/internal/keys'; describe.each(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, unicorn/prefer-module - const { faker } = require(`../dist/locale/${locale}`) as { + const { faker } = require(`../dist/locale/${locale}.cjs`) as { faker: Faker; };