{"_id":"@aici/cad","_rev":"19-8cf2ce090e1c6881abc64fe36e233e84","name":"@aici/cad","dist-tags":{"latest":"1.0.0"},"versions":{"0.1.0":{"name":"@aici/cad","version":"0.1.0","keywords":["cad","dxf","three","drawing","aici","dwg"],"license":"UNLICENSED","_id":"@aici/cad@0.1.0","maintainers":[{"name":"chen.aici","email":"chen.li@aici.de"},{"name":"0xymg","email":"ymgozutok@gmail.com"},{"name":"tibet.aici","email":"tibet.akinci@aici.de"},{"name":"nurbuketeker","email":"n.teker@aici.de"}],"homepage":"https://gitlab.com/aici-packages/cad-board/-/blob/main/packages/cad/README.md","bugs":{"url":"https://gitlab.com/aici-packages/cad-board/-/issues"},"dist":{"shasum":"88b3c725b8629ce4b0f2e4fda93b64a704476fe9","tarball":"https://registry.npmjs.org/@aici/cad/-/cad-0.1.0.tgz","fileCount":36,"integrity":"sha512-iDPRyfbXAfP04PEI9QYJcmh85tVH3MwiS/Tk33haaC8Ns3MK/8uofEirLFHOxVQFEU70TwEMc3vTvlmEuNECdQ==","signatures":[{"sig":"MEYCIQC4qaz5dV39BXiFSMIRG/GX3NBMPb76oPfUVWFEIXnE1gIhAI8MzzkAKqu7xp21Dxbc6XS+fS+LlXxnJ03KcycHmufj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5243164},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","import":"./dist/node.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./overlays":{"types":"./dist/overlays.d.ts","import":"./dist/overlays.js"},"./workers/pointcloud":{"types":"./dist/workers/pointcloud.d.ts","import":"./dist/workers/pointcloud.js"}},"gitHead":"ece4942c871e9db5cd8d541cfa1cd50f7a3fa210","scripts":{"lint":"eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0 && npm run depcruise","test":"vitest run","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsup","depcruise":"depcruise src --config .dependency-cruiser.cjs","typecheck":"tsc --noEmit -p tsconfig.json","test:watch":"vitest","check:package":"publint"},"_npmUser":{"name":"nurbuketeker","email":"n.teker@aici.de"},"repository":{"url":"git+https://gitlab.com/aici-packages/cad-board.git","type":"git","directory":"packages/cad"},"_npmVersion":"11.12.1","description":"AICI CAD drawing-board engine: document model, tools, commands, snapping, three.js rendering, DXF/SVG serialization, with React bindings.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"three-viewport-gizmo":"^2.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"dxf-parser":"1.1.2","@tarikjabiri/dxf":"2.8.9"},"peerDependencies":{"react":"^18.2.0","three":"^0.182.0","react-dom":"^18.2.0","troika-three-text":"^0.52.4"},"peerDependenciesMeta":{"react":{"optional":true},"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cad_0.1.0_1788788323476_0.33832789399141094","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to a private repository"},"0.1.1":{"name":"@aici/cad","version":"0.1.1","keywords":["cad","dxf","three","drawing","aici","dwg"],"license":"UNLICENSED","_id":"@aici/cad@0.1.1","maintainers":[{"name":"chen.aici","email":"chen.li@aici.de"},{"name":"0xymg","email":"ymgozutok@gmail.com"},{"name":"tibet.aici","email":"tibet.akinci@aici.de"},{"name":"nurbuketeker","email":"n.teker@aici.de"}],"homepage":"https://gitlab.com/aici-packages/cad-board/-/blob/main/packages/cad/README.md","bugs":{"url":"https://gitlab.com/aici-packages/cad-board/-/issues"},"dist":{"shasum":"1baad9a734d07ca4d9b3e947a2dda215686c6ced","tarball":"https://registry.npmjs.org/@aici/cad/-/cad-0.1.1.tgz","fileCount":36,"integrity":"sha512-GY/Oq/12InBVGQoy4x+XrAMkE3+RRNaZRyc+m4qU4mR8kiOE/v9iIz8CIehvZTjl/e9nQSnqtYyMDfUOUPPG+w==","signatures":[{"sig":"MEUCIFwx+DRPBiokRyyIlYm/tRkLsfMRFPB+H4PLDKXiYG56AiEAjACQH3UFo3gJfXI9OsKq+fF7WKLnbO1Bfg0OF3E+wks=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5243196},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","import":"./dist/node.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./overlays":{"types":"./dist/overlays.d.ts","import":"./dist/overlays.js"},"./workers/pointcloud":{"types":"./dist/workers/pointcloud.d.ts","import":"./dist/workers/pointcloud.js"}},"gitHead":"0e5582e7f2921dea7daae95bb9f535d79728786c","scripts":{"lint":"eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0 && npm run depcruise","test":"vitest run","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsup","depcruise":"depcruise src --config .dependency-cruiser.cjs","typecheck":"tsc --noEmit -p tsconfig.json","test:watch":"vitest","check:package":"publint"},"_npmUser":{"name":"GitLab CI/CD","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"gitlab","oidcConfigId":"oidc:e04bf6e3-d3b3-470a-9863-527a6b9a2577"}},"repository":{"url":"git+https://gitlab.com/aici-packages/cad-board.git","type":"git","directory":"packages/cad"},"_npmVersion":"12.0.2","description":"AICI CAD drawing-board engine: document model, tools, commands, snapping, three.js rendering, DXF/SVG serialization, with React bindings.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"utility-types":"^3.11.0","three-viewport-gizmo":"^2.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"dxf-parser":"1.1.2","@tarikjabiri/dxf":"2.8.9"},"peerDependencies":{"react":"^18.2.0","three":"^0.182.0","react-dom":"^18.2.0","troika-three-text":"^0.52.4"},"peerDependenciesMeta":{"react":{"optional":true},"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cad_0.1.1_1788853608544_0.1867466117217469","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to a private repository"},"0.2.0":{"name":"@aici/cad","version":"0.2.0","keywords":["cad","dxf","three","drawing","aici","dwg"],"license":"UNLICENSED","_id":"@aici/cad@0.2.0","maintainers":[{"name":"chen.aici","email":"chen.li@aici.de"},{"name":"0xymg","email":"ymgozutok@gmail.com"},{"name":"tibet.aici","email":"tibet.akinci@aici.de"},{"name":"nurbuketeker","email":"n.teker@aici.de"}],"homepage":"https://gitlab.com/aici-packages/cad-board/-/blob/main/packages/cad/README.md","bugs":{"url":"https://gitlab.com/aici-packages/cad-board/-/issues"},"dist":{"shasum":"d246e68c191e99e33d9dc1c3b44fa9f1a5358a7d","tarball":"https://registry.npmjs.org/@aici/cad/-/cad-0.2.0.tgz","fileCount":36,"integrity":"sha512-Y7nNM7DM0RUUT96lgI3DoSrsIiMuYEhxRBMr+GHDU40VZWnXFbHRLCXk7EW2t9SCDr4AYDUfekdr51g4yNmxMQ==","signatures":[{"sig":"MEUCIQCmnQw8u6CHXL+o/nHLaDFUAh6X2XX4kjHQvsqTPwtKqQIgJi+2pSB2bbAv5UFLpFi5Bk008Hcy36GNHu0Z1TFXhKg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5272689},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","import":"./dist/node.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./overlays":{"types":"./dist/overlays.d.ts","import":"./dist/overlays.js"},"./workers/pointcloud":{"types":"./dist/workers/pointcloud.d.ts","import":"./dist/workers/pointcloud.js"}},"gitHead":"9f62b3e18c5564552b32090f25887ca0128c044d","scripts":{"lint":"eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0 && npm run depcruise","test":"vitest run","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsup","depcruise":"depcruise src --config .dependency-cruiser.cjs","typecheck":"tsc --noEmit -p tsconfig.json","test:watch":"vitest","check:package":"publint"},"_npmUser":{"name":"GitLab CI/CD","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"gitlab","oidcConfigId":"oidc:e04bf6e3-d3b3-470a-9863-527a6b9a2577"}},"repository":{"url":"git+https://gitlab.com/aici-packages/cad-board.git","type":"git","directory":"packages/cad"},"_npmVersion":"12.0.2","description":"AICI CAD drawing-board engine: document model, tools, commands, snapping, three.js rendering, DXF/SVG serialization, with React bindings.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"utility-types":"^3.11.0","three-viewport-gizmo":"^2.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"dxf-parser":"1.1.2","@tarikjabiri/dxf":"2.8.9"},"peerDependencies":{"react":"^18.2.0","three":"^0.182.0","react-dom":"^18.2.0","troika-three-text":"^0.52.4"},"peerDependenciesMeta":{"react":{"optional":true},"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cad_0.2.0_1788869190814_0.8064768375335802","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to a private repository"},"0.3.0":{"name":"@aici/cad","version":"0.3.0","keywords":["cad","dxf","three","drawing","aici","dwg"],"license":"UNLICENSED","_id":"@aici/cad@0.3.0","maintainers":[{"name":"chen.aici","email":"chen.li@aici.de"},{"name":"0xymg","email":"ymgozutok@gmail.com"},{"name":"tibet.aici","email":"tibet.akinci@aici.de"},{"name":"nurbuketeker","email":"n.teker@aici.de"}],"homepage":"https://gitlab.com/aici-packages/cad-board/-/blob/main/packages/cad/README.md","bugs":{"url":"https://gitlab.com/aici-packages/cad-board/-/issues"},"dist":{"shasum":"05a6992b5226c559cb9a5782922d651f015a238a","tarball":"https://registry.npmjs.org/@aici/cad/-/cad-0.3.0.tgz","fileCount":36,"integrity":"sha512-ReEJjArbYwxcQyWxrlQCqADsAPBL3yYBzquAB572UJ9I+PunFjzr7FBS4ePo54Cax6IZ5pWrwjR51THesqGhDA==","signatures":[{"sig":"MEYCIQCCmUzoURlR2IHBQUlyM8O+mFpxSYMpAdZraahx8BEEfgIhAN4HOGI/UnvodpONzA7zRww4N7+O9YY4thcszxWmleB6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5295250},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","import":"./dist/node.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./overlays":{"types":"./dist/overlays.d.ts","import":"./dist/overlays.js"},"./workers/pointcloud":{"types":"./dist/workers/pointcloud.d.ts","import":"./dist/workers/pointcloud.js"}},"gitHead":"e6a72e9e9ebd905128dab05d6ef657b3647647a1","scripts":{"lint":"eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0 && npm run depcruise","test":"vitest run","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsup","depcruise":"depcruise src --config .dependency-cruiser.cjs","typecheck":"tsc --noEmit -p tsconfig.json","test:watch":"vitest","check:package":"publint"},"_npmUser":{"name":"GitLab CI/CD","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"gitlab","oidcConfigId":"oidc:e04bf6e3-d3b3-470a-9863-527a6b9a2577"}},"repository":{"url":"git+https://gitlab.com/aici-packages/cad-board.git","type":"git","directory":"packages/cad"},"_npmVersion":"12.0.2","description":"AICI CAD drawing-board engine: document model, tools, commands, snapping, three.js rendering, DXF/SVG serialization, with React bindings.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"utility-types":"^3.11.0","three-viewport-gizmo":"^2.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"dxf-parser":"1.1.2","@tarikjabiri/dxf":"2.8.9"},"peerDependencies":{"react":"^18.2.0","three":"^0.182.0","react-dom":"^18.2.0","troika-three-text":"^0.52.4"},"peerDependenciesMeta":{"react":{"optional":true},"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cad_0.3.0_1788877138627_0.19962229476706228","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to a private repository"},"0.4.0":{"name":"@aici/cad","version":"0.4.0","keywords":["cad","dxf","three","drawing","aici","dwg"],"license":"UNLICENSED","_id":"@aici/cad@0.4.0","maintainers":[{"name":"chen.aici","email":"chen.li@aici.de"},{"name":"0xymg","email":"ymgozutok@gmail.com"},{"name":"tibet.aici","email":"tibet.akinci@aici.de"},{"name":"nurbuketeker","email":"n.teker@aici.de"}],"homepage":"https://gitlab.com/aici-packages/cad-board/-/blob/main/packages/cad/README.md","bugs":{"url":"https://gitlab.com/aici-packages/cad-board/-/issues"},"dist":{"shasum":"cf62c6ae826f3d38bf9abc9b246a52e07e5ffbad","tarball":"https://registry.npmjs.org/@aici/cad/-/cad-0.4.0.tgz","fileCount":36,"integrity":"sha512-qCQ1nD1ZZRoTZZ8VUmJWbzEQjH6xsgDREidHSmZgrx7N0j/O18St6VjFtvU78l8RQxvkT72hqo+4zyhqul6R+Q==","signatures":[{"sig":"MEYCIQCKt2G+KntZfscW/c6Fe77Tj15Dz00X3XcEEGyaLjKBhQIhANCpLZLs8lvsXbcfS4t/AI8007A2JMj+kJ4CqQyak/Hs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5354970},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","import":"./dist/node.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./overlays":{"types":"./dist/overlays.d.ts","import":"./dist/overlays.js"},"./workers/pointcloud":{"types":"./dist/workers/pointcloud.d.ts","import":"./dist/workers/pointcloud.js"}},"gitHead":"db312936e37c4b601cdc417cc57793e2d6763b8a","scripts":{"lint":"eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0 && npm run depcruise","test":"vitest run","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsup","depcruise":"depcruise src --config .dependency-cruiser.cjs","typecheck":"tsc --noEmit -p tsconfig.json","test:watch":"vitest","check:package":"publint"},"_npmUser":{"name":"GitLab CI/CD","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"gitlab","oidcConfigId":"oidc:e04bf6e3-d3b3-470a-9863-527a6b9a2577"}},"repository":{"url":"git+https://gitlab.com/aici-packages/cad-board.git","type":"git","directory":"packages/cad"},"_npmVersion":"12.0.2","description":"AICI CAD drawing-board engine: document model, tools, commands, snapping, three.js rendering, DXF/SVG serialization, with React bindings.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"utility-types":"^3.11.0","three-viewport-gizmo":"^2.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"dxf-parser":"1.1.2","@tarikjabiri/dxf":"2.8.9"},"peerDependencies":{"react":"^18.2.0","three":"^0.182.0","react-dom":"^18.2.0","troika-three-text":"^0.52.4"},"peerDependenciesMeta":{"react":{"optional":true},"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cad_0.4.0_1789035651465_0.4628378846561412","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to a private repository"},"0.5.0":{"name":"@aici/cad","version":"0.5.0","keywords":["cad","dxf","three","drawing","aici","dwg"],"license":"UNLICENSED","_id":"@aici/cad@0.5.0","maintainers":[{"name":"chen.aici","email":"chen.li@aici.de"},{"name":"0xymg","email":"ymgozutok@gmail.com"},{"name":"tibet.aici","email":"tibet.akinci@aici.de"},{"name":"nurbuketeker","email":"n.teker@aici.de"}],"homepage":"https://gitlab.com/aici-packages/cad-board/-/blob/main/packages/cad/README.md","bugs":{"url":"https://gitlab.com/aici-packages/cad-board/-/issues"},"dist":{"shasum":"378c1f96728c2f3305eb2a07d322face4ed16816","tarball":"https://registry.npmjs.org/@aici/cad/-/cad-0.5.0.tgz","fileCount":36,"integrity":"sha512-J6LuPFgANYUkcYRLrn9+Gf07OnaW+5l7YixB8+1ekVyGPpCHkDsYZcm6uXfCvfdKU+kHW6TivkXCVqY3rVxxGQ==","signatures":[{"sig":"MEUCIQC12ufg1UaPDR326dyxSDrfCQAgT6+hwQ4ipgcC5j7tAgIgcqSXiOLoCv4P6bw2hBZlWp+mQdlHP5Sy4AX11S/j56A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5357177},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","import":"./dist/node.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./overlays":{"types":"./dist/overlays.d.ts","import":"./dist/overlays.js"},"./workers/pointcloud":{"types":"./dist/workers/pointcloud.d.ts","import":"./dist/workers/pointcloud.js"}},"gitHead":"9581ef6547da9537ee47246b8b71bef52b4f7882","scripts":{"lint":"eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0 && npm run depcruise","test":"vitest run","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsup","depcruise":"depcruise src --config .dependency-cruiser.cjs","typecheck":"tsc --noEmit -p tsconfig.json","test:watch":"vitest","check:package":"publint"},"_npmUser":{"name":"GitLab CI/CD","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"gitlab","oidcConfigId":"oidc:e04bf6e3-d3b3-470a-9863-527a6b9a2577"}},"repository":{"url":"git+https://gitlab.com/aici-packages/cad-board.git","type":"git","directory":"packages/cad"},"_npmVersion":"12.0.2","description":"AICI CAD drawing-board engine: document model, tools, commands, snapping, three.js rendering, DXF/SVG serialization, with React bindings.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"utility-types":"^3.11.0","three-viewport-gizmo":"^2.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"dxf-parser":"1.1.2","@tarikjabiri/dxf":"2.8.9"},"peerDependencies":{"react":"^18.2.0","three":"^0.182.0","react-dom":"^18.2.0","troika-three-text":"^0.52.4"},"peerDependenciesMeta":{"react":{"optional":true},"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cad_0.5.0_1789038002622_0.8124565551851388","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to a private repository"},"0.6.0":{"name":"@aici/cad","version":"0.6.0","keywords":["cad","dxf","three","drawing","aici","dwg"],"license":"UNLICENSED","_id":"@aici/cad@0.6.0","maintainers":[{"name":"chen.aici","email":"chen.li@aici.de"},{"name":"0xymg","email":"ymgozutok@gmail.com"},{"name":"tibet.aici","email":"tibet.akinci@aici.de"},{"name":"nurbuketeker","email":"n.teker@aici.de"}],"homepage":"https://gitlab.com/aici-packages/cad-board/-/blob/main/packages/cad/README.md","bugs":{"url":"https://gitlab.com/aici-packages/cad-board/-/issues"},"dist":{"shasum":"dda63e12fe0183dff200219de2d3e70d46b7c5b2","tarball":"https://registry.npmjs.org/@aici/cad/-/cad-0.6.0.tgz","fileCount":36,"integrity":"sha512-yu4yZLcuXwwjD0/GDfrvZvCqiZBIasSO2waGglNKNtxY1sznJ3Ez2e2nhJ29GvphBFFlO0JuOjiWznmXDB7EJg==","signatures":[{"sig":"MEUCIQDaK9Ge3OtNTvZfTp9kUuqQwtQf5vOhMxVlQBXcJSsncwIgdM1LCDvyycIsl0MdizXAW6FbEU9Ff2nDNiAYCiCFVC8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5363616},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","import":"./dist/node.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./overlays":{"types":"./dist/overlays.d.ts","import":"./dist/overlays.js"},"./workers/pointcloud":{"types":"./dist/workers/pointcloud.d.ts","import":"./dist/workers/pointcloud.js"}},"gitHead":"4e2d517e1c9d6066e10c38b233d0c15d96396d04","scripts":{"lint":"eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0 && npm run depcruise","test":"vitest run","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsup","depcruise":"depcruise src --config .dependency-cruiser.cjs","typecheck":"tsc --noEmit -p tsconfig.json","test:watch":"vitest","check:package":"publint"},"_npmUser":{"name":"GitLab CI/CD","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"gitlab","oidcConfigId":"oidc:e04bf6e3-d3b3-470a-9863-527a6b9a2577"}},"repository":{"url":"git+https://gitlab.com/aici-packages/cad-board.git","type":"git","directory":"packages/cad"},"_npmVersion":"12.0.2","description":"AICI CAD drawing-board engine: document model, tools, commands, snapping, three.js rendering, DXF/SVG serialization, with React bindings.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"utility-types":"^3.11.0","three-viewport-gizmo":"^2.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"dxf-parser":"1.1.2","@tarikjabiri/dxf":"2.8.9"},"peerDependencies":{"react":"^18.2.0","three":"^0.182.0","react-dom":"^18.2.0","troika-three-text":"^0.52.4"},"peerDependenciesMeta":{"react":{"optional":true},"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cad_0.6.0_1789053657972_0.3839079235645313","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to a private repository"},"0.7.0":{"name":"@aici/cad","version":"0.7.0","keywords":["cad","dxf","three","drawing","aici","dwg"],"license":"UNLICENSED","_id":"@aici/cad@0.7.0","maintainers":[{"name":"chen.aici","email":"chen.li@aici.de"},{"name":"0xymg","email":"ymgozutok@gmail.com"},{"name":"tibet.aici","email":"tibet.akinci@aici.de"},{"name":"nurbuketeker","email":"n.teker@aici.de"}],"homepage":"https://gitlab.com/aici-packages/cad-board/-/blob/main/packages/cad/README.md","bugs":{"url":"https://gitlab.com/aici-packages/cad-board/-/issues"},"dist":{"shasum":"1aad791c398f77ff1b1b9d515a8c895f1ad0c2a8","tarball":"https://registry.npmjs.org/@aici/cad/-/cad-0.7.0.tgz","fileCount":34,"integrity":"sha512-8Zrz3dShXeL8IIEItT4QW+VNZY64QbzCeiFUHMDOHfaWVA7UMrgA3goOrndjow11Rz/apKMXggZHMYR3QDTayw==","signatures":[{"sig":"MEUCIQCbMAOvWCJRjrmM4FZ4B+ioswd8YK9irna1EO1q7L1N5AIgCnft09sH4KhdxXCV4N8Rpc5Qi9cigoto/5d0WMoUn5c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5314593},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","import":"./dist/node.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./overlays":{"types":"./dist/overlays.d.ts","import":"./dist/overlays.js"},"./workers/pointcloud":{"types":"./dist/workers/pointcloud.d.ts","import":"./dist/workers/pointcloud.js"}},"gitHead":"fb4f8a88eab5391dde9abca29d660ed02e9ac29c","scripts":{"lint":"eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0 && npm run depcruise","test":"vitest run","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsup","api:check":"node ../../scripts/api-snapshot.mjs --check","depcruise":"depcruise src --config .dependency-cruiser.cjs","typecheck":"tsc --noEmit -p tsconfig.json","test:watch":"vitest","api:snapshot":"node ../../scripts/api-snapshot.mjs","check:package":"publint"},"_npmUser":{"name":"GitLab CI/CD","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"gitlab","oidcConfigId":"oidc:e04bf6e3-d3b3-470a-9863-527a6b9a2577"}},"repository":{"url":"git+https://gitlab.com/aici-packages/cad-board.git","type":"git","directory":"packages/cad"},"_npmVersion":"12.0.2","description":"AICI CAD drawing-board engine: document model, tools, commands, snapping, three.js rendering, DXF/SVG serialization, with React bindings.","directories":{},"sideEffects":["./dist/workers/*"],"_nodeVersion":"22.23.2","dependencies":{"utility-types":"^3.11.0","three-viewport-gizmo":"^2.2.0"},"//sideEffects":"Every module is now import-side-effect-free (the command registry that used to register on load is gone), so a bundler may drop any entry a consumer does not reach. The worker entry is the one exception: it exists solely to pull in parser.worker for its side effect.","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"dxf-parser":"1.1.2","@tarikjabiri/dxf":"2.8.9"},"peerDependencies":{"react":"^18.2.0","three":"^0.182.0","react-dom":"^18.2.0","troika-three-text":"^0.52.4"},"peerDependenciesMeta":{"react":{"optional":true},"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cad_0.7.0_1789375725531_0.9359756022151435","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to a private repository"},"0.7.1":{"name":"@aici/cad","version":"0.7.1","keywords":["cad","dxf","three","drawing","aici","dwg"],"license":"UNLICENSED","_id":"@aici/cad@0.7.1","maintainers":[{"name":"chen.aici","email":"chen.li@aici.de"},{"name":"0xymg","email":"ymgozutok@gmail.com"},{"name":"tibet.aici","email":"tibet.akinci@aici.de"},{"name":"nurbuketeker","email":"n.teker@aici.de"}],"homepage":"https://gitlab.com/aici-packages/cad-board/-/blob/main/packages/cad/README.md","bugs":{"url":"https://gitlab.com/aici-packages/cad-board/-/issues"},"dist":{"shasum":"3f44e856eba6422dde6917d58630ac06f53855a1","tarball":"https://registry.npmjs.org/@aici/cad/-/cad-0.7.1.tgz","fileCount":38,"integrity":"sha512-lBrnQINh5+FbW7KCibypv+EE67BOi9orFSJCfG1GD+Jma3eP+jz3vMgT5+/F3Estcnh+CIb0x2HmZSCD/UUG6w==","signatures":[{"sig":"MEYCIQCbTCZl98H7O9ZwDEauYBqFiTLK2BoemRwibeY5WsxRowIhAKOOI0p8CYzvPROTEB/xY0/sH3AurYbTi33OMWuhAGzM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5328335},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","import":"./dist/node.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./overlays":{"types":"./dist/overlays.d.ts","import":"./dist/overlays.js"},"./workers/pointcloud":{"types":"./dist/workers/pointcloud.d.ts","import":"./dist/workers/pointcloud.js"}},"gitHead":"d8da5bafc086802665092286020cf81ef61976b6","scripts":{"lint":"eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0 && npm run depcruise","test":"vitest run","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsup","api:check":"node ../../scripts/api-snapshot.mjs --check","depcruise":"depcruise src --config .dependency-cruiser.cjs","typecheck":"tsc --noEmit -p tsconfig.json","test:watch":"vitest","api:snapshot":"node ../../scripts/api-snapshot.mjs","check:package":"publint"},"_npmUser":{"name":"GitLab CI/CD","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"gitlab","oidcConfigId":"oidc:e04bf6e3-d3b3-470a-9863-527a6b9a2577"}},"repository":{"url":"git+https://gitlab.com/aici-packages/cad-board.git","type":"git","directory":"packages/cad"},"_npmVersion":"12.0.2","description":"AICI CAD drawing-board engine: document model, tools, commands, snapping, three.js rendering, DXF/SVG serialization, with React bindings.","directories":{},"sideEffects":["./dist/workers/*","./src/workers/*","./src/core/pointCloud/parser.worker.ts"],"_nodeVersion":"22.23.2","dependencies":{"utility-types":"^3.11.0","three-viewport-gizmo":"^2.2.0"},"//sideEffects":"Every module is import-side-effect-free (the command registry that used to register on load is gone), so a bundler may drop any entry a consumer does not reach. The worker entry is the one exception: it installs the PLY parser handler on the worker scope when it runs. This field is read twice — by a consumer's bundler against dist/, and by esbuild against src/ while THIS package builds — so both paths are listed. 0.7.0 listed only dist/ and shipped an empty dist/workers/pointcloud.js; scripts/consumer-smoke.mjs now runs the built worker so that cannot ship again.","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"dxf-parser":"1.1.2","@tarikjabiri/dxf":"2.8.9"},"peerDependencies":{"react":"^18.2.0","three":"^0.182.0","react-dom":"^18.2.0","troika-three-text":"^0.52.4"},"peerDependenciesMeta":{"react":{"optional":true},"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cad_0.7.1_1789397604660_0.10489252966229912","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to a private repository"},"0.7.2":{"name":"@aici/cad","version":"0.7.2","keywords":["cad","dxf","three","drawing","aici","dwg"],"license":"UNLICENSED","_id":"@aici/cad@0.7.2","maintainers":[{"name":"chen.aici","email":"chen.li@aici.de"},{"name":"0xymg","email":"ymgozutok@gmail.com"},{"name":"tibet.aici","email":"tibet.akinci@aici.de"},{"name":"nurbuketeker","email":"n.teker@aici.de"}],"homepage":"https://gitlab.com/aici-packages/cad-board/-/blob/main/packages/cad/README.md","bugs":{"url":"https://gitlab.com/aici-packages/cad-board/-/issues"},"dist":{"shasum":"8c3c55a466da8e635629a7b72358ea179fad66d1","tarball":"https://registry.npmjs.org/@aici/cad/-/cad-0.7.2.tgz","fileCount":38,"integrity":"sha512-6ZkA5Z1IxTI1Qi5Ya/TZzzbl5kKXpaRtH2ueWf8LeXU0qna8KXLsnt2MakyoRZBldgRt9ZlmZhLnt3o8DAZJMg==","signatures":[{"sig":"MEUCIAORPzrX7xM6qrlBnWEvm4VsekpSg0pQCqvnB9GhDl37AiEAiVm6R9PpxIBi8Y+yiGZWrGkjwDVKTlTRIZ4yWaFhs+g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5336466},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","import":"./dist/node.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./overlays":{"types":"./dist/overlays.d.ts","import":"./dist/overlays.js"},"./workers/pointcloud":{"types":"./dist/workers/pointcloud.d.ts","import":"./dist/workers/pointcloud.js"}},"gitHead":"e0fb417220685afc0189fd667b7ea33e2250a8da","scripts":{"lint":"eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0 && npm run depcruise","test":"vitest run","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsup","api:check":"node ../../scripts/api-snapshot.mjs --check","depcruise":"depcruise src --config .dependency-cruiser.cjs","typecheck":"tsc --noEmit -p tsconfig.json","test:watch":"vitest","api:snapshot":"node ../../scripts/api-snapshot.mjs","check:package":"publint"},"_npmUser":{"name":"GitLab CI/CD","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"gitlab","oidcConfigId":"oidc:e04bf6e3-d3b3-470a-9863-527a6b9a2577"}},"repository":{"url":"git+https://gitlab.com/aici-packages/cad-board.git","type":"git","directory":"packages/cad"},"_npmVersion":"12.0.2","description":"AICI CAD drawing-board engine: document model, tools, commands, snapping, three.js rendering, DXF/SVG serialization, with React bindings.","directories":{},"sideEffects":["./dist/workers/*","./src/workers/*","./src/core/pointCloud/parser.worker.ts"],"_nodeVersion":"22.23.2","dependencies":{"utility-types":"^3.11.0","three-viewport-gizmo":"^2.2.0"},"//sideEffects":"Every module is import-side-effect-free (the command registry that used to register on load is gone), so a bundler may drop any entry a consumer does not reach. The worker entry is the one exception: it installs the PLY parser handler on the worker scope when it runs. This field is read twice — by a consumer's bundler against dist/, and by esbuild against src/ while THIS package builds — so both paths are listed. 0.7.0 listed only dist/ and shipped an empty dist/workers/pointcloud.js; scripts/consumer-smoke.mjs now runs the built worker so that cannot ship again.","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"dxf-parser":"1.1.2","@tarikjabiri/dxf":"2.8.9"},"peerDependencies":{"react":"^18.2.0","three":"^0.182.0","react-dom":"^18.2.0","troika-three-text":"^0.52.4"},"peerDependenciesMeta":{"react":{"optional":true},"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cad_0.7.2_1789402637902_0.8022209412754622","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to a private repository"},"0.9.0":{"name":"@aici/cad","version":"0.9.0","keywords":["cad","dxf","three","drawing","aici","dwg"],"license":"UNLICENSED","_id":"@aici/cad@0.9.0","maintainers":[{"name":"chen.aici","email":"chen.li@aici.de"},{"name":"0xymg","email":"ymgozutok@gmail.com"},{"name":"tibet.aici","email":"tibet.akinci@aici.de"},{"name":"nurbuketeker","email":"n.teker@aici.de"}],"homepage":"https://gitlab.com/aici-packages/cad-board/-/blob/main/packages/cad/README.md","bugs":{"url":"https://gitlab.com/aici-packages/cad-board/-/issues"},"dist":{"shasum":"f611cf0e8fb8e91d7747f2b1ef9c21a37352896b","tarball":"https://registry.npmjs.org/@aici/cad/-/cad-0.9.0.tgz","fileCount":38,"integrity":"sha512-OGt6t+hT+TJd+c6kid8z48tlVVDsKHORQA8qFFdDxsxNb7xP+CG68eYhu19zM2n4w7Lzzyp/5qnUvnThZ+iIoQ==","signatures":[{"sig":"MEQCIHxKNPrl2AbbrKiwYVWTsUllLBFaLti0PzQJpPV2vCmNAiA3pvpWiX0SfPLiB2QWc97fVc8FWyC5jSb2QMBxWgXubA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5453519},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","import":"./dist/node.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./overlays":{"types":"./dist/overlays.d.ts","import":"./dist/overlays.js"},"./workers/pointcloud":{"types":"./dist/workers/pointcloud.d.ts","import":"./dist/workers/pointcloud.js"}},"gitHead":"921377c55c322bef485037a9c3f9c6572f2e40ce","scripts":{"lint":"eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0 && npm run depcruise","test":"vitest run","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsup","api:check":"node ../../scripts/api-snapshot.mjs --check","depcruise":"depcruise src --config .dependency-cruiser.cjs","typecheck":"tsc --noEmit -p tsconfig.json","test:watch":"vitest","api:snapshot":"node ../../scripts/api-snapshot.mjs","check:package":"publint"},"_npmUser":{"name":"GitLab CI/CD","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"gitlab","oidcConfigId":"oidc:e04bf6e3-d3b3-470a-9863-527a6b9a2577"}},"repository":{"url":"git+https://gitlab.com/aici-packages/cad-board.git","type":"git","directory":"packages/cad"},"_npmVersion":"12.0.2","description":"AICI CAD drawing-board engine: document model, tools, commands, snapping, three.js rendering, DXF/SVG serialization, with React bindings.","directories":{},"sideEffects":["./dist/workers/*","./src/workers/*","./src/core/pointCloud/parser.worker.ts"],"_nodeVersion":"22.23.2","dependencies":{"utility-types":"^3.11.0","three-viewport-gizmo":"^2.2.0"},"//sideEffects":"Every module is import-side-effect-free (the command registry that used to register on load is gone), so a bundler may drop any entry a consumer does not reach. The worker entry is the one exception: it installs the PLY parser handler on the worker scope when it runs. This field is read twice — by a consumer's bundler against dist/, and by esbuild against src/ while THIS package builds — so both paths are listed. 0.7.0 listed only dist/ and shipped an empty dist/workers/pointcloud.js; scripts/consumer-smoke.mjs now runs the built worker so that cannot ship again.","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"dxf-parser":"1.1.2","@tarikjabiri/dxf":"2.8.9"},"peerDependencies":{"react":"^18.2.0","three":"^0.182.0","react-dom":"^18.2.0","troika-three-text":"^0.52.4"},"peerDependenciesMeta":{"react":{"optional":true},"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cad_0.9.0_1789572520910_0.8871270607684134","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to a private repository"},"0.9.1":{"name":"@aici/cad","version":"0.9.1","keywords":["cad","dxf","three","drawing","aici","dwg"],"license":"UNLICENSED","_id":"@aici/cad@0.9.1","maintainers":[{"name":"chen.aici","email":"chen.li@aici.de"},{"name":"0xymg","email":"ymgozutok@gmail.com"},{"name":"tibet.aici","email":"tibet.akinci@aici.de"},{"name":"nurbuketeker","email":"n.teker@aici.de"}],"homepage":"https://gitlab.com/aici-packages/cad-board/-/blob/main/packages/cad/README.md","bugs":{"url":"https://gitlab.com/aici-packages/cad-board/-/issues"},"dist":{"shasum":"196dfa0306a8fcf2569634356d2b17e3b16506b4","tarball":"https://registry.npmjs.org/@aici/cad/-/cad-0.9.1.tgz","fileCount":38,"integrity":"sha512-dr/Fe+o0xNPGnUCyMqEy80pl2vLaTkQWGln3JWnA5F8j1IQ4t33M8wu0z50X6m28LrURl9X7A1E/xWLXxY7U2w==","signatures":[{"sig":"MEUCIQCtPYQaS14JYHNTmk2JYj9CVE24sYSNxA4naHz2pAmATgIgMlUO0qVLw56aawpbbOOcjqDfL/mrQuF+u33vQowBBgg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5457696},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","import":"./dist/node.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./overlays":{"types":"./dist/overlays.d.ts","import":"./dist/overlays.js"},"./workers/pointcloud":{"types":"./dist/workers/pointcloud.d.ts","import":"./dist/workers/pointcloud.js"}},"gitHead":"e9c3fc8a71d175fd699134921c362ef17efa5a19","scripts":{"lint":"eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0 && npm run depcruise","test":"vitest run","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsup","api:check":"node ../../scripts/api-snapshot.mjs --check","depcruise":"depcruise src --config .dependency-cruiser.cjs","typecheck":"tsc --noEmit -p tsconfig.json","test:watch":"vitest","api:snapshot":"node ../../scripts/api-snapshot.mjs","check:package":"publint"},"_npmUser":{"name":"GitLab CI/CD","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"gitlab","oidcConfigId":"oidc:e04bf6e3-d3b3-470a-9863-527a6b9a2577"}},"repository":{"url":"git+https://gitlab.com/aici-packages/cad-board.git","type":"git","directory":"packages/cad"},"_npmVersion":"12.0.2","description":"AICI CAD drawing-board engine: document model, tools, commands, snapping, three.js rendering, DXF/SVG serialization, with React bindings.","directories":{},"sideEffects":["./dist/workers/*","./src/workers/*","./src/core/pointCloud/parser.worker.ts"],"_nodeVersion":"22.23.2","dependencies":{"utility-types":"^3.11.0","three-viewport-gizmo":"^2.2.0"},"//sideEffects":"Every module is import-side-effect-free (the command registry that used to register on load is gone), so a bundler may drop any entry a consumer does not reach. The worker entry is the one exception: it installs the PLY parser handler on the worker scope when it runs. This field is read twice — by a consumer's bundler against dist/, and by esbuild against src/ while THIS package builds — so both paths are listed. 0.7.0 listed only dist/ and shipped an empty dist/workers/pointcloud.js; scripts/consumer-smoke.mjs now runs the built worker so that cannot ship again.","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"dxf-parser":"1.1.2","@tarikjabiri/dxf":"2.8.9"},"peerDependencies":{"react":"^18.2.0","three":"^0.182.0","react-dom":"^18.2.0","troika-three-text":"^0.52.4"},"peerDependenciesMeta":{"react":{"optional":true},"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cad_0.9.1_1789572904384_0.6826973795215141","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to a private repository"},"0.9.2":{"name":"@aici/cad","version":"0.9.2","keywords":["cad","dxf","three","drawing","aici","dwg"],"license":"UNLICENSED","_id":"@aici/cad@0.9.2","maintainers":[{"name":"chen.aici","email":"chen.li@aici.de"},{"name":"0xymg","email":"ymgozutok@gmail.com"},{"name":"tibet.aici","email":"tibet.akinci@aici.de"},{"name":"nurbuketeker","email":"n.teker@aici.de"}],"homepage":"https://gitlab.com/aici-packages/cad-board/-/blob/main/packages/cad/README.md","bugs":{"url":"https://gitlab.com/aici-packages/cad-board/-/issues"},"dist":{"shasum":"230108d6c836b9dd76e84d9794d407f868874c4e","tarball":"https://registry.npmjs.org/@aici/cad/-/cad-0.9.2.tgz","fileCount":38,"integrity":"sha512-ez91kQoynTaCrZmJfogVG2vvXC3jILgijl7gTmHTLhyz+ecSTZ3poqiwBSL1kylH/PxKTDVgYp4PO3D2UTvhAA==","signatures":[{"sig":"MEUCIQDdK3gTX7l/MzmbErdbefH8UqXau3yICVAlWzFmAqPOGgIgdJUMIO/Gm7bWLQdLv8300ZdWAjfigKnOmUpJ7iOCHbM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5465369},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","import":"./dist/node.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./overlays":{"types":"./dist/overlays.d.ts","import":"./dist/overlays.js"},"./workers/pointcloud":{"types":"./dist/workers/pointcloud.d.ts","import":"./dist/workers/pointcloud.js"}},"gitHead":"cd24c14a7290fd37301696d0473b859ff7558f0c","scripts":{"lint":"eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0 && npm run depcruise","test":"vitest run","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsup","api:check":"node ../../scripts/api-snapshot.mjs --check","depcruise":"depcruise src --config .dependency-cruiser.cjs","typecheck":"tsc --noEmit -p tsconfig.json","test:watch":"vitest","api:snapshot":"node ../../scripts/api-snapshot.mjs","check:package":"publint"},"_npmUser":{"name":"GitLab CI/CD","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"gitlab","oidcConfigId":"oidc:e04bf6e3-d3b3-470a-9863-527a6b9a2577"}},"repository":{"url":"git+https://gitlab.com/aici-packages/cad-board.git","type":"git","directory":"packages/cad"},"_npmVersion":"12.0.2","description":"AICI CAD drawing-board engine: document model, tools, commands, snapping, three.js rendering, DXF/SVG serialization, with React bindings.","directories":{},"sideEffects":["./dist/workers/*","./src/workers/*","./src/core/pointCloud/parser.worker.ts"],"_nodeVersion":"22.23.2","dependencies":{"utility-types":"^3.11.0","three-viewport-gizmo":"^2.2.0"},"//sideEffects":"Every module is import-side-effect-free (the command registry that used to register on load is gone), so a bundler may drop any entry a consumer does not reach. The worker entry is the one exception: it installs the PLY parser handler on the worker scope when it runs. This field is read twice — by a consumer's bundler against dist/, and by esbuild against src/ while THIS package builds — so both paths are listed. 0.7.0 listed only dist/ and shipped an empty dist/workers/pointcloud.js; scripts/consumer-smoke.mjs now runs the built worker so that cannot ship again.","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"dxf-parser":"1.1.2","@tarikjabiri/dxf":"2.8.9"},"peerDependencies":{"react":"^18.2.0","three":"^0.182.0","react-dom":"^18.2.0","troika-three-text":"^0.52.4"},"peerDependenciesMeta":{"react":{"optional":true},"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cad_0.9.2_1789574058403_0.5480358246507475","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to a private repository"},"0.10.0":{"name":"@aici/cad","version":"0.10.0","keywords":["cad","dxf","three","drawing","aici","dwg"],"license":"UNLICENSED","_id":"@aici/cad@0.10.0","maintainers":[{"name":"chen.aici","email":"chen.li@aici.de"},{"name":"0xymg","email":"ymgozutok@gmail.com"},{"name":"tibet.aici","email":"tibet.akinci@aici.de"},{"name":"nurbuketeker","email":"n.teker@aici.de"}],"homepage":"https://gitlab.com/aici-packages/cad-board/-/blob/main/packages/cad/README.md","bugs":{"url":"https://gitlab.com/aici-packages/cad-board/-/issues"},"dist":{"shasum":"8cdae64cba86a4f4e994ea87b9f1ab1634f9d4f5","tarball":"https://registry.npmjs.org/@aici/cad/-/cad-0.10.0.tgz","fileCount":38,"integrity":"sha512-olam04ZnX7IJ0qnXK8XLlTwIGCj32fN7H3BZoQHas4rTlcilH4q2UdMCkqMwlF3oYUrkfH6GcMW60vMbciy0hA==","signatures":[{"sig":"MEYCIQD07ZfuaMhJ2PFeXk8qfAmUZMr4zO++y8nq/HOoeRwcywIhANdQItv0HooKrkiwxtkhlzojwZ5hZmRqgVWaao5haot1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5466212},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","import":"./dist/node.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./overlays":{"types":"./dist/overlays.d.ts","import":"./dist/overlays.js"},"./workers/pointcloud":{"types":"./dist/workers/pointcloud.d.ts","import":"./dist/workers/pointcloud.js"}},"gitHead":"eaa26973acb1f1f246b4332d2c1cd58ec6cc526d","scripts":{"lint":"eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0 && npm run depcruise","test":"vitest run","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsup","api:check":"node ../../scripts/api-snapshot.mjs --check","depcruise":"depcruise src --config .dependency-cruiser.cjs","typecheck":"tsc --noEmit -p tsconfig.json","test:watch":"vitest","api:snapshot":"node ../../scripts/api-snapshot.mjs","check:package":"publint"},"_npmUser":{"name":"GitLab CI/CD","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"gitlab","oidcConfigId":"oidc:e04bf6e3-d3b3-470a-9863-527a6b9a2577"}},"repository":{"url":"git+https://gitlab.com/aici-packages/cad-board.git","type":"git","directory":"packages/cad"},"_npmVersion":"12.0.2","description":"AICI CAD drawing-board engine: document model, tools, commands, snapping, three.js rendering, DXF/SVG serialization, with React bindings.","directories":{},"sideEffects":["./dist/workers/*","./src/workers/*","./src/core/pointCloud/parser.worker.ts"],"_nodeVersion":"22.23.2","dependencies":{"utility-types":"^3.11.0","three-viewport-gizmo":"^2.2.0"},"//sideEffects":"Every module is import-side-effect-free (the command registry that used to register on load is gone), so a bundler may drop any entry a consumer does not reach. The worker entry is the one exception: it installs the PLY parser handler on the worker scope when it runs. This field is read twice — by a consumer's bundler against dist/, and by esbuild against src/ while THIS package builds — so both paths are listed. 0.7.0 listed only dist/ and shipped an empty dist/workers/pointcloud.js; scripts/consumer-smoke.mjs now runs the built worker so that cannot ship again.","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"dxf-parser":"1.1.2","@tarikjabiri/dxf":"2.8.9"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","three":"^0.182.0 || ^0.183.0 || ^0.184.0","react-dom":"^18.2.0 || ^19.0.0","troika-three-text":"^0.52.4"},"//peerDependencies":"Each supported three minor is listed explicitly rather than as a >=0.182 <0.185 range: three ships breaking changes in minors, so a new one is added here only once the consumer smoke test has run against it (scripts/consumer-smoke.mjs, MATRIX).","peerDependenciesMeta":{"react":{"optional":true},"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cad_0.10.0_1789663198385_0.8070597164152795","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to a private repository"},"0.11.0":{"name":"@aici/cad","version":"0.11.0","keywords":["cad","dxf","three","drawing","aici","dwg"],"license":"UNLICENSED","_id":"@aici/cad@0.11.0","maintainers":[{"name":"chen.aici","email":"chen.li@aici.de"},{"name":"0xymg","email":"ymgozutok@gmail.com"},{"name":"tibet.aici","email":"tibet.akinci@aici.de"},{"name":"nurbuketeker","email":"n.teker@aici.de"}],"homepage":"https://gitlab.com/aici-packages/cad-board/-/blob/main/packages/cad/README.md","bugs":{"url":"https://gitlab.com/aici-packages/cad-board/-/issues"},"dist":{"shasum":"42b653ec446e1582957f8e562a171a095a01c30f","tarball":"https://registry.npmjs.org/@aici/cad/-/cad-0.11.0.tgz","fileCount":41,"integrity":"sha512-eaGPQq5tDgsf6pF6cSUPgKZefhCJJOh1BBeEJ5oobmEzsC9oLgRchpa5wx229JZvrm+YFNEKzb7TyUJlcLstlw==","signatures":[{"sig":"MEQCIANOAnRciqafjFSxfs9vkkeqb/T4Y2ik9XcDU54VFDZuAiBt/Fj4Bw8swemRp8xXUy3v2CE8xw9YujHOfqrn/8rzHA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC9T06YDF7o6XBQdrPgIbfRQhETRtmbG1iTc6EMneqvwQIgAJKRdA+qdpEnyfZmO2UaUOZgy5FHUE2X0O7CRZ23laQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6039135},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","import":"./dist/node.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./fonts/*":"./fonts/*","./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./overlays":{"types":"./dist/overlays.d.ts","import":"./dist/overlays.js"},"./workers/pointcloud":{"types":"./dist/workers/pointcloud.d.ts","import":"./dist/workers/pointcloud.js"}},"gitHead":"c57d65b30f2779c87f75106295d5a5615c061fea","scripts":{"lint":"eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0 && npm run depcruise","test":"vitest run","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsup","api:check":"node ../../scripts/api-snapshot.mjs --check","depcruise":"depcruise src --config .dependency-cruiser.cjs","typecheck":"tsc --noEmit -p tsconfig.json","test:watch":"vitest","api:snapshot":"node ../../scripts/api-snapshot.mjs","check:package":"publint"},"_npmUser":{"name":"GitLab CI/CD","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"gitlab","oidcConfigId":"oidc:e04bf6e3-d3b3-470a-9863-527a6b9a2577"}},"repository":{"url":"git+https://gitlab.com/aici-packages/cad-board.git","type":"git","directory":"packages/cad"},"_npmVersion":"12.0.2","description":"AICI CAD drawing-board engine: document model, tools, commands, snapping, three.js rendering, DXF/SVG serialization, with React bindings.","directories":{},"sideEffects":["./dist/workers/*","./src/workers/*","./src/core/pointCloud/parser.worker.ts"],"_nodeVersion":"22.23.2","dependencies":{"utility-types":"^3.11.0","three-viewport-gizmo":"^2.2.0"},"//sideEffects":"Every module is import-side-effect-free (the command registry that used to register on load is gone), so a bundler may drop any entry a consumer does not reach. The worker entry is the one exception: it installs the PLY parser handler on the worker scope when it runs. This field is read twice — by a consumer's bundler against dist/, and by esbuild against src/ while THIS package builds — so both paths are listed. 0.7.0 listed only dist/ and shipped an empty dist/workers/pointcloud.js; scripts/consumer-smoke.mjs now runs the built worker so that cannot ship again.","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"dxf-parser":"1.1.2","@tarikjabiri/dxf":"2.8.9"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","three":"^0.182.0 || ^0.183.0 || ^0.184.0","react-dom":"^18.2.0 || ^19.0.0","troika-three-text":"^0.52.4"},"//peerDependencies":"Each supported three minor is listed explicitly rather than as a >=0.182 <0.185 range: three ships breaking changes in minors, so a new one is added here only once the consumer smoke test has run against it (scripts/consumer-smoke.mjs, MATRIX).","peerDependenciesMeta":{"react":{"optional":true},"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cad_0.11.0_1789721460871_0.35258521655748365","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to a private repository"},"0.12.0":{"name":"@aici/cad","version":"0.12.0","keywords":["cad","dxf","three","drawing","aici","dwg"],"license":"UNLICENSED","_id":"@aici/cad@0.12.0","maintainers":[{"name":"chen.aici","email":"chen.li@aici.de"},{"name":"0xymg","email":"ymgozutok@gmail.com"},{"name":"tibet.aici","email":"tibet.akinci@aici.de"},{"name":"nurbuketeker","email":"n.teker@aici.de"}],"homepage":"https://gitlab.com/aici-packages/cad-board/-/blob/main/packages/cad/README.md","bugs":{"url":"https://gitlab.com/aici-packages/cad-board/-/issues"},"dist":{"shasum":"531ffca6f6ae1d32480770b05d4b04fa0324ea9e","tarball":"https://registry.npmjs.org/@aici/cad/-/cad-0.12.0.tgz","fileCount":41,"integrity":"sha512-EobkjU2cq/3lTvlloE21NuuUOa9DXMCXUhuoZYbCMZfcx7MtzQ/OtZg8g9vvZJzbcNB53QGwX8vFaRtZspg+DA==","signatures":[{"sig":"MEYCIQDqqUuYY1RgMEvZuUzV52my0p9eU7sC2AHj43UtddRNGAIhAIsl6c5rGl9EVfUy9+NPEDGcvHTt4bYSKthZeYi5Ogsa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDoFkP2wjAHyIqEdXKL2PcGyu4wKf8EIqNTMR20t3dH1QIgK8VGNF6aT94BVZ7ZHTHkd9BcwFV6Q2dbISwu5QC0VGQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6062923},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","import":"./dist/node.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./fonts/*":"./fonts/*","./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./overlays":{"types":"./dist/overlays.d.ts","import":"./dist/overlays.js"},"./workers/pointcloud":{"types":"./dist/workers/pointcloud.d.ts","import":"./dist/workers/pointcloud.js"}},"gitHead":"3bd1690c5b77cbe0b582fe06a46213d9234be765","scripts":{"lint":"eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0 && npm run depcruise","test":"vitest run","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsup","api:check":"node ../../scripts/api-snapshot.mjs --check","depcruise":"depcruise src --config .dependency-cruiser.cjs","typecheck":"tsc --noEmit -p tsconfig.json","test:watch":"vitest","api:snapshot":"node ../../scripts/api-snapshot.mjs","check:package":"publint"},"_npmUser":{"name":"GitLab CI/CD","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"gitlab","oidcConfigId":"oidc:e04bf6e3-d3b3-470a-9863-527a6b9a2577"}},"repository":{"url":"git+https://gitlab.com/aici-packages/cad-board.git","type":"git","directory":"packages/cad"},"_npmVersion":"12.0.2","description":"AICI CAD drawing-board engine: document model, tools, commands, snapping, three.js rendering, DXF/SVG serialization, with React bindings.","directories":{},"sideEffects":["./dist/workers/*","./src/workers/*","./src/core/pointCloud/parser.worker.ts"],"_nodeVersion":"22.23.2","dependencies":{"utility-types":"^3.11.0","three-viewport-gizmo":"^2.2.0"},"//sideEffects":"Every module is import-side-effect-free (the command registry that used to register on load is gone), so a bundler may drop any entry a consumer does not reach. The worker entry is the one exception: it installs the PLY parser handler on the worker scope when it runs. This field is read twice — by a consumer's bundler against dist/, and by esbuild against src/ while THIS package builds — so both paths are listed. 0.7.0 listed only dist/ and shipped an empty dist/workers/pointcloud.js; scripts/consumer-smoke.mjs now runs the built worker so that cannot ship again.","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"dxf-parser":"1.1.2","@tarikjabiri/dxf":"2.8.9"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","three":"^0.182.0 || ^0.183.0 || ^0.184.0","react-dom":"^18.2.0 || ^19.0.0","troika-three-text":"^0.52.4"},"//peerDependencies":"Each supported three minor is listed explicitly rather than as a >=0.182 <0.185 range: three ships breaking changes in minors, so a new one is added here only once the consumer smoke test has run against it (scripts/consumer-smoke.mjs, MATRIX).","peerDependenciesMeta":{"react":{"optional":true},"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cad_0.12.0_1789737700922_0.029014145582320294","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to a private repository"},"0.8.0":{"name":"@aici/cad","version":"0.8.0","keywords":["cad","dxf","three","drawing","aici","dwg"],"license":"UNLICENSED","_id":"@aici/cad@0.8.0","maintainers":[{"name":"chen.aici","email":"chen.li@aici.de"},{"name":"0xymg","email":"ymgozutok@gmail.com"},{"name":"tibet.aici","email":"tibet.akinci@aici.de"},{"name":"nurbuketeker","email":"n.teker@aici.de"}],"homepage":"https://gitlab.com/aici-packages/cad-board/-/blob/main/packages/cad/README.md","bugs":{"url":"https://gitlab.com/aici-packages/cad-board/-/issues"},"dist":{"shasum":"6583fb5ba2d9727afe03bca9aaf8a654d0b86055","tarball":"https://registry.npmjs.org/@aici/cad/-/cad-0.8.0.tgz","fileCount":38,"integrity":"sha512-+5nFj8ixVochninQZ7b/zwyTCV5vxfYTIBycz6TVTCr89jZv+P6/cf6uV8hqAoXfFsiw9vxlxhRd4Yrexuehmw==","signatures":[{"sig":"MEQCIFKWtJnIjSCirwCh/1v9DVL825O1dLOnrqhTB7R23uSRAiB0oufhvyD1IEjXBx5B23Gqb1LFJkZx+M5PiMRjp31eyQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIEs7hpBPBN0/UB1s0BDR6UDyGCJo6BqNuccce0AM8Mk1AiEA1ici0AVYME0ssUB8XOyjlZEzkk34hPN5R4Zrkb5XcHs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5331215},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","import":"./dist/node.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./overlays":{"types":"./dist/overlays.d.ts","import":"./dist/overlays.js"},"./workers/pointcloud":{"types":"./dist/workers/pointcloud.d.ts","import":"./dist/workers/pointcloud.js"}},"gitHead":"a7dd66356e3345ed294aa79a7f2726ebbb6c97b1","scripts":{"lint":"eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0 && npm run depcruise","test":"vitest run","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsup","api:check":"node ../../scripts/api-snapshot.mjs --check","depcruise":"depcruise src --config .dependency-cruiser.cjs","typecheck":"tsc --noEmit -p tsconfig.json","test:watch":"vitest","api:snapshot":"node ../../scripts/api-snapshot.mjs","check:package":"publint"},"_npmUser":{"name":"GitLab CI/CD","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"gitlab","oidcConfigId":"oidc:e04bf6e3-d3b3-470a-9863-527a6b9a2577"}},"repository":{"url":"git+https://gitlab.com/aici-packages/cad-board.git","type":"git","directory":"packages/cad"},"_npmVersion":"12.0.2","description":"AICI CAD drawing-board engine: document model, tools, commands, snapping, three.js rendering, DXF/SVG serialization, with React bindings.","directories":{},"sideEffects":["./dist/workers/*","./src/workers/*","./src/core/pointCloud/parser.worker.ts"],"_nodeVersion":"22.23.2","dependencies":{"utility-types":"^3.11.0","three-viewport-gizmo":"^2.2.0"},"//sideEffects":"Every module is import-side-effect-free (the command registry that used to register on load is gone), so a bundler may drop any entry a consumer does not reach. The worker entry is the one exception: it installs the PLY parser handler on the worker scope when it runs. This field is read twice — by a consumer's bundler against dist/, and by esbuild against src/ while THIS package builds — so both paths are listed. 0.7.0 listed only dist/ and shipped an empty dist/workers/pointcloud.js; scripts/consumer-smoke.mjs now runs the built worker so that cannot ship again.","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"dxf-parser":"1.1.2","@tarikjabiri/dxf":"2.8.9"},"peerDependencies":{"react":"^18.2.0","three":"^0.182.0","react-dom":"^18.2.0","troika-three-text":"^0.52.4"},"peerDependenciesMeta":{"react":{"optional":true},"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cad_0.8.0_1790067459137_0.3230366288625339","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to a private repository"},"1.0.0":{"name":"@aici/cad","version":"1.0.0","keywords":["cad","dxf","three","drawing","aici","dwg"],"license":"UNLICENSED","_id":"@aici/cad@1.0.0","maintainers":[{"name":"chen.aici","email":"chen.li@aici.de"},{"name":"0xymg","email":"ymgozutok@gmail.com"},{"name":"tibet.aici","email":"tibet.akinci@aici.de"},{"name":"nurbuketeker","email":"n.teker@aici.de"}],"homepage":"https://gitlab.com/aici-packages/cad-board/-/blob/main/packages/cad/README.md","bugs":{"url":"https://gitlab.com/aici-packages/cad-board/-/issues"},"dist":{"shasum":"e94049e1eb815aba47bf6b7f9b571bb4555e6df2","tarball":"https://registry.npmjs.org/@aici/cad/-/cad-1.0.0.tgz","fileCount":41,"integrity":"sha512-qhXoVb6yRHQXRKwo3YCMXxfqGmdhPvcp6bqgl+VvT1+sYitJsj8k6OWuZTYNl1W9axq6LWbyU2GNCDPHjTRXkg==","signatures":[{"sig":"MEQCIFk6IKGzFQJb1/lsqpb39JzOdACGjScf6QEvsbRUUMChAiBwt2sinW1fsp2fMl1o8e0DbCNy4wMkCmGkzlp6gylv0Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBnHuDL0pwX7J8qdNzWSnDx5QGxeIWFJsCwPbrZB6A54AiBghDeBfWxZDJ6ztILnxsMk4PUfmZVZD0UX6qqaodPX/g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5925912},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","import":"./dist/node.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./fonts/*":"./fonts/*","./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./overlays":{"types":"./dist/overlays.d.ts","import":"./dist/overlays.js"},"./workers/pointcloud":{"types":"./dist/workers/pointcloud.d.ts","import":"./dist/workers/pointcloud.js"}},"gitHead":"74f47a01520e0f7a18622ae4956901b76ae7e08b","scripts":{"lint":"eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0 && npm run depcruise","test":"vitest run","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsup","api:check":"node ../../scripts/api-snapshot.mjs --check","depcruise":"depcruise src --config .dependency-cruiser.cjs","typecheck":"tsc --noEmit -p tsconfig.json","test:watch":"vitest","api:snapshot":"node ../../scripts/api-snapshot.mjs","check:package":"publint"},"_npmUser":{"name":"GitLab CI/CD","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"gitlab","oidcConfigId":"oidc:e04bf6e3-d3b3-470a-9863-527a6b9a2577"}},"repository":{"url":"git+https://gitlab.com/aici-packages/cad-board.git","type":"git","directory":"packages/cad"},"_npmVersion":"12.0.2","description":"AICI CAD drawing-board engine: document model, tools, commands, snapping, three.js rendering, DXF/SVG serialization, with React bindings.","directories":{},"sideEffects":["./dist/workers/*","./src/workers/*","./src/core/pointCloud/parser.worker.ts"],"_nodeVersion":"22.23.2","dependencies":{"utility-types":"^3.11.0","three-viewport-gizmo":"^2.2.0"},"//sideEffects":"Every module is import-side-effect-free (the command registry that used to register on load is gone), so a bundler may drop any entry a consumer does not reach. The worker entry is the one exception: it installs the PLY parser handler on the worker scope when it runs. This field is read twice — by a consumer's bundler against dist/, and by esbuild against src/ while THIS package builds — so both paths are listed. 0.7.0 listed only dist/ and shipped an empty dist/workers/pointcloud.js; scripts/consumer-smoke.mjs now runs the built worker so that cannot ship again.","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"dxf-parser":"1.1.2","@tarikjabiri/dxf":"2.8.9"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","three":"^0.182.0 || ^0.183.0 || ^0.184.0","react-dom":"^18.2.0 || ^19.0.0","troika-three-text":"^0.52.4"},"//peerDependencies":"Each supported three minor is listed explicitly rather than as a >=0.182 <0.185 range: three ships breaking changes in minors, so a new one is added here only once the consumer smoke test has run against it (scripts/consumer-smoke.mjs, MATRIX).","peerDependenciesMeta":{"react":{"optional":true},"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cad_1.0.0_1790067471622_0.20087479496805027","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to a private repository"}},"time":{"created":"2026-09-07T13:38:43.347Z","modified":"2026-09-23T08:59:04.843Z","0.1.0":"2026-09-07T13:38:43.643Z","0.1.1":"2026-09-08T07:46:48.884Z","0.2.0":"2026-09-08T12:06:30.984Z","0.3.0":"2026-09-08T14:18:58.792Z","0.4.0":"2026-09-10T10:20:51.637Z","0.5.0":"2026-09-10T11:00:02.839Z","0.6.0":"2026-09-10T15:20:58.172Z","0.7.0":"2026-09-14T08:48:45.707Z","0.7.1":"2026-09-14T14:53:24.849Z","0.7.2":"2026-09-14T16:17:18.128Z","0.9.0":"2026-09-16T15:28:41.083Z","0.9.1":"2026-09-16T15:35:04.614Z","0.9.2":"2026-09-16T15:54:18.628Z","0.10.0":"2026-09-17T16:39:58.546Z","0.11.0":"2026-09-18T08:51:01.002Z","0.12.0":"2026-09-18T13:21:41.032Z","0.8.0":"2026-09-22T08:57:39.234Z","1.0.0":"2026-09-22T08:57:51.757Z"},"bugs":{"url":"https://gitlab.com/aici-packages/cad-board/-/issues"},"license":"UNLICENSED","homepage":"https://gitlab.com/aici-packages/cad-board/-/blob/main/packages/cad/README.md","keywords":["cad","dxf","three","drawing","aici","dwg"],"repository":{"url":"git+https://gitlab.com/aici-packages/cad-board.git","type":"git","directory":"packages/cad"},"description":"AICI CAD drawing-board engine: document model, tools, commands, snapping, three.js rendering, DXF/SVG serialization, with React bindings.","maintainers":[{"name":"0xymg","email":"ymgozutok@gmail.com"},{"name":"chen.aici","email":"chen.li@aici.de"},{"name":"nurbuketeker","email":"n.teker@aici.de"},{"name":"tibet.aici","email":"tibet.akinci@aici.de"}],"readme":"# @aici/cad\n\nThe AICI CAD drawing-board engine: a 2D/3D CAD document model with tools,\ncommands (undo/redo), object snapping, constraint solving, three.js rendering,\nand DXF / SVG serialization — plus React bindings for mounting the board.\n\nIt is the engine behind the drawing page of `site-v2-desktop` and\n`urbanism-desktop`. Both apps consume this package; neither carries its own copy.\n\nFull developer guide (tools, prompts, commands, dimensions, rendering,\nimport/export, embedding): [`docs/developer-guide/`](../../docs/developer-guide/README.md).\n\n## Install\n\n```bash\nnpm install @aici/cad three troika-three-text\n# React apps:\nnpm install react react-dom\n```\n\nPublished on npmjs.com under the `aici` organization. Publicly installable;\nthe code is proprietary (`UNLICENSED`) and intended for AICI applications.\n\n`three` and `troika-three-text` are peer dependencies — they must be a single\ncopy in your app (three's `instanceof` checks and material caches break with\ntwo). `react`/`react-dom` are optional peers, only needed for `@aici/cad/react`.\n\n## Entry points\n\n| Import | Contents |\n|---|---|\n| `@aici/cad` | `DrawingEngine`, `DrawingDocument`, entities, layers, commands, tools, snaps, config, DXF/SVG serialization, `DrawingCoreHost` contract |\n| `@aici/cad/react` | `DrawingBoard`, `DrawingEngineProvider`, `BoardViewStateProvider`, hooks (`useActiveTool`, `useSelectionState`, `useLayerState`, `useDrawingConfig`, …) |\n| `@aici/cad/overlays` | point-cloud (PLY) and density-map overlays |\n| `@aici/cad/workers/pointcloud` | the PLY parser Web Worker entry |\n| `@aici/cad/testing` | `createMemoryHost()` — an in-memory `DrawingCoreHost` for tests and harnesses |\n| `@aici/cad/node` | **Node only** (an Electron main process): DWG ⇄ DXF through the ODA File Converter — `resolveOdaBinaryPath`, `convertCadFile(s)`, `readDwgAsDxf`, `ODA_ERROR_CODE`; and `exportFontBundle()`, the font every export names, to ship next to it in a zip |\n\n## Minimal usage (React)\n\n```tsx\nimport { DrawingEngine, DrawingDocument, CameraMode } from '@aici/cad'\nimport { DrawingBoard, DrawingEngineProvider, BoardViewStateProvider } from '@aici/cad/react'\nimport { createMemoryHost } from '@aici/cad/testing'\nimport PointCloudWorker from '@aici/cad/workers/pointcloud?worker' // Vite\n\nconst engine = new DrawingEngine(createMemoryHost({ createPointCloudParser: () => new PointCloudWorker() }))\nengine.loadDocument(new DrawingDocument('floor-1', 'project-1'))\n\n<DrawingEngineProvider engine={engine}>\n  <BoardViewStateProvider store={viewState}>   {/* see BoardViewStateStore */}\n    <DrawingBoard cameraMode={CameraMode.TwoD} onSave={() => save(engine.exportToDxf())} />\n  </BoardViewStateProvider>\n</DrawingEngineProvider>\n```\n\nHeadless use (no React, no DOM) works too: `new DrawingEngine(host)`,\n`engine.loadFromDxf(text, floorId, projectId)`, `engine.exportToDxf()`,\n`engine.exportToSvg()`.\n\n## What the app provides: `DrawingCoreHost`\n\nThe engine never touches storage, the network, the OS clipboard, the DOM\noutside its canvas, or any global. Everything it needs from the outside comes\nthrough one object you pass to `new DrawingEngine(host)`.\n\n**Every field is optional.** Supply the ones whose features you want:\n`new DrawingEngine({})` is a drawing board and nothing else. Omit a port and\n`engine.supports('<port>')` reports its absence, while a call that needed it\nthrows `MissingHostCapabilityError` naming the port — it never silently does\nnothing.\n\n| Field | Purpose | Without it |\n|---|---|---|\n| `images` | load / ingest / copy / list / gc raster images by id | images render as broken |\n| `clipboard` | OS clipboard text + an in-app fragment cache for same-app paste | copy / cut / paste throw |\n| `overlays` | loaders for point-cloud and density-map data | restoring an overlay throws; omit the port entirely if you have none |\n| `autosave.saveSessionDraft` | where recovery drafts go | `autosaveDraftWriter()` returns `null` |\n| `logger` | `getLogger(context)` → `{ debug, info, warn, error }` | core's log lines are no-ops |\n| `workers.createPointCloudParser` | constructs the PLY parser worker (see the workers entry) | PLY parsing runs on the calling thread, warned about once |\n\n`@aici/cad/testing`'s `createMemoryHost()` is a complete reference implementation.\n\n**Theme** is pushed, not read: call `engine.setTheme({ foreground, isDark, uiScale })`\nwhen your theme or UI scale changes (`readDomTheme()` in `@aici/cad/react`\nreads the usual `--foreground` / `.dark` / `data-font-size` conventions).\n\n**Preferences**: `drawingConfigStore.getState().hydrate(raw)` with whatever you\npersisted; the schema and defaults live in the package.\n\n## DWG (`@aici/cad/node`)\n\nThe engine reads and writes DXF. DWG is a closed format: the apps convert it\nwith the [ODA File Converter](https://www.opendesign.com/guestfiles/oda_file_converter),\nan executable each app ships in its resources (`resources/OdaFileConverter/`,\nper-platform in a checkout, flattened by electron-builder when packaged). The\nnode entry wraps that binary; nothing in it depends on Electron.\n\n```ts\n// main process only\nimport { convertCadFile, convertCadFiles, readDwgAsDxf, resolveOdaBinaryPath, ODA_ERROR_CODE } from '@aici/cad/node'\n\nconst options = {\n  binary: resolveOdaBinaryPath(app.isPackaged\n    ? { root: path.join(process.resourcesPath, 'OdaFileConverter'), layout: 'flat' }\n    : { root: path.join(app.getAppPath(), 'resources', 'OdaFileConverter'), layout: 'per-arch' }),\n  logger: getLogger('ODA'),          // optional, the same shape as DrawingCoreHost.logger's loggers\n}\n\nawait convertCadFile(savedDxfPath, targetDwgPath, 'DWG', options)            // export one floor\nawait convertCadFiles(floors.map(f => ({ source: f.dxf, destination: f.dwg })), 'DWG', options) // one converter run for a survey\nconst dxfText = await readDwgAsDxf(pickedDwgPath, options)                   // import → importDxfToDocument(dxfText, …)\n```\n\nFailures are `OdaError`s with a stable `code` (`ODA_UNSUPPORTED_PLATFORM`,\n`ODA_BINARY_MISSING`, `ODA_CONVERSION_FAILED`). Forward `code` across IPC and\nlet the renderer choose the translated message; the error's own `message` is\nfor the log. The renderer must never import this entry — it pulls in `node:fs`.\n\n### The font that goes with an export\n\nA DXF/DWG names its text font (`Inter`) but cannot carry it, and has no slot\nfor a fallback: a machine without the font shows the CAD's substitute\n(AutoCAD: `FONTALT`). As AutoCAD's eTransmit does, ship the font next to the\ndrawing. The package carries it (`fonts/Inter.ttf`, static Regular, SIL OFL,\nplus `fonts/OFL.txt`) so every app ships the same file the same DXF asks for:\n\n```ts\nimport { exportFontBundle } from '@aici/cad/node'\n\nfor (const f of exportFontBundle()) archive.append(f.data, { name: f.zipPath })\n// fonts/Inter.ttf, fonts/OFL.txt, fonts/README.txt (EN/DE: install it, or what happens if you don't)\n```\n\nThe folder is found by package name through the `./fonts/*` export: from\n`node_modules`, from inside an Electron asar, and from an ESM-bundled main\nprocess — as long as `@aici/cad` ships with the app as a production\ndependency. A CommonJS-bundled main has no module URL to resolve from; pass\n`exportFontBundle({ fontsDir })` there (or point it at a folder copied out\nwith `extraResources`). Add the fonts to bundle (zip) exports only; a lone\n`.dxf` is a plain drawing like any other.\n\n**Text**: tool prompts are emitted as i18n *keys* (`ToolPrompt.prefixKey`);\ntranslating them is the app's job.\n\n## Entity types: `Entity` vs `EntityLike`\n\nTwo names cover the same objects, and picking the right one is the difference\nbetween a checked read and an unchecked cast:\n\n```ts\nimport { EntityType, type Entity, type EntityLike } from '@aici/cad'\n\nfunction label(e: EntityLike) { return e.layerId }      // shared fields only\n\nfunction start(e: Entity) {\n  switch (e.type) {\n    case EntityType.LINE: return e.start                // narrowed, no cast\n  }\n}\n```\n\n- **`Entity`** — the closed union of the concrete classes (`LineEntity`,\n  `CircleEntity`, …). `EntityStore.getById()`, `.getAll()` and friends return\n  it, so `switch (e.type)` narrows and a wrong branch fails to compile. Reach\n  for this by default.\n- **`EntityLike`** — the contract every entity satisfies. Use it when the code\n  genuinely only touches shared fields (`id`, `layerId`, `visible`, `locked`,\n  `color`, …); a parameter should be as wide as its body needs.\n- **`DimensionEntity`** — the same idea for the three dimension classes.\n\n`isEntityOfType(entity, EntityType.IMAGE)` narrows *and* verifies in one step,\nfor the case where an id is all you have.\n\n> Renamed in 0.7.0 from `IEntity`, `AnyEntity` and `AnyDimensionEntity`. The\n> old names were kept as `@deprecated` aliases through 0.x and are **removed\n> in 1.0.0** — see [MIGRATION.md](../../MIGRATION.md).\n\n## Format identifiers\n\nDXF files written by this package carry the dimension style `AICI` and XDATA\napplication ids `AICI_DIM` / `AICI_CONSTRAINTS`. They are part of the file\nformat: every consumer writes the same ones so drawings round-trip between apps.\n\n## Versioning\n\nSemantic versioning, see [CHANGELOG.md](./CHANGELOG.md).\n\n- **major** — a breaking change to any exported API, to `DrawingCoreHost`, or to\n  the DXF/SVG output that an older consumer cannot read back.\n- **minor** — new tools, commands, exports, host capabilities that are optional.\n- **patch** — fixes with no API change.\n\nConsumers pin an exact version (`\"@aici/cad\": \"0.1.0\"`) and bump deliberately.\nRelease steps: [RELEASING.md](../../RELEASING.md).\n\n## Compatibility\n\nESM only. Node ≥ 20 for headless use; browsers with WebGL2 for rendering.\nBundled: `@tarikjabiri/dxf`, `dxf-parser` (with the project's patches applied —\nyou do not install them). Externals: `three`, `troika-three-text`, `react`.\n","readmeFilename":"README.md"}