diff --git a/.gitignore b/.gitignore index d346986..6f8223e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,8 @@ node_modules *.log -es6 +esm cjs umd -lib dist .DS_Store package-lock.json diff --git a/.prettierignore b/.prettierignore index d346986..6f8223e 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,9 +1,8 @@ node_modules *.log -es6 +esm cjs umd -lib dist .DS_Store package-lock.json diff --git a/package.json b/package.json index f0cced3..1457c6c 100644 --- a/package.json +++ b/package.json @@ -9,10 +9,12 @@ "@babel/preset-env": "^7.23.7", "@babel/preset-react": "^7.23.3", "@babel/preset-typescript": "^7.23.3", + "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@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", "@size-limit/preset-small-lib": "^11.0.1", "@testing-library/jest-dom": "^6.1.6", "@testing-library/react": "^14.1.2", @@ -30,6 +32,7 @@ "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-replace": "^2.2.0", "size-limit": "^11.0.1", + "tslib": "^2.6.2", "typescript": "^5.3.3" }, "scripts": { @@ -47,19 +50,15 @@ }, "size-limit": [ { - "path": "./packages/universal-cookie/lib/index.js", + "path": "./packages/universal-cookie-express/cjs/index.js", "limit": "4 KB" }, { - "path": "./packages/universal-cookie-express/lib/index.js", + "path": "./packages/universal-cookie-koa/cjs/index.js", "limit": "4 KB" }, { - "path": "./packages/universal-cookie-koa/lib/index.js", - "limit": "4 KB" - }, - { - "path": "./packages/react-cookie/lib/index.js", + "path": "./packages/react-cookie/cjs/index.js", "limit": "10 KB" } ], diff --git a/packages/react-cookie-demo/package.json b/packages/react-cookie-demo/package.json index aee9248..91f387b 100644 --- a/packages/react-cookie-demo/package.json +++ b/packages/react-cookie-demo/package.json @@ -13,9 +13,9 @@ "express": "^4.18.2", "prop-types": "^15.8.1", "react": "^18.2.0", - "react-cookie": "^6.0.0", + "react-cookie": "^7.0.0", "react-dom": "^18.2.0", - "universal-cookie-express": "^6.0.0" + "universal-cookie-express": "^7.0.0" }, "devDependencies": { "@babel/core": "^7.23.7", diff --git a/packages/react-cookie/index.d.ts b/packages/react-cookie/index.d.ts index 24096ce..e660210 100644 --- a/packages/react-cookie/index.d.ts +++ b/packages/react-cookie/index.d.ts @@ -1 +1 @@ -export * from './es6'; +export * from './esm'; diff --git a/packages/react-cookie/package.json b/packages/react-cookie/package.json index bb4ab11..65e29b4 100644 --- a/packages/react-cookie/package.json +++ b/packages/react-cookie/package.json @@ -1,16 +1,20 @@ { "name": "react-cookie", - "version": "6.1.3", + "version": "7.0.0", "description": "Universal cookies for React", "main": "cjs/index.js", - "module": "es6/index.js", - "types": "es6/index.d.ts", + "exports": { + ".": { + "import": "./esm/index.mjs", + "require": "./cjs/index.js" + } + }, + "types": "esm/index.d.ts", "sideEffects": false, "files": [ - "es6", + "esm", "cjs", "umd", - "lib", "index.d.ts", "LICENSE" ], @@ -29,17 +33,14 @@ "author": "Benoit Tremblay ", "license": "MIT", "scripts": { - "clean": "rimraf lib && rimraf es6 && rimraf cjs && rimraf umd", - "build": "npm run clean && npm run build-es6 && npm run build-cjs && npm run build-umd && npm run build-legacy", - "build-es6": "tsc", - "build-cjs": "babel es6 -D -d cjs", - "build-umd": "rollup -c", - "build-legacy": "babel es6 -D -d lib" + "prebuild": "rimraf esm && rimraf cjs && rimraf umd", + "build": "rollup -c", + "postbuild": "rimraf -G {cjs,umd}/*.d.ts" }, "dependencies": { "@types/hoist-non-react-statics": "^3.3.5", "hoist-non-react-statics": "^3.3.2", - "universal-cookie": "^6.0.0" + "universal-cookie": "^7.0.0" }, "devDependencies": { "@babel/cli": "^7.23.4", diff --git a/packages/react-cookie/rollup.config.mjs b/packages/react-cookie/rollup.config.mjs index a0e0b9a..b66b088 100644 --- a/packages/react-cookie/rollup.config.mjs +++ b/packages/react-cookie/rollup.config.mjs @@ -1,9 +1,9 @@ import resolve from '@rollup/plugin-node-resolve'; -import commonjs from '@rollup/plugin-commonjs'; import replace from '@rollup/plugin-replace'; import terser from '@rollup/plugin-terser'; - -const basePlugins = [resolve(), commonjs()]; +import commonjs from '@rollup/plugin-commonjs'; +import typescript from '@rollup/plugin-typescript'; +import babel from '@rollup/plugin-babel'; const external = ['react', 'universal-cookie']; const globals = { @@ -13,7 +13,29 @@ const globals = { export default [ { - input: 'cjs/index.js', + input: 'src/index.ts', + output: { + dir: './esm', + format: 'esm', + entryFileNames: '[name].mjs', + }, + plugins: [typescript({ outDir: './esm' })], + external, + }, + { + input: 'src/index.ts', + output: { + dir: './cjs', + format: 'cjs', + }, + plugins: [ + typescript({ outDir: './cjs' }), + babel({ babelHelpers: 'bundled' }), + ], + external, + }, + { + input: 'src/index.ts', output: { file: 'umd/reactCookie.js', format: 'umd', @@ -21,13 +43,18 @@ export default [ globals, }, plugins: [ - ...basePlugins, - replace({ 'process.env.NODE_ENV': '"development"' }), + commonjs(), + resolve(), + typescript({ outDir: 'umd' }), + replace({ + preventAssignment: true, + 'process.env.NODE_ENV': '"development"', + }), ], external, }, { - input: 'cjs/index.js', + input: 'src/index.ts', output: { file: 'umd/reactCookie.min.js', format: 'umd', @@ -35,8 +62,13 @@ export default [ globals, }, plugins: [ - ...basePlugins, - replace({ 'process.env.NODE_ENV': '"production"' }), + commonjs(), + resolve(), + typescript({ outDir: 'umd' }), + replace({ + preventAssignment: true, + 'process.env.NODE_ENV': '"production"', + }), terser(), ], external, diff --git a/packages/react-cookie/rollup.esm.mjs b/packages/react-cookie/rollup.esm.mjs new file mode 100644 index 0000000..952596f --- /dev/null +++ b/packages/react-cookie/rollup.esm.mjs @@ -0,0 +1,25 @@ +import glob from 'glob'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import typescript from '@rollup/plugin-typescript'; + +export default { + input: Object.fromEntries( + glob + .sync('src/**/*.{ts,tsx}') + .map((file) => [ + path.relative( + 'src', + file.slice(0, file.length - path.extname(file).length), + ), + fileURLToPath(new URL(file, import.meta.url)), + ]), + ), + output: { + dir: './esm', + format: 'esm', + entryFileNames: '[name].mjs', + }, + plugins: [typescript()], + external: ['react', 'universal-cookie', 'hoist-non-react-statics'], +}; diff --git a/packages/react-cookie/src/__tests__/useCookies-test.js b/packages/react-cookie/src/__tests__/useCookies-test.js index 0c3588d..67bbfa7 100644 --- a/packages/react-cookie/src/__tests__/useCookies-test.js +++ b/packages/react-cookie/src/__tests__/useCookies-test.js @@ -1,6 +1,6 @@ import React from 'react'; import ReactDOMServer from 'react-dom/server'; -import { cleanCookies } from 'universal-cookie/lib/utils'; +import { cleanCookies } from '../../../universal-cookie/src/utils'; import { act, render, screen } from '@testing-library/react'; import { CookiesProvider, useCookies, Cookies } from '../'; diff --git a/packages/react-cookie/src/__tests__/withCookies-test.js b/packages/react-cookie/src/__tests__/withCookies-test.js index b5d09a5..576451c 100644 --- a/packages/react-cookie/src/__tests__/withCookies-test.js +++ b/packages/react-cookie/src/__tests__/withCookies-test.js @@ -3,7 +3,7 @@ import { object } from 'prop-types'; import { instanceOf } from 'prop-types'; import ReactDOMServer from 'react-dom/server'; import { CookiesProvider, withCookies, Cookies } from '../'; -import { cleanCookies } from 'universal-cookie/lib/utils'; +import { cleanCookies } from '../../../universal-cookie/src/utils'; import { act, render, screen } from '@testing-library/react'; function TestComponent({ cookies }) { diff --git a/packages/react-cookie/tsconfig.json b/packages/react-cookie/tsconfig.json index 3915b72..f0fb5e0 100644 --- a/packages/react-cookie/tsconfig.json +++ b/packages/react-cookie/tsconfig.json @@ -3,7 +3,6 @@ "target": "es2017", "module": "es6", "declaration": true, - "outDir": "./es6", "strict": true, "jsx": "react", "moduleResolution": "node", diff --git a/packages/universal-cookie-express/package.json b/packages/universal-cookie-express/package.json index 55c01e2..d708a3c 100644 --- a/packages/universal-cookie-express/package.json +++ b/packages/universal-cookie-express/package.json @@ -1,14 +1,18 @@ { "name": "universal-cookie-express", - "version": "6.1.3", + "version": "7.0.0", "description": "Hook cookies get/set on Express for server-rendering", "main": "cjs/index.js", - "module": "es6/index.js", - "types": "es6/index.d.ts", + "exports": { + ".": { + "import": "./esm/index.mjs", + "require": "./cjs/index.js" + } + }, + "types": "esm/index.d.ts", "sideEffects": false, "files": [ - "lib", - "es6", + "esm", "cjs", "LICENSE" ], @@ -27,14 +31,12 @@ "author": "Benoit Tremblay ", "license": "MIT", "scripts": { - "clean": "rimraf lib && rimraf es6 && rimraf cjs", - "build": "npm run clean && npm run build-es6 && npm run build-cjs && npm run build-legacy", - "build-es6": "tsc", - "build-cjs": "babel es6 -D -d cjs", - "build-legacy": "babel es6 -D -d lib" + "prebuild": "rimraf esm && rimraf cjs", + "build": "rollup -c", + "postbuild": "rimraf -G cjs/*.d.ts" }, "dependencies": { - "universal-cookie": "^6.0.0" + "universal-cookie": "^7.0.0" }, "devDependencies": { "@babel/cli": "^7.23.4", diff --git a/packages/universal-cookie-express/rollup.config.mjs b/packages/universal-cookie-express/rollup.config.mjs new file mode 100644 index 0000000..2dc59e2 --- /dev/null +++ b/packages/universal-cookie-express/rollup.config.mjs @@ -0,0 +1,33 @@ +import typescript from '@rollup/plugin-typescript'; +import babel from '@rollup/plugin-babel'; + +const external = ['react', 'universal-cookie']; +const globals = { + react: 'React', + 'universal-cookie': 'UniversalCookie', +}; + +export default [ + { + input: 'src/index.ts', + output: { + dir: './esm', + format: 'esm', + entryFileNames: '[name].mjs', + }, + plugins: [typescript({ outDir: './esm' })], + external, + }, + { + input: 'src/index.ts', + output: { + dir: './cjs', + format: 'cjs', + }, + plugins: [ + typescript({ outDir: './cjs' }), + babel({ babelHelpers: 'bundled' }), + ], + external, + }, +]; diff --git a/packages/universal-cookie-express/tsconfig.json b/packages/universal-cookie-express/tsconfig.json index cf1d858..d2b0100 100644 --- a/packages/universal-cookie-express/tsconfig.json +++ b/packages/universal-cookie-express/tsconfig.json @@ -4,7 +4,6 @@ "module": "es6", "moduleResolution": "node", "declaration": true, - "outDir": "./es6", "strict": true }, "files": ["./src/index.ts"] diff --git a/packages/universal-cookie-koa/package.json b/packages/universal-cookie-koa/package.json index 7238f9c..9926be1 100644 --- a/packages/universal-cookie-koa/package.json +++ b/packages/universal-cookie-koa/package.json @@ -1,14 +1,18 @@ { "name": "universal-cookie-koa", - "version": "6.1.3", + "version": "7.0.0", "description": "Hook cookies get/set on Koa for server-rendering", "main": "cjs/index.js", - "module": "es6/index.js", - "types": "es6/index.d.ts", + "exports": { + ".": { + "import": "./esm/index.mjs", + "require": "./cjs/index.js" + } + }, + "types": "esm/index.d.ts", "sideEffects": false, "files": [ - "lib", - "es6", + "esm", "cjs", "LICENSE" ], @@ -27,14 +31,12 @@ "author": "Benoit Tremblay ", "license": "MIT", "scripts": { - "clean": "rimraf lib && rimraf es6 && rimraf cjs", - "build": "npm run clean && npm run build-es6 && npm run build-cjs && npm run build-legacy", - "build-es6": "tsc", - "build-cjs": "babel es6 -D -d cjs", - "build-legacy": "babel es6 -D -d lib" + "prebuild": "rimraf esm && rimraf cjs", + "build": "rollup -c", + "postbuild": "rimraf -G cjs/*.d.ts" }, "dependencies": { - "universal-cookie": "^6.0.0" + "universal-cookie": "^7.0.0" }, "devDependencies": { "@babel/cli": "^7.23.4", diff --git a/packages/universal-cookie-koa/rollup.config.mjs b/packages/universal-cookie-koa/rollup.config.mjs new file mode 100644 index 0000000..2dc59e2 --- /dev/null +++ b/packages/universal-cookie-koa/rollup.config.mjs @@ -0,0 +1,33 @@ +import typescript from '@rollup/plugin-typescript'; +import babel from '@rollup/plugin-babel'; + +const external = ['react', 'universal-cookie']; +const globals = { + react: 'React', + 'universal-cookie': 'UniversalCookie', +}; + +export default [ + { + input: 'src/index.ts', + output: { + dir: './esm', + format: 'esm', + entryFileNames: '[name].mjs', + }, + plugins: [typescript({ outDir: './esm' })], + external, + }, + { + input: 'src/index.ts', + output: { + dir: './cjs', + format: 'cjs', + }, + plugins: [ + typescript({ outDir: './cjs' }), + babel({ babelHelpers: 'bundled' }), + ], + external, + }, +]; diff --git a/packages/universal-cookie-koa/tsconfig.json b/packages/universal-cookie-koa/tsconfig.json index cf1d858..d2b0100 100644 --- a/packages/universal-cookie-koa/tsconfig.json +++ b/packages/universal-cookie-koa/tsconfig.json @@ -4,7 +4,6 @@ "module": "es6", "moduleResolution": "node", "declaration": true, - "outDir": "./es6", "strict": true }, "files": ["./src/index.ts"] diff --git a/packages/universal-cookie/index.d.ts b/packages/universal-cookie/index.d.ts index 24096ce..e660210 100644 --- a/packages/universal-cookie/index.d.ts +++ b/packages/universal-cookie/index.d.ts @@ -1 +1 @@ -export * from './es6'; +export * from './esm'; diff --git a/packages/universal-cookie/package.json b/packages/universal-cookie/package.json index 5958909..1b35233 100644 --- a/packages/universal-cookie/package.json +++ b/packages/universal-cookie/package.json @@ -1,14 +1,18 @@ { "name": "universal-cookie", - "version": "6.1.3", + "version": "7.0.0", "description": "Universal cookies for JavaScript", "main": "cjs/index.js", - "module": "es6/index.js", - "types": "es6/index.d.ts", + "exports": { + ".": { + "import": "./esm/index.mjs", + "require": "./cjs/index.js" + } + }, + "types": "esm/index.d.ts", "sideEffects": false, "files": [ - "lib", - "es6", + "esm", "cjs", "umd", "index.d.ts", @@ -28,12 +32,9 @@ "author": "Benoit Tremblay ", "license": "MIT", "scripts": { - "clean": "rimraf lib && rimraf es6 && rimraf cjs && rimraf umd", - "build": "npm run clean && npm run build-es6 && npm run build-cjs && npm run build-umd && npm run build-legacy", - "build-es6": "tsc", - "build-cjs": "babel es6 -D -d cjs", - "build-umd": "rollup -c", - "build-legacy": "babel es6 -D -d lib" + "prebuild": "rimraf esm && rimraf cjs && rimraf umd", + "build": "rollup -c", + "postbuild": "rimraf -G {cjs,umd}/*.d.ts" }, "dependencies": { "@types/cookie": "^0.6.0", diff --git a/packages/universal-cookie/rollup.config.mjs b/packages/universal-cookie/rollup.config.mjs index a84881f..9cd99ed 100644 --- a/packages/universal-cookie/rollup.config.mjs +++ b/packages/universal-cookie/rollup.config.mjs @@ -1,31 +1,56 @@ import resolve from '@rollup/plugin-node-resolve'; -import commonjs from '@rollup/plugin-commonjs'; import terser from '@rollup/plugin-terser'; +import typescript from '@rollup/plugin-typescript'; +import babel from '@rollup/plugin-babel'; -const basePlugins = [ - resolve({ - mainFields: ['module', 'jsnext:main', 'main', 'browser'], - }), - commonjs(), -]; +const mainFields = ['module', 'jsnext:main', 'main', 'browser']; +const external = ['cookie']; export default [ { - input: 'cjs/index.js', + input: 'src/index.ts', + output: { + dir: './esm', + format: 'esm', + entryFileNames: '[name].mjs', + }, + plugins: [typescript({ outDir: './esm' })], + external, + }, + { + input: 'src/index.ts', + output: { + dir: './cjs', + format: 'cjs', + }, + plugins: [ + typescript({ outDir: './cjs' }), + babel({ babelHelpers: 'bundled' }), + ], + external, + }, + { + input: 'src/index.ts', output: { file: 'umd/universalCookie.js', format: 'umd', name: 'UniversalCookie', }, - plugins: [...basePlugins], + plugins: [resolve({ mainFields }), typescript({ outDir: './umd' })], + external, }, { - input: 'cjs/index.js', + input: 'src/index.ts', output: { file: 'umd/universalCookie.min.js', format: 'umd', name: 'UniversalCookie', }, - plugins: [...basePlugins, terser()], + plugins: [ + resolve({ mainFields }), + typescript({ outDir: './umd' }), + terser(), + ], + external, }, ]; diff --git a/packages/universal-cookie/tsconfig.json b/packages/universal-cookie/tsconfig.json index cf1d858..d2b0100 100644 --- a/packages/universal-cookie/tsconfig.json +++ b/packages/universal-cookie/tsconfig.json @@ -4,7 +4,6 @@ "module": "es6", "moduleResolution": "node", "declaration": true, - "outDir": "./es6", "strict": true }, "files": ["./src/index.ts"] diff --git a/yarn.lock b/yarn.lock index 34ebd20..eb711f2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -162,7 +162,7 @@ dependencies: "@babel/types" "^7.23.0" -"@babel/helper-module-imports@^7.22.15": +"@babel/helper-module-imports@^7.18.6", "@babel/helper-module-imports@^7.22.15": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== @@ -1491,6 +1491,14 @@ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== +"@rollup/plugin-babel@^6.0.4": + version "6.0.4" + resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-6.0.4.tgz#bd698e351fa9aa9619fcae780aea2a603d98e4c4" + integrity sha512-YF7Y52kFdFT/xVSuVdjkV5ZdX/3YtmX0QulG+x0taQOtJdHYzVU61aSSkAgVJ7NOv6qPkIYiJSgSWWN/DM5sGw== + dependencies: + "@babel/helper-module-imports" "^7.18.6" + "@rollup/pluginutils" "^5.0.1" + "@rollup/plugin-commonjs@^25.0.7": version "25.0.7" resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.7.tgz#145cec7589ad952171aeb6a585bbeabd0fd3b4cf" @@ -1532,6 +1540,14 @@ 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" + integrity sha512-rnMHrGBB0IUEv69Q8/JGRD/n4/n6b3nfpufUu26axhUcboUzv/twfZU8fIBbTOphRAe0v8EyxzeDpKXqGHfyDA== + dependencies: + "@rollup/pluginutils" "^5.0.1" + resolve "^1.22.1" + "@rollup/pluginutils@^5.0.1": version "5.1.0" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.0.tgz#7e53eddc8c7f483a4ad0b94afb1f7f5fd3c771e0" @@ -5671,6 +5687,11 @@ tr46@^3.0.0: dependencies: punycode "^2.1.1" +tslib@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + type-detect@4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"