From 323dcdc24ca6c17a065f5aee4e9ea48c0e45ec11 Mon Sep 17 00:00:00 2001 From: Abhishek Chandel <> Date: Thu, 6 Apr 2023 22:31:59 +0530 Subject: [PATCH 1/8] rotation along path with chain to path callback --- packages/maker.js/package-lock.json | 446 ++++++++++++++++++--------- packages/maker.js/src/core/chain.ts | 118 ++++++- packages/maker.js/src/core/layout.ts | 14 +- packages/maker.js/src/core/maker.ts | 16 + 4 files changed, 439 insertions(+), 155 deletions(-) diff --git a/packages/maker.js/package-lock.json b/packages/maker.js/package-lock.json index bdf605020..0b0329d1a 100644 --- a/packages/maker.js/package-lock.json +++ b/packages/maker.js/package-lock.json @@ -1,140 +1,310 @@ { - "name": "makerjs", - "version": "0.17.6", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@danmarshall/jscad-typings": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@danmarshall/jscad-typings/-/jscad-typings-1.0.0.tgz", - "integrity": "sha512-MGGIGDItK2UQSsz7yTrXErQXDAFXR3UPxyQ7WZ5RHOwnv60CBXjmkJlXYMYPkSvo+7fUuQL2/ODcvECtc/fi9g==" - }, - "@jscad/csg": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@jscad/csg/-/csg-0.3.8.tgz", - "integrity": "sha512-mWbJI7zVv+2aYUXrQkTrjiNQZ5HFEAhbNK3HObm3m6d2+k4OffIzFlqmEYKUp0xE+K8rokSOcrTIGBqfzlJR7A==", - "dev": true - }, - "@jscad/io-utils": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@jscad/io-utils/-/io-utils-0.1.3.tgz", - "integrity": "sha512-aCVUZovewI4njtEJ1fvjhasqd8EHIzQaPb88MtFWf/ff1NdGOu/vRH3yGG8vu0NZektGEDCKp028g2nTBL7aFg==", - "dev": true - }, - "@jscad/stl-serializer": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@jscad/stl-serializer/-/stl-serializer-0.1.3.tgz", - "integrity": "sha512-Zdrluf82TnBL6hHm28DfQGpjHHuN69XONH8SYwF0x3gnr5q+281erj+NRgH5odHYuxmetVNgoT5G1c654cIJag==", - "dev": true, - "requires": { - "@jscad/io-utils": "^0.1.3" - } - }, - "@types/bezier-js": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@types/bezier-js/-/bezier-js-0.0.6.tgz", - "integrity": "sha1-DZdtaBY8SVUzLveYohoLPWOB0Ss=" - }, - "@types/graham_scan": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/@types/graham_scan/-/graham_scan-1.0.28.tgz", - "integrity": "sha1-dC6BZzZeViorca51Ov4jXqpP7ew=", - "dev": true - }, - "@types/node": { - "version": "7.10.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.14.tgz", - "integrity": "sha512-29GS75BE8asnTno3yB6ubOJOO0FboExEqNJy4bpz0GSmW/8wPTNL4h9h63c6s1uTrOopCmJYe/4yJLh5r92ZUA==" - }, - "@types/opentype.js": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@types/opentype.js/-/opentype.js-0.7.2.tgz", - "integrity": "sha512-Riz6WyBUBEFs7YqSsJya3SbDHJZ6BmMkY7bzNoue6rtwj+RNilLc+mgOX/eJ0Y0asq16FSU6DatBeOg8ZMy2UQ==" - }, - "@types/pdfkit": { - "version": "0.7.36", - "resolved": "https://registry.npmjs.org/@types/pdfkit/-/pdfkit-0.7.36.tgz", - "integrity": "sha512-9eRA6MuW+n78yU3HhoIrDxjyAX2++B5MpLDYqHOnaRTquCw+5sYXT+QN8E1eSaxvNUwlRfU3tOm4UzTeGWmBqg==", - "requires": { - "@types/node": "*" - } - }, - "bezier-js": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/bezier-js/-/bezier-js-2.6.1.tgz", - "integrity": "sha512-jelZM33eNzcZ9snJ/5HqJLw3IzXvA8RFcBjkdOB8SDYyOvW8Y2tTosojAiBTnD1MhbHoWUYNbxUXxBl61TxbRg==" - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" - }, - "dxf-parser-typings": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/dxf-parser-typings/-/dxf-parser-typings-1.3.0.tgz", - "integrity": "sha512-ctHwtmHYPNLOHh7Wd8VAjB5Sn+NUJvyLWcJHM33JvdbSmzSbhacAC1Fd5FELyW3M0Pb7/ImVpGdWVk4sg3IDhw==", - "dev": true, - "requires": { - "indefinitely-typed": "^1.0.2" - } - }, - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", - "dev": true - }, - "graham_scan": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/graham_scan/-/graham_scan-1.0.4.tgz", - "integrity": "sha1-OZZR3R+DU+GID1nqjl+Uud9Mkoo=" - }, - "indefinitely-typed": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/indefinitely-typed/-/indefinitely-typed-1.1.0.tgz", - "integrity": "sha512-giaI0hCj+wWZIZZLsmWHI+LrM4Hwc+rEZ/VrgCafKePcnE42fLnQTFt4xspqLin8fCjI5WnQr2fep/0EFqjaxw==", - "dev": true, - "requires": { - "fs-extra": "^7.0.0", - "minimist": "^1.2.5" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "kdbush": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-2.0.1.tgz", - "integrity": "sha512-9KqSdmWCkBIisFIGclT0FRagKhI7IVbMyUjsxCFG0Ly1Dg6whlxJ7b9lrq8ifk3X/fGeJzok1R75LQfZTfA5zQ==" - }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - } - } + "name": "makerjs", + "version": "0.17.6", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "makerjs", + "version": "0.17.6", + "license": "Apache-2.0", + "dependencies": { + "@danmarshall/jscad-typings": "^1.0.0", + "@types/bezier-js": "^0.0.6", + "@types/node": "^7.0.5", + "@types/opentype.js": "^0.7.0", + "@types/pdfkit": "^0.7.34", + "bezier-js": "^2.1.0", + "clone": "^1.0.2", + "graham_scan": "^1.0.4", + "kdbush": "^2.0.1" + }, + "devDependencies": { + "@jscad/csg": "^0.3.7", + "@jscad/stl-serializer": "^0.1.0", + "@types/graham_scan": "^1.0.28", + "dxf-parser-typings": "^1.3.0" + } + }, + "node_modules/@danmarshall/jscad-typings": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@danmarshall/jscad-typings/-/jscad-typings-1.0.0.tgz", + "integrity": "sha512-MGGIGDItK2UQSsz7yTrXErQXDAFXR3UPxyQ7WZ5RHOwnv60CBXjmkJlXYMYPkSvo+7fUuQL2/ODcvECtc/fi9g==" + }, + "node_modules/@jscad/csg": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jscad/csg/-/csg-0.3.8.tgz", + "integrity": "sha512-mWbJI7zVv+2aYUXrQkTrjiNQZ5HFEAhbNK3HObm3m6d2+k4OffIzFlqmEYKUp0xE+K8rokSOcrTIGBqfzlJR7A==", + "deprecated": "See @jscad/modeling", + "dev": true + }, + "node_modules/@jscad/io-utils": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@jscad/io-utils/-/io-utils-0.1.3.tgz", + "integrity": "sha512-aCVUZovewI4njtEJ1fvjhasqd8EHIzQaPb88MtFWf/ff1NdGOu/vRH3yGG8vu0NZektGEDCKp028g2nTBL7aFg==", + "dev": true + }, + "node_modules/@jscad/stl-serializer": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@jscad/stl-serializer/-/stl-serializer-0.1.3.tgz", + "integrity": "sha512-Zdrluf82TnBL6hHm28DfQGpjHHuN69XONH8SYwF0x3gnr5q+281erj+NRgH5odHYuxmetVNgoT5G1c654cIJag==", + "dev": true, + "dependencies": { + "@jscad/io-utils": "^0.1.3" + } + }, + "node_modules/@types/bezier-js": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@types/bezier-js/-/bezier-js-0.0.6.tgz", + "integrity": "sha1-DZdtaBY8SVUzLveYohoLPWOB0Ss=" + }, + "node_modules/@types/graham_scan": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/@types/graham_scan/-/graham_scan-1.0.28.tgz", + "integrity": "sha1-dC6BZzZeViorca51Ov4jXqpP7ew=", + "dev": true + }, + "node_modules/@types/node": { + "version": "7.10.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.14.tgz", + "integrity": "sha512-29GS75BE8asnTno3yB6ubOJOO0FboExEqNJy4bpz0GSmW/8wPTNL4h9h63c6s1uTrOopCmJYe/4yJLh5r92ZUA==" + }, + "node_modules/@types/opentype.js": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@types/opentype.js/-/opentype.js-0.7.2.tgz", + "integrity": "sha512-Riz6WyBUBEFs7YqSsJya3SbDHJZ6BmMkY7bzNoue6rtwj+RNilLc+mgOX/eJ0Y0asq16FSU6DatBeOg8ZMy2UQ==" + }, + "node_modules/@types/pdfkit": { + "version": "0.7.36", + "resolved": "https://registry.npmjs.org/@types/pdfkit/-/pdfkit-0.7.36.tgz", + "integrity": "sha512-9eRA6MuW+n78yU3HhoIrDxjyAX2++B5MpLDYqHOnaRTquCw+5sYXT+QN8E1eSaxvNUwlRfU3tOm4UzTeGWmBqg==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/bezier-js": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/bezier-js/-/bezier-js-2.6.1.tgz", + "integrity": "sha512-jelZM33eNzcZ9snJ/5HqJLw3IzXvA8RFcBjkdOB8SDYyOvW8Y2tTosojAiBTnD1MhbHoWUYNbxUXxBl61TxbRg==" + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/dxf-parser-typings": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/dxf-parser-typings/-/dxf-parser-typings-1.3.0.tgz", + "integrity": "sha512-ctHwtmHYPNLOHh7Wd8VAjB5Sn+NUJvyLWcJHM33JvdbSmzSbhacAC1Fd5FELyW3M0Pb7/ImVpGdWVk4sg3IDhw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "indefinitely-typed": "^1.0.2" + } + }, + "node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "node_modules/graham_scan": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/graham_scan/-/graham_scan-1.0.4.tgz", + "integrity": "sha1-OZZR3R+DU+GID1nqjl+Uud9Mkoo=" + }, + "node_modules/indefinitely-typed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/indefinitely-typed/-/indefinitely-typed-1.1.0.tgz", + "integrity": "sha512-giaI0hCj+wWZIZZLsmWHI+LrM4Hwc+rEZ/VrgCafKePcnE42fLnQTFt4xspqLin8fCjI5WnQr2fep/0EFqjaxw==", + "dev": true, + "dependencies": { + "fs-extra": "^7.0.0", + "minimist": "^1.2.5" + }, + "bin": { + "indefinitely-typed": "bin/cli2.js" + } + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/kdbush": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-2.0.1.tgz", + "integrity": "sha512-9KqSdmWCkBIisFIGclT0FRagKhI7IVbMyUjsxCFG0Ly1Dg6whlxJ7b9lrq8ifk3X/fGeJzok1R75LQfZTfA5zQ==" + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + } + }, + "dependencies": { + "@danmarshall/jscad-typings": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@danmarshall/jscad-typings/-/jscad-typings-1.0.0.tgz", + "integrity": "sha512-MGGIGDItK2UQSsz7yTrXErQXDAFXR3UPxyQ7WZ5RHOwnv60CBXjmkJlXYMYPkSvo+7fUuQL2/ODcvECtc/fi9g==" + }, + "@jscad/csg": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jscad/csg/-/csg-0.3.8.tgz", + "integrity": "sha512-mWbJI7zVv+2aYUXrQkTrjiNQZ5HFEAhbNK3HObm3m6d2+k4OffIzFlqmEYKUp0xE+K8rokSOcrTIGBqfzlJR7A==", + "dev": true + }, + "@jscad/io-utils": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@jscad/io-utils/-/io-utils-0.1.3.tgz", + "integrity": "sha512-aCVUZovewI4njtEJ1fvjhasqd8EHIzQaPb88MtFWf/ff1NdGOu/vRH3yGG8vu0NZektGEDCKp028g2nTBL7aFg==", + "dev": true + }, + "@jscad/stl-serializer": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@jscad/stl-serializer/-/stl-serializer-0.1.3.tgz", + "integrity": "sha512-Zdrluf82TnBL6hHm28DfQGpjHHuN69XONH8SYwF0x3gnr5q+281erj+NRgH5odHYuxmetVNgoT5G1c654cIJag==", + "dev": true, + "requires": { + "@jscad/io-utils": "^0.1.3" + } + }, + "@types/bezier-js": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@types/bezier-js/-/bezier-js-0.0.6.tgz", + "integrity": "sha1-DZdtaBY8SVUzLveYohoLPWOB0Ss=" + }, + "@types/graham_scan": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/@types/graham_scan/-/graham_scan-1.0.28.tgz", + "integrity": "sha1-dC6BZzZeViorca51Ov4jXqpP7ew=", + "dev": true + }, + "@types/node": { + "version": "7.10.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.14.tgz", + "integrity": "sha512-29GS75BE8asnTno3yB6ubOJOO0FboExEqNJy4bpz0GSmW/8wPTNL4h9h63c6s1uTrOopCmJYe/4yJLh5r92ZUA==" + }, + "@types/opentype.js": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@types/opentype.js/-/opentype.js-0.7.2.tgz", + "integrity": "sha512-Riz6WyBUBEFs7YqSsJya3SbDHJZ6BmMkY7bzNoue6rtwj+RNilLc+mgOX/eJ0Y0asq16FSU6DatBeOg8ZMy2UQ==" + }, + "@types/pdfkit": { + "version": "0.7.36", + "resolved": "https://registry.npmjs.org/@types/pdfkit/-/pdfkit-0.7.36.tgz", + "integrity": "sha512-9eRA6MuW+n78yU3HhoIrDxjyAX2++B5MpLDYqHOnaRTquCw+5sYXT+QN8E1eSaxvNUwlRfU3tOm4UzTeGWmBqg==", + "requires": { + "@types/node": "*" + } + }, + "bezier-js": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/bezier-js/-/bezier-js-2.6.1.tgz", + "integrity": "sha512-jelZM33eNzcZ9snJ/5HqJLw3IzXvA8RFcBjkdOB8SDYyOvW8Y2tTosojAiBTnD1MhbHoWUYNbxUXxBl61TxbRg==" + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" + }, + "dxf-parser-typings": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/dxf-parser-typings/-/dxf-parser-typings-1.3.0.tgz", + "integrity": "sha512-ctHwtmHYPNLOHh7Wd8VAjB5Sn+NUJvyLWcJHM33JvdbSmzSbhacAC1Fd5FELyW3M0Pb7/ImVpGdWVk4sg3IDhw==", + "dev": true, + "requires": { + "indefinitely-typed": "^1.0.2" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "graham_scan": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/graham_scan/-/graham_scan-1.0.4.tgz", + "integrity": "sha1-OZZR3R+DU+GID1nqjl+Uud9Mkoo=" + }, + "indefinitely-typed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/indefinitely-typed/-/indefinitely-typed-1.1.0.tgz", + "integrity": "sha512-giaI0hCj+wWZIZZLsmWHI+LrM4Hwc+rEZ/VrgCafKePcnE42fLnQTFt4xspqLin8fCjI5WnQr2fep/0EFqjaxw==", + "dev": true, + "requires": { + "fs-extra": "^7.0.0", + "minimist": "^1.2.5" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "kdbush": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-2.0.1.tgz", + "integrity": "sha512-9KqSdmWCkBIisFIGclT0FRagKhI7IVbMyUjsxCFG0Ly1Dg6whlxJ7b9lrq8ifk3X/fGeJzok1R75LQfZTfA5zQ==" + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + } + } } diff --git a/packages/maker.js/src/core/chain.ts b/packages/maker.js/src/core/chain.ts index e666af7fa..e17bc9fed 100644 --- a/packages/maker.js/src/core/chain.ts +++ b/packages/maker.js/src/core/chain.ts @@ -560,9 +560,9 @@ namespace MakerJs.chain { /** * @private */ - function removeDuplicateEnds(endless: boolean, points: IPoint[]) { + function removeDuplicateEnds(endless: boolean, points: IWalkChainPoints[]) { if (!endless || points.length < 2) return; - if (measure.isPointEqual(points[0], points[points.length - 1], .00001)) { + if (measure.isPointEqual(points[0].point, points[points.length - 1].point, .00001)) { points.pop(); } } @@ -575,11 +575,44 @@ namespace MakerJs.chain { * @param maxPoints Maximum number of points to retrieve. * @returns Array of points which are on the chain spread at a uniform interval. */ - export function toPoints(chainContext: IChain, distanceOrDistances: number | number[], maxPoints?: number): IPoint[] { - var result: IPoint[] = []; + export function toPoints(chainContext: IChain, distanceOrDistances: number | number[], maxPoints?: number): IPoint[]; + + /** + * Get points along a chain of paths. + * + * @param chainContext Chain of paths to get points from. + * @param distance Numeric distance along the chain between points, or numeric array of distances along the chain between each point. + * @param callback Callback function when points are found. + * @param maxPoints Maximum number of points to retrieve. + * @returns Array of points which are on the chain spread at a uniform interval. + */ + export function toPoints(chainContext: IChain, distanceOrDistances: number | number[], callback: IChainPointsCallback, maxPoints?: number): IPoint[]; + + export function toPoints(chainContext: IChain, distanceOrDistances: number | number[], ... args: any): IPoint[] { + + var maxPoints: number; + var callback: IChainPointsCallback; + + switch (args.length) { + case 1: + if (typeof args[0] === 'function') { + callback = args[0]; + } else { + maxPoints = args[0]; + } + break; + + case 2: + callback = args[0]; + maxPoints = args[1]; + break; + } + + var result: IWalkChainPoints[] = []; var di = 0; var t = 0; var distanceArray: number[]; + let breakLoop = false; if (Array.isArray(distanceOrDistances)) { distanceArray = distanceOrDistances as number[]; @@ -595,10 +628,23 @@ namespace MakerJs.chain { if (link.reversed) { r = 1 - r; } + let chainPoint: IWalkChainPoints = { + point: point.add(point.middle(wp.pathContext, r), wp.offset), + pathContext: wp.pathContext, + modelContext: wp.modelContext, + pathId: wp.pathId, + layer: wp.layer, + offset: wp.offset, + route: wp.route, + routeKey: wp.routeKey, + endPoints: link.endPoints + }; + result.push(chainPoint); - result.push(point.add(point.middle(wp.pathContext, r), wp.offset)); - - if (maxPoints && result.length >= maxPoints) return result; + if (maxPoints && result.length >= maxPoints) { + breakLoop = true; + break; + } var distance: number; if (distanceArray) { @@ -606,7 +652,8 @@ namespace MakerJs.chain { di++; if (di > distanceArray.length) { - return result; + breakLoop; + break; } } else { @@ -615,12 +662,13 @@ namespace MakerJs.chain { t += distance; } - t -= len; + if(breakLoop) break; } removeDuplicateEnds(chainContext.endless, result); - return result; + if (callback) callback(result); + return result.map(x => x.point); } /** @@ -630,8 +678,35 @@ namespace MakerJs.chain { * @param maxArcFacet The maximum length between points on an arc or circle. * @returns Array of points which are on the chain. */ - export function toKeyPoints(chainContext: IChain, maxArcFacet?: number): IPoint[] { - var result: IPoint[] = []; + export function toKeyPoints(chainContext: IChain, maxArcFacet?: number): IPoint[]; + + /** + * Get key points (a minimal a number of points) along a chain of paths. + * + * @param chainContext Chain of paths to get points from. + * @param maxArcFacet The maximum length between points on an arc or circle. + * @param callback Callback function when points are found. + * @returns Array of points which are on the chain. + */ + export function toKeyPoints(chainContext: IChain, callback: IWalkChainPoints, maxArcFacet?: number): IPoint[]; + export function toKeyPoints(chainContext: IChain, ... args: any): IPoint[] { + var maxArcFacet: number; + var callback: IChainPointsCallback; + switch (args.length) { + case 1: + if (typeof args[0] === 'function') { + callback = args[0]; + } else { + maxArcFacet = args[0]; + } + break; + + case 2: + callback = args[0]; + maxArcFacet = args[1]; + break; + } + var result: IWalkChainPoints[] = []; for (var i = 0; i < chainContext.links.length; i++) { var link = chainContext.links[i]; @@ -646,12 +721,27 @@ namespace MakerJs.chain { } var offsetPathPoints = keyPoints.map(p => point.add(p, wp.offset)); - result.push.apply(result, offsetPathPoints); + + var chainPoints = offsetPathPoints.map(p=> { + return { + point: p, + pathContext: wp.pathContext, + modelContext: wp.modelContext, + pathId: wp.pathId, + layer: wp.layer, + offset: wp.offset, + route: wp.route, + routeKey: wp.routeKey, + endPoints: link.endPoints + } + }); + result.push.apply(result, chainPoints); } } removeDuplicateEnds(chainContext.endless, result); - return result; + if (callback) callback(result); + return result.map(x=> x.point); } } diff --git a/packages/maker.js/src/core/layout.ts b/packages/maker.js/src/core/layout.ts index d8fa09d25..03e2fd162 100644 --- a/packages/maker.js/src/core/layout.ts +++ b/packages/maker.js/src/core/layout.ts @@ -181,9 +181,10 @@ namespace MakerJs.layout { * @param reversed Flag to travel along the chain in reverse. Default is false. * @param contain Flag to contain the children layout within the length of the chain. Default is false. * @param rotate Flag to rotate the child to mitered angle. Default is true. + * @param rotateAlongPath Flag to rotate the child along the layout path. Default is false. Works only if rotate is set true. * @returns The parentModel, for cascading. */ - export function childrenOnChain(parentModel: IModel, onChain: IChain, baseline = 0, reversed = false, contain = false, rotated = true) { + export function childrenOnChain(parentModel: IModel, onChain: IChain, baseline = 0, reversed = false, contain = false, rotated = true, rotateAlongPath = false) { var result = getChildPlacement(parentModel, baseline); var cpa = result.cpa; @@ -206,8 +207,15 @@ namespace MakerJs.layout { relatives.shift(); } + var alongPathAngles: number[] = []; //chain.toPoints always follows the chain in its order, from beginning to end. This is why we needed to contort the points input - points = chain.toPoints(onChain, relatives); + points = chain.toPoints(onChain, relatives, + (chainPoints)=> { + for(let i = 0; i < chainPoints.length; i++) + { + alongPathAngles.push(angle.ofPointInDegrees(chainPoints[i].endPoints[0], chainPoints[i].endPoints[0])); + } + }); if (points.length < cpa.length) { //add last point of chain, since our distances exceeded the chain @@ -231,7 +239,7 @@ namespace MakerJs.layout { if (cpa.length > 1) { cpa.forEach((cp, i) => { - cp.angle = angles[i]; + cp.angle = rotateAlongPath ? alongPathAngles[i] : angles[i]; cp.origin = points[i]; }); } else { diff --git a/packages/maker.js/src/core/maker.ts b/packages/maker.js/src/core/maker.ts index 589496061..294c0c5e0 100644 --- a/packages/maker.js/src/core/maker.ts +++ b/packages/maker.js/src/core/maker.ts @@ -782,6 +782,22 @@ namespace MakerJs { alternateDirection?: boolean; } + /** + * A point reference in a path. + */ + export interface IWalkChainPoints extends IWalkPath{ + point: IPoint; + endPoints: IPoint[]; + } + + /** + * Callback signature for chain.toPoints(). + */ + export interface IChainPointsCallback { + + (chainPoints: IWalkChainPoints[]): void; + } + /** * Reference to a model within a model. */ From 68f0f83302b398cc4272af77104d560a216be180 Mon Sep 17 00:00:00 2001 From: Abhishek Chandel <> Date: Mon, 10 Apr 2023 17:20:29 +0530 Subject: [PATCH 2/8] fixed logic --- docs/demos/package-lock.json | 1 - docs/target/js/browser.maker.js | 122 +++-- packages/docs/package-lock.json | 632 ++++++++++++++++++-------- packages/maker.js/src/core/chain.ts | 10 +- packages/maker.js/src/core/layout.ts | 2 +- packages/playground/package-lock.json | 114 +---- 6 files changed, 533 insertions(+), 348 deletions(-) diff --git a/docs/demos/package-lock.json b/docs/demos/package-lock.json index 3a796d7ee..0cc0f1701 100644 --- a/docs/demos/package-lock.json +++ b/docs/demos/package-lock.json @@ -33,7 +33,6 @@ "@types/opentype.js": "^0.7.0", "detective": "^5.2.0", "highlight.js": "^11.5.1", - "makerjs": "*", "marked": "^4.0.14", "opentype.js": "^0.9.0" } diff --git a/docs/target/js/browser.maker.js b/docs/target/js/browser.maker.js index d3a56a937..e9ec5f517 100644 --- a/docs/target/js/browser.maker.js +++ b/docs/target/js/browser.maker.js @@ -6739,23 +6739,36 @@ var MakerJs; function removeDuplicateEnds(endless, points) { if (!endless || points.length < 2) return; - if (MakerJs.measure.isPointEqual(points[0], points[points.length - 1], .00001)) { + if (MakerJs.measure.isPointEqual(points[0].point, points[points.length - 1].point, .00001)) { points.pop(); } } - /** - * Get points along a chain of paths. - * - * @param chainContext Chain of paths to get points from. - * @param distance Numeric distance along the chain between points, or numeric array of distances along the chain between each point. - * @param maxPoints Maximum number of points to retrieve. - * @returns Array of points which are on the chain spread at a uniform interval. - */ - function toPoints(chainContext, distanceOrDistances, maxPoints) { + function toPoints(chainContext, distanceOrDistances) { + var args = []; + for (var _i = 2; _i < arguments.length; _i++) { + args[_i - 2] = arguments[_i]; + } + var maxPoints; + var callback; + switch (args.length) { + case 1: + if (typeof args[0] === 'function') { + callback = args[0]; + } + else { + maxPoints = args[0]; + } + break; + case 2: + callback = args[0]; + maxPoints = args[1]; + break; + } var result = []; var di = 0; var t = 0; var distanceArray; + var breakLoop = false; if (Array.isArray(distanceOrDistances)) { distanceArray = distanceOrDistances; } @@ -6768,15 +6781,29 @@ var MakerJs; if (link.reversed) { r = 1 - r; } - result.push(MakerJs.point.add(MakerJs.point.middle(wp.pathContext, r), wp.offset)); - if (maxPoints && result.length >= maxPoints) - return result; + var chainPoint = { + point: MakerJs.point.add(MakerJs.point.middle(wp.pathContext, r), wp.offset), + pathContext: wp.pathContext, + modelContext: wp.modelContext, + pathId: wp.pathId, + layer: wp.layer, + offset: wp.offset, + route: wp.route, + routeKey: wp.routeKey, + endPoints: link.endPoints + }; + result.push(chainPoint); + if (maxPoints && result.length >= maxPoints) { + breakLoop = true; + break; + } var distance; if (distanceArray) { distance = distanceArray[di]; di++; if (di > distanceArray.length) { - return result; + breakLoop; + break; } } else { @@ -6785,19 +6812,36 @@ var MakerJs; t += distance; } t -= len; + if (breakLoop) + break; } removeDuplicateEnds(chainContext.endless, result); - return result; + if (callback) + callback(result); + return result.map(function (x) { return x.point; }); } chain.toPoints = toPoints; - /** - * Get key points (a minimal a number of points) along a chain of paths. - * - * @param chainContext Chain of paths to get points from. - * @param maxArcFacet The maximum length between points on an arc or circle. - * @returns Array of points which are on the chain. - */ - function toKeyPoints(chainContext, maxArcFacet) { + function toKeyPoints(chainContext) { + var args = []; + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; + } + var maxArcFacet; + var callback; + switch (args.length) { + case 1: + if (typeof args[0] === 'function') { + callback = args[0]; + } + else { + maxArcFacet = args[0]; + } + break; + case 2: + callback = args[0]; + maxArcFacet = args[1]; + break; + } var result = []; for (var i = 0; i < chainContext.links.length; i++) { var link = chainContext.links[i]; @@ -6811,11 +6855,26 @@ var MakerJs; keyPoints.shift(); } var offsetPathPoints = keyPoints.map(function (p) { return MakerJs.point.add(p, wp.offset); }); - result.push.apply(result, offsetPathPoints); + var chainPoints = offsetPathPoints.map(function (p) { + return { + point: p, + pathContext: wp.pathContext, + modelContext: wp.modelContext, + pathId: wp.pathId, + layer: wp.layer, + offset: wp.offset, + route: wp.route, + routeKey: wp.routeKey, + endPoints: link.endPoints + }; + }); + result.push.apply(result, chainPoints); } } removeDuplicateEnds(chainContext.endless, result); - return result; + if (callback) + callback(result); + return result.map(function (x) { return x.point; }); } chain.toKeyPoints = toKeyPoints; })(chain = MakerJs.chain || (MakerJs.chain = {})); @@ -8507,13 +8566,15 @@ var MakerJs; * @param reversed Flag to travel along the chain in reverse. Default is false. * @param contain Flag to contain the children layout within the length of the chain. Default is false. * @param rotate Flag to rotate the child to mitered angle. Default is true. + * @param rotateAlongPath Flag to rotate the child along the layout path. Default is false. Works only if rotate is set true. * @returns The parentModel, for cascading. */ - function childrenOnChain(parentModel, onChain, baseline, reversed, contain, rotated) { + function childrenOnChain(parentModel, onChain, baseline, reversed, contain, rotated, rotateAlongPath) { if (baseline === void 0) { baseline = 0; } if (reversed === void 0) { reversed = false; } if (contain === void 0) { contain = false; } if (rotated === void 0) { rotated = true; } + if (rotateAlongPath === void 0) { rotateAlongPath = false; } var result = getChildPlacement(parentModel, baseline); var cpa = result.cpa; var chainLength = onChain.pathLength; @@ -8532,8 +8593,13 @@ var MakerJs; else { relatives.shift(); } + var alongPathAngles = []; //chain.toPoints always follows the chain in its order, from beginning to end. This is why we needed to contort the points input - points = MakerJs.chain.toPoints(onChain, relatives); + points = MakerJs.chain.toPoints(onChain, relatives, function (chainPoints) { + for (var i = 0; i < chainPoints.length; i++) { + alongPathAngles.push(MakerJs.angle.ofPointInDegrees(chainPoints[i].endPoints[0], chainPoints[i].endPoints[0])); + } + }); if (points.length < cpa.length) { //add last point of chain, since our distances exceeded the chain var endLink = onChain.links[onChain.links.length - 1]; @@ -8554,7 +8620,7 @@ var MakerJs; var angles = miterAngles(points, -90); if (cpa.length > 1) { cpa.forEach(function (cp, i) { - cp.angle = angles[i]; + cp.angle = rotateAlongPath ? alongPathAngles[i] : angles[i]; cp.origin = points[i]; }); } diff --git a/packages/docs/package-lock.json b/packages/docs/package-lock.json index edc639586..902715464 100644 --- a/packages/docs/package-lock.json +++ b/packages/docs/package-lock.json @@ -1,201 +1,435 @@ { - "name": "docs", - "version": "1.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@danmarshall/jscad-typings": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@danmarshall/jscad-typings/-/jscad-typings-1.0.0.tgz", - "integrity": "sha512-MGGIGDItK2UQSsz7yTrXErQXDAFXR3UPxyQ7WZ5RHOwnv60CBXjmkJlXYMYPkSvo+7fUuQL2/ODcvECtc/fi9g==", - "dev": true - }, - "@types/bezier-js": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/@types/bezier-js/-/bezier-js-0.0.7.tgz", - "integrity": "sha512-N+/UZFYVp9ka8Xby7hZSHsXqKm6FJIXK/+BRH0BpEfb18aVTtRBPzGIQfDRexAZPYgtWupqP6afapmYYKjvWoQ==", - "dev": true - }, - "@types/graham_scan": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/@types/graham_scan/-/graham_scan-1.0.28.tgz", - "integrity": "sha1-dC6BZzZeViorca51Ov4jXqpP7ew=", - "dev": true - }, - "@types/node": { - "version": "14.14.20", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.20.tgz", - "integrity": "sha512-Y93R97Ouif9JEOWPIUyU+eyIdyRqQR0I8Ez1dzku4hDx34NWh4HbtIc3WNzwB1Y9ULvNGeu5B8h8bVL5cAk4/A==", - "dev": true - }, - "@types/opentype.js": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@types/opentype.js/-/opentype.js-0.7.2.tgz", - "integrity": "sha512-Riz6WyBUBEFs7YqSsJya3SbDHJZ6BmMkY7bzNoue6rtwj+RNilLc+mgOX/eJ0Y0asq16FSU6DatBeOg8ZMy2UQ==", - "dev": true - }, - "@types/pdfkit": { - "version": "0.7.36", - "resolved": "https://registry.npmjs.org/@types/pdfkit/-/pdfkit-0.7.36.tgz", - "integrity": "sha512-9eRA6MuW+n78yU3HhoIrDxjyAX2++B5MpLDYqHOnaRTquCw+5sYXT+QN8E1eSaxvNUwlRfU3tOm4UzTeGWmBqg==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "dxf-parser-typings": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/dxf-parser-typings/-/dxf-parser-typings-1.3.0.tgz", - "integrity": "sha512-ctHwtmHYPNLOHh7Wd8VAjB5Sn+NUJvyLWcJHM33JvdbSmzSbhacAC1Fd5FELyW3M0Pb7/ImVpGdWVk4sg3IDhw==", - "dev": true, - "requires": { - "indefinitely-typed": "^1.0.2" - } - }, - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", - "dev": true - }, - "indefinitely-typed": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/indefinitely-typed/-/indefinitely-typed-1.1.0.tgz", - "integrity": "sha512-giaI0hCj+wWZIZZLsmWHI+LrM4Hwc+rEZ/VrgCafKePcnE42fLnQTFt4xspqLin8fCjI5WnQr2fep/0EFqjaxw==", - "dev": true, - "requires": { - "fs-extra": "^7.0.0", - "minimist": "^1.2.5" - } - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - } - } + "name": "docs", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "docs", + "version": "1.0.0", + "license": "Apache-2.0", + "devDependencies": { + "@danmarshall/jscad-typings": "^1.0.0", + "@types/bezier-js": "0.0.7", + "@types/graham_scan": "^1.0.28", + "@types/opentype.js": "^0.7.0", + "@types/pdfkit": "^0.7.36", + "dxf-parser-typings": "^1.3.0", + "rimraf": "^2.6.2" + } + }, + "node_modules/@danmarshall/jscad-typings": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@danmarshall/jscad-typings/-/jscad-typings-1.0.0.tgz", + "integrity": "sha512-MGGIGDItK2UQSsz7yTrXErQXDAFXR3UPxyQ7WZ5RHOwnv60CBXjmkJlXYMYPkSvo+7fUuQL2/ODcvECtc/fi9g==", + "dev": true + }, + "node_modules/@types/bezier-js": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@types/bezier-js/-/bezier-js-0.0.7.tgz", + "integrity": "sha512-N+/UZFYVp9ka8Xby7hZSHsXqKm6FJIXK/+BRH0BpEfb18aVTtRBPzGIQfDRexAZPYgtWupqP6afapmYYKjvWoQ==", + "dev": true + }, + "node_modules/@types/graham_scan": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/@types/graham_scan/-/graham_scan-1.0.28.tgz", + "integrity": "sha1-dC6BZzZeViorca51Ov4jXqpP7ew=", + "dev": true + }, + "node_modules/@types/node": { + "version": "14.14.20", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.20.tgz", + "integrity": "sha512-Y93R97Ouif9JEOWPIUyU+eyIdyRqQR0I8Ez1dzku4hDx34NWh4HbtIc3WNzwB1Y9ULvNGeu5B8h8bVL5cAk4/A==", + "dev": true + }, + "node_modules/@types/opentype.js": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@types/opentype.js/-/opentype.js-0.7.2.tgz", + "integrity": "sha512-Riz6WyBUBEFs7YqSsJya3SbDHJZ6BmMkY7bzNoue6rtwj+RNilLc+mgOX/eJ0Y0asq16FSU6DatBeOg8ZMy2UQ==", + "dev": true + }, + "node_modules/@types/pdfkit": { + "version": "0.7.36", + "resolved": "https://registry.npmjs.org/@types/pdfkit/-/pdfkit-0.7.36.tgz", + "integrity": "sha512-9eRA6MuW+n78yU3HhoIrDxjyAX2++B5MpLDYqHOnaRTquCw+5sYXT+QN8E1eSaxvNUwlRfU3tOm4UzTeGWmBqg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/dxf-parser-typings": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/dxf-parser-typings/-/dxf-parser-typings-1.3.0.tgz", + "integrity": "sha512-ctHwtmHYPNLOHh7Wd8VAjB5Sn+NUJvyLWcJHM33JvdbSmzSbhacAC1Fd5FELyW3M0Pb7/ImVpGdWVk4sg3IDhw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "indefinitely-typed": "^1.0.2" + } + }, + "node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "node_modules/indefinitely-typed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/indefinitely-typed/-/indefinitely-typed-1.1.0.tgz", + "integrity": "sha512-giaI0hCj+wWZIZZLsmWHI+LrM4Hwc+rEZ/VrgCafKePcnE42fLnQTFt4xspqLin8fCjI5WnQr2fep/0EFqjaxw==", + "dev": true, + "dependencies": { + "fs-extra": "^7.0.0", + "minimist": "^1.2.5" + }, + "bin": { + "indefinitely-typed": "bin/cli2.js" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + } + }, + "dependencies": { + "@danmarshall/jscad-typings": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@danmarshall/jscad-typings/-/jscad-typings-1.0.0.tgz", + "integrity": "sha512-MGGIGDItK2UQSsz7yTrXErQXDAFXR3UPxyQ7WZ5RHOwnv60CBXjmkJlXYMYPkSvo+7fUuQL2/ODcvECtc/fi9g==", + "dev": true + }, + "@types/bezier-js": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@types/bezier-js/-/bezier-js-0.0.7.tgz", + "integrity": "sha512-N+/UZFYVp9ka8Xby7hZSHsXqKm6FJIXK/+BRH0BpEfb18aVTtRBPzGIQfDRexAZPYgtWupqP6afapmYYKjvWoQ==", + "dev": true + }, + "@types/graham_scan": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/@types/graham_scan/-/graham_scan-1.0.28.tgz", + "integrity": "sha1-dC6BZzZeViorca51Ov4jXqpP7ew=", + "dev": true + }, + "@types/node": { + "version": "14.14.20", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.20.tgz", + "integrity": "sha512-Y93R97Ouif9JEOWPIUyU+eyIdyRqQR0I8Ez1dzku4hDx34NWh4HbtIc3WNzwB1Y9ULvNGeu5B8h8bVL5cAk4/A==", + "dev": true + }, + "@types/opentype.js": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@types/opentype.js/-/opentype.js-0.7.2.tgz", + "integrity": "sha512-Riz6WyBUBEFs7YqSsJya3SbDHJZ6BmMkY7bzNoue6rtwj+RNilLc+mgOX/eJ0Y0asq16FSU6DatBeOg8ZMy2UQ==", + "dev": true + }, + "@types/pdfkit": { + "version": "0.7.36", + "resolved": "https://registry.npmjs.org/@types/pdfkit/-/pdfkit-0.7.36.tgz", + "integrity": "sha512-9eRA6MuW+n78yU3HhoIrDxjyAX2++B5MpLDYqHOnaRTquCw+5sYXT+QN8E1eSaxvNUwlRfU3tOm4UzTeGWmBqg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "dxf-parser-typings": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/dxf-parser-typings/-/dxf-parser-typings-1.3.0.tgz", + "integrity": "sha512-ctHwtmHYPNLOHh7Wd8VAjB5Sn+NUJvyLWcJHM33JvdbSmzSbhacAC1Fd5FELyW3M0Pb7/ImVpGdWVk4sg3IDhw==", + "dev": true, + "requires": { + "indefinitely-typed": "^1.0.2" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "indefinitely-typed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/indefinitely-typed/-/indefinitely-typed-1.1.0.tgz", + "integrity": "sha512-giaI0hCj+wWZIZZLsmWHI+LrM4Hwc+rEZ/VrgCafKePcnE42fLnQTFt4xspqLin8fCjI5WnQr2fep/0EFqjaxw==", + "dev": true, + "requires": { + "fs-extra": "^7.0.0", + "minimist": "^1.2.5" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + } + } } diff --git a/packages/maker.js/src/core/chain.ts b/packages/maker.js/src/core/chain.ts index e17bc9fed..8242b9a33 100644 --- a/packages/maker.js/src/core/chain.ts +++ b/packages/maker.js/src/core/chain.ts @@ -612,7 +612,6 @@ namespace MakerJs.chain { var di = 0; var t = 0; var distanceArray: number[]; - let breakLoop = false; if (Array.isArray(distanceOrDistances)) { distanceArray = distanceOrDistances as number[]; @@ -642,8 +641,8 @@ namespace MakerJs.chain { result.push(chainPoint); if (maxPoints && result.length >= maxPoints) { - breakLoop = true; - break; + if (callback) callback(result); + return result.map(x => x.point); } var distance: number; @@ -652,8 +651,8 @@ namespace MakerJs.chain { di++; if (di > distanceArray.length) { - breakLoop; - break; + if (callback) callback(result); + return result.map(x => x.point); } } else { @@ -663,7 +662,6 @@ namespace MakerJs.chain { t += distance; } t -= len; - if(breakLoop) break; } removeDuplicateEnds(chainContext.endless, result); diff --git a/packages/maker.js/src/core/layout.ts b/packages/maker.js/src/core/layout.ts index 03e2fd162..28985b381 100644 --- a/packages/maker.js/src/core/layout.ts +++ b/packages/maker.js/src/core/layout.ts @@ -213,7 +213,7 @@ namespace MakerJs.layout { (chainPoints)=> { for(let i = 0; i < chainPoints.length; i++) { - alongPathAngles.push(angle.ofPointInDegrees(chainPoints[i].endPoints[0], chainPoints[i].endPoints[0])); + alongPathAngles.push(angle.ofPointInDegrees(chainPoints[i].endPoints[0], chainPoints[i].endPoints[1])); } }); diff --git a/packages/playground/package-lock.json b/packages/playground/package-lock.json index 34fb03c2e..7a6ea2bdd 100644 --- a/packages/playground/package-lock.json +++ b/packages/playground/package-lock.json @@ -12,20 +12,9 @@ "@types/codemirror": "0.0.38", "@types/marked": "^0.0.28", "@types/node": "^7.0.5", - "@types/opentype.js": "^0.7.0", - "makerjs": "*" + "@types/opentype.js": "^0.7.0" } }, - "node_modules/@danmarshall/jscad-typings": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@danmarshall/jscad-typings/-/jscad-typings-1.0.0.tgz", - "integrity": "sha512-MGGIGDItK2UQSsz7yTrXErQXDAFXR3UPxyQ7WZ5RHOwnv60CBXjmkJlXYMYPkSvo+7fUuQL2/ODcvECtc/fi9g==" - }, - "node_modules/@types/bezier-js": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@types/bezier-js/-/bezier-js-0.0.6.tgz", - "integrity": "sha1-DZdtaBY8SVUzLveYohoLPWOB0Ss=" - }, "node_modules/@types/codemirror": { "version": "0.0.38", "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-0.0.38.tgz", @@ -45,66 +34,9 @@ "version": "0.7.2", "resolved": "https://registry.npmjs.org/@types/opentype.js/-/opentype.js-0.7.2.tgz", "integrity": "sha512-Riz6WyBUBEFs7YqSsJya3SbDHJZ6BmMkY7bzNoue6rtwj+RNilLc+mgOX/eJ0Y0asq16FSU6DatBeOg8ZMy2UQ==" - }, - "node_modules/@types/pdfkit": { - "version": "0.7.36", - "resolved": "https://registry.npmjs.org/@types/pdfkit/-/pdfkit-0.7.36.tgz", - "integrity": "sha512-9eRA6MuW+n78yU3HhoIrDxjyAX2++B5MpLDYqHOnaRTquCw+5sYXT+QN8E1eSaxvNUwlRfU3tOm4UzTeGWmBqg==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/bezier-js": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/bezier-js/-/bezier-js-2.6.1.tgz", - "integrity": "sha512-jelZM33eNzcZ9snJ/5HqJLw3IzXvA8RFcBjkdOB8SDYyOvW8Y2tTosojAiBTnD1MhbHoWUYNbxUXxBl61TxbRg==" - }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/graham_scan": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/graham_scan/-/graham_scan-1.0.4.tgz", - "integrity": "sha1-OZZR3R+DU+GID1nqjl+Uud9Mkoo=" - }, - "node_modules/kdbush": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-2.0.1.tgz", - "integrity": "sha512-9KqSdmWCkBIisFIGclT0FRagKhI7IVbMyUjsxCFG0Ly1Dg6whlxJ7b9lrq8ifk3X/fGeJzok1R75LQfZTfA5zQ==" - }, - "node_modules/makerjs": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/makerjs/-/makerjs-0.17.1.tgz", - "integrity": "sha512-kUejVYsSaoz3DwLFknBR4JH9sKOUXUJJcc+cIna6MtnthdyRVtd1jfw1mTFKPg4n+kIWY1nij8jDN66o1dm8rg==", - "dependencies": { - "@danmarshall/jscad-typings": "^1.0.0", - "@types/bezier-js": "^0.0.6", - "@types/node": "^7.0.5", - "@types/opentype.js": "^0.7.0", - "@types/pdfkit": "^0.7.34", - "bezier-js": "^2.1.0", - "clone": "^1.0.2", - "graham_scan": "^1.0.4", - "kdbush": "^2.0.1" - } } }, "dependencies": { - "@danmarshall/jscad-typings": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@danmarshall/jscad-typings/-/jscad-typings-1.0.0.tgz", - "integrity": "sha512-MGGIGDItK2UQSsz7yTrXErQXDAFXR3UPxyQ7WZ5RHOwnv60CBXjmkJlXYMYPkSvo+7fUuQL2/ODcvECtc/fi9g==" - }, - "@types/bezier-js": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@types/bezier-js/-/bezier-js-0.0.6.tgz", - "integrity": "sha1-DZdtaBY8SVUzLveYohoLPWOB0Ss=" - }, "@types/codemirror": { "version": "0.0.38", "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-0.0.38.tgz", @@ -124,50 +56,6 @@ "version": "0.7.2", "resolved": "https://registry.npmjs.org/@types/opentype.js/-/opentype.js-0.7.2.tgz", "integrity": "sha512-Riz6WyBUBEFs7YqSsJya3SbDHJZ6BmMkY7bzNoue6rtwj+RNilLc+mgOX/eJ0Y0asq16FSU6DatBeOg8ZMy2UQ==" - }, - "@types/pdfkit": { - "version": "0.7.36", - "resolved": "https://registry.npmjs.org/@types/pdfkit/-/pdfkit-0.7.36.tgz", - "integrity": "sha512-9eRA6MuW+n78yU3HhoIrDxjyAX2++B5MpLDYqHOnaRTquCw+5sYXT+QN8E1eSaxvNUwlRfU3tOm4UzTeGWmBqg==", - "requires": { - "@types/node": "*" - } - }, - "bezier-js": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/bezier-js/-/bezier-js-2.6.1.tgz", - "integrity": "sha512-jelZM33eNzcZ9snJ/5HqJLw3IzXvA8RFcBjkdOB8SDYyOvW8Y2tTosojAiBTnD1MhbHoWUYNbxUXxBl61TxbRg==" - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" - }, - "graham_scan": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/graham_scan/-/graham_scan-1.0.4.tgz", - "integrity": "sha1-OZZR3R+DU+GID1nqjl+Uud9Mkoo=" - }, - "kdbush": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-2.0.1.tgz", - "integrity": "sha512-9KqSdmWCkBIisFIGclT0FRagKhI7IVbMyUjsxCFG0Ly1Dg6whlxJ7b9lrq8ifk3X/fGeJzok1R75LQfZTfA5zQ==" - }, - "makerjs": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/makerjs/-/makerjs-0.17.1.tgz", - "integrity": "sha512-kUejVYsSaoz3DwLFknBR4JH9sKOUXUJJcc+cIna6MtnthdyRVtd1jfw1mTFKPg4n+kIWY1nij8jDN66o1dm8rg==", - "requires": { - "@danmarshall/jscad-typings": "^1.0.0", - "@types/bezier-js": "^0.0.6", - "@types/node": "^7.0.5", - "@types/opentype.js": "^0.7.0", - "@types/pdfkit": "^0.7.34", - "bezier-js": "^2.1.0", - "clone": "^1.0.2", - "graham_scan": "^1.0.4", - "kdbush": "^2.0.1" - } } } } From adf969b871e51665e8090870baa630cc2cc29611 Mon Sep 17 00:00:00 2001 From: Abhishek Chandel <> Date: Mon, 10 Apr 2023 19:38:28 +0530 Subject: [PATCH 3/8] issue fix --- packages/maker.js/src/core/layout.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/maker.js/src/core/layout.ts b/packages/maker.js/src/core/layout.ts index 28985b381..c3426f6f7 100644 --- a/packages/maker.js/src/core/layout.ts +++ b/packages/maker.js/src/core/layout.ts @@ -239,7 +239,7 @@ namespace MakerJs.layout { if (cpa.length > 1) { cpa.forEach((cp, i) => { - cp.angle = rotateAlongPath ? alongPathAngles[i] : angles[i]; + cp.angle = rotateAlongPath ? alongPathAngles[i+1] : angles[i]; cp.origin = points[i]; }); } else { From 957f805b5087d210eb23ae8102812e30c2fb83fd Mon Sep 17 00:00:00 2001 From: Abhishek Chandel <> Date: Tue, 11 Apr 2023 12:08:44 +0530 Subject: [PATCH 4/8] reverted extra changes --- docs/demos/package-lock.json | 1 + docs/target/js/browser.maker.js | 122 ++----- packages/maker.js/package-lock.json | 446 ++++++++------------------ packages/playground/package-lock.json | 114 ++++++- 4 files changed, 280 insertions(+), 403 deletions(-) diff --git a/docs/demos/package-lock.json b/docs/demos/package-lock.json index 0cc0f1701..3a796d7ee 100644 --- a/docs/demos/package-lock.json +++ b/docs/demos/package-lock.json @@ -33,6 +33,7 @@ "@types/opentype.js": "^0.7.0", "detective": "^5.2.0", "highlight.js": "^11.5.1", + "makerjs": "*", "marked": "^4.0.14", "opentype.js": "^0.9.0" } diff --git a/docs/target/js/browser.maker.js b/docs/target/js/browser.maker.js index e9ec5f517..d3a56a937 100644 --- a/docs/target/js/browser.maker.js +++ b/docs/target/js/browser.maker.js @@ -6739,36 +6739,23 @@ var MakerJs; function removeDuplicateEnds(endless, points) { if (!endless || points.length < 2) return; - if (MakerJs.measure.isPointEqual(points[0].point, points[points.length - 1].point, .00001)) { + if (MakerJs.measure.isPointEqual(points[0], points[points.length - 1], .00001)) { points.pop(); } } - function toPoints(chainContext, distanceOrDistances) { - var args = []; - for (var _i = 2; _i < arguments.length; _i++) { - args[_i - 2] = arguments[_i]; - } - var maxPoints; - var callback; - switch (args.length) { - case 1: - if (typeof args[0] === 'function') { - callback = args[0]; - } - else { - maxPoints = args[0]; - } - break; - case 2: - callback = args[0]; - maxPoints = args[1]; - break; - } + /** + * Get points along a chain of paths. + * + * @param chainContext Chain of paths to get points from. + * @param distance Numeric distance along the chain between points, or numeric array of distances along the chain between each point. + * @param maxPoints Maximum number of points to retrieve. + * @returns Array of points which are on the chain spread at a uniform interval. + */ + function toPoints(chainContext, distanceOrDistances, maxPoints) { var result = []; var di = 0; var t = 0; var distanceArray; - var breakLoop = false; if (Array.isArray(distanceOrDistances)) { distanceArray = distanceOrDistances; } @@ -6781,29 +6768,15 @@ var MakerJs; if (link.reversed) { r = 1 - r; } - var chainPoint = { - point: MakerJs.point.add(MakerJs.point.middle(wp.pathContext, r), wp.offset), - pathContext: wp.pathContext, - modelContext: wp.modelContext, - pathId: wp.pathId, - layer: wp.layer, - offset: wp.offset, - route: wp.route, - routeKey: wp.routeKey, - endPoints: link.endPoints - }; - result.push(chainPoint); - if (maxPoints && result.length >= maxPoints) { - breakLoop = true; - break; - } + result.push(MakerJs.point.add(MakerJs.point.middle(wp.pathContext, r), wp.offset)); + if (maxPoints && result.length >= maxPoints) + return result; var distance; if (distanceArray) { distance = distanceArray[di]; di++; if (di > distanceArray.length) { - breakLoop; - break; + return result; } } else { @@ -6812,36 +6785,19 @@ var MakerJs; t += distance; } t -= len; - if (breakLoop) - break; } removeDuplicateEnds(chainContext.endless, result); - if (callback) - callback(result); - return result.map(function (x) { return x.point; }); + return result; } chain.toPoints = toPoints; - function toKeyPoints(chainContext) { - var args = []; - for (var _i = 1; _i < arguments.length; _i++) { - args[_i - 1] = arguments[_i]; - } - var maxArcFacet; - var callback; - switch (args.length) { - case 1: - if (typeof args[0] === 'function') { - callback = args[0]; - } - else { - maxArcFacet = args[0]; - } - break; - case 2: - callback = args[0]; - maxArcFacet = args[1]; - break; - } + /** + * Get key points (a minimal a number of points) along a chain of paths. + * + * @param chainContext Chain of paths to get points from. + * @param maxArcFacet The maximum length between points on an arc or circle. + * @returns Array of points which are on the chain. + */ + function toKeyPoints(chainContext, maxArcFacet) { var result = []; for (var i = 0; i < chainContext.links.length; i++) { var link = chainContext.links[i]; @@ -6855,26 +6811,11 @@ var MakerJs; keyPoints.shift(); } var offsetPathPoints = keyPoints.map(function (p) { return MakerJs.point.add(p, wp.offset); }); - var chainPoints = offsetPathPoints.map(function (p) { - return { - point: p, - pathContext: wp.pathContext, - modelContext: wp.modelContext, - pathId: wp.pathId, - layer: wp.layer, - offset: wp.offset, - route: wp.route, - routeKey: wp.routeKey, - endPoints: link.endPoints - }; - }); - result.push.apply(result, chainPoints); + result.push.apply(result, offsetPathPoints); } } removeDuplicateEnds(chainContext.endless, result); - if (callback) - callback(result); - return result.map(function (x) { return x.point; }); + return result; } chain.toKeyPoints = toKeyPoints; })(chain = MakerJs.chain || (MakerJs.chain = {})); @@ -8566,15 +8507,13 @@ var MakerJs; * @param reversed Flag to travel along the chain in reverse. Default is false. * @param contain Flag to contain the children layout within the length of the chain. Default is false. * @param rotate Flag to rotate the child to mitered angle. Default is true. - * @param rotateAlongPath Flag to rotate the child along the layout path. Default is false. Works only if rotate is set true. * @returns The parentModel, for cascading. */ - function childrenOnChain(parentModel, onChain, baseline, reversed, contain, rotated, rotateAlongPath) { + function childrenOnChain(parentModel, onChain, baseline, reversed, contain, rotated) { if (baseline === void 0) { baseline = 0; } if (reversed === void 0) { reversed = false; } if (contain === void 0) { contain = false; } if (rotated === void 0) { rotated = true; } - if (rotateAlongPath === void 0) { rotateAlongPath = false; } var result = getChildPlacement(parentModel, baseline); var cpa = result.cpa; var chainLength = onChain.pathLength; @@ -8593,13 +8532,8 @@ var MakerJs; else { relatives.shift(); } - var alongPathAngles = []; //chain.toPoints always follows the chain in its order, from beginning to end. This is why we needed to contort the points input - points = MakerJs.chain.toPoints(onChain, relatives, function (chainPoints) { - for (var i = 0; i < chainPoints.length; i++) { - alongPathAngles.push(MakerJs.angle.ofPointInDegrees(chainPoints[i].endPoints[0], chainPoints[i].endPoints[0])); - } - }); + points = MakerJs.chain.toPoints(onChain, relatives); if (points.length < cpa.length) { //add last point of chain, since our distances exceeded the chain var endLink = onChain.links[onChain.links.length - 1]; @@ -8620,7 +8554,7 @@ var MakerJs; var angles = miterAngles(points, -90); if (cpa.length > 1) { cpa.forEach(function (cp, i) { - cp.angle = rotateAlongPath ? alongPathAngles[i] : angles[i]; + cp.angle = angles[i]; cp.origin = points[i]; }); } diff --git a/packages/maker.js/package-lock.json b/packages/maker.js/package-lock.json index 0b0329d1a..bdf605020 100644 --- a/packages/maker.js/package-lock.json +++ b/packages/maker.js/package-lock.json @@ -1,310 +1,140 @@ { - "name": "makerjs", - "version": "0.17.6", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "makerjs", - "version": "0.17.6", - "license": "Apache-2.0", - "dependencies": { - "@danmarshall/jscad-typings": "^1.0.0", - "@types/bezier-js": "^0.0.6", - "@types/node": "^7.0.5", - "@types/opentype.js": "^0.7.0", - "@types/pdfkit": "^0.7.34", - "bezier-js": "^2.1.0", - "clone": "^1.0.2", - "graham_scan": "^1.0.4", - "kdbush": "^2.0.1" - }, - "devDependencies": { - "@jscad/csg": "^0.3.7", - "@jscad/stl-serializer": "^0.1.0", - "@types/graham_scan": "^1.0.28", - "dxf-parser-typings": "^1.3.0" - } - }, - "node_modules/@danmarshall/jscad-typings": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@danmarshall/jscad-typings/-/jscad-typings-1.0.0.tgz", - "integrity": "sha512-MGGIGDItK2UQSsz7yTrXErQXDAFXR3UPxyQ7WZ5RHOwnv60CBXjmkJlXYMYPkSvo+7fUuQL2/ODcvECtc/fi9g==" - }, - "node_modules/@jscad/csg": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@jscad/csg/-/csg-0.3.8.tgz", - "integrity": "sha512-mWbJI7zVv+2aYUXrQkTrjiNQZ5HFEAhbNK3HObm3m6d2+k4OffIzFlqmEYKUp0xE+K8rokSOcrTIGBqfzlJR7A==", - "deprecated": "See @jscad/modeling", - "dev": true - }, - "node_modules/@jscad/io-utils": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@jscad/io-utils/-/io-utils-0.1.3.tgz", - "integrity": "sha512-aCVUZovewI4njtEJ1fvjhasqd8EHIzQaPb88MtFWf/ff1NdGOu/vRH3yGG8vu0NZektGEDCKp028g2nTBL7aFg==", - "dev": true - }, - "node_modules/@jscad/stl-serializer": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@jscad/stl-serializer/-/stl-serializer-0.1.3.tgz", - "integrity": "sha512-Zdrluf82TnBL6hHm28DfQGpjHHuN69XONH8SYwF0x3gnr5q+281erj+NRgH5odHYuxmetVNgoT5G1c654cIJag==", - "dev": true, - "dependencies": { - "@jscad/io-utils": "^0.1.3" - } - }, - "node_modules/@types/bezier-js": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@types/bezier-js/-/bezier-js-0.0.6.tgz", - "integrity": "sha1-DZdtaBY8SVUzLveYohoLPWOB0Ss=" - }, - "node_modules/@types/graham_scan": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/@types/graham_scan/-/graham_scan-1.0.28.tgz", - "integrity": "sha1-dC6BZzZeViorca51Ov4jXqpP7ew=", - "dev": true - }, - "node_modules/@types/node": { - "version": "7.10.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.14.tgz", - "integrity": "sha512-29GS75BE8asnTno3yB6ubOJOO0FboExEqNJy4bpz0GSmW/8wPTNL4h9h63c6s1uTrOopCmJYe/4yJLh5r92ZUA==" - }, - "node_modules/@types/opentype.js": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@types/opentype.js/-/opentype.js-0.7.2.tgz", - "integrity": "sha512-Riz6WyBUBEFs7YqSsJya3SbDHJZ6BmMkY7bzNoue6rtwj+RNilLc+mgOX/eJ0Y0asq16FSU6DatBeOg8ZMy2UQ==" - }, - "node_modules/@types/pdfkit": { - "version": "0.7.36", - "resolved": "https://registry.npmjs.org/@types/pdfkit/-/pdfkit-0.7.36.tgz", - "integrity": "sha512-9eRA6MuW+n78yU3HhoIrDxjyAX2++B5MpLDYqHOnaRTquCw+5sYXT+QN8E1eSaxvNUwlRfU3tOm4UzTeGWmBqg==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/bezier-js": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/bezier-js/-/bezier-js-2.6.1.tgz", - "integrity": "sha512-jelZM33eNzcZ9snJ/5HqJLw3IzXvA8RFcBjkdOB8SDYyOvW8Y2tTosojAiBTnD1MhbHoWUYNbxUXxBl61TxbRg==" - }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/dxf-parser-typings": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/dxf-parser-typings/-/dxf-parser-typings-1.3.0.tgz", - "integrity": "sha512-ctHwtmHYPNLOHh7Wd8VAjB5Sn+NUJvyLWcJHM33JvdbSmzSbhacAC1Fd5FELyW3M0Pb7/ImVpGdWVk4sg3IDhw==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "indefinitely-typed": "^1.0.2" - } - }, - "node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", - "dev": true - }, - "node_modules/graham_scan": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/graham_scan/-/graham_scan-1.0.4.tgz", - "integrity": "sha1-OZZR3R+DU+GID1nqjl+Uud9Mkoo=" - }, - "node_modules/indefinitely-typed": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/indefinitely-typed/-/indefinitely-typed-1.1.0.tgz", - "integrity": "sha512-giaI0hCj+wWZIZZLsmWHI+LrM4Hwc+rEZ/VrgCafKePcnE42fLnQTFt4xspqLin8fCjI5WnQr2fep/0EFqjaxw==", - "dev": true, - "dependencies": { - "fs-extra": "^7.0.0", - "minimist": "^1.2.5" - }, - "bin": { - "indefinitely-typed": "bin/cli2.js" - } - }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/kdbush": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-2.0.1.tgz", - "integrity": "sha512-9KqSdmWCkBIisFIGclT0FRagKhI7IVbMyUjsxCFG0Ly1Dg6whlxJ7b9lrq8ifk3X/fGeJzok1R75LQfZTfA5zQ==" - }, - "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - } - }, - "dependencies": { - "@danmarshall/jscad-typings": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@danmarshall/jscad-typings/-/jscad-typings-1.0.0.tgz", - "integrity": "sha512-MGGIGDItK2UQSsz7yTrXErQXDAFXR3UPxyQ7WZ5RHOwnv60CBXjmkJlXYMYPkSvo+7fUuQL2/ODcvECtc/fi9g==" - }, - "@jscad/csg": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@jscad/csg/-/csg-0.3.8.tgz", - "integrity": "sha512-mWbJI7zVv+2aYUXrQkTrjiNQZ5HFEAhbNK3HObm3m6d2+k4OffIzFlqmEYKUp0xE+K8rokSOcrTIGBqfzlJR7A==", - "dev": true - }, - "@jscad/io-utils": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@jscad/io-utils/-/io-utils-0.1.3.tgz", - "integrity": "sha512-aCVUZovewI4njtEJ1fvjhasqd8EHIzQaPb88MtFWf/ff1NdGOu/vRH3yGG8vu0NZektGEDCKp028g2nTBL7aFg==", - "dev": true - }, - "@jscad/stl-serializer": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@jscad/stl-serializer/-/stl-serializer-0.1.3.tgz", - "integrity": "sha512-Zdrluf82TnBL6hHm28DfQGpjHHuN69XONH8SYwF0x3gnr5q+281erj+NRgH5odHYuxmetVNgoT5G1c654cIJag==", - "dev": true, - "requires": { - "@jscad/io-utils": "^0.1.3" - } - }, - "@types/bezier-js": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@types/bezier-js/-/bezier-js-0.0.6.tgz", - "integrity": "sha1-DZdtaBY8SVUzLveYohoLPWOB0Ss=" - }, - "@types/graham_scan": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/@types/graham_scan/-/graham_scan-1.0.28.tgz", - "integrity": "sha1-dC6BZzZeViorca51Ov4jXqpP7ew=", - "dev": true - }, - "@types/node": { - "version": "7.10.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.14.tgz", - "integrity": "sha512-29GS75BE8asnTno3yB6ubOJOO0FboExEqNJy4bpz0GSmW/8wPTNL4h9h63c6s1uTrOopCmJYe/4yJLh5r92ZUA==" - }, - "@types/opentype.js": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@types/opentype.js/-/opentype.js-0.7.2.tgz", - "integrity": "sha512-Riz6WyBUBEFs7YqSsJya3SbDHJZ6BmMkY7bzNoue6rtwj+RNilLc+mgOX/eJ0Y0asq16FSU6DatBeOg8ZMy2UQ==" - }, - "@types/pdfkit": { - "version": "0.7.36", - "resolved": "https://registry.npmjs.org/@types/pdfkit/-/pdfkit-0.7.36.tgz", - "integrity": "sha512-9eRA6MuW+n78yU3HhoIrDxjyAX2++B5MpLDYqHOnaRTquCw+5sYXT+QN8E1eSaxvNUwlRfU3tOm4UzTeGWmBqg==", - "requires": { - "@types/node": "*" - } - }, - "bezier-js": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/bezier-js/-/bezier-js-2.6.1.tgz", - "integrity": "sha512-jelZM33eNzcZ9snJ/5HqJLw3IzXvA8RFcBjkdOB8SDYyOvW8Y2tTosojAiBTnD1MhbHoWUYNbxUXxBl61TxbRg==" - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" - }, - "dxf-parser-typings": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/dxf-parser-typings/-/dxf-parser-typings-1.3.0.tgz", - "integrity": "sha512-ctHwtmHYPNLOHh7Wd8VAjB5Sn+NUJvyLWcJHM33JvdbSmzSbhacAC1Fd5FELyW3M0Pb7/ImVpGdWVk4sg3IDhw==", - "dev": true, - "requires": { - "indefinitely-typed": "^1.0.2" - } - }, - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", - "dev": true - }, - "graham_scan": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/graham_scan/-/graham_scan-1.0.4.tgz", - "integrity": "sha1-OZZR3R+DU+GID1nqjl+Uud9Mkoo=" - }, - "indefinitely-typed": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/indefinitely-typed/-/indefinitely-typed-1.1.0.tgz", - "integrity": "sha512-giaI0hCj+wWZIZZLsmWHI+LrM4Hwc+rEZ/VrgCafKePcnE42fLnQTFt4xspqLin8fCjI5WnQr2fep/0EFqjaxw==", - "dev": true, - "requires": { - "fs-extra": "^7.0.0", - "minimist": "^1.2.5" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "kdbush": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-2.0.1.tgz", - "integrity": "sha512-9KqSdmWCkBIisFIGclT0FRagKhI7IVbMyUjsxCFG0Ly1Dg6whlxJ7b9lrq8ifk3X/fGeJzok1R75LQfZTfA5zQ==" - }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - } - } + "name": "makerjs", + "version": "0.17.6", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@danmarshall/jscad-typings": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@danmarshall/jscad-typings/-/jscad-typings-1.0.0.tgz", + "integrity": "sha512-MGGIGDItK2UQSsz7yTrXErQXDAFXR3UPxyQ7WZ5RHOwnv60CBXjmkJlXYMYPkSvo+7fUuQL2/ODcvECtc/fi9g==" + }, + "@jscad/csg": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jscad/csg/-/csg-0.3.8.tgz", + "integrity": "sha512-mWbJI7zVv+2aYUXrQkTrjiNQZ5HFEAhbNK3HObm3m6d2+k4OffIzFlqmEYKUp0xE+K8rokSOcrTIGBqfzlJR7A==", + "dev": true + }, + "@jscad/io-utils": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@jscad/io-utils/-/io-utils-0.1.3.tgz", + "integrity": "sha512-aCVUZovewI4njtEJ1fvjhasqd8EHIzQaPb88MtFWf/ff1NdGOu/vRH3yGG8vu0NZektGEDCKp028g2nTBL7aFg==", + "dev": true + }, + "@jscad/stl-serializer": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@jscad/stl-serializer/-/stl-serializer-0.1.3.tgz", + "integrity": "sha512-Zdrluf82TnBL6hHm28DfQGpjHHuN69XONH8SYwF0x3gnr5q+281erj+NRgH5odHYuxmetVNgoT5G1c654cIJag==", + "dev": true, + "requires": { + "@jscad/io-utils": "^0.1.3" + } + }, + "@types/bezier-js": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@types/bezier-js/-/bezier-js-0.0.6.tgz", + "integrity": "sha1-DZdtaBY8SVUzLveYohoLPWOB0Ss=" + }, + "@types/graham_scan": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/@types/graham_scan/-/graham_scan-1.0.28.tgz", + "integrity": "sha1-dC6BZzZeViorca51Ov4jXqpP7ew=", + "dev": true + }, + "@types/node": { + "version": "7.10.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.14.tgz", + "integrity": "sha512-29GS75BE8asnTno3yB6ubOJOO0FboExEqNJy4bpz0GSmW/8wPTNL4h9h63c6s1uTrOopCmJYe/4yJLh5r92ZUA==" + }, + "@types/opentype.js": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@types/opentype.js/-/opentype.js-0.7.2.tgz", + "integrity": "sha512-Riz6WyBUBEFs7YqSsJya3SbDHJZ6BmMkY7bzNoue6rtwj+RNilLc+mgOX/eJ0Y0asq16FSU6DatBeOg8ZMy2UQ==" + }, + "@types/pdfkit": { + "version": "0.7.36", + "resolved": "https://registry.npmjs.org/@types/pdfkit/-/pdfkit-0.7.36.tgz", + "integrity": "sha512-9eRA6MuW+n78yU3HhoIrDxjyAX2++B5MpLDYqHOnaRTquCw+5sYXT+QN8E1eSaxvNUwlRfU3tOm4UzTeGWmBqg==", + "requires": { + "@types/node": "*" + } + }, + "bezier-js": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/bezier-js/-/bezier-js-2.6.1.tgz", + "integrity": "sha512-jelZM33eNzcZ9snJ/5HqJLw3IzXvA8RFcBjkdOB8SDYyOvW8Y2tTosojAiBTnD1MhbHoWUYNbxUXxBl61TxbRg==" + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" + }, + "dxf-parser-typings": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/dxf-parser-typings/-/dxf-parser-typings-1.3.0.tgz", + "integrity": "sha512-ctHwtmHYPNLOHh7Wd8VAjB5Sn+NUJvyLWcJHM33JvdbSmzSbhacAC1Fd5FELyW3M0Pb7/ImVpGdWVk4sg3IDhw==", + "dev": true, + "requires": { + "indefinitely-typed": "^1.0.2" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "graham_scan": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/graham_scan/-/graham_scan-1.0.4.tgz", + "integrity": "sha1-OZZR3R+DU+GID1nqjl+Uud9Mkoo=" + }, + "indefinitely-typed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/indefinitely-typed/-/indefinitely-typed-1.1.0.tgz", + "integrity": "sha512-giaI0hCj+wWZIZZLsmWHI+LrM4Hwc+rEZ/VrgCafKePcnE42fLnQTFt4xspqLin8fCjI5WnQr2fep/0EFqjaxw==", + "dev": true, + "requires": { + "fs-extra": "^7.0.0", + "minimist": "^1.2.5" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "kdbush": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-2.0.1.tgz", + "integrity": "sha512-9KqSdmWCkBIisFIGclT0FRagKhI7IVbMyUjsxCFG0Ly1Dg6whlxJ7b9lrq8ifk3X/fGeJzok1R75LQfZTfA5zQ==" + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + } + } } diff --git a/packages/playground/package-lock.json b/packages/playground/package-lock.json index 7a6ea2bdd..34fb03c2e 100644 --- a/packages/playground/package-lock.json +++ b/packages/playground/package-lock.json @@ -12,9 +12,20 @@ "@types/codemirror": "0.0.38", "@types/marked": "^0.0.28", "@types/node": "^7.0.5", - "@types/opentype.js": "^0.7.0" + "@types/opentype.js": "^0.7.0", + "makerjs": "*" } }, + "node_modules/@danmarshall/jscad-typings": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@danmarshall/jscad-typings/-/jscad-typings-1.0.0.tgz", + "integrity": "sha512-MGGIGDItK2UQSsz7yTrXErQXDAFXR3UPxyQ7WZ5RHOwnv60CBXjmkJlXYMYPkSvo+7fUuQL2/ODcvECtc/fi9g==" + }, + "node_modules/@types/bezier-js": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@types/bezier-js/-/bezier-js-0.0.6.tgz", + "integrity": "sha1-DZdtaBY8SVUzLveYohoLPWOB0Ss=" + }, "node_modules/@types/codemirror": { "version": "0.0.38", "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-0.0.38.tgz", @@ -34,9 +45,66 @@ "version": "0.7.2", "resolved": "https://registry.npmjs.org/@types/opentype.js/-/opentype.js-0.7.2.tgz", "integrity": "sha512-Riz6WyBUBEFs7YqSsJya3SbDHJZ6BmMkY7bzNoue6rtwj+RNilLc+mgOX/eJ0Y0asq16FSU6DatBeOg8ZMy2UQ==" + }, + "node_modules/@types/pdfkit": { + "version": "0.7.36", + "resolved": "https://registry.npmjs.org/@types/pdfkit/-/pdfkit-0.7.36.tgz", + "integrity": "sha512-9eRA6MuW+n78yU3HhoIrDxjyAX2++B5MpLDYqHOnaRTquCw+5sYXT+QN8E1eSaxvNUwlRfU3tOm4UzTeGWmBqg==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/bezier-js": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/bezier-js/-/bezier-js-2.6.1.tgz", + "integrity": "sha512-jelZM33eNzcZ9snJ/5HqJLw3IzXvA8RFcBjkdOB8SDYyOvW8Y2tTosojAiBTnD1MhbHoWUYNbxUXxBl61TxbRg==" + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/graham_scan": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/graham_scan/-/graham_scan-1.0.4.tgz", + "integrity": "sha1-OZZR3R+DU+GID1nqjl+Uud9Mkoo=" + }, + "node_modules/kdbush": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-2.0.1.tgz", + "integrity": "sha512-9KqSdmWCkBIisFIGclT0FRagKhI7IVbMyUjsxCFG0Ly1Dg6whlxJ7b9lrq8ifk3X/fGeJzok1R75LQfZTfA5zQ==" + }, + "node_modules/makerjs": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/makerjs/-/makerjs-0.17.1.tgz", + "integrity": "sha512-kUejVYsSaoz3DwLFknBR4JH9sKOUXUJJcc+cIna6MtnthdyRVtd1jfw1mTFKPg4n+kIWY1nij8jDN66o1dm8rg==", + "dependencies": { + "@danmarshall/jscad-typings": "^1.0.0", + "@types/bezier-js": "^0.0.6", + "@types/node": "^7.0.5", + "@types/opentype.js": "^0.7.0", + "@types/pdfkit": "^0.7.34", + "bezier-js": "^2.1.0", + "clone": "^1.0.2", + "graham_scan": "^1.0.4", + "kdbush": "^2.0.1" + } } }, "dependencies": { + "@danmarshall/jscad-typings": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@danmarshall/jscad-typings/-/jscad-typings-1.0.0.tgz", + "integrity": "sha512-MGGIGDItK2UQSsz7yTrXErQXDAFXR3UPxyQ7WZ5RHOwnv60CBXjmkJlXYMYPkSvo+7fUuQL2/ODcvECtc/fi9g==" + }, + "@types/bezier-js": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@types/bezier-js/-/bezier-js-0.0.6.tgz", + "integrity": "sha1-DZdtaBY8SVUzLveYohoLPWOB0Ss=" + }, "@types/codemirror": { "version": "0.0.38", "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-0.0.38.tgz", @@ -56,6 +124,50 @@ "version": "0.7.2", "resolved": "https://registry.npmjs.org/@types/opentype.js/-/opentype.js-0.7.2.tgz", "integrity": "sha512-Riz6WyBUBEFs7YqSsJya3SbDHJZ6BmMkY7bzNoue6rtwj+RNilLc+mgOX/eJ0Y0asq16FSU6DatBeOg8ZMy2UQ==" + }, + "@types/pdfkit": { + "version": "0.7.36", + "resolved": "https://registry.npmjs.org/@types/pdfkit/-/pdfkit-0.7.36.tgz", + "integrity": "sha512-9eRA6MuW+n78yU3HhoIrDxjyAX2++B5MpLDYqHOnaRTquCw+5sYXT+QN8E1eSaxvNUwlRfU3tOm4UzTeGWmBqg==", + "requires": { + "@types/node": "*" + } + }, + "bezier-js": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/bezier-js/-/bezier-js-2.6.1.tgz", + "integrity": "sha512-jelZM33eNzcZ9snJ/5HqJLw3IzXvA8RFcBjkdOB8SDYyOvW8Y2tTosojAiBTnD1MhbHoWUYNbxUXxBl61TxbRg==" + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" + }, + "graham_scan": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/graham_scan/-/graham_scan-1.0.4.tgz", + "integrity": "sha1-OZZR3R+DU+GID1nqjl+Uud9Mkoo=" + }, + "kdbush": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-2.0.1.tgz", + "integrity": "sha512-9KqSdmWCkBIisFIGclT0FRagKhI7IVbMyUjsxCFG0Ly1Dg6whlxJ7b9lrq8ifk3X/fGeJzok1R75LQfZTfA5zQ==" + }, + "makerjs": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/makerjs/-/makerjs-0.17.1.tgz", + "integrity": "sha512-kUejVYsSaoz3DwLFknBR4JH9sKOUXUJJcc+cIna6MtnthdyRVtd1jfw1mTFKPg4n+kIWY1nij8jDN66o1dm8rg==", + "requires": { + "@danmarshall/jscad-typings": "^1.0.0", + "@types/bezier-js": "^0.0.6", + "@types/node": "^7.0.5", + "@types/opentype.js": "^0.7.0", + "@types/pdfkit": "^0.7.34", + "bezier-js": "^2.1.0", + "clone": "^1.0.2", + "graham_scan": "^1.0.4", + "kdbush": "^2.0.1" + } } } } From 82b7466dbfebf6d9cc48027101c4898e10676b2e Mon Sep 17 00:00:00 2001 From: Abhishek Chandel <> Date: Tue, 11 Apr 2023 12:11:11 +0530 Subject: [PATCH 5/8] reverted docs package json --- packages/docs/package-lock.json | 632 ++++++++++---------------------- 1 file changed, 199 insertions(+), 433 deletions(-) diff --git a/packages/docs/package-lock.json b/packages/docs/package-lock.json index 902715464..edc639586 100644 --- a/packages/docs/package-lock.json +++ b/packages/docs/package-lock.json @@ -1,435 +1,201 @@ { - "name": "docs", - "version": "1.0.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "docs", - "version": "1.0.0", - "license": "Apache-2.0", - "devDependencies": { - "@danmarshall/jscad-typings": "^1.0.0", - "@types/bezier-js": "0.0.7", - "@types/graham_scan": "^1.0.28", - "@types/opentype.js": "^0.7.0", - "@types/pdfkit": "^0.7.36", - "dxf-parser-typings": "^1.3.0", - "rimraf": "^2.6.2" - } - }, - "node_modules/@danmarshall/jscad-typings": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@danmarshall/jscad-typings/-/jscad-typings-1.0.0.tgz", - "integrity": "sha512-MGGIGDItK2UQSsz7yTrXErQXDAFXR3UPxyQ7WZ5RHOwnv60CBXjmkJlXYMYPkSvo+7fUuQL2/ODcvECtc/fi9g==", - "dev": true - }, - "node_modules/@types/bezier-js": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/@types/bezier-js/-/bezier-js-0.0.7.tgz", - "integrity": "sha512-N+/UZFYVp9ka8Xby7hZSHsXqKm6FJIXK/+BRH0BpEfb18aVTtRBPzGIQfDRexAZPYgtWupqP6afapmYYKjvWoQ==", - "dev": true - }, - "node_modules/@types/graham_scan": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/@types/graham_scan/-/graham_scan-1.0.28.tgz", - "integrity": "sha1-dC6BZzZeViorca51Ov4jXqpP7ew=", - "dev": true - }, - "node_modules/@types/node": { - "version": "14.14.20", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.20.tgz", - "integrity": "sha512-Y93R97Ouif9JEOWPIUyU+eyIdyRqQR0I8Ez1dzku4hDx34NWh4HbtIc3WNzwB1Y9ULvNGeu5B8h8bVL5cAk4/A==", - "dev": true - }, - "node_modules/@types/opentype.js": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@types/opentype.js/-/opentype.js-0.7.2.tgz", - "integrity": "sha512-Riz6WyBUBEFs7YqSsJya3SbDHJZ6BmMkY7bzNoue6rtwj+RNilLc+mgOX/eJ0Y0asq16FSU6DatBeOg8ZMy2UQ==", - "dev": true - }, - "node_modules/@types/pdfkit": { - "version": "0.7.36", - "resolved": "https://registry.npmjs.org/@types/pdfkit/-/pdfkit-0.7.36.tgz", - "integrity": "sha512-9eRA6MuW+n78yU3HhoIrDxjyAX2++B5MpLDYqHOnaRTquCw+5sYXT+QN8E1eSaxvNUwlRfU3tOm4UzTeGWmBqg==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/dxf-parser-typings": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/dxf-parser-typings/-/dxf-parser-typings-1.3.0.tgz", - "integrity": "sha512-ctHwtmHYPNLOHh7Wd8VAjB5Sn+NUJvyLWcJHM33JvdbSmzSbhacAC1Fd5FELyW3M0Pb7/ImVpGdWVk4sg3IDhw==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "indefinitely-typed": "^1.0.2" - } - }, - "node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", - "dev": true - }, - "node_modules/indefinitely-typed": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/indefinitely-typed/-/indefinitely-typed-1.1.0.tgz", - "integrity": "sha512-giaI0hCj+wWZIZZLsmWHI+LrM4Hwc+rEZ/VrgCafKePcnE42fLnQTFt4xspqLin8fCjI5WnQr2fep/0EFqjaxw==", - "dev": true, - "dependencies": { - "fs-extra": "^7.0.0", - "minimist": "^1.2.5" - }, - "bin": { - "indefinitely-typed": "bin/cli2.js" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - } - }, - "dependencies": { - "@danmarshall/jscad-typings": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@danmarshall/jscad-typings/-/jscad-typings-1.0.0.tgz", - "integrity": "sha512-MGGIGDItK2UQSsz7yTrXErQXDAFXR3UPxyQ7WZ5RHOwnv60CBXjmkJlXYMYPkSvo+7fUuQL2/ODcvECtc/fi9g==", - "dev": true - }, - "@types/bezier-js": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/@types/bezier-js/-/bezier-js-0.0.7.tgz", - "integrity": "sha512-N+/UZFYVp9ka8Xby7hZSHsXqKm6FJIXK/+BRH0BpEfb18aVTtRBPzGIQfDRexAZPYgtWupqP6afapmYYKjvWoQ==", - "dev": true - }, - "@types/graham_scan": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/@types/graham_scan/-/graham_scan-1.0.28.tgz", - "integrity": "sha1-dC6BZzZeViorca51Ov4jXqpP7ew=", - "dev": true - }, - "@types/node": { - "version": "14.14.20", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.20.tgz", - "integrity": "sha512-Y93R97Ouif9JEOWPIUyU+eyIdyRqQR0I8Ez1dzku4hDx34NWh4HbtIc3WNzwB1Y9ULvNGeu5B8h8bVL5cAk4/A==", - "dev": true - }, - "@types/opentype.js": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@types/opentype.js/-/opentype.js-0.7.2.tgz", - "integrity": "sha512-Riz6WyBUBEFs7YqSsJya3SbDHJZ6BmMkY7bzNoue6rtwj+RNilLc+mgOX/eJ0Y0asq16FSU6DatBeOg8ZMy2UQ==", - "dev": true - }, - "@types/pdfkit": { - "version": "0.7.36", - "resolved": "https://registry.npmjs.org/@types/pdfkit/-/pdfkit-0.7.36.tgz", - "integrity": "sha512-9eRA6MuW+n78yU3HhoIrDxjyAX2++B5MpLDYqHOnaRTquCw+5sYXT+QN8E1eSaxvNUwlRfU3tOm4UzTeGWmBqg==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "dxf-parser-typings": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/dxf-parser-typings/-/dxf-parser-typings-1.3.0.tgz", - "integrity": "sha512-ctHwtmHYPNLOHh7Wd8VAjB5Sn+NUJvyLWcJHM33JvdbSmzSbhacAC1Fd5FELyW3M0Pb7/ImVpGdWVk4sg3IDhw==", - "dev": true, - "requires": { - "indefinitely-typed": "^1.0.2" - } - }, - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", - "dev": true - }, - "indefinitely-typed": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/indefinitely-typed/-/indefinitely-typed-1.1.0.tgz", - "integrity": "sha512-giaI0hCj+wWZIZZLsmWHI+LrM4Hwc+rEZ/VrgCafKePcnE42fLnQTFt4xspqLin8fCjI5WnQr2fep/0EFqjaxw==", - "dev": true, - "requires": { - "fs-extra": "^7.0.0", - "minimist": "^1.2.5" - } - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - } - } + "name": "docs", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@danmarshall/jscad-typings": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@danmarshall/jscad-typings/-/jscad-typings-1.0.0.tgz", + "integrity": "sha512-MGGIGDItK2UQSsz7yTrXErQXDAFXR3UPxyQ7WZ5RHOwnv60CBXjmkJlXYMYPkSvo+7fUuQL2/ODcvECtc/fi9g==", + "dev": true + }, + "@types/bezier-js": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@types/bezier-js/-/bezier-js-0.0.7.tgz", + "integrity": "sha512-N+/UZFYVp9ka8Xby7hZSHsXqKm6FJIXK/+BRH0BpEfb18aVTtRBPzGIQfDRexAZPYgtWupqP6afapmYYKjvWoQ==", + "dev": true + }, + "@types/graham_scan": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/@types/graham_scan/-/graham_scan-1.0.28.tgz", + "integrity": "sha1-dC6BZzZeViorca51Ov4jXqpP7ew=", + "dev": true + }, + "@types/node": { + "version": "14.14.20", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.20.tgz", + "integrity": "sha512-Y93R97Ouif9JEOWPIUyU+eyIdyRqQR0I8Ez1dzku4hDx34NWh4HbtIc3WNzwB1Y9ULvNGeu5B8h8bVL5cAk4/A==", + "dev": true + }, + "@types/opentype.js": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@types/opentype.js/-/opentype.js-0.7.2.tgz", + "integrity": "sha512-Riz6WyBUBEFs7YqSsJya3SbDHJZ6BmMkY7bzNoue6rtwj+RNilLc+mgOX/eJ0Y0asq16FSU6DatBeOg8ZMy2UQ==", + "dev": true + }, + "@types/pdfkit": { + "version": "0.7.36", + "resolved": "https://registry.npmjs.org/@types/pdfkit/-/pdfkit-0.7.36.tgz", + "integrity": "sha512-9eRA6MuW+n78yU3HhoIrDxjyAX2++B5MpLDYqHOnaRTquCw+5sYXT+QN8E1eSaxvNUwlRfU3tOm4UzTeGWmBqg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "dxf-parser-typings": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/dxf-parser-typings/-/dxf-parser-typings-1.3.0.tgz", + "integrity": "sha512-ctHwtmHYPNLOHh7Wd8VAjB5Sn+NUJvyLWcJHM33JvdbSmzSbhacAC1Fd5FELyW3M0Pb7/ImVpGdWVk4sg3IDhw==", + "dev": true, + "requires": { + "indefinitely-typed": "^1.0.2" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "indefinitely-typed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/indefinitely-typed/-/indefinitely-typed-1.1.0.tgz", + "integrity": "sha512-giaI0hCj+wWZIZZLsmWHI+LrM4Hwc+rEZ/VrgCafKePcnE42fLnQTFt4xspqLin8fCjI5WnQr2fep/0EFqjaxw==", + "dev": true, + "requires": { + "fs-extra": "^7.0.0", + "minimist": "^1.2.5" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + } + } } From bea9bc78c70a7922aaf63bc9400d525586b782db Mon Sep 17 00:00:00 2001 From: Abhishek Chandel Date: Fri, 21 Apr 2023 17:28:56 +0530 Subject: [PATCH 6/8] Review comments incorporated --- packages/maker.js/src/core/chain.ts | 43 ++++++++++------------------ packages/maker.js/src/core/layout.ts | 2 +- packages/maker.js/src/core/maker.ts | 10 ++++--- 3 files changed, 22 insertions(+), 33 deletions(-) diff --git a/packages/maker.js/src/core/chain.ts b/packages/maker.js/src/core/chain.ts index 8242b9a33..ec9551aa3 100644 --- a/packages/maker.js/src/core/chain.ts +++ b/packages/maker.js/src/core/chain.ts @@ -560,9 +560,9 @@ namespace MakerJs.chain { /** * @private */ - function removeDuplicateEnds(endless: boolean, points: IWalkChainPoints[]) { + function removeDuplicateEnds(endless: boolean, points: IChainLinkKeyPoint[]) { if (!endless || points.length < 2) return; - if (measure.isPointEqual(points[0].point, points[points.length - 1].point, .00001)) { + if (measure.isPointEqual(points[0].keyPoint, points[points.length - 1].keyPoint, .00001)) { points.pop(); } } @@ -608,7 +608,7 @@ namespace MakerJs.chain { break; } - var result: IWalkChainPoints[] = []; + var result: IChainLinkKeyPoint[] = []; var di = 0; var t = 0; var distanceArray: number[]; @@ -627,22 +627,16 @@ namespace MakerJs.chain { if (link.reversed) { r = 1 - r; } - let chainPoint: IWalkChainPoints = { - point: point.add(point.middle(wp.pathContext, r), wp.offset), - pathContext: wp.pathContext, - modelContext: wp.modelContext, - pathId: wp.pathId, - layer: wp.layer, - offset: wp.offset, - route: wp.route, - routeKey: wp.routeKey, - endPoints: link.endPoints + let chainPoint: IChainLinkKeyPoint = { + keyPoint: point.add(point.middle(wp.pathContext, r), wp.offset), + link: link, + ratio: r }; result.push(chainPoint); if (maxPoints && result.length >= maxPoints) { if (callback) callback(result); - return result.map(x => x.point); + return result.map(x => x.keyPoint); } var distance: number; @@ -652,7 +646,7 @@ namespace MakerJs.chain { if (di > distanceArray.length) { if (callback) callback(result); - return result.map(x => x.point); + return result.map(x => x.keyPoint); } } else { @@ -666,7 +660,7 @@ namespace MakerJs.chain { removeDuplicateEnds(chainContext.endless, result); if (callback) callback(result); - return result.map(x => x.point); + return result.map(x => x.keyPoint); } /** @@ -686,7 +680,7 @@ namespace MakerJs.chain { * @param callback Callback function when points are found. * @returns Array of points which are on the chain. */ - export function toKeyPoints(chainContext: IChain, callback: IWalkChainPoints, maxArcFacet?: number): IPoint[]; + export function toKeyPoints(chainContext: IChain, callback: IChainLinkKeyPoint, maxArcFacet?: number): IPoint[]; export function toKeyPoints(chainContext: IChain, ... args: any): IPoint[] { var maxArcFacet: number; var callback: IChainPointsCallback; @@ -704,7 +698,7 @@ namespace MakerJs.chain { maxArcFacet = args[1]; break; } - var result: IWalkChainPoints[] = []; + var result: IChainLinkKeyPoint[] = []; for (var i = 0; i < chainContext.links.length; i++) { var link = chainContext.links[i]; @@ -722,15 +716,8 @@ namespace MakerJs.chain { var chainPoints = offsetPathPoints.map(p=> { return { - point: p, - pathContext: wp.pathContext, - modelContext: wp.modelContext, - pathId: wp.pathId, - layer: wp.layer, - offset: wp.offset, - route: wp.route, - routeKey: wp.routeKey, - endPoints: link.endPoints + keyPoint: p, + link: link } }); result.push.apply(result, chainPoints); @@ -739,7 +726,7 @@ namespace MakerJs.chain { removeDuplicateEnds(chainContext.endless, result); if (callback) callback(result); - return result.map(x=> x.point); + return result.map(x=> x.keyPoint); } } diff --git a/packages/maker.js/src/core/layout.ts b/packages/maker.js/src/core/layout.ts index c3426f6f7..a6e4675c8 100644 --- a/packages/maker.js/src/core/layout.ts +++ b/packages/maker.js/src/core/layout.ts @@ -213,7 +213,7 @@ namespace MakerJs.layout { (chainPoints)=> { for(let i = 0; i < chainPoints.length; i++) { - alongPathAngles.push(angle.ofPointInDegrees(chainPoints[i].endPoints[0], chainPoints[i].endPoints[1])); + alongPathAngles.push(angle.ofPointInDegrees(chainPoints[i].link.endPoints[0], chainPoints[i].link.endPoints[1])); } }); diff --git a/packages/maker.js/src/core/maker.ts b/packages/maker.js/src/core/maker.ts index 294c0c5e0..3f39027dd 100644 --- a/packages/maker.js/src/core/maker.ts +++ b/packages/maker.js/src/core/maker.ts @@ -784,10 +784,12 @@ namespace MakerJs { /** * A point reference in a path. + * Ratio is not available for toKeyPoints */ - export interface IWalkChainPoints extends IWalkPath{ - point: IPoint; - endPoints: IPoint[]; + export interface IChainLinkKeyPoint{ + keyPoint: IPoint; + link: IChainLink; + ratio: number | undefined; } /** @@ -795,7 +797,7 @@ namespace MakerJs { */ export interface IChainPointsCallback { - (chainPoints: IWalkChainPoints[]): void; + (chainPoints: IChainLinkKeyPoint[]): void; } /** From dd3a39dd17ada567ae19e701c49a83c3514b132f Mon Sep 17 00:00:00 2001 From: Abhishek Chandel Date: Sat, 22 Apr 2023 18:40:00 +0530 Subject: [PATCH 7/8] revert changes for toKeyPoints --- packages/maker.js/src/core/chain.ts | 52 +++++++---------------------- 1 file changed, 12 insertions(+), 40 deletions(-) diff --git a/packages/maker.js/src/core/chain.ts b/packages/maker.js/src/core/chain.ts index ec9551aa3..bd61bc745 100644 --- a/packages/maker.js/src/core/chain.ts +++ b/packages/maker.js/src/core/chain.ts @@ -560,9 +560,15 @@ namespace MakerJs.chain { /** * @private */ - function removeDuplicateEnds(endless: boolean, points: IChainLinkKeyPoint[]) { + function removeDuplicateEnds(endless: boolean, points: IChainLinkKeyPoint[]); + function removeDuplicateEnds(endless: boolean, points: IPoint[]); + function removeDuplicateEnds(endless: boolean, points: (IPoint | IChainLinkKeyPoint)[]) { if (!endless || points.length < 2) return; - if (measure.isPointEqual(points[0].keyPoint, points[points.length - 1].keyPoint, .00001)) { + var firstPoint = points[0]; + var lastPoint = points[points.length - 1]; + var isPoint = Array.isArray(firstPoint); + if (isPoint ? measure.isPointEqual(firstPoint as IPoint, lastPoint as IPoint, .00001) : + measure.isPointEqual((firstPoint as IChainLinkKeyPoint).keyPoint, (lastPoint as IChainLinkKeyPoint).keyPoint, .00001)) { points.pop(); } } @@ -670,35 +676,8 @@ namespace MakerJs.chain { * @param maxArcFacet The maximum length between points on an arc or circle. * @returns Array of points which are on the chain. */ - export function toKeyPoints(chainContext: IChain, maxArcFacet?: number): IPoint[]; - - /** - * Get key points (a minimal a number of points) along a chain of paths. - * - * @param chainContext Chain of paths to get points from. - * @param maxArcFacet The maximum length between points on an arc or circle. - * @param callback Callback function when points are found. - * @returns Array of points which are on the chain. - */ - export function toKeyPoints(chainContext: IChain, callback: IChainLinkKeyPoint, maxArcFacet?: number): IPoint[]; - export function toKeyPoints(chainContext: IChain, ... args: any): IPoint[] { - var maxArcFacet: number; - var callback: IChainPointsCallback; - switch (args.length) { - case 1: - if (typeof args[0] === 'function') { - callback = args[0]; - } else { - maxArcFacet = args[0]; - } - break; - - case 2: - callback = args[0]; - maxArcFacet = args[1]; - break; - } - var result: IChainLinkKeyPoint[] = []; + export function toKeyPoints(chainContext: IChain, maxArcFacet?: number): IPoint[] { + var result: IPoint[] = []; for (var i = 0; i < chainContext.links.length; i++) { var link = chainContext.links[i]; @@ -714,19 +693,12 @@ namespace MakerJs.chain { var offsetPathPoints = keyPoints.map(p => point.add(p, wp.offset)); - var chainPoints = offsetPathPoints.map(p=> { - return { - keyPoint: p, - link: link - } - }); - result.push.apply(result, chainPoints); + result.push.apply(result, offsetPathPoints); } } removeDuplicateEnds(chainContext.endless, result); - if (callback) callback(result); - return result.map(x=> x.keyPoint); + return result; } } From 1c772a5dc88cada77586ea7bfe5333d30e98ade0 Mon Sep 17 00:00:00 2001 From: Abhishek Chandel <> Date: Sat, 22 Apr 2023 18:42:49 +0530 Subject: [PATCH 8/8] reverting comments --- packages/maker.js/src/core/maker.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/maker.js/src/core/maker.ts b/packages/maker.js/src/core/maker.ts index 3f39027dd..481a187a5 100644 --- a/packages/maker.js/src/core/maker.ts +++ b/packages/maker.js/src/core/maker.ts @@ -784,7 +784,6 @@ namespace MakerJs { /** * A point reference in a path. - * Ratio is not available for toKeyPoints */ export interface IChainLinkKeyPoint{ keyPoint: IPoint;