diff --git a/.changeset/chilly-fans-hunt.md b/.changeset/chilly-fans-hunt.md new file mode 100644 index 00000000..3afb9186 --- /dev/null +++ b/.changeset/chilly-fans-hunt.md @@ -0,0 +1,9 @@ +--- +'remotedev-redux-devtools-extension': patch +'d3-state-visualizer': major +'d3tooltip': major +'map2tree': major +'@redux-devtools/app': patch +--- + +Convert d3 packages to ESM diff --git a/extension/jest.config.js b/extension/jest.config.js index 691b3b04..2c331668 100644 --- a/extension/jest.config.js +++ b/extension/jest.config.js @@ -6,6 +6,6 @@ module.exports = { '\\.css$': '/test/__mocks__/styleMock.ts', }, transformIgnorePatterns: [ - 'node_modules/(?!.pnpm|@babel/code-frame|@babel/highlight|@babel/helper-validator-identifier|chalk|d3|dateformat|delaunator|internmap|jsondiffpatch|nanoid|robust-predicates|uuid)', + 'node_modules/(?!.pnpm|@babel/code-frame|@babel/highlight|@babel/helper-validator-identifier|chalk|d3|dateformat|delaunator|internmap|jsondiffpatch|lodash-es|nanoid|robust-predicates|uuid)', ], }; diff --git a/packages/d3-state-visualizer/.eslintrc.js b/packages/d3-state-visualizer/.eslintrc.cjs similarity index 100% rename from packages/d3-state-visualizer/.eslintrc.js rename to packages/d3-state-visualizer/.eslintrc.cjs diff --git a/packages/d3-state-visualizer/babel.config.esm.json b/packages/d3-state-visualizer/babel.config.esm.json deleted file mode 100644 index 1c02687e..00000000 --- a/packages/d3-state-visualizer/babel.config.esm.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "presets": [ - ["@babel/preset-env", { "targets": "defaults", "modules": false }], - "@babel/preset-typescript" - ], - "plugins": ["@babel/plugin-transform-runtime"] -} diff --git a/packages/d3-state-visualizer/babel.config.json b/packages/d3-state-visualizer/babel.config.json deleted file mode 100644 index 5ed95986..00000000 --- a/packages/d3-state-visualizer/babel.config.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "presets": [ - ["@babel/preset-env", { "targets": "defaults" }], - "@babel/preset-typescript" - ], - "plugins": ["@babel/plugin-transform-runtime"] -} diff --git a/packages/d3-state-visualizer/package.json b/packages/d3-state-visualizer/package.json index 0d16f44d..ffda5454 100644 --- a/packages/d3-state-visualizer/package.json +++ b/packages/d3-state-visualizer/package.json @@ -20,27 +20,23 @@ "lib", "src" ], - "main": "lib/cjs/index.js", - "module": "lib/esm/index.js", - "types": "lib/types/index.d.ts", + "main": "lib/index.js", + "types": "lib/index.d.ts", + "type": "module", "sideEffects": false, "repository": { "type": "git", "url": "https://github.com/reduxjs/redux-devtools.git" }, "scripts": { - "build": "pnpm run build:cjs && pnpm run build:esm && pnpm run build:types", - "build:cjs": "babel src --extensions \".ts\" --out-dir lib/cjs", - "build:esm": "babel src --config-file ./babel.config.esm.json --extensions \".ts\" --out-dir lib/esm", - "build:types": "tsc --emitDeclarationOnly", + "build": "tsc", "clean": "rimraf lib", "lint": "eslint . --ext .ts", "type-check": "tsc --noEmit", "prepack": "pnpm run clean && pnpm run build", - "prepublish": "pnpm run type-check && pnpm run lint" + "prepublish": "pnpm run lint" }, "dependencies": { - "@babel/runtime": "^7.24.1", "@types/d3": "^7.4.3", "d3": "^7.9.0", "d3tooltip": "^3.0.0", @@ -49,11 +45,6 @@ "ramda": "^0.29.1" }, "devDependencies": { - "@babel/cli": "^7.24.1", - "@babel/core": "^7.24.3", - "@babel/eslint-parser": "^7.24.1", - "@babel/preset-env": "^7.24.3", - "@babel/preset-typescript": "^7.24.1", "@types/ramda": "^0.29.11", "@typescript-eslint/eslint-plugin": "^7.4.0", "@typescript-eslint/parser": "^7.4.0", diff --git a/packages/d3-state-visualizer/src/charts/index.ts b/packages/d3-state-visualizer/src/charts/index.ts index 90e07fa8..c3b555d1 100644 --- a/packages/d3-state-visualizer/src/charts/index.ts +++ b/packages/d3-state-visualizer/src/charts/index.ts @@ -1,4 +1,4 @@ export type { HierarchyPointNode } from 'd3'; export type { StyleValue } from 'd3tooltip'; -export { default as tree } from './tree/tree'; -export type { Node, Options } from './tree/tree'; +export { default as tree } from './tree/tree.js'; +export type { Node, Options } from './tree/tree.js'; diff --git a/packages/d3-state-visualizer/src/charts/tree/tree.ts b/packages/d3-state-visualizer/src/charts/tree/tree.ts index 782a9832..058886c8 100644 --- a/packages/d3-state-visualizer/src/charts/tree/tree.ts +++ b/packages/d3-state-visualizer/src/charts/tree/tree.ts @@ -9,7 +9,7 @@ import { toggleChildren, visit, getNodeGroupByDepthCount, -} from './utils'; +} from './utils.js'; import { tooltip } from 'd3tooltip'; import type { StyleValue } from 'd3tooltip'; diff --git a/packages/d3-state-visualizer/src/charts/tree/utils.ts b/packages/d3-state-visualizer/src/charts/tree/utils.ts index 8f229cae..b63baf74 100644 --- a/packages/d3-state-visualizer/src/charts/tree/utils.ts +++ b/packages/d3-state-visualizer/src/charts/tree/utils.ts @@ -1,6 +1,6 @@ import { is, join, pipe, replace } from 'ramda'; -import sortAndSerialize from './sortAndSerialize'; -import type { InternalNode } from './tree'; +import sortAndSerialize from './sortAndSerialize.js'; +import type { InternalNode } from './tree.js'; export function collapseChildren(node: InternalNode) { if (node.children) { diff --git a/packages/d3-state-visualizer/src/index.ts b/packages/d3-state-visualizer/src/index.ts index a2ce88d8..e73eb6c6 100644 --- a/packages/d3-state-visualizer/src/index.ts +++ b/packages/d3-state-visualizer/src/index.ts @@ -1,2 +1,7 @@ -export { tree } from './charts'; -export type { HierarchyPointNode, Node, Options, StyleValue } from './charts'; +export { tree } from './charts/index.js'; +export type { + HierarchyPointNode, + Node, + Options, + StyleValue, +} from './charts/index.js'; diff --git a/packages/d3-state-visualizer/tsconfig.json b/packages/d3-state-visualizer/tsconfig.json index 19e4e718..e3160ce3 100644 --- a/packages/d3-state-visualizer/tsconfig.json +++ b/packages/d3-state-visualizer/tsconfig.json @@ -1,7 +1,7 @@ { - "extends": "../../tsconfig.base.json", + "extends": "../../tsconfig.esm.base.json", "compilerOptions": { - "outDir": "lib/types" + "outDir": "lib" }, "include": ["src"] } diff --git a/packages/d3tooltip/.eslintrc.js b/packages/d3tooltip/.eslintrc.cjs similarity index 100% rename from packages/d3tooltip/.eslintrc.js rename to packages/d3tooltip/.eslintrc.cjs diff --git a/packages/d3tooltip/babel.config.esm.json b/packages/d3tooltip/babel.config.esm.json deleted file mode 100644 index 1c02687e..00000000 --- a/packages/d3tooltip/babel.config.esm.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "presets": [ - ["@babel/preset-env", { "targets": "defaults", "modules": false }], - "@babel/preset-typescript" - ], - "plugins": ["@babel/plugin-transform-runtime"] -} diff --git a/packages/d3tooltip/babel.config.json b/packages/d3tooltip/babel.config.json deleted file mode 100644 index 5ed95986..00000000 --- a/packages/d3tooltip/babel.config.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "presets": [ - ["@babel/preset-env", { "targets": "defaults" }], - "@babel/preset-typescript" - ], - "plugins": ["@babel/plugin-transform-runtime"] -} diff --git a/packages/d3tooltip/package.json b/packages/d3tooltip/package.json index f86eb993..5da63c7d 100644 --- a/packages/d3tooltip/package.json +++ b/packages/d3tooltip/package.json @@ -16,34 +16,23 @@ "lib", "src" ], - "main": "lib/cjs/index.js", - "module": "lib/esm/index.js", - "types": "lib/types/index.d.ts", + "main": "lib/index.js", + "types": "lib/index.d.ts", + "type": "module", "sideEffects": false, "repository": { "type": "git", "url": "https://github.com/reduxjs/redux-devtools.git" }, "scripts": { - "build": "pnpm run build:cjs && pnpm run build:esm && pnpm run build:types", - "build:cjs": "babel src --extensions \".ts\" --out-dir lib/cjs", - "build:esm": "babel src --config-file ./babel.config.esm.json --extensions \".ts\" --out-dir lib/esm", - "build:types": "tsc --emitDeclarationOnly", + "build": "tsc", "clean": "rimraf lib", "lint": "eslint . --ext .ts", "type-check": "tsc --noEmit", "prepack": "pnpm run clean && pnpm run build", - "prepublish": "pnpm run type-check && pnpm run lint" - }, - "dependencies": { - "@babel/runtime": "^7.24.1" + "prepublish": "pnpm run lint" }, "devDependencies": { - "@babel/cli": "^7.24.1", - "@babel/core": "^7.24.3", - "@babel/eslint-parser": "^7.24.1", - "@babel/preset-env": "^7.24.3", - "@babel/preset-typescript": "^7.24.1", "@types/d3": "^7.4.3", "@typescript-eslint/eslint-plugin": "^7.4.0", "@typescript-eslint/parser": "^7.4.0", diff --git a/packages/d3tooltip/tsconfig.json b/packages/d3tooltip/tsconfig.json index 0aade49a..e3160ce3 100644 --- a/packages/d3tooltip/tsconfig.json +++ b/packages/d3tooltip/tsconfig.json @@ -1,7 +1,7 @@ { - "extends": "../../tsconfig.react.base.json", + "extends": "../../tsconfig.esm.base.json", "compilerOptions": { - "outDir": "lib/types" + "outDir": "lib" }, "include": ["src"] } diff --git a/packages/map2tree/.eslintrc.js b/packages/map2tree/.eslintrc.cjs similarity index 100% rename from packages/map2tree/.eslintrc.js rename to packages/map2tree/.eslintrc.cjs diff --git a/packages/map2tree/babel.config.esm.json b/packages/map2tree/babel.config.esm.json deleted file mode 100644 index 1c02687e..00000000 --- a/packages/map2tree/babel.config.esm.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "presets": [ - ["@babel/preset-env", { "targets": "defaults", "modules": false }], - "@babel/preset-typescript" - ], - "plugins": ["@babel/plugin-transform-runtime"] -} diff --git a/packages/map2tree/babel.config.json b/packages/map2tree/babel.config.json deleted file mode 100644 index 5ed95986..00000000 --- a/packages/map2tree/babel.config.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "presets": [ - ["@babel/preset-env", { "targets": "defaults" }], - "@babel/preset-typescript" - ], - "plugins": ["@babel/plugin-transform-runtime"] -} diff --git a/packages/map2tree/jest.config.cjs b/packages/map2tree/jest.config.cjs new file mode 100644 index 00000000..3fb8088b --- /dev/null +++ b/packages/map2tree/jest.config.cjs @@ -0,0 +1,9 @@ +module.exports = { + extensionsToTreatAsEsm: ['.ts'], + moduleNameMapper: { + '^(\\.{1,2}/.*)\\.js$': '$1', + }, + transform: { + '^.+\\.ts$': ['ts-jest', { tsconfig: 'tsconfig.test.json', useESM: true }], + }, +}; diff --git a/packages/map2tree/jest.config.js b/packages/map2tree/jest.config.js deleted file mode 100644 index f68efd05..00000000 --- a/packages/map2tree/jest.config.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - preset: 'ts-jest', - transform: { - '^.+\\.tsx?$': ['ts-jest', { tsconfig: 'tsconfig.test.json' }], - }, -}; diff --git a/packages/map2tree/package.json b/packages/map2tree/package.json index d3384530..e8bf7492 100755 --- a/packages/map2tree/package.json +++ b/packages/map2tree/package.json @@ -19,38 +19,29 @@ "lib", "src" ], - "main": "lib/cjs/index.js", - "module": "lib/esm/index.js", - "types": "lib/types/index.d.ts", + "main": "lib/index.js", + "types": "lib/index.d.ts", + "type": "module", "sideEffects": false, "repository": { "type": "git", "url": "https://github.com/reduxjs/redux-devtools.git" }, "scripts": { - "build": "pnpm run build:cjs && pnpm run build:esm && pnpm run build:types", - "build:cjs": "babel src --extensions \".ts\" --out-dir lib/cjs", - "build:esm": "babel src --config-file ./babel.config.esm.json --extensions \".ts\" --out-dir lib/esm", - "build:types": "tsc --emitDeclarationOnly", + "build": "tsc", "clean": "rimraf lib", - "test": "jest", + "test": "node --experimental-vm-modules node_modules/jest/bin/jest.js", "lint": "eslint . --ext .ts", "type-check": "tsc --noEmit", "prepack": "pnpm run clean && pnpm run build", - "prepublish": "pnpm run type-check && pnpm run lint && pnpm run test" + "prepublish": "pnpm run lint && pnpm run test" }, "dependencies": { - "@babel/runtime": "^7.24.1", - "lodash": "^4.17.21" + "lodash-es": "^4.17.21" }, "devDependencies": { - "@babel/cli": "^7.24.1", - "@babel/core": "^7.24.3", - "@babel/eslint-parser": "^7.24.1", - "@babel/preset-env": "^7.24.3", - "@babel/preset-typescript": "^7.24.1", "@types/jest": "^29.5.12", - "@types/lodash": "^4.17.0", + "@types/lodash-es": "^4.17.12", "@typescript-eslint/eslint-plugin": "^7.4.0", "@typescript-eslint/parser": "^7.4.0", "eslint": "^8.57.0", diff --git a/packages/map2tree/src/index.ts b/packages/map2tree/src/index.ts index 74e231fb..322379e5 100644 --- a/packages/map2tree/src/index.ts +++ b/packages/map2tree/src/index.ts @@ -1,6 +1,4 @@ -import isArray from 'lodash/isArray'; -import isPlainObject from 'lodash/isPlainObject'; -import mapValues from 'lodash/mapValues'; +import { isArray, isPlainObject, mapValues } from 'lodash-es'; export interface Node { name: string; diff --git a/packages/map2tree/tsconfig.json b/packages/map2tree/tsconfig.json index 0aade49a..e3160ce3 100644 --- a/packages/map2tree/tsconfig.json +++ b/packages/map2tree/tsconfig.json @@ -1,7 +1,7 @@ { - "extends": "../../tsconfig.react.base.json", + "extends": "../../tsconfig.esm.base.json", "compilerOptions": { - "outDir": "lib/types" + "outDir": "lib" }, "include": ["src"] } diff --git a/packages/map2tree/tsconfig.test.json b/packages/map2tree/tsconfig.test.json index d0d15f67..52e69314 100644 --- a/packages/map2tree/tsconfig.test.json +++ b/packages/map2tree/tsconfig.test.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.base.json", + "extends": "../../tsconfig.esm.base.json", "compilerOptions": { "types": ["jest"] }, diff --git a/packages/redux-devtools-app/jest.config.js b/packages/redux-devtools-app/jest.config.js index 064e6f6e..a65c379b 100644 --- a/packages/redux-devtools-app/jest.config.js +++ b/packages/redux-devtools-app/jest.config.js @@ -10,6 +10,6 @@ module.exports = { '^.+\\.tsx?$': ['ts-jest', { tsconfig: 'tsconfig.test.json' }], }, transformIgnorePatterns: [ - 'node_modules/(?!.pnpm|@babel/code-frame|@babel/highlight|@babel/helper-validator-identifier|chalk|d3|dateformat|delaunator|internmap|jsondiffpatch|nanoid|robust-predicates|uuid)', + 'node_modules/(?!.pnpm|@babel/code-frame|@babel/highlight|@babel/helper-validator-identifier|chalk|d3|dateformat|delaunator|internmap|jsondiffpatch|lodash-es|nanoid|robust-predicates|uuid)', ], }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4820a1c7..b83ecb58 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -225,9 +225,6 @@ importers: packages/d3-state-visualizer: dependencies: - '@babel/runtime': - specifier: ^7.24.1 - version: 7.24.1 '@types/d3': specifier: ^7.4.3 version: 7.4.3 @@ -247,21 +244,6 @@ importers: specifier: ^0.29.1 version: 0.29.1 devDependencies: - '@babel/cli': - specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3) - '@babel/core': - specifier: ^7.24.3 - version: 7.24.3 - '@babel/eslint-parser': - specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3)(eslint@8.57.0) - '@babel/preset-env': - specifier: ^7.24.3 - version: 7.24.3(@babel/core@7.24.3) - '@babel/preset-typescript': - specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3) '@types/ramda': specifier: ^0.29.11 version: 0.29.11 @@ -346,26 +328,7 @@ importers: version: 5.0.4(webpack-cli@5.1.4)(webpack@5.91.0) packages/d3tooltip: - dependencies: - '@babel/runtime': - specifier: ^7.24.1 - version: 7.24.1 devDependencies: - '@babel/cli': - specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3) - '@babel/core': - specifier: ^7.24.3 - version: 7.24.3 - '@babel/eslint-parser': - specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3)(eslint@8.57.0) - '@babel/preset-env': - specifier: ^7.24.3 - version: 7.24.3(@babel/core@7.24.3) - '@babel/preset-typescript': - specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3) '@types/d3': specifier: ^7.4.3 version: 7.4.3 @@ -393,34 +356,16 @@ importers: packages/map2tree: dependencies: - '@babel/runtime': - specifier: ^7.24.1 - version: 7.24.1 - lodash: + lodash-es: specifier: ^4.17.21 version: 4.17.21 devDependencies: - '@babel/cli': - specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3) - '@babel/core': - specifier: ^7.24.3 - version: 7.24.3 - '@babel/eslint-parser': - specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3)(eslint@8.57.0) - '@babel/preset-env': - specifier: ^7.24.3 - version: 7.24.3(@babel/core@7.24.3) - '@babel/preset-typescript': - specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3) '@types/jest': specifier: ^29.5.12 version: 29.5.12 - '@types/lodash': - specifier: ^4.17.0 - version: 4.17.0 + '@types/lodash-es': + specifier: ^4.17.12 + version: 4.17.12 '@typescript-eslint/eslint-plugin': specifier: ^7.4.0 version: 7.4.0(@typescript-eslint/parser@7.4.0)(eslint@8.57.0)(typescript@5.3.3) @@ -10878,7 +10823,7 @@ packages: '@babel/core': 7.24.3 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.91.0(@swc/core@1.4.11)(esbuild@0.20.2) + webpack: 5.91.0(webpack-cli@5.1.4) dev: true /babel-plugin-istanbul@6.1.1: diff --git a/tsconfig.esm.base.json b/tsconfig.esm.base.json new file mode 100644 index 00000000..e08b3956 --- /dev/null +++ b/tsconfig.esm.base.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "target": "es2020", + "module": "node16", + "declaration": true, + "strict": true, + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "types": [] + } +}