diff --git a/package-lock.json b/package-lock.json index 43245e3..caebc5e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,28 +9,28 @@ "version": "1.1.4", "license": "MIT", "devDependencies": { - "@babel/core": "^7.20.5", - "@babel/eslint-parser": "^7.19.1", - "@babel/preset-env": "^7.20.2", - "@commitlint/cli": "^17.4.4", - "@commitlint/config-conventional": "^17.4.4", + "@babel/core": "^7.21.4", + "@babel/eslint-parser": "^7.21.3", + "@babel/preset-env": "^7.21.4", + "@commitlint/cli": "^17.6.1", + "@commitlint/config-conventional": "^17.6.1", "@release-it/conventional-changelog": "^5.1.1", "@rollup/plugin-babel": "^6.0.3", - "@rollup/plugin-commonjs": "^24.0.0", - "@rollup/plugin-node-resolve": "^15.0.1", + "@rollup/plugin-commonjs": "^24.1.0", + "@rollup/plugin-node-resolve": "^15.0.2", + "@rollup/plugin-terser": "^0.4.1", "babel-jest": "^29.5.0", - "dotenv-cli": "^7.0.0", - "eslint": "^8.29.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-jest": "^27.1.6", - "husky": "^8.0.2", + "dotenv-cli": "^7.2.1", + "eslint": "^8.38.0", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-jest": "^27.2.1", + "husky": "^8.0.3", "jest": "^29.5.0", - "lint-staged": "^13.0.4", + "lint-staged": "^13.2.1", "paopu": "^0.1.1", - "prettier": "^2.8.0", - "release-it": "^15.5.1", - "rollup": "^2.79.1", - "rollup-plugin-terser": "^7.0.2" + "prettier": "^2.8.7", + "release-it": "^15.10.1", + "rollup": "^3.20.3" }, "engines": { "node": ">=10.0.0", @@ -3764,6 +3764,37 @@ } } }, + "node_modules/@rollup/plugin-terser": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.1.tgz", + "integrity": "sha512-aKS32sw5a7hy+fEXVy+5T95aDIwjpGHCTv833HXVtyKMDoVS7pBr5K3L9hEQoNqbJFjfANPrNpIXlTQ7is00eA==", + "dev": true, + "dependencies": { + "serialize-javascript": "^6.0.0", + "smob": "^0.0.6", + "terser": "^5.15.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.x || ^3.x" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-terser/node_modules/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, "node_modules/@rollup/pluginutils": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", @@ -10392,41 +10423,6 @@ "node": ">=8" } }, - "node_modules/jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/js-sdsl": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", @@ -13203,35 +13199,21 @@ } }, "node_modules/rollup": { - "version": "2.79.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", - "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "version": "3.20.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.20.3.tgz", + "integrity": "sha512-u6/O1X42CAZ79rbk+smyONJQLTpwFBL7InpRa/AVWia5lq60w5J/PUsVHCOgSolN0X9R2GjQ41fZm3x28Hk1lA==", "dev": true, "bin": { "rollup": "dist/bin/rollup" }, "engines": { - "node": ">=10.0.0" + "node": ">=14.18.0", + "npm": ">=8.0.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, - "node_modules/rollup-plugin-terser": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", - "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.10.4", - "jest-worker": "^26.2.1", - "serialize-javascript": "^4.0.0", - "terser": "^5.0.0" - }, - "peerDependencies": { - "rollup": "^2.0.0" - } - }, "node_modules/run-applescript": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", @@ -13353,15 +13335,6 @@ "node": ">=10" } }, - "node_modules/serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -13491,6 +13464,12 @@ "npm": ">= 3.0.0" } }, + "node_modules/smob": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/smob/-/smob-0.0.6.tgz", + "integrity": "sha512-V21+XeNni+tTyiST1MHsa84AQhT1aFZipzPpOFAVB8DkHzwJyjjAmt9bgwnuZiZWnIbMo2duE29wybxv/7HWUw==", + "dev": true + }, "node_modules/socks": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", @@ -17429,6 +17408,28 @@ "resolve": "^1.22.1" } }, + "@rollup/plugin-terser": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.1.tgz", + "integrity": "sha512-aKS32sw5a7hy+fEXVy+5T95aDIwjpGHCTv833HXVtyKMDoVS7pBr5K3L9hEQoNqbJFjfANPrNpIXlTQ7is00eA==", + "dev": true, + "requires": { + "serialize-javascript": "^6.0.0", + "smob": "^0.0.6", + "terser": "^5.15.1" + }, + "dependencies": { + "serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + } + } + }, "@rollup/pluginutils": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", @@ -22250,34 +22251,6 @@ } } }, - "jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, "js-sdsl": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", @@ -24293,26 +24266,14 @@ } }, "rollup": { - "version": "2.79.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", - "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "version": "3.20.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.20.3.tgz", + "integrity": "sha512-u6/O1X42CAZ79rbk+smyONJQLTpwFBL7InpRa/AVWia5lq60w5J/PUsVHCOgSolN0X9R2GjQ41fZm3x28Hk1lA==", "dev": true, "requires": { "fsevents": "~2.3.2" } }, - "rollup-plugin-terser": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", - "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "jest-worker": "^26.2.1", - "serialize-javascript": "^4.0.0", - "terser": "^5.0.0" - } - }, "run-applescript": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", @@ -24395,15 +24356,6 @@ } } }, - "serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, "setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -24495,6 +24447,12 @@ "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true }, + "smob": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/smob/-/smob-0.0.6.tgz", + "integrity": "sha512-V21+XeNni+tTyiST1MHsa84AQhT1aFZipzPpOFAVB8DkHzwJyjjAmt9bgwnuZiZWnIbMo2duE29wybxv/7HWUw==", + "dev": true + }, "socks": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", diff --git a/package.json b/package.json index c6d5a10..ec72933 100644 --- a/package.json +++ b/package.json @@ -19,28 +19,28 @@ "release": "dotenv release-it -- --ci" }, "devDependencies": { - "@babel/core": "^7.20.5", - "@babel/eslint-parser": "^7.19.1", - "@babel/preset-env": "^7.20.2", - "@commitlint/cli": "^17.4.4", - "@commitlint/config-conventional": "^17.4.4", + "@babel/core": "^7.21.4", + "@babel/eslint-parser": "^7.21.3", + "@babel/preset-env": "^7.21.4", + "@commitlint/cli": "^17.6.1", + "@commitlint/config-conventional": "^17.6.1", "@release-it/conventional-changelog": "^5.1.1", "@rollup/plugin-babel": "^6.0.3", - "@rollup/plugin-commonjs": "^24.0.0", - "@rollup/plugin-node-resolve": "^15.0.1", + "@rollup/plugin-commonjs": "^24.1.0", + "@rollup/plugin-node-resolve": "^15.0.2", + "@rollup/plugin-terser": "^0.4.1", "babel-jest": "^29.5.0", - "dotenv-cli": "^7.0.0", - "eslint": "^8.29.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-jest": "^27.1.6", - "husky": "^8.0.2", + "dotenv-cli": "^7.2.1", + "eslint": "^8.38.0", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-jest": "^27.2.1", + "husky": "^8.0.3", "jest": "^29.5.0", - "lint-staged": "^13.0.4", + "lint-staged": "^13.2.1", "paopu": "^0.1.1", - "prettier": "^2.8.0", - "release-it": "^15.5.1", - "rollup": "^2.79.1", - "rollup-plugin-terser": "^7.0.2" + "prettier": "^2.8.7", + "release-it": "^15.10.1", + "rollup": "^3.20.3" }, "engines": { "node": ">=10.0.0", @@ -49,6 +49,7 @@ "keywords": [ "flux", "state", + "state manager", "global state", "javascript", "reducer", diff --git a/rollup.config.js b/rollup.config.js index 7876c96..568e45c 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,12 +1,17 @@ +import fs from "fs" import path from "path" import babel from "@rollup/plugin-babel" import { nodeResolve } from "@rollup/plugin-node-resolve" import commonjs from "@rollup/plugin-commonjs" -import { terser } from "rollup-plugin-terser" +import terser from "@rollup/plugin-terser" +const loadJSON = (path) => + JSON.parse(fs.readFileSync(new URL(path, import.meta.url))) + +const dirname = path.resolve() const year = new Date().getFullYear() const banner = async () => { - const { default: pkg } = await import("./package.json") + const pkg = loadJSON("./package.json") return `/*! * @license MIT (https://github.com/geotrev/core-flux/blob/master/LICENSE) @@ -20,26 +25,14 @@ const Formats = { ES: "es", UMD: "umd", } -const input = path.resolve(__dirname, "core-flux.js") +const input = path.resolve(dirname, "core-flux.js") const basePlugins = [ nodeResolve(), commonjs(), babel({ babelHelpers: "bundled", comments: false }), ] -const terserPlugin = terser({ - output: { - comments: { - comments: (_, comment) => { - const { value, type } = comment - - if (type === "comment2") { - return /@preserve|@license|@cc_on/i.test(value) - } - }, - }, - }, -}) +const terserPlugin = terser() const baseOutput = (format) => ({ banner, @@ -50,13 +43,13 @@ const baseOutput = (format) => ({ let moduleOutputs = [Formats.ES, Formats.CJS].map((format) => ({ ...baseOutput(format), - file: path.resolve(__dirname, `lib/core-flux.${format}.js`), + file: path.resolve(dirname, `lib/core-flux.${format}.js`), })) const umdOutputs = [ { ...baseOutput(Formats.UMD), - file: path.resolve(__dirname, `dist/core-flux.js`), + file: path.resolve(dirname, `dist/core-flux.js`), }, ] @@ -66,14 +59,14 @@ if (process.env.BABEL_ENV === "publish") { ...[Formats.ES, Formats.CJS].map((format) => ({ ...baseOutput(format), plugins: [terserPlugin], - file: path.resolve(__dirname, `lib/core-flux.${format}.min.js`), + file: path.resolve(dirname, `lib/core-flux.${format}.min.js`), })), ] umdOutputs.push({ ...baseOutput(Formats.UMD), plugins: [terserPlugin], - file: path.resolve(__dirname, `dist/core-flux.min.js`), + file: path.resolve(dirname, `dist/core-flux.min.js`), }) }