{"_id":"@aruzone/aze-forge","_rev":"6-0ab4b6a328d3b02b4e68ea0bb6fc01d1","name":"@aruzone/aze-forge","dist-tags":{"latest":"0.3.3"},"versions":{"0.1.0":{"name":"@aruzone/aze-forge","version":"0.1.0","keywords":["azemark","markdown","publishing","pdf","svg"],"license":"MIT","_id":"@aruzone/aze-forge@0.1.0","maintainers":[{"name":"kkumaresan.com","email":"ux.kumaresan@gmail.com"}],"homepage":"https://github.com/aruzone/aze-forge#readme","bugs":{"url":"https://github.com/aruzone/aze-forge/issues"},"bin":{"azeforge":"dist/cli.js"},"dist":{"shasum":"b781b2ddc4f5efbdfa252e81b66ee72db78be367","tarball":"https://registry.npmjs.org/@aruzone/aze-forge/-/aze-forge-0.1.0.tgz","fileCount":133,"integrity":"sha512-Zmi3h9oxN0Gr2IjHkK6MaXOFgCk4jcIbpmXBd5rDL9kpNVpG9h04H9z75MPzCOaNjzIB/60ConDfeE/RmXCk+Q==","signatures":[{"sig":"MEQCIE3OMtSxk5T0T86HinEAj6um8qo++he7xXaHpTqDcMCfAiB/IWoRkbPbrqBPf7zfZbpE0FldQ+Du7P/uVBrlhR6Wfw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":960240},"type":"module","engines":{"node":">=22 <23 || >=24 <25"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"a5a2c5a0f55697613b51e6f97b9b34e6314b6cc3","scripts":{"test":"npm run build --silent && node --test test/*.test.mjs","build":"tsc -p tsconfig.json","test:cli":"npm run build --silent && node --test test/cli.test.mjs","typecheck":"tsc -p tsconfig.json --noEmit","acceptance":"node scripts/acceptance.mjs","test:matrix":"node --test --test-reporter=tap test/capabilities.test.mjs test/cli.test.mjs test/compatibility.test.mjs test/compiler.test.mjs test/equation.test.mjs test/fail-closed.test.mjs test/format.test.mjs test/installed-cli.test.mjs test/schemas.test.mjs test/theme-assets.test.mjs test/watch-serve.test.mjs","test:compiler":"npm run build --silent && node --test test/compiler.test.mjs","prepublishOnly":"npm run build --silent","test:canonical":"node scripts/acceptance.mjs --json","test:acceptance":"npm run build --silent && node --test test/acceptance.test.mjs","acceptance:refresh":"node scripts/acceptance.mjs --refresh","test:browser-smoke":"node --test --test-reporter=tap test/browser-smoke.test.mjs","test:canonical-suite":"node --test --test-reporter=tap test/acceptance.test.mjs test/mermaid.test.mjs test/pdf.test.mjs test/png.test.mjs test/svg.test.mjs"},"_npmUser":{"name":"kkumaresan.com","email":"ux.kumaresan@gmail.com"},"repository":{"url":"git+https://github.com/aruzone/aze-forge.git","type":"git"},"_npmVersion":"11.19.0","description":"Deterministic AzeMark compiler: readable source in, self-contained HTML, SVG, PNG, and PDF artifacts out.","directories":{},"_nodeVersion":"26.7.0","allowScripts":{"puppeteer@25.10.0":true},"dependencies":{"yaml":"2.9.0","katex":"0.18.5","saxes":"6.0.0","mermaid":"11.17.2","puppeteer":"25.10.0","puppeteer-core":"25.10.0","@fontsource/inter":"5.3.0","@puppeteer/browsers":"3.2.2","@fontsource/jetbrains-mono":"5.2.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.9.2","@types/node":"24.3.0"},"_npmOperationalInternal":{"tmp":"tmp/aze-forge_0.1.0_1788675920204_0.1251463415099925","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@aruzone/aze-forge","version":"0.1.1","keywords":["azemark","markdown","publishing","pdf","svg"],"license":"MIT","_id":"@aruzone/aze-forge@0.1.1","maintainers":[{"name":"kkumaresan.com","email":"ux.kumaresan@gmail.com"}],"homepage":"https://github.com/aruzone/aze-forge#readme","bugs":{"url":"https://github.com/aruzone/aze-forge/issues"},"bin":{"azeforge":"dist/cli.js"},"dist":{"shasum":"19af393491ee369fa3a996066d87130edcdf4e6c","tarball":"https://registry.npmjs.org/@aruzone/aze-forge/-/aze-forge-0.1.1.tgz","fileCount":133,"integrity":"sha512-l/e4sAYIPSxAhH3KmU6Ao3Ak3L+PIaqD58FjRYBb+ebMbthT+gix/1RK5vIKzsEnEVl+MQbQCNh/Zul8eVy30Q==","signatures":[{"sig":"MEQCIBHAyNdTYfCuSWP5ppMJx3+VS2zqchph3lsKZ/TQeBKDAiAF087SoSL+g9rGUlQiCO1IHMIaWXzHqS/VPckQYKqwwA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":954670},"type":"module","engines":{"node":">=22 <23 || >=24 <25"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"c235ab1bfe709e8b68215d027b7633225651bc4d","scripts":{"test":"npm run build --silent && node --test test/*.test.mjs","build":"tsc -p tsconfig.json","test:cli":"npm run build --silent && node --test test/cli.test.mjs","typecheck":"tsc -p tsconfig.json --noEmit","acceptance":"node scripts/acceptance.mjs","test:matrix":"node --test --test-reporter=tap test/capabilities.test.mjs test/cli.test.mjs test/compatibility.test.mjs test/compiler.test.mjs test/equation.test.mjs test/fail-closed.test.mjs test/format.test.mjs test/installed-cli.test.mjs test/schemas.test.mjs test/theme-assets.test.mjs test/watch-serve.test.mjs","test:compiler":"npm run build --silent && node --test test/compiler.test.mjs","prepublishOnly":"npm run build --silent","test:canonical":"node scripts/acceptance.mjs --json","test:acceptance":"npm run build --silent && node --test test/acceptance.test.mjs","acceptance:refresh":"node scripts/acceptance.mjs --refresh","test:browser-smoke":"node --test --test-reporter=tap test/browser-smoke.test.mjs","test:canonical-suite":"node --test --test-reporter=tap test/acceptance.test.mjs test/mermaid.test.mjs test/pdf.test.mjs test/png.test.mjs test/svg.test.mjs"},"_npmUser":{"name":"kkumaresan.com","email":"ux.kumaresan@gmail.com"},"repository":{"url":"git+https://github.com/aruzone/aze-forge.git","type":"git"},"_npmVersion":"11.19.0","description":"Deterministic AzeMark compiler: readable source in, self-contained HTML, SVG, PNG, and PDF artifacts out.","directories":{},"_nodeVersion":"26.7.0","allowScripts":{"puppeteer@25.10.0":true},"dependencies":{"yaml":"2.9.0","katex":"0.18.5","saxes":"6.0.0","mermaid":"11.17.2","puppeteer":"25.10.0","puppeteer-core":"25.10.0","@fontsource/inter":"5.3.0","@puppeteer/browsers":"3.2.2","@fontsource/jetbrains-mono":"5.2.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.9.2","@types/node":"24.3.0"},"_npmOperationalInternal":{"tmp":"tmp/aze-forge_0.1.1_1788677412769_0.18883404004522353","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@aruzone/aze-forge","version":"0.2.0","keywords":["azemark","markdown","publishing","pdf","svg"],"license":"MIT","_id":"@aruzone/aze-forge@0.2.0","maintainers":[{"name":"kkumaresan.com","email":"ux.kumaresan@gmail.com"}],"homepage":"https://github.com/aruzone/aze-forge#readme","bugs":{"url":"https://github.com/aruzone/aze-forge/issues"},"bin":{"azeforge":"dist/cli.js"},"dist":{"shasum":"cb32d66e77d30e4c758bd550f7cd8365ad1232bd","tarball":"https://registry.npmjs.org/@aruzone/aze-forge/-/aze-forge-0.2.0.tgz","fileCount":161,"integrity":"sha512-aU8Kl55ALKqwTeoV7d6u5zHADO5AJILMyIRe9TRKf8qMlfMRUZqsNjmFoA6DjH1Ps+qa5KsHV5pzS4YPB3TQMw==","signatures":[{"sig":"MEYCIQClynTNQAnB6Bo8jQxllQIHy3RKjtIdM+Ncs3QHk/c48QIhAOPt3HteYpJKZRIrvGd7vqylJiebEsddvAbh1CET+iBV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1175722},"type":"module","engines":{"node":">=22 <23 || >=24 <25"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./adapters":{"types":"./dist/adapters.d.ts","import":"./dist/adapters.js"},"./contracts":{"types":"./dist/contracts.d.ts","import":"./dist/contracts.js"}},"gitHead":"28cf0a2c2c55e51f5fe1c6304e1b2d5728d7b10f","scripts":{"test":"npm run build --silent && node --test test/*.test.mjs","build":"tsc -p tsconfig.json","test:cli":"npm run build --silent && node --test test/cli.test.mjs","typecheck":"tsc -p tsconfig.json --noEmit","acceptance":"node scripts/acceptance.mjs","test:matrix":"node --test --test-reporter=tap test/capabilities.test.mjs test/cli.test.mjs test/compatibility.test.mjs test/compiler.test.mjs test/equation.test.mjs test/fail-closed.test.mjs test/format.test.mjs test/installed-cli.test.mjs test/schemas.test.mjs test/theme-assets.test.mjs test/watch-serve.test.mjs","test:compiler":"npm run build --silent && node --test test/compiler.test.mjs","prepublishOnly":"npm run build --silent","test:canonical":"node scripts/acceptance.mjs --json","test:acceptance":"npm run build --silent && node --test test/acceptance.test.mjs","acceptance:refresh":"node scripts/acceptance.mjs --refresh","test:browser-smoke":"node --test --test-reporter=tap test/browser-smoke.test.mjs","test:canonical-suite":"node --test --test-reporter=tap test/acceptance.test.mjs test/mermaid.test.mjs test/pdf.test.mjs test/png.test.mjs test/svg.test.mjs"},"_npmUser":{"name":"kkumaresan.com","email":"ux.kumaresan@gmail.com"},"repository":{"url":"git+https://github.com/aruzone/aze-forge.git","type":"git"},"_npmVersion":"11.19.0","description":"Deterministic AzeMark compiler: readable source in, self-contained HTML, SVG, PNG, and PDF artifacts out.","directories":{},"_nodeVersion":"26.7.0","allowScripts":{"puppeteer@25.10.0":true},"dependencies":{"yaml":"2.9.0","katex":"0.18.5","saxes":"6.0.0","mermaid":"11.17.2","puppeteer":"25.10.0","puppeteer-core":"25.10.0","@fontsource/inter":"5.3.0","@puppeteer/browsers":"3.2.2","@fontsource/jetbrains-mono":"5.2.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.9.2","@types/node":"24.3.0"},"_npmOperationalInternal":{"tmp":"tmp/aze-forge_0.2.0_1788966313315_0.04714382162611486","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@aruzone/aze-forge","version":"0.3.0","keywords":["azemark","markdown","publishing","pdf","svg"],"license":"MIT","_id":"@aruzone/aze-forge@0.3.0","maintainers":[{"name":"kkumaresan.com","email":"ux.kumaresan@gmail.com"}],"homepage":"https://github.com/aruzone/aze-forge#readme","bugs":{"url":"https://github.com/aruzone/aze-forge/issues"},"bin":{"azeforge":"dist/cli.js"},"dist":{"shasum":"1653657218eb8c7e83c562ed7bdde1c7de85603a","tarball":"https://registry.npmjs.org/@aruzone/aze-forge/-/aze-forge-0.3.0.tgz","fileCount":191,"integrity":"sha512-igcgIOTaBdcfXJWqGUWX9/1U7u2CsnyazDyjAkvdgd1E9UiaLpNYLO6xmvk4QfrGw2BnqQhoKyl6alowx0vm8g==","signatures":[{"sig":"MEUCIQCWGykseSR0wmuzyM+G4pI2Zl5YDx6twZUa0BkpQIQ4vQIgENq71bESjAzewUwfsNtlJvsD2NZuj5kZHeNpEeKfSjw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2125287},"type":"module","engines":{"node":">=22 <23 || >=24 <25"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./adapters":{"types":"./dist/adapters.d.ts","import":"./dist/adapters.js"},"./contracts":{"types":"./dist/contracts.d.ts","import":"./dist/contracts.js"}},"gitHead":"e1ddc33b226bae68ec65e9c69a3434bbcd7b137c","scripts":{"test":"npm run build --silent && node --test test/*.test.mjs","build":"tsc -p tsconfig.json","test:cli":"npm run build --silent && node --test test/cli.test.mjs","typecheck":"tsc -p tsconfig.json --noEmit","acceptance":"node scripts/acceptance.mjs","test:matrix":"node --test --test-reporter=tap test/capabilities.test.mjs test/cli.test.mjs test/compatibility.test.mjs test/compiler.test.mjs test/equation.test.mjs test/fail-closed.test.mjs test/format.test.mjs test/installed-cli.test.mjs test/schemas.test.mjs test/theme-assets.test.mjs test/watch-serve.test.mjs","test:compiler":"npm run build --silent && node --test test/compiler.test.mjs","prepublishOnly":"npm run build --silent","test:canonical":"node scripts/acceptance.mjs --json","test:acceptance":"npm run build --silent && node --test test/acceptance.test.mjs","acceptance:refresh":"node scripts/acceptance.mjs --refresh","test:browser-smoke":"node --test --test-reporter=tap test/browser-smoke.test.mjs","test:canonical-local":"docker build --platform linux/amd64 -f Dockerfile.canonical -t aze-forge-canonical . && docker run --rm --privileged --platform linux/amd64 aze-forge-canonical","test:canonical-suite":"node --test --test-reporter=tap test/acceptance.test.mjs test/mermaid.test.mjs test/pdf.test.mjs test/png.test.mjs test/svg.test.mjs"},"_npmUser":{"name":"kkumaresan.com","email":"ux.kumaresan@gmail.com"},"repository":{"url":"git+https://github.com/aruzone/aze-forge.git","type":"git"},"_npmVersion":"11.19.0","description":"Deterministic AzeMark compiler: readable source in, self-contained HTML, SVG, PNG, and PDF artifacts out.","directories":{},"_nodeVersion":"26.7.0","allowScripts":{"puppeteer@25.10.0":true},"dependencies":{"yaml":"2.9.0","katex":"0.18.5","saxes":"6.0.0","mermaid":"11.17.2","d3-array":"3.2.4","d3-scale":"4.0.2","d3-shape":"3.2.0","puppeteer":"25.10.0","puppeteer-core":"25.10.0","@fontsource/inter":"5.3.0","@puppeteer/browsers":"3.2.2","@fontsource/jetbrains-mono":"5.2.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.9.2","@types/node":"24.3.0"},"_npmOperationalInternal":{"tmp":"tmp/aze-forge_0.3.0_1789040795632_0.31386715311151026","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@aruzone/aze-forge","version":"0.3.1","keywords":["azemark","markdown","publishing","pdf","svg"],"license":"MIT","_id":"@aruzone/aze-forge@0.3.1","maintainers":[{"name":"kkumaresan.com","email":"ux.kumaresan@gmail.com"}],"homepage":"https://github.com/aruzone/aze-forge#readme","bugs":{"url":"https://github.com/aruzone/aze-forge/issues"},"bin":{"azeforge":"dist/cli.js"},"dist":{"shasum":"b1e0424e58b4aa73c3bd313046c7a9f10d81c098","tarball":"https://registry.npmjs.org/@aruzone/aze-forge/-/aze-forge-0.3.1.tgz","fileCount":191,"integrity":"sha512-O9yhBVVI1PbBmg+3SjyzamQsxvLHEB7fwAn6qq3i0U1hw21ih8TVBwAGRZSp3ACSBNSFvaO/TLHyMSVPtR+dMg==","signatures":[{"sig":"MEYCIQDhUGGHqS/a44TQn4gVfmdiYkeot6xWKVadKhvt002X0gIhAItPVZz29iQBKDdg89XdjnrZtkV9dVZdo54vo6bNk6gw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2125230},"type":"module","engines":{"node":">=22 <23 || >=24 <25"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./adapters":{"types":"./dist/adapters.d.ts","import":"./dist/adapters.js"},"./contracts":{"types":"./dist/contracts.d.ts","import":"./dist/contracts.js"}},"gitHead":"890b21169cdaf450c16391cf298f1be76d4f5fac","scripts":{"test":"npm run build --silent && node --test test/*.test.mjs","build":"tsc -p tsconfig.json","test:cli":"npm run build --silent && node --test test/cli.test.mjs","typecheck":"tsc -p tsconfig.json --noEmit","acceptance":"node scripts/acceptance.mjs","test:matrix":"node --test --test-reporter=tap test/capabilities.test.mjs test/cli.test.mjs test/compatibility.test.mjs test/compiler.test.mjs test/equation.test.mjs test/fail-closed.test.mjs test/format.test.mjs test/installed-cli.test.mjs test/schemas.test.mjs test/theme-assets.test.mjs test/watch-serve.test.mjs","test:compiler":"npm run build --silent && node --test test/compiler.test.mjs","prepublishOnly":"npm run build --silent","test:canonical":"node scripts/acceptance.mjs --json","test:acceptance":"npm run build --silent && node --test test/acceptance.test.mjs","acceptance:refresh":"node scripts/acceptance.mjs --refresh","test:browser-smoke":"node --test --test-reporter=tap test/browser-smoke.test.mjs","test:canonical-local":"docker build --platform linux/amd64 -f Dockerfile.canonical -t aze-forge-canonical . && docker run --rm --privileged --platform linux/amd64 aze-forge-canonical","test:canonical-suite":"node --test --test-reporter=tap test/acceptance.test.mjs test/mermaid.test.mjs test/pdf.test.mjs test/png.test.mjs test/svg.test.mjs"},"_npmUser":{"name":"kkumaresan.com","email":"ux.kumaresan@gmail.com"},"repository":{"url":"git+https://github.com/aruzone/aze-forge.git","type":"git"},"_npmVersion":"11.19.0","description":"Deterministic AzeMark compiler: readable source in, self-contained HTML, SVG, PNG, and PDF artifacts out.","directories":{},"_nodeVersion":"26.7.0","allowScripts":{"puppeteer@25.10.0":true},"dependencies":{"yaml":"2.9.0","katex":"0.18.5","saxes":"6.0.0","mermaid":"11.17.2","d3-array":"3.2.4","d3-scale":"4.0.2","d3-shape":"3.2.0","puppeteer":"25.10.0","puppeteer-core":"25.10.0","@fontsource/inter":"5.3.0","@puppeteer/browsers":"3.2.2","@fontsource/jetbrains-mono":"5.2.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.9.2","@types/node":"24.3.0"},"_npmOperationalInternal":{"tmp":"tmp/aze-forge_0.3.1_1789041069365_0.2794587253652765","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"_id":"@aruzone/aze-forge@0.3.3","bin":{"azeforge":"dist/cli.js"},"bugs":{"url":"https://github.com/aruzone/aze-forge/issues"},"dist":{"shasum":"821d806deb538c82928e38aab51ce4695be8f777","tarball":"https://registry.npmjs.org/@aruzone/aze-forge/-/aze-forge-0.3.3.tgz","fileCount":300,"integrity":"sha512-qOhgINU+Me6pTLtcxa/Qzl8xr7Ro2UaERZa8mf/akqZ6hjXPEVOiezvuGsKr6IX7SYHxa4Q6zscx7w3fGapNJQ==","signatures":[{"sig":"MEUCIQCtS3TYlrntUs959FRqSQkKtJg7mFsB9GSPGb9xdQkofwIgIRiWPrpfb0mY3UpeMXwjXOdrsdDuff0S4/l7GPfpOzk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIG+cCYOqrGpKLuStchp+Rbi92AjZRmpyT5b4bQTCgCvTAiEAmxtfIxMLNaARMApUJi0sGlKpianRkIfwM9hvtDvp6aQ="}],"unpackedSize":4318460},"name":"@aruzone/aze-forge","type":"module","engines":{"node":">=22 <23 || >=24 <25"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./adapters":{"types":"./dist/adapters.d.ts","import":"./dist/adapters.js"},"./contracts":{"types":"./dist/contracts.d.ts","import":"./dist/contracts.js"}},"gitHead":"a2f4717d99ef0df0841642015c1c2a7e47c057f8","license":"MIT","scripts":{"test":"npm run build --silent && node --test test/*.test.mjs","build":"tsc -p tsconfig.json","test:cli":"npm run build --silent && node --test test/cli.test.mjs","typecheck":"tsc -p tsconfig.json --noEmit","acceptance":"node scripts/acceptance.mjs","test:matrix":"node --test --test-reporter=tap test/capabilities.test.mjs test/cli.test.mjs test/compatibility.test.mjs test/compiler.test.mjs test/equation.test.mjs test/fail-closed.test.mjs test/format.test.mjs test/installed-cli.test.mjs test/schemas.test.mjs test/theme-assets.test.mjs test/watch-serve.test.mjs","test:compiler":"npm run build --silent && node --test test/compiler.test.mjs","advance-metric":"node scripts/generate-advance-metric.mjs","prepublishOnly":"npm run build --silent","test:canonical":"node scripts/acceptance.mjs --json","test:acceptance":"npm run build --silent && node --test test/acceptance.test.mjs","acceptance:refresh":"node scripts/acceptance.mjs --refresh","test:browser-smoke":"node --test --test-reporter=tap test/browser-smoke.test.mjs","test:canonical-local":"docker build --platform linux/amd64 -f Dockerfile.canonical -t aze-forge-canonical . && docker run --rm --privileged --platform linux/amd64 aze-forge-canonical","test:canonical-suite":"node --test --test-reporter=tap test/acceptance.test.mjs test/mermaid.test.mjs test/pdf.test.mjs test/png.test.mjs test/svg.test.mjs"},"version":"0.3.3","_npmUser":{"name":"kkumaresan.com","email":"ux.kumaresan@gmail.com"},"homepage":"https://github.com/aruzone/aze-forge#readme","keywords":["azemark","markdown","publishing","pdf","svg"],"repository":{"url":"git+https://github.com/aruzone/aze-forge.git","type":"git"},"_npmVersion":"11.19.0","description":"Deterministic AzeMark compiler: readable source in, self-contained HTML, SVG, PNG, and PDF artifacts out.","directories":{},"maintainers":[{"name":"kkumaresan.com","email":"ux.kumaresan@gmail.com"}],"_nodeVersion":"26.8.2","allowScripts":{"puppeteer@25.10.0":true},"dependencies":{"yaml":"2.9.0","elkjs":"0.12.0","katex":"0.18.5","saxes":"6.0.0","mermaid":"11.17.2","d3-array":"3.2.4","d3-scale":"4.0.2","d3-shape":"3.2.0","puppeteer":"25.10.0","puppeteer-core":"25.10.0","@fontsource/inter":"5.3.0","@puppeteer/browsers":"3.2.2","@fontsource/jetbrains-mono":"5.2.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.9.2","@types/node":"24.3.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/aze-forge_0.3.3_1789539818912_0.8516796439605332"}}},"time":{"created":"2026-09-06T06:25:20.006Z","modified":"2026-09-16T06:23:39.279Z","0.1.0":"2026-09-06T06:25:20.338Z","0.1.1":"2026-09-06T06:50:12.943Z","0.2.0":"2026-09-09T15:05:13.456Z","0.3.0":"2026-09-10T11:46:35.809Z","0.3.1":"2026-09-10T11:51:09.507Z","0.3.3":"2026-09-16T06:23:39.102Z"},"bugs":{"url":"https://github.com/aruzone/aze-forge/issues"},"license":"MIT","homepage":"https://github.com/aruzone/aze-forge#readme","keywords":["azemark","markdown","publishing","pdf","svg"],"repository":{"url":"git+https://github.com/aruzone/aze-forge.git","type":"git"},"description":"Deterministic AzeMark compiler: readable source in, self-contained HTML, SVG, PNG, and PDF artifacts out.","maintainers":[{"name":"kkumaresan.com","email":"ux.kumaresan@gmail.com"}],"readme":"<p align=\"center\">\n  <img src=\"docs/assets/azeforge-logo-03-2.jpg\" alt=\"AzeForge\" width=\"160\">\n</p>\n\n<h1 align=\"center\">AzeForge</h1>\n\nWrite once in readable **AzeMark**, publish everywhere: deterministic,\nself-contained **HTML**, **SVG**, **PNG**, and **PDF** from a single Source —\nno build chain, no runtime dependencies in your output.\n\n- **Deterministic.** The same Source always produces byte-identical\n  Artifacts. Every Artifact carries the content hash of the Document it\n  represents, so you can prove what you published.\n- **Self-contained.** Fonts are embedded, scripts are never emitted, and\n  Artifacts phone home to nothing. Send the file; it renders as-is.\n- **Fail-closed.** Invalid Sources produce precise, ranged diagnostics —\n  never a half-written Artifact, never a stack trace.\n- **Offline math.** Equations render through a pinned, sandboxed KaTeX\n  bundle. Readable aliases cover Greek, fractions, sums, integrals, limits,\n  matrices, and more; raw LaTeX stays denied unless you explicitly opt in.\n- **Diagrams included.** Mermaid flowcharts, GFM-style tables, and callouts\n  are first-class Blocks rendered through a pinned browser engine.\n\n## AzeForge currently covers these broad rendering categories:\n\n| Category | Representative native plugins |\n| --- | --- |\n| Mathematics | `equation`, `derivation` |\n| Visualization | `plot`, `chart` |\n| Geometry | `geometry` |\n| Chemistry | `formula`, `reaction`, `structure` |\n| Electrical engineering | `circuit` |\n| Digital timing | `timing` |\n| Diagrams | `diagram`, `mermaid` |\n| Engineering diagrams | `control`, `free-body` |\n| Software and data models | `sequence`, `state`, `entity`, `class` |\n| Structured technical content | `table`, `algorithm`, `statement`, `example` |\n| Document composition | `figure`, `bibliography`, `callout` |\n\nSee the [native plugin family tree](docs/native-plugin-family-tree.md) for the\nfull catalog and family relationships.\n\n## Install\n\n```bash\nnpm install -g @aruzone/aze-forge\nazeforge --help\n```\n\nRequires Node.js 22 or 24 on Ubuntu or macOS (Windows support is parked).\nThe install fetches a pinned browser engine for diagrams and visual formats;\non npm 11+ allow its install script once:\n\n```bash\nnpm install -g @aruzone/aze-forge --allow-scripts=puppeteer\n```\n\nDetails, offline installs, and uninstall live in\n[docs/development.md](docs/development.md#browser-engine-and-offline-installs).\n\n## Try it: your first document\n\nCreate a Source file — plain Markdown with a small front matter header:\n\n```bash\ncat > hello.aze.md <<'EOF'\n---\nazemark: 2\ntitle: Hello AzeForge\nauthor:\n  - Test Author\ntheme: default\n---\n\n# Introduction\n\nThis document tests the current compiler.\nEOF\n```\n\nValidate it (silence means valid) and render it:\n\n```bash\nazeforge validate hello.aze.md && echo VALID\nazeforge render hello.aze.md --output hello.html && open hello.html\n```\n\n## Try it: equations\n\nReadable math — no LaTeX required:\n\n```bash\ncat > equation.aze.md <<'EOF'\n---\nazemark: 2\ntitle: Equation check\n---\n\n:::: equation\nid: euler\n----\nF(omega) = integral x=0..infinity of x^2 dx\n::::\nEOF\n\nazeforge render equation.aze.md --output equation.html\n```\n\nNeed raw LaTeX? It is denied by default and opt-in per command:\n\n```bash\nazeforge validate equation.aze.md --allow-raw-latex && echo ALLOWED\n```\n\n## Try it: tables and callouts\n\n```bash\ncat > blocks.aze.md <<'EOF'\n---\nazemark: 2\ntitle: Blocks\n---\n\n:::: callout\nvariant: note\ntitle: Determinism note\n----\nCallout bodies parse ordinary Markdown, including nested equations.\n::::\n\n:::: table\ncaption: Thermal properties\nid: materials\n----\ncolumns:\n  - key: material\n    name: Material\n  - key: density\n    name: Density [kg/m^3]\n    type: quantity\n    unit: kg/m^3\n  - key: conductivity\n    name: Conductivity [W/(m K)]\n    type: quantity\n    unit: W/(m K)\nrows:\n  - material: Aluminum\n    density: 2700\n    conductivity: 205\n  - material: Steel\n    density: 7850\n    conductivity: 50\n::::\nEOF\n\nazeforge render blocks.aze.md --output blocks.html\n```\n\n## Try it: diagrams\n\nMermaid flowcharts render through the pinned browser engine:\n\n```bash\ncat > diagram.aze.md <<'EOF'\n---\nazemark: 2\ntitle: Diagram\n---\n\n:::: mermaid\nid: flow\ntitle: Measurement flow\n----\nflowchart LR\n  start[Start] --> inspect[Inspect setup]\n  inspect --> done[Done]\n::::\nEOF\n\nazeforge render diagram.aze.md --output diagram.html\n```\n\n## Try it: every format and theme\n\nOne Source, four Artifacts, three themes (`default`, `academic`,\n`dark-presentation`):\n\n```bash\nfor format in html svg png pdf; do\n  azeforge render hello.aze.md --output \"hello.${format}\"\ndone\nazeforge render hello.aze.md --output hello-academic.html --theme academic\n```\n\nArtifacts embed their fonts and contain no scripts:\n\n```bash\ngrep -o 'data:font/woff2;base64' hello.html | sort -u\ngrep -i '<script' hello.html || echo \"no scripts\"\n```\n\n## Try it: machine diagnostics\n\nOne JSON report on stdout, human text on stderr:\n\n```bash\nazeforge validate hello.aze.md --diagnostics json\n```\n\nBreak something and watch it fail closed — exit `1`, previous Artifact\nuntouched:\n\n```bash\nprintf -- '---\\nazemark: 2\\n---\\n\\n:::: mystery\\nbody\\n::::\\n' > invalid.aze.md\nprintf 'previous Artifact' > preserved.html\nazeforge render invalid.aze.md --output preserved.html; echo \"exit: $?\"\ncat preserved.html\n```\n\n## Try it: ask what the language accepts\n\n`azeforge grammar` publishes every registered directive as data — header keys,\nbody records, field vocabularies, ceilings — derived from the same tables the\nvalidators use, so it cannot drift from what compiles:\n\n```bash\nazeforge grammar --json | jq '.directives | length'\n# 25\nazeforge grammar --json --directive plot | jq -c '.directives[0].header.fields | map(.key)'\n# [\"id\",\"number\",\"width\",\"height\",\"legend\",\"grid\",\"parameters\",\"x-axis\",\"y-axis\"]\nazeforge grammar --json --directive plot | jq -c '[.directives[0].body.records[].kind]'\n# [\"function\",\"line\",\"scatter\"]\nazeforge version --json | jq -c '.schemas[] | select(.id==\"azeforge.grammar/v1\")'\n# {\"id\":\"azeforge.grammar/v1\",\"version\":1}\n```\n\n`--directive <type>` narrows the report to one directive and an unknown type\nexits `2`; without `--json` the human report goes to stderr and stdout stays\nempty. The JSON document validates against the packaged\n`schemas/grammar.json`.\n\n## Try it: live rebuild and preview\n\nRecompile on every save, or preview in a loopback browser tab:\n\n```bash\nazeforge watch hello.aze.md --output hello.html\nazeforge serve hello.aze.md --port 0\n# serve: listening on http://127.0.0.1:62545/ for hello.aze.md\n```\n\n`watch` preserves the last successful Artifact through failed cycles; `serve`\nbinds loopback only and never shows stale content. Stop either with\n`SIGINT` or `SIGTERM`.\n\n## Try it: prove determinism\n\nRender twice; the bytes — and their hashes — must match exactly:\n\n```bash\nazeforge render hello.aze.md --output hello-first.html\nazeforge render hello.aze.md --output hello.html\ncmp hello-first.html hello.html && echo IDENTICAL\nshasum -a 256 hello-first.html hello.html\n```\n\n## Commands\n\n| Command        | Purpose                                              |\n| -------------- | ---------------------------------------------------- |\n| `render`       | Compile a Source to `html`, `svg`, `png`, or `pdf`   |\n| `validate`     | Check a Source; silent success, ranged diagnostics   |\n| `format`       | Canonical LF/UTF-8 formatting (`--write`, `--check`) |\n| `watch`        | Recompile on save, preserving last good Artifact     |\n| `serve`        | Loopback live preview with reload                    |\n| `capabilities` | Supported commands, formats, engines (`--probe`)     |\n| `grammar`      | Machine-readable AzeMark 2 directive grammar         |\n| `version`      | Tool, runtime, and schema versions (`--json`)        |\n\nExit statuses: `0` success (including warning-only validation), `1` the\noperation was accepted but the Source failed, `2` the invocation itself was\nmalformed. Run `azeforge <command> --help` for full options.\n\n## Library\n\nThe published package exposes exactly three supported entry points; only\ndocumented exports are supported, and implementation helpers are not\nreachable through the package (deep imports resolve to nothing):\n\n| Entry point | Responsibility |\n| --- | --- |\n| `@aruzone/aze-forge` | `createCompiler`, high-level compiler operations, and `buildGrammarDocument` |\n| `@aruzone/aze-forge/contracts` | Public types, JSON schemas and schema identifiers, without Node-only imports or engine initialization |\n| `@aruzone/aze-forge/adapters` | Trusted registry/adapter contracts and the root-confined filesystem asset adapter |\n\n```js\nimport { createCompiler, buildGrammarDocument } from \"@aruzone/aze-forge\";\nimport { createVersionReport, GRAMMAR_SCHEMA_ID } from \"@aruzone/aze-forge/contracts\";\nimport { getBuiltInRegistry } from \"@aruzone/aze-forge/adapters\";\n```\n\nThe runtime compiler is Node-oriented; a browser-safe `contracts` entry\ndoes not promise browser compilation. Breaking library changes during\n`0.x` require a minor-version increment; AzeForge Web pins the exact\npublished version.\n\n## Uninstall\n\n```bash\nnpm uninstall -g @aruzone/aze-forge\nrm -rf ~/.cache/puppeteer  # optional: remove the downloaded browser engine\n```\n\n## Contribute\n\nDevelopment setup, the test seams, the acceptance runner, and the release\nprocess are in [docs/development.md](docs/development.md). AzeForge is\n[MIT](LICENSE)-licensed.\n","readmeFilename":"README.md"}