diff --git a/.github/workflows/compressed-size-action.yml b/.github/workflows/compressed-size-action.yml index b2cafd0fc9..9da133bca5 100644 --- a/.github/workflows/compressed-size-action.yml +++ b/.github/workflows/compressed-size-action.yml @@ -1,14 +1,13 @@ name: Compressed Size -on: [ pull_request ] +on: [pull_request] jobs: build: - runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - uses: preactjs/compressed-size-action@v2 with: - repo-token: "${{ secrets.GITHUB_TOKEN }}" + repo-token: '${{ secrets.GITHUB_TOKEN }}' diff --git a/.github/workflows/lint-and-type.yml b/.github/workflows/lint-and-type.yml index 8d9195ea06..f4db90b65a 100644 --- a/.github/workflows/lint-and-type.yml +++ b/.github/workflows/lint-and-type.yml @@ -10,8 +10,8 @@ jobs: lint: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v2 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: node-version: '18' cache: yarn diff --git a/.github/workflows/test-multiple-builds.yml b/.github/workflows/test-multiple-builds.yml index 5baca7d278..393b7a6cc9 100644 --- a/.github/workflows/test-multiple-builds.yml +++ b/.github/workflows/test-multiple-builds.yml @@ -12,11 +12,11 @@ jobs: strategy: fail-fast: false matrix: - build: [cjs, esm, umd] # [cjs, esm, umd, system] + build: [cjs, esm] env: [development] # [development, production] steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v2 + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 with: node-version: '18' cache: yarn @@ -44,20 +44,6 @@ jobs: sed -i~ "1s/^/import.meta.env=import.meta.env||{};import.meta.env.MODE='${NODE_ENV}';/" tests/*.tsx env: NODE_ENV: ${{ matrix.env }} - - name: Patch for UMD (DEV) - if: ${{ matrix.build == 'umd' && matrix.env == 'development' }} - run: | - sed -i~ "s/\/src\(.*\)\.ts/\/dist\/umd\1.development.js/" package.json - - name: Patch for UMD (PRD) - if: ${{ matrix.build == 'umd' && matrix.env == 'production' }} - run: | - sed -i~ "s/\/src\(.*\)\.ts/\/dist\/umd\1.production.js/" package.json - - name: Patch for SystemJS - if: ${{ matrix.build == 'system' }} - run: | - sed -i~ "s/\/src\(.*\)\.ts/\/dist\/system\1.${NODE_ENV}.js/" package.json - env: - NODE_ENV: ${{ matrix.env }} - name: Test ${{ matrix.build }} ${{ matrix.env }} run: | yarn test:ci diff --git a/.github/workflows/test-multiple-versions.yml b/.github/workflows/test-multiple-versions.yml index 1b3ffab78c..302b593eed 100644 --- a/.github/workflows/test-multiple-versions.yml +++ b/.github/workflows/test-multiple-versions.yml @@ -10,8 +10,8 @@ jobs: test: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v2 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: node-version: '18' cache: yarn @@ -34,8 +34,8 @@ jobs: - 18.3.0-canary-6c7b41da3-20231123 - 0.0.0-experimental-6c7b41da3-20231123 steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v2 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: node-version: '18' cache: yarn diff --git a/.github/workflows/test-old-typescript.yml b/.github/workflows/test-old-typescript.yml index 08769318e7..2f43e7897c 100644 --- a/.github/workflows/test-old-typescript.yml +++ b/.github/workflows/test-old-typescript.yml @@ -23,8 +23,8 @@ jobs: - 4.6.4 - 4.5.5 steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v2 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: node-version: '18' cache: yarn diff --git a/babel.config.js b/babel.config.js deleted file mode 100644 index fa15c8a7f8..0000000000 --- a/babel.config.js +++ /dev/null @@ -1,28 +0,0 @@ -module.exports = (api, targets) => { - // https://babeljs.io/docs/en/config-files#config-function-api - const isTestEnv = api.env('test') - - return { - babelrc: false, - ignore: ['./node_modules'], - presets: [ - [ - '@babel/preset-env', - { - loose: true, - modules: isTestEnv ? 'commonjs' : false, - targets: isTestEnv ? { node: 'current' } : targets, - }, - ], - ], - plugins: [ - [ - '@babel/plugin-transform-react-jsx', - { - runtime: 'automatic', - }, - ], - ['@babel/plugin-transform-typescript', { isTSX: true }], - ], - } -} diff --git a/package.json b/package.json index 22d94894be..1a55c8027d 100644 --- a/package.json +++ b/package.json @@ -118,7 +118,6 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-node-resolve": "^15.2.3", "@rollup/plugin-replace": "^5.0.5", - "@rollup/plugin-terser": "^0.4.4", "@rollup/plugin-typescript": "^11.1.5", "@testing-library/react": "^14.1.2", "@types/react": "^18.2.39", diff --git a/rollup.config.js b/rollup.config.js index 86da8ae7d2..4718e6a5d3 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -3,10 +3,8 @@ const alias = require('@rollup/plugin-alias') const babelPlugin = require('@rollup/plugin-babel') const resolve = require('@rollup/plugin-node-resolve') const replace = require('@rollup/plugin-replace') -const terser = require('@rollup/plugin-terser') const typescript = require('@rollup/plugin-typescript') const { default: esbuild } = require('rollup-plugin-esbuild') -const createBabelConfig = require('./babel.config.js') const extensions = ['.js', '.ts', '.tsx'] const { root } = path.parse(process.cwd()) @@ -18,7 +16,13 @@ function external(id) { function getBabelOptions(targets) { return { - ...createBabelConfig({ env: (env) => env === 'build' }, targets), + babelrc: false, + ignore: ['./node_modules'], + presets: [['@babel/preset-env', { loose: true, modules: false, targets }]], + plugins: [ + ['@babel/plugin-transform-react-jsx', { runtime: 'automatic' }], + ['@babel/plugin-transform-typescript', { isTSX: true }], + ], extensions, comments: false, babelHelpers: 'bundled', @@ -100,64 +104,6 @@ function createCommonJSConfig(input, output) { } } -function createUMDConfig(input, output, env) { - let name = 'zustand' - const fileName = output.slice('dist/umd/'.length) - const capitalize = (s) => s.slice(0, 1).toUpperCase() + s.slice(1) - if (fileName !== 'index') { - name += fileName.replace(/(\w+)\W*/g, (_, p) => capitalize(p)) - } - return { - input, - output: { - file: `${output}.${env}.js`, - format: 'umd', - name, - globals: { - react: 'React', - immer: 'immer', - // FIXME not yet supported - 'use-sync-external-store/shim/with-selector': - 'useSyncExternalStoreShimWithSelector', - 'zustand/vanilla': 'zustandVanilla', - }, - }, - external, - plugins: [ - alias({ entries: entries.filter((e) => !e.find.test(input)) }), - resolve({ extensions }), - replace({ - 'import.meta.env?.MODE': JSON.stringify(env), - delimiters: ['\\b', '\\b(?!(\\.|/))'], - preventAssignment: true, - }), - babelPlugin(getBabelOptions({ ie: 11 })), - ...(env === 'production' ? [terser()] : []), - ], - } -} - -function createSystemConfig(input, output, env) { - return { - input, - output: { - file: `${output}.${env}.js`, - format: 'system', - }, - external, - plugins: [ - alias({ entries: entries.filter((e) => !e.find.test(input)) }), - resolve({ extensions }), - replace({ - 'import.meta.env?.MODE': JSON.stringify(env), - delimiters: ['\\b', '\\b(?!(\\.|/))'], - preventAssignment: true, - }), - getEsbuild('node12', env), - ], - } -} - module.exports = function (args) { let c = Object.keys(args).find((key) => key.startsWith('config-')) if (c) { @@ -168,11 +114,7 @@ module.exports = function (args) { return [ ...(c === 'index' ? [createDeclarationConfig(`src/${c}.ts`, 'dist')] : []), createCommonJSConfig(`src/${c}.ts`, `dist/${c}`), - createESMConfig(`src/${c}.ts`, `dist/esm/${c}.mjs`), - createUMDConfig(`src/${c}.ts`, `dist/umd/${c}`, 'development'), - createUMDConfig(`src/${c}.ts`, `dist/umd/${c}`, 'production'), - createSystemConfig(`src/${c}.ts`, `dist/system/${c}`, 'development'), - createSystemConfig(`src/${c}.ts`, `dist/system/${c}`, 'production'), + createESMConfig(`src/${c}.ts`, `dist/esm/${c}.mjs`), // just for testing sed -e flag ] } diff --git a/yarn.lock b/yarn.lock index 6a4b784f8b..0977acdb16 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1309,14 +1309,6 @@ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== -"@jridgewell/source-map@^0.3.3": - version "0.3.5" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91" - integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15": version "1.4.15" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" @@ -1411,15 +1403,6 @@ "@rollup/pluginutils" "^5.0.1" magic-string "^0.30.3" -"@rollup/plugin-terser@^0.4.4": - version "0.4.4" - resolved "https://registry.yarnpkg.com/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz#15dffdb3f73f121aa4fbb37e7ca6be9aeea91962" - integrity sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A== - dependencies: - serialize-javascript "^6.0.1" - smob "^1.0.0" - terser "^5.17.4" - "@rollup/plugin-typescript@^11.1.5": version "11.1.5" resolved "https://registry.yarnpkg.com/@rollup/plugin-typescript/-/plugin-typescript-11.1.5.tgz#039c763bf943a5921f3f42be255895e75764cb91" @@ -1797,7 +1780,7 @@ acorn-walk@^8.2.0: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.1.tgz#2f10f5b69329d90ae18c58bf1fa8fccd8b959a43" integrity sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw== -acorn@^8.10.0, acorn@^8.8.2, acorn@^8.9.0: +acorn@^8.10.0, acorn@^8.9.0: version "8.11.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b" integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== @@ -2022,11 +2005,6 @@ browserslist@^4.22.2: node-releases "^2.0.14" update-browserslist-db "^1.0.13" -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - builtin-modules@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" @@ -2140,11 +2118,6 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -4011,13 +3984,6 @@ queue-microtask@^1.2.2: resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - react-dom@^18.2.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" @@ -4247,11 +4213,6 @@ safe-array-concat@^1.0.1: has-symbols "^1.0.3" isarray "^2.0.5" -safe-buffer@^5.1.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - safe-regex-test@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" @@ -4292,13 +4253,6 @@ semver@^7.5.3, semver@^7.5.4: dependencies: lru-cache "^6.0.0" -serialize-javascript@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" - integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== - dependencies: - randombytes "^2.1.0" - set-function-length@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" @@ -4390,25 +4344,12 @@ slash@^4.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== -smob@^1.0.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/smob/-/smob-1.4.1.tgz#66270e7df6a7527664816c5b577a23f17ba6f5b5" - integrity sha512-9LK+E7Hv5R9u4g4C3p+jjLstaLe11MDsL21UpYaCNmapvMkYhqCV4A/f/3gyH8QjMyh6l68q9xC85vihY9ahMQ== - source-map-js@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== -source-map-support@~0.5.20: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.6.0, source-map@^0.6.1: +source-map@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== @@ -4559,16 +4500,6 @@ synckit@^0.8.5: "@pkgr/utils" "^2.4.2" tslib "^2.6.2" -terser@^5.17.4: - version "5.26.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.26.0.tgz#ee9f05d929f4189a9c28a0feb889d96d50126fe1" - integrity sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ== - dependencies: - "@jridgewell/source-map" "^0.3.3" - acorn "^8.8.2" - commander "^2.20.0" - source-map-support "~0.5.20" - test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e"