From 32a2c1061c3b63f62d55c63c5c95933c1702ffba Mon Sep 17 00:00:00 2001 From: mshipper Date: Wed, 15 Apr 2026 06:21:08 +0000 Subject: [PATCH 1/3] upgrade in progress to typescript 6.0.1 --- .vscode/settings.json | 3 --- demo_app/package.json | 4 ++-- demo_app/package.json.bk | 49 ++++++++++++++++++++++++++++++++++++++++ demo_app/setup.sh | 1 - demo_app/src/env.d.ts | 4 ++++ demo_app/src/server.js | 7 +++--- demo_app/tsconfig.json | 18 +++++++++++++++ package.json | 28 +++++++++++++++++------ src/CalculateNodeXY.ts | 2 +- src/Calculator.ts | 6 ++--- src/MouseWatcher.ts | 4 ++-- tsconfig.json | 18 +++++++-------- webpack-dev.config.ts | 7 ++++-- webpack-prod.config.ts | 7 ++++-- 14 files changed, 123 insertions(+), 35 deletions(-) delete mode 100644 .vscode/settings.json create mode 100644 demo_app/package.json.bk create mode 100644 demo_app/src/env.d.ts create mode 100644 demo_app/tsconfig.json diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 3c358ef..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "js/ts.tsdk.path": "node_modules/typescript/lib" -} \ No newline at end of file diff --git a/demo_app/package.json b/demo_app/package.json index a96c55e..dc2ca20 100644 --- a/demo_app/package.json +++ b/demo_app/package.json @@ -34,10 +34,10 @@ "react-dom": "^19.2.0", "style-loader": "^4.0.0", "ts-loader": "^9.5.4", - "typescript": "^5.9.3", + "typescript": "^6.0.1", "webpack": "^5.102.1", "nocache": "^4.0.0", - "webpack-cli": "^6.0.1" + "webpack-cli": "^7.0.2" }, "dependencies": { } diff --git a/demo_app/package.json.bk b/demo_app/package.json.bk new file mode 100644 index 0000000..ee6f6a3 --- /dev/null +++ b/demo_app/package.json.bk @@ -0,0 +1,49 @@ +{ + "name": "linked-bundle-node-map-demo-app", + "version": "0.0.5", + "main": "dist/bundle.js", + "types": "dist/LinkedBundleNodeMap.d.ts", + "homepage": "https://github.com/akalinux/linked-bundle-node-map", + "scripts": { + "watch": "webpack -w -c ./webpack-dev.ts", + "dev": "webpack -c ./webpack-dev.ts", + "build": "webpack -c ./webpack-prod.ts", + "server": "node ./src/server.js" + }, + "files": [ + "dist" + ], + "keywords": [], + "author": "AKALINUX", + "license": "MIT", + "description": "", + "devDependencies": { + "linked-bundle-node-map":"*", + "@babel/core": "^7.28.5", + "@babel/preset-env": "^7.28.5", + "@babel/preset-react": "^7.28.5", + "@babel/preset-typescript": "^7.28.5", + "@babel/register": "^7.28.3", + "@types/jest": "^30.0.0", + "@types/react": "^19.2.2", + "@types/react-dom": "^19.2.2", + "css-loader": "^7.1.2", + "express": "^5.1.0", + "mini-css-extract-plugin": "^2.9.4", + "react": "^19.2.0", + "react-dom": "^19.2.0", + "style-loader": "^4.0.0", + "ts-loader": "^9.5.4", + "typescript": "^6.0.2", + "webpack": "^5.102.1", + "nocache": "^4.0.0", + "webpack-cli": "^7.0.2" + }, + "dependencies": { + }, + "type": "module", + "exports": { + "types":"./dist/LinkedBundleNodeMap.d.ts", + "import":"./dist/bundle.js" + } +} diff --git a/demo_app/setup.sh b/demo_app/setup.sh index 0745606..bb1e0dd 100755 --- a/demo_app/setup.sh +++ b/demo_app/setup.sh @@ -4,7 +4,6 @@ target=$(cd $(pwd)/..;pwd) rm -rf ./node_modules mkdir ./node_modules -ln -s $target node_modules/linked-bundle-node-map npm install rm -f node_modules/linked-bundle-node-map ln -s $target node_modules/linked-bundle-node-map diff --git a/demo_app/src/env.d.ts b/demo_app/src/env.d.ts new file mode 100644 index 0000000..0fce64b --- /dev/null +++ b/demo_app/src/env.d.ts @@ -0,0 +1,4 @@ +// globals.d.ts +declare module "*.css"; +declare module "*.scss"; +declare module "*.png"; \ No newline at end of file diff --git a/demo_app/src/server.js b/demo_app/src/server.js index 9bf1faf..7995af9 100644 --- a/demo_app/src/server.js +++ b/demo_app/src/server.js @@ -1,8 +1,9 @@ -const express = require('express'); -const nocache = require("nocache"); -const path = require('path'); +import express from 'express'; +import nocache from 'nocache'; +import path from 'path'; const app = express(); const PORT = process.env.PORT || 5000; +const __dirname = import.meta.dirname; app.use(nocache()); // Serve static files from the 'build' directory (or 'dist') diff --git a/demo_app/tsconfig.json b/demo_app/tsconfig.json new file mode 100644 index 0000000..2361836 --- /dev/null +++ b/demo_app/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "sourceMap": true, + "jsx": "react-jsx", + "rootDir":"./src", + "outDir":"./dist", + "declaration": false, + "declarationMap": false, + "strict": false, + "types": ["node"], + "noUncheckedSideEffectImports": true + }, + "include": ["src/**/*"], + "exclude": [ "node_modules","dist/*"] +} diff --git a/package.json b/package.json index dd3e465..3ad57c0 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,6 @@ { "name": "linked-bundle-node-map", - "version": "1.0.15", - "main": "dist/bundle.js", + "version": "1.0.16", "types": "dist/LinkedBundleNodeMap.d.ts", "funding": "https://github.com/sponsors/akalinux", "homepage": "https://github.com/akalinux/linked-bundle-node-map", @@ -36,11 +35,12 @@ "@babel/preset-react": "^7.28.5", "@babel/preset-typescript": "^7.28.5", "@babel/register": "^7.28.3", - "@eslint/js": "^9.39.1", + "@eslint/js": "^10.0.1", "@types/jest": "^30.0.0", + "@types/node": "^25.6.0", "@types/react": "^19.2.2", "@types/react-dom": "^19.2.2", - "eslint": "^9.39.1", + "eslint": "^10.2.0", "gh-pages": "^6.3.0", "jest": "^30.0.5", "react": "^19.2.0", @@ -48,10 +48,24 @@ "style-loader": "^4.0.0", "ts-jest": "^29.4.0", "ts-loader": "^9.5.4", - "typescript": "^5.9.3", + "typescript": "^6.0.1", "typescript-eslint": "^8.46.3", "webpack": "^5.102.1", - "webpack-cli": "^6.0.1" + "webpack-cli": "^7.0.2" }, - "dependencies": {} + "exports": { + "./package.json": "./package.json", + ".": { + "import": "./dist/bundle.js", + "default": "./dist/bundle.js", + "types": "./dist/LinkedBundleNodeMap.d.ts" + }, + "./dist/CommonTypes": { + "import": "./dist/CommonTypes.d.ts" + }, + "./dist/linked-bundle-node.css": { + "import": "./dist/linked-bundle-node.css", + "require": "./dist/linked-bundle-node.css" + } + } } diff --git a/src/CalculateNodeXY.ts b/src/CalculateNodeXY.ts index 9c18097..fdf1efe 100644 --- a/src/CalculateNodeXY.ts +++ b/src/CalculateNodeXY.ts @@ -60,7 +60,7 @@ export default class CalculateNodeXY extends CalculatorBase { nodes.push(node); } } else { - const x = minX = minX + pad; + const x = minX + pad; const y = minY + pad; const node = { ...list[0], x, y } as NodeEl; nodes.push(node); diff --git a/src/Calculator.ts b/src/Calculator.ts index 823758d..05e95fc 100644 --- a/src/Calculator.ts +++ b/src/Calculator.ts @@ -553,7 +553,7 @@ export default class Calculator extends CalculatorBase { const lmv: LinkDraw = { i: link.i, s: start, d: end, l: link }; ll.push(ls.lm[link.i] = lmv); const as = { s: { a: ba, s: start }, d: { a: da, s: end } }; - let aid = this.rebuild ? + const aid = this.rebuild ? this.linkRenderCache[this.linkRenderIndex.get(ls.key)!].links[i].aid : this.animations.length; @@ -569,7 +569,7 @@ export default class Calculator extends CalculatorBase { w: w * .75, o: i, } - this.animations[aid++] = animate; + this.animations[aid+1] = animate; } else if (a == 'b') { for (let i = 0; i < SD.length; ++i) { const a = SD[i]; @@ -581,7 +581,7 @@ export default class Calculator extends CalculatorBase { f: i ? this.bgColor : c, w: w * .75, } - this.animations[aid++] = animate; + this.animations[aid+1] = animate; } } } diff --git a/src/MouseWatcher.ts b/src/MouseWatcher.ts index 16e1c1b..19d0a28 100644 --- a/src/MouseWatcher.ts +++ b/src/MouseWatcher.ts @@ -220,9 +220,9 @@ export default class MouseWatcher { event.name = 'NodeDrag'; this.calc.moveNode(dt.node!.i, data.nodes[dt.node!.i]); } else { - let tag = ''; + // eslint-disable-next-line no-useless-assignment + let tag ='',name = '' this.calc.moveLink(dt, {x:0,y:0}); - let name=''; if (dt.type == 'link') { tag = `link-${dt.link!.l.i}` name='OnLinkChange' diff --git a/tsconfig.json b/tsconfig.json index 1d617b8..b334cb9 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,19 +1,19 @@ { "compilerOptions": { - "target": "es6", - "module": "es6", - "moduleResolution": "node", + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", "sourceMap": true, "jsx": "react-jsx", + "rootDir":"./src", "outDir":"./dist", "declaration": true, "declarationMap": true, - "strict": true, + "strict": false, "skipLibCheck": true, - "resolveJsonModule": true, - "esModuleInterop": true + "esModuleInterop": true, + "types": ["node","jest"] }, - "include": ["src"], - "exclude": [ "node_modules","dist/*" - ] + "include": ["src"], + "exclude": [ "node_modules","dist/*"] } diff --git a/webpack-dev.config.ts b/webpack-dev.config.ts index 28086da..5cde240 100644 --- a/webpack-dev.config.ts +++ b/webpack-dev.config.ts @@ -43,9 +43,12 @@ module.exports = { output: { path: dist, filename: 'bundle.js', - library: 'LinkedBundleNodeMap', // Global variable name for the UMD module - libraryTarget: 'umd', globalObject: 'this', // Ensures UMD works in various environments + //module:true, + library: { + name: 'LinkedBundleNodeMap', + type:'umd', + } }, resolve: { extensions: ['.ts', '.tsx',], diff --git a/webpack-prod.config.ts b/webpack-prod.config.ts index 78308c5..644bc81 100644 --- a/webpack-prod.config.ts +++ b/webpack-prod.config.ts @@ -7,6 +7,7 @@ const src=path.resolve(__dirname, 'src'); try { fs.mkdirSync(dist); } catch (e) { + console.log(e) // don't care } @@ -20,9 +21,11 @@ module.exports = { output: { path: dist, filename: 'bundle.js', - library: 'LinkedBundleNodeMap', // Global variable name for the UMD module - libraryTarget: 'umd', globalObject: 'this', // Ensures UMD works in various environments + library: { + name: 'LinkedBundleNodeMap', + type:'umd', + } }, resolve: { extensions: ['.ts', '.tsx',], From 191bc99f996c2d31e8288f3857388a63355f1b8c Mon Sep 17 00:00:00 2001 From: mshipper Date: Wed, 15 Apr 2026 06:38:08 +0000 Subject: [PATCH 2/3] updating deps --- demo_app/package.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/demo_app/package.json b/demo_app/package.json index dc2ca20..aee13fa 100644 --- a/demo_app/package.json +++ b/demo_app/package.json @@ -19,23 +19,23 @@ "description": "", "devDependencies": { "linked-bundle-node-map":"*", - "@babel/core": "^7.28.5", - "@babel/preset-env": "^7.28.5", + "@babel/core": "^7.29.0", + "@babel/preset-env": "^7.29.2", "@babel/preset-react": "^7.28.5", "@babel/preset-typescript": "^7.28.5", - "@babel/register": "^7.28.3", - "@types/jest": "^30.0.0", + "@babel/register": "^7.28.6", + "@types/jest": "^30.3.0", "@types/react": "^19.2.2", "@types/react-dom": "^19.2.2", "css-loader": "^7.1.2", "express": "^5.1.0", "mini-css-extract-plugin": "^2.9.4", - "react": "^19.2.0", - "react-dom": "^19.2.0", + "react": "^19.2.5", + "react-dom": "^19.2.5", "style-loader": "^4.0.0", - "ts-loader": "^9.5.4", - "typescript": "^6.0.1", - "webpack": "^5.102.1", + "ts-loader": "^9.5.7", + "typescript": "^6.0.2", + "webpack": "^5.106.1", "nocache": "^4.0.0", "webpack-cli": "^7.0.2" }, From 182e4885e9efed9910a3f77f36e0572f003e8757 Mon Sep 17 00:00:00 2001 From: mshipper Date: Wed, 15 Apr 2026 07:28:40 +0000 Subject: [PATCH 3/3] upgrades complete --- CHANGELOG.md | 6 ++++++ demo_app/package.json | 11 +++++------ package.json | 28 ++++++++++++++-------------- src/Calculator.ts | 6 +++--- 4 files changed, 28 insertions(+), 23 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1a43d75..fc8855f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -65,3 +65,9 @@ 1.0.15 - fixed issue that caused links to be rendered multiple times while nodes,links,bundles, or groups were being dragged - animations now persist through dragging + +1.0.16 + - all devDependencies upgraded.. + -- This was a major undertaking.. TypeScript has been upgraded from 5.x to 6.x + - package.json exports have been modernized + - webpack builds have been upgraded, we are now no longer using deprecated features. diff --git a/demo_app/package.json b/demo_app/package.json index aee13fa..01f46c2 100644 --- a/demo_app/package.json +++ b/demo_app/package.json @@ -24,12 +24,11 @@ "@babel/preset-react": "^7.28.5", "@babel/preset-typescript": "^7.28.5", "@babel/register": "^7.28.6", - "@types/jest": "^30.3.0", - "@types/react": "^19.2.2", - "@types/react-dom": "^19.2.2", - "css-loader": "^7.1.2", - "express": "^5.1.0", - "mini-css-extract-plugin": "^2.9.4", + "@types/react": "^19.2.14", + "@types/react-dom": "^19.2.3", + "css-loader": "^7.1.4", + "express": "^5.2.1", + "mini-css-extract-plugin": "^2.10.2", "react": "^19.2.5", "react-dom": "^19.2.5", "style-loader": "^4.0.0", diff --git a/package.json b/package.json index 3ad57c0..5aa77b5 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "testapp": "cd demo_app;npm run build", "tw": "cd demo_app;npm run watch", "clean": "rm -rf dist public/js||/bin/true", - "deploy": "npm run build && bash -c 'cd demo_app;npm run build'; gh-pages -d public", + "deploy": "npm run clean && npm run build && bash -c 'cd demo_app;npm run build'; gh-pages -d public", "test": "npx eslint src && jest", "push": "npm run clean && npm run test && npm run build && npm run publish && npm run deploy" }, @@ -30,27 +30,27 @@ "license": "MIT", "description": "General diagram tool. Create flow charts, network maps, UML diagrams etc..", "devDependencies": { - "@babel/core": "^7.28.5", - "@babel/preset-env": "^7.28.5", + "@babel/core": "^7.29.0", + "@babel/preset-env": "^7.29.2", "@babel/preset-react": "^7.28.5", "@babel/preset-typescript": "^7.28.5", - "@babel/register": "^7.28.3", + "@babel/register": "^7.28.6", "@eslint/js": "^10.0.1", "@types/jest": "^30.0.0", "@types/node": "^25.6.0", - "@types/react": "^19.2.2", - "@types/react-dom": "^19.2.2", + "@types/react": "^19.2.14", + "@types/react-dom": "^19.2.3", "eslint": "^10.2.0", "gh-pages": "^6.3.0", - "jest": "^30.0.5", - "react": "^19.2.0", - "react-dom": "^19.2.0", + "jest": "^30.3.0", + "react": "^19.2.5", + "react-dom": "^19.2.5", "style-loader": "^4.0.0", - "ts-jest": "^29.4.0", - "ts-loader": "^9.5.4", - "typescript": "^6.0.1", - "typescript-eslint": "^8.46.3", - "webpack": "^5.102.1", + "ts-jest": "^29.4.9", + "ts-loader": "^9.5.7", + "typescript": "^6.0.2", + "typescript-eslint": "^8.58.2", + "webpack": "^5.106.1", "webpack-cli": "^7.0.2" }, "exports": { diff --git a/src/Calculator.ts b/src/Calculator.ts index 05e95fc..6b94918 100644 --- a/src/Calculator.ts +++ b/src/Calculator.ts @@ -553,7 +553,7 @@ export default class Calculator extends CalculatorBase { const lmv: LinkDraw = { i: link.i, s: start, d: end, l: link }; ll.push(ls.lm[link.i] = lmv); const as = { s: { a: ba, s: start }, d: { a: da, s: end } }; - const aid = this.rebuild ? + let aid = this.rebuild ? this.linkRenderCache[this.linkRenderIndex.get(ls.key)!].links[i].aid : this.animations.length; @@ -569,7 +569,7 @@ export default class Calculator extends CalculatorBase { w: w * .75, o: i, } - this.animations[aid+1] = animate; + this.animations[aid++] = animate; // eslint-disable-line no-useless-assignment } else if (a == 'b') { for (let i = 0; i < SD.length; ++i) { const a = SD[i]; @@ -581,7 +581,7 @@ export default class Calculator extends CalculatorBase { f: i ? this.bgColor : c, w: w * .75, } - this.animations[aid+1] = animate; + this.animations[aid++] = animate; } } }