From c1684a1bc94a00afd79aabd25282b10039b47aa7 Mon Sep 17 00:00:00 2001 From: "@compulim" <@compulim> Date: Sun, 13 Oct 2024 08:41:50 +0000 Subject: [PATCH 1/9] Bump scaffold --- .eslintrc.jest.yml | 1 + .eslintrc.production.yml | 6 +- .eslintrc.react.yml | 3 - .eslintrc.typescript.yml | 3 + .github/workflows/continuous-deployment.yml | 2 - .github/workflows/prepare-release.yml | 14 ++- .github/workflows/pull-request-validation.yml | 6 +- package.json | 10 ++- .../integration-test/.eslintrc.custom.yml | 2 + packages/integration-test/.eslintrc.yml | 2 + packages/integration-test/.gitignore | 2 + packages/integration-test/jest.config.json | 38 ++++++++ .../integration-test/tsconfig.custom.json | 3 + packages/integration-test/tsconfig.json | 7 ++ packages/pages/.eslintrc.custom.yml | 0 packages/pages/.eslintrc.yml | 4 + packages/pages/.gitignore | 2 + packages/pages/src/tsconfig.custom.json | 3 + packages/pages/src/tsconfig.json | 18 ++++ .../version-from-git/.eslintrc.custom.yml | 0 packages/version-from-git/.eslintrc.yml | 2 + .../__setup__/typingTestTransformer.js | 89 +++++++++++++++++++ .../__tests__/types/.gitignore | 1 + packages/version-from-git/jest.config.json | 40 +++++++++ packages/version-from-git/package.json | 34 ++++--- .../version-from-git/src/tsconfig.custom.json | 3 + packages/version-from-git/src/tsconfig.json | 2 +- .../src/tsconfig.precommit.production.json | 6 +- .../src/tsconfig.precommit.test.json | 5 +- packages/version-from-git/tsup.config.ts | 5 +- 30 files changed, 279 insertions(+), 34 deletions(-) create mode 100644 packages/integration-test/.eslintrc.custom.yml create mode 100644 packages/integration-test/.eslintrc.yml create mode 100644 packages/integration-test/.gitignore create mode 100644 packages/integration-test/jest.config.json create mode 100644 packages/integration-test/tsconfig.custom.json create mode 100644 packages/integration-test/tsconfig.json create mode 100644 packages/pages/.eslintrc.custom.yml create mode 100644 packages/pages/.eslintrc.yml create mode 100644 packages/pages/.gitignore create mode 100644 packages/pages/src/tsconfig.custom.json create mode 100644 packages/pages/src/tsconfig.json create mode 100644 packages/version-from-git/.eslintrc.custom.yml create mode 100644 packages/version-from-git/.eslintrc.yml create mode 100644 packages/version-from-git/__tests__/__setup__/typingTestTransformer.js create mode 100644 packages/version-from-git/__tests__/types/.gitignore create mode 100644 packages/version-from-git/jest.config.json create mode 100644 packages/version-from-git/src/tsconfig.custom.json diff --git a/.eslintrc.jest.yml b/.eslintrc.jest.yml index 4340ddd..0255384 100644 --- a/.eslintrc.jest.yml +++ b/.eslintrc.jest.yml @@ -8,3 +8,4 @@ rules: react/display-name: off # Disable for convenience react/prop-types: off + '@typescript-eslint/no-require-imports': off diff --git a/.eslintrc.production.yml b/.eslintrc.production.yml index ba58e9f..b63635d 100644 --- a/.eslintrc.production.yml +++ b/.eslintrc.production.yml @@ -30,7 +30,11 @@ rules: import/no-anonymous-default-export: error import/no-duplicates: error import/no-namespace: error - import/no-unassigned-import: error + import/no-unassigned-import: + - error + - allow: + - '**/*.css' + - dotenv/config settings: import/extensions: - .cjs diff --git a/.eslintrc.react.yml b/.eslintrc.react.yml index 923e17c..914d633 100644 --- a/.eslintrc.react.yml +++ b/.eslintrc.react.yml @@ -2,6 +2,3 @@ extends: - plugin:react/recommended plugins: - react -settings: - react: - version: 18.2.0 diff --git a/.eslintrc.typescript.yml b/.eslintrc.typescript.yml index 3ea0b00..5de2aeb 100644 --- a/.eslintrc.typescript.yml +++ b/.eslintrc.typescript.yml @@ -4,6 +4,9 @@ parser: '@typescript-eslint/parser' plugins: - '@typescript-eslint' rules: + # Shortening if-statement into &&, ||, or ternary operators. + '@typescript-eslint/no-unused-expressions': off + '@typescript-eslint/no-unused-vars': - error - argsIgnorePattern: ^_ diff --git a/.github/workflows/continuous-deployment.yml b/.github/workflows/continuous-deployment.yml index e53add5..0b0757b 100644 --- a/.github/workflows/continuous-deployment.yml +++ b/.github/workflows/continuous-deployment.yml @@ -18,6 +18,4 @@ jobs: secrets: inherit uses: compulim/workflows/.github/workflows/continuous-deployment.yml@main with: - github-pages: false - node-version: 18.x package-name: version-from-git diff --git a/.github/workflows/prepare-release.yml b/.github/workflows/prepare-release.yml index 53e0965..d36f52f 100644 --- a/.github/workflows/prepare-release.yml +++ b/.github/workflows/prepare-release.yml @@ -1,7 +1,17 @@ name: Prepare release on: - workflow_dispatch: {} + workflow_dispatch: + inputs: + version-to-bump: + default: patch + description: Version to bump + options: + - major + - minor + - patch + required: true + type: choice jobs: call-workflow: @@ -10,3 +20,5 @@ jobs: id-token: write secrets: inherit uses: compulim/workflows/.github/workflows/prepare-release.yml@main + with: + version-to-bump: ${{ inputs.version-to-bump }} diff --git a/.github/workflows/pull-request-validation.yml b/.github/workflows/pull-request-validation.yml index f1c76d6..a949ef0 100644 --- a/.github/workflows/pull-request-validation.yml +++ b/.github/workflows/pull-request-validation.yml @@ -9,11 +9,9 @@ jobs: call-workflow: strategy: matrix: - switch: [current] + switch: [current, react-16, react-17, react-18] uses: compulim/workflows/.github/workflows/pull-request-validation.yml@main with: - github-pages: false package-name: version-from-git - project-type: legacy - skip-integration-test: true + skip-integration-test: false switch: ${{ matrix.switch }} diff --git a/package.json b/package.json index a1cde0b..e0c503c 100644 --- a/package.json +++ b/package.json @@ -10,16 +10,18 @@ ], "scripts": { "build": "npm run build --if-present --workspaces", - "bump": "npm run bump:prod && npm run bump:dev && npm run bump:auditfix && npm run bump:packages && npm run bump:eslintrc", - "bump:auditfix": "npm audit fix || exit 0", - "bump:dev": "PACKAGES_TO_BUMP=$(cat package.json | jq -r '(.localPeerDependencies // {}) as $L | (.devDependencies // {}) | to_entries | map(select(.key as $K | $L | has($K) | not)) | map(.key + \"@latest\") | join(\" \")') && [ ! -z \"$PACKAGES_TO_BUMP\" ] && npm install $PACKAGES_TO_BUMP || true", + "bump": "npm run bump:prod && npm run bump:dev && npm run bump:packages && npm run bump:eslintrc", + "bump:dev": "PACKAGES_TO_BUMP=$(cat package.json | jq -r '(.pinDependencies // {}) as $P | (.localPeerDependencies // {}) as $L | (.devDependencies // {}) | to_entries | map(select(.key as $K | $L | has($K) | not)) | map(.key + \"@\" + ($P[.key] // [\"latest\"])[0]) | join(\" \")') && [ ! -z \"$PACKAGES_TO_BUMP\" ] && npm install $PACKAGES_TO_BUMP || true", "bump:eslintrc": "if [ -f node_modules/react/package.json ]; then docker run -e VERSION=$(cat node_modules/react/package.json | jq -r '.version') -i --rm mikefarah/yq '.settings.react.version = strenv(VERSION)' < ./.eslintrc.react.yml | tee /tmp/output.tmp && mv /tmp/output.tmp ./.eslintrc.react.yml; fi", "bump:packages": "npm run bump --if-present --workspaces", - "bump:prod": "PACKAGES_TO_BUMP=$(cat package.json | jq -r '(.localPeerDependencies // {}) as $L | (.dependencies // {}) | to_entries | map(select(.key as $K | $L | has($K) | not)) | map(.key + \"@latest\") | join(\" \")') && [ ! -z \"$PACKAGES_TO_BUMP\" ] && npm install $PACKAGES_TO_BUMP || true", + "bump:prod": "PACKAGES_TO_BUMP=$(cat package.json | jq -r '(.pinDependencies // {}) as $P | (.localPeerDependencies // {}) as $L | (.dependencies // {}) | to_entries | map(select(.key as $K | $L | has($K) | not)) | map(.key + \"@\" + ($P[.key] // [\"latest\"])[0]) | join(\" \")') && [ ! -z \"$PACKAGES_TO_BUMP\" ] && npm install $PACKAGES_TO_BUMP || true", "postscaffold": "npm run postscaffold:eslint:react && npm run postscaffold --if-present --workspaces", "postscaffold:eslint:react": "npm run bump:eslintrc", "precommit": "npm run precommit --if-present --workspaces", "switch:_": "npm run --if-present --workspaces switch && npm install --legacy-peer-deps --prefer-dedupe", + "switch:react-16": "SWITCH_NAME=react-16 npm run switch:_", + "switch:react-17": "SWITCH_NAME=react-17 npm run switch:_", + "switch:react-18": "SWITCH_NAME=react-18 npm run switch:_", "test": "npm run test --if-present --workspaces" }, "devDependencies": { diff --git a/packages/integration-test/.eslintrc.custom.yml b/packages/integration-test/.eslintrc.custom.yml new file mode 100644 index 0000000..5c9fc4c --- /dev/null +++ b/packages/integration-test/.eslintrc.custom.yml @@ -0,0 +1,2 @@ +env: + browser: true diff --git a/packages/integration-test/.eslintrc.yml b/packages/integration-test/.eslintrc.yml new file mode 100644 index 0000000..54b2959 --- /dev/null +++ b/packages/integration-test/.eslintrc.yml @@ -0,0 +1,2 @@ +extends: + - ./.eslintrc.custom.yml diff --git a/packages/integration-test/.gitignore b/packages/integration-test/.gitignore new file mode 100644 index 0000000..936e5c5 --- /dev/null +++ b/packages/integration-test/.gitignore @@ -0,0 +1,2 @@ +/node_modules/ +/package-lock.json diff --git a/packages/integration-test/jest.config.json b/packages/integration-test/jest.config.json new file mode 100644 index 0000000..9c305d4 --- /dev/null +++ b/packages/integration-test/jest.config.json @@ -0,0 +1,38 @@ +{ + "testMatch": ["**/__tests__/**/*.?([cm])[jt]s?(x)", "**/?(*.)+(spec|test).?([cm])[jt]s?(x)"], + "transform": { + "\\.cjsx?$": [ + "babel-jest", + { + "presets": [ + [ + "@babel/preset-react", + { + "runtime": "classic" + } + ] + ] + } + ], + "\\.mjsx?$": [ + "babel-jest", + { + "presets": [ + [ + "@babel/preset-react", + { + "runtime": "classic" + } + ], + [ + "@babel/preset-env", + { + "modules": "commonjs", + "targets": "defaults" + } + ] + ] + } + ] + } +} diff --git a/packages/integration-test/tsconfig.custom.json b/packages/integration-test/tsconfig.custom.json new file mode 100644 index 0000000..7a3b017 --- /dev/null +++ b/packages/integration-test/tsconfig.custom.json @@ -0,0 +1,3 @@ +{ + "extends": "@tsconfig/strictest/tsconfig.json" +} diff --git a/packages/integration-test/tsconfig.json b/packages/integration-test/tsconfig.json new file mode 100644 index 0000000..d910d6b --- /dev/null +++ b/packages/integration-test/tsconfig.json @@ -0,0 +1,7 @@ +// This configuration file is for VSCode only. +{ + "compilerOptions": { + "jsx": "react" + }, + "extends": "./tsconfig.custom.json" +} diff --git a/packages/pages/.eslintrc.custom.yml b/packages/pages/.eslintrc.custom.yml new file mode 100644 index 0000000..e69de29 diff --git a/packages/pages/.eslintrc.yml b/packages/pages/.eslintrc.yml new file mode 100644 index 0000000..a8f533d --- /dev/null +++ b/packages/pages/.eslintrc.yml @@ -0,0 +1,4 @@ +env: + browser: true +extends: + - ./.eslintrc.custom.yml diff --git a/packages/pages/.gitignore b/packages/pages/.gitignore new file mode 100644 index 0000000..eab9b2f --- /dev/null +++ b/packages/pages/.gitignore @@ -0,0 +1,2 @@ +/node_modules/ +/public/static/ diff --git a/packages/pages/src/tsconfig.custom.json b/packages/pages/src/tsconfig.custom.json new file mode 100644 index 0000000..7a3b017 --- /dev/null +++ b/packages/pages/src/tsconfig.custom.json @@ -0,0 +1,3 @@ +{ + "extends": "@tsconfig/strictest/tsconfig.json" +} diff --git a/packages/pages/src/tsconfig.json b/packages/pages/src/tsconfig.json new file mode 100644 index 0000000..017f0c9 --- /dev/null +++ b/packages/pages/src/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "allowImportingTsExtensions": true, + "esModuleInterop": true, + "jsx": "react", + "lib": [ + "DOM", + "ESNext", + "WebWorker" + ], + "moduleResolution": "Bundler", + "noEmit": true, + "strict": true, + "target": "ESNext", + "types": [] + }, + "extends": "./tsconfig.custom.json" +} diff --git a/packages/version-from-git/.eslintrc.custom.yml b/packages/version-from-git/.eslintrc.custom.yml new file mode 100644 index 0000000..e69de29 diff --git a/packages/version-from-git/.eslintrc.yml b/packages/version-from-git/.eslintrc.yml new file mode 100644 index 0000000..54b2959 --- /dev/null +++ b/packages/version-from-git/.eslintrc.yml @@ -0,0 +1,2 @@ +extends: + - ./.eslintrc.custom.yml diff --git a/packages/version-from-git/__tests__/__setup__/typingTestTransformer.js b/packages/version-from-git/__tests__/__setup__/typingTestTransformer.js new file mode 100644 index 0000000..b8d3ed5 --- /dev/null +++ b/packages/version-from-git/__tests__/__setup__/typingTestTransformer.js @@ -0,0 +1,89 @@ +// Notes: to test changes in this file, run "jest" with "--no-cache" argument. + +const run = ({ filename }) => { + const escapeStringRegexp = require('escape-string-regexp'); + const fs = require('fs/promises'); + const { extname } = require('path'); + const typeScript = require('typescript'); + + const TS_EXPECT_ERROR = /(\/\/\s+)(@ts-expect-error)[\s+(.*)]/gu; + const TSCONFIG = { + allowImportingTsExtensions: true, + allowSyntheticDefaultImports: true, + jsx: typeScript.JsxEmit.React, + noEmit: true, + skipLibCheck: true, + strict: true + }; + + async function compile(filename) { + const program = typeScript.createProgram([filename], TSCONFIG); + + const emitResult = program.emit(); + const allDiagnostics = typeScript.getPreEmitDiagnostics(program).concat(emitResult.diagnostics); + + allDiagnostics.forEach(({ file, messageText, start }) => { + if (file && start) { + const { line, character } = file.getLineAndCharacterOfPosition(start); + const message = typeScript.flattenDiagnosticMessageText(messageText, '\n'); + + throw new Error(`Failed to compile ${file.fileName} (${line + 1},${character + 1}): ${message}`); + } else { + throw new Error(typeScript.flattenDiagnosticMessageText(messageText, '\n')); + } + }); + } + + async function checkExpectError(filename) { + const sourceText = await fs.readFile(filename, 'utf-8'); + const sourceTextWithoutExpectError = sourceText.replace(TS_EXPECT_ERROR, '$1'); + + const extension = extname(filename); + const tempFilename = filename.substring(0, filename.length - extension.length) + `.tmp${extension}`; + + await fs.writeFile(tempFilename, sourceTextWithoutExpectError); + + try { + const program = typeScript.createProgram([tempFilename], TSCONFIG); + + const emitResult = program.emit(); + const allDiagnostics = typeScript.getPreEmitDiagnostics(program).concat(emitResult.diagnostics); + + allDiagnostics.forEach(({ file, messageText, start }) => { + if (file && start) { + const { line } = file.getLineAndCharacterOfPosition(start); + const message = typeScript.flattenDiagnosticMessageText(messageText, '\n'); + + const expectedErrorLine = file.getFullText().split('\n')[line - 1]; + const expectedError = expectedErrorLine?.replace(/\s*\/\/\s+/u, '').trim(); + let expectedErrors = [expectedError]; + + try { + const parsed = JSON.parse(expectedError); + + if (Array.isArray(expectedErrors) && expectedErrors.every(value => typeof value === 'string')) { + expectedErrors = parsed; + } + } catch {} + + expect(message).toEqual(expect.stringMatching(new RegExp(expectedErrors.map(escapeStringRegexp).join('|')))); + } else { + throw new Error(typeScript.flattenDiagnosticMessageText(messageText, '\n')); + } + }); + } finally { + fs.unlink(tempFilename); + } + } + + describe(filename, () => { + test('should succeed', () => compile(filename)); + test('should have @ts-expect-error describing compile errors correctly', () => checkExpectError(filename)); + }); +}; + +module.exports = { + process(_, filename) { + return { code: `(${run})(${JSON.stringify({ filename })})` }; + } +}; diff --git a/packages/version-from-git/__tests__/types/.gitignore b/packages/version-from-git/__tests__/types/.gitignore new file mode 100644 index 0000000..5ad8225 --- /dev/null +++ b/packages/version-from-git/__tests__/types/.gitignore @@ -0,0 +1 @@ +*.tmp.tsx diff --git a/packages/version-from-git/jest.config.json b/packages/version-from-git/jest.config.json new file mode 100644 index 0000000..d49d9d7 --- /dev/null +++ b/packages/version-from-git/jest.config.json @@ -0,0 +1,40 @@ +{ + "testPathIgnorePatterns": [ + "/__setup__/", + "/lib/", + "/node_modules/", + "/__types__/", + "\\.pnp\\.[^\\/]+$" + ], + "transform": { + "/__tests__/types/": [ + "/__tests__/__setup__/typingTestTransformer.js" + ], + "\\.[jt]sx?$": [ + "babel-jest", + { + "presets": [ + [ + "@babel/preset-typescript", + { + "allowDeclareFields": true + } + ], + [ + "@babel/preset-env", + { + "modules": "commonjs", + "targets": { + "node": "18" + } + } + ] + ], + "sourceMaps": true + } + ] + }, + "watchPathIgnorePatterns": [ + "\\.tmp\\." + ] +} diff --git a/packages/version-from-git/package.json b/packages/version-from-git/package.json index 2e11b3c..0bd6ad4 100644 --- a/packages/version-from-git/package.json +++ b/packages/version-from-git/package.json @@ -5,24 +5,23 @@ "files": [ "./dist/" ], - "main": "./dist/version-from-git.mjs", + "main": "./dist/version-from-git.js", "bin": { "version-from-git": "./dist/version-from-git.mjs" }, "scripts": { - "build": "tsup-node", - "bump": "npm run bump:prod && npm run bump:dev && npm run bump:auditfix", - "bump:auditfix": "npm audit fix || exit 0", - "bump:dev": "PACKAGES_TO_BUMP=$(cat package.json | jq -r '(.localPeerDependencies // {}) as $L | (.devDependencies // {}) | to_entries | map(select(.key as $K | $L | has($K) | not)) | map(.key + \"@latest\") | join(\" \")') && [ ! -z \"$PACKAGES_TO_BUMP\" ] && npm install $PACKAGES_TO_BUMP || true", - "bump:prod": "PACKAGES_TO_BUMP=$(cat package.json | jq -r '(.localPeerDependencies // {}) as $L | (.dependencies // {}) | to_entries | map(select(.key as $K | $L | has($K) | not)) | map(.key + \"@latest\") | join(\" \")') && [ ! -z \"$PACKAGES_TO_BUMP\" ] && npm install $PACKAGES_TO_BUMP || true", - "precommit": "npm run precommit:eslint && npm run precommit:publint && npm run precommit:typescript:production", - "precommit:eslint": "eslint ./src/", + "build": "tsup", + "bump": "npm run bump:prod && npm run bump:dev", + "bump:dev": "PACKAGES_TO_BUMP=$(cat package.json | jq -r '(.pinDependencies // {}) as $P | (.localPeerDependencies // {}) as $L | (.devDependencies // {}) | to_entries | map(select(.key as $K | $L | has($K) | not)) | map(.key + \"@\" + ($P[.key] // [\"latest\"])[0]) | join(\" \")') && [ ! -z \"$PACKAGES_TO_BUMP\" ] && npm install $PACKAGES_TO_BUMP || true", + "bump:prod": "PACKAGES_TO_BUMP=$(cat package.json | jq -r '(.pinDependencies // {}) as $P | (.localPeerDependencies // {}) as $L | (.dependencies // {}) | to_entries | map(select(.key as $K | $L | has($K) | not)) | map(.key + \"@\" + ($P[.key] // [\"latest\"])[0]) | join(\" \")') && [ ! -z \"$PACKAGES_TO_BUMP\" ] && npm install $PACKAGES_TO_BUMP || true", + "precommit": "npm run precommit:eslint && npm run precommit:publint && npm run precommit:typescript:production && npm run precommit:typescript:test", + "precommit:eslint": "ESLINT_USE_FLAT_CONFIG=false eslint ./src/", "precommit:publint": "publint", "precommit:typescript:production": "tsc --noEmit --project ./src/tsconfig.precommit.production.json", - "-precommit:typescript:test": "tsc --noEmit --project ./src/tsconfig.precommit.test.json", + "precommit:typescript:test": "tsc --noEmit --project ./src/tsconfig.precommit.test.json", "prepack": "cp ../../CHANGELOG.md . && cp ../../LICENSE . && cp ../../README.md .", "switch": "cat package.json | jq --arg SWITCH_NAME $SWITCH_NAME -r '(.[\"switch:\" + $SWITCH_NAME] // {}) as $TEMPLATE | .devDependencies += ($TEMPLATE.devDependencies // {}) | .dependencies += ($TEMPLATE.dependencies // {})' | tee ./package.json.tmp && mv ./package.json.tmp ./package.json", - "test": "echo \"TODO: Add tests\"" + "test": "jest" }, "repository": { "type": "git", @@ -60,5 +59,18 @@ "@types/git-rev-sync": "^2.0.2", "@types/semver": "^7.5.8", "publint": "^0.2.11" - } + }, + "exports": { + ".": { + "import": { + "types": "./dist/version-from-git.d.mts", + "default": "./dist/version-from-git.mjs" + }, + "require": { + "types": "./dist/version-from-git.d.ts", + "default": "./dist/version-from-git.js" + } + } + }, + "typings": "./dist/version-from-git.d.ts" } diff --git a/packages/version-from-git/src/tsconfig.custom.json b/packages/version-from-git/src/tsconfig.custom.json new file mode 100644 index 0000000..7a3b017 --- /dev/null +++ b/packages/version-from-git/src/tsconfig.custom.json @@ -0,0 +1,3 @@ +{ + "extends": "@tsconfig/strictest/tsconfig.json" +} diff --git a/packages/version-from-git/src/tsconfig.json b/packages/version-from-git/src/tsconfig.json index aca1502..b4c9c14 100644 --- a/packages/version-from-git/src/tsconfig.json +++ b/packages/version-from-git/src/tsconfig.json @@ -14,5 +14,5 @@ "node" ] }, - "extends": "@tsconfig/strictest/tsconfig.json" + "extends": "./tsconfig.custom.json" } diff --git a/packages/version-from-git/src/tsconfig.precommit.production.json b/packages/version-from-git/src/tsconfig.precommit.production.json index ed58ae3..68f3ff3 100644 --- a/packages/version-from-git/src/tsconfig.precommit.production.json +++ b/packages/version-from-git/src/tsconfig.precommit.production.json @@ -8,9 +8,7 @@ "noEmit": true, "strict": true, "target": "ESNext", - "types": [ - "node" - ] + "types": [] }, "exclude": [ "**/*.spec.ts", @@ -19,5 +17,5 @@ "**/*.test.tsx", "__tests__/**/*" ], - "extends": "@tsconfig/strictest/tsconfig.json" + "extends": "./tsconfig.custom.json" } diff --git a/packages/version-from-git/src/tsconfig.precommit.test.json b/packages/version-from-git/src/tsconfig.precommit.test.json index edc7eb3..54576c2 100644 --- a/packages/version-from-git/src/tsconfig.precommit.test.json +++ b/packages/version-from-git/src/tsconfig.precommit.test.json @@ -8,7 +8,10 @@ "noEmit": true, "strict": true, "target": "ESNext", - "types": ["jest", "node"] + "types": [ + "jest", + "node" + ] }, "extends": "@tsconfig/recommended/tsconfig.json", "include": [ diff --git a/packages/version-from-git/tsup.config.ts b/packages/version-from-git/tsup.config.ts index e610e6b..c4ba3a9 100644 --- a/packages/version-from-git/tsup.config.ts +++ b/packages/version-from-git/tsup.config.ts @@ -2,10 +2,11 @@ import { defineConfig } from 'tsup'; export default defineConfig([ { + dts: true, entry: { - 'version-from-git': './src/index.mts' + 'version-from-git': './src/index.ts' }, - format: ['esm'], + format: ['cjs', 'esm'], sourcemap: true } ]); From 41e71496af43a0b43435afa497d8df55c3a3b33b Mon Sep 17 00:00:00 2001 From: William Wong Date: Sun, 13 Oct 2024 01:47:39 -0700 Subject: [PATCH 2/9] Move to ESM only --- CHANGELOG.md | 1 + packages/version-from-git/package.json | 3 ++- packages/version-from-git/src/{index.mts => index.ts} | 1 + packages/version-from-git/src/tsconfig.json | 1 - packages/version-from-git/tsup.config.ts | 2 +- 5 files changed, 5 insertions(+), 3 deletions(-) rename packages/version-from-git/src/{index.mts => index.ts} (99%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 359d8b5..dc82f46 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ### Changed +- 💢 Moved to ESM only, in PR [#27](https://github.com/compulim/version-from-git/pull/27) - Ported to TypeScript, in PR [#24](https://github.com/compulim/version-from-git/pull/24) - Bumped dependencies, in PR [#23](https://github.com/compulim/version-from-git/pull/23) - Production dependencies diff --git a/packages/version-from-git/package.json b/packages/version-from-git/package.json index 0bd6ad4..34dcbcd 100644 --- a/packages/version-from-git/package.json +++ b/packages/version-from-git/package.json @@ -5,9 +5,10 @@ "files": [ "./dist/" ], + "type": "module", "main": "./dist/version-from-git.js", "bin": { - "version-from-git": "./dist/version-from-git.mjs" + "version-from-git": "./dist/version-from-git.js" }, "scripts": { "build": "tsup", diff --git a/packages/version-from-git/src/index.mts b/packages/version-from-git/src/index.ts similarity index 99% rename from packages/version-from-git/src/index.mts rename to packages/version-from-git/src/index.ts index a78993c..7880b03 100755 --- a/packages/version-from-git/src/index.mts +++ b/packages/version-from-git/src/index.ts @@ -12,6 +12,7 @@ import { major, minor, patch } from 'semver'; const { green, magenta, red, yellow } = chalk; const { log } = console; + const ourPackageJSON = await readPackage({ cwd: join(fileURLToPath(import.meta.url), '../../') }); const DEFAULT_TEMPLATE = 'branch.short'; diff --git a/packages/version-from-git/src/tsconfig.json b/packages/version-from-git/src/tsconfig.json index b4c9c14..ae51fef 100644 --- a/packages/version-from-git/src/tsconfig.json +++ b/packages/version-from-git/src/tsconfig.json @@ -10,7 +10,6 @@ "strict": true, "target": "ESNext", "types": [ - "jest", "node" ] }, diff --git a/packages/version-from-git/tsup.config.ts b/packages/version-from-git/tsup.config.ts index c4ba3a9..81816a6 100644 --- a/packages/version-from-git/tsup.config.ts +++ b/packages/version-from-git/tsup.config.ts @@ -6,7 +6,7 @@ export default defineConfig([ entry: { 'version-from-git': './src/index.ts' }, - format: ['cjs', 'esm'], + format: 'esm', sourcemap: true } ]); From 51b1327621dfd3f1b3a57ecaa954601ce1faddae Mon Sep 17 00:00:00 2001 From: William Wong Date: Sun, 13 Oct 2024 01:51:28 -0700 Subject: [PATCH 3/9] Remove react --- .github/workflows/pull-request-validation.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pull-request-validation.yml b/.github/workflows/pull-request-validation.yml index a949ef0..d77a319 100644 --- a/.github/workflows/pull-request-validation.yml +++ b/.github/workflows/pull-request-validation.yml @@ -9,7 +9,7 @@ jobs: call-workflow: strategy: matrix: - switch: [current, react-16, react-17, react-18] + switch: [current] uses: compulim/workflows/.github/workflows/pull-request-validation.yml@main with: package-name: version-from-git From 19a80c177be3fa1b8c4bb2bc9cdcb149cc70794f Mon Sep 17 00:00:00 2001 From: William Wong Date: Sun, 13 Oct 2024 01:52:30 -0700 Subject: [PATCH 4/9] Remove test --- packages/version-from-git/package.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/version-from-git/package.json b/packages/version-from-git/package.json index 34dcbcd..697c419 100644 --- a/packages/version-from-git/package.json +++ b/packages/version-from-git/package.json @@ -21,8 +21,7 @@ "precommit:typescript:production": "tsc --noEmit --project ./src/tsconfig.precommit.production.json", "precommit:typescript:test": "tsc --noEmit --project ./src/tsconfig.precommit.test.json", "prepack": "cp ../../CHANGELOG.md . && cp ../../LICENSE . && cp ../../README.md .", - "switch": "cat package.json | jq --arg SWITCH_NAME $SWITCH_NAME -r '(.[\"switch:\" + $SWITCH_NAME] // {}) as $TEMPLATE | .devDependencies += ($TEMPLATE.devDependencies // {}) | .dependencies += ($TEMPLATE.dependencies // {})' | tee ./package.json.tmp && mv ./package.json.tmp ./package.json", - "test": "jest" + "switch": "cat package.json | jq --arg SWITCH_NAME $SWITCH_NAME -r '(.[\"switch:\" + $SWITCH_NAME] // {}) as $TEMPLATE | .devDependencies += ($TEMPLATE.devDependencies // {}) | .dependencies += ($TEMPLATE.dependencies // {})' | tee ./package.json.tmp && mv ./package.json.tmp ./package.json" }, "repository": { "type": "git", From 40aadba4afab8ab5d160ffc8408f164d0e86db04 Mon Sep 17 00:00:00 2001 From: William Wong Date: Sun, 13 Oct 2024 01:52:34 -0700 Subject: [PATCH 5/9] Remove switches --- package.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/package.json b/package.json index e0c503c..092c117 100644 --- a/package.json +++ b/package.json @@ -19,9 +19,6 @@ "postscaffold:eslint:react": "npm run bump:eslintrc", "precommit": "npm run precommit --if-present --workspaces", "switch:_": "npm run --if-present --workspaces switch && npm install --legacy-peer-deps --prefer-dedupe", - "switch:react-16": "SWITCH_NAME=react-16 npm run switch:_", - "switch:react-17": "SWITCH_NAME=react-17 npm run switch:_", - "switch:react-18": "SWITCH_NAME=react-18 npm run switch:_", "test": "npm run test --if-present --workspaces" }, "devDependencies": { From 4f9c6199cb7f9f2d6d32a620462d923bbafa16d7 Mon Sep 17 00:00:00 2001 From: William Wong Date: Sun, 13 Oct 2024 01:53:01 -0700 Subject: [PATCH 6/9] Fix for bin --- packages/version-from-git/package.json | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/packages/version-from-git/package.json b/packages/version-from-git/package.json index 697c419..7004961 100644 --- a/packages/version-from-git/package.json +++ b/packages/version-from-git/package.json @@ -11,7 +11,7 @@ "version-from-git": "./dist/version-from-git.js" }, "scripts": { - "build": "tsup", + "build": "tsup-node", "bump": "npm run bump:prod && npm run bump:dev", "bump:dev": "PACKAGES_TO_BUMP=$(cat package.json | jq -r '(.pinDependencies // {}) as $P | (.localPeerDependencies // {}) as $L | (.devDependencies // {}) | to_entries | map(select(.key as $K | $L | has($K) | not)) | map(.key + \"@\" + ($P[.key] // [\"latest\"])[0]) | join(\" \")') && [ ! -z \"$PACKAGES_TO_BUMP\" ] && npm install $PACKAGES_TO_BUMP || true", "bump:prod": "PACKAGES_TO_BUMP=$(cat package.json | jq -r '(.pinDependencies // {}) as $P | (.localPeerDependencies // {}) as $L | (.dependencies // {}) | to_entries | map(select(.key as $K | $L | has($K) | not)) | map(.key + \"@\" + ($P[.key] // [\"latest\"])[0]) | join(\" \")') && [ ! -z \"$PACKAGES_TO_BUMP\" ] && npm install $PACKAGES_TO_BUMP || true", @@ -59,18 +59,5 @@ "@types/git-rev-sync": "^2.0.2", "@types/semver": "^7.5.8", "publint": "^0.2.11" - }, - "exports": { - ".": { - "import": { - "types": "./dist/version-from-git.d.mts", - "default": "./dist/version-from-git.mjs" - }, - "require": { - "types": "./dist/version-from-git.d.ts", - "default": "./dist/version-from-git.js" - } - } - }, - "typings": "./dist/version-from-git.d.ts" + } } From cd5bc26b5cb7a7a0712b25ace853550649944343 Mon Sep 17 00:00:00 2001 From: William Wong Date: Sun, 13 Oct 2024 01:54:27 -0700 Subject: [PATCH 7/9] Remove test --- packages/version-from-git/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/version-from-git/package.json b/packages/version-from-git/package.json index 7004961..35ba250 100644 --- a/packages/version-from-git/package.json +++ b/packages/version-from-git/package.json @@ -15,11 +15,11 @@ "bump": "npm run bump:prod && npm run bump:dev", "bump:dev": "PACKAGES_TO_BUMP=$(cat package.json | jq -r '(.pinDependencies // {}) as $P | (.localPeerDependencies // {}) as $L | (.devDependencies // {}) | to_entries | map(select(.key as $K | $L | has($K) | not)) | map(.key + \"@\" + ($P[.key] // [\"latest\"])[0]) | join(\" \")') && [ ! -z \"$PACKAGES_TO_BUMP\" ] && npm install $PACKAGES_TO_BUMP || true", "bump:prod": "PACKAGES_TO_BUMP=$(cat package.json | jq -r '(.pinDependencies // {}) as $P | (.localPeerDependencies // {}) as $L | (.dependencies // {}) | to_entries | map(select(.key as $K | $L | has($K) | not)) | map(.key + \"@\" + ($P[.key] // [\"latest\"])[0]) | join(\" \")') && [ ! -z \"$PACKAGES_TO_BUMP\" ] && npm install $PACKAGES_TO_BUMP || true", - "precommit": "npm run precommit:eslint && npm run precommit:publint && npm run precommit:typescript:production && npm run precommit:typescript:test", + "precommit": "npm run precommit:eslint && npm run precommit:publint && npm run precommit:typescript:production", "precommit:eslint": "ESLINT_USE_FLAT_CONFIG=false eslint ./src/", "precommit:publint": "publint", "precommit:typescript:production": "tsc --noEmit --project ./src/tsconfig.precommit.production.json", - "precommit:typescript:test": "tsc --noEmit --project ./src/tsconfig.precommit.test.json", + "-precommit:typescript:test": "tsc --noEmit --project ./src/tsconfig.precommit.test.json", "prepack": "cp ../../CHANGELOG.md . && cp ../../LICENSE . && cp ../../README.md .", "switch": "cat package.json | jq --arg SWITCH_NAME $SWITCH_NAME -r '(.[\"switch:\" + $SWITCH_NAME] // {}) as $TEMPLATE | .devDependencies += ($TEMPLATE.devDependencies // {}) | .dependencies += ($TEMPLATE.dependencies // {})' | tee ./package.json.tmp && mv ./package.json.tmp ./package.json" }, From b2dd960416ffd59e38c1a834e6b569d8669a51e6 Mon Sep 17 00:00:00 2001 From: William Wong Date: Sun, 13 Oct 2024 01:56:31 -0700 Subject: [PATCH 8/9] Fix workflow --- .github/workflows/continuous-deployment.yml | 2 ++ .github/workflows/pull-request-validation.yml | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/continuous-deployment.yml b/.github/workflows/continuous-deployment.yml index 0b0757b..e53add5 100644 --- a/.github/workflows/continuous-deployment.yml +++ b/.github/workflows/continuous-deployment.yml @@ -18,4 +18,6 @@ jobs: secrets: inherit uses: compulim/workflows/.github/workflows/continuous-deployment.yml@main with: + github-pages: false + node-version: 18.x package-name: version-from-git diff --git a/.github/workflows/pull-request-validation.yml b/.github/workflows/pull-request-validation.yml index d77a319..f1c76d6 100644 --- a/.github/workflows/pull-request-validation.yml +++ b/.github/workflows/pull-request-validation.yml @@ -12,6 +12,8 @@ jobs: switch: [current] uses: compulim/workflows/.github/workflows/pull-request-validation.yml@main with: + github-pages: false package-name: version-from-git - skip-integration-test: false + project-type: legacy + skip-integration-test: true switch: ${{ matrix.switch }} From 0e127d07fc41059040d9c08811155206fd627d8b Mon Sep 17 00:00:00 2001 From: William Wong Date: Sun, 13 Oct 2024 01:58:00 -0700 Subject: [PATCH 9/9] Add dummy test script --- packages/version-from-git/package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/version-from-git/package.json b/packages/version-from-git/package.json index 35ba250..9e28d0a 100644 --- a/packages/version-from-git/package.json +++ b/packages/version-from-git/package.json @@ -21,7 +21,8 @@ "precommit:typescript:production": "tsc --noEmit --project ./src/tsconfig.precommit.production.json", "-precommit:typescript:test": "tsc --noEmit --project ./src/tsconfig.precommit.test.json", "prepack": "cp ../../CHANGELOG.md . && cp ../../LICENSE . && cp ../../README.md .", - "switch": "cat package.json | jq --arg SWITCH_NAME $SWITCH_NAME -r '(.[\"switch:\" + $SWITCH_NAME] // {}) as $TEMPLATE | .devDependencies += ($TEMPLATE.devDependencies // {}) | .dependencies += ($TEMPLATE.dependencies // {})' | tee ./package.json.tmp && mv ./package.json.tmp ./package.json" + "switch": "cat package.json | jq --arg SWITCH_NAME $SWITCH_NAME -r '(.[\"switch:\" + $SWITCH_NAME] // {}) as $TEMPLATE | .devDependencies += ($TEMPLATE.devDependencies // {}) | .dependencies += ($TEMPLATE.dependencies // {})' | tee ./package.json.tmp && mv ./package.json.tmp ./package.json", + "test": "echo \"TODO: Add tests\"" }, "repository": { "type": "git",