{"_id":"dwc-gcode-core","_rev":"40-b07b957f96e1fccfbd72d5c468f20bd2","name":"dwc-gcode-core","dist-tags":{"latest":"1.36.0"},"versions":{"1.0.0":{"name":"dwc-gcode-core","version":"1.0.0","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.0.0","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.1"},"dist":{"shasum":"ec90e1ca9ab9e633f56486a858ff9585df6af23a","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.0.0.tgz","fileCount":102,"integrity":"sha512-HRHb5jpkmakFzlaf4WHjcB8ZrN1oigbznYdK1kEUiLoePvB8xGeiknzeEgE09wxW2YyiWDanjxOvdi3D7t6tmQ==","signatures":[{"sig":"MEUCIAOowW1XzRgf0J8co+JQRTze8WyuQn/8Dzq43jIbEChTAiEA9uY8tQi//foR6nvnRooCi21LllFmUJaLK9Hfe6QPfWI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1499661},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"7fa2061f7686513f54fb9eab7bd206bcb94503d8","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.10.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"25.7.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.0.0_1789535090108_0.23810363361395903","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"dwc-gcode-core","version":"1.1.0","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.1.0","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.1"},"dist":{"shasum":"6cc32cbb7ee158a8dd7728b042407d31ffeb325b","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.1.0.tgz","fileCount":102,"integrity":"sha512-o+X00a2qjJarCyjLnJhwWm2zI9Umwct47mv2GzwCDXKQf/uWzkcjIPzvpBY7b3M5U6S70Xui1d6FFKN053vBlw==","signatures":[{"sig":"MEUCIEUnZbPjuf1DQcuCazTisYKuxnW/epeQ/tAGnKuSkrYUAiEA10uRuZ4ul6KfU/EYu3sgHiLPb5TXQIB6bCgEvWkAVk8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIHUbBnM9qMr6f8+AHjQuZSSHuC45tTHrnDS2AMVyTjORAiEAp+DWk4l7As1vKvdnIiZ710KQEE8054ThtDjV82FEcZE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1503135},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"199506445310cca241c62751acbae619c65fad6f","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.10.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"25.7.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.1.0_1789540006114_0.1851234749374555","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"dwc-gcode-core","version":"1.2.0","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.2.0","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.1"},"dist":{"shasum":"12d6130782b3b1527685c7ec83c6436944799cdd","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.2.0.tgz","fileCount":102,"integrity":"sha512-XLfK9APT/Pm0T5vhrWkEUyIu5IQ1D1zvcRmljGCnFiQMsHb3CcLi9cZINOZmdkM3BvncuS/mdhkUIiMbmgYjwQ==","signatures":[{"sig":"MEUCIFYUtQy6t3ohuEwvUdLvmIMI3059NzNpRx0/zAzfE3XGAiEA0vSUPQmuxzP5vMR4alFLxEMMyfB4K8dVUAHxjX61OZY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEkSNnw/oyjkQSky8zERiBsB8xuQjZvqMXKtKluO9B5qAiBnkVGFK+0sCoYbQF54g+1wGwjBCH4hhiB5IyXPrAZdHA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1513630},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"57a022a7eb3ca16faac8b68d6672e1b503c16a2b","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.10.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"25.7.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.2.0_1789541177660_0.7406498274038285","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"dwc-gcode-core","version":"1.3.0","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.3.0","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.1"},"dist":{"shasum":"968108e53b70eac3a66358da92e5003564eb1947","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.3.0.tgz","fileCount":102,"integrity":"sha512-Sem2tAn5QXQoVkJjlfnH6Vz/463p8J8vzvX9rf0pSRL4iz3/J5suWhDulWu7KSnFXqkV2tDDSiFibWjniE0dBQ==","signatures":[{"sig":"MEQCIDvJym+lKoimMgxWZzzi7rJsFiFeE9yZLIzgMklnFyA1AiAqtN3HIOHcBCAUIB/bSxvdNYReuL5kuB4HK0zLQZET6A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFjV4UMPxTN1nZmllmX5iIB+z+97tUGVGpEZk/SClF2NAiASy1fHp/Z95iQLKOKmwoeEDb7u1T0PCMJHshLI5RqB8A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1538479},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"a827f33901bc9cd462fc952e2927a3782ca5d6aa","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.10.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"25.7.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.3.0_1789543031046_0.13448544991318756","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"dwc-gcode-core","version":"1.3.1","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.3.1","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.1"},"dist":{"shasum":"6fcec0b08b2621b6279788030c4e5d452d62478c","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.3.1.tgz","fileCount":102,"integrity":"sha512-ZRO4b9Wa9j23MxmIl9rS8DEVYN1zeqZGV85o5kiTLu/UA1ZYaDs/qQysyvZsJ/1vQSl1X4H/pmK/JC/oCQyikw==","signatures":[{"sig":"MEQCIBJTdN0nmHHe/yEyS/FEiw4cG00qm9T4LTUIQQNPJlaaAiAxAPG+twMYKaDIwipoOc5l3HaIkbPy73uy4M1y8BT51A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCwg1Og3MipLEuBWicDtd0cFRtL077dUeEFdH7S3pXFcgIgXvFiQvjVzlcdnDYTznSW7mkTQ8ZfneQA8kpQHHZBa0Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1545046},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"e5d4a912588ea120475ecae0ec7d9bab3f44b7a3","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.10.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"25.7.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.3.1_1789637782099_0.016491526579934357","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"dwc-gcode-core","version":"1.4.0","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.4.0","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.1"},"dist":{"shasum":"90867ef0114b9df25011b35642ea447f83cc19f1","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.4.0.tgz","fileCount":117,"integrity":"sha512-Z2Gu/M9xq6sFcITJttt6NQr9wDYHc3Q5rbaPkGNzMQS7s6yi80OJJ3oYYic5SlKn2ScHcXppvTDqmvWj2qO38g==","signatures":[{"sig":"MEUCIQCi0di2i1CU+QxkJIKjWoUyt3EOawF5OaEAwdy/jTxungIgOiI3bwlwbNtGU2PjeGrdBf9PbBhNdTLIKq0cvpC6Vzw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBtty1Z/RlcR4b0cB5khYMViJV+3D5TlILTnmKt0vD69AiBsYMv4Teuq9EwXNwu4qEC7QlggoWym95fxPzouYQ//TQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2159875},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./pins/*":{"types":"./dist/pins/*.d.ts","import":"./dist/pins/*.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"66a59ee339a29c32665007cbc06da8a799ce4726","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.10.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"25.7.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.4.0_1790020176412_0.17134245796981862","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"dwc-gcode-core","version":"1.5.0","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.5.0","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.1"},"dist":{"shasum":"105d7ff2f2bb5d25b7427e529dd512c411d07f76","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.5.0.tgz","fileCount":123,"integrity":"sha512-NBSlnrPbNr9HLs8pTAlPJ+p7wDl5Hg9i8onMYpKV3atwZGaSSR3c3P9B9I3FdoF/ePggFk56Da6x7s4lJ4fPlw==","signatures":[{"sig":"MEUCIBTVGKTw0zJMmfTZ+ExRx/WlwvMdO+hudFWba91NFAtKAiEAomFX1vHa7GJL9E2vkP2Ob5Al0OYB4fPt/jraC1aZ8hY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFhiNGFlmPMHJ72hNagdY7Z5L422B7swTj2NtmrpY83CAiBu0lXrSRgVoRQJ821vejBRJI3usmQUuTnIwL391L85pg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2227660},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./pins/*":{"types":"./dist/pins/*.d.ts","import":"./dist/pins/*.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./execute":{"types":"./dist/execute.d.ts","import":"./dist/execute.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"cff49cd1f822a4ade7175f54a357ff47f272a3c4","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.10.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"25.7.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.5.0_1790084926620_0.20799889458916532","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"dwc-gcode-core","version":"1.5.1","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.5.1","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.1"},"dist":{"shasum":"f1fc4e4b5e90003af93ae539810ee2e131fb9619","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.5.1.tgz","fileCount":123,"integrity":"sha512-AQvDCHLRbPLp/oizSJI/g2bhR0YJVoCNsaeuTOwfoNAuViLjm0l+5RN6AhHyE6jgxC7GEEAbBARjZOhRA+NJ6Q==","signatures":[{"sig":"MEUCIQD/LwceTKdOVFfM+2BF0WdRKMLVFAlYnv2dE3z3P4ozgQIgIodoJySCQAsOOU3DqgNvv9bySn+0LncVEqjYlWRxwIg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICC0hyDE3Rkt/6N9gGfV1+QE7D1lhdcbQyZCiisciQReAiEAt1J0VRjecSJ+iWI1JadycW1tFgO1g/fiNu//8okb24g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2230539},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./pins/*":{"types":"./dist/pins/*.d.ts","import":"./dist/pins/*.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./execute":{"types":"./dist/execute.d.ts","import":"./dist/execute.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"7e8819ba2924e27eb73b87341fbfc8a18547e74f","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.10.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"25.7.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.5.1_1790085490786_0.5333964055083682","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"dwc-gcode-core","version":"1.6.0","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.6.0","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.1"},"dist":{"shasum":"7b735bb7b671c6185c6ff05a6da1da2bbe713d30","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.6.0.tgz","fileCount":123,"integrity":"sha512-puIaLLly9iWMiRFzG7ipLwXrJ0U6JJL/L74v9dYvYfTrCc5O/f3W9J/Hsi1qmUjd3uYBe/YTLX+w7LSjdUvpWw==","signatures":[{"sig":"MEUCIQCDEFdmgNjVknRpW388QGg7i+dAxn+PjRTu9h1Vtw6ePAIgQLK8DtN8nwS4eZ+wMYYqieArWpR0UhdAN67jK4MAo/Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCqF+ODUVg9AHuHFyLxtDBtcE5peJmNkB3JQcmZHgMkbAIhALFk5/1ND6CrDrS56JEzPiiodOvLtQo5gRcVvwwyd3YH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2256588},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./pins/*":{"types":"./dist/pins/*.d.ts","import":"./dist/pins/*.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./execute":{"types":"./dist/execute.d.ts","import":"./dist/execute.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"d04a26a535401f2650f50ab346f2c88af137bceb","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.10.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"25.7.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.6.0_1790088040537_0.7242452568888176","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"dwc-gcode-core","version":"1.7.0","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.7.0","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.1"},"dist":{"shasum":"8165a40067b2778d04ab7e18aeaba48465ee40b6","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.7.0.tgz","fileCount":123,"integrity":"sha512-s3p3NVzIW5tvTRqmlOEZcWU5XDkb33w+xjMz32ZnWNYo+KZj38yZc3BvFP7qOXNpQrA2/6HZBkAUnBzO8Hmjpg==","signatures":[{"sig":"MEUCIHwHqEuBQz38ek9rTd4gGVNJqek4J+nVyuQr3XGtfX7gAiEA6ws68jZG/uOj/U+h8sLvCckgESIHiM+ZSUllxkpP5P4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDjezj3QHxE2wYHka6jKycGG5x2txO+fOjvnUQl9ogH5gIhAPUEknPVbqqwRuJqljsVYXGsu0AAXH61vXsFBDX56yl1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2260129},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./pins/*":{"types":"./dist/pins/*.d.ts","import":"./dist/pins/*.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./execute":{"types":"./dist/execute.d.ts","import":"./dist/execute.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"08380229388e110fe8fe02cd6ca9766cdfa218f9","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.10.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"25.7.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.7.0_1790088417197_0.8388324646736349","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"dwc-gcode-core","version":"1.8.0","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.8.0","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.1"},"dist":{"shasum":"eb204e99661d9c5a3c1abff71a376f0890f1979d","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.8.0.tgz","fileCount":126,"integrity":"sha512-OrcrHjHaHu0mE4MLdJKj4sLb3bScztRHF0GXnSYMaRPsLwI5BJ5ZrQocDrLOycyuG4POvHFi5FNOEp9Yq5H6Sg==","signatures":[{"sig":"MEYCIQCPfFCTKPgz7PkphFE0RXIMsUyQbZMnPDcTCPhAsdAxNAIhANs5XzzbUPL/1MKjsD5keOUtYGdyT7uTl6V0TlV0PQMb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCNOpmahcQTK9/2t7yXt7rwWE/1s5kZoczqEOI4fpwRiQIhAINPazCxfdNB6X+H9xOjDk5yBIc8PUGO3IqZ1PFZ19Z5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2290992},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./pins/*":{"types":"./dist/pins/*.d.ts","import":"./dist/pins/*.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./execute":{"types":"./dist/execute.d.ts","import":"./dist/execute.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./messageBox":{"types":"./dist/messageBox.d.ts","import":"./dist/messageBox.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"3a867eca52c35f09248df31577244e16a7b578d7","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.10.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"25.7.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.8.0_1790091282233_0.3957755782231758","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"dwc-gcode-core","version":"1.9.0","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.9.0","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.1"},"dist":{"shasum":"cc3839af2626838739002681af080105e23c87ba","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.9.0.tgz","fileCount":126,"integrity":"sha512-Ia+7ORqm9mcj6gnQ2+QGJEcH3GfWLlOKJHFEXE179T8vDDAx7sVcySL6NkRhnIrWykmZQtexWqj0y2GyGSBmxg==","signatures":[{"sig":"MEYCIQDpDsFs9md2uVHAkhXUybg3j/R/Zgp0OE4UTYF54ij3IAIhAONH4a2a/hJ6bzP1hS/H+cM/kJqzhE798T4b31Bgp4mt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCK9lbnomw/9v4Oj7sUBy6uTUPbp1IzA3cvNMTM9vOKcQIhAKLgFW3cnlYpftMgnHFkLyF8vrVyWgFyjpm1HT4H1Otk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2304744},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./pins/*":{"types":"./dist/pins/*.d.ts","import":"./dist/pins/*.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./execute":{"types":"./dist/execute.d.ts","import":"./dist/execute.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./messageBox":{"types":"./dist/messageBox.d.ts","import":"./dist/messageBox.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"c3fac78080f92b0667e38094d204d30f3bc86c52","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.10.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"25.7.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.9.0_1790102368808_0.6447552432887134","host":"s3://npm-registry-packages-npm-production"}},"1.9.1":{"name":"dwc-gcode-core","version":"1.9.1","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.9.1","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.1"},"dist":{"shasum":"44d66626e7622fb58e308ba314cf487c7d939a10","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.9.1.tgz","fileCount":126,"integrity":"sha512-v9HOyLU87x04nLGNVrU/AXQhwTeACwjVtLwnZrflmW+L+mtpzJk//uuWhn+LtB52a48U77X37PUEIk3zy1VIyw==","signatures":[{"sig":"MEUCIQDBR8z4gpIon06OvrPKNnxAxHh2td4PmAAayCRBnIDnRAIgbXdG7JA/UyETRvmRQmI/zLLk0fC8Vw+sT4zBC8+5RIg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDj7S7CIxIiXsfAeNNpYwaaUOFrdPn4xYhJgQn0wVmDPAIhAMfiEmc9KV1O2IMe5eHMDJMpTaT8Y9PSxmGgYUkmByGj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2308687},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./pins/*":{"types":"./dist/pins/*.d.ts","import":"./dist/pins/*.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./execute":{"types":"./dist/execute.d.ts","import":"./dist/execute.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./messageBox":{"types":"./dist/messageBox.d.ts","import":"./dist/messageBox.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"df8aa37cbc69d91c2830bdf1ae679cd9ddc3f62b","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.10.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"25.7.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.9.1_1790103336041_0.8523300301889407","host":"s3://npm-registry-packages-npm-production"}},"1.9.2":{"name":"dwc-gcode-core","version":"1.9.2","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.9.2","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.1"},"dist":{"shasum":"d1cbed8da5b512cb091d1fb7c2e5b96a6e24ac12","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.9.2.tgz","fileCount":126,"integrity":"sha512-j1aixb8vs9bQt1PaI4sAE1SF/u+aXYtFHYJaUzQ6LNBGOl66BcX84lKB9TXKDHNF4mOJ82gLNdOj0ADpWM9KsA==","signatures":[{"sig":"MEUCID72kO/OyL4cs9J7/hNZEJdxlMdfEU+JDjURke5vuuKsAiEAgu+mPHbvfozFCV1JBcUCq2DeA/WUbz5yFNc7NLreujE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDwhOG/sksNye2A7uH16XLY1AuhzMrzfhpi1lyTuYC6vAIhAODe6wrjNF3mok6U4euaT7vT0LEPf9ZzK3J2Zp87WzaS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2310752},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./pins/*":{"types":"./dist/pins/*.d.ts","import":"./dist/pins/*.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./execute":{"types":"./dist/execute.d.ts","import":"./dist/execute.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./messageBox":{"types":"./dist/messageBox.d.ts","import":"./dist/messageBox.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"11908aa45633c4e20d7992b1828b2800cce5b6ba","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.10.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"25.7.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.9.2_1790111161798_0.13758164226930503","host":"s3://npm-registry-packages-npm-production"}},"1.10.0":{"name":"dwc-gcode-core","version":"1.10.0","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.10.0","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.1"},"dist":{"shasum":"e597dcfe1e1bc04a844b804fd5f2689757dd98dd","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.10.0.tgz","fileCount":141,"integrity":"sha512-bgIRWtO5O9GUkSkGc6ki7Y3moJP5I+PLi37jA+yMPUXCg2OBG3Cyii3XrtiLN+MwY5cLjRirUdKSzd27txyTig==","signatures":[{"sig":"MEYCIQCDCZk8e+I5ln9YBZsRlGa5jixMrmRWqDnOXfcxOPQFSAIhANVMzhN054Wb5SaotWVrtxlKk2iVjo8TDukSDiDDg4jQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCFZWae3KPw9tJtFzwhXSHAKGBI06B47TvCdnxP8TvOMQIhANGjEtk2hfdir2eSx9r+7Wlx9MipKHD6J9YJENmx/jGg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2383840},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./pins/*":{"types":"./dist/pins/*.d.ts","import":"./dist/pins/*.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./execute":{"types":"./dist/execute.d.ts","import":"./dist/execute.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./stepper/*":{"types":"./dist/stepper/*.d.ts","import":"./dist/stepper/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./messageBox":{"types":"./dist/messageBox.d.ts","import":"./dist/messageBox.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"556e34ab793d30128692f3bbf56d5dc8d8d58117","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.10.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"25.7.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.10.0_1790136268176_0.9892151359918644","host":"s3://npm-registry-packages-npm-production"}},"1.11.0":{"name":"dwc-gcode-core","version":"1.11.0","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.11.0","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.1"},"dist":{"shasum":"e8251a025cceeecc361c2b1b3a07402077010f6b","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.11.0.tgz","fileCount":141,"integrity":"sha512-ce1qBo6f6uBATaWcs5Scq7JasBSYvdPUNJd/9O5PSPXRjuVmgA47cLpscAt18eChbI35XUo6xtpzN+T9yM1OGg==","signatures":[{"sig":"MEQCIEvtH7rFXiK5b6sjm67FDl/OYU1gb//OWaH5Jp45UOVBAiBZGVDBWD9303tsIIoqhoaPt8r485FOn2j4xsBbG8+9Kg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIDujfXGa5i83+HwK0Qvwq2MEGqr8CmqWTyseQs0mKa5WAiEAquwlToSpoT7XiCdPEPHGvubg/ovPJJPIXrEuQTY/YW8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2398187},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./pins/*":{"types":"./dist/pins/*.d.ts","import":"./dist/pins/*.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./execute":{"types":"./dist/execute.d.ts","import":"./dist/execute.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./stepper/*":{"types":"./dist/stepper/*.d.ts","import":"./dist/stepper/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./messageBox":{"types":"./dist/messageBox.d.ts","import":"./dist/messageBox.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"09012571c8610dc85d2512d2e30f90efbed28a00","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.10.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"25.7.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.11.0_1790142504229_0.9920693239395408","host":"s3://npm-registry-packages-npm-production"}},"1.12.0":{"name":"dwc-gcode-core","version":"1.12.0","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.12.0","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.1"},"dist":{"shasum":"d77fdb50cd6534886c40b0316ebbd335383c235e","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.12.0.tgz","fileCount":141,"integrity":"sha512-42azOI5xUkyHloXci3SAfO/KYXSPGRpFFh4YbtUUxUcV7GC0JTfB/a5D3SREka9wSBQcAil+xRq3miYwEgClRw==","signatures":[{"sig":"MEYCIQDvmULs6eYzYyLTbRwiistN0AwwyEFJs6kqp217iO5QYQIhALNeiKgG6Us+bKcz2IK27K0ygesDC9PgeoHe8ac2dEOL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDRZtw7z0yZcPbd0aeAAF4uBteAe33/a4BT+NvcoYejqAIhAO/i5AbwZlRHZv3Nm5ZBZ6e1/2uMkZjAhJY+VJX+nIRU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2408383},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./pins/*":{"types":"./dist/pins/*.d.ts","import":"./dist/pins/*.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./execute":{"types":"./dist/execute.d.ts","import":"./dist/execute.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./stepper/*":{"types":"./dist/stepper/*.d.ts","import":"./dist/stepper/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./messageBox":{"types":"./dist/messageBox.d.ts","import":"./dist/messageBox.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"4a7944bd72b29750faab8e8d744a4eb7f48172dc","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.10.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"25.7.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.12.0_1790142847731_0.48260140187336953","host":"s3://npm-registry-packages-npm-production"}},"1.13.0":{"name":"dwc-gcode-core","version":"1.13.0","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.13.0","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.1"},"dist":{"shasum":"b5c18ab5a9a09a64e58f6c089f9a06ff2826ca88","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.13.0.tgz","fileCount":141,"integrity":"sha512-LIlsIjyhTSlNcJB33jKAo7J7qPu5qDi/l20/xySGUyrA8sqFJ740umOX67+88Z/ual4Lo9VPgjUmkC2/T2LQnw==","signatures":[{"sig":"MEUCIAxJMFa4/WsCiA2S5qGkXL4vNYfIFg42yYz7PtsQNvTtAiEAj/1V6M2oFAQU7GneZu3bt/9lJOEQbeQUjOzXg/q2qfU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICCydbx0MuLALZaHi7zv/3PMVXelyvLGw4vHSVIlJdryAiEAxY4exSdmyrjEOhjw4Cd47pemkkRUgmIWJkNyuc1WE5s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2414023},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./pins/*":{"types":"./dist/pins/*.d.ts","import":"./dist/pins/*.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./execute":{"types":"./dist/execute.d.ts","import":"./dist/execute.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./stepper/*":{"types":"./dist/stepper/*.d.ts","import":"./dist/stepper/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./messageBox":{"types":"./dist/messageBox.d.ts","import":"./dist/messageBox.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"aa73a4b459d077699032165b4138fcf70d444784","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.10.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"25.7.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.13.0_1790143050291_0.8337658483193933","host":"s3://npm-registry-packages-npm-production"}},"1.14.0":{"name":"dwc-gcode-core","version":"1.14.0","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.14.0","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.1"},"dist":{"shasum":"41ca057a5b206588b220c0ec6010f5069d197023","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.14.0.tgz","fileCount":141,"integrity":"sha512-g+P18H1AVbP2hBupfEmjJsE47TOadsGm0fcoy0fCr9MrjfseUQqc50hbSXE7ET8IcFxmb6erVlwTseSYqcL79Q==","signatures":[{"sig":"MEQCIBqaIIAIGKiby2MApau/tSAdcypmTaBiZLnHOcmMRungAiBFdcZVmhsc1HkekO7QkCF4zlnzKno83hHQ5q8fYFllzA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEDskU2W5EAg+eyVAYOC3c23GOzF2fv8L0ZmAI2gOz1eAiBdqBUDVvyA10FfsdDXjGe68x7ZnTfxQMr/nCrhwnVIlw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2423355},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./pins/*":{"types":"./dist/pins/*.d.ts","import":"./dist/pins/*.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./execute":{"types":"./dist/execute.d.ts","import":"./dist/execute.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./stepper/*":{"types":"./dist/stepper/*.d.ts","import":"./dist/stepper/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./messageBox":{"types":"./dist/messageBox.d.ts","import":"./dist/messageBox.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"e33302d3846457bfd6731c52cd48976f321f0649","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.10.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"25.7.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.14.0_1790143315620_0.6836657613490227","host":"s3://npm-registry-packages-npm-production"}},"1.15.0":{"name":"dwc-gcode-core","version":"1.15.0","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.15.0","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.1"},"dist":{"shasum":"5ea63c841a0d1242d1302400d54920bb87d1262f","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.15.0.tgz","fileCount":141,"integrity":"sha512-KRS3Al+Vgyq12rB3GSE5FSbPF0MqrsuTcV5n2DJkICfQTc+BwPA/dRCgYmfPnJ+jSoRJdheA30gZuOHP9yVqAw==","signatures":[{"sig":"MEUCIFQuy0UwhQ9m3/cFGI1636cy2zhJbHz2xiX9Wrv+VdqEAiEAzH+W5ZSPj2uCDQYMmZn+HRrqnHgNk1sZjOVRTUGdecg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCPMDVzBnBIxDsOI/90N0FN6PQAXvqIXCALbvdT05eoVAIgKsn9m09jqPtyYjW8FI3ngGkJshLKX6c6DIG0TKYw7mE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2422257},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./pins/*":{"types":"./dist/pins/*.d.ts","import":"./dist/pins/*.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./execute":{"types":"./dist/execute.d.ts","import":"./dist/execute.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./stepper/*":{"types":"./dist/stepper/*.d.ts","import":"./dist/stepper/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./messageBox":{"types":"./dist/messageBox.d.ts","import":"./dist/messageBox.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"7e3b9a9b31b72ddfb24c02ad493060034dcca142","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.10.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"25.7.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.15.0_1790143604536_0.5699876440430789","host":"s3://npm-registry-packages-npm-production"}},"1.16.0":{"name":"dwc-gcode-core","version":"1.16.0","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.16.0","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.1"},"dist":{"shasum":"bd9b849cab4c510e5453e4b094ccd089b2f21f96","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.16.0.tgz","fileCount":141,"integrity":"sha512-9ZC23UO8VniD4k1DL+Nqp5EL2BBj2jg2hrx5nBcw9HdXw0nhzvnGJW+6q3O8TQRmzgmjY+4nmT4SeCximRK3lw==","signatures":[{"sig":"MEQCIDg+jT1SYNjlYdOpCDXKbgkHoO1lNv/NAAUYPUhe1EK+AiAOOXtNTM+dNd0F3ad2WBPQQn+TyxmgjHYKzWY/Jxae1g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCbTVKTTc1R7Hm7OU2k+p8e2B3AGcUAxbNYUnKfXwWd/gIhANmZNL7eaSr9U0motuGQ+TMyQW2AUGh+ozaPWiF5W+rv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2428763},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./pins/*":{"types":"./dist/pins/*.d.ts","import":"./dist/pins/*.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./execute":{"types":"./dist/execute.d.ts","import":"./dist/execute.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./stepper/*":{"types":"./dist/stepper/*.d.ts","import":"./dist/stepper/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./messageBox":{"types":"./dist/messageBox.d.ts","import":"./dist/messageBox.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"03376b38ebdc00445dba24c660eb2103419bcc70","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.10.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"25.7.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.16.0_1790143859289_0.1608944910907517","host":"s3://npm-registry-packages-npm-production"}},"1.17.0":{"name":"dwc-gcode-core","version":"1.17.0","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.17.0","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.1"},"dist":{"shasum":"444471a27334b339c8a2187b1cebbdadf789d0b2","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.17.0.tgz","fileCount":141,"integrity":"sha512-u+frULJJUG6gEIMbi9Mdtf+jnLh7NSp39cQNydu2lzwWTGpdCgfm2+wUMBpMgL2KHXz+cc8A1dHluDUVcHT4LQ==","signatures":[{"sig":"MEUCIDmuxxVXnh4xyj7b3kypc9fbcbdougmGeetLzIbl6X4GAiEAxQq9A5Z+fFpfkLbAf+I4WKXOaqA7VyBDqS5w5BHwqvo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDH7l57t2u4sej7mbWmkPkINX1mzv+mUVxWZbFD2xyqOAIhAIEn0tGK0JFJOHdxH6VbORu7kdYKxW3dtc+VKz+ETx3X","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2434537},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./pins/*":{"types":"./dist/pins/*.d.ts","import":"./dist/pins/*.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./execute":{"types":"./dist/execute.d.ts","import":"./dist/execute.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./stepper/*":{"types":"./dist/stepper/*.d.ts","import":"./dist/stepper/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./messageBox":{"types":"./dist/messageBox.d.ts","import":"./dist/messageBox.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"801b0c023b2751c8df1c5af70ccf03d1fef6d0aa","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.10.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"25.7.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.17.0_1790144154674_0.9687639886850161","host":"s3://npm-registry-packages-npm-production"}},"1.18.0":{"name":"dwc-gcode-core","version":"1.18.0","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.18.0","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.1"},"dist":{"shasum":"8825fda9f2ac3db327c184437d7ebad4825d2c81","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.18.0.tgz","fileCount":141,"integrity":"sha512-HpmNKTt28SwIu0H+S0Es9VXMIAyi/BTtqqDrYnwVwJwAqt5CtGTC7RCTn250xJPPFzjREJbkXXeT+QI2wzHmbA==","signatures":[{"sig":"MEUCIDcH8hBimcZMCaYRJ5uyTiXmxi/ng4aJwpqo2A+fi0nmAiEAx9nxAVzEPi5J60zHJIm/rr6IKjEGH0bQWPjej39NA1o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIF6Jxyaqv5cy4QwnmOxtvZqvXR+8pRNgwieVqI1LRBdkAiEA8xWhUPIIVSI4f30HoDGbFmdOohONZiW34fdiJKJ90l0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2435303},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./pins/*":{"types":"./dist/pins/*.d.ts","import":"./dist/pins/*.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./execute":{"types":"./dist/execute.d.ts","import":"./dist/execute.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./stepper/*":{"types":"./dist/stepper/*.d.ts","import":"./dist/stepper/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./messageBox":{"types":"./dist/messageBox.d.ts","import":"./dist/messageBox.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"f5d8403f251239c908fb3ab820bd6c421f3d800b","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.10.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"25.7.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.18.0_1790144348459_0.8467868973979336","host":"s3://npm-registry-packages-npm-production"}},"1.19.0":{"name":"dwc-gcode-core","version":"1.19.0","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.19.0","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.1"},"dist":{"shasum":"b4bbd0341d8a65092645207a25406dfcbd1ecb10","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.19.0.tgz","fileCount":141,"integrity":"sha512-Ml93ynxaK99eNoTodpfCrigt/Q6JsBmmuDaqQh+0PzFZjslCDdGf4KK+TNYyMx4+U7Lx7hYkbUZBHatdhDFphg==","signatures":[{"sig":"MEYCIQC6GRTItAtW2eDLW8p+QhTZwXQubGotjd/09bSoN35YXgIhAPDkxZ9p8b7/g4oNPKgVQ4G+c31M87eoy4yOXtm8Bqff","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAqCC0V0xKzLqDbRMT4NOMT3/OTpmuldRdV+oLeMy87iAiEAu3LcpC3IlALGmT2g75yR4A49XhvKczgHshugsBrxz84=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2444126},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./pins/*":{"types":"./dist/pins/*.d.ts","import":"./dist/pins/*.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./execute":{"types":"./dist/execute.d.ts","import":"./dist/execute.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./stepper/*":{"types":"./dist/stepper/*.d.ts","import":"./dist/stepper/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./messageBox":{"types":"./dist/messageBox.d.ts","import":"./dist/messageBox.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"9cb36551adeb79fb410c25d7a769e6b627647d2d","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.10.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"25.7.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.19.0_1790144491943_0.1226949898115921","host":"s3://npm-registry-packages-npm-production"}},"1.20.0":{"name":"dwc-gcode-core","version":"1.20.0","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.20.0","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.1"},"dist":{"shasum":"733bb6d8e5ccd1670339a92f9440102193ce4ca9","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.20.0.tgz","fileCount":141,"integrity":"sha512-dfFTVTglOt2RItt+/ljIdHwO7ZqjgjM0lQOGN48q1/ZV+tIxyID+wuWcwx7qXeP4ZW86xKuA5MsfpWdmBcZ1gw==","signatures":[{"sig":"MEYCIQCmGJsfuMKOtYHC6cIFf0nPn+OL/s49q11ermMliSgBAAIhAIjFFbs0ngu7PwJhWrfXiG3LhneiW16NNTPjC4R1QDYW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFkya4F8WfdhS4X0e7L1ZCz5xhaHZEhTmdl+1/qkFvEeAiBRRZyqHZtprUaEt9KEzl0opENEer++DLi2p3Non7r2Yg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2453887},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./pins/*":{"types":"./dist/pins/*.d.ts","import":"./dist/pins/*.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./execute":{"types":"./dist/execute.d.ts","import":"./dist/execute.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./stepper/*":{"types":"./dist/stepper/*.d.ts","import":"./dist/stepper/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./messageBox":{"types":"./dist/messageBox.d.ts","import":"./dist/messageBox.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"cd842c4d84576ef34dbbd71af561ffa7ed78947f","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.10.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"25.7.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.20.0_1790144771227_0.09855667956310321","host":"s3://npm-registry-packages-npm-production"}},"1.21.0":{"name":"dwc-gcode-core","version":"1.21.0","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.21.0","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.1"},"dist":{"shasum":"4ff29edbecbc20cd90d2236dd9399a4960e37cc0","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.21.0.tgz","fileCount":141,"integrity":"sha512-ug99zOPODliu2iN0+S5fP/Nz/cRfHJo4mEMl5D8Brdojvr9tHRX/GQF049tGyO+GP03R++Y7oRC6d0d5F+xo0w==","signatures":[{"sig":"MEUCIQDfAkdF63jhqrSJCOw0PrHkV3H2l1c+3hSMkV5krzKnWgIgF9Aol/N3hu0CNTo3ShE2cf8G/zUUK3e+kNGpBZbrTK0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEkJI/fVuWwI2SsAEgEFEMiF8xRsXxqjs3QPqGboYm4IAiAWcVtE6zFHsDDDTR14MdJ6RU4pZMWqZ9HvEwHcRoBaGA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2459364},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./pins/*":{"types":"./dist/pins/*.d.ts","import":"./dist/pins/*.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./execute":{"types":"./dist/execute.d.ts","import":"./dist/execute.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./stepper/*":{"types":"./dist/stepper/*.d.ts","import":"./dist/stepper/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./messageBox":{"types":"./dist/messageBox.d.ts","import":"./dist/messageBox.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"54ac28e9bf26ec2563613ff7c95d47d612e8f15d","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.10.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"25.7.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.21.0_1790153861492_0.47001861558030367","host":"s3://npm-registry-packages-npm-production"}},"1.22.0":{"name":"dwc-gcode-core","version":"1.22.0","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.22.0","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.1"},"dist":{"shasum":"2cae6575b7aae986575b0ac6c150f998df6266df","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.22.0.tgz","fileCount":141,"integrity":"sha512-mQqN/roDWyEjy7LZY9QqmLSJWNxgcKZLCtTdaV2+80Lrajdnh/Ddy33PhJyixA856znvtNMUJnVgw1msWI+MSQ==","signatures":[{"sig":"MEUCIQC/YxNA7gquggimKvXrAOSVkC64PY0jFOnr7MnoZLE9hAIgKCGtGDpTATty7NJCL31YIYuNj1hSCqdmwFLNBdftYDU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEjGLUp5Y6N9iDBnTqVoQdYPmJRrthEAOXWGyVrhHcf3AiBsDeTQj7/MbtoMj8YOfgLrTWM/+mvsrZMnOYb82BZB9w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2471696},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./pins/*":{"types":"./dist/pins/*.d.ts","import":"./dist/pins/*.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./execute":{"types":"./dist/execute.d.ts","import":"./dist/execute.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./stepper/*":{"types":"./dist/stepper/*.d.ts","import":"./dist/stepper/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./messageBox":{"types":"./dist/messageBox.d.ts","import":"./dist/messageBox.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"12336bafdfff431a5fcc5e87336f010ecc52514c","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.10.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"25.7.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.22.0_1790154288931_0.4254030716424353","host":"s3://npm-registry-packages-npm-production"}},"1.23.0":{"name":"dwc-gcode-core","version":"1.23.0","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.23.0","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.1"},"dist":{"shasum":"1d4900345e859be56ce0a61ec846184f0b8ab33c","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.23.0.tgz","fileCount":141,"integrity":"sha512-uwVKAixpH5lfoz//NEYJlDXr6CMvM/lD+mQohR7T6NjORsizpQcth8qambh+Fa/vUtbpICpRCNOMNvHfrUx2hA==","signatures":[{"sig":"MEUCIFnWMsBoLzHA44AU2tw29wc/fJ6IfF1/CaTroU1pVP3wAiEAjivqRzV5tyaR4TvslEa3sCiPPrw1EetJNz3VDz2zDvY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDRheTzuInwQRRHwGvV6bviyzW6XniKNTl9V+nF7GKKSAIgPJD3olxDXvGqZcQNSCD6NfdummvqEvW8FUnTl1LzF1Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2492300},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./pins/*":{"types":"./dist/pins/*.d.ts","import":"./dist/pins/*.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./execute":{"types":"./dist/execute.d.ts","import":"./dist/execute.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./stepper/*":{"types":"./dist/stepper/*.d.ts","import":"./dist/stepper/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./messageBox":{"types":"./dist/messageBox.d.ts","import":"./dist/messageBox.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"8e443100c2896d778bcb696651acc182be59e7df","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.10.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"25.7.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.23.0_1790158292377_0.41856176812755486","host":"s3://npm-registry-packages-npm-production"}},"1.25.0":{"name":"dwc-gcode-core","version":"1.25.0","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.25.0","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.2"},"dist":{"shasum":"ab7ab3020ea098633d43778803a1a5805c420c6f","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.25.0.tgz","fileCount":147,"integrity":"sha512-V74BeG4ypLZ+JJ5L9Ny9St4q7NCzfa/b5WBtXt3vNl5i62G6425ZQCxDx6SkJzk6+EvNKyGy7y4HTDOXfD+Dow==","signatures":[{"sig":"MEYCIQD0hLMcUnotk6gm2WKUETkO+YH3NfJrDr5hhxDwqLv2VAIhAOcb3h+tt0irSD2juEV4MXHDlzS8HP9jnNU9XFn9hNlH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIB4v9moL/wJDhCNtGL5qPID733N35CofgBeOiGDyG2k0AiBe0lSC9JykErFViM+/qXEvtjbw+G37mEGwAMbfWRkGbw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2704601},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./pins/*":{"types":"./dist/pins/*.d.ts","import":"./dist/pins/*.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./execute":{"types":"./dist/execute.d.ts","import":"./dist/execute.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./stepper/*":{"types":"./dist/stepper/*.d.ts","import":"./dist/stepper/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./messageBox":{"types":"./dist/messageBox.d.ts","import":"./dist/messageBox.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"5565a7b7bfb1f54959fd73723594e05d025b328a","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.19.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"26.10.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.25.0_1790604889268_0.9219038794885848","host":"s3://npm-registry-packages-npm-production"}},"1.26.0":{"name":"dwc-gcode-core","version":"1.26.0","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.26.0","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.2"},"dist":{"shasum":"b18ba3f947a457fe6e9ecf04621c51f853d87163","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.26.0.tgz","fileCount":150,"integrity":"sha512-YUu6jR8DezzX4fpbRCOoLkixvygXSYLOrJQO6tTP98oHaCr6sgPX1hs615dCVTfWEKSpsTjsflrc7tnn/hTi1A==","signatures":[{"sig":"MEUCIGbjfw1o+YoNxxmQsdSxlPH8la/z+HOq0uzqIgECMr/SAiEA6mmU8jenO2DspSq52eSbFBSP8+lvu6mKPiaw1+SkS3A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD+yGZut3R0dnUdT7A7fhcQYtcJ3yQQSZpkoQ7o9mc4JQIgHSHB0AIZ2S3ALHQXTnIhmVtTRVrH0IhPdRknRu/znRM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2761734},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./pins/*":{"types":"./dist/pins/*.d.ts","import":"./dist/pins/*.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./execute":{"types":"./dist/execute.d.ts","import":"./dist/execute.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./stepper/*":{"types":"./dist/stepper/*.d.ts","import":"./dist/stepper/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./messageBox":{"types":"./dist/messageBox.d.ts","import":"./dist/messageBox.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"89435d5eebc0cbfa4a65a57aaf9a6c258f8427e4","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.19.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"26.10.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.26.0_1790606931816_0.48421069428179253","host":"s3://npm-registry-packages-npm-production"}},"1.27.0":{"name":"dwc-gcode-core","version":"1.27.0","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.27.0","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.2"},"dist":{"shasum":"6712a047fd0b50cdc86173f25a1bff588808ac88","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.27.0.tgz","fileCount":153,"integrity":"sha512-bn+4tC2gwmE6DacqARDIGhuqYysbtbvSCTHIfiGtQ6xjPlElIy0bIQYioohnH9KAblt3aEp3qZhOWZ/SWv1Mgw==","signatures":[{"sig":"MEUCIF4nRx/QltTqjRhmKx53Rxhx5dWR5R5EyrhSJ4mko9LiAiEA/Wr2m4dbUsIG4D1e7g4V7OxsFnSQuRMySKeg/dHj/9Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICZeBAcDXpMKCnz5uKR/aUrMAeWeoLiKnf4kQSgsPxLKAiBqmw95sOJwjkHLlyRNxwZHTN0JHLcnIttxbjO5XdaWlg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2867213},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./pins/*":{"types":"./dist/pins/*.d.ts","import":"./dist/pins/*.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./execute":{"types":"./dist/execute.d.ts","import":"./dist/execute.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./stepper/*":{"types":"./dist/stepper/*.d.ts","import":"./dist/stepper/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./messageBox":{"types":"./dist/messageBox.d.ts","import":"./dist/messageBox.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"59339f6e76fdf61ff77cb1537907a85f9ff3ce92","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.19.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"26.10.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.27.0_1790619756619_0.3670320696552787","host":"s3://npm-registry-packages-npm-production"}},"1.28.0":{"name":"dwc-gcode-core","version":"1.28.0","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.28.0","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.2"},"dist":{"shasum":"fe0745385f234e2b78d3ed308e7e5ec43a94edaf","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.28.0.tgz","fileCount":168,"integrity":"sha512-O1Tny4tiDW1dlpWzzImwPfv2bT8uJaTynNS3/xKhWMmRVLDP0XY0xR2CMEKsPm84isEdmnQy7jozBSDByXiY3g==","signatures":[{"sig":"MEYCIQDWsSSXJFIO4L3AQ+Pkr/cdRmRrZCTOb37UeUCVFL760gIhAJc2/nnkR2qYnlYTFFo+DRGKbbhBoZHLSObC+QMsFeHz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIA91pnuGJ0GxzmKQE8Ce6hThjPZtcWwlTUcUW3BPQGJwAiAbnAGiNW1SNuA9q+sbqT0ijRSuvSlaMzhIQ29mohZ9Mg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3042353},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./pins/*":{"types":"./dist/pins/*.d.ts","import":"./dist/pins/*.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./execute":{"types":"./dist/execute.d.ts","import":"./dist/execute.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./display/*":{"types":"./dist/display/*.d.ts","import":"./dist/display/*.js"},"./stepper/*":{"types":"./dist/stepper/*.d.ts","import":"./dist/stepper/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./messageBox":{"types":"./dist/messageBox.d.ts","import":"./dist/messageBox.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"578bc46ec2d6446318d0a624d79075eb4c5b0e20","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.19.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"26.10.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.28.0_1790672099231_0.6000877713683908","host":"s3://npm-registry-packages-npm-production"}},"1.29.0":{"name":"dwc-gcode-core","version":"1.29.0","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.29.0","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.2"},"dist":{"shasum":"3519b66414f441f4eef7278bb5737b0c33cc89e9","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.29.0.tgz","fileCount":171,"integrity":"sha512-D+8WyJ3qHoblhM9JNprGz/iEgPaOEHcq75xmic0VB/vsLStZkVx6hvnYIdQq7/6Q+mpRARbKZGamc+e8DJYkjw==","signatures":[{"sig":"MEUCIEiwPGcdhV/LQEhq3VgdfgWe3nIBOERFGLrB6uZEf/M1AiEA+XjhBZ6VHFolOiVLuQhJ0exFNfzAuUjXMxIl/VZiZ7Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICjJUFw92rsfbaicqNCne8rubZAak5Sik95hE8j+y0LiAiAsZsYauXSxh+QZ9GKmo52Y09103Vq4AT5oXiSys4Gb7A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3097169},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./pins/*":{"types":"./dist/pins/*.d.ts","import":"./dist/pins/*.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./execute":{"types":"./dist/execute.d.ts","import":"./dist/execute.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./display/*":{"types":"./dist/display/*.d.ts","import":"./dist/display/*.js"},"./stepper/*":{"types":"./dist/stepper/*.d.ts","import":"./dist/stepper/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./messageBox":{"types":"./dist/messageBox.d.ts","import":"./dist/messageBox.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"b3e62631d35bedfa411196be575ae21d7ba03c96","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.19.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"26.10.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.29.0_1790675995274_0.7212336712303342","host":"s3://npm-registry-packages-npm-production"}},"1.30.0":{"name":"dwc-gcode-core","version":"1.30.0","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.30.0","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.2"},"dist":{"shasum":"f16f52959551149d83592ad1044ce5e40b22dae0","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.30.0.tgz","fileCount":171,"integrity":"sha512-DWNVu5FvPb0ZUNoPjM1JOEVILk5wENQYqg8U5yIhRFBPezqA+Vn/sVFJa5R9fmEtKxtNZ24+dbpj1xWAtbf5+w==","signatures":[{"sig":"MEQCIBbhvHNyYjnYVPXlEUmKyNTCODY+sI7lAhoMfx0xuH+hAiASZt75kiIuPyOr6U9BYWQ/6MvQ9DeewxLoyFdfQrMcEQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDn9tx+n0R+j2yUt4c2iFQIefAKSRihN2dFLhvH15G92QIhALh0P+b/cPu4vJudEjChXoJbZf/d1i4JVcFgtMFt8+YN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3117808},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./pins/*":{"types":"./dist/pins/*.d.ts","import":"./dist/pins/*.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./execute":{"types":"./dist/execute.d.ts","import":"./dist/execute.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./display/*":{"types":"./dist/display/*.d.ts","import":"./dist/display/*.js"},"./stepper/*":{"types":"./dist/stepper/*.d.ts","import":"./dist/stepper/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./messageBox":{"types":"./dist/messageBox.d.ts","import":"./dist/messageBox.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"ce94ef0f9c804a24ec2ccee59f58e5a4b567fae3","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.19.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"26.10.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.30.0_1790679338700_0.9314529273054744","host":"s3://npm-registry-packages-npm-production"}},"1.31.0":{"name":"dwc-gcode-core","version":"1.31.0","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.31.0","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.2"},"dist":{"shasum":"026e51e0c7cd0c1334c2aadeb34b6bf4a2a6eb5f","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.31.0.tgz","fileCount":174,"integrity":"sha512-I0IELf5LD4FkIYKk/KI2yLqLIDynw6IlhBqRuYji6lHxszzogiAE/Cz4ow7LZKda1T5DmJOCWGkV2eqGtCudQQ==","signatures":[{"sig":"MEQCIBI6K+nJG4pWBFX2nihMBNnJScLif0dJ5qKmrIJL4ebfAiBr0nNAoFie0YTPLWg4G6gB7PAFWQW0EFUvQKezlG8FAw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCArZK7MA2qrqLX3GTUSIFtVwg4tHs8xeKZEZKRONOrDgIhAP6UgRXhg3awku7V0uNFDCMXI8XyAmdyM5HCC+qhbepY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3131053},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./pins/*":{"types":"./dist/pins/*.d.ts","import":"./dist/pins/*.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./execute":{"types":"./dist/execute.d.ts","import":"./dist/execute.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./display/*":{"types":"./dist/display/*.d.ts","import":"./dist/display/*.js"},"./stepper/*":{"types":"./dist/stepper/*.d.ts","import":"./dist/stepper/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./messageBox":{"types":"./dist/messageBox.d.ts","import":"./dist/messageBox.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"affe806ab04ce971639ead435617fe51d1ba5e6b","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.19.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"26.10.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.31.0_1790753722085_0.12201617500712203","host":"s3://npm-registry-packages-npm-production"}},"1.32.0":{"name":"dwc-gcode-core","version":"1.32.0","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.32.0","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.2"},"dist":{"shasum":"808fd01390d8195b0a184df05619cbaa9d0f8a41","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.32.0.tgz","fileCount":174,"integrity":"sha512-Ye+QkajvF+hq9q6W717wRUkKnqiykXEv3WleZKsbUC8p6NtjJhxgOid1gPZNLpyG7XIRhf6NBCRko5NZ+SvAyA==","signatures":[{"sig":"MEYCIQCmUxvU9x3Li2FD/IQihTSe0NxWaYJeHKxpYIBWrFZ2YQIhANF6+sDn6c6zjY01/u4fPM5Rd5Q7GdipvaEdWIJO1zD7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIDhIlQ9L9mva5ZSFHiY4qUmkbILvC5AEa8RkIJgVTRzSAiEAnomGCrOGkTozFQdF+LzvU8g7cUtd04HCUjMNDzucIMU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3161134},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./pins/*":{"types":"./dist/pins/*.d.ts","import":"./dist/pins/*.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./execute":{"types":"./dist/execute.d.ts","import":"./dist/execute.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./display/*":{"types":"./dist/display/*.d.ts","import":"./dist/display/*.js"},"./stepper/*":{"types":"./dist/stepper/*.d.ts","import":"./dist/stepper/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./messageBox":{"types":"./dist/messageBox.d.ts","import":"./dist/messageBox.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"779eec92a1c1097c30d88cf1378e99970904261a","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.19.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"26.10.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.32.0_1790763797015_0.44304475552610123","host":"s3://npm-registry-packages-npm-production"}},"1.33.0":{"name":"dwc-gcode-core","version":"1.33.0","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.33.0","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.2"},"dist":{"shasum":"99acd6fa1e582cd2ced81065c952aa02c156339d","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.33.0.tgz","fileCount":183,"integrity":"sha512-3fFSKvVB2zaUBu05sGHKS1JjXZl0lMXdnTt5RpWfbI3xp/99rTnL3BsTWGdt00hGkzB02aZHfUCq235FzQpCRw==","signatures":[{"sig":"MEUCIQDG1n2vcfmTZAPf95T13rQnHzn2Wkd7iZmyd1CPq/UNawIgW78Nf8NgQaP7bPYpvCZPRAC069ZggMAgUF8CKV3SzCg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIASY4X/bkSSCBle9Gt+TIFCK7303quKWndQPepvnBoi0AiEA5dwvg/hxeKQqQSuimNUSUzgb2KZo+cHqPIcP4va/JUA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3493483},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./pins/*":{"types":"./dist/pins/*.d.ts","import":"./dist/pins/*.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./execute":{"types":"./dist/execute.d.ts","import":"./dist/execute.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./display/*":{"types":"./dist/display/*.d.ts","import":"./dist/display/*.js"},"./stepper/*":{"types":"./dist/stepper/*.d.ts","import":"./dist/stepper/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./messageBox":{"types":"./dist/messageBox.d.ts","import":"./dist/messageBox.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"4f1cf3294417a5b64d2f18c03dace03c804847e0","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.19.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"26.10.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.33.0_1790838946814_0.5740903565209683","host":"s3://npm-registry-packages-npm-production"}},"1.34.0":{"name":"dwc-gcode-core","version":"1.34.0","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.34.0","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.2"},"dist":{"shasum":"dfe1dbae4249e939da8da60a4c7867ef0b8ce660","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.34.0.tgz","fileCount":183,"integrity":"sha512-utyqMN1DU1MMfhEukZtda3MzAdCuz5h5qIBUlOqrM+SkYoATXDiykyHmkdYZw9ORPNjSR+u15YjvAvn/O7LM3A==","signatures":[{"sig":"MEUCIQCEdEH4WQn4ALiZDfe+580I+2+o1jEvFQde6NK4MEnErgIgZKR/gf8lqhxutWxz9QHZXavgi0XF728k6tRWilq2zIs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIEVRiUTPZ98M2rEZ3zNsUhuajGIddIoi4gfEwYyrzqPvAiEAwlv3bBQlAJmS//ubgg/Y1RkW/zadf0bY6ao9rg8/SyQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3520314},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./pins/*":{"types":"./dist/pins/*.d.ts","import":"./dist/pins/*.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./execute":{"types":"./dist/execute.d.ts","import":"./dist/execute.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./display/*":{"types":"./dist/display/*.d.ts","import":"./dist/display/*.js"},"./stepper/*":{"types":"./dist/stepper/*.d.ts","import":"./dist/stepper/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./messageBox":{"types":"./dist/messageBox.d.ts","import":"./dist/messageBox.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"c0ec95360d2c8f2b0d6408c769b4a6356bbfd098","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs","check-rrf-release":"node scripts/check-new-rrf-release.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.19.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"26.10.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.34.0_1790843407575_0.80365291618931","host":"s3://npm-registry-packages-npm-production"}},"1.35.0":{"name":"dwc-gcode-core","version":"1.35.0","license":"GPL-3.0-or-later","_id":"dwc-gcode-core@1.35.0","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"homepage":"https://github.com/jaysuk/dwc-gcode-core","bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"rrf":{"baseline":"3.7.0-rc.2"},"dist":{"shasum":"c8928a44eda0020c320d2e7112f6f7356952388a","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.35.0.tgz","fileCount":183,"integrity":"sha512-3ZsFDsePQRH1auKFLOhngz5CK4lb64kksjgorh+kISCIi5thgJYR04DSeYv1numWIkyFfwi2HgT4Ka6f8iX+ig==","signatures":[{"sig":"MEUCIGCJLa/Ez1Z/pbVeG+UoXdyQ5N04xaq2ZsGXZmFaklX7AiEA/8wH0LSEdrLmP3eHlJzMpnYL5A/D2RHy/HJvaWoPjLQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCpzWvMztyPVSJphaAB/jk0QCul7eDAv6VdK9pRDHTRPQIhAIs3imWNNdeBmCJYZBAODL5QJJ6IdbjOgcYn5YPcKMcf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3540557},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./pins/*":{"types":"./dist/pins/*.d.ts","import":"./dist/pins/*.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./execute":{"types":"./dist/execute.d.ts","import":"./dist/execute.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./display/*":{"types":"./dist/display/*.d.ts","import":"./dist/display/*.js"},"./stepper/*":{"types":"./dist/stepper/*.d.ts","import":"./dist/stepper/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./messageBox":{"types":"./dist/messageBox.d.ts","import":"./dist/messageBox.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"c0f31b76958801eeea872eb51c296b1a2f326b3a","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs","check-rrf-release":"node scripts/check-new-rrf-release.mjs"},"_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.19.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"sideEffects":false,"_nodeVersion":"26.10.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/dwc-gcode-core_1.35.0_1790850162560_0.5178610022471191","host":"s3://npm-registry-packages-npm-production"}},"1.36.0":{"_id":"dwc-gcode-core@1.36.0","rrf":{"baseline":"3.7.0-rc.2"},"bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"dist":{"shasum":"3c3aad7fddab4afc6c69d580253a828fa306d9ec","tarball":"https://registry.npmjs.org/dwc-gcode-core/-/dwc-gcode-core-1.36.0.tgz","fileCount":186,"integrity":"sha512-LgT7Zb5w6ii4qR7S49LkEEt/UdP+ZLKu+FVWi271uTAMcytkf5BNN3opKnZwJTdzlxJH+AklHQychU1XOfJdPA==","signatures":[{"sig":"MEUCIQCop5SgmRZrHW9Itm5fbLeK30Yo/njW3LBKZ/w0gUjQjgIgH1t4WQ83VcFJh+bgxrypz5xM6tdmv75f+ALLhqhvT2Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGyHQCnmibKJiYPWccV5sWCJ6G4pBbUrvQnHqz7DR8tFAiEAuhSMVDkUo6w9XtB6l1FUGLclgM4azhZHq/n4gbQHQUc="}],"unpackedSize":3587658},"main":"dist/index.js","name":"dwc-gcode-core","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./lex":{"types":"./dist/lex.d.ts","import":"./dist/lex.js"},"./rrf":{"types":"./dist/rrf.d.ts","import":"./dist/rrf.js"},"./edit":{"types":"./dist/edit.d.ts","import":"./dist/edit.js"},"./meta":{"types":"./dist/meta.d.ts","import":"./dist/meta.js"},"./stamp":{"types":"./dist/stamp.d.ts","import":"./dist/stamp.js"},"./expr/*":{"types":"./dist/expr/*.d.ts","import":"./dist/expr/*.js"},"./params":{"types":"./dist/params.d.ts","import":"./dist/params.js"},"./pins/*":{"types":"./dist/pins/*.d.ts","import":"./dist/pins/*.js"},"./compare":{"types":"./dist/compare.d.ts","import":"./dist/compare.js"},"./execute":{"types":"./dist/execute.d.ts","import":"./dist/execute.js"},"./files/*":{"types":"./dist/files/*.d.ts","import":"./dist/files/*.js"},"./project":{"types":"./dist/project.d.ts","import":"./dist/project.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"},"./document":{"types":"./dist/document.d.ts","import":"./dist/document.js"},"./firmware":{"types":"./dist/firmware.d.ts","import":"./dist/firmware.js"},"./display/*":{"types":"./dist/display/*.d.ts","import":"./dist/display/*.js"},"./stepper/*":{"types":"./dist/stepper/*.d.ts","import":"./dist/stepper/*.js"},"./commands/*":{"types":"./dist/commands/*.d.ts","import":"./dist/commands/*.js"},"./messageBox":{"types":"./dist/messageBox.d.ts","import":"./dist/messageBox.js"},"./releases/*":{"types":"./dist/releases/*.d.ts","import":"./dist/releases/*.js"},"./dictionary/*":{"types":"./dist/dictionary/*.d.ts","import":"./dist/dictionary/*.js"},"./package.json":"./package.json","./diagnostics/*":{"types":"./dist/diagnostics/*.d.ts","import":"./dist/diagnostics/*.js"},"./objectmodel/*":{"types":"./dist/objectmodel/*.d.ts","import":"./dist/objectmodel/*.js"}},"gitHead":"2ec47364020b7595d7a1b31c86db6167b9ff1f11","license":"GPL-3.0-or-later","scripts":{"test":"vitest run","bench":"node scripts/bench-lex.mjs","build":"tsc -p tsconfig.json","triage":"node scripts/rrf-triage.mjs","prepare":"npm run build","docs:api":"node scripts/build-api-doc.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage","test:packaging":"node scripts/test-packaging-legacy.mjs","docs:diagnostics":"node scripts/build-diagnostics-doc.mjs","check-rrf-release":"node scripts/check-new-rrf-release.mjs"},"version":"1.36.0","_npmUser":{"name":"jay_s_uk","email":"jay@jayuk.org"},"homepage":"https://github.com/jaysuk/dwc-gcode-core","repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"_npmVersion":"11.19.1","description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","directories":{},"maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"sideEffects":false,"_nodeVersion":"26.10.0","typesVersions":{"*":{"*":["dist/*","dist/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^5.6.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dwc-gcode-core_1.36.0_1790858021072_0.8632318708050588"}}},"time":{"created":"2026-09-16T05:04:50.039Z","modified":"2026-10-01T12:33:41.418Z","1.0.0":"2026-09-16T05:04:50.267Z","1.1.0":"2026-09-16T06:26:46.260Z","1.2.0":"2026-09-16T06:46:17.773Z","1.3.0":"2026-09-16T07:17:11.167Z","1.3.1":"2026-09-17T09:36:22.185Z","1.4.0":"2026-09-21T19:49:36.530Z","1.5.0":"2026-09-22T13:48:46.701Z","1.5.1":"2026-09-22T13:58:10.877Z","1.6.0":"2026-09-22T14:40:40.663Z","1.7.0":"2026-09-22T14:46:57.288Z","1.8.0":"2026-09-22T15:34:42.341Z","1.9.0":"2026-09-22T18:39:28.894Z","1.9.1":"2026-09-22T18:55:36.142Z","1.9.2":"2026-09-22T21:06:01.900Z","1.10.0":"2026-09-23T04:04:28.263Z","1.11.0":"2026-09-23T05:48:24.317Z","1.12.0":"2026-09-23T05:54:07.828Z","1.13.0":"2026-09-23T05:57:30.387Z","1.14.0":"2026-09-23T06:01:55.714Z","1.15.0":"2026-09-23T06:06:44.633Z","1.16.0":"2026-09-23T06:10:59.425Z","1.17.0":"2026-09-23T06:15:54.912Z","1.18.0":"2026-09-23T06:19:08.558Z","1.19.0":"2026-09-23T06:21:32.085Z","1.20.0":"2026-09-23T06:26:11.329Z","1.21.0":"2026-09-23T08:57:41.619Z","1.22.0":"2026-09-23T09:04:49.068Z","1.23.0":"2026-09-23T10:11:32.502Z","1.25.0":"2026-09-28T14:14:49.355Z","1.26.0":"2026-09-28T14:48:51.920Z","1.27.0":"2026-09-28T18:22:36.742Z","1.28.0":"2026-09-29T08:54:59.339Z","1.29.0":"2026-09-29T09:59:55.391Z","1.30.0":"2026-09-29T10:55:38.818Z","1.31.0":"2026-09-30T07:35:22.242Z","1.32.0":"2026-09-30T10:23:17.117Z","1.33.0":"2026-10-01T07:15:46.950Z","1.34.0":"2026-10-01T08:30:07.710Z","1.35.0":"2026-10-01T10:22:42.709Z","1.36.0":"2026-10-01T12:33:41.230Z"},"bugs":{"url":"https://github.com/jaysuk/dwc-gcode-core/issues"},"license":"GPL-3.0-or-later","homepage":"https://github.com/jaysuk/dwc-gcode-core","repository":{"url":"git+https://github.com/jaysuk/dwc-gcode-core.git","type":"git"},"description":"RepRapFirmware-faithful G-code parsing for DuetWebControl plugins: an allocation-light line tokeniser, parameter parsing and in-place rewriting, conditional-G-code (if/var/while/...) recognition, a line-preserving config.g/macro directive editor, firmware","maintainers":[{"name":"jay_s_uk","email":"jay@jayuk.org"}],"readme":"# dwc-gcode-core\r\n\r\nG-code parsing for DuetWebControl plugins that follows what RepRapFirmware actually does, not what a\r\nG-code line looks like it does.\r\n\r\n- **An allocation-light line tokeniser** that never splits a comment out of a quoted string\r\n  (`M291 P\"done; resuming\"`), handles RRF's `\"\"` escapes and `{…}` expressions, and skips `N` line\r\n  numbers.\r\n- **Parameter parsing and in-place rewriting** on index spans, so rewriting one value leaves the\r\n  rest of the line byte-identical.\r\n- **A small table of what specific commands mean**, each entry checked against RRF source at a\r\n  named release: `G10`'s three forms (tool settings, workplace offset, retraction), `M568`/`G10`\r\n  tool temperatures including per-heater colon lists, and which commands' `P` is a tool number.\r\n- **A line-preserving config.g/macro directive editor** (`dwc-gcode-core/edit`) — find a directive\r\n  (active or commented-out), replace one parameter or the whole line, append one if it's missing, or\r\n  edit across `config.g` and its `M98` includes, always keeping the rest of the file byte-identical.\r\n- **Conditional G-code (RRF's `if`/`var`/`while`/…) recognition** — `classifyLine` tells a command\r\n  apart from a meta-command, a comment or blank line, with RRF's own block-nesting indent computed\r\n  alongside it; `parseAssignment` reads all four of RRF's variable-mutating forms\r\n  (`var`/`global` declarations, `set var.`/`set global.` assignments).\r\n- **Firmware version comparison and a small \"what changed since when\" table** — `parseFirmwareVersion`/\r\n  `compareFirmwareVersions` handle RRF's actual version format (the STM32 port's parenthesised\r\n  suffix, and its `+N` build-number tiebreaker for same-prerelease releases); `FEATURES`/`supports()`\r\n  gate on a cited RRF version rather than a magic string repeated at every call site.\r\n\r\nPure TypeScript, zero runtime dependencies, no Vue, Pinia or DWC imports. It is bundled into each\r\nplugin that uses it.\r\n\r\n## Install\r\n\r\n```bash\r\nnpm install dwc-gcode-core\r\n```\r\n\r\n## Use\r\n\r\n```ts\r\nimport {\r\n\tclassifyLine, firmwareAtLeast, g10Form, parseAssignment, parseParams, paramNumber,\r\n\treadToolTemperatureSetting, setParam, supports, tokenise, withBody,\r\n} from \"dwc-gcode-core\";\r\n\r\nconst token = tokenise(\"G10 P1 S205:200 R150 ; tool 1\");\r\ntoken.code;                                      // \"G10\"\r\ng10Form(token.body);                             // \"toolSettings\" — not a retraction\r\nreadToolTemperatureSetting(token.code, token.body);\r\n// { tool: 1, active: [205, 200], standby: [150], setsTemperatures: true, heaterState: null }\r\n\r\nparamNumber(parseParams(\"M116 P\"), \"P\");         // null — a bare P waits for every tool; it is not tool 0\r\nwithBody(token, setParam(token.body, \"P\", \"2\")); // \"G10 P2 S205:200 R150 ; tool 1\"\r\n\r\nclassifyLine(\"if sensors.gpIn[0].value = 1\");    // { kind: \"meta\", meta: \"if\", indent: 0 }\r\nclassifyLine(\"  G28 Z\");                         // { kind: \"command\", command: {...}, indent: 2 }\r\nparseAssignment(\"set global.T1heat=heat.heaters[1].active\");\r\n// { form: \"set\", scope: \"global\", name: \"T1heat\", expression: \"heat.heaters[1].active\", ... }\r\n\r\nsupports(board.firmwareVersion, \"m568\");           // true from RRF 3.3 onward\r\nfirmwareAtLeast(board.firmwareVersion, \"3.7.0-rc.1\"); // strips a real board's \"3.7.0-rc.1(CAN0)\" first\r\n```\r\n\r\nEach module is also its own entry point (`dwc-gcode-core/lex`, `/params`, `/meta`, `/document`,\r\n`/edit`, `/expr/parse`, `/expr/tables`, `/files/kinds`, `/files/menu`, `/files/heightmap`,\r\n`/files/boardTxt`, `/display/lcd`, `/display/menuModel`, `/display/menuDisplay`, `/display/menuValues`, `/firmware`, `/commands/g10`, `/commands/toolParams`, `/dictionary/commands`, `/dictionary/schema`,\r\n`/objectmodel/versions`, `/objectmodel/schema`, `/releases/schema`, `/releases/changes`,\r\n`/releases/impact`, `/releases/releases`, `/releases/scan`, `/releases/diagnostics`, `/diagnostics/schema`, `/diagnostics/rules`, `/diagnostics/diagnose`,\r\n`/diagnostics/monaco`, `/project`, `/compare`, `/rrf`, `/version`, `/stamp` — see `docs/api.md` for\r\nevery export, subpath by subpath), and the package is\r\nmarked side-effect free, so a bundler keeps only what a plugin imports. **`/edit` and `/dictionary/*`\r\nare subpath-only, not re-exported from the root** — `/edit`'s own `setParam` (rewrites a parameter on\r\na raw config.g *line*) is a different function from the root's `setParam` (rewrites a parameter on an\r\nalready-tokenised command *body*) that happens to share a name, and `/dictionary/schema`'s `ParamKind`\r\n(the dictionary's parameter-kind enum) likewise collides by name with `/lex`'s own `ParamKind` (a\r\nlexed parameter's syntactic shape); import config-file editing explicitly:\r\n\r\n```ts\r\nimport { findDirectives, parseLines, planDirectiveEdit, setParam } from \"dwc-gcode-core/edit\";\r\n\r\nconst plan = planDirectiveEdit(configText, \"M572\", { D: \"0\" }, (raw) => setParam(raw, \"S\", \"0.045\"), \"M572 D0 S0.045\", \"note\");\r\nplan.after;   // the whole file's new text, or unchanged with plan.blocked set if the line isn't safe to touch\r\nplan.diff;    // line-level diff for a preview UI\r\n```\r\n\r\n## The command dictionary\r\n\r\nWhat each command's parameters are — letter, kind, whether it takes a colon list or an expression,\r\nrequired-ness, value enums, deprecation — cited to a named RRF release rather than guessed from a\r\npattern. 280 commands are known; every command a real slicer or `config.g` actually uses (\"tier 1\")\r\nis reviewed against RRF source (3.7.0-rc.1, or rc.2 where the rc.2 pass re-read it), the rest are drafted from `@duet3d/monacotokens` pending\r\nreview (`dictionary/coverage.json` tracks exactly which is which — see `docs/tasks/10-dictionary.md`).\r\n\r\n```ts\r\nimport { commandSpec } from \"dwc-gcode-core/dictionary/commands\";\r\n\r\nconst spec = commandSpec(\"M568\");\r\nspec?.parameters.find((p) => p.letter === \"P\");\r\n// { letter: \"P\", kind: \"toolNumber\", list: false, expressionAllowed: true, ... }\r\nspec?.reviewed; // the RRF release its handler was last read at (\"3.7.0-rc.1\" or \"3.7.0-rc.2\"), undefined for a drafted-only one\r\n```\r\n\r\n`src/commands/toolParams.ts`'s `TOOL_PARAM_COMMANDS` (which commands' parameter is a real tool\r\nnumber, for a tool-renumbering pass) is derived from this dictionary's reviewed `toolNumber`\r\nparameters, rather than hand-maintained.\r\n\r\n## The object model\r\n\r\nWhether an object-model path used in an expression or a condition (`move.axes[0].homed`,\r\n`heat.heaters[1].current`) exists at a given RRF release, since/until which release, and whether it's\r\ndeprecated — paths are added, removed and deprecated between releases, and a macro written against\r\none release can silently break on another.\r\n\r\n```ts\r\nimport { objectModelChanges, objectModelPath } from \"dwc-gcode-core/objectmodel/schema\";\r\n\r\nobjectModelPath(\"move.motionSystems\", \"3.6.3\");     // { known: false } - added later\r\nobjectModelPath(\"move.motionSystems\", \"3.7.0-rc.1\"); // { known: true, since: \"3.7.0-beta.1\" }\r\nobjectModelPath(\"heat.bedHeaters\", \"3.7.0-rc.1\");    // { known: true, deprecated: \"use bedHeaterMapping instead\" }\r\n\r\nobjectModelChanges(\"3.6.3\", \"3.7.0-rc.1\");\r\n// [{ path: \"move.motionSystems\", change: \"added\", version: \"3.7.0-beta.1\" }, ...]\r\nobjectModelChanges(\"3.7.0-rc.1\", \"3.6.3\"); // the same change, the other way: \"removed\"\r\n```\r\n\r\nAn element of an array is a path too: `sensors.probes[0].offsets[0]`, `heat.heaters[0]` and\r\n`heat.bedHeaterMapping[0][1]` are all known, because each path records how many times its own value\r\ncan be indexed (`OBJECT_MODEL_PATHS[].array`), while `state.status[0]` (a string) is not. A few keys RRF\r\nitself serves that the `@duet3d/objectmodel` package doesn't declare (`seqs.*`) are listed with the RRF\r\nsource they were read from (`OBJECT_MODEL_PATHS[].source`).\r\n\r\n739 paths are tracked across every RRF release in this package's window that `@duet3d/objectmodel`\r\npublished a matching version for (`3.6.3`, `3.7.0-beta.1`–`3.7.0-rc.2`); `3.7.0-alpha.2` is a known\r\nRRF tag with no usable object-model source for it (see `docs/tasks/11-object-model-schema.md`) and is\r\nlisted in `OBJECT_MODEL_VERSIONS` with `hasData: false` rather than silently guessed at. Where RRF's own\r\ntables and the package disagree about one release, RRF's win: `3.7.0-rc.2`'s move of the accelerometers\r\nfrom `boards[].accelerometer` to `sensors.accelerometers[]` is in the schema (with the RRF lines it was\r\nread from, and a `note` on each removed path saying where the data went) although the package's rc.2 and\r\nrc.3 documentation still lists the old place.\r\n\r\n## Evaluating expressions and simulating execution\r\n\r\n`expr/parse.ts` only parses `{...}` expressions into an AST — it \"never evaluates anything ... no\r\nobject model, no variable values\" (its own doc comment). `expr/evaluate.ts` is the practical subset\r\nof RRF's real evaluator built on top of that AST: comparisons, short-circuit `&&`/`||`, arithmetic,\r\n`^` (concatenation, not exponentiation — see its own doc comment), `#` (a string's length, or an\r\narray's element count — object-model-backed or a plain/variable one; anything else is a real RRF\r\nerror, not a coercion), the deterministic math functions (`abs`, `floor`, `pow`, `mod`, `max`/`min`,\r\n...), `vector`/`take`/`drop`/`find`, and `exists()` (special-cased like real RRF's own parser — true\r\nfor a declared `var`/`global` regardless of its value, or for an object-model path when\r\n`EvalContext.pathExists` is supplied). It deliberately leaves out anything that needs file IO,\r\nentropy, wall-clock time or macro-call parameters (`fileread`, `fileexists`, `random`, `datetime`,\r\n`param.*`, ...) as clean \"not supported\" errors rather than guessing.\r\n\r\n```ts\r\nimport { evaluateExpression, UnresolvedPathError, type EvalContext } from \"dwc-gcode-core/expr/evaluate\";\r\nimport { parseExpression } from \"dwc-gcode-core/expr/parse\";\r\n\r\nconst ctx: EvalContext = {\r\n\tresolvePath: (path) => { throw new UnresolvedPathError(path); }, // a live/hardware value we don't have\r\n\tresolveVariable: (scope, name) => { throw new Error(`'${scope}.${name}' is not defined`); },\r\n};\r\nevaluateExpression(parseExpression(\"sensors.gpIn[0].value > 0\").ast, ctx);\r\n// { ok: false, kind: \"unresolved-path\", path: \"sensors.gpIn[0].value\" }\r\n```\r\n\r\n`execute.ts`'s `walkExecution` uses that evaluator together with `document.ts`'s `blocks` tree to\r\ndetermine a file's REAL execution order — which `if`/`elif`/`else` arm actually runs, how many times\r\na `while` body repeats, `break`/`continue`/`abort` — rather than a flat top-to-bottom line walk. It's\r\na single-pass, synchronous, pure function: given a `resolvePath` that throws `UnresolvedPathError` for\r\na value it doesn't have, it stops exactly at the condition that needed it and reports everything\r\nexecuted up to that point; re-running it with a `resolvePath` that now answers that path picks up from\r\nthe top and gets further (re-running is simpler and no less correct than trying to resume mid-walk,\r\nsince the walk is deterministic given the same inputs). This is the seam a caller uses to simulate\r\n\"what if this sensor read X\" without a live machine — prompt for a value, supply it, re-walk.\r\n\r\n```ts\r\nimport { walkExecution } from \"dwc-gcode-core/execute\";\r\nimport { parseDocument } from \"dwc-gcode-core/document\";\r\n\r\nconst doc = parseDocument(\"if sensors.gpIn[0].value > 0\\n    G1 X1\\nelse\\n    G1 X2\\nM400\\n\");\r\nconst r = walkExecution(doc, { resolvePath: () => { throw new UnresolvedPathError(\"sensors.gpIn[0].value\"); } });\r\n// { status: \"paused\", line: 0, path: \"sensors.gpIn[0].value\", steps: [] }\r\n\r\nwalkExecution(doc, { resolvePath: (p) => (p === \"sensors.gpIn[0].value\" ? 1 : 0) });\r\n// { status: \"complete\", steps: [{ line: 0 }, { line: 1 }, { line: 2 }, { line: 4 }] }\r\n```\r\n\r\nA `while` loop is capped at `maxIterationsPerLoop` (default 10 000) — RRF itself has none (it re-seeks\r\nthe file on every iteration), but an offline simulator can't inherit that unboundedness without risking\r\na hang. An `if`/`elif`/`while` CONDITION can pause a walk on an unresolved path, and so can a blocking\r\n`M291` on an unanswered message box (below) — an ordinary command's own `{...}` parameter (e.g.\r\n`G1 X{sensors.someValue}`) is NOT evaluated by `walkExecution` at all, since unlike those two it\r\ndoesn't affect which lines run next; a caller deriving machine state from each step evaluates those\r\nitself. `var` is properly block-scoped (a fresh frame per `if`/`elif`/`else`-arm or `while`-iteration\r\nbody, popped when it ends, correctly shadowing an outer `var` of the same name without corrupting it)\r\n— `global` is unaffected, RRF doesn't block-scope it either.\r\n\r\nPass `objectModelVersion` (one of `OBJECT_MODEL_VERSIONS`' tracked versions, `objectmodel/versions.ts`)\r\nto validate every referenced path against `objectmodel/schema.ts` before `resolvePath` is even called\r\n— a path that doesn't exist at that version is a hard `\"error\"`, not a `\"paused\"` (there's no\r\nreasonable value to ask for a path that isn't real), and it's what lets `exists()` answer for an\r\nobject-model-path argument instead of a \"not supported\" error:\r\n\r\n```ts\r\nwalkExecution(doc, { resolvePath: () => { throw new UnresolvedPathError(\"x\"); }, objectModelVersion: \"3.7.0-rc.1\" });\r\n// a typo'd or version-mismatched path is now an \"error\", not a \"paused\" waiting for a value\r\n```\r\n\r\n`onStep(step)` fires synchronously, in order, right after each step is recorded — before\r\n`walkExecution` itself returns. It's the seam for a caller that wants to maintain its own derived state\r\nINCREMENTALLY as the walk proceeds (rather than only replaying the final `steps` array afterwards), so\r\na later condition's `resolvePath` can answer from something the walk has already gone past — e.g.\r\nanswering `move.axes[0].homed` from a `G28` seen earlier, instead of always prompting for it.\r\n\r\n### Blocking message boxes (`M291`)\r\n\r\n`messageBox.ts`'s `parseBlockingMessageBox` turns an `M291` command into a structured prompt — `\"ok\"`/\r\n`\"okCancel\"` (`S2`/`S3`), a value entry (`\"integer\"`/`\"float\"`/`\"string\"`, `S5`/`S6`/`S7`, with\r\n`L`/`H`/`F` limits and default), or `\"choice\"` (`S4`, from a `K`-array — `K` is a full RRF expression in\r\nreal RRF, so `parseBlockingMessageBox` alone can't finish it; `walkExecution` evaluates it internally,\r\nwith the same live `var`/`global` scope a condition would see, before ever pausing). `S0`/`S1`\r\n(non-blocking) return `null`. `walkExecution` pauses on a blocking one exactly like an unresolved\r\nobject-model path — supply `resolveMessageBox`, or throw `UnresolvedMessageBoxError` to defer:\r\n\r\n```ts\r\nimport { UnresolvedMessageBoxError, walkExecution } from \"dwc-gcode-core/execute\";\r\n\r\nconst doc = parseDocument('M291 P\"How many?\" S5 L0 H10\\nif input > 3\\n    G1 X1\\n');\r\nwalkExecution(doc, { resolvePath, resolveMessageBox: () => { throw new UnresolvedMessageBoxError(); } });\r\n// { status: \"message-box\", line: 0, prompt: { mode: \"integer\", message: \"How many?\", min: 0, max: 10, ... } }\r\n\r\nwalkExecution(doc, { resolvePath, resolveMessageBox: () => ({ input: 7, cancelled: false }) });\r\n// { status: \"complete\", steps: [...] } - the later `if input > 3` reads the answer via the `input` constant\r\n```\r\n\r\nA choice box's prompt already carries the evaluated choices, not the raw `K` expression — `input` after\r\nanswering one is the CHOSEN INDEX (0-based; this package's own convention, since real RRF just stores\r\nwhatever M292's own `R` expression sends back, with no canonical index-vs-string rule of its own):\r\n\r\n```ts\r\nconst doc2 = parseDocument('M291 P\"Pick a mode\" S4 K{\"Fast\",\"Quiet\"}\\nif input = 1\\n    G1 X1\\n');\r\nwalkExecution(doc2, { resolvePath, resolveMessageBox: () => { throw new UnresolvedMessageBoxError(); } });\r\n// { status: \"message-box\", prompt: { mode: \"choice\", choices: [\"Fast\", \"Quiet\"], defaultIndex: null, ... } }\r\n```\r\n\r\nCancelling an `\"okCancel\"` box aborts the walk by default — RRF's own default (`shouldAbort` unless the\r\ncommand carries `J2`) — matching the existing `abort` meta-keyword handling; with `J2`, execution\r\ncontinues instead and `result` reads -1. `result`/`input`/`line`/`iterations` (RRF's execution-state\r\nnamed constants) are always live during a walk — no option needed to turn them on.\r\n\r\n## The project model\r\n\r\nThe machine's whole SD-card configuration as one graph — which files invoke which others (`M98`,\r\nhoming, tool changes, filament changes, pause/resume, and more, every route cited in\r\n`docs/invocation-table.md`), and which numbered/named resource (tool, heater, sensor, fan, axis,\r\nendstop, probe, ...) each command defines or references.\r\n\r\n```ts\r\nimport { loadProject } from \"dwc-gcode-core/project\";\r\n\r\nconst project = loadProject([\r\n\t{ path: \"0:/sys/config.g\", text: configText },\r\n\t{ path: \"0:/sys/homeall.g\", text: homeallText },\r\n\t{ path: \"0:/gcodes/print.gcode\", text: printText },\r\n]);\r\n\r\nproject.calls.find((c) => c.via === \"G28-homeall\");     // { to: \"sys/homeall.g\", resolved: true, ... }\r\nproject.symbols.find((s) => s.type === \"tool\" && s.id === \"0\");\r\n// { definitions: [...], uses: [...] } - each site records whether it's inside an `if`/`while`\r\n// (conditional) or written as an `{...}` expression (dynamic) - static analysis only, never evaluated.\r\n```\r\n\r\n## 12864 display emulator\r\n\r\nEverything an editor needs to show what a menu file looks like on a 12864 (ST7920) display, ported from RRF's\r\n`src/Display` so it matches the real panel pixel for pixel: `resolveMenu` (a menu file resolved into items - sticky\r\n`R`/`C`/`F`, widths measured with the real fonts, RRF's defaults, stop at the first error), `Lcd12864` (the frame\r\nbuffer and text engine, both fonts generated from RRF's own tables) and `MenuDisplay` (a running menu: draw,\r\nencoder/touch, `alter`, `files`, `image`, timeouts, the \"Error loading menu\" screen, `M291` message boxes). The machine is a `MenuHost` you\r\nsupply (menu files, live values, visibility, a place to send G-code), so nothing here touches DWC.\r\n\r\n```ts\r\nimport { MenuDisplay } from \"dwc-gcode-core/display/menuDisplay\";\r\n\r\nconst display = new MenuDisplay({ readMenuFile: (name) => files[name], legacyValue: (n) => (n === 80 ? 21.4 : 0) });\r\ndisplay.start();\r\ndisplay.refresh();          // draws; call every ~250 ms (RRF's own refresh interval)\r\ndisplay.encoder(1);         // turn the knob clockwise; encoder(0) pushes it\r\ndisplay.lcd.toAscii();      // 64 rows of 128 pixels - or read display.lcd.getPixel(y, x) to paint a canvas\r\n```\r\n\r\n### `M291` message boxes\r\n\r\nA message box is the firmware's state, not the menu's, so the host tells the display about it - the same job as the\r\nbox handling in RRF's `Display::Spin`. `setMessageBox(box)` draws a box the display can show (`M291` modes 0-3: a border,\r\nthe title and message centred, optional X/Y/Z jog values, and OK / Cancel buttons that send `M292 P0` / `M292 P1`),\r\nleaves it alone while it is the same box, and takes it down again for `null` or a mode the display can't draw. While\r\nit is up the menu underneath is not drawn and the inactivity timeout is off; `clearMessageBox()` reloads the menu.\r\n`displayMessageBox(box)` and `clearMessageBox()` are `Menu::DisplayMessageBox` / `Menu::ClearMessageBox` themselves.\r\n\r\n```ts\r\ndisplay.setMessageBox({ title: \"Bed check\", message: \"Level the bed\", mode: 3, controls: { z: true } });\r\ndisplay.refresh();\r\ndisplay.encoder(1); display.encoder(0);   // highlight OK and push it: the host's execute() receives \"M292 P0\"\r\ndisplay.setMessageBox(null);              // what the firmware does once that M292 has been processed\r\n```\r\n\r\nNot ported: the resistive-touch beep and the tone/beep hooks. Modes above 3 (a choice list, a number to type) are not\r\ndrawn by the display either, so `setMessageBox` treats them as no box.\r\n\r\n## Diagnostics\r\n\r\n32 cited rules — syntax, structure, dictionary, project, release, menu, data and object-model — each\r\nnaming the RRF source or wiki passage that justifies it (see `docs/diagnostics.md`, generated from\r\nthe rule registry). `diagnoseDocument` checks a single parsed file; `diagnoseProject` adds everything\r\nthat needs the whole SD-card graph (undefined/duplicate resources, missing macro files, order\r\ndependencies, menu-file and height-map errors).\r\n\r\n```ts\r\nimport { diagnoseDocument, diagnoseProject } from \"dwc-gcode-core/diagnostics/diagnose\";\r\nimport { toMonacoMarkers } from \"dwc-gcode-core/diagnostics/monaco\";\r\nimport { parseDocument } from \"dwc-gcode-core/document\";\r\n\r\nconst doc = parseDocument(configText);\r\nconst diags = diagnoseDocument(doc, \"0:/sys/config.g\", { firmwareVersion: \"3.7.0-rc.1\" });\r\n// [{ rule: \"dictionary/deprecated\", severity: \"warning\", message: \"M107 is deprecated...\", ... }]\r\n\r\ntoMonacoMarkers(diags, configText); // 1-based line/column, UTF-16 units - no Monaco import\r\n```\r\n\r\nRun `diagnoseProject(project, options)` (see \"The project model\" above for `loadProject`) to add the\r\nproject-wide rules on top of every file's own.\r\n\r\n### User-defined G/M codes, event macros, and platform-specific commands\r\n\r\nRRF runs `/sys/M1234.g` for an `M1234` it doesn't implement (and hands the macro the command's letters\r\nas `param.<letter>`), so such a code is not \"unknown\" and its parameters aren't the dictionary's to\r\njudge. A loaded project knows its own `/sys` files (`project.customCodes`); a caller with only a folder\r\nlisting passes the codes itself:\r\n\r\n```ts\r\nimport { customCodesOf, commandDispatch } from \"dwc-gcode-core/files/customCodes\";\r\n\r\nconst customCodes = customCodesOf([\"config.g\", \"M1234.g\", \"G38.9.g\"]); // Set { \"M1234\", \"G38.9\" }\r\ndiagnoseDocument(doc, \"0:/gcodes/print.gcode\", { firmwareVersion: \"3.7.0-rc.1\", customCodes });\r\n\r\ncommandDispatch(\"M1234\", customCodes); // { kind: \"custom-macro\", file: \"M1234.g\", present: true }\r\ncommandDispatch(\"M104\", customCodes);  // { kind: \"builtin\", spec } - a sys/M104.g is never run\r\n```\r\n\r\nA user macro in the project also appears in `project.calls` (`via: \"custom-code\"`). Likewise the event\r\nhandler macros RRF runs when a heater faults, a filament monitor errors, a driver stalls and so on\r\n(`heater-fault.g`, `filament-error.g`, `driver-stall.g`, ...) are classified by `classifyFile`, described\r\nin full by `dwc-gcode-core/files/events` (`EVENT_TYPES`: what `D`/`B`/`P`/`S` mean for each, and its\r\ndefault action when there's no macro), and reached in the call graph by `M957 E\"heater-fault\" ...`.\r\n\r\nA few commands exist only on one firmware build - `M569.9` (driver type, sense resistor and maximum\r\ncurrent) is implemented by the STM32 fork of RepRapFirmware and by nothing else. Pass\r\n`platform: \"stm32\"` (or a `boards` map naming the mainboard) and it is accepted; on `\"duet\"` it is\r\nflagged (`dictionary/not-available-on-platform`); with neither, it is never judged.\r\n\r\n## Compare\r\n\r\nSemantic diff, not textual — directives are matched by an identity key derived from the dictionary's\r\nown defining parameters (a tool by its `P`, a heater by `M950`'s `H`, an axis mapping by `M584`'s own\r\nletter, ...), so a reordered file or one split across includes reads as `changed`/`moved`, not\r\nwholesale removals and additions. `diffText` is the separate byte-faithful line diff for callers that\r\nwant that view too.\r\n\r\n```ts\r\nimport { compareDocuments, diffText } from \"dwc-gcode-core/compare\";\r\nimport { parseDocument } from \"dwc-gcode-core/document\";\r\n\r\ncompareDocuments(parseDocument(before), parseDocument(after), { fromVersion: \"3.6.3\", toVersion: \"3.7.0-rc.1\" });\r\n// [{ type: \"changed\", code: \"M950\", identity: \"M950:H0\", params: [{ letter: \"C\", from: \"\\\"out0\\\"\", to: \"\\\"out1\\\"\" }], ... }]\r\n\r\ndiffText(before, after); // [{ type: \"same\" | \"added\" | \"removed\", text, lineA?, lineB? }, ...]\r\n```\r\n\r\n`compareProjects(a, b, options)` runs the same matching across a whole `loadProject` graph, which is\r\nwhat lets a directive that moved from `config.g` into an included file show up as `moved`, not a\r\nfalse remove-plus-add.\r\n\r\n## Release changes\r\n\r\nA versioned catalogue of RRF changes — commands, parameters, object-model paths and a handful of\r\nexpression-syntax features — queryable in either direction, plus matching those changes against a\r\nreal file to find what it actually uses that changed.\r\n\r\n```ts\r\nimport { changesBetween } from \"dwc-gcode-core/releases/changes\";\r\nimport { impactOf } from \"dwc-gcode-core/releases/impact\";\r\nimport { parseDocument } from \"dwc-gcode-core/document\";\r\n\r\nchangesBetween(\"3.6.3\", \"3.7.0-rc.1\").find((e) => e.id === \"m408-removed\");\r\n// { id: \"m408-removed\", version: \"3.7.0-alpha.2\", kind: \"removed\", direction: \"upgrade\", ... }\r\n\r\nconst doc = parseDocument(configText);\r\nimpactOf(doc, \"3.6.3\", \"3.7.0-rc.1\");\r\n// [{ event: {...}, direction: \"upgrade\", line: 4, message: \"M408 removed entirely; ... (will stop working ...)\" }]\r\n```\r\n\r\nBuilt from `scripts/rrf-triage.mjs`'s output for the `GCodeBuffer`/`GCodes dispatch` subsystems (the\r\ntwo most likely to affect this package) plus every dictionary/object-model entry with version history\r\n— the rest of RRF's subsystems and the wiki are deferred; see `docs/tasks/12-release-model.md`.\r\n`firmware.ts`'s `FEATURES`/`supports()` are now a thin, named view over this same store.\r\n\r\n### Scanning a machine's files for known changes\r\n\r\n`scanImpact` runs the catalogue over a set of files (a host lists and downloads `0:/sys` and `0:/macros`; this stays pure) and\r\nreports which lines use something that changed between two firmware versions, grouped by change and by file.\r\n\r\n```ts\r\nimport { scanImpact } from \"dwc-gcode-core/releases/scan\";\r\nimport { impactToDiagnostics } from \"dwc-gcode-core/releases/diagnostics\";\r\n\r\nconst report = scanImpact(\r\n  [{ path: \"0:/sys/config.g\", text: configText }, { path: \"0:/macros/Heat/bed.g\", text: bedText }],\r\n  \"3.6.3\", \"3.7.0-rc.2(CAN0)\",          // a board's own version string works, and so does the reverse order (a downgrade)\r\n  { acknowledged: new Set([\"m408-removed\"]) },\r\n);\r\nreport.byEvent;     // [{ event, occurrences: [{ path, line, start, end, snippet, message }] }], oldest change first\r\nreport.byFile;      // the same occurrences per file\r\nreport.undetectable; // in-range changes no matcher can see - show them, or an empty report reads as \"all clear\"\r\n```\r\n\r\nMenu files, `board.txt`, CSV, binary and print files are skipped (`report.skipped`). `scanFile` scans one file (for a host that\r\ncaches per file and yields between them) and `buildImpactReport` assembles the parts. `impactToDiagnostics` turns findings into\r\n`Diagnostic`s under `release/removed` (warning), `release/changed`, `release/deprecated` and `release/default-changed` (info).\r\n`RELEASES` lists every release the catalogue tracks; `isDetectable(event)` says whether `impactOf` can ever match an event.\r\nEvent ids are a contract: a host may persist \"already reviewed\" against them, so an id is never renamed or removed\r\n(`test/fixtures/event-ids.json`).\r\n\r\n### What needs changing, and how\r\n\r\n`scanImpact` lists every line that touches something that changed, which is mostly noise for a person. `planActions(report, files)`\r\n(`dwc-gcode-core/releases/actions`) is the second pass: `problems` are lines that will fail or stop working, `worthALook` still work but\r\nbehave differently, and what cannot hurt (a command that was only ADDED, a parameter that now also takes a list) is left out. A rule can\r\nread every file, so `M140 P0 H0` is reported only when heater 0 is also on a tool or chamber. A problem may carry a `fix`: one or more\r\noptions, each a list of plain text edits that `previewEdits` shows and `applyFileEdits` applies. `fix.safe` is true only for a single\r\noption that cannot change what the file means; a choice (which of two jobs keeps a heater) is never picked for the user.\r\n\r\n```ts\r\nimport { planActions, previewEdits, applyFileEdits } from \"dwc-gcode-core/releases/actions\";\r\n\r\nconst plan = planActions(report, files);       // the same `files` the report was made from\r\nconst fix = plan.problems[0].fix;\r\nif (fix) previewEdits(files, fix.options[0].edits);   // [{ path, line, before, after }]\r\n```\r\n\r\n## STM32 `board.txt`\r\n\r\nThe STM32 firmware (`gloomyandy/RepRapFirmware`) reads `0:/sys/board.txt` - pins, SD-card type, driver\r\ntypes, SPI/CAN/WiFi wiring - with its own `key = value` / `key = { a, b }` grammar, not G-code.\r\n`parseBoardTxt` is a port of that loader (`BoardConfig.cpp` `GetConfigKeys`), quirks included: a value\r\nends at the first character outside `[A-Za-z0-9._]` (so `-1` reads as nothing), `uint8` settings wrap at\r\n256, a `{ }` list writes only the entries it names and is discarded whole if it overflows or is not closed,\r\nand a UTF-8 byte-order mark spoils the first line. RRF reports those mistakes only on USB serial;\r\n`problems` gives them to you with line numbers.\r\n\r\n```ts\r\nimport { parseBoardTxt } from \"dwc-gcode-core/files/boardTxt\";\r\nimport { lookupPinName } from \"dwc-gcode-core/pins/tables\";\r\n\r\n// The firmware layers the baked-in rrfboot.txt under the SD card's board.txt.\r\nconst boot = parseBoardTxt(rrfbootText, { restricted: false, mcu: \"h7\" });\r\nconst user = parseBoardTxt(boardTxtText, {\r\n  base: boot.values,                       // effective values so far; board.txt cannot rename the board\r\n  mcu: \"h7\",\r\n  resolvePin: (name) => lookupPinName(\"btt/octopuspro1_1_h723\", name)?.canonicalName,  // rrfpins.txt aliases\r\n});\r\n\r\nuser.values[\"stepper.stepPins\"];   // [\"F.13\", \"G.0\", ...] - \"A.13\" form, null = NoPin\r\nuser.problems;                     // [{ kind: \"array-overflow\", line: 12, key: \"stepper.enablePins\", ... }]\r\n```\r\n\r\n`test/corpus/rrfboot/` holds the 48 real `rrfboot.txt` files (same grammar) from `gloomyandy/RRFBuild`;\r\nevery one must parse with no problems. `classifyFile(\"0:/sys/board.txt\")` is `board-config`.\r\n\r\n## The stamp\r\n\r\nEvery file a plugin parses can carry a stamp — one `;` comment recording the RRF version it was\r\nchecked against, the plugin (id + version) that checked it, and this package's own version — so a\r\nfile can be flagged for re-checking when the firmware, the plugin, or this package itself changes\r\n(the user's own words: \"in case we need to reparse due to plugin bugs\"). One format, owned here, so\r\nevery plugin reads and writes the same thing.\r\n\r\n```ts\r\nimport { readStamp, recheckReasons, stampable, writeStamp } from \"dwc-gcode-core/stamp\";\r\nimport { classifyFile } from \"dwc-gcode-core/files/kinds\";\r\n\r\nconst { kind } = classifyFile(\"0:/gcodes/benchy.gcode\");\r\nif (stampable(kind)) {\r\n\ttext = writeStamp(text, { rrf: \"3.7.0-rc.1\", pluginId: \"GCodePostProcessor\", pluginVersion: \"1.2.1\", at: new Date().toISOString() }, kind);\r\n}\r\n// ; dwc-gcode-core: checked rrf=3.7.0-rc.1 plugin=GCodePostProcessor@1.2.1 core=0.5.0 at=2026-09-14T10:00:00.000Z\r\n\r\nconst stamp = readStamp(text);                                        // null if there is no stamp\r\nrecheckReasons(stamp, { rrf: currentRrf, pluginId: \"GCodePostProcessor\", pluginVersion: \"1.3.0\" });\r\n// [{ kind: \"plugin-changed\", pluginId: \"GCodePostProcessor\", from: \"1.2.1\", to: \"1.3.0\" }]\r\n```\r\n\r\nWriting replaces an existing stamp in place rather than accumulating one, coexists with the\r\npost-processor's own `; postprocessed-by:` line (in either order), and survives a BOM or CRLF line\r\nendings untouched. `writeStamp` throws `StampNotAllowedError` for a file kind that must never be\r\nstamped — `heightmap.csv` and `probePoints.csv` most importantly: their own loader in RRF requires\r\nan exact first line, so a stamp would break loading outright (verified directly against\r\n`HeightMap::LoadFromFile`, not assumed). A value containing a space, `%` or `=` (a DWC plugin id may\r\ncontain a space) is percent-encoded; anything else, including the `at` timestamp's own colons, is\r\nleft as plain text.\r\n\r\n## Tracking RepRapFirmware\r\n\r\n`RRF_BASELINE` (and `package.json`'s `rrf.baseline`) names the RRF release every citation in this\r\npackage was checked against — currently **3.7.0-rc.2**.\r\n\r\nWhen RRF releases, list the commits that could change what this package must recognise:\r\n\r\n```bash\r\nnpm run triage -- 3.7.0-rc.2 3.7.0 --out docs/rrf-triage/3.7.0-rc.2..3.7.0.md\r\n```\r\n\r\nOnce that list is closed and the baseline moves, `node scripts/rebase-citations.mjs <from> <to> --rrf <clone>\r\n[--write]` moves every `RRF <from> <file>:<lines>` citation to `<to>` where the cited lines are provably\r\nunchanged (remapping their line numbers through the diff) and lists the rest for a human to re-read.\r\n\r\nThat lists every commit in the range touching RRF's G-code parser (`src/GCodes/GCodeBuffer/`) or\r\ncommand dispatch (`src/GCodes/GCodes*.cpp`), as a checklist. It needs an authenticated `gh`. Each\r\nitem is closed as *no effect on syntax*, *recognition added* (code + test) or *semantic table\r\nupdated* (entry + citation + test). Only a fully closed list moves the baseline, and that commit is\r\ntagged `rrf-<tag>` alongside the usual `vX.Y.Z` release tags.\r\n\r\n`docs/wiki-discrepancies.md` records where the Duet3D G-code dictionary and RRF source disagree, with\r\nevidence from both, so they can be reported upstream.\r\n\r\n## Legacy webpack/CJS builds (`moduleResolution: \"node\"`)\r\n\r\nThis package is ESM-only (`\"type\": \"module\"`) and its `exports` map has no `\"require\"` condition. A\r\nmodern bundler (Vite, current TypeScript with `moduleResolution: \"bundler\"`/`\"node16\"`/`\"nodenext\"`)\r\nhandles this fine. An older webpack/Vue-CLI setup using `moduleResolution: \"node\"` (TypeScript's\r\nclassic algorithm, which doesn't read `exports` at all) resolves both the bare root specifier and\r\nevery subpath correctly as of `typesVersions`' current shape (task 16) — verified against a real\r\nbuild failure, not assumed fixed: `test/packaging/legacy/` is a fixture consumer importing the root\r\nand every documented subpath under `moduleResolution: \"node\"`; `npm run test:packaging` (also a CI\r\nstep) copies the built package into its own `node_modules` and runs `tsc --noEmit` against it.\r\n\r\n**History, for anyone hitting this again**: the root specifier alone used to fail — confirmed against\r\na real DWC 3.6 build (resonance-lab's own dual DWC 3.6/3.7 target) — with `TS2307: ... types exist,\r\nbut this result could not be resolved under your current 'moduleResolution' setting`. The actual cause\r\nturned out to be neither the missing `\"require\"` condition nor the `exports` map at all (both were\r\ntested and ruled out directly against the fixture): `typesVersions`' own `\"*\": {\"*\": [\"dist/*\"]}`\r\nwildcard also matches the ROOT specifier under classic resolution (the \"subpath\" being matched is\r\nempty), rewriting it to `dist/` with no filename — which fails, shadowing the perfectly good top-level\r\n`types`/`main` fields entirely. The fix is a **second fallback candidate** in the same wildcard entry:\r\n`\"*\": [\"dist/*\", \"dist/index.d.ts\"]` — a real subpath still resolves via the first candidate; the\r\nroot specifier's empty match fails the first candidate and falls through to the second, which is\r\nexactly `dist/index.d.ts`. No `exports` or `main`/`types` change was needed once this was understood.\r\n\r\n## Licence\r\n\r\nGPL-3.0-or-later.\r\n","readmeFilename":"README.md"}