{"_id":"xtatic","_rev":"41-0ccf40c1c1669c29ac73bbd21ebbc37a","name":"xtatic","dist-tags":{"latest":"0.24.0"},"versions":{"0.1.0":{"name":"xtatic","version":"0.1.0","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.1.0","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"97a544c73b4dfef98432370eac08ca9918ff4a6f","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.1.0.tgz","fileCount":24,"integrity":"sha512-aPgBu+cn15dks93lyRZcw9Vvahd2yH8hnTIvUf7g3E8Jqp+SZhKq8S7C3eqkV9rpwUZh8v25ulzCTQyZgpmsnQ==","signatures":[{"sig":"MEYCIQD29uoKjxt0fD2gC0esGIEOCCW87/0viPx00GeuzDY9pwIhAJXegsLTnVSvqeFCDzFQ+nAg8i9KbBT0LoCggtSSekUr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":94569},"type":"module","engines":{"node":">=20"},"gitHead":"629ad7f21d2785e9f08fda79b6fa41b7aff2ffe3","scripts":{"test":"node --test","prepublishOnly":"node --test"},"_npmUser":{"name":"jcmf","email":"zaphod-npm@toastball.net"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"11.12.1","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5"},"peerDependencies":{"sharp":"^0.34.0"},"peerDependenciesMeta":{"sharp":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.1.0_1777953808879_0.24455105150558332","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"xtatic","version":"0.1.1","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.1.1","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"87f326babff0a51483b91c6aeffbe0feb7dde491","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.1.1.tgz","fileCount":24,"integrity":"sha512-gz8UEKkoR3WB2yyx+psg3hv0AE1plpA38/BXo5pWelcTSi2tqQ5aBiGwsEtQ+YWFWlD6+vwQDEmq+otn/6mz2w==","signatures":[{"sig":"MEUCIQDjjp2u7EUebeQXqlQXAWH7DHk5pmtxy5NiClehOfrw3QIgBCDVC1WyfCKJmeLyf9g1uUz+gV1gGUCEmPC7veLdyeM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":94576},"type":"module","engines":{"node":">=20"},"gitHead":"177e03a8e267af6f996e852abe04395aea7252c3","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"11.13.0","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5"},"peerDependencies":{"sharp":"^0.34.0"},"peerDependenciesMeta":{"sharp":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.1.1_1778033029033_0.6989018782593328","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"xtatic","version":"0.2.0","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.2.0","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"68bbee532dcc595fa4e13faa3e9580be4b9a7878","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.2.0.tgz","fileCount":26,"integrity":"sha512-BOjXvTUY8qvfw0RTxwGjZ0mcsCRZWfXW8Mv1PP5xjjTIcTnmficLOYyp3qZ093q0/Pe+g8uN+O/v3wcP37rhUQ==","signatures":[{"sig":"MEQCIGxPiWk1i+2apcqUbQ9VjHvOwzf+n0Hwl+gHpIaWOOfrAiAZdrUTD8lSrPIx1WFfUlJDfeXFFySU7Y0HTrHNh76ELA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":103024},"type":"module","engines":{"node":">=20"},"gitHead":"6db14d630b3575ff54d176421e74968069b648e0","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"11.13.0","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5"},"peerDependencies":{"sharp":"^0.34.0"},"peerDependenciesMeta":{"sharp":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.2.0_1778043171068_0.9544476773899813","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"xtatic","version":"0.3.0","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.3.0","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"1d57351c82a42d377880c9f2496e133f939fd4cc","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.3.0.tgz","fileCount":27,"integrity":"sha512-ajbnnvsg3VmCxxcIKglCKD9IOxYENjzKjYaU3WzrrV60Yp+BPAF6f2rdhS0wyXZyRXT0CX/huBfesbim6GGQ3w==","signatures":[{"sig":"MEQCICX4bEDBjaFq+O1EL8um/hmcBDTGcNOPcXE/NyfHOmWvAiB/SCJDrkb1oRuR4dHYEC/1UvcUuDcPMaHtxqJfZv/8AQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":104388},"type":"module","engines":{"node":">=20"},"gitHead":"cceb3034e51c3464c518d2ed66177a2e2dd558f2","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"11.14.1","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5","wawoff2":"^2.0.1"},"peerDependencies":{"sharp":"^0.34.0","wawoff2":"^2.0.1"},"peerDependenciesMeta":{"sharp":{"optional":true},"wawoff2":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.3.0_1778295040248_0.9292076526781161","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"xtatic","version":"0.4.0","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.4.0","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"5e8dab087afe9de6b840042bfae7e59b9aebd09a","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.4.0.tgz","fileCount":28,"integrity":"sha512-QZmxBhJBZtJ1APh68P6fF9dUhcUfxPyYeUCVqyxPIm9pTOaHVN5cM8baK3VG+ceS7hc+i7Wh4OytrEK3s9vklA==","signatures":[{"sig":"MEUCIQCGwqhS+DniCRpX4l27IUqxBUtQ54muFEPC+BnAzECHiQIgabV9EimuVrBpOrGjhNsg2/6yr/F0Ef7u5Xl9lKrSGeM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":108172},"type":"module","engines":{"node":">=20"},"gitHead":"ba66d218562c541510a5c1da1e3c7e6a166c8a06","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"11.14.1","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","fflate":"^0.8.2","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","remark-smartypants":"^3.0.2","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5","wawoff2":"^2.0.1"},"peerDependencies":{"sharp":"^0.34.0","wawoff2":"^2.0.1"},"peerDependenciesMeta":{"sharp":{"optional":true},"wawoff2":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.4.0_1778299112996_0.5144516308851608","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"xtatic","version":"0.4.1","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.4.1","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"7fee02e9d1e8f198a89db237d0b72dcb15520bc2","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.4.1.tgz","fileCount":28,"integrity":"sha512-VaPNRlXklN6kzyOPHmAWna3BzESiMFPqDXwW++QdGFGLtYF5efXGklEjxQ0HS/k45fmWCf17tWqIunJa0XZ6BQ==","signatures":[{"sig":"MEYCIQC7BIBpKJsuSwAAj9OIg7CvuElw1V4kpDqAqJgY1FURPQIhAMlrGVea1ERqB5YGBfxVBMIUFAtKC8ETtCE/hwve3erS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":109642},"type":"module","engines":{"node":">=20"},"gitHead":"f6966d771225e7cb7b93835a697bf2b188945357","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"11.14.1","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","fflate":"^0.8.2","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","remark-smartypants":"^3.0.2","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5","wawoff2":"^2.0.1"},"peerDependencies":{"sharp":"^0.34.0","wawoff2":"^2.0.1"},"peerDependenciesMeta":{"sharp":{"optional":true},"wawoff2":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.4.1_1778301441538_0.19157883535116005","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"xtatic","version":"0.5.0","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.5.0","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"700ed5d813dba72d4e6ad40c050aba57c14e3d41","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.5.0.tgz","fileCount":29,"integrity":"sha512-fgYSr2hNU7fYGWh3gqFJ1QRLnwGfrvO1RjCgpRJ1vJN9exdTAc/yrQP9dDZjRc7AKnzg21Fx53WP/nXCxMysNA==","signatures":[{"sig":"MEQCIAWfh8wobuRr4oBJx4yFkJ6fm8Jj8mLiiJ9TgnRdAWA+AiAhGanJsLCgb17KH0goAxShgWBYw9JCgTxj1Q/l6I1INA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":117745},"type":"module","engines":{"node":">=20"},"gitHead":"7519ca68dee277097f5698ca555877a83aa15997","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"11.14.1","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","fflate":"^0.8.2","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","remark-smartypants":"^3.0.2","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5","wawoff2":"^2.0.1"},"peerDependencies":{"sharp":"^0.34.0","wawoff2":"^2.0.1"},"peerDependenciesMeta":{"sharp":{"optional":true},"wawoff2":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.5.0_1778355146834_0.8896069568966223","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"xtatic","version":"0.5.1","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.5.1","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"59ac0f7520cea22832df78f059e836f21a976a09","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.5.1.tgz","fileCount":29,"integrity":"sha512-gJqrT7P5jRj0pv3QBgt08rSDsK/u6uHzSdIo1l+4BKlx/QQ+Spdohb4JjcaBg36BIOoeiEGP2Uiyl+IPWA+ovA==","signatures":[{"sig":"MEQCIFRMyZOccemGjUHwj+/erGg2fPPZQb2727M6F1Kod0OLAiAcUB9iSS7qeiIXNEwIQDqjJaWG0wu2Dfx+9OSUbfDhpQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":118097},"type":"module","engines":{"node":">=20"},"gitHead":"8ad27771986c657c3fea1660bcbad8aeaacf0014","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"11.14.1","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","fflate":"^0.8.2","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","remark-smartypants":"^3.0.2","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5","wawoff2":"^2.0.1"},"peerDependencies":{"sharp":"^0.34.0","wawoff2":"^2.0.1"},"peerDependenciesMeta":{"sharp":{"optional":true},"wawoff2":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.5.1_1778365654519_0.16376482612692245","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"xtatic","version":"0.6.0","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.6.0","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"93f14d63b523781d4f84aa28a25be6943d8f8086","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.6.0.tgz","fileCount":30,"integrity":"sha512-xJjLpPQd+fIW7dWWZP7Y94cefEELaL4Ds4NNO2dPxDmGBbbsfOO969W1gc5jLUkEeCKDaDhe5GGx5PChGloonQ==","signatures":[{"sig":"MEQCIHgU3SWNdc3fmSnjNm9CTPzDIq6faaiMLvYWRD/68UxaAiBcRNwA0TGlsOky2kuAt/YOme5ThVBuydX6GXZrvMZG+Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":124277},"type":"module","engines":{"node":">=20"},"gitHead":"7a1e4c41b25a89d0e6a967bf70b792342b8b45bb","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"11.14.1","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","fflate":"^0.8.2","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","remark-smartypants":"^3.0.2","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5","wawoff2":"^2.0.1"},"peerDependencies":{"sharp":"^0.34.0","wawoff2":"^2.0.1"},"peerDependenciesMeta":{"sharp":{"optional":true},"wawoff2":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.6.0_1778371674262_0.9531843176043877","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"xtatic","version":"0.6.1","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.6.1","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"ca0844797137ad380b52dc5033dc07a3e685bbdb","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.6.1.tgz","fileCount":30,"integrity":"sha512-u9fvM6kh1S9iRd2kSzD4sMWi0oDjEjLqYXryOhjjaVOethlHG4VamYKmcuap5Bn3WOocBSAd/rMAiFPpo1wexg==","signatures":[{"sig":"MEUCIQD48bVh7flfyGK5p9kLGdQvdlJJeWQR1faJTzwFNmTdjwIgD0LeNvo/WskZjwZ8p87Y72ZNwu+5A2YftbnRvm9Q8Ec=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":124963},"type":"module","engines":{"node":">=20"},"gitHead":"dc8b4fc3bf4f85106c2e73a876c86c2df4c069be","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"11.14.1","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","fflate":"^0.8.2","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","remark-smartypants":"^3.0.2","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5","wawoff2":"^2.0.1"},"peerDependencies":{"sharp":"^0.34.0","wawoff2":"^2.0.1"},"peerDependenciesMeta":{"sharp":{"optional":true},"wawoff2":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.6.1_1778448329973_0.5622106529595992","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"xtatic","version":"0.7.0","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.7.0","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"6934e0875563b5afbec8adeb49e5c4cf931be9ab","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.7.0.tgz","fileCount":31,"integrity":"sha512-J6wiIXijsh93S+iuT5LHLWaHxZXUT49gBioN6DqLm9pitmxmaS9qTuOWzZTNiblK+n+4cv3xDpxW+ooMdq38cQ==","signatures":[{"sig":"MEQCIH8XitSrnLAlLvBVp5Gpcc4+yc5uM/cOy7SsxisBYBDGAiADF3tcr5wnA8OHyoxwo+PTRdPt7/135IEjDs+HQ3J29A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":128011},"type":"module","engines":{"node":">=20"},"gitHead":"c727ff46b662a56ed20e0620acccdae80fc7cfee","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"11.14.1","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","fflate":"^0.8.2","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","remark-smartypants":"^3.0.2","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5","wawoff2":"^2.0.1","subset-font":"^2.5.0"},"peerDependencies":{"sharp":"^0.34.0","wawoff2":"^2.0.1","subset-font":"^2.0.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"wawoff2":{"optional":true},"subset-font":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.7.0_1778453483839_0.798648189638602","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"xtatic","version":"0.8.0","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.8.0","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"c67aaf2a66e5e7e55f054fa54d4fe36c5d2c2941","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.8.0.tgz","fileCount":32,"integrity":"sha512-q1+qcpBWxS4SywAFgFri87A3eh5q7Hq2klNryqKCSn+bfJNeQU+K5WrpCb2trDbYdYJbbDN54cH3iruycaifDw==","signatures":[{"sig":"MEQCIAQmcoSnI6nKIYq0zcP/tzaKOGO0O4YcXbdgrZcCJdvjAiAi5qL13kr4Jjh/tz0jJWs6dOwnJPVM2fSqA6hGsBtJqw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":131504},"type":"module","engines":{"node":">=20"},"gitHead":"49e41ee1bd71494183e491942c36ef0a66365bb9","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"11.14.1","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","fflate":"^0.8.2","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","remark-smartypants":"^3.0.2","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5","wawoff2":"^2.0.1","subset-font":"^2.5.0"},"peerDependencies":{"sharp":"^0.34.0","wawoff2":"^2.0.1","subset-font":"^2.0.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"wawoff2":{"optional":true},"subset-font":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.8.0_1778459914448_0.45940461196257654","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"xtatic","version":"0.9.0","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.9.0","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"d4a2f6ea11d7ba69ce44139866ce64c7e2aa5559","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.9.0.tgz","fileCount":33,"integrity":"sha512-F2BLtixxwONxMnbf5YZyCqY6llwWAwrBeXKgp4tp+gtimUdX1SJoK+yNizPobhHIofZEzMLIcZO26Vdknkc+vw==","signatures":[{"sig":"MEUCIQCUVXxC5H0sWeowneb708tooY8QPJztFBKcviopsMcmoQIgJEREXEgrzwEtbhK4BURgNbGLJxp7aRAOEK6o+aFzBaI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":142125},"type":"module","engines":{"node":">=20"},"gitHead":"0a361677ccf7ad27ac737cd2b7af09e363c97260","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"11.14.1","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","fflate":"^0.8.2","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","remark-smartypants":"^3.0.2","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5","wawoff2":"^2.0.1","subset-font":"^2.5.0"},"peerDependencies":{"sharp":"^0.34.0","wawoff2":"^2.0.1","subset-font":"^2.0.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"wawoff2":{"optional":true},"subset-font":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.9.0_1778466845483_0.00042649923224913344","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"xtatic","version":"0.10.0","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.10.0","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"197d6453209dea03905d0d4b0d4b7fdf13d9e0f2","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.10.0.tgz","fileCount":35,"integrity":"sha512-4+scs1DpctDFP0SwLcrMCmkoVaD884nXj7UavU50j3//pJ1pTU5HFb+oQJ/yC7URn1LkP4NGF0cCxGmRQvJXIQ==","signatures":[{"sig":"MEUCIQCQYNWmJVVUHBTvyLqI7uIXOd8HACnXd1Ri9t4nGV4twgIgKl+mJST+QRq1btYgaljyI3B3cfviBKRSKYc3jwbK6iY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":148832},"type":"module","engines":{"node":">=20"},"gitHead":"996755efe99a8aaab3eb9cbef628f5ffff105a16","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"11.14.1","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","fflate":"^0.8.2","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","remark-smartypants":"^3.0.2","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5","wawoff2":"^2.0.1","subset-font":"^2.5.0"},"peerDependencies":{"sharp":"^0.34.0","wawoff2":"^2.0.1","subset-font":"^2.0.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"wawoff2":{"optional":true},"subset-font":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.10.0_1778470120898_0.38026528157246875","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"xtatic","version":"0.11.0","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.11.0","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"a523f222448162e392336d9d877b63e3f42b9abe","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.11.0.tgz","fileCount":36,"integrity":"sha512-WRoFI/j4PbVRny8ApHtUdwonFMXB3kUTp0s0XUK3KPnWp4AQfE1FeJj9Y04N8iQMShIxiGLX9go87ADNBzuyJg==","signatures":[{"sig":"MEUCIQDCKWwgEr/6hVWN/MYHYqxMNsc0eoxjEwEJiD+bK+LQxgIgAQ92g8WJVOQUu1VkkqeXaql8cbz0m1v6g5x9uiwzmB0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":194695},"type":"module","engines":{"node":">=20"},"gitHead":"838fabbd66a83180143593eaf6aa8d02ffb92a7c","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"11.14.1","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","fflate":"^0.8.2","parse5":"^8.0.1","fontkit":"^2.0.4","css-tree":"^3.2.1","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","remark-smartypants":"^3.0.2","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5","wawoff2":"^2.0.1","subset-font":"^2.5.0"},"peerDependencies":{"sharp":"^0.34.0","wawoff2":"^2.0.1","subset-font":"^2.0.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"wawoff2":{"optional":true},"subset-font":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.11.0_1778818319261_0.581707473570966","host":"s3://npm-registry-packages-npm-production"}},"0.11.1":{"name":"xtatic","version":"0.11.1","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.11.1","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"947e25d4b239aa6bbfb22cba7d6ad1b676efac93","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.11.1.tgz","fileCount":36,"integrity":"sha512-BQCcnOULRcTNImv45pmlAcnPEWlfWs7z8t8cEX/cy34vYLPP+pPpy9UazgY8PZ0nl/056FiFgApLemSmDggSSw==","signatures":[{"sig":"MEUCIQDXjB3t9bMCmNjptGXD/UcYuExUkfKxNhOW5Z35xoUJDgIgMHtRHsmRezEglARvIsYmnlAMgAhuo+ROdiwo2aswiXo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.11.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":199627},"type":"module","engines":{"node":">=20"},"gitHead":"9a5aa90ffb61ba58f9d25ed19f1d881846b550c0","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"11.14.1","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","fflate":"^0.8.2","parse5":"^8.0.1","fontkit":"^2.0.4","css-tree":"^3.2.1","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","remark-smartypants":"^3.0.2","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5","wawoff2":"^2.0.1","subset-font":"^2.5.0"},"peerDependencies":{"sharp":"^0.34.0","wawoff2":"^2.0.1","subset-font":"^2.0.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"wawoff2":{"optional":true},"subset-font":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.11.1_1778820458968_0.2292725397349067","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"xtatic","version":"0.12.0","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.12.0","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"3f1a331767184798b160612a73f3cb319d116a2d","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.12.0.tgz","fileCount":36,"integrity":"sha512-pR7aBkrNZOZsciGJtX+osybAyKDTNVDiWB0wVFVxsGKc+NjhAFI2ZDWFaQhN9Zir/FB+kqqG/ioGqs9jViSNow==","signatures":[{"sig":"MEUCIQC/95HKZiHiuOEa0ucvIybmKpCeA+XPIzRksSJcjbBaRwIgEl+zReKYi0bMK/oPWU5dLSe4R+E710ZFQEAJOg2VtXU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":200640},"type":"module","engines":{"node":">=20"},"gitHead":"c925d44d4f4e49fcb3eec254668d252862f76377","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"11.14.1","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","fflate":"^0.8.2","parse5":"^8.0.1","fontkit":"^2.0.4","css-tree":"^3.2.1","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","remark-smartypants":"^3.0.2","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5","wawoff2":"^2.0.1","subset-font":"^2.5.0"},"peerDependencies":{"sharp":"^0.34.0","wawoff2":"^2.0.1","subset-font":"^2.0.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"wawoff2":{"optional":true},"subset-font":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.12.0_1778823028808_0.4466685319488841","host":"s3://npm-registry-packages-npm-production"}},"0.12.1":{"name":"xtatic","version":"0.12.1","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.12.1","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"cbc2adb4362f279bab4ed05bd9579bdcbe3af59b","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.12.1.tgz","fileCount":36,"integrity":"sha512-p4xGTk2D8aYgbRvmtdACxcMM87a11uaXPAj+LfHJi7FtqIBWqtGGL7fRw1Z0ex4c1iN1RzbkQgi6UwFzM3iwhQ==","signatures":[{"sig":"MEYCIQDTs/U2t8tacS8S278El7GaTL7y+XhVUguhgC8A4qjXOgIhAIIzhrj0bHHMmvK60HMKtfd4alzsjQounb6H3onCGs9I","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.12.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":202882},"type":"module","engines":{"node":">=20"},"gitHead":"a95c024037d95f83d1b482d1ceae2e34bee4bcc0","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"11.14.1","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","fflate":"^0.8.2","parse5":"^8.0.1","fontkit":"^2.0.4","css-tree":"^3.2.1","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","remark-smartypants":"^3.0.2","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5","wawoff2":"^2.0.1","subset-font":"^2.5.0"},"peerDependencies":{"sharp":"^0.34.0","wawoff2":"^2.0.1","subset-font":"^2.0.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"wawoff2":{"optional":true},"subset-font":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.12.1_1778896086095_0.8730175062209422","host":"s3://npm-registry-packages-npm-production"}},"0.12.2":{"name":"xtatic","version":"0.12.2","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.12.2","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"589317b26ef8e8a3cca5b4257e677c4204f44578","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.12.2.tgz","fileCount":36,"integrity":"sha512-ntjYua4pcQyHriOgVSnveQLYqzRXXP8qjrBzVPzEu+IwJQsPc0kma7QiLO2+fybv46G4jAzuYoq+Mam2NxCHmQ==","signatures":[{"sig":"MEUCIDqt6v4+l4oKFuKaARZPp+FWnq9srccY0T53DUNkwHV8AiEAwWI3jXh8y3Gk/F7Grft6xB5BYjPF8dO+DK4E0I79gk0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.12.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":203599},"type":"module","engines":{"node":">=20"},"gitHead":"880477ea6bb3bcc17bf1ba2ebe04e7122451f758","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"11.15.0","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","fflate":"^0.8.2","parse5":"^8.0.1","fontkit":"^2.0.4","css-tree":"^3.2.1","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","remark-smartypants":"^3.0.2","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5","wawoff2":"^2.0.1","subset-font":"^2.5.0"},"peerDependencies":{"sharp":"^0.34.0","wawoff2":"^2.0.1","subset-font":"^2.0.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"wawoff2":{"optional":true},"subset-font":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.12.2_1779496695616_0.19067043383628213","host":"s3://npm-registry-packages-npm-production"}},"0.12.3":{"name":"xtatic","version":"0.12.3","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.12.3","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"7161efb8e929baf3a5443c065655c858f4a1b21a","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.12.3.tgz","fileCount":36,"integrity":"sha512-tOu/iQQhb+6V33nVspdfl+s4vJrp7Kr5tGxpgOGhbuVzyc24BvRWGDTpqDfXhSN5QTtCY8g/kEASMzZdpdGUYA==","signatures":[{"sig":"MEUCIGNdnBKPpVZH4iW1mNXqB9Lje430j3Gd3Xjean6qvZlEAiEA6p6ejjvcghJYRqRwD3mhJn+qs5emZvpmlQbAfTXoIIg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.12.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":208709},"type":"module","engines":{"node":">=20"},"gitHead":"5604c2120ac8a60fb0bf254531776df836dd8e8a","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"11.15.0","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","fflate":"^0.8.2","parse5":"^8.0.1","fontkit":"^2.0.4","css-tree":"^3.2.1","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","remark-smartypants":"^3.0.2","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5","wawoff2":"^2.0.1","subset-font":"^2.5.0"},"peerDependencies":{"sharp":"^0.34.0","wawoff2":"^2.0.1","subset-font":"^2.0.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"wawoff2":{"optional":true},"subset-font":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.12.3_1779499607497_0.7735598572989157","host":"s3://npm-registry-packages-npm-production"}},"0.12.4":{"name":"xtatic","version":"0.12.4","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.12.4","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"d11f83bc11d645e8c05d6f3868b8779481218410","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.12.4.tgz","fileCount":37,"integrity":"sha512-nQmZf/MSBdAAuzVQNS6ZC1Y+zP8j6jhz52Jzu56Gol+Ieu2Xy64UYaz35CzxD/r49O5gnnD8XiDp1Zeeh3MMBw==","signatures":[{"sig":"MEYCIQDj6/V25TrboRcTMyNRZNnDGd5VzQ4l8ce/fZTyx/N9nAIhAILoYiQ4MNdwNyH6EiZ49Bd56TFuzak5Cr6ECj0lXcrX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.12.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":211082},"type":"module","engines":{"node":">=20"},"gitHead":"b714aea6fc009fb9a85acb9b0b7f9996c23f59f3","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"11.15.0","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","fflate":"^0.8.2","parse5":"^8.0.1","fontkit":"^2.0.4","css-tree":"^3.2.1","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","remark-smartypants":"^3.0.2","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0","eslint-import-resolver-node":"^0.3.10"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5","wawoff2":"^2.0.1","subset-font":"^2.5.0"},"peerDependencies":{"sharp":"^0.34.0","wawoff2":"^2.0.1","subset-font":"^2.0.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"wawoff2":{"optional":true},"subset-font":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.12.4_1779501849109_0.34076116568305226","host":"s3://npm-registry-packages-npm-production"}},"0.12.5":{"name":"xtatic","version":"0.12.5","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.12.5","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"ba23a16f0f4805bf822f4a8f120ed545aa4163d0","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.12.5.tgz","fileCount":37,"integrity":"sha512-158h8JXoVdiS/77r8wSp2s8z5DsVj+5Yzvv+zlHLMK2RDlNvabHpnySuR/TutsQAQ0kirgqdrYychhUB+SnMmw==","signatures":[{"sig":"MEUCIQDQTQgmJndU/SoVwjnSn+dm20oM6R7/sr/HGewmitcDJQIgUM/nsDE7LMz6J+O2gT/q1Btpg+lzfsFqd+QW4wrwvoY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.12.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":213543},"type":"module","engines":{"node":">=20"},"gitHead":"dae74653a6c20316662d9a6bbb556897cde74807","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"11.15.0","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","fflate":"^0.8.2","parse5":"^8.0.1","fontkit":"^2.0.4","css-tree":"^3.2.1","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","remark-smartypants":"^3.0.2","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0","eslint-import-resolver-node":"^0.3.10"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5","wawoff2":"^2.0.1","subset-font":"^2.5.0"},"peerDependencies":{"sharp":"^0.34.0","wawoff2":"^2.0.1","subset-font":"^2.0.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"wawoff2":{"optional":true},"subset-font":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.12.5_1779857228192_0.3249699537912787","host":"s3://npm-registry-packages-npm-production"}},"0.12.6":{"name":"xtatic","version":"0.12.6","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.12.6","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"7ec543f1f0b482f8cd192d07407d07e200ae7f1b","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.12.6.tgz","fileCount":37,"integrity":"sha512-PEEqAeeFZ/+y436xPf9jq6Xo4jm/2P8sKVulL8H2yWhhiiZOsmSuAHZyGfchdAi6YuXtMC2h5IaFL1bF9zX4Og==","signatures":[{"sig":"MEUCIQChJ8X72JIbQtHElIuRmNu/tCY9ClTGpNnckTfUvQKZrgIgQCMH113yWVeCJliY3XX5tKf7ILboGeDEVUtQLbKjqsg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.12.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":215540},"type":"module","engines":{"node":">=20"},"gitHead":"2c56c2c8908e5bb182139f44ba8f5da7355ebba5","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"11.15.0","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","fflate":"^0.8.2","parse5":"^8.0.1","fontkit":"^2.0.4","css-tree":"^3.2.1","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","remark-smartypants":"^3.0.2","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0","eslint-import-resolver-node":"^0.3.10"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5","wawoff2":"^2.0.1","subset-font":"^2.5.0"},"peerDependencies":{"sharp":"^0.34.0","wawoff2":"^2.0.1","subset-font":"^2.0.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"wawoff2":{"optional":true},"subset-font":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.12.6_1779858419210_0.6469015901742279","host":"s3://npm-registry-packages-npm-production"}},"0.12.7":{"name":"xtatic","version":"0.12.7","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.12.7","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"e72bec99aa13dad3ef37564c9ba8c582c00a7f64","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.12.7.tgz","fileCount":37,"integrity":"sha512-COVPwxALzRDnLB9IrQ64D3B+immyA6adN94ZE4fcEp/y0eO5/zIEzMBdl+cKVCROH+ACq6ltv7wcU/W6/zXjKA==","signatures":[{"sig":"MEUCIDbNpdFs/oE+StIwYk6fLKSNTZudYQOnFbZQbMOy6s0NAiEAhMyo+y3I9ju1YyZY1+4XCZJjMRc76uHiu704HPUj+sE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.12.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":219096},"type":"module","engines":{"node":">=20"},"gitHead":"c25d9dc844ae7be09b13bf6fb7bffde8ca351e4e","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"11.16.0","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","fflate":"^0.8.2","parse5":"^8.0.1","fontkit":"^2.0.4","css-tree":"^3.2.1","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","remark-smartypants":"^3.0.2","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0","eslint-import-resolver-node":"^0.3.10"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5","wawoff2":"^2.0.1","subset-font":"^2.5.0"},"peerDependencies":{"sharp":"^0.34.0","wawoff2":"^2.0.1","subset-font":"^2.0.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"wawoff2":{"optional":true},"subset-font":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.12.7_1780026838307_0.4275743321998766","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"xtatic","version":"0.13.0","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.13.0","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"842891ff23c66dfbda58731c346e7cc344f87df9","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.13.0.tgz","fileCount":37,"integrity":"sha512-uYdfY+HPqTuDT589uy2M5pq4uz3bKVeA8d8jRaFpv6a1ZoUb3M6btbpRXUdqP26XIzPIujmjoV9Cq7ZDxQQeNg==","signatures":[{"sig":"MEUCIQDBslW7r+NjBnzIFYYcTfHmlcogSFi0GpMWM/HI7W+NWQIgN6mI5znGiLNNUoYNoTXcH3AtGqJvRQT/+q7uBMK6XK4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":225769},"type":"module","engines":{"node":">=20"},"gitHead":"7731aed3ace0e7ee825c62147d2dd3f6f960b53a","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"11.16.0","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","fflate":"^0.8.2","parse5":"^8.0.1","fontkit":"^2.0.4","css-tree":"^3.2.1","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","remark-smartypants":"^3.0.2","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0","eslint-import-resolver-node":"^0.3.10"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5","wawoff2":"^2.0.1","subset-font":"^2.5.0"},"peerDependencies":{"sharp":"^0.34.0","wawoff2":"^2.0.1","subset-font":"^2.0.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"wawoff2":{"optional":true},"subset-font":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.13.0_1780030132490_0.05065054421142068","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"xtatic","version":"0.14.0","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.14.0","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"b7095ed8879c16970d68ec82b07d082598100703","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.14.0.tgz","fileCount":37,"integrity":"sha512-FB4wlVPznxvYO8DWikDW551mRjUORsoldjo9cqcp5Fr7QtG2oHyut0S5yKq4DSnOPVGlAKatwquAl0ReWBV5tQ==","signatures":[{"sig":"MEUCIEBG66ca+PqqUc+hA+VOCta00ICU9V+cBnfOV9oa86yZAiEAv+ZvzAz1dJF+jEuTRXrXuQINs1m/Ez6a9qdRXC8Pe7g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":226196},"type":"module","engines":{"node":">=20"},"gitHead":"a1c11041eb5ceb63391c79a1c01a80c207216ef5","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"11.16.0","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","fflate":"^0.8.2","parse5":"^8.0.1","fontkit":"^2.0.4","css-tree":"^3.2.1","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","remark-smartypants":"^3.0.2","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0","eslint-import-resolver-node":"^0.3.10"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5","wawoff2":"^2.0.1","subset-font":"^2.5.0"},"peerDependencies":{"sharp":"^0.34.0","wawoff2":"^2.0.1","subset-font":"^2.0.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"wawoff2":{"optional":true},"subset-font":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.14.0_1780115414581_0.0020284972293276304","host":"s3://npm-registry-packages-npm-production"}},"0.14.1":{"name":"xtatic","version":"0.14.1","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.14.1","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"2369ae7905966c464856595c02f71c2d69d886c4","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.14.1.tgz","fileCount":38,"integrity":"sha512-9opmAhg2cx2OYbM6MKHdhO1X/jSaAFC7uk3X5FeBUFOlzKsBLJW/63T/gFRohONMTTge+LlMep0GReJNQ4fB9w==","signatures":[{"sig":"MEYCIQD7LAs0FIvivSTCD/f9wseWcBrL7gtEi8rnyKg6S7J+SAIhAJdGmNsqPOrGt2Oj646TOknsxUgB8RH/pAexBtydtrGw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.14.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":229680},"type":"module","engines":{"node":">=20"},"gitHead":"61a86efa168a9cab7c5ee799f876862ad917ea89","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"11.16.0","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","fflate":"^0.8.2","parse5":"^8.0.1","fontkit":"^2.0.4","css-tree":"^3.2.1","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","remark-smartypants":"^3.0.2","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0","eslint-import-resolver-node":"^0.3.10"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5","wawoff2":"^2.0.1","subset-font":"^2.5.0"},"peerDependencies":{"sharp":"^0.34.0","wawoff2":"^2.0.1","subset-font":"^2.0.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"wawoff2":{"optional":true},"subset-font":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.14.1_1780116807505_0.3337565515705334","host":"s3://npm-registry-packages-npm-production"}},"0.14.2":{"name":"xtatic","version":"0.14.2","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.14.2","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"9dee7b220f8a1488623681a62f0555cd7d0d0e2c","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.14.2.tgz","fileCount":38,"integrity":"sha512-cU30k0D5Hlb5o0gVP6Q1K/9LuW7zNcXkWMLqtXGCbn1CsoWhaZXy+G/4swrXqzcCp8Q6yqQUh6wIDj5RE0PQCQ==","signatures":[{"sig":"MEQCIEgyqSA4N0oIsx/8/WK4SbWmDOZTCLi67MVGWNWlCfXPAiBmB5axxM9bAodoamJ2ZBjAENSY+TcEPouV02wMB0xdQg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.14.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":229924},"type":"module","engines":{"node":">=20"},"gitHead":"1217b92b356e0ddf64ccba169f2f20a7c4eb5464","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"11.16.0","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","fflate":"^0.8.2","parse5":"^8.0.1","fontkit":"^2.0.4","css-tree":"^3.2.1","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","remark-smartypants":"^3.0.2","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0","eslint-import-resolver-node":"^0.3.10"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5","wawoff2":"^2.0.1","subset-font":"^2.5.0"},"peerDependencies":{"sharp":"^0.34.0","wawoff2":"^2.0.1","subset-font":"^2.0.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"wawoff2":{"optional":true},"subset-font":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.14.2_1780117358240_0.6374218809256804","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"xtatic","version":"0.15.0","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.15.0","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"d7399aa0a3e75a43beedd9dd8c69cd8b1f5eaf45","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.15.0.tgz","fileCount":38,"integrity":"sha512-/yX8Eu4/AYq6uyA1xGQvt5wH0vYJ9lnWPtnaEoCtAuO7b4xvEmiGXu2OWRXDnANQxe1Xg0NK8+bUy8pSqA3blQ==","signatures":[{"sig":"MEUCIQCiki6qQgzY9s4g5nReLXsZ+B2YFVj28LvYHKvtQ6yEpgIgdJdy+REghjsTDJ/9sC87evm9CCYI3mkD3LTtslaqOu8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.15.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":242634},"type":"module","engines":{"node":">=20"},"gitHead":"fe845d526799f6ff1869042bf0d735244a3f5378","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"11.16.0","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","fflate":"^0.8.2","parse5":"^8.0.1","fontkit":"^2.0.4","css-tree":"^3.2.1","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","remark-smartypants":"^3.0.2","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0","eslint-import-resolver-node":"^0.3.10"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5","wawoff2":"^2.0.1","subset-font":"^2.5.0"},"peerDependencies":{"sharp":"^0.34.0","wawoff2":"^2.0.1","subset-font":"^2.0.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"wawoff2":{"optional":true},"subset-font":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.15.0_1780284753600_0.11642336260704567","host":"s3://npm-registry-packages-npm-production"}},"0.15.1":{"name":"xtatic","version":"0.15.1","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.15.1","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"862ff6a293c6cd86f3c39744f7b241c21eb2e26a","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.15.1.tgz","fileCount":38,"integrity":"sha512-3y+1ddWbb99j3RZnWZbe/vBITYM2kwVzI6ijpFztGzEqzyYSHWkUd1LtvnshpEyRXUO+Kj62W8e6bFpLS9gpQQ==","signatures":[{"sig":"MEQCIDgk42XOlxMonD4Od86MEZ3LBMAuzbCT5w9/j1LAHTA8AiBV11F/1s/Ms8dCEq+I8eBQjpPvcSfsUkTgA6hQaVFjmQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.15.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":247779},"type":"module","engines":{"node":">=20"},"gitHead":"3454b06b11bac3d0ecb78ec83d584461d3d6486e","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"11.16.0","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","fflate":"^0.8.2","parse5":"^8.0.1","fontkit":"^2.0.4","css-tree":"^3.2.1","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","remark-smartypants":"^3.0.2","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0","eslint-import-resolver-node":"^0.3.10"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5","wawoff2":"^2.0.1","subset-font":"^2.5.0"},"peerDependencies":{"sharp":"^0.34.0","wawoff2":"^2.0.1","subset-font":"^2.0.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"wawoff2":{"optional":true},"subset-font":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.15.1_1780374903752_0.3543134909574024","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"xtatic","version":"0.16.0","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.16.0","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"63e2393715982d0e898b6a61feb7d970b3de993a","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.16.0.tgz","fileCount":38,"integrity":"sha512-pF2yndUyGuKm2YxP5VLrr9+NTVdr4bYrh0koVTQgN1xlyZaUG5nuU29qIIKopydLWsx7SMG0oQMCNEphrE4cbA==","signatures":[{"sig":"MEUCIGfUAtbWZTcrEXyEBvx2sFgC/2w/c9rZlPmiBXNreYSCAiEA+BOELiS1fkt7xbGtgGSmb3SfUWjZj07+oPYeL29nR6A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":250251},"type":"module","engines":{"node":">=20"},"gitHead":"463f428313f1a575d83b22fe7d29686f316d90ed","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"11.16.0","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","fflate":"^0.8.2","parse5":"^8.0.1","fontkit":"^2.0.4","css-tree":"^3.2.1","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","remark-smartypants":"^3.0.2","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0","eslint-import-resolver-node":"^0.3.10"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5","wawoff2":"^2.0.1","subset-font":"^2.5.0"},"peerDependencies":{"sharp":"^0.34.0","wawoff2":"^2.0.1","subset-font":"^2.0.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"wawoff2":{"optional":true},"subset-font":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.16.0_1780462603868_0.2538958597589507","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"xtatic","version":"0.18.0","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.18.0","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"6c21504ddfd0ae105ca627a106e3f1760cf52cf5","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.18.0.tgz","fileCount":41,"integrity":"sha512-BmzNFj6GO4Ut+esk67MZX0HYbbHMB/ooxpEe77nIOu6jqsP8qidMcvUUwgUu0Ss0Gt/8q1BY0Gc3SovegSVswg==","signatures":[{"sig":"MEUCIQCKJzz3EQt1Y6i9YQlBnMRKYvDvo8DlckXCKAMBAwp/uAIgDgaMKKiWQOTJC6z+teAH7E70LxsB1xDtfibh3l8ONtQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.18.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":265392},"type":"module","engines":{"node":">=20"},"gitHead":"72a3b8e28fad19e1361073a979196eb3e937c295","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"12.0.1","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","fflate":"^0.8.2","parse5":"^8.0.1","fontkit":"^2.0.4","css-tree":"^3.2.1","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","remark-smartypants":"^3.0.2","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0","eslint-import-resolver-node":"^0.3.10"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5","wawoff2":"^2.0.1","subset-font":"^2.5.0"},"peerDependencies":{"sharp":"^0.34.0","wawoff2":"^2.0.1","subset-font":"^2.0.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"wawoff2":{"optional":true},"subset-font":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.18.0_1783889755960_0.026652661304578995","host":"s3://npm-registry-packages-npm-production"}},"0.18.1":{"name":"xtatic","version":"0.18.1","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.18.1","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"c474175e63882962c8f143cd73343fcabf587f52","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.18.1.tgz","fileCount":41,"integrity":"sha512-ALt4C8ds9IxXDYbhp5/bAgLoV83Glf3m/3bJCVApbbUY3AKDMkxuaYw8mmU4hJJPCuqIqqESEcoV+mAUbc6hHA==","signatures":[{"sig":"MEUCIQDdtylX4UT363D0lGcHl5qyuMXvp+LJEkseeLoMp/wtJwIgZb106XLDZMAFImBitYT4SEEWKEBs0Pwe/A+pxZM66Vg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.18.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":267585},"type":"module","engines":{"node":">=20"},"gitHead":"0b18f58a88db80d871a7005f08f1da560ef006ac","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"12.0.2","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","fflate":"^0.8.2","parse5":"^8.0.1","fontkit":"^2.0.4","css-tree":"^3.2.1","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","remark-smartypants":"^3.0.2","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0","eslint-import-resolver-node":"^0.3.10"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5","wawoff2":"^2.0.1","subset-font":"^2.5.0"},"peerDependencies":{"sharp":"^0.34.0","wawoff2":"^2.0.1","subset-font":"^2.0.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"wawoff2":{"optional":true},"subset-font":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.18.1_1788630812791_0.38328708937836997","host":"s3://npm-registry-packages-npm-production"}},"0.18.2":{"name":"xtatic","version":"0.18.2","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.18.2","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"9be52bf714d959287765e3829baa192983e9ed99","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.18.2.tgz","fileCount":41,"integrity":"sha512-rQGi3iHGXwxrXGm+dbbfZjz/TjIpXGvhrTfsWpQH3ULXDRu44PDA+70UBoyjrlw97P7qpoK1+EmKmoKCKNmKUg==","signatures":[{"sig":"MEUCIAFIReC9WaUPXXD2IkhkMxh0g2fGjS2aGlPFS3fFUW7tAiEAgl3asH6JAjndLE6G7IuryT/RpoDL5MQfRQh3hOsEZjI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.18.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":267907},"type":"module","engines":{"node":">=20"},"gitHead":"b4bc5c7d2383dd73a094d448807e586cea45b67e","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"12.0.2","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","fflate":"^0.8.2","parse5":"^8.0.1","fontkit":"^2.0.4","css-tree":"^3.2.1","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","remark-smartypants":"^3.0.2","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0","eslint-import-resolver-node":"^0.3.10"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5","wawoff2":"^2.0.1","subset-font":"^2.5.0"},"peerDependencies":{"sharp":"^0.34.0","wawoff2":"^2.0.1","subset-font":"^2.0.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"wawoff2":{"optional":true},"subset-font":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.18.2_1788631225182_0.5917761673256934","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"xtatic","version":"0.19.0","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.19.0","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"a50d30331e358eff20c8b81cadcb66ba30d892b0","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.19.0.tgz","fileCount":42,"integrity":"sha512-eccvdwp5+DMoz2lG+4cG68f6INF488wWaR3MhEtQaaN72EdSIJZ5/7EMD2cDJ4PqVB/BttG8GKwpayyjxYx8jA==","signatures":[{"sig":"MEUCIQCC1wtkjBoBpqE6Jxxzw6PkwEA9WUeDBS3d9kbo+j+ZagIgRmq1l3C1BJIcWDzcIb66EFnDO1R/+URIp4CA8HvlXE0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.19.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":275504},"type":"module","engines":{"node":">=20"},"gitHead":"9f92c2a685f61fab3b2127b37b1f8e97138db68c","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"12.0.2","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","fflate":"^0.8.2","parse5":"^8.0.1","fontkit":"^2.0.4","css-tree":"^3.2.1","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","remark-smartypants":"^3.0.2","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0","eslint-import-resolver-node":"^0.3.10"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5","wawoff2":"^2.0.1","subset-font":"^2.5.0"},"peerDependencies":{"sharp":"^0.34.0","wawoff2":"^2.0.1","subset-font":"^2.0.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"wawoff2":{"optional":true},"subset-font":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.19.0_1788643278047_0.12767354595450908","host":"s3://npm-registry-packages-npm-production"}},"0.20.0":{"name":"xtatic","version":"0.20.0","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.20.0","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"3451678a807b7a639a492af8ee4cac1dda89de52","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.20.0.tgz","fileCount":43,"integrity":"sha512-009oe+y+SDynnvCEaGWYZujjl6n0ZhXfq5QinOG3uX6yfbY6aIGgdVUz0//GvRXdCFBlQmmeWNhpRw4gEFHCbQ==","signatures":[{"sig":"MEQCIGhgAOgcYu72bEfm9IdTkZebmbV9dUP5T+kjYQkubYULAiBpJavaNdcvNq6bMH049xF6SAd4D5fyHJOpYt6rLD59MA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.20.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":292430},"type":"module","engines":{"node":">=20"},"gitHead":"13852dc626cf1ffa696f08e726fc83e5563ed7d3","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"12.0.2","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","fflate":"^0.8.2","parse5":"^8.0.1","fontkit":"^2.0.4","css-tree":"^3.2.1","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","remark-smartypants":"^3.0.2","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0","eslint-import-resolver-node":"^0.3.10"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5","wawoff2":"^2.0.1","subset-font":"^2.5.0"},"peerDependencies":{"sharp":"^0.34.0","wawoff2":"^2.0.1","subset-font":"^2.0.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"wawoff2":{"optional":true},"subset-font":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.20.0_1788647856915_0.29144623716840856","host":"s3://npm-registry-packages-npm-production"}},"0.21.0":{"name":"xtatic","version":"0.21.0","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.21.0","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"ab8337be205e2fa06b01223fe85839302412c4f1","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.21.0.tgz","fileCount":43,"integrity":"sha512-e5yZ8jqTKb3cOHWZfXopO8EU2ezabwDwEZqpDoSHnSQhgTK3NvJ1NuQn/qTxi+N1uigD4dXvSrBG49tFS+JaHQ==","signatures":[{"sig":"MEUCIQDI8YLf1peczHVZNdTfOGiUS7gn31cKgF2zR2DuoPShvwIgRYIBsrevfPJa6HzMM80nSLOcMx5U6fCs/AIG0+Okef4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.21.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":294490},"type":"module","engines":{"node":">=20"},"gitHead":"4640112f20f2d75f8bacbdf799b7eed64d53a90c","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"12.0.2","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","fflate":"^0.8.2","parse5":"^8.0.1","fontkit":"^2.0.4","css-tree":"^3.2.1","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","remark-smartypants":"^3.0.2","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0","eslint-import-resolver-node":"^0.3.10"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5","wawoff2":"^2.0.1","subset-font":"^2.5.0"},"peerDependencies":{"sharp":"^0.34.0","wawoff2":"^2.0.1","subset-font":"^2.0.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"wawoff2":{"optional":true},"subset-font":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.21.0_1788651258990_0.5745681988638736","host":"s3://npm-registry-packages-npm-production"}},"0.22.0":{"name":"xtatic","version":"0.22.0","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.22.0","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"343f57b512d9f0c823982663bd1be578ccdf4ed3","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.22.0.tgz","fileCount":43,"integrity":"sha512-B7Wa0UfDgF69qBwk8TgS1Rbb4QlzDL9KlPLQ+I1YOtvDsMgOvwC/7ZpQCv6l+ygKSYbBssFQtsj/iGwDFiAdog==","signatures":[{"sig":"MEYCIQCB58NK1PFTwDzTm4bL5W8x47KNllsn/w8OLzVcQTFnuwIhAIgmqiWQBX0HZtDW2WCa/JYxCxFwIxc7nrvsRgDti99r","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.22.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":306779},"type":"module","engines":{"node":">=20"},"gitHead":"4e0f2d961677ca981abb8a8fc393b6bccd400576","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"12.0.2","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","fflate":"^0.8.2","parse5":"^8.0.1","fontkit":"^2.0.4","css-tree":"^3.2.1","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","remark-smartypants":"^3.0.2","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0","eslint-import-resolver-node":"^0.3.10"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5","wawoff2":"^2.0.1","subset-font":"^2.5.0"},"peerDependencies":{"sharp":"^0.34.0","wawoff2":"^2.0.1","subset-font":"^2.0.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"wawoff2":{"optional":true},"subset-font":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.22.0_1788668039173_0.7683283397152354","host":"s3://npm-registry-packages-npm-production"}},"0.23.0":{"name":"xtatic","version":"0.23.0","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.23.0","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"71b5de64f8335386bb26f5f70ccdedf872f0ad3b","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.23.0.tgz","fileCount":43,"integrity":"sha512-tss6WW+N5zMBEHLM+Zc5ibKst3bzu++mkwOSUyRTUlnNO5hiIZqJZ86anHL9fAfFa4MkD2qbp1dUboEaOn+m3A==","signatures":[{"sig":"MEQCIBpS/LEzIwSijubQE4fOAdZK7zLZ5AN5Mz0h/XCNGoF8AiBR9aZgtaGWL0ju/dTFpedw8xUcMV2D20vW+6C58TgWCA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.23.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":308565},"type":"module","engines":{"node":">=20"},"gitHead":"3de0cf63dd049b14a39dc4623ef5fbd5940a5a0a","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"12.0.2","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","fflate":"^0.8.2","parse5":"^8.0.1","fontkit":"^2.0.4","css-tree":"^3.2.1","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","remark-smartypants":"^3.0.2","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0","eslint-import-resolver-node":"^0.3.10"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5","wawoff2":"^2.0.1","subset-font":"^2.5.0"},"peerDependencies":{"sharp":"^0.34.0","wawoff2":"^2.0.1","subset-font":"^2.0.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"wawoff2":{"optional":true},"subset-font":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.23.0_1789242051344_0.21685864982247138","host":"s3://npm-registry-packages-npm-production"}},"0.23.1":{"name":"xtatic","version":"0.23.1","keywords":["static-site-generator","ssg","mdx","markdown","html"],"author":{"name":"Jacques Frechet"},"license":"MIT","_id":"xtatic@0.23.1","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"bin":{"xtatic":"src/cli.js"},"dist":{"shasum":"a347de83b45f665c829100b3a1649a84430ea61f","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.23.1.tgz","fileCount":43,"integrity":"sha512-U0w6cEgRpt78PbzaCJ57B/fHigVj4sF8uPSkZefcLp5Wze4QYpQxDsvyhhRl9A0hwRO7cebmd39jgl1juKAFDQ==","signatures":[{"sig":"MEYCIQCqwTxulxTNfgX2u3A9d/2UHkcEKFmzPYJlMu5FynbqPAIhANLefTfk1q/CflgacTl0g74K79XLwQvNmweEYqF7W1ej","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.23.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":309270},"type":"module","engines":{"node":">=20"},"gitHead":"ccc6b98a33747ca5c76b5553bf5e40f2d3a90155","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"overrides":{"glob":"^13.0.0"},"repository":{"url":"git+https://github.com/jcmf/xtatic.git","type":"git"},"_npmVersion":"12.0.2","description":"Static site generator that compiles MDX to HTML by executing it at build time.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"title":"^4.0.1","eslint":"^9.39.4","fflate":"^0.8.2","parse5":"^8.0.1","fontkit":"^2.0.4","css-tree":"^3.2.1","eslint-mdx":"^3.7.0","@mdx-js/mdx":"^3.1.0","eslint-plugin-mdx":"^3.7.0","remark-frontmatter":"^5.0.0","remark-smartypants":"^3.0.2","eslint-plugin-import":"^2.32.0","remark-mdx-frontmatter":"^5.0.0","eslint-import-resolver-node":"^0.3.10"},"_hasShrinkwrap":false,"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5","wawoff2":"^2.0.1","subset-font":"^2.5.0"},"peerDependencies":{"sharp":"^0.34.0","wawoff2":"^2.0.1","subset-font":"^2.0.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"wawoff2":{"optional":true},"subset-font":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xtatic_0.23.1_1789273827508_0.2583477535263594","host":"s3://npm-registry-packages-npm-production"}},"0.24.0":{"name":"xtatic","version":"0.24.0","description":"Static site generator that compiles MDX to HTML by executing it at build time.","keywords":["static-site-generator","ssg","mdx","markdown","html"],"homepage":"https://github.com/jcmf/xtatic#readme","bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"repository":{"type":"git","url":"git+https://github.com/jcmf/xtatic.git"},"license":"MIT","author":{"name":"Jacques Frechet"},"type":"module","bin":{"xtatic":"src/cli.js"},"scripts":{"test":"node --test"},"engines":{"node":">=20"},"dependencies":{"@mdx-js/mdx":"^3.1.0","css-tree":"^3.2.1","eslint":"^9.39.4","eslint-import-resolver-node":"^0.3.10","eslint-mdx":"^3.7.0","eslint-plugin-import":"^2.32.0","eslint-plugin-mdx":"^3.7.0","fflate":"^0.8.2","fontkit":"^2.0.4","parse5":"^8.0.1","remark-frontmatter":"^5.0.0","remark-mdx-frontmatter":"^5.0.0","remark-smartypants":"^3.0.2","title":"^4.0.1"},"devDependencies":{"memfs":"^4.17.0","sharp":"^0.34.5","subset-font":"^2.5.0","wawoff2":"^2.0.1"},"peerDependencies":{"sharp":"^0.34.0","subset-font":"^2.0.0","wawoff2":"^2.0.1"},"peerDependenciesMeta":{"sharp":{"optional":true},"subset-font":{"optional":true},"wawoff2":{"optional":true}},"overrides":{"glob":"^13.0.0"},"gitHead":"823a00caef1f71800b72e94924e48d5ef66f3456","_id":"xtatic@0.24.0","_nodeVersion":"24.20.0","_npmVersion":"12.0.2","dist":{"integrity":"sha512-SeC7H+0/dIWXzruh6BoEMIFWkZTeIJ9IMm8D7a0Da0WHzGSdt8SI8sVvngwChYMmoSJGtD6geVTIOch+h9A5Xg==","shasum":"5ca8c3fb332343ae9a42398a06792d708a6cbee4","tarball":"https://registry.npmjs.org/xtatic/-/xtatic-0.24.0.tgz","fileCount":43,"unpackedSize":311257,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtatic@0.24.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEu/aaw3NJLp+toxK0o2lcDwhvqM20+/bqw2kYZoNzsyAiEA6DHEXHPhxJtnrzuT1QpNmJL4AhMS3UQFrWzxsdai+yk="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a780da07-a1b7-47f3-8394-212637c313fa"}},"directories":{},"maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/xtatic_0.24.0_1789328893151_0.3813674438761345"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-05T04:03:28.878Z","modified":"2026-09-13T19:48:13.630Z","0.1.0":"2026-05-05T04:03:29.017Z","0.1.1":"2026-05-06T02:03:49.279Z","0.2.0":"2026-05-06T04:52:51.198Z","0.3.0":"2026-05-09T02:50:40.419Z","0.4.0":"2026-05-09T03:58:33.127Z","0.4.1":"2026-05-09T04:37:21.675Z","0.5.0":"2026-05-09T19:32:26.969Z","0.5.1":"2026-05-09T22:27:34.689Z","0.6.0":"2026-05-10T00:07:54.421Z","0.6.1":"2026-05-10T21:25:30.109Z","0.7.0":"2026-05-10T22:51:24.058Z","0.8.0":"2026-05-11T00:38:34.586Z","0.9.0":"2026-05-11T02:34:05.661Z","0.10.0":"2026-05-11T03:28:41.051Z","0.11.0":"2026-05-15T04:11:59.447Z","0.11.1":"2026-05-15T04:47:39.097Z","0.12.0":"2026-05-15T05:30:28.982Z","0.12.1":"2026-05-16T01:48:06.250Z","0.12.2":"2026-05-23T00:38:15.762Z","0.12.3":"2026-05-23T01:26:47.653Z","0.12.4":"2026-05-23T02:04:09.299Z","0.12.5":"2026-05-27T04:47:08.328Z","0.12.6":"2026-05-27T05:06:59.346Z","0.12.7":"2026-05-29T03:53:58.453Z","0.13.0":"2026-05-29T04:48:52.628Z","0.14.0":"2026-05-30T04:30:14.718Z","0.14.1":"2026-05-30T04:53:27.648Z","0.14.2":"2026-05-30T05:02:38.374Z","0.15.0":"2026-06-01T03:32:33.753Z","0.15.1":"2026-06-02T04:35:03.920Z","0.16.0":"2026-06-03T04:56:44.034Z","0.18.0":"2026-07-12T20:55:56.099Z","0.18.1":"2026-09-05T17:53:32.961Z","0.18.2":"2026-09-05T18:00:25.313Z","0.19.0":"2026-09-05T21:21:18.267Z","0.20.0":"2026-09-05T22:37:37.107Z","0.21.0":"2026-09-05T23:34:19.197Z","0.22.0":"2026-09-06T04:13:59.315Z","0.23.0":"2026-09-12T19:40:51.504Z","0.23.1":"2026-09-13T04:30:27.650Z","0.24.0":"2026-09-13T19:48:13.353Z"},"bugs":{"url":"https://github.com/jcmf/xtatic/issues"},"author":{"name":"Jacques Frechet"},"license":"MIT","homepage":"https://github.com/jcmf/xtatic#readme","keywords":["static-site-generator","ssg","mdx","markdown","html"],"repository":{"type":"git","url":"git+https://github.com/jcmf/xtatic.git"},"description":"Static site generator that compiles MDX to HTML by executing it at build time.","maintainers":[{"name":"jcmf","email":"zaphod-npm@toastball.net"}],"readme":"# xtatic\n\nA small static-site generator: MDX in, plain HTML out. The MDX is compiled and executed at build time, so the output is just HTML — no client-side runtime, no hydration.\n\n## Install & run\n\n```sh\nnpm install --save-dev xtatic\nnpx xtatic build [TOP_DIR]\n```\n\n`TOP_DIR` defaults to the current directory. By default, xtatic walks `TOP_DIR/pages/**/*.{md,mdx}` and writes to `TOP_DIR/_site/`. Layouts live in `TOP_DIR/_layouts/`.\n\nThe first positional argument is a command. The available commands are:\n\n- `init [top_dir]` — scaffold or update `top_dir/package.json`: add `xtatic` to `devDependencies` (when not already declared as a regular or dev dependency) and enable [`xtatic.autoInstall`](#auto-installing-optional-peer-deps). Creates a minimal `package.json` if none exists. Idempotent.\n- `build [top_dir]` — build the site (the default if no command is given).\n- `watch [top_dir]` — build, then rebuild on every change under `top_dir`. Errors don't kill the watcher; fix the file and save again.\n- `serve [top_dir]` — watch and serve the output over HTTP. Defaults to <http://localhost:3000/>; override the port with `XTATIC_PORT=…`. Each request is logged to the console; set `XTATIC_REQUEST_LOG=off` to silence it, or `=all` to also log the requests that hit the build-error page while a build is broken.\n- `browse [top_dir]` — same as `serve`, then open the root page in your default browser.\n- `help` — print usage.\n\nIf you invoke `xtatic` with no arguments, it runs `build` against the current directory. To build a different directory, pass it as the second argument: `xtatic build path/to/site`.\n\n### Keep going after errors\n\nBy default a build stops at the first error and writes nothing (the previous output is left untouched). Pass `-k` / `--keep-going` to `build`, `watch`, `serve`, or `browse` to do the opposite: build everything that *can* be built, then report every error at once.\n\n```sh\nnpx xtatic build --keep-going\n```\n\nWhat changes under `--keep-going`:\n\n- Every page that fails — to compile, to load an import, to resolve its layout, to render, or because an asset it references is missing or broken — is left out of the output. Everything else is written and stale files are pruned as usual, so the output reflects this build minus the broken pages (a page that used to work and now fails is *removed*, not left stale).\n- All errors are collected and printed together, numbered, each with its usual context trace, followed by the list of pages that weren't written. One underlying error is reported once even when it affects many pages: a broken layout imported by fifty pages is listed once, with all fifty in the not-written list.\n- A [lint](#lint) failure doesn't stop the build either. Both reports are printed, the lint one first.\n- The exit status is still `1` whenever anything failed.\n\nIn `watch`/`serve` mode the same applies to every rebuild; the dev server's error page shows the combined report while any error remains. Programmatically, `build({ keepGoing: true })` rejects with an `AggregateError` whose `errors` holds the individual errors and whose `skippedPages` lists the pages left out.\n\nTo override the input, output, or layouts location, add an `xtatic` section to `TOP_DIR/package.json`:\n\n```json\n{\n  \"xtatic\": {\n    \"inputDir\": \"src/pages\",\n    \"outputDir\": \"dist\",\n    \"layoutsDir\": \"src/layouts\",\n    \"assetsDir\": \"_assets\",\n    \"verbatimMarker\": \"_xtatic_verbatim\"\n  }\n}\n```\n\nThe defaults are `pages`, `_site`, `_layouts`, `_assets`, and `_xtatic_verbatim` respectively. Relative paths in config are resolved against `TOP_DIR`, not the working directory; absolute paths are used as-is. (`assetsDir` and `verbatimMarker` are bare names, not paths — see below.)\n\n`OUTPUT_DIR` is fully owned by xtatic: every build regenerates the whole site, and anything under it that the build didn't produce is deleted at the end of the run — so renames and deletions can't leave stale files behind. Don't point it at a directory that holds anything you want to keep, and don't hand-edit files inside it. As a guard against catastrophic misconfiguration, xtatic refuses to build if `outputDir` is `/`, equal to a source directory, or an ancestor of `topDir`/`inputDir`/`layoutsDir`.\n\nWithin that, writes are conservative: an output file whose content is unchanged from the previous build is skipped, preserving its timestamp — friendly to `rsync`-style deploys, HTTP caching, and anything else that keys off mtimes. (A build that fails partway also leaves the previous output in place rather than half-erasing it — unless you asked it to [keep going](#keep-going-after-errors), in which case whatever could be built is written and the rest pruned.)\n\nShared, content-addressed assets (the hashed images, stylesheets, and fonts that aren't inlined or co-located) are written under `OUTPUT_DIR/_assets/`. Rename that directory with `xtatic.assetsDir` — it must be a single path segment (no `/`, `.`, or `..`). Because the build owns this directory, **a page may not write into it**: if a page's output path (whether the default `dir/index.html` or an `outputPath` override) lands inside the assets directory, the build fails with an error. Renaming `assetsDir` frees the original name for use as a page.\n\n## How input maps to output\n\n`xtatic` walks `INPUT_DIR/**/*.{md,mdx,html}`. Each file becomes `OUTPUT_DIR/<path>/index.html` (for `.html` inputs, see [HTML pages](#html-pages)). The four forms below are **equivalent and mutually exclusive** — putting two of them in the same input tree is an error:\n\n| Input                                | Output                            |\n| ------------------------------------ | --------------------------------- |\n| `INPUT_DIR/foo/bar.md`               | `OUTPUT_DIR/foo/bar/index.html`   |\n| `INPUT_DIR/foo/bar.mdx`              | same                              |\n| `INPUT_DIR/foo/bar/index.md`         | same                              |\n| `INPUT_DIR/foo/bar/index.mdx`        | same                              |\n\n`INPUT_DIR/index.md` (or `.mdx`) is the root and writes to `OUTPUT_DIR/index.html`.\n\nA directory doesn't need an `index.md` of its own. A position in the tree that has pages beneath it but no source file (including the root) becomes a *grouping node*: it appears in its parent's `childPages` with the usual name-derived `title`/`date` defaults so listings can still show it, and `defaultLayout` inheritance passes through it — but no output file is written there, and since there's no page to link to, its `url` is `undefined` (check for it, or link to a child instead).\n\nA page can override its destination by exporting `outputPath` (frontmatter or a named `export`) — useful for `/feed.xml`, `/sitemap.xml`, `/robots.txt`, etc.:\n\n```mdx\n---\noutputPath: /feed.xml\nlayout: null\n---\nimport {html} from 'xtatic:builtins';\n\n{html('<?xml version=\"1.0\"?>')}\n<rss version=\"2.0\">\n  <channel>\n    {childPages.map((p) => <item><title>{p.title}</title></item>)}\n  </channel>\n</rss>\n```\n\nThe value must be an absolute path (starting with `/`) naming a file. `name`, `childPages`, `date`, and `title` still derive from the source file's tree position — only the written file's location changes. Layouts still apply; set `layout: null` (or just have no `defaultLayout` in scope) to opt out of HTML wrapping, as RSS/XML output usually wants.\n\n## Generating multiple pages from one file\n\nOne source file can fan out into many pages — a tag page per tag, a post page per row of data, etc. Two things make a file a **page generator**:\n\n1. Its filename contains one or more `{placeholder}` tokens, e.g. `tag-{tag}.md`.\n2. It exports a **function** named `getPages` that returns an array. Each item is a plain object that becomes **the exports of one generated page**.\n\n`getPages()` runs *after* xtatic has assembled the ordinary pages into a tree, so it can import another page and read its tree-derived fields — most usefully a parent's `childPages`. That's how you build a tag index: import the section page, walk its children, and group them by tag.\n\n```mdx\n<!-- INPUT_DIR/tag-{tag}.md -->\nimport blog from '/pages/blog/index.md';\n\nexport const getPages = () => {\n  const byTag = new Map();\n  for (const post of blog.childPages)\n    for (const t of post.tags ?? []) {\n      if (!byTag.has(t)) byTag.set(t, []);\n      byTag.get(t).push(post);\n    }\n  return [...byTag].map(([tag, posts]) => ({ tag, posts }));\n};\n\n# Posts tagged \"{tag}\"\n\n<ul>{posts.map((p) => <li><a href={p.url}>{p.title}</a></li>)}</ul>\n```\n\nIf `blog/` holds posts tagged `rust` and `js`, this emits `OUTPUT_DIR/tag-rust/index.html` and `OUTPUT_DIR/tag-js/index.html`. For each item, the value of each filename placeholder is taken from the matching field (`{tag}` ← `item.tag`), and **every field is an export of that generated page** — readable as a bare identifier in the body (`{tag}`, `{posts}`) exactly like frontmatter, and visible from outside as `page.tag` / via `{...page}`. The generator file itself does **not** render at its own slot; it only produces the items.\n\n`blog.childPages` are the post modules themselves, so each carries `tags` (from its frontmatter), `title`, `date`, and a working `url`. `childPages` is direct children only, already sorted by name. (`getPages` doesn't have to use `childPages` — return any array of objects you like, e.g. one page per row of imported data.)\n\nThe generated pages are ordinary tree nodes: they appear in their parent's `childPages`, each has a working `url`, and `name`/`date`/`title` default from the substituted filename (so `2026-01-02-{slug}.md` yields a `date`, and `tag-rust` titles as \"Tag Rust\"). A field on the item overrides those defaults — an item of `{ tag: 'js', title: 'JavaScript posts' }` would override the name-derived title. So a separate listing page can link them the usual way:\n\n```mdx\n<ul>{childPages.map((c) => <li><a href={c.url}>{c.tag}</a></li>)}</ul>\n```\n\nOther details:\n\n- **`outputPath` works per item**, redirecting just that page's written file (`{ slug: 'feed', outputPath: '/feed.xml' }`).\n- **The generator's own exports are inherited as defaults** by each generated page (so a shared `layout`, `defaultLayout`, or helper export carries through). A template-level const is shared by every page and can be read in the body; per-page values go in the items.\n- **A page field can't share a name with a template export** — it's an error (rename one). This avoids an item silently shadowing the file's own `export const`, which the body wouldn't even reflect (a declared const binds lexically, so `{author}` always renders the template's value). The name-derived `title`/`date` defaults aren't template exports, so an item setting `title`/`date` is fine.\n\nRules and limits: a `{placeholder}`-named file must export a `getPages` function (and vice-versa — exporting `getPages` from a file with no placeholder is an error, since there'd be nothing to distinguish the pages). `getPages` must return an array of objects; placeholder values must be path-safe strings, every placeholder must be filled, and two items must not resolve to the same path (nor collide with a real file). Generated pages can't themselves be generators, so a generator only ever sees the ordinary pages — you can't build tag pages out of other tag pages. In this version, placeholders may appear only in the **filename** (not directory segments), and values are used verbatim (no slugifying).\n\n## Pages\n\nMarkdown is rendered normally. JSX inside MDX is evaluated against xtatic's JSX runtime, which produces HTML strings directly — no React, no virtual DOM.\n\n[`remark-smartypants`](https://github.com/silvenon/remark-smartypants) is enabled by default, so straight quotes/apostrophes/dashes/ellipses in prose become typographic ones. To disable it, set `xtatic.smartypants` to `false` in `package.json`; to override its options, set it to an options object (passed through to the plugin):\n\n```json\n{\n  \"xtatic\": {\n    \"smartypants\": { \"dashes\": false }\n  }\n}\n```\n\nFrontmatter and named exports become metadata on the compiled module:\n\n```mdx\n---\ntitle: About\n---\nexport const tags = ['general'];\n\n# About me\n```\n\nAfter compilation, this module exposes `mm.title === 'About'`, `mm.tags === ['general']`, and a default render function.\n\nInside JSX expressions, a module's own properties are also accessible as bare identifiers — handy for templating against frontmatter and the synthesized `childPages` / `layout`:\n\n```mdx\n---\ntitle: Index\n---\n# {title}\n\n<ul>{childPages.map((c) => <li>{c.title}</li>)}</ul>\n```\n\nIdentifiers shadowed by parameters or local declarations resolve normally; it's only otherwise-unbound identifiers that fall through to the module object.\n\n## HTML pages\n\nA `.html` file in the input tree is a page too — handy for dropping in hand-written or legacy pages. It maps to the same output location a `.md` at that path would (`foo/bar.html` → `foo/bar/index.html`), participates in the module tree (`name`, `title`, `date`, `childPages`, `url`), and its [asset references](#asset-references) go through the same pipeline as tags rendered from markdown: `<img src>`, `<link rel=\"stylesheet\" href>`, `<script src>`, `<a href=\"./other.md\">` page links, `data-xtatic-placement`, and the rest of the whitelist all behave identically. Path resolution is the same, too — a leading `/` roots at `TOP_DIR`, everything else resolves against the `.html` file's own directory.\n\nInline CSS is covered as well: a `url(...)` inside a `<style>` block or a `style=\"\"` attribute is resolved and copied/inlined like any other reference (`body { background: url(bg.gif) }` becomes a `data:` URL, a hashed `_assets/` file, or a link to a [verbatim](#verbatim-directories) copy, by the usual rules). A `data-xtatic-placement` on the `<style>` element or the styled element applies to every `url()` it contains. The bare-string `@import \"x.css\"` form is not rewritten — use `@import url(...)`.\n\nEverything *outside* the rewritten references ships byte-for-byte: comments, doctype, whitespace, and formatting are preserved (a rewritten attribute is re-emitted double-quoted; a rewritten `url()` is re-emitted as `url(\"…\")`).\n\nDifferences from `.md`/`.mdx`:\n\n- **No compilation.** The file isn't MDX — no JSX, no frontmatter, no imports, no exports (so no `outputPath` override, and a `{placeholder}` filename can't be a page generator).\n- **No layout.** The file is taken to be a complete document, so the `defaultLayout` walk skips it and `layout:` can't be set on it.\n- **`title` defaults from `<title>`.** A non-empty `<title>` in the document becomes the page's `title` (visible to a parent iterating `childPages`); otherwise the usual filename-derived default applies. `date` still comes from a `YYYY-MM-DD` filename prefix.\n\nOther pages can link to it by source path (`<a href=\"./legacy.html\">` → `legacy/`) or import it (`import legacy from './legacy.html'`) to read its `url`/`title` — the default import binds the module object, like `.md`.\n\n## Verbatim directories\n\nDrop an empty file named `_xtatic_verbatim` into any directory under `INPUT_DIR` and everything beneath it is copied to the output **as-is**, mirroring its source-tree position: `pages/legacy/foo/bar.html` lands at `OUTPUT_DIR/legacy/foo/bar.html`, byte-for-byte. Nothing in the subtree is parsed or rewritten — no `foo/index.html` remapping, no layout, no HTML/markdown compilation, no asset hashing or inlining, no link rewriting. This is for pre-rendered content (an old site, a generated API reference, a feed directory) that you want to keep in the one input tree without xtatic touching it.\n\n```\npages/\n  index.md\n  legacy/\n    _xtatic_verbatim      ← marker; not copied\n    index.html            → OUTPUT_DIR/legacy/index.html\n    feed.xml              → OUTPUT_DIR/legacy/feed.xml\n    docs/intro.html       → OUTPUT_DIR/legacy/docs/intro.html\n```\n\nThe marker's file name is configurable via `xtatic.verbatimMarker` in `package.json` (a single file name, no `/`); the same name is used in every directory.\n\nRules:\n\n- **Not pages.** Verbatim files don't join the [module tree](#the-module-tree) (no `childPages` entry, `title`, `date`, or `url`), and the directory produces no node of its own. A `.md`/`.html` under the marker is just a file. `{placeholder}` filenames are literal, not generators.\n- **Link to them by source path**, like pages: `<a href=\"./legacy/feed.xml\">`, `<img src=\"/pages/legacy/logo.png\">`, `<link rel=\"stylesheet\" href=\"./legacy/site.css\">` — any [whitelisted attribute](#asset-references) whose target resolves into a verbatim directory becomes a page-relative URL to the copied file. The literal filename is kept, except that an `index.html` is linked as its directory (`legacy/index.html` → `legacy/`, exactly like a page), and `<a href=\"./legacy/\">` resolves to that same `index.html`. The file isn't copied a second time into `_assets/`. Links *inside* verbatim files are not rewritten, so they must already be correct for the output layout — which they are for relative links within the subtree, since positions are mirrored.\n- **Collisions are errors.** A verbatim file and a page resolving to the same output path (`pages/about.md` alongside a verbatim `pages/about/index.html`) fails the build, as does a verbatim file landing under the [assets directory](#install--run).\n- **Lint skips the subtree** (or, for a [pattern marker](#verbatim-files-by-pattern), the matched files), so pre-generated `.js`/`.md` in there won't be linted as sources.\n- **Explicit processing still works.** `import`, `readfile`, and `<Image>` treat a file in a verbatim directory like any other source file; the marker only governs what the walker does with the file on its own.\n- Nested markers are harmless. An empty marker at the `INPUT_DIR` root makes the whole tree verbatim and fails with \"No page sources found\".\n\nOutput is written through the same incremental writer as everything else: unchanged files keep their timestamps and files removed from the source (or a whole directory whose marker is removed) are pruned from the output.\n\n### Verbatim files by pattern\n\nA marker that isn't empty lists **patterns**, one per line, and only what they match is verbatim — the rest of the directory is walked for pages as usual. This is how you keep a `favicon.ico`, `robots.txt`, or a background image at its literal root-level path next to your pages:\n\n```\npages/\n  _xtatic_verbatim      ← contains:  favicon.ico\n                                     robots.txt\n                                     *.gif\n                                     legacy/\n  index.html            → page, as usual (OUTPUT_DIR/index.html)\n  favicon.ico           → OUTPUT_DIR/favicon.ico\n  robots.txt            → OUTPUT_DIR/robots.txt\n  bg.gif                → OUTPUT_DIR/bg.gif\n  about/hero.gif        → OUTPUT_DIR/about/hero.gif\n  legacy/…              → whole subtree copied as-is\n```\n\nPattern syntax is a gitignore subset:\n\n- Blank lines and `#` comments are ignored. A marker containing only those is an empty marker (everything verbatim).\n- `*` matches within one path segment, `?` one character, `**` any number of segments.\n- A pattern with no `/` matches a **basename at any depth** below the marker's directory (`*.gif` catches `about/hero.gif` too). A pattern containing a `/` is **anchored** to the marker's directory (`/robots.txt` or `docs/**/*.pdf`); a leading `/` is optional.\n- A trailing `/` matches directories only. A matched directory is copied whole, exactly as if it had an empty marker of its own.\n- A pattern marker's rules apply to every subdirectory beneath it; a subdirectory may add its own marker (patterns accumulate; an empty one makes that subtree fully verbatim).\n- No negation (`!`).\n\nA matched `.md`/`.mdx`/`.html` is copied as a file, not built as a page. Everything else about verbatim files — no tree entry, [link resolution](#linking-between-pages) by source path, collision checks, lint skipping — is the same whether they were matched by pattern or by an empty marker. Note that a page's own reference to a matched file (`<link rel=\"icon\" href=\"favicon.ico\">`, `url(bg.gif)` in an inline `<style>`) links to the literal copy rather than emitting a hashed `_assets/` file.\n\n## Layouts\n\nA layout wraps another module's content. It's just an MDX module whose `default` render function reads the wrapped module from `props.children`:\n\n```mdx\n<!-- LAYOUTS_DIR/main.mdx -->\n<html>\n  <head><title>{props.children.title}</title></head>\n  <body>{props.children}</body>\n</html>\n```\n\nA module gets a layout in one of two ways:\n\n1. **Explicit**: set `layout: <name>` in frontmatter (or as a named export). The string is treated as a path relative to `LAYOUTS_DIR` (default: `TOP_DIR/_layouts`, configurable via `xtatic.layoutsDir` in `package.json`). The `.md`/`.mdx` suffix is optional; with no suffix `.mdx` is preferred. Subpaths work: `layout: posts/article`.\n2. **Inherited via `defaultLayout`**: if `layout` isn't set, xtatic walks from the module up to the root looking for a `defaultLayout`, and uses the first one it finds. The walk starts at the module itself, so a module's own `defaultLayout` applies to it. Set `defaultLayout` on the root to give every page a default; set it on a subdirectory's `index.md` to override for that subtree.\n\nLayouts loaded by name can themselves declare `layout:` (or `defaultLayout:`) for nesting. You can also set `layout` directly to a module object via `import`, bypassing the layoutsDir lookup.\n\n## The module tree\n\nAfter compilation, every page is a module object exposing:\n\n- `default(props)` — render function returning `{html: string}`\n- `childPages` — `Array` of child modules sorted by `name`\n- `layout` — the page's layout module (inherited or explicitly set; may be `undefined`)\n- `name` — the module's last path segment (set on every module that's a child of another; the root has no `name`)\n- `parent` — the module this one is a child of (`undefined` on the root)\n- `prevSibling` / `nextSibling` — the neighbours in the parent's `childPages` (same `name` order), or `undefined` at either end\n- `url` — a link to this page's rendered output. The natural way to link a `childPages` entry: `<a href={p.url}>`. It resolves to a clean directory URL relative to whatever page the link lands on, with `outputPath` overrides honored (`feed.xml` rather than `feed/`). Because it's the same kind of deferred token [`asset`](#builtins) returns, it works wherever it lands — a whitelisted attribute, a custom component prop, even bare text. Tool-owned: exporting your own `url` is overridden.\n- frontmatter keys + any named exports\n\nA directory without its own `index.md` shows up in this tree as a grouping node (see [How input maps to output](#how-input-maps-to-output)): it has `childPages`, `name`, and the name-derived `title`/`date` defaults, but no `default` render function and no `url`.\n\n`childPages` is a plain JavaScript array, so `mm.childPages.map(...)`, `.find(...)`, `.length`, and `for (const child of mm.childPages) { ... }` all work directly. Linking the children is just:\n\n```mdx\n<ul>\n  {childPages.map((p) => <li><a href={p.url}>{p.title}</a></li>)}\n</ul>\n```\n\n`parent`, `prevSibling`, and `nextSibling` point the other way — up and sideways — so a layout can navigate from the page it wraps without importing anything. Blog posts named `YYYY-MM-DD-slug.md` sort chronologically, which makes previous/next links a couple of lines in the post layout:\n\n```mdx\n{props.children}\n<nav>\n  {props.children.prevSibling && <a rel=\"prev\" href={props.children.prevSibling.url}>← {props.children.prevSibling.title}</a>}\n  {props.children.nextSibling && <a rel=\"next\" href={props.children.nextSibling.url}>{props.children.nextSibling.title} →</a>}\n</nav>\n```\n\n(Swap the two if you want \"previous\" to mean the newer post.) A sibling can be a grouping node with no `url` — check for it if a section mixes leaf pages and subdirectories. Like `childPages` and `name`, these three are tool-owned: an export of the same name is overridden.\n\n## Custom components\n\nAny module can be used as a JSX tag. The runtime calls its `default(props)` and inlines the result.\n\n## Imports\n\nAn MDX file can import other `.md`, `.mdx`, `.js`, and `.html` files. Specs use file paths *with* extensions, either relative to the importing file or absolute-from-`TOP_DIR` (leading `/`):\n\n```mdx\nimport About from './about.mdx';\nimport { greet } from './lib/util.js';\nimport Card from '/components/card.mdx';\n```\n\nAbsolute imports are rooted at `TOP_DIR`, not `INPUT_DIR`, so shared components and helpers can live alongside (rather than inside) the pages tree.\n\n**Default import asymmetry.** `import X from spec`:\n\n- For `.md`/`.mdx` (and `.html` pages), `X` is the *whole module object* (same shape as a `childPages` entry). Use `X` as a JSX tag, read frontmatter as `X.title`, etc.\n- For `.js`, `X` is the module's ESM `default` export — standard JS semantics.\n\nNamed (`import { a, b } from ...`) and namespace (`import * as X from ...`) imports work for both, with the obvious meaning.\n\n**Cycles are allowed.** Two `.mdx` files can import each other. During compile, an importer may briefly see a partially-initialized module — but by the time anything renders, every module on the cycle is fully populated, so component references resolve correctly.\n\n**`.js` files are evaluated by Node's normal `import()`**, so they can use npm packages, Node built-ins, and relative `.js` imports of their own. They cannot import `.md`/`.mdx` (Node doesn't know how to load those). In `watch`/`serve`, editing an imported `.js` triggers a rebuild that picks up the change. (A `.js` that itself imports another `.js` is the one exception: edits to that nested file won't reload on their own — save the directly-imported `.js` to force it.)\n\nImports with bare specifiers (`import x from 'react'`), unknown extensions, or paths that escape `INPUT_DIR` are not formally supported and may fail or behave unexpectedly.\n\n## Asset references\n\nPlain HTML tags that point at a file get their reference auto-processed at build time. The referenced file is read, content-hashed, and either inlined as a `data:` URL, written alongside the page that uses it, or written to a shared `OUTPUT_DIR/_assets/<hash>.<ext>` — with the rendered URL rewritten to match. This works without any explicit `<Image>`/`<Style>` builtin; markdown's `![alt](src)` (which lowers to `<img>`) is covered too.\n\n```mdx\n![Sunset](./hero.jpg)\n<img src=\"./icon.svg\" alt=\"\" />\n<link rel=\"stylesheet\" href=\"/css/site.css\" />\n<link rel=\"icon\" href=\"/favicon.png\" />\n<script src=\"./main.js\"></script>\n<video src=\"./clip.mp4\" poster=\"./clip-poster.jpg\" />\n```\n\nThe whitelisted (tag, attribute) pairs are:\n\n- `img.src`, `script.src`, `source.src`, `audio.src`, `video.src`, `video.poster`\n- `link.href` — only when `rel` is `stylesheet`, `icon`, `shortcut`, `apple-touch-icon`(`-precomposed`), `mask-icon`, `preload`, `prefetch`, `modulepreload`, or `manifest`. Other rels (`canonical`, `alternate`, …) are left untouched since their hrefs aren't file references.\n- `a.href`, `area.href` — see [Linking between pages](#linking-between-pages) below.\n- In [`.html` pages](#html-pages) only: every `url(...)` inside a `<style>` element or a `style=\"\"` attribute. (In `.md`/`.mdx`, use [`<Style>`](#stylesheets) or a `<link rel=\"stylesheet\">` to a `.css` file; `url()` inside a literal `<style>` block there isn't rewritten.)\n\nValues that aren't files — anything with a URL scheme (`data:`, `http(s):`, `mailto:`, `tel:`, `javascript:`, …), `//`, `#`, and empty strings — pass through verbatim, so a `<link rel=\"stylesheet\" href=\"https://…\">` to a CDN is unchanged. Dynamic values like `<img src={x}>` are wrapped at runtime, so the same passthrough applies after evaluation.\n\nPath resolution matches `<Image>`/`<Style>`/`readfile`: a leading `/` is rooted at `TOP_DIR`; everything else is relative to the importing file's directory. A trailing `?query` or `#fragment` is split off before resolving and re-attached to the rewritten URL.\n\n### Linking between pages\n\n`<a href>` and `<area href>` are processed the same way, but with one extra rule: **if the target resolves to another page's source file (a `.md`/`.mdx` in the build), the link is rewritten to that page's rendered output URL instead of copying the file.** This lets you link by the source path — just like `import` and `readfile` — and have it translated to the right output location automatically:\n\n```mdx\n[About](./about.md)            <!-- → <a href=\"about/\">About</a> -->\n<a href=\"/pages/blog/intro.md#setup\">Setup</a>\n```\n\nBecause each page renders to its own `dir/index.html`, the input→output path differs: a link from `a.md` to its source sibling `./b.md` comes out as `../b/` (both pages now live one directory deep). Targets are linked to the directory (clean URL, e.g. `about/`); a page that overrides its location with `outputPath` (e.g. `/feed.xml`) is linked to that exact file. Fragments and queries are preserved (`about/#setup`).\n\nA link to a **directory** (`./docs/`, `../`, or `/pages/docs` — the trailing slash is optional) stands for the index page inside it: `docs/index.md`, `docs/index.mdx`, or `docs/index.html`, whichever exists. So `<a href=\"docs/\">` in `pages/index.html` comes out as `docs/`, verified at build time. A directory with no index page is an error (link to a file inside it instead).\n\nA target inside a [verbatim directory](#verbatim-directories) is linked at its copied location, literal filename kept (an `index.html` there is shortened to its directory, and a directory link resolves to it). A relative or `/`-rooted href that points at any other **non-page** file (`./report.pdf`, `./photo.jpg`, …) falls through to the normal asset pipeline — it's content-hashed and copied/inlined like any other asset. Markdown link syntax `[text](./about.md)` (which lowers to `<a>`) is covered too. Passthrough values (any scheme like `mailto:`, `tel:`, `javascript:`, `http(s):`, plus `#anchor`, …) are left untouched.\n\nWhen you already hold a page *module* rather than a path string — e.g. iterating `childPages` — link it through its [`url` property](#the-module-tree) (`<a href={p.url}>`) instead. It produces the same rewritten output URL.\n\n**Placement chooser.** For each referenced file:\n\n1. ≤ **4096 bytes** → inlined as a `data:` URL.\n2. Used by exactly one page, *and* the source sits inside that page's output directory → co-located (copied alongside the page, mirroring its position under `INPUT_DIR` — so `pages/foo/big.png` lands at `OUTPUT_DIR/foo/big.png`; a file outside `INPUT_DIR` can never be co-located).\n3. Otherwise → shared at `OUTPUT_DIR/_assets/<hash>.<ext>`.\n\nThe inline threshold is configurable project-wide via `package.json` `xtatic.assetInlineThreshold`. Shared assets share `_assets/` with `<Image>`/`<Style>`/`<Font>` output and are content-addressed, so the same file referenced from many pages (or many tags) writes once. All rendered URLs are page-relative, so the site works served from any subpath.\n\nOverride the chooser per call with `data-xtatic-placement`:\n\n```mdx\n<img src=\"./tiny.png\" alt=\"\" data-xtatic-placement=\"shared\" />\n<img src=\"./huge.jpg\" alt=\"\" data-xtatic-placement=\"inline\" />\n```\n\nValid values are `\"auto\"` (default), `\"inline\"`, `\"shared\"`, and `\"co-located\"`. The attribute is stripped from the output. Requesting `co-located` for a file whose source isn't at-or-below a consuming page's output directory is a build error.\n\n**Inlined stylesheets.** When a `<link rel=\"stylesheet\" href=\"…\">` resolves to an inlined `.css` file, the whole `<link>` is replaced with a `<style>` block (rather than a `data:text/css` URL), and the CSS's own `url(...)` references are rewritten through the same pass as `<Style>`. Attributes other than `rel`/`href` (`media`, `nonce`, `class`, …) carry over. A `.css` file referenced from a non-stylesheet rel (e.g. `rel=\"preload\" as=\"style\"`) still gets the regular `data:` treatment.\n\n**When to reach for the explicit builtins instead.** `<img>` ships the source file as-is, so use [`<Image>`](#image) when you want sharp-driven resizing, format conversion, or dimension stamping. `<link rel=\"stylesheet\">` rewrites `url(...)` references but doesn't get you anything else `<Style>` does — they're broadly equivalent for hand-written CSS.\n\n## Builtins\n\nA small set of helpers ship with xtatic. Like Node's `node:*` modules, they're exposed under an `xtatic:` scheme and must be imported explicitly:\n\n```mdx\nimport {html, readfile} from 'xtatic:builtins';\n\n{html('<!DOCTYPE html>')}\n\n<pre>{readfile('./snippet.txt')}</pre>\n```\n\nAvailable named exports:\n\n- `html(s)` — wrap a string so the JSX runtime emits it raw, without HTML-escaping. Useful for doctypes, inline SVG, or any time you've already got trusted markup.\n- `readfile(spec)` — synchronously read a file as UTF-8 at build time. Specs starting with `/` resolve against `TOP_DIR`; everything else resolves against the importing file's directory. Throws a clear error if the file is missing.\n- `asset(value, opts?)` — the same function the auto-processing wires onto whitelisted attributes (see [Asset references](#asset-references)). Call it directly for attributes/expressions the whitelist doesn't cover — e.g. `<a href={asset('./report.pdf')}>`. `opts.placement` (`\"auto\"`/`\"inline\"`/`\"shared\"`/`\"co-located\"`) overrides the chooser. Returns a rewritten URL (a deferred token resolved at the end of the build).\n\nTo link to another *page*, you don't need a builtin — read its [`url` property](#the-module-tree) (`<a href={p.url}>`), which goes through the same machinery.\n\nImporting from `xtatic:builtins` works identically in `.md`, `.mdx`, and `.jsx` files. Names you don't import don't shadow anything, so you're free to define a local `html` or `readfile` of your own.\n\n### `<Image>`\n\n`xtatic:image` exports a build-time image component. It reads a source image, processes it with [sharp](https://sharp.pixelplumbing.com/), and emits an `<img>` tag whose `src` is either a `data:` URL (for small outputs) or a content-addressed file under `OUTPUT_DIR/_assets/`.\n\n```mdx\nimport {Image} from 'xtatic:image';\n\n<Image src=\"./hero.jpg\" alt=\"Sunset over the bay\" width={1200} />\n```\n\n`sharp` is an optional peer dep — install it with `npm install sharp` when you first use `<Image>`. The component is loaded lazily, so projects that don't use it don't pay the install cost.\n\n**Props specific to `<Image>`:**\n\n- `src` (required) — path to the source image. Same resolution rules as `readfile`: `/foo` is rooted at `TOP_DIR`, anything else is relative to the importing file.\n- `alt` (required) — accessible text. Use `alt=\"\"` for purely decorative images. A missing `alt` is a build error.\n- `width`, `height` — pixel dimensions to resize to. If only one is given, aspect ratio is preserved. Sharp's `withoutEnlargement` is on, so a small source won't be upscaled.\n- `format` — `'avif'` (default), `'webp'`, `'jpeg'`, `'png'`. SVG sources are passed through unchanged; specifying a format on an SVG is an error.\n- `quality` — encoder quality (sharp's per-format defaults if unset).\n- `fit` — sharp fit mode: `'cover' | 'contain' | 'fill' | 'inside' | 'outside'`. Default `'inside'`.\n- `inlineThreshold` — bytes. Outputs at or below this size are inlined as `data:` URLs; outputs above it are written to `OUTPUT_DIR/_assets/<hash>.<ext>` and referenced by a page-relative URL. Defaults to **8192 bytes**, configurable project-wide via `package.json` `xtatic.imageInlineThreshold`.\n\n**Behavior baked in by default:**\n\n- EXIF rotation is auto-applied; all other metadata is stripped (privacy + bytes).\n- Output `width` and `height` attributes are always emitted, computed from the *processed* image, so the browser doesn't reflow on load.\n- Identical `(src, processing-options)` deduplicates to a single asset file across the whole site.\n\nAny extra props (`className`, `loading`, `decoding`, `id`, `data-*`, etc.) pass through to the rendered `<img>`. `className` is rewritten to `class`. Shared assets live under `OUTPUT_DIR/_assets/` but are referenced by a URL relative to each page, so the site works served from the domain root or any subpath.\n\nSingle-output-per-call only for now — `<picture>`/`srcset` for responsive images is a planned follow-up. There's no build cache yet either, so sharp re-runs on every build.\n\n### `<Style>`\n\n`xtatic:style` exports a build-time stylesheet component. It reads a CSS file, rewrites any `url(...)` references to point at hashed copies of the referenced assets, and emits either a `<style>` block (for small CSS) or a `<link rel=\"stylesheet\">` pointing at a content-addressed file under `OUTPUT_DIR/_assets/`.\n\n```mdx\nimport {Style} from 'xtatic:style';\n\n<Style src=\"/css/main.css\" />\n```\n\n**Props:**\n\n- `src` (required) — path to the source CSS file. Same resolution rules as `<Image>`: `/foo` is rooted at `TOP_DIR`, anything else is relative to the importing file.\n- `inlineThreshold` — bytes. CSS at or below this size is emitted inline as `<style>...</style>`; above, it goes to `OUTPUT_DIR/_assets/<hash>.css` and the call site gets a `<link>` instead. Defaults to **2048 bytes**, configurable project-wide via `package.json` `xtatic.styleInlineThreshold`.\n\n**`url()` rewriting.** Any `url(...)` token inside the CSS — `background-image`, `@font-face src`, `cursor`, etc. — is resolved relative to the source CSS file's directory (or against `TOP_DIR` for `/`-rooted paths), the referenced bytes are hashed, copied under `OUTPUT_DIR/_assets/`, and the URL is rewritten to point there by a path relative to wherever the CSS ends up (inlined into the page, a shared `.css`, or co-located). URLs starting with `data:`, `http://`, `https://`, `//`, or `#` (SVG fragment refs like `clip-path: url(#mask)`) are passed through unchanged. Identical references across multiple CSS files share a single asset file.\n\nAny extra props (`media`, `nonce`, `crossorigin`, `id`, `data-*`, etc.) pass through to the rendered `<style>` or `<link>`. `className` is rewritten to `class`.\n\n**Caveats:** `@import \"...\"` (the bare-string form) is not rewritten — only `url(...)` tokens are. SCSS / minification / autoprefixing are not built in; pre-compile to CSS yourself for now (a transform hook is on the roadmap).\n\n### `<Font>`\n\n`xtatic:font` exports a build-time `@font-face` component meant for `<head>`. Each call expands to a `<style>` with one `@font-face` rule (and an optional `<link rel=\"preload\">`) pointing at a content-addressed copy of the font under `OUTPUT_DIR/_assets/`.\n\n```mdx\nimport {Font} from 'xtatic:font';\n\n<Font src=\"./fonts/Inter-Regular.ttf\" family=\"Inter\" weight={400} />\n<Font src=\"./fonts/Inter-Bold.ttf\"    family=\"Inter\" weight={700} />\n<Font src=\"./fonts/Inter-Italic.ttf\"  family=\"Inter\" weight={400} style=\"italic\" display=\"swap\" preload />\n<Font src=\"./fonts/Logotype.otf\"      family=\"Logotype\" text=\"xtatic\" preload />\n```\n\n`.ttf` and `.otf` sources are transcoded to WOFF2 at build time via [wawoff2](https://github.com/fontello/wawoff2.js); `.woff` and `.woff2` sources are emitted verbatim. `wawoff2` is an optional peer dep — install it with `npm install wawoff2` the first time you use a `.ttf`/`.otf` source.\n\n**Subsetting.** Pass `text=\"…\"` and the font is reduced to just the glyphs needed to render those characters before being emitted (always as WOFF2, whatever the input format). This is aimed at the small-fixed-text case — a logotype, a heading face, an icon set — where shipping a full Unicode face would be wasteful; a few-glyph subset of a typical text font is commonly a 10–100× size reduction. Subsetting is done via [subset-font](https://github.com/papandreou/subset-font) (HarfBuzz), an optional peer dep — `npm install subset-font` the first time you use `text=` (or [auto-subsetting](#auto-subsetting), below). Two `<Font src>`s pointing at the same file with the same set of characters (order and duplicates don't matter) dedupe to one asset; different character sets, or a subsetted vs. non-subsetted reference, are separate assets.\n\nFor the common case where the glyphs you need aren't a fixed string but \"whatever my pages actually render,\" skip `text=` and turn on [auto-subsetting](#auto-subsetting) — xtatic figures the set out from the rendered HTML and the CSS reaching each page, then ships a tight subset (and optionally a lazy-loaded complement so anything missed never tofus).\n\n**Props:**\n\n- `src` (required) — path to a `.ttf`, `.otf`, `.woff`, or `.woff2` file. Same resolution rules as `<Image>`/`<Style>`.\n- `family` (required) — the CSS `font-family` value. Quoted in the output and CSS-escaped.\n- `weight` — number or string (e.g. `400`, `\"100 900\"` for variable fonts). Omitted when absent (browser defaults to `normal`).\n- `style` — `\"normal\" | \"italic\" | \"oblique\"`. Omitted when absent.\n- `display` — `\"auto\" | \"block\" | \"swap\" | \"fallback\" | \"optional\"`. Omitted when absent (browser default = `auto`; `<Font>` does not impose `swap`).\n- `unicodeRange` — string passed through to `unicode-range:` verbatim.\n- `text` — when set (a non-empty string), subset the font to the characters in this string (see above). Output is WOFF2 regardless of source format. Always wins over auto-subsetting on the same call.\n- `subset` — boolean. Per-call opt-in/out for [auto-subsetting](#auto-subsetting). `subset={true}` opts this one font in even without the global flag; `subset={false}` opts it out when the global flag is on. Has no effect if `text=` is also set.\n- `preload` — boolean (default `false`). When set, a `<link rel=\"preload\" as=\"font\" type=\"font/woff2\" href=\"…\" crossorigin>` is emitted just before the `<style>` block.\n\nIdentical `src` files dedupe to a single asset across the whole site, regardless of how many `<Font>` calls reference them (modulo `text` — see above). Asset URLs are page-relative (the `@font-face src:` and any `<link rel=preload>` point at `_assets/` relative to the page), so the site can be served from any path.\n\n`<Font>` rejects unknown props (no silent pass-through) — if you need to customize the emitted `<style>` or `<link>` further, write the markup by hand.\n\n**Note on `<Style>` interaction:** writing your own `@font-face { src: url('./x.ttf') }` inside a `<Style>`-loaded CSS file no longer auto-transcodes the TTF to WOFF2 — the CSS path emits the file as-is now. Use `<Font>` for the transcode behavior.\n\n### Auto-subsetting\n\nSet `xtatic.fontSubset` in `package.json` and every `<Font>` in the build is reduced to just the glyphs that actually appear on a page using that face — no `text=` needed. Per-page text is computed from the rendered HTML; for `mode: 'css-static'` (the default) the CSS reaching each page is parsed too, so the cascade decides which `@font-face` each text run resolves to.\n\nThe simplest form turns it on with safe defaults:\n\n```json\n{\n  \"xtatic\": {\n    \"fontSubset\": true\n  }\n}\n```\n\nEquivalent to `{ \"mode\": \"css-static\", \"precision\": \"face\", \"scope\": \"site\", \"hedge\": \"full\", \"preloadHedge\": false }`. Per-call `<Font subset={false}>` opts a single font out; `<Font subset={true}>` opts a single font in when the global flag isn't set.\n\nPass an object instead for explicit control over the five knobs:\n\n| Key | Values | What it does |\n| --- | --- | --- |\n| `mode` | `'css-static'` (default), `'all-text'` | `'css-static'` parses the CSS that reaches each page and attributes glyphs by the cascade. `'all-text'` skips CSS and just unions the rendered text — every font gets the same glyph set. Cheaper, no parse5/css-tree work, over-includes a touch but never under-includes for literal text. |\n| `precision` | `'face'` (default), `'family'` | Only meaningful in `css-static`. `'face'` keys glyph sets by `(family, weight, style)` so regular and bold get distinct subsets. `'family'` collapses all weights/styles of one family into one subset (fewer assets, slightly larger each). |\n| `scope` | `'site'` (default), `'page'` | `'site'` ships one subset per face for the whole build — fewer files, cross-page HTTP-cache reuse. `'page'` issues one subset per `(face, page)` — minimal first-paint bytes per page, but the same `<Font>` call in a layout produces a different asset URL on each page it renders into. |\n| `hedge` | `'none'`, `'latin1'`, `'full'` | The hedge against missed glyphs. `'full'` emits a *second* `@font-face` per call carrying the rest of the source font's coverage with a disjoint `unicode-range`; the browser only fetches it on demand for any character outside the primary set. `'latin1'` caps the complement at U+00FF. `'none'` ships only the primary subset (under-include = silent tofu). The boolean `fontSubset: true` form defaults to `'full'`; the explicit-object form defaults to `'none'` (treat the explicit form as \"I'm being deliberate\"). |\n| `preloadHedge` | `false` (default), `'prefetch'`, `'preload'` | When the complement face is emitted (`hedge` ≠ `'none'`), optionally also emit a `<link>` for it. By default the complement is fetched lazily only when the browser actually hits an out-of-primary code point — zero perf cost on the common path. |\n\nAuto-subsetting needs three extra dependencies (all hard, already installed): [parse5](https://github.com/inikulin/parse5) for HTML, [css-tree](https://github.com/csstree/csstree) for CSS, and [fontkit](https://github.com/foliojs/fontkit) for source-font glyph enumeration. Subsetting itself still goes through `subset-font` (the optional peer dep above), so the first auto-subsetted build prompts for `npm install subset-font` unless you've enabled `autoInstall`.\n\n**Known gaps in v1:**\n\n- `::before` / `::after` `content:` is not extracted yet, so an icon font driven entirely by `content: \"\\f001\"` won't have those code points attributed by the cascade. With `hedge: 'full'` the icons still ship in the complement subset (the failure mode is byte-bloat, not tofu); without hedge, set `text=` on the call to list them explicitly.\n- `font-weight: bolder` / `lighter` round to fixed steps rather than walking the spec's relative-table.\n- Pseudo-classes like `:hover`, `:focus`, `:nth-child(...)`, `:not(...)` evaluate as always-true so weight/style overrides applied only in those states still contribute glyphs (over-includes a touch, never under-includes).\n- A face that no rule attributes any glyphs to falls back to transcode-only (the whole font ships) rather than emitting a zero-glyph subset — keeps the failure mode safe.\n\n## Auto-installing optional peer deps\n\n`<Image>`, `<Font>`, and font subsetting each need an optional peer dependency (`sharp`, `wawoff2`, `subset-font`). By default a missing one is a build error suggesting `npm install <pkg>`. Set `xtatic.autoInstall` in `package.json` to flip that to on-the-fly installation:\n\n```json\n{\n  \"xtatic\": {\n    \"autoInstall\": true\n  }\n}\n```\n\nWhen enabled, the first time a build needs a missing peer dep, xtatic shells out to `npm install --save-dev <pkg>` in `TOP_DIR` and then retries the import. Subsequent rebuilds in the same process reuse the installed module. Defaults to `false`. `xtatic init` enables this flag.\n\n## Lint\n\n`xtatic` runs ESLint over your `.md`/`.mdx`/`.jsx`/`.js` files automatically before each build, with an opinionated zero-config baseline focused on catching import bugs early — typo'd named imports, missing files, default-vs-named confusion on the `xtatic:*` builtins. A lint failure exits 1 with the formatted ESLint output before any HTML is written.\n\n**What's checked:**\n\n- `import/no-unresolved` — flags imports of files that don't exist on disk. Leading-`/` specs in `.md`/`.mdx`/`.jsx` are resolved against `TOP_DIR` (matching the build), so `import Card from '/components/card.mdx'` checks correctly rather than being mistaken for a filesystem-absolute path.\n- `import/named` — flags `import {Foo}` when `Foo` isn't actually exported.\n- `import/no-duplicates` — flags two `import` statements for the same module.\n- `xtatic/builtin-imports` — flags default imports, namespace imports, and unknown export names against `xtatic:builtins`/`xtatic:image`/`xtatic:style`/`xtatic:font`. Errors carry the suggested fix (e.g. *\"`xtatic:style` has no default export. Use `import {Style} from 'xtatic:style'` instead.\"*).\n- `import/default` and `no-undef` — applied to `.js`/`.jsx` only. Off for `.md`/`.mdx` because xtatic's default-import semantics there bind the whole module object rather than `mm.default` (a deliberate divergence from ESM).\n\nParse errors print a source-code frame pointing at the offending spot. When color is available (a TTY, or the dev server's browser error page), the bad characters are highlighted inline on the source line; otherwise (piped output, CI) a `^` caret is drawn on the line below. Long lines are windowed around the error — clipped to **120 columns** with `…` markers — so the highlight stays on screen instead of scrolling off. Set `xtatic.codeFrameWidth` in `package.json` to change that width, or `0` to disable windowing and always show the full line:\n\nThe same code frame is shown for **render-time** errors. When a `<Component/>`, an imported page, or an asset (`<img>`, `<Image>`, `<Font>`, `<a href>`, …) fails during the build, xtatic prints a trace of the page → layout → component chain that led there, and under each call site that has a known location it shows the offending source line:\n\n```\n<Image>: source not found at /site/layouts/missing.png\n\n  in <Image> at layouts/base.mdx:5:1\n      4 | <html><body>\n    > 5 | <Image src='./missing.png' alt='x' />\n        | ^\n      6 | {props.children}\n  in layout layouts/base.mdx\n  while building page /\n```\n\nA third category: if a top-level `export` (or `{}` expression) throws while the module body runs — e.g. `export const x = compute()` where `compute()` is imported from a `.js` file and raises — the error is reported as `Failed to evaluate \"<file>\": <message>` (distinct from a `Failed to compile` syntax error) and is followed by the throwing call's stack frame, so it points at the actual source of the throw (e.g. `at compute (lib.js:2:9)`) rather than just naming the page.\n\n```json\n{\n  \"xtatic\": {\n    \"codeFrameWidth\": 80\n  }\n}\n```\n\nThe lint rule set itself is currently frozen — no user override knob yet; that's a planned follow-up. `eslint`, `eslint-plugin-import`, and `eslint-plugin-mdx` are hard runtime dependencies, so there's nothing to install.\n\n## Limitations\n\n- No client-side runtime, hydration, or watch mode.\n- `style` prop accepts strings only.\n- Components must be synchronous.\n- Path handling assumes POSIX separators.\n- `.js` files cannot import `.md`/`.mdx` (Node has no loader for those).\n- Auto-subsetting (`<Font>`) doesn't see `::before`/`::after` `content:` glyphs; rely on `hedge: 'full'` (default for `fontSubset: true`) or set `text=` explicitly for icon fonts.\n\n## Tests\n\n```sh\nnpm test\n```\n\nTests use Node's built-in `node:test` runner. Most tests inject `memfs` and never touch disk; tests that need `.js` imports (and one no-injection smoke test) write to a `./test-tmp/` scratch directory at the repo root, which is gitignored and wiped at the start of each run.\n","readmeFilename":"README.md"}