{"_id":"safe-mdx","_rev":"44-fc62253a691376fda766815badffd7b4","name":"safe-mdx","dist-tags":{"latest":"1.14.0"},"versions":{"0.0.0":{"name":"safe-mdx","version":"0.0.0","keywords":["mdx"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@0.0.0","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"dist":{"shasum":"a6f913f20078f1f4b6ba0c619260db328c96d8f0","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-0.0.0.tgz","fileCount":7,"integrity":"sha512-gug1rYsR8te7fGhvNGmLvRAY1E+PMADltY8ohdfzLi94CJQwiTqIm4UgIYhBA4bImdLh6Z65WmAX2cYNtcYDQg==","signatures":[{"sig":"MEYCIQCvjhXv0/scIv7tHrEek71dyQ1OAMsztyEAHa/AV7Z6CAIhAPz3PpfAmAb8sx8KedMHzQRDROwzoCeZKDH70YT3NBVZ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":43620},"main":"dist/safe-mdx.js","types":"dist/safe-mdx.d.ts","private":false,"scripts":{"build":"tsc","prepublishOnly":"pnpm build"},"_npmUser":{"name":"xmorse","email":"beats.by.morse@gmail.com"},"_npmVersion":"9.8.1","description":"Render MDX in React without eval","directories":{},"_nodeVersion":"18.18.2","dependencies":{"mdast":"^3.0.0","remark":"^15.0.1","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","remark-frontmatter":"^5.0.0","html-to-jsx-transform":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.2.0","@types/node":"^20.10.0","@types/mdast":"^4.0.3","@types/react":"18.2.15","mdast-util-mdx-jsx":"^3.0.0"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_0.0.0_1701104107644_0.49811606348355464","host":"s3://npm-registry-packages"}},"0.0.1":{"name":"safe-mdx","version":"0.0.1","keywords":["mdx"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@0.0.1","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx#readme","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"39b9883367720e2d93bf6243b98e628ef3c15487","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-0.0.1.tgz","fileCount":17,"integrity":"sha512-/62LxJnKCZEUt6ZHCQv2fNBEpSeMO7h86O+Kovuz4j6+Qpu9lmsaj0D6qapJJjbWnxlrpx9D71IaB73GMlNrnA==","signatures":[{"sig":"MEUCIQDlI6IsJubDga399ctdcsYY7DrQQQs5TiiCOlOGflUzXQIgTHKmTuVzVB2m51iQG4lZSCglccbQz0x4VzBX2xjqD7A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":145838},"main":"dist/safe-mdx.js","types":"dist/safe-mdx.d.ts","private":false,"scripts":{"build":"tsc","prepublishOnly":"pnpm build"},"_npmUser":{"name":"xmorse","email":"beats.by.morse@gmail.com"},"repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"9.8.1","description":"Render MDX in React without eval","directories":{},"_nodeVersion":"18.18.2","dependencies":{"mdast":"^3.0.0","remark":"^15.0.1","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","remark-frontmatter":"^5.0.0","html-to-jsx-transform":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.2.0","dedent":"^1.2.0","@types/node":"^20.10.0","@types/mdast":"^4.0.3","@types/react":"18.2.15","mdast-util-mdx-jsx":"^3.0.0"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_0.0.1_1701167704503_0.8197452232306615","host":"s3://npm-registry-packages"}},"0.0.2":{"name":"safe-mdx","version":"0.0.2","keywords":["mdx"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@0.0.2","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx#readme","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"86cec67189058b8f56226bedff98e5115f1b60d6","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-0.0.2.tgz","fileCount":17,"integrity":"sha512-ucmw3FjSjkoNKh2fB6p4sAmGm2uhVWqnlNaGk5FUFAAp4xeX/ImWaFlQPkF72MisYpFUUnKm5kjA6NUSWitIdw==","signatures":[{"sig":"MEQCIEu9r1p9/7ub8sFpKntDclJsZsdxh+gwHqwKntbn2KKQAiBHQWE4tQ0oRbtSC56bujPHh8P1IPNY+XYVeG0yeosSTQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":144534},"main":"dist/safe-mdx.js","types":"dist/safe-mdx.d.ts","private":false,"scripts":{"build":"tsc","prepublishOnly":"pnpm build"},"_npmUser":{"name":"xmorse","email":"beats.by.morse@gmail.com"},"repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"9.8.1","description":"Render MDX in React without eval","directories":{},"_nodeVersion":"18.18.2","dependencies":{"mdast":"^3.0.0","remark":"^15.0.1","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","remark-frontmatter":"^5.0.0","html-to-jsx-transform":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.2.0","dedent":"^1.2.0","@types/node":"^20.10.0","@types/mdast":"^4.0.3","@types/react":"18.2.15","mdast-util-mdx-jsx":"^3.0.0"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_0.0.2_1701627078062_0.3131826225574377","host":"s3://npm-registry-packages"}},"0.0.3":{"name":"safe-mdx","version":"0.0.3","keywords":["mdx"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@0.0.3","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx#readme","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"89546ec6bfe6a46974e78062c739ba0cbcf691bc","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-0.0.3.tgz","fileCount":17,"integrity":"sha512-lnGKfFJeSpHZlHz5S6JHdbZmdUci8G6v7fb7GaiqJElY63JpxiuEa1YmD0RWpt0cPXPVHAePZKkb0AuO4SZoAQ==","signatures":[{"sig":"MEUCICex/bCQmTDeMKv+lmk3q65NjchEFTQ2OZ7cEyEQiOtdAiEA2LGLXYSfgYYmW+B+VGhIFt+vH3wP08b0M9pYjnxtsAI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":148765},"type":"module","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./src/*":"./src/*.ts","./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest","build":"tsc","prepublishOnly":"pnpm build"},"_npmUser":{"name":"xmorse","email":"beats.by.morse@gmail.com"},"repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"10.2.3","description":"Render MDX in React without eval","directories":{},"_nodeVersion":"18.19.0","dependencies":{"mdast":"^3.0.0","remark":"^15.0.1","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","remark-frontmatter":"^5.0.0","html-to-jsx-transform":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.2.0","dedent":"^1.2.0","@types/node":"^20.10.0","@types/mdast":"^4.0.3","@types/react":"18.2.15","mdast-util-mdx-jsx":"^3.0.0"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_0.0.3_1702063846006_0.7615918413475973","host":"s3://npm-registry-packages"}},"0.0.4":{"name":"safe-mdx","version":"0.0.4","keywords":["mdx"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@0.0.4","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx#readme","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"e926057bc39562b136bcc98b1f2fa29204bdbae5","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-0.0.4.tgz","fileCount":17,"integrity":"sha512-CQksBQpeF94N0Kd0Pcp+0X3/HGKkCpnns/s+AVUpOYI6SxK7K6pkje8S6FInTm2bmxM/HD5RiL32QnMJkZyj6w==","signatures":[{"sig":"MEQCIFirz4gY+caA410vsIauCQFi5QS3M67UcqIKcXBU0vnpAiBkk4JWEQqTnWvs1ca6E6xflhvuDA/g+0jZEiUaqpOwjg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":181196},"type":"module","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./src":"./src/index.ts","./src/*":"./src/*.ts","./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest","build":"tsc","prepublishOnly":"pnpm build"},"_npmUser":{"name":"xmorse","email":"beats.by.morse@gmail.com"},"repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"10.2.4","description":"Render MDX in React without eval","directories":{},"_nodeVersion":"20.11.0","dependencies":{"mdast":"^3.0.0","remark":"^15.0.1","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","remark-frontmatter":"^5.0.0","html-to-jsx-transform":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.2.0","dedent":"^1.2.0","react-dom":"^18.2.0","@types/node":"^20.10.0","@types/mdast":"^4.0.3","@types/react":"18.2.15","@types/react-dom":"^18.2.18","mdast-util-mdx-jsx":"^3.0.0"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_0.0.4_1706263083115_0.8005444640359567","host":"s3://npm-registry-packages"}},"0.0.5":{"name":"safe-mdx","version":"0.0.5","keywords":["mdx"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@0.0.5","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx#readme","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"a8039c4ad740d2af1530a7924a19f9a472ce3b1f","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-0.0.5.tgz","fileCount":12,"integrity":"sha512-8XHKFW7mMKurWvOhBHNO01/jHyVxRomZzCsAR/8CUNucdU5xWFZkIpI4IS+YEbmmj1KIFcLOkM+JN4KELbg5hA==","signatures":[{"sig":"MEYCIQCd+vbD2OAm9uHW+t44AHo8lZRyQC8IVEpCRWuzaeb/kQIhAOm6Exa1cim8y9OuR9BLBrlYD/nBf+JweeUJiEgw+U2F","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":182928},"type":"module","_from":"file:safe-mdx-0.0.5.tgz","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./src/*":"./src/*.tsx","./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest run --coverage","build":"tsc"},"_npmUser":{"name":"xmorse","email":"beats.by.morse@gmail.com"},"_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/2a7dcc3670a2d31327cb5227f36d8848/safe-mdx-0.0.5.tgz","_integrity":"sha512-8XHKFW7mMKurWvOhBHNO01/jHyVxRomZzCsAR/8CUNucdU5xWFZkIpI4IS+YEbmmj1KIFcLOkM+JN4KELbg5hA==","repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"10.9.0","description":"Render MDX in React without eval","directories":{},"_nodeVersion":"23.0.0","dependencies":{"remark":"^15.0.0","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","remark-frontmatter":"^5.0.0","html-to-jsx-transform":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","dedent":"^1.5.1","vitest":"^1.6.0","react-dom":"^18.3.1","typescript":"5.5.2","@types/node":"^20.0.0","@types/mdast":"^4.0.0","@types/react":"^18.3.11","@types/react-dom":"^18.0.0","mdast-util-mdx-jsx":"^3.0.0","@vitest/coverage-v8":"^1.0.0"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_0.0.5_1729160688857_0.8541589686775708","host":"s3://npm-registry-packages"}},"0.0.6":{"name":"safe-mdx","version":"0.0.6","keywords":["mdx"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@0.0.6","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx#readme","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"af1fc0f98c44d9f28ff60ca78fc09f99440c9da9","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-0.0.6.tgz","fileCount":17,"integrity":"sha512-DQoXfym/0b8MNTlk74UMOpoFQFAXBoictTlgkxpaG+CRpOjsOpNI/3qDM7NUn3OJjBN5/5whq9q8loidNYG5Xg==","signatures":[{"sig":"MEUCIFROQqLHPO8dJwuCSNIrVgyh0bz+BzlDdUuLgcB8ENluAiEAyOQLsuV3GXeiTcUYooaWUvADuVwc4deuBTPtKD2lSyU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":212285},"type":"module","_from":"file:safe-mdx-0.0.6.tgz","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./src/*":"./src/*.tsx","./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest","build":"tsc"},"_npmUser":{"name":"xmorse","email":"beats.by.morse@gmail.com"},"_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/861216e8fe9f9bfc6571187c0c0c4093/safe-mdx-0.0.6.tgz","_integrity":"sha512-DQoXfym/0b8MNTlk74UMOpoFQFAXBoictTlgkxpaG+CRpOjsOpNI/3qDM7NUn3OJjBN5/5whq9q8loidNYG5Xg==","repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"10.9.2","description":"Render MDX in React without eval","directories":{},"_nodeVersion":"18.20.5","dependencies":{"remark":"^15.0.1","unified":"^11.0.5","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","collapse-white-space":"^2.1.0","html-to-jsx-transform":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","dedent":"^1.5.1","vitest":"^3.1.1","react-dom":"^19.0.0","typescript":"5.5.2","@types/node":"^20.0.0","@types/mdast":"^4.0.0","@types/react":"^18.3.11","@types/react-dom":"^18.0.0","mdast-util-mdx-jsx":"^3.2.0","@vitest/coverage-v8":"^1.6.0"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_0.0.6_1744025157476_0.20817265938822738","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"safe-mdx","version":"0.1.0","keywords":["mdx"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@0.1.0","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx#readme","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"46c3e19897d9ba5b1f09622378e235eeaaff0bdd","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-0.1.0.tgz","fileCount":13,"integrity":"sha512-U0BW0kGNuVj69Lsj8LpqSaLQ9uNaD+jAM/JPY9HGUsapunL8dr+0tnS0wQPpj+dkNScAL4GJ3/ICQ2sigmnunw==","signatures":[{"sig":"MEYCIQCmsWfDVTcfStiPXZYv2pCqQjJu246fyVW6aPFS5XwyCQIhAO80vCdjZztqVjxqzBfpRDvuFQR1XNDXwf0kdkcy7QeP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":231157},"type":"module","_from":"file:safe-mdx-0.1.0.tgz","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./src/*":"./src/*.tsx","./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest","build":"tsc"},"_npmUser":{"name":"xmorse","email":"beats.by.morse@gmail.com"},"_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/a2b0287f763459c1c994eb490eef6575/safe-mdx-0.1.0.tgz","_integrity":"sha512-U0BW0kGNuVj69Lsj8LpqSaLQ9uNaD+jAM/JPY9HGUsapunL8dr+0tnS0wQPpj+dkNScAL4GJ3/ICQ2sigmnunw==","repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"10.9.2","description":"Render MDX in React without eval","directories":{},"_nodeVersion":"22.16.0","dependencies":{"remark":"^15.0.1","unified":"^11.0.5","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","collapse-white-space":"^2.1.0","html-to-jsx-transform":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.1.0","dedent":"^1.5.1","vitest":"^3.1.3","react-dom":"^19.1.0","typescript":"5.8.3","@types/node":"^22.15.17","@types/mdast":"^4.0.0","@types/react":"^19.1.3","@types/react-dom":"^19.1.3","mdast-util-mdx-jsx":"^3.2.0","@vitest/coverage-v8":"^1.6.0"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_0.1.0_1749329617382_0.4807921773899646","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"safe-mdx","version":"0.2.0","keywords":["mdx"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@0.2.0","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx#readme","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"d4f43f07d3ea3e1fc514e7d4d00d2e9f0191b456","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-0.2.0.tgz","fileCount":22,"integrity":"sha512-SmdW6UScEG7tgXV+SMQrbhh3PsiJ4+BlVr3HCvulfwpEg/3Anhj0R++soPxleltlgDyWhYV3Fi9qEyB2N9qVYA==","signatures":[{"sig":"MEUCICUBLC7d20ghDOYvOxURSJKBxGuLAgR/1EU0ZdJQEB76AiEAhPbopsOiFmcZFQf6b9hcbqZAz43v9ozZNjrEKBE2SJQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":242844},"type":"module","_from":"file:safe-mdx-0.2.0.tgz","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./src/*":"./src/*.tsx","./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest","build":"tsc"},"_npmUser":{"name":"xmorse","actor":{"name":"xmorse","type":"user","email":"beats.by.morse@gmail.com"},"email":"beats.by.morse@gmail.com"},"_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/46e7b35702a33c7f7f49610785fe177b/safe-mdx-0.2.0.tgz","_integrity":"sha512-SmdW6UScEG7tgXV+SMQrbhh3PsiJ4+BlVr3HCvulfwpEg/3Anhj0R++soPxleltlgDyWhYV3Fi9qEyB2N9qVYA==","repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"11.3.0","description":"Render MDX in React without eval","directories":{},"_nodeVersion":"24.2.0","dependencies":{"remark":"^15.0.1","unified":"^11.0.5","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","collapse-white-space":"^2.1.0","html-to-jsx-transform":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.1.0","dedent":"^1.5.1","vitest":"^3.1.3","react-dom":"^19.1.0","typescript":"5.8.3","@types/node":"^22.15.17","@types/mdast":"^4.0.0","@types/react":"^19.1.3","@types/react-dom":"^19.1.3","mdast-util-mdx-jsx":"^3.2.0","@vitest/coverage-v8":"^1.6.0"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_0.2.0_1750264563038_0.11737848021353314","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"safe-mdx","version":"0.3.0","keywords":["mdx"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@0.3.0","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx#readme","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"86e5c390cc7bbdc96fe57aab104970919e160308","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-0.3.0.tgz","fileCount":22,"integrity":"sha512-9VuXwVcm22BKtIjDyb7xZvCCt4aUiXNrLzcCVMlbH40dXzPpdAzxFDUz42/0IXOI6xmbxo4djBCSZw/DWAHJJw==","signatures":[{"sig":"MEQCIApZvOtU2W/Ntr2vq5BvobpwEf85rwQ9uuSL7S+3aAFmAiBup/ZKVykX3li57H3ZQjiWCJ6B3xFedqVpWRKR9gM2zQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":244131},"type":"module","_from":"file:safe-mdx-0.3.0.tgz","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./src/*":"./src/*.tsx","./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest","build":"tsc"},"_npmUser":{"name":"xmorse","actor":{"name":"xmorse","type":"user","email":"beats.by.morse@gmail.com"},"email":"beats.by.morse@gmail.com"},"_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/eeb134299029560ab487df00d7e6e95e/safe-mdx-0.3.0.tgz","_integrity":"sha512-9VuXwVcm22BKtIjDyb7xZvCCt4aUiXNrLzcCVMlbH40dXzPpdAzxFDUz42/0IXOI6xmbxo4djBCSZw/DWAHJJw==","repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"11.3.0","description":"Render MDX in React without eval","directories":{},"_nodeVersion":"24.2.0","dependencies":{"remark":"^15.0.1","unified":"^11.0.5","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","collapse-white-space":"^2.1.0","html-to-jsx-transform":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.1.0","dedent":"^1.5.1","vitest":"^3.1.3","react-dom":"^19.1.0","typescript":"5.8.3","@types/node":"^22.15.17","@types/mdast":"^4.0.0","@types/react":"^19.1.3","@types/react-dom":"^19.1.3","mdast-util-mdx-jsx":"^3.2.0","@vitest/coverage-v8":"^1.6.0"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_0.3.0_1750699654143_0.8826070289265955","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"safe-mdx","version":"0.3.1","keywords":["mdx"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@0.3.1","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx#readme","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"37952bb365bd0c192cdf6cbab0a340c839e18d29","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-0.3.1.tgz","fileCount":22,"integrity":"sha512-LIf+KqXQBJNTgelmnTWWfVU8Do2Utk6B9gAz31s+QZ6YKI0g1U8uubetjKbnYRaa31yScEYs+sWhi6W0nOaU1A==","signatures":[{"sig":"MEUCIA6ve/C84a76qjLpc9qs48BxeV+AmnxPCecfP6k4BDfeAiEAwFJWnSBfRqjk/oEq53yzF/wEdjyQP7idnJ42Xw2HCm4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":244353},"type":"module","_from":"file:safe-mdx-0.3.1.tgz","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./src/*":"./src/*.tsx","./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest","build":"tsc"},"_npmUser":{"name":"xmorse","actor":{"name":"xmorse","type":"user","email":"beats.by.morse@gmail.com"},"email":"beats.by.morse@gmail.com"},"_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/efabaed38547247499e12a0aa402254e/safe-mdx-0.3.1.tgz","_integrity":"sha512-LIf+KqXQBJNTgelmnTWWfVU8Do2Utk6B9gAz31s+QZ6YKI0g1U8uubetjKbnYRaa31yScEYs+sWhi6W0nOaU1A==","repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"11.3.0","description":"Render MDX in React without eval","directories":{},"_nodeVersion":"24.2.0","dependencies":{"remark":"^15.0.1","unified":"^11.0.5","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","collapse-white-space":"^2.1.0","html-to-jsx-transform":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.1.0","dedent":"^1.5.1","vitest":"^3.1.3","react-dom":"^19.1.0","typescript":"5.8.3","@types/node":"^22.15.17","@types/mdast":"^4.0.0","@types/react":"^19.1.3","@types/react-dom":"^19.1.3","mdast-util-mdx-jsx":"^3.2.0","@vitest/coverage-v8":"^1.6.0"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_0.3.1_1750700708586_0.0658417631076631","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"safe-mdx","version":"0.3.2","keywords":["mdx"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@0.3.2","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx#readme","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"23db105e2594daea341e1d74a11e31f8a5c32695","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-0.3.2.tgz","fileCount":22,"integrity":"sha512-YGSy2kaHC4op8Rxc6et9NjCjpBc5sDuuhRZZNpgLpfCdoSJmIHv2sVFES90jQEfq0lnXsAJ3I2g1yc8qk50g8g==","signatures":[{"sig":"MEUCIQCFVZBYPzhidHP9KMc1XUmGDTK0ua/5u3bSq2DkXIRZVwIgAqIQbvVGcTIYz8Hn/uB7SkTHnfknZh/4e3NKMd8MsGA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":244412},"type":"module","_from":"file:safe-mdx-0.3.2.tgz","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./src/*":"./src/*.tsx","./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest","build":"tsc"},"_npmUser":{"name":"xmorse","actor":{"name":"xmorse","type":"user","email":"beats.by.morse@gmail.com"},"email":"beats.by.morse@gmail.com"},"_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/a6b3b716bf8da22407f70aa863109939/safe-mdx-0.3.2.tgz","_integrity":"sha512-YGSy2kaHC4op8Rxc6et9NjCjpBc5sDuuhRZZNpgLpfCdoSJmIHv2sVFES90jQEfq0lnXsAJ3I2g1yc8qk50g8g==","repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"10.9.2","description":"Render MDX in React without eval","directories":{},"_nodeVersion":"22.16.0","dependencies":{"remark":"^15.0.1","unified":"^11.0.5","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","collapse-white-space":"^2.1.0","html-to-jsx-transform":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.1.0","dedent":"^1.5.1","vitest":"^3.1.3","react-dom":"^19.1.0","typescript":"5.8.3","@types/node":"^22.15.17","@types/mdast":"^4.0.0","@types/react":"^19.1.3","@types/react-dom":"^19.1.3","mdast-util-mdx-jsx":"^3.2.0","@vitest/coverage-v8":"^1.6.0"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_0.3.2_1750710574606_0.6085828401621958","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"safe-mdx","version":"1.0.0","keywords":["mdx"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@1.0.0","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx#readme","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"2d79737097af1a673f6c9e8193165d4d54b32042","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-1.0.0.tgz","fileCount":32,"integrity":"sha512-7AhVCuhob9KESLrJiNTAtmnAjdRBo1Cw+sJskHIkJl13ByU24gxnHiKvxMQmJQMhfLR0oQhusVR+87gas7aQOQ==","signatures":[{"sig":"MEUCIQDNLi8QYQeCaeP3wZQNfAFkrcQxWowqkxQGtfPISkfrjgIgXzL64a+Eq5iPrHIbYTfohLWrVNLcCYjxvGMmUEGlY2Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":246398},"type":"module","_from":"file:safe-mdx-1.0.0.tgz","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./parse":{"types":"./dist/parse.d.ts","default":"./dist/parse.js"},"./src/*":"./src/*.tsx","./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest","build":"tsc"},"_npmUser":{"name":"xmorse","actor":{"name":"xmorse","type":"user","email":"beats.by.morse@gmail.com"},"email":"beats.by.morse@gmail.com"},"_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/cf56925ae4c02563e672b71f927b14c1/safe-mdx-1.0.0.tgz","_integrity":"sha512-7AhVCuhob9KESLrJiNTAtmnAjdRBo1Cw+sJskHIkJl13ByU24gxnHiKvxMQmJQMhfLR0oQhusVR+87gas7aQOQ==","repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"11.3.0","description":"Render MDX in React without eval","directories":{},"_nodeVersion":"24.2.0","dependencies":{"remark":"^15.0.1","unified":"^11.0.5","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","collapse-white-space":"^2.1.0","html-to-jsx-transform":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.1.0","dedent":"^1.5.1","vitest":"^3.1.3","react-dom":"^19.1.0","typescript":"5.8.3","@types/node":"^22.15.17","@types/mdast":"^4.0.0","@types/react":"^19.1.3","@types/react-dom":"^19.1.3","mdast-util-mdx-jsx":"^3.2.0","@vitest/coverage-v8":"^1.6.0"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_1.0.0_1751106636952_0.7466734593998117","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"safe-mdx","version":"1.0.1","keywords":["mdx"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@1.0.1","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx#readme","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"43c1e826abe4d27c3f27be0823a9877d84d12627","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-1.0.1.tgz","fileCount":32,"integrity":"sha512-TPo8GGVwK5cIHjZFKzM1X+hgLIJeuaJwUAtLJ0KZlEHevwg+vkEBi/iQYRc/DRvQ+tI4+VPQUHEQmfY3Y7ek6A==","signatures":[{"sig":"MEUCIEFI3ePFHMOeTaknq+GiUsl2yUIpFysoIS51ZbmxAv1+AiEA/Fhx4LETSZzAYrfAhwi/OAR/bOycpmxN8XLcDrgeL6Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":246396},"type":"module","_from":"file:safe-mdx-1.0.1.tgz","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./parse":{"types":"./dist/parse.d.ts","default":"./dist/parse.js"},"./src/*":"./src/*.tsx","./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest","build":"tsc"},"_npmUser":{"name":"xmorse","actor":{"name":"xmorse","type":"user","email":"beats.by.morse@gmail.com"},"email":"beats.by.morse@gmail.com"},"_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/7e8a9fc1dacf156499f0147532355f0d/safe-mdx-1.0.1.tgz","_integrity":"sha512-TPo8GGVwK5cIHjZFKzM1X+hgLIJeuaJwUAtLJ0KZlEHevwg+vkEBi/iQYRc/DRvQ+tI4+VPQUHEQmfY3Y7ek6A==","repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"11.3.0","description":"Render MDX in React without eval","directories":{},"_nodeVersion":"24.2.0","dependencies":{"remark":"^15.0.1","unified":"^11.0.5","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","collapse-white-space":"^2.1.0","html-to-jsx-transform":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.1.0","dedent":"^1.5.1","vitest":"^3.1.3","react-dom":"^19.1.0","typescript":"5.8.3","@types/node":"^22.15.17","@types/mdast":"^4.0.0","@types/react":"^19.1.3","@types/react-dom":"^19.1.3","mdast-util-mdx-jsx":"^3.2.0","@vitest/coverage-v8":"^1.6.0"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_1.0.1_1751106749930_0.6225744904769475","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"safe-mdx","version":"1.0.2","keywords":["mdx"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@1.0.2","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx#readme","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"3333f05cb209f4f368ecc9455733632fa03d55b3","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-1.0.2.tgz","fileCount":32,"integrity":"sha512-LySzAQgkR0vqM1Nt5fjcMiKofrUlDvoD6RbLelM9ixyx0LC9D0BBoQejeKYnyL358WNUeqpQCm4YBcHmD7HFUA==","signatures":[{"sig":"MEYCIQDOXHHhdppM3seAa2Sn+uwWlAZWIehKebcgqxygYAPDEwIhAPN7A3Sa1OBDgWvb3eWNIyKNTV4w6u2l7e4iBsjfyqbO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":234585},"type":"module","_from":"file:safe-mdx-1.0.2.tgz","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./parse":{"types":"./dist/parse.d.ts","default":"./dist/parse.js"},"./src/*":"./src/*.tsx","./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest","build":"tsc"},"_npmUser":{"name":"xmorse","actor":{"name":"xmorse","type":"user","email":"beats.by.morse@gmail.com"},"email":"beats.by.morse@gmail.com"},"_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/0355b14a197d6e2090fcf1d89f2d980b/safe-mdx-1.0.2.tgz","_integrity":"sha512-LySzAQgkR0vqM1Nt5fjcMiKofrUlDvoD6RbLelM9ixyx0LC9D0BBoQejeKYnyL358WNUeqpQCm4YBcHmD7HFUA==","repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"11.3.0","description":"Render MDX in React without eval","directories":{},"_nodeVersion":"24.2.0","dependencies":{"remark":"^15.0.1","unified":"^11.0.5","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","collapse-white-space":"^2.1.0","html-to-jsx-transform":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.1.0","dedent":"^1.5.1","vitest":"^3.1.3","react-dom":"^19.1.0","typescript":"5.8.3","@types/node":"^22.15.17","@types/mdast":"^4.0.0","@types/react":"^19.1.3","@types/react-dom":"^19.1.3","mdast-util-mdx-jsx":"^3.2.0","@vitest/coverage-v8":"^1.6.0"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_1.0.2_1751106950777_0.3017656110836422","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"safe-mdx","version":"1.0.3","keywords":["mdx"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@1.0.3","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx#readme","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"853dba3b08ad1ac41f31f2515717390c503f7c35","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-1.0.3.tgz","fileCount":32,"integrity":"sha512-ks0nlhwcD55zY4tjgx2PtxhnKt/O+FBohQ/ceLCAO4tf+nzDVqF2+rntVfcJSNAh00E6fFG8ms4JFIsyLIQJSQ==","signatures":[{"sig":"MEUCIGYgRjulIWNVcIxa5OvzTnawDXtJcXiWijxGOlPqAmiOAiEAmsN31cOnyVntfB8cc6d11u+pAryslnuvk5ZKc2iov0s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":235233},"type":"module","_from":"file:safe-mdx-1.0.3.tgz","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./parse":{"types":"./dist/parse.d.ts","default":"./dist/parse.js"},"./src/*":"./src/*.tsx","./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest","build":"tsc"},"_npmUser":{"name":"xmorse","actor":{"name":"xmorse","type":"user","email":"beats.by.morse@gmail.com"},"email":"beats.by.morse@gmail.com"},"_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/757f837449130abbe117ff41abcee56c/safe-mdx-1.0.3.tgz","_integrity":"sha512-ks0nlhwcD55zY4tjgx2PtxhnKt/O+FBohQ/ceLCAO4tf+nzDVqF2+rntVfcJSNAh00E6fFG8ms4JFIsyLIQJSQ==","repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"11.3.0","description":"Render MDX in React without eval","directories":{},"_nodeVersion":"24.2.0","dependencies":{"remark":"^15.0.1","unified":"^11.0.5","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","collapse-white-space":"^2.1.0","html-to-jsx-transform":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.1.0","dedent":"^1.5.1","vitest":"^3.1.3","react-dom":"^19.1.0","typescript":"5.8.3","@types/node":"^22.15.17","@types/mdast":"^4.0.0","@types/react":"^19.1.3","@types/react-dom":"^19.1.3","mdast-util-mdx-jsx":"^3.2.0","@vitest/coverage-v8":"^1.6.0"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_1.0.3_1751107142673_0.8011802031608826","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"safe-mdx","version":"1.0.4","keywords":["mdx"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@1.0.4","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx#readme","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"c547ca8be7c4a27929fdb01c49ca0090d0558a79","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-1.0.4.tgz","fileCount":32,"integrity":"sha512-9QOsbgE7Nz4Wr83M26tQEpHfFVD6Pwf8JhCcm6XNR0EnLOkdJfPM0ZjCbw6/R5G26OntYMgqGACi8iHzr6NGwA==","signatures":[{"sig":"MEQCIEixHMNZOfESRgyWQH8Bw6rgngzsUPq2aybEXcoFRHUmAiBa4WELAVdNstNHms6Wj73Ka6xuDj/HLyeAN4O3hqBpVg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":235183},"type":"module","_from":"file:safe-mdx-1.0.4.tgz","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./parse":{"types":"./dist/parse.d.ts","default":"./dist/parse.js"},"./src/*":"./src/*.tsx","./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest","build":"tsc"},"_npmUser":{"name":"xmorse","actor":{"name":"xmorse","type":"user","email":"beats.by.morse@gmail.com"},"email":"beats.by.morse@gmail.com"},"_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/411b8e54404afb32ee8bc435a1e3bb20/safe-mdx-1.0.4.tgz","_integrity":"sha512-9QOsbgE7Nz4Wr83M26tQEpHfFVD6Pwf8JhCcm6XNR0EnLOkdJfPM0ZjCbw6/R5G26OntYMgqGACi8iHzr6NGwA==","repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"11.3.0","description":"Render MDX in React without eval","directories":{},"_nodeVersion":"24.2.0","dependencies":{"remark":"^15.0.1","unified":"^11.0.5","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","collapse-white-space":"^2.1.0","html-to-jsx-transform":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.1.0","dedent":"^1.5.1","vitest":"^3.1.3","react-dom":"^19.1.0","typescript":"5.8.3","@types/node":"^22.15.17","@types/mdast":"^4.0.0","@types/react":"^19.1.3","@types/react-dom":"^19.1.3","mdast-util-mdx-jsx":"^3.2.0","@vitest/coverage-v8":"^1.6.0"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_1.0.4_1751107188407_0.6758932003717384","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"safe-mdx","version":"1.1.0","keywords":["mdx"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@1.1.0","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx#readme","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"23fecd88f587247ee16343200f0d3e96eb0df551","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-1.1.0.tgz","fileCount":37,"integrity":"sha512-VZ5HFED4LAV+wEOQEUTsqfs5aEwrPTgv7JypY2aM+rFZPoXnU/yhj93WyFpLN4uSXZcrLnco2cXy8GnPcDBU7Q==","signatures":[{"sig":"MEQCIA10bNW4AZhMd3OSMAgqY9MZ1JOFvqVZa4yopG4/KVwWAiA4+RWVBLSXk97QsEKf1gTNp2b1Ocsuzcq46rUPzWZYQQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":259042},"type":"module","_from":"file:safe-mdx-1.1.0.tgz","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./parse":{"types":"./dist/parse.d.ts","default":"./dist/parse.js"},"./src/*":"./src/*.tsx","./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest","build":"tsc"},"_npmUser":{"name":"xmorse","actor":{"name":"xmorse","type":"user","email":"beats.by.morse@gmail.com"},"email":"beats.by.morse@gmail.com"},"_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/993176042e924ea6544aa4ca9f04fecd/safe-mdx-1.1.0.tgz","_integrity":"sha512-VZ5HFED4LAV+wEOQEUTsqfs5aEwrPTgv7JypY2aM+rFZPoXnU/yhj93WyFpLN4uSXZcrLnco2cXy8GnPcDBU7Q==","repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"11.3.0","description":"Render MDX in React without eval","directories":{},"_nodeVersion":"24.2.0","dependencies":{"remark":"^15.0.1","unified":"^11.0.5","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","collapse-white-space":"^2.1.0","@standard-schema/spec":"^1.0.0","html-to-jsx-transform":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3.25.67","react":"^19.1.0","dedent":"^1.5.1","vitest":"^3.1.3","react-dom":"^19.1.0","typescript":"5.8.3","@types/node":"^22.15.17","@types/mdast":"^4.0.0","@types/react":"^19.1.3","@types/react-dom":"^19.1.3","mdast-util-mdx-jsx":"^3.2.0","@vitest/coverage-v8":"^1.6.0"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_1.1.0_1751212576776_0.0934986226707637","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"safe-mdx","version":"1.2.0","keywords":["mdx"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@1.2.0","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx#readme","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"dcb1ec4c23aa669d1382584646c90609af9dd4b3","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-1.2.0.tgz","fileCount":52,"integrity":"sha512-i2J5b4t+jdPRgDdmoLpStpmR/hQ11p+M2FwYGWJQdXzyuKy2s3O5yL4BMP5gr212+HsUP2Qywzad2K8atmLTVg==","signatures":[{"sig":"MEUCIQDQduBCE7ph4G6NTMbuQM9MqtD1jWy6CBjTiEHh0X3AsQIgQuq9jNbM1Ij8dDAfVygZgx7ldEnNYD1LdaPVXL6jLJA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":358488},"type":"module","_from":"file:safe-mdx-1.2.0.tgz","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./parse":{"types":"./dist/parse.d.ts","default":"./dist/parse.js"},"./src/*":"./src/*.tsx","./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest","build":"tsc"},"_npmUser":{"name":"xmorse","actor":{"name":"xmorse","type":"user","email":"beats.by.morse@gmail.com"},"email":"beats.by.morse@gmail.com"},"_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/4ebef154c68f4cdeb9cb8b4090d28498/safe-mdx-1.2.0.tgz","_integrity":"sha512-i2J5b4t+jdPRgDdmoLpStpmR/hQ11p+M2FwYGWJQdXzyuKy2s3O5yL4BMP5gr212+HsUP2Qywzad2K8atmLTVg==","repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"11.3.0","description":"Render MDX in React without eval","directories":{},"_nodeVersion":"24.2.0","dependencies":{"remark":"^15.0.1","unified":"^11.0.5","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","collapse-white-space":"^2.1.0","@standard-schema/spec":"^1.0.0","html-to-jsx-transform":"^1.0.0","eval-estree-expression":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3.25.67","react":"^19.1.0","dedent":"^1.5.1","vitest":"^3.1.3","react-dom":"^19.1.0","typescript":"5.8.3","@types/node":"^22.15.17","@types/mdast":"^4.0.0","@types/react":"^19.1.3","@types/react-dom":"^19.1.3","@types/estree-jsx":"^1.0.5","mdast-util-mdx-jsx":"^3.2.0","@vitest/coverage-v8":"^1.6.0"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_1.2.0_1752058753522_0.7775643297662354","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"safe-mdx","version":"1.3.0","keywords":["mdx"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@1.3.0","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx#readme","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"a2917a3e32f69ba1c78a21963dce5730e9917994","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-1.3.0.tgz","fileCount":52,"integrity":"sha512-xmfWnO4bUbWtbA9PIAqcGc9GsJuj9FmZMPOxcC/W9EFJN0P0vXJh/e4fN8/5iabAcZmSqGkHFcyzjoAewcxGbw==","signatures":[{"sig":"MEYCIQC1c/YqUOyP+wHxlB058PZIDH6XflYDVZGrf9nYiX4OZgIhAJqtw/GT/eT0Ti7c9CYDt5Y8cthE4qKWz2UFaJGePWbZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":371277},"type":"module","_from":"file:safe-mdx-1.3.0.tgz","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./parse":{"types":"./dist/parse.d.ts","default":"./dist/parse.js"},"./src/*":"./src/*.tsx","./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest","build":"tsc"},"_npmUser":{"name":"xmorse","actor":{"name":"xmorse","type":"user","email":"beats.by.morse@gmail.com"},"email":"beats.by.morse@gmail.com"},"_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/6d786fea770f6db48cafccef5703c9fb/safe-mdx-1.3.0.tgz","_integrity":"sha512-xmfWnO4bUbWtbA9PIAqcGc9GsJuj9FmZMPOxcC/W9EFJN0P0vXJh/e4fN8/5iabAcZmSqGkHFcyzjoAewcxGbw==","repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"11.3.0","description":"Render MDX in React without eval","directories":{},"_nodeVersion":"24.2.0","dependencies":{"remark":"^15.0.1","unified":"^11.0.5","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","collapse-white-space":"^2.1.0","@standard-schema/spec":"^1.0.0","html-to-jsx-transform":"^1.0.0","eval-estree-expression":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3.25.67","react":"^19.1.0","dedent":"^1.5.1","vitest":"^3.1.3","react-dom":"^19.1.0","typescript":"5.8.3","@types/node":"^22.15.17","@types/mdast":"^4.0.0","@types/react":"^19.1.3","@types/react-dom":"^19.1.3","@types/estree-jsx":"^1.0.5","mdast-util-mdx-jsx":"^3.2.0","@vitest/coverage-v8":"^1.6.0"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_1.3.0_1752060916164_0.1566448525406401","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"safe-mdx","version":"1.3.1","keywords":["mdx"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@1.3.1","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx#readme","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"508bed1fe9c365128e70a0d3b912b6b09c4e64d1","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-1.3.1.tgz","fileCount":52,"integrity":"sha512-HZ/93zbL8Y9ctYxP/SS4jwQMHX7w4QSduSWHUMrN91dvdXijbkQz07leKHjv2DLZ0f4sBQ9gJg0RaD/hE3gpew==","signatures":[{"sig":"MEYCIQCeoP2CvFSF47uSBelYAdj1oCnWuuR8Mf3XuUaOvuOE/wIhAOSM+yK75okzwN8TiUTAVin8+SEOWXRRk1uaroSg0DFw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":380362},"type":"module","_from":"file:safe-mdx-1.3.1.tgz","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./parse":{"types":"./dist/parse.d.ts","default":"./dist/parse.js"},"./src/*":"./src/*.tsx","./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest","build":"tsc"},"_npmUser":{"name":"xmorse","actor":{"name":"xmorse","type":"user","email":"beats.by.morse@gmail.com"},"email":"beats.by.morse@gmail.com"},"_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/658e1d4e5067aae5e5b92942e6f80388/safe-mdx-1.3.1.tgz","_integrity":"sha512-HZ/93zbL8Y9ctYxP/SS4jwQMHX7w4QSduSWHUMrN91dvdXijbkQz07leKHjv2DLZ0f4sBQ9gJg0RaD/hE3gpew==","repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"11.3.0","description":"Render MDX in React without eval","directories":{},"_nodeVersion":"24.2.0","dependencies":{"remark":"^15.0.1","unified":"^11.0.5","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","collapse-white-space":"^2.1.0","@standard-schema/spec":"^1.0.0","html-to-jsx-transform":"^1.0.0","eval-estree-expression":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3.25.67","react":"^19.1.0","dedent":"^1.5.1","vitest":"^3.1.3","react-dom":"^19.1.0","typescript":"5.8.3","@types/node":"^22.15.17","@types/mdast":"^4.0.0","@types/react":"^19.1.3","@changesets/cli":"^2.28.1","@types/react-dom":"^19.1.3","@types/estree-jsx":"^1.0.5","mdast-util-mdx-jsx":"^3.2.0","@vitest/coverage-v8":"^1.6.0"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_1.3.1_1752156973783_0.021305182380735088","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"safe-mdx","version":"1.3.2","keywords":["mdx"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@1.3.2","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx#readme","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"bde8fbfdda27b3165aac2323636baf139dfa92da","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-1.3.2.tgz","fileCount":52,"integrity":"sha512-tqnA9T+xL3EH+Idg6gJCAYGQ4AmpleuVsKSNroXGvTySVnflNtFAozKfFGkIpjZTpWjomhUly7t8RQYUXVBcug==","signatures":[{"sig":"MEQCICsXNTdZmEbentgjDSohC14CVWd55uoEf9UAx4StyQ7qAiAtVeCjVEQkI5YkC5ucaRSurBjsVbtCQqiJ1ZTt6y3CAA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":383207},"type":"module","_from":"file:safe-mdx-1.3.2.tgz","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./parse":{"types":"./dist/parse.d.ts","default":"./dist/parse.js"},"./src/*":"./src/*.tsx","./package.json":"./package.json"},"private":false,"scripts":{"test":"vitest","build":"tsc"},"_npmUser":{"name":"xmorse","email":"beats.by.morse@gmail.com"},"_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/4257f8d2ee6e3ca041da1ca229226708/safe-mdx-1.3.2.tgz","_integrity":"sha512-tqnA9T+xL3EH+Idg6gJCAYGQ4AmpleuVsKSNroXGvTySVnflNtFAozKfFGkIpjZTpWjomhUly7t8RQYUXVBcug==","repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"10.9.2","description":"Render MDX in React without eval","directories":{},"_nodeVersion":"22.17.1","dependencies":{"remark":"^15.0.1","unified":"^11.0.5","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","collapse-white-space":"^2.1.0","@standard-schema/spec":"^1.0.0","html-to-jsx-transform":"^1.0.0","eval-estree-expression":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3.25.67","react":"^19.1.0","dedent":"^1.5.1","vitest":"^3.1.3","react-dom":"^19.1.0","typescript":"5.8.3","@types/node":"^22.15.17","@types/mdast":"^4.0.0","@types/react":"^19.1.3","@changesets/cli":"^2.28.1","@types/react-dom":"^19.1.3","@types/estree-jsx":"^1.0.5","mdast-util-mdx-jsx":"^3.2.0","@vitest/coverage-v8":"^1.6.0"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_1.3.2_1752761809834_0.37332151065959884","host":"s3://npm-registry-packages-npm-production"}},"1.3.3":{"name":"safe-mdx","version":"1.3.3","keywords":["mdx"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@1.3.3","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx#readme","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"0b1aa4f8d9d5bc40818209f6b9cf2bc43dc42d99","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-1.3.3.tgz","fileCount":96,"integrity":"sha512-7S0VSY/pku1y5jR8fIq3Cl3sdOLBia5KDOVKy78vwxA2M2Ff3Ny6vZl0VAaIjfM9zN6Mn+WfX7apxRGCwehIuA==","signatures":[{"sig":"MEQCIHw34vNvy1DJATVakYZq9AnIdmoVzwu9FRAQj3zRLAxFAiBl7K9IXNkHdxSuxsnuPQOu4ECocfZ3ZP2CHW/BmDdAaQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2097183},"type":"module","_from":"file:safe-mdx-1.3.3.tgz","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./parse":{"types":"./dist/parse.d.ts","default":"./dist/parse.js"},"./src/*":"./src/*.tsx","./domparser":{"types":"./dist/html/domparser.d.ts","browser":"./dist/html/domparser-browser.js","default":"./dist/html/domparser.js"},"./package.json":"./package.json"},"private":false,"scripts":{"demo":"vite","test":"vitest","build":"tsc","start":"vite preview","demo:build":"vite build","deploy-demo":"vite build && npx -y wrangler pages deploy"},"_npmUser":{"name":"xmorse","email":"beats.by.morse@gmail.com"},"_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/c5dc6757305182ad9c54eccb37cd3600/safe-mdx-1.3.3.tgz","_integrity":"sha512-7S0VSY/pku1y5jR8fIq3Cl3sdOLBia5KDOVKy78vwxA2M2Ff3Ny6vZl0VAaIjfM9zN6Mn+WfX7apxRGCwehIuA==","repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"10.9.3","description":"Render MDX in React without eval","directories":{},"_nodeVersion":"22.19.0","dependencies":{"remark":"^15.0.1","unified":"^11.0.5","linkedom":"^0.18.12","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","@babel/types":"^7.28.2","@babel/parser":"^7.28.0","style-to-object":"^1.0.8","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","collapse-white-space":"^2.1.0","@standard-schema/spec":"^1.0.0","eval-estree-expression":"^3.0.0","unist-util-visit-parents":"^6.0.1"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3.25.67","vite":"^6.2.6","react":"^19.1.0","dedent":"^1.5.1","vitest":"^3.1.3","react-dom":"^19.1.0","typescript":"5.8.3","@types/node":"^22.15.17","tailwindcss":"^4.1.11","@types/mdast":"^4.0.0","@types/react":"^19.1.8","remark-parse":"^11.0.0","@changesets/cli":"^2.28.1","@types/react-dom":"^19.1.6","remark-stringify":"^11.0.0","@tailwindcss/vite":"^4.1.11","@types/estree-jsx":"^1.0.5","mdast-util-mdx-jsx":"^3.2.0","@vitest/coverage-v8":"^1.6.0","@vitejs/plugin-react":"^4.7.0","importmap-vite-plugin":"^0.0.0","@tailwindcss/typography":"^0.5.16"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_1.3.3_1758116574275_0.6756842644474825","host":"s3://npm-registry-packages-npm-production"}},"1.3.6":{"name":"safe-mdx","version":"1.3.6","keywords":["mdx"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@1.3.6","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx#readme","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"2c63a2b539d79929de17f5c11285ea0032080a68","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-1.3.6.tgz","fileCount":96,"integrity":"sha512-TwkkzX0H61N84Sq4PG20aw0+DVIb+JI+tzxSqzPLocAe3vjfQEA7DyO4wF9I/CilJ2GCblI/s5LF6ll81lVSpA==","signatures":[{"sig":"MEYCIQD37mTduQCWtk431RMNCFVGOsgoqCCfeDH3I0lHNJ8LJwIhALjuLOa/cooKDH+RnmARYCiiEz6yX9HryINwU+B4I7tu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2112767},"type":"module","_from":"file:safe-mdx-1.3.6.tgz","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./parse":{"types":"./dist/parse.d.ts","default":"./dist/parse.js"},"./src/*":"./src/*.tsx","./domparser":{"types":"./dist/html/domparser.d.ts","browser":"./dist/html/domparser-browser.js","default":"./dist/html/domparser.js"},"./package.json":"./package.json"},"private":false,"scripts":{"demo":"vite","test":"vitest","build":"tsc","start":"vite preview","demo:build":"vite build","deploy-demo":"vite build && npx -y wrangler pages deploy"},"_npmUser":{"name":"xmorse","email":"beats.by.morse@gmail.com"},"_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/43b1afe01b7e00ac7c90a5c39d82908c/safe-mdx-1.3.6.tgz","_integrity":"sha512-TwkkzX0H61N84Sq4PG20aw0+DVIb+JI+tzxSqzPLocAe3vjfQEA7DyO4wF9I/CilJ2GCblI/s5LF6ll81lVSpA==","repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"10.9.3","description":"Render MDX in React without eval","directories":{},"_nodeVersion":"22.19.0","dependencies":{"unist":"^0.0.1","remark":"^15.0.1","unified":"^11.0.5","linkedom":"^0.18.12","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","@babel/types":"^7.28.2","@babel/parser":"^7.28.0","style-to-object":"^1.0.8","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","collapse-white-space":"^2.1.0","@standard-schema/spec":"^1.0.0","eval-estree-expression":"^3.0.0","unist-util-visit-parents":"^6.0.1"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3.25.67","vite":"^6.2.6","react":"^19.1.0","dedent":"^1.5.1","vitest":"^3.1.3","react-dom":"^19.1.0","typescript":"5.8.3","@types/node":"^22.15.17","tailwindcss":"^4.1.11","@types/mdast":"^4.0.0","@types/react":"^19.1.8","remark-parse":"^11.0.0","@changesets/cli":"^2.28.1","@types/react-dom":"^19.1.6","remark-stringify":"^11.0.0","@tailwindcss/vite":"^4.1.11","@types/estree-jsx":"^1.0.5","mdast-util-mdx-jsx":"^3.2.0","@vitest/coverage-v8":"^1.6.0","@vitejs/plugin-react":"^4.7.0","importmap-vite-plugin":"^0.0.0","@tailwindcss/typography":"^0.5.16"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_1.3.6_1758122744840_0.04229826709903772","host":"s3://npm-registry-packages-npm-production"}},"1.3.7":{"name":"safe-mdx","version":"1.3.7","keywords":["mdx"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@1.3.7","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx#readme","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"18ba093e385f7360e70b9581ce07788699703216","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-1.3.7.tgz","fileCount":96,"integrity":"sha512-G3Ggr85dB2TisFuca/DcuQTdcZb5G8mP2g7WLoXhLvEaYqh3rXCgy91DIYu1STfg3mhj4IuRGRTp6abu+DdoRg==","signatures":[{"sig":"MEYCIQDsHfh8+4mQoshToMAYJiJU3Afp1MKuagHdFHQn7Qm0rwIhAPX1l9MjyMqZnEOfWnnykBnsh3mcXV8c+FDH1/327L/Q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2136213},"type":"module","_from":"file:safe-mdx-1.3.7.tgz","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./parse":{"types":"./dist/parse.d.ts","default":"./dist/parse.js"},"./src/*":"./src/*.tsx","./domparser":{"types":"./dist/html/domparser.d.ts","browser":"./dist/html/domparser-browser.js","default":"./dist/html/domparser.js"},"./package.json":"./package.json"},"private":false,"scripts":{"demo":"vite","test":"vitest","build":"tsc","start":"vite preview","demo:build":"vite build","deploy-demo":"vite build && npx -y wrangler pages deploy"},"_npmUser":{"name":"xmorse","email":"beats.by.morse@gmail.com"},"_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/c35ddd7765247fb4c58fc588af1f3cd0/safe-mdx-1.3.7.tgz","_integrity":"sha512-G3Ggr85dB2TisFuca/DcuQTdcZb5G8mP2g7WLoXhLvEaYqh3rXCgy91DIYu1STfg3mhj4IuRGRTp6abu+DdoRg==","repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"10.9.3","description":"Render MDX in React without eval","directories":{},"_nodeVersion":"22.19.0","dependencies":{"unist":"^0.0.1","remark":"^15.0.1","unified":"^11.0.5","linkedom":"^0.18.12","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","@babel/types":"^7.28.2","@babel/parser":"^7.28.0","style-to-object":"^1.0.8","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","collapse-white-space":"^2.1.0","@standard-schema/spec":"^1.0.0","eval-estree-expression":"^3.0.0","unist-util-visit-parents":"^6.0.1"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3.25.67","vite":"^6.2.6","react":"^19.1.0","dedent":"^1.5.1","vitest":"^3.1.3","react-dom":"^19.1.0","typescript":"5.8.3","@types/node":"^22.15.17","tailwindcss":"^4.1.11","@types/mdast":"^4.0.0","@types/react":"^19.1.8","remark-parse":"^11.0.0","@changesets/cli":"^2.28.1","@types/react-dom":"^19.1.6","remark-stringify":"^11.0.0","@tailwindcss/vite":"^4.1.11","@types/estree-jsx":"^1.0.5","mdast-util-mdx-jsx":"^3.2.0","@vitest/coverage-v8":"^1.6.0","@vitejs/plugin-react":"^4.7.0","importmap-vite-plugin":"^0.0.0","@tailwindcss/typography":"^0.5.16"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_1.3.7_1758125141680_0.6545206898938765","host":"s3://npm-registry-packages-npm-production"}},"1.3.8":{"name":"safe-mdx","version":"1.3.8","keywords":["mdx"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@1.3.8","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx#readme","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"75baaaf9b3eec09bee629db06909d76d0983af6e","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-1.3.8.tgz","fileCount":96,"integrity":"sha512-TF76qQGMrFpubcsfwtF1a5srSMTxi/1rnQNLTs6PxTo37ROCJdNJXti4jppe978xup3iA6zELDZiJxOpOTBdLw==","signatures":[{"sig":"MEQCIFc2E/gS07UgcMLrQArCDrtHz9BVKZmk5GFQglKx/TRyAiBKrcha1wF+7vAORvHUEcxYbOmbRi3zJXzXxo1o8eo6KQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2140505},"type":"module","_from":"file:safe-mdx-1.3.8.tgz","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./parse":{"types":"./dist/parse.d.ts","default":"./dist/parse.js"},"./src/*":"./src/*.tsx","./domparser":{"types":"./dist/html/domparser.d.ts","browser":"./dist/html/domparser-browser.js","default":"./dist/html/domparser.js"},"./package.json":"./package.json"},"private":false,"scripts":{"demo":"vite","test":"vitest","build":"tsc","start":"vite preview","demo:build":"vite build","deploy-demo":"vite build && npx -y wrangler pages deploy"},"_npmUser":{"name":"xmorse","email":"beats.by.morse@gmail.com"},"_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/e76882509bbb89fe8152af72ef31cad5/safe-mdx-1.3.8.tgz","_integrity":"sha512-TF76qQGMrFpubcsfwtF1a5srSMTxi/1rnQNLTs6PxTo37ROCJdNJXti4jppe978xup3iA6zELDZiJxOpOTBdLw==","repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"10.9.3","description":"Render MDX in React without eval","directories":{},"_nodeVersion":"22.19.0","dependencies":{"unist":"^0.0.1","remark":"^15.0.1","unified":"^11.0.5","linkedom":"^0.18.12","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","@babel/types":"^7.28.2","@babel/parser":"^7.28.0","style-to-object":"^1.0.8","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","collapse-white-space":"^2.1.0","@standard-schema/spec":"^1.0.0","eval-estree-expression":"^3.0.0","unist-util-visit-parents":"^6.0.1"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3.25.67","vite":"^6.2.6","react":"^19.1.0","dedent":"^1.5.1","vitest":"^3.1.3","react-dom":"^19.1.0","typescript":"5.8.3","@types/node":"^22.15.17","tailwindcss":"^4.1.11","@types/mdast":"^4.0.0","@types/react":"^19.1.8","remark-parse":"^11.0.0","@changesets/cli":"^2.28.1","@types/react-dom":"^19.1.6","remark-stringify":"^11.0.0","@tailwindcss/vite":"^4.1.11","@types/estree-jsx":"^1.0.5","mdast-util-mdx-jsx":"^3.2.0","@vitest/coverage-v8":"^1.6.0","@vitejs/plugin-react":"^4.7.0","importmap-vite-plugin":"^0.0.0","@tailwindcss/typography":"^0.5.16"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_1.3.8_1758128628377_0.5563268539288782","host":"s3://npm-registry-packages-npm-production"}},"1.3.9":{"name":"safe-mdx","version":"1.3.9","keywords":["mdx"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@1.3.9","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx#readme","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"0ed971a70dea3fe6bb47bf8717ecece1d11f6d7c","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-1.3.9.tgz","fileCount":101,"integrity":"sha512-lg5YY55sd+3kQk5FDhUObqnTXDr8H6WU3feXql0ZMMImuT5mbvV6zKibUy8OjhK4M5nQtP5Bkof9D7Szyj3x3w==","signatures":[{"sig":"MEUCIGjIN+zPCmN51iRdGI50X4liD/9x+SAXR87QqLGTwWOGAiEAoOIB/dvF6He4qlM90CWoJkKrzucfH6aSWjWFAPgOtE0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2206415},"type":"module","_from":"file:safe-mdx-1.3.9.tgz","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./parse":{"types":"./dist/parse.d.ts","default":"./dist/parse.js"},"./src/*":"./src/*.tsx","./domparser":{"types":"./dist/html/domparser.d.ts","browser":"./dist/html/domparser-browser.js","default":"./dist/html/domparser.js"},"./package.json":"./package.json"},"private":false,"scripts":{"demo":"vite","test":"vitest","build":"tsc","start":"vite preview","demo:build":"vite build","deploy-demo":"vite build && npx -y wrangler pages deploy"},"_npmUser":{"name":"xmorse","email":"beats.by.morse@gmail.com"},"_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/2ad31bb1049928c4ad7a212b1b960725/safe-mdx-1.3.9.tgz","_integrity":"sha512-lg5YY55sd+3kQk5FDhUObqnTXDr8H6WU3feXql0ZMMImuT5mbvV6zKibUy8OjhK4M5nQtP5Bkof9D7Szyj3x3w==","repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"10.9.3","description":"Render MDX in React without eval","directories":{},"_nodeVersion":"22.20.0","dependencies":{"remark":"^15.0.1","unified":"^11.0.5","linkedom":"^0.18.12","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","@babel/types":"^7.28.2","@babel/parser":"^7.28.0","style-to-object":"^1.0.8","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","collapse-white-space":"^2.1.0","@standard-schema/spec":"^1.0.0","eval-estree-expression":"^3.0.0","unist-util-visit-parents":"^6.0.1"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3.25.67","vite":"^6.2.6","react":"^19.1.1","dedent":"^1.5.1","vitest":"^3.1.3","react-dom":"^19.1.1","typescript":"5.8.3","@types/node":"^22.15.17","tailwindcss":"^4.1.11","@types/mdast":"^4.0.0","@types/react":"^19.1.8","@types/unist":"^3.0.3","remark-parse":"^11.0.0","@changesets/cli":"^2.28.1","@types/react-dom":"^19.1.6","remark-stringify":"^11.0.0","@tailwindcss/vite":"^4.1.11","@types/estree-jsx":"^1.0.5","mdast-util-mdx-jsx":"^3.2.0","@vitest/coverage-v8":"^1.6.0","@vitejs/plugin-react":"^4.7.0","importmap-vite-plugin":"^0.0.0","@tailwindcss/typography":"^0.5.16"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_1.3.9_1762183758549_0.617469953048321","host":"s3://npm-registry-packages-npm-production"}},"1.3.10":{"name":"safe-mdx","version":"1.3.10","keywords":["mdx"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@1.3.10","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx#readme","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"9a4149ea1ef5931bf8524d1b0761f5b0fbdeba0f","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-1.3.10.tgz","fileCount":89,"integrity":"sha512-0Ui5fA/wu2Kyrf66Opq0rk9GpSryjUNKpNRRdS44z0YDxZQNE1QWE4gkfUimlCbSkpWmhtAJV74h9tujYAhh6g==","signatures":[{"sig":"MEUCIDGMQDqG8FPnBZK856HR80AopLMZHtfJXH99mzoOkvjyAiEAtFR7gB4BATP+M40HL78R6OCztqO7xC+hA1t7qrg3ZUQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":595093},"type":"module","_from":"file:safe-mdx-1.3.10.tgz","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./parse":{"types":"./dist/parse.d.ts","default":"./dist/parse.js"},"./src/*":"./src/*.tsx","./client":{"types":"./dist/dynamic-esm-component.d.ts","default":"./dist/dynamic-esm-component.js"},"./domparser":{"types":"./dist/html/domparser.d.ts","browser":"./dist/html/domparser-browser.js","default":"./dist/html/domparser.js"},"./package.json":"./package.json"},"private":false,"scripts":{"demo":"vite","test":"vitest","build":"tsc","start":"vite preview","compile":"tsc","demo:build":"vite build","deploy-demo":"vite build && npx -y wrangler pages deploy"},"_npmUser":{"name":"xmorse","email":"beats.by.morse@gmail.com"},"_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/8b5035ec9e6787b74ea70cdf703d2d60/safe-mdx-1.3.10.tgz","_integrity":"sha512-0Ui5fA/wu2Kyrf66Opq0rk9GpSryjUNKpNRRdS44z0YDxZQNE1QWE4gkfUimlCbSkpWmhtAJV74h9tujYAhh6g==","repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"11.9.0","description":"Render MDX in React without eval","directories":{},"_nodeVersion":"24.14.0","dependencies":{"remark":"^15.0.1","unified":"^11.0.5","linkedom":"^0.18.12","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","@babel/types":"^7.28.2","@babel/parser":"^7.28.0","style-to-object":"^1.0.8","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","collapse-white-space":"^2.1.0","@standard-schema/spec":"^1.0.0","eval-estree-expression":"^3.0.0","unist-util-visit-parents":"^6.0.1"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","vite":"^6.2.6","react":"^19.2.1","dedent":"^1.5.1","vitest":"^3.1.3","react-dom":"^19.2.1","typescript":"5.8.3","@types/node":"^22.15.17","tailwindcss":"^4.1.11","@types/mdast":"^4.0.0","@types/react":"^19.2.7","@types/unist":"^3.0.3","remark-parse":"^11.0.0","@changesets/cli":"^2.28.1","@types/react-dom":"^19.2.3","remark-stringify":"^11.0.0","@tailwindcss/vite":"^4.1.11","@types/estree-jsx":"^1.0.5","mdast-util-mdx-jsx":"^3.2.0","@vitest/coverage-v8":"^1.6.0","@vitejs/plugin-react":"^4.7.0","importmap-vite-plugin":"^0.0.0","@tailwindcss/typography":"^0.5.16"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_1.3.10_1776164774241_0.940013948788909","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"safe-mdx","version":"1.4.0","keywords":["mdx"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@1.4.0","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx#readme","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"e51fdd7e89d55129f138f8f759040f1dade055a5","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-1.4.0.tgz","fileCount":89,"integrity":"sha512-mmk+VnDpRy1kY7L66+hR961CH31lpYSItRT7OeQz/ERv+QbnwLVo4AQWgk7rvtXDiwMgvuuBwmonc00Fz43e6g==","signatures":[{"sig":"MEUCIQCGbLLT+j26CX0nemEYmBaseH4KN1BarHzrMogCwfTVVAIgGuJ1b/S9mEth5TWJ+tEeplOkKvUfvmLOnk2SmasChP8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":642470},"type":"module","_from":"file:safe-mdx-1.4.0.tgz","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./parse":{"types":"./dist/parse.d.ts","default":"./dist/parse.js"},"./src/*":"./src/*.tsx","./client":{"types":"./dist/dynamic-esm-component.d.ts","default":"./dist/dynamic-esm-component.js"},"./domparser":{"types":"./dist/html/domparser.d.ts","browser":"./dist/html/domparser-browser.js","default":"./dist/html/domparser.js"},"./package.json":"./package.json"},"private":false,"scripts":{"demo":"vite","test":"vitest","build":"tsc","start":"vite preview","compile":"tsc","demo:build":"vite build","deploy-demo":"vite build && npx -y wrangler pages deploy"},"_npmUser":{"name":"xmorse","email":"beats.by.morse@gmail.com"},"_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/e177e070cdf7c714f3a49e8fed60490c/safe-mdx-1.4.0.tgz","_integrity":"sha512-mmk+VnDpRy1kY7L66+hR961CH31lpYSItRT7OeQz/ERv+QbnwLVo4AQWgk7rvtXDiwMgvuuBwmonc00Fz43e6g==","repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"11.9.0","description":"Render MDX in React without eval","directories":{},"_nodeVersion":"24.14.0","dependencies":{"remark":"^15.0.1","unified":"^11.0.5","linkedom":"^0.18.12","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","@babel/types":"^7.28.2","@babel/parser":"^7.28.0","style-to-object":"^1.0.8","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","collapse-white-space":"^2.1.0","@standard-schema/spec":"^1.0.0","eval-estree-expression":"^3.0.0","unist-util-visit-parents":"^6.0.1"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","vite":"^6.2.6","react":"^19.2.1","dedent":"^1.5.1","vitest":"^3.1.3","react-dom":"^19.2.1","typescript":"5.8.3","@types/node":"^22.15.17","tailwindcss":"^4.1.11","@types/mdast":"^4.0.0","@types/react":"^19.2.7","@types/unist":"^3.0.3","remark-parse":"^11.0.0","@changesets/cli":"^2.28.1","@types/react-dom":"^19.2.3","remark-stringify":"^11.0.0","@tailwindcss/vite":"^4.1.11","@types/estree-jsx":"^1.0.5","mdast-util-mdx-jsx":"^3.2.0","@vitest/coverage-v8":"^1.6.0","@vitejs/plugin-react":"^4.7.0","importmap-vite-plugin":"^0.0.0","@tailwindcss/typography":"^0.5.16"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_1.4.0_1776689791965_0.6186554587273942","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"safe-mdx","version":"1.5.0","keywords":["mdx"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@1.5.0","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx#readme","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"5736a345a1749a3350dbd3f5af4ee5bc26559344","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-1.5.0.tgz","fileCount":89,"integrity":"sha512-jJg+sV0lSkoGifUeJL6O3YtV0r/RZugq+wxwS3GC5TeGq/Ul0BHNv1yHhYpsEFYz3T6DRRhX52K/Oew/jl9MgA==","signatures":[{"sig":"MEUCIQC2G9+3g5Fcb5Kqkrw4mTGrOCcClucHGw0337vxypUSgAIgIDWkVce6qfMz5+qqPlmShwFBCaXzagKOQ9v8kd3uS7o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":658211},"type":"module","_from":"file:safe-mdx-1.5.0.tgz","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./parse":{"types":"./dist/parse.d.ts","default":"./dist/parse.js"},"./src/*":"./src/*.tsx","./client":{"types":"./dist/dynamic-esm-component.d.ts","default":"./dist/dynamic-esm-component.js"},"./domparser":{"types":"./dist/html/domparser.d.ts","browser":"./dist/html/domparser-browser.js","default":"./dist/html/domparser.js"},"./package.json":"./package.json"},"private":false,"scripts":{"demo":"vite","test":"vitest","build":"tsc","start":"vite preview","compile":"tsc","demo:build":"vite build","deploy-demo":"vite build && npx -y wrangler pages deploy"},"_npmUser":{"name":"xmorse","email":"beats.by.morse@gmail.com"},"_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/f4eb4da274bbd0a3bbef6b6aab86466e/safe-mdx-1.5.0.tgz","_integrity":"sha512-jJg+sV0lSkoGifUeJL6O3YtV0r/RZugq+wxwS3GC5TeGq/Ul0BHNv1yHhYpsEFYz3T6DRRhX52K/Oew/jl9MgA==","repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"11.9.0","description":"Render MDX in React without eval","directories":{},"_nodeVersion":"24.14.0","dependencies":{"remark":"^15.0.1","unified":"^11.0.5","linkedom":"^0.18.12","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","@babel/types":"^7.28.2","@babel/parser":"^7.28.0","style-to-object":"^1.0.8","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","collapse-white-space":"^2.1.0","@standard-schema/spec":"^1.0.0","eval-estree-expression":"^3.0.0","unist-util-visit-parents":"^6.0.1"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","vite":"^6.2.6","react":"^19.2.1","dedent":"^1.5.1","vitest":"^3.1.3","react-dom":"^19.2.1","typescript":"5.8.3","@types/node":"^22.15.17","tailwindcss":"^4.1.11","@types/mdast":"^4.0.0","@types/react":"^19.2.7","@types/unist":"^3.0.3","remark-parse":"^11.0.0","@changesets/cli":"^2.28.1","@types/react-dom":"^19.2.3","remark-stringify":"^11.0.0","@tailwindcss/vite":"^4.1.11","@types/estree-jsx":"^1.0.5","mdast-util-mdx-jsx":"^3.2.0","@vitest/coverage-v8":"^1.6.0","@vitejs/plugin-react":"^4.7.0","importmap-vite-plugin":"^0.0.0","@tailwindcss/typography":"^0.5.16"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_1.5.0_1776850686460_0.901313424729403","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"safe-mdx","version":"1.6.0","keywords":["mdx","react","server-components","rsc","safe","no-eval","cloudflare-workers","edge","markdown"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@1.6.0","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"e32d5e9d9fc3637a0732d524017c15aa7e3dd5d5","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-1.6.0.tgz","fileCount":89,"integrity":"sha512-Q6mSBqYhGfupzA+jjXtMQ0eQLMS9lwcjz8ukdE7q2j7bvOUL79CGapsOCl3W2jbzipE7+PFZoQ7nivb4RC+WLQ==","signatures":[{"sig":"MEUCIBn3WgasY7vqPq7tl/4I4PAc8hDTQ0oU480gUWE1n+AnAiEAo2QWaoyeH70lnY+MFKk+igakqJSODOobx2Ys5L6GWiU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":684419},"main":"./dist/safe-mdx.js","type":"module","_from":"file:safe-mdx-1.6.0.tgz","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./src":{"types":"./src/safe-mdx.tsx","default":"./src/safe-mdx.tsx"},"./parse":{"types":"./dist/parse.d.ts","default":"./dist/parse.js"},"./src/*":{"types":"./src/*.tsx","default":"./src/*.tsx"},"./client":{"types":"./dist/dynamic-esm-component.d.ts","default":"./dist/dynamic-esm-component.js"},"./domparser":{"types":"./dist/html/domparser.d.ts","browser":"./dist/html/domparser-browser.js","default":"./dist/html/domparser.js"},"./package.json":"./package.json"},"scripts":{"demo":"vite","test":"vitest","build":"tsc","start":"vite preview","compile":"tsc","demo:build":"vite build","deploy-demo":"vite build && npx -y wrangler pages deploy"},"_npmUser":{"name":"xmorse","email":"beats.by.morse@gmail.com"},"_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/9e08bd3c598e4cce5034aa6c0b1c1230/safe-mdx-1.6.0.tgz","_integrity":"sha512-Q6mSBqYhGfupzA+jjXtMQ0eQLMS9lwcjz8ukdE7q2j7bvOUL79CGapsOCl3W2jbzipE7+PFZoQ7nivb4RC+WLQ==","repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"11.9.0","description":"Render MDX in React without eval, works in Cloudflare Workers and Vercel Edge","directories":{},"_nodeVersion":"24.14.0","dependencies":{"remark":"^15.0.1","unified":"^11.0.5","linkedom":"^0.18.12","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","@babel/types":"^7.28.2","@babel/parser":"^7.28.0","style-to-object":"^1.0.8","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","collapse-white-space":"^2.1.0","@standard-schema/spec":"^1.0.0","eval-estree-expression":"^3.0.0","unist-util-visit-parents":"^6.0.1"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","vite":"^6.2.6","react":"^19.2.1","dedent":"^1.5.1","rimraf":"^6.0.1","vitest":"^3.1.3","escodegen":"^2.1.0","react-dom":"^19.2.1","typescript":"5.8.3","@types/node":"^22.15.17","tailwindcss":"^4.1.11","@types/mdast":"^4.0.0","@types/react":"^19.2.7","@types/unist":"^3.0.3","remark-parse":"^11.0.0","@changesets/cli":"^2.28.1","@types/escodegen":"^0.0.10","@types/react-dom":"^19.2.3","remark-stringify":"^11.0.0","@tailwindcss/vite":"^4.1.11","@types/estree-jsx":"^1.0.5","mdast-util-mdx-jsx":"^3.2.0","@vitest/coverage-v8":"^1.6.0","@vitejs/plugin-react":"^4.7.0","importmap-vite-plugin":"^0.0.0","@tailwindcss/typography":"^0.5.16"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_1.6.0_1777459440685_0.7134147751760314","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"safe-mdx","version":"1.7.0","keywords":["mdx","react","server-components","rsc","safe","no-eval","cloudflare-workers","edge","markdown"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@1.7.0","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"df8b0705eef98793dfd589cd7f88ceef6532775d","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-1.7.0.tgz","fileCount":89,"integrity":"sha512-7cr/4E15rlEhUrw4L9aneYGajgDy6nykKuS7N62BUW1DAHzB4HzsJ1aNoY8PncZuuVNwRQUzDN6pdiOxFy0OqQ==","signatures":[{"sig":"MEUCIQCkuhUhkvc/vKuehalJbT4NiYdmhDUNCLbO/OS5EYkOzAIgTUUntAGJgR4u410nDqyWU8zmW/JJm729VK7LPXzr+co=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":741201},"main":"./dist/safe-mdx.js","type":"module","_from":"file:safe-mdx-1.7.0.tgz","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./src":{"types":"./src/safe-mdx.tsx","default":"./src/safe-mdx.tsx"},"./parse":{"types":"./dist/parse.d.ts","default":"./dist/parse.js"},"./src/*":{"types":"./src/*.tsx","default":"./src/*.tsx"},"./client":{"types":"./dist/dynamic-esm-component.d.ts","default":"./dist/dynamic-esm-component.js"},"./domparser":{"types":"./dist/html/domparser.d.ts","browser":"./dist/html/domparser-browser.js","default":"./dist/html/domparser.js"},"./package.json":"./package.json"},"scripts":{"demo":"vite","test":"vitest","build":"tsc","start":"vite preview","compile":"tsc","demo:build":"vite build","deploy-demo":"vite build && npx -y wrangler pages deploy"},"_npmUser":{"name":"xmorse","email":"beats.by.morse@gmail.com"},"_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/a52cfb7d3b303556ca5c86f9990aafae/safe-mdx-1.7.0.tgz","_integrity":"sha512-7cr/4E15rlEhUrw4L9aneYGajgDy6nykKuS7N62BUW1DAHzB4HzsJ1aNoY8PncZuuVNwRQUzDN6pdiOxFy0OqQ==","repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"11.9.0","description":"Render MDX in React without eval, works in Cloudflare Workers and Vercel Edge","directories":{},"_nodeVersion":"24.14.0","dependencies":{"remark":"^15.0.1","unified":"^11.0.5","linkedom":"^0.18.12","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","@babel/types":"^7.28.2","@babel/parser":"^7.28.0","style-to-object":"^1.0.8","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","collapse-white-space":"^2.1.0","@standard-schema/spec":"^1.0.0","eval-estree-expression":"^3.0.0","unist-util-visit-parents":"^6.0.1"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","vite":"^6.2.6","react":"^19.2.1","dedent":"^1.5.1","rimraf":"^6.0.1","vitest":"^3.1.3","escodegen":"^2.1.0","react-dom":"^19.2.1","typescript":"5.8.3","@types/node":"^22.15.17","tailwindcss":"^4.1.11","@types/mdast":"^4.0.0","@types/react":"^19.2.7","@types/unist":"^3.0.3","remark-parse":"^11.0.0","@changesets/cli":"^2.28.1","@types/escodegen":"^0.0.10","@types/react-dom":"^19.2.3","remark-stringify":"^11.0.0","@tailwindcss/vite":"^4.1.11","@types/estree-jsx":"^1.0.5","mdast-util-mdx-jsx":"^3.2.0","@vitest/coverage-v8":"^1.6.0","@vitejs/plugin-react":"^4.7.0","importmap-vite-plugin":"^0.0.0","@tailwindcss/typography":"^0.5.16"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_1.7.0_1777565570364_0.421105438992875","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"safe-mdx","version":"1.8.0","keywords":["mdx","react","server-components","rsc","safe","no-eval","cloudflare-workers","edge","markdown"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@1.8.0","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"c4b7136161b3b8a0bb66b7189449418487acb20f","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-1.8.0.tgz","fileCount":109,"integrity":"sha512-LreURjpkNuLYVZT59ygJQaxER82VQLG/iBOPJ1y+/r9dNlYQizXZxMu0H0bdB6DOf12KGFhOiaHXRILyYEKbpw==","signatures":[{"sig":"MEQCIG3MfFwnuLYzfi8BJ//E4nDMNf5PtZ6HEY+6NdLATnn0AiBUsjMZQ2Ix1oxDIvtHUb6uJDjZIf33fpVqOU/Wi64Y8A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":802243},"main":"./dist/safe-mdx.js","type":"module","_from":"file:safe-mdx-1.8.0.tgz","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./src":{"types":"./src/safe-mdx.tsx","default":"./src/safe-mdx.tsx"},"./parse":{"types":"./dist/parse.d.ts","default":"./dist/parse.js"},"./src/*":{"types":"./src/*.tsx","default":"./src/*.tsx"},"./client":{"types":"./dist/dynamic-esm-component.d.ts","default":"./dist/dynamic-esm-component.js"},"./markdown":{"types":"./dist/markdown.d.ts","default":"./dist/markdown.js"},"./domparser":{"types":"./dist/html/domparser.d.ts","browser":"./dist/html/domparser-browser.js","default":"./dist/html/domparser.js"},"./package.json":"./package.json","./incremental-parse":{"types":"./dist/incremental-parse.d.ts","default":"./dist/incremental-parse.js"}},"scripts":{"demo":"vite","test":"vitest","build":"tsc","start":"vite preview","compile":"tsc","demo:build":"vite build","deploy-demo":"vite build && npx -y wrangler pages deploy"},"_npmUser":{"name":"xmorse","email":"beats.by.morse@gmail.com"},"_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/5323ccad5cf8ec4510a69244c8c01df7/safe-mdx-1.8.0.tgz","_integrity":"sha512-LreURjpkNuLYVZT59ygJQaxER82VQLG/iBOPJ1y+/r9dNlYQizXZxMu0H0bdB6DOf12KGFhOiaHXRILyYEKbpw==","repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"11.9.0","description":"Render MDX in React without eval, works in Cloudflare Workers and Vercel Edge","directories":{},"_nodeVersion":"24.14.0","dependencies":{"remark":"^15.0.1","unified":"^11.0.5","linkedom":"^0.18.12","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","@babel/types":"^7.28.2","@babel/parser":"^7.28.0","style-to-object":"^1.0.8","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","collapse-white-space":"^2.1.0","@standard-schema/spec":"^1.0.0","eval-estree-expression":"^3.0.0","unist-util-visit-parents":"^6.0.1"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","vite":"^6.2.6","react":"^19.2.1","dedent":"^1.5.1","rimraf":"^6.0.1","vitest":"^3.1.3","escodegen":"^2.1.0","react-dom":"^19.2.1","typescript":"5.8.3","@types/node":"^22.15.17","tailwindcss":"^4.1.11","@types/mdast":"^4.0.0","@types/react":"^19.2.7","@types/unist":"^3.0.3","remark-parse":"^11.0.0","@changesets/cli":"^2.28.1","@types/escodegen":"^0.0.10","@types/react-dom":"^19.2.3","remark-stringify":"^11.0.0","@tailwindcss/vite":"^4.1.11","@types/estree-jsx":"^1.0.5","mdast-util-mdx-jsx":"^3.2.0","@vitest/coverage-v8":"^1.6.0","@vitejs/plugin-react":"^4.7.0","importmap-vite-plugin":"^0.0.0","@tailwindcss/typography":"^0.5.16"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_1.8.0_1777631252152_0.35023203065169595","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"safe-mdx","version":"1.9.0","keywords":["mdx","react","server-components","rsc","safe","no-eval","cloudflare-workers","edge","markdown"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@1.9.0","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"36fd2f3c2ede202d34d1d3530e6abc20eef2bbf4","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-1.9.0.tgz","fileCount":109,"integrity":"sha512-pWZSKi0ICKJLX1Bp/cPWkhSoY1HVELRtqQqiPKeOv8t0FDdUaXacId9kIqHy1N/QvJoO34mtJU2KsDl11HmVVw==","signatures":[{"sig":"MEQCIDRUhydB9gF+rjlm8axmkpYeq/aklEb+9buBNe2wMIOrAiBlQkt2Q3O2pmYcjxWv3NJsYCQ8f2+86KkTjvAWmxE5Dw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":803229},"main":"./dist/safe-mdx.js","type":"module","_from":"file:safe-mdx-1.9.0.tgz","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./src":{"types":"./src/safe-mdx.tsx","default":"./src/safe-mdx.tsx"},"./parse":{"types":"./dist/parse.d.ts","default":"./dist/parse.js"},"./src/*":{"types":"./src/*.tsx","default":"./src/*.tsx"},"./client":{"types":"./dist/dynamic-esm-component.d.ts","default":"./dist/dynamic-esm-component.js"},"./markdown":{"types":"./dist/markdown.d.ts","default":"./dist/markdown.js"},"./domparser":{"types":"./dist/html/domparser.d.ts","browser":"./dist/html/domparser-browser.js","default":"./dist/html/domparser.js"},"./package.json":"./package.json","./incremental-parse":{"types":"./dist/incremental-parse.d.ts","default":"./dist/incremental-parse.js"}},"scripts":{"demo":"vite","test":"vitest","build":"tsc","start":"vite preview","compile":"tsc","demo:build":"vite build","deploy-demo":"vite build && npx -y wrangler pages deploy"},"_npmUser":{"name":"xmorse","email":"beats.by.morse@gmail.com"},"_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/3b1e0c0d2da073e148959ca4857ac51a/safe-mdx-1.9.0.tgz","_integrity":"sha512-pWZSKi0ICKJLX1Bp/cPWkhSoY1HVELRtqQqiPKeOv8t0FDdUaXacId9kIqHy1N/QvJoO34mtJU2KsDl11HmVVw==","repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"11.9.0","description":"Render MDX in React without eval, works in Cloudflare Workers and Vercel Edge","directories":{},"_nodeVersion":"24.14.0","dependencies":{"remark":"^15.0.1","unified":"^11.0.5","linkedom":"^0.18.12","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","@babel/types":"^7.28.2","@babel/parser":"^7.28.0","style-to-object":"^1.0.8","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","collapse-white-space":"^2.1.0","@standard-schema/spec":"^1.0.0","eval-estree-expression":"^3.0.0","unist-util-visit-parents":"^6.0.1"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","vite":"^6.2.6","react":"^19.2.1","dedent":"^1.5.1","rimraf":"^6.0.1","vitest":"^3.1.3","escodegen":"^2.1.0","react-dom":"^19.2.1","typescript":"5.8.3","@types/node":"^22.15.17","tailwindcss":"^4.1.11","@types/mdast":"^4.0.0","@types/react":"^19.2.7","@types/unist":"^3.0.3","remark-parse":"^11.0.0","@changesets/cli":"^2.28.1","@types/escodegen":"^0.0.10","@types/react-dom":"^19.2.3","remark-stringify":"^11.0.0","@tailwindcss/vite":"^4.1.11","@types/estree-jsx":"^1.0.5","mdast-util-mdx-jsx":"^3.2.0","@vitest/coverage-v8":"^1.6.0","@vitejs/plugin-react":"^4.7.0","importmap-vite-plugin":"^0.0.0","@tailwindcss/typography":"^0.5.16"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_1.9.0_1777712775015_0.4207210501537939","host":"s3://npm-registry-packages-npm-production"}},"1.10.0":{"name":"safe-mdx","version":"1.10.0","keywords":["mdx","react","server-components","rsc","safe","no-eval","cloudflare-workers","edge","markdown"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@1.10.0","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"73f539720b1c68ab5fe4933bb182b3cc5bb153be","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-1.10.0.tgz","fileCount":109,"integrity":"sha512-t4xOlst9in07qh9hJywiGfVzpKdFSTNk9OsNvAhtxMlfAQjtWolTOrkDTB/SbQaytuEPOQajocRvrw/JYS6qiA==","signatures":[{"sig":"MEQCIFacrYvlCemv8+XnB4kxNcHmAwb5sjX1ljNrUB75hH5kAiA2cP83s5j3eknhoun7CvijLGHbWNLilqlBDsf/oyfOgQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":817890},"main":"./dist/safe-mdx.js","type":"module","_from":"file:safe-mdx-1.10.0.tgz","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./src":{"types":"./src/safe-mdx.tsx","default":"./src/safe-mdx.tsx"},"./parse":{"types":"./dist/parse.d.ts","default":"./dist/parse.js"},"./src/*":{"types":"./src/*.tsx","default":"./src/*.tsx"},"./client":{"types":"./dist/dynamic-esm-component.d.ts","default":"./dist/dynamic-esm-component.js"},"./markdown":{"types":"./dist/markdown.d.ts","default":"./dist/markdown.js"},"./domparser":{"types":"./dist/html/domparser.d.ts","browser":"./dist/html/domparser-browser.js","default":"./dist/html/domparser.js"},"./package.json":"./package.json","./incremental-parse":{"types":"./dist/incremental-parse.d.ts","default":"./dist/incremental-parse.js"}},"scripts":{"demo":"vite","test":"vitest","build":"tsc","start":"vite preview","compile":"tsc","demo:build":"vite build","deploy-demo":"vite build && npx -y wrangler pages deploy"},"_npmUser":{"name":"xmorse","email":"beats.by.morse@gmail.com"},"_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/16303eb5b80131d13afa5aea50208763/safe-mdx-1.10.0.tgz","_integrity":"sha512-t4xOlst9in07qh9hJywiGfVzpKdFSTNk9OsNvAhtxMlfAQjtWolTOrkDTB/SbQaytuEPOQajocRvrw/JYS6qiA==","repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"11.9.0","description":"Render MDX in React without eval, works in Cloudflare Workers and Vercel Edge","directories":{},"_nodeVersion":"24.14.0","dependencies":{"remark":"^15.0.1","unified":"^11.0.5","linkedom":"^0.18.12","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","@babel/types":"^7.28.2","@babel/parser":"^7.28.0","style-to-object":"^1.0.8","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","collapse-white-space":"^2.1.0","@standard-schema/spec":"^1.0.0","eval-estree-expression":"^3.0.0","unist-util-visit-parents":"^6.0.1"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","vite":"^6.2.6","react":"^19.2.1","dedent":"^1.5.1","rimraf":"^6.0.1","vitest":"^3.1.3","escodegen":"^2.1.0","react-dom":"^19.2.1","typescript":"5.8.3","@types/node":"^22.15.17","tailwindcss":"^4.1.11","@types/mdast":"^4.0.0","@types/react":"^19.2.7","@types/unist":"^3.0.3","remark-parse":"^11.0.0","@changesets/cli":"^2.28.1","@types/escodegen":"^0.0.10","@types/react-dom":"^19.2.3","remark-stringify":"^11.0.0","@tailwindcss/vite":"^4.1.11","@types/estree-jsx":"^1.0.5","mdast-util-mdx-jsx":"^3.2.0","@vitest/coverage-v8":"^1.6.0","@vitejs/plugin-react":"^4.7.0","importmap-vite-plugin":"^0.0.0","@tailwindcss/typography":"^0.5.16"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_1.10.0_1777757596149_0.7123015014069756","host":"s3://npm-registry-packages-npm-production"}},"1.11.0":{"name":"safe-mdx","version":"1.11.0","keywords":["mdx","react","server-components","rsc","safe","no-eval","cloudflare-workers","edge","markdown"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@1.11.0","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"ac2ec91f9804ad3b66f6a21bf8a21e60f2d203a1","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-1.11.0.tgz","fileCount":109,"integrity":"sha512-j+DWlTprnhM0Uq1g8RwLPqr6obMukTWJ8+BY9g4Yrn0l7V2/0uzf+Gqvzpvo59lIpUP+49MfYrI4MkJCn1QMMQ==","signatures":[{"sig":"MEUCIBD+fJOdo39SpaWjbZT3nhLjDKl7JeviPoemhdP5HnXIAiEA/N4NRdWyUpjWN4C7wPIhcBL9oHJZXtHlhKZaRsD9OqY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":886207},"main":"./dist/safe-mdx.js","type":"module","_from":"file:safe-mdx-1.11.0.tgz","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./src":{"types":"./src/safe-mdx.tsx","default":"./src/safe-mdx.tsx"},"./parse":{"types":"./dist/parse.d.ts","default":"./dist/parse.js"},"./src/*":{"types":"./src/*.tsx","default":"./src/*.tsx"},"./client":{"types":"./dist/dynamic-esm-component.d.ts","default":"./dist/dynamic-esm-component.js"},"./markdown":{"types":"./dist/markdown.d.ts","default":"./dist/markdown.js"},"./domparser":{"types":"./dist/html/domparser.d.ts","browser":"./dist/html/domparser-browser.js","default":"./dist/html/domparser.js"},"./package.json":"./package.json","./incremental-parse":{"types":"./dist/incremental-parse.d.ts","default":"./dist/incremental-parse.js"}},"scripts":{"demo":"vite","test":"vitest","build":"tsc","start":"vite preview","compile":"tsc","demo:build":"vite build","deploy-demo":"vite build && npx -y wrangler pages deploy"},"_npmUser":{"name":"xmorse","email":"beats.by.morse@gmail.com"},"_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/81525e14035f67674f2bb0312f13fe2a/safe-mdx-1.11.0.tgz","_integrity":"sha512-j+DWlTprnhM0Uq1g8RwLPqr6obMukTWJ8+BY9g4Yrn0l7V2/0uzf+Gqvzpvo59lIpUP+49MfYrI4MkJCn1QMMQ==","repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"11.9.0","description":"Render MDX in React without eval, works in Cloudflare Workers and Vercel Edge","directories":{},"_nodeVersion":"24.14.0","dependencies":{"remark":"^15.0.1","unified":"^11.0.5","linkedom":"^0.18.12","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","@babel/types":"^7.28.2","@babel/parser":"^7.28.0","style-to-object":"^1.0.8","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","collapse-white-space":"^2.1.0","@standard-schema/spec":"^1.0.0","eval-estree-expression":"^3.0.0","unist-util-visit-parents":"^6.0.1"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","vite":"^6.2.6","react":"^19.2.1","dedent":"^1.5.1","rimraf":"^6.0.1","vitest":"^3.1.3","escodegen":"^2.1.0","react-dom":"^19.2.1","typescript":"5.8.3","@types/node":"^22.15.17","tailwindcss":"^4.1.11","@types/mdast":"^4.0.0","@types/react":"^19.2.7","@types/unist":"^3.0.3","remark-parse":"^11.0.0","@changesets/cli":"^2.28.1","@types/escodegen":"^0.0.10","@types/react-dom":"^19.2.3","remark-stringify":"^11.0.0","@tailwindcss/vite":"^4.1.11","@types/estree-jsx":"^1.0.5","mdast-util-mdx-jsx":"^3.2.0","@vitest/coverage-v8":"^1.6.0","@vitejs/plugin-react":"^4.7.0","importmap-vite-plugin":"^0.0.0","@tailwindcss/typography":"^0.5.16"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_1.11.0_1778141215894_0.0605969168154783","host":"s3://npm-registry-packages-npm-production"}},"1.11.1":{"name":"safe-mdx","version":"1.11.1","keywords":["mdx","react","server-components","rsc","safe","no-eval","cloudflare-workers","edge","markdown"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@1.11.1","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"9e405803676b25b951bfdeac3558fbb9b99fd192","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-1.11.1.tgz","fileCount":114,"integrity":"sha512-oJQazAwAk5sjA77ioCXNxXYmdxNnEhS3Rxpl5Vh+ctY5X/0a5JkfPnTDr+tbVjMAyWv0zFhJxAPjTWpjUVlMRg==","signatures":[{"sig":"MEYCIQCUKKFg+8X5oFVPBXj9BbAvSKNqPrAQnBs670wp8mVpsQIhALdy7Wclouov1zLXqOURIy3auiof7DJiSKckAYF/4pCl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":889486},"main":"./dist/safe-mdx.js","type":"module","_from":"file:safe-mdx-1.11.1.tgz","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./src":{"types":"./src/safe-mdx.tsx","default":"./src/safe-mdx.tsx"},"./parse":{"types":"./dist/parse.d.ts","default":"./dist/parse.js"},"./src/*":{"types":"./src/*.tsx","default":"./src/*.tsx"},"./client":{"types":"./dist/dynamic-esm-component.d.ts","default":"./dist/dynamic-esm-component.js","react-server":"./dist/dynamic-esm-component.rsc.js"},"./markdown":{"types":"./dist/markdown.d.ts","default":"./dist/markdown.js"},"./domparser":{"types":"./dist/html/domparser.d.ts","browser":"./dist/html/domparser-browser.js","default":"./dist/html/domparser.js"},"./package.json":"./package.json","./incremental-parse":{"types":"./dist/incremental-parse.d.ts","default":"./dist/incremental-parse.js"}},"scripts":{"demo":"vite","test":"vitest","build":"tsc","start":"vite preview","compile":"tsc","demo:build":"vite build","deploy-demo":"vite build && npx -y wrangler pages deploy"},"_npmUser":{"name":"xmorse","email":"beats.by.morse@gmail.com"},"_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/8f52bcf8dd2b8855333c2bec3acf0c8e/safe-mdx-1.11.1.tgz","_integrity":"sha512-oJQazAwAk5sjA77ioCXNxXYmdxNnEhS3Rxpl5Vh+ctY5X/0a5JkfPnTDr+tbVjMAyWv0zFhJxAPjTWpjUVlMRg==","repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"11.12.1","description":"Render MDX in React without eval, works in Cloudflare Workers and Vercel Edge","directories":{},"_nodeVersion":"24.15.0","dependencies":{"remark":"^15.0.1","unified":"^11.0.5","linkedom":"^0.18.12","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","@babel/types":"^7.28.2","@babel/parser":"^7.28.0","style-to-object":"^1.0.8","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","collapse-white-space":"^2.1.0","@standard-schema/spec":"^1.0.0","eval-estree-expression":"^3.0.0","unist-util-visit-parents":"^6.0.1"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","vite":"^6.2.6","react":"^19.2.1","dedent":"^1.5.1","rimraf":"^6.0.1","vitest":"^3.1.3","escodegen":"^2.1.0","react-dom":"^19.2.1","typescript":"5.8.3","@types/node":"^22.15.17","tailwindcss":"^4.1.11","@types/mdast":"^4.0.0","@types/react":"^19.2.7","@types/unist":"^3.0.3","remark-parse":"^11.0.0","@changesets/cli":"^2.28.1","@types/escodegen":"^0.0.10","@types/react-dom":"^19.2.3","remark-stringify":"^11.0.0","@tailwindcss/vite":"^4.1.11","@types/estree-jsx":"^1.0.5","mdast-util-mdx-jsx":"^3.2.0","@vitest/coverage-v8":"^1.6.0","@vitejs/plugin-react":"^4.7.0","importmap-vite-plugin":"^0.0.0","@tailwindcss/typography":"^0.5.16"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_1.11.1_1779196982408_0.7882454785058433","host":"s3://npm-registry-packages-npm-production"}},"1.11.2":{"name":"safe-mdx","version":"1.11.2","keywords":["mdx","react","server-components","rsc","safe","no-eval","cloudflare-workers","edge","markdown"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@1.11.2","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"e7ff9d9a2a5f59a3632c5308c005687056f88f10","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-1.11.2.tgz","fileCount":114,"integrity":"sha512-EltsOx5glElIIDRdpeM5p2QsKsMsJ9aUs9zyiSKuAUBjZQIAe2byOEIMtyqzWY+ey4npAcs8VRndkd8bG44QwA==","signatures":[{"sig":"MEYCIQDhjlW2igvVkFlccnJsQn8roI+AQhtMk7e+YGx7PYw2iQIhAJ1+Me3tZ9Dpsz5tgfvz6IGMr88M2NQoRnenGsL5sB2P","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":891399},"main":"./dist/safe-mdx.js","type":"module","_from":"file:safe-mdx-1.11.2.tgz","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./src":{"types":"./src/safe-mdx.tsx","default":"./src/safe-mdx.tsx"},"./parse":{"types":"./dist/parse.d.ts","default":"./dist/parse.js"},"./src/*":{"types":"./src/*.tsx","default":"./src/*.tsx"},"./client":{"types":"./dist/dynamic-esm-component.d.ts","default":"./dist/dynamic-esm-component.js","react-server":"./dist/dynamic-esm-component.rsc.js"},"./markdown":{"types":"./dist/markdown.d.ts","default":"./dist/markdown.js"},"./domparser":{"types":"./dist/html/domparser.d.ts","browser":"./dist/html/domparser-browser.js","default":"./dist/html/domparser.js"},"./package.json":"./package.json","./incremental-parse":{"types":"./dist/incremental-parse.d.ts","default":"./dist/incremental-parse.js"}},"scripts":{"demo":"vite","test":"vitest","build":"tsc","start":"vite preview","compile":"tsc","demo:build":"vite build","deploy-demo":"vite build && npx -y wrangler pages deploy"},"_npmUser":{"name":"xmorse","email":"beats.by.morse@gmail.com"},"_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/5bbb3e913d3a1333a204cbd1937b1fde/safe-mdx-1.11.2.tgz","_integrity":"sha512-EltsOx5glElIIDRdpeM5p2QsKsMsJ9aUs9zyiSKuAUBjZQIAe2byOEIMtyqzWY+ey4npAcs8VRndkd8bG44QwA==","repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"11.12.1","description":"Render MDX in React without eval, works in Cloudflare Workers and Vercel Edge","directories":{},"_nodeVersion":"24.15.0","dependencies":{"remark":"^15.0.1","unified":"^11.0.5","linkedom":"^0.18.12","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","@babel/types":"^7.28.2","@babel/parser":"^7.28.0","style-to-object":"^1.0.8","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","collapse-white-space":"^2.1.0","@standard-schema/spec":"^1.0.0","eval-estree-expression":"^3.0.0","unist-util-visit-parents":"^6.0.1"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","vite":"^6.2.6","react":"^19.2.1","dedent":"^1.5.1","rimraf":"^6.0.1","vitest":"^3.1.3","escodegen":"^2.1.0","react-dom":"^19.2.1","typescript":"5.8.3","@types/node":"^22.15.17","tailwindcss":"^4.1.11","@types/mdast":"^4.0.0","@types/react":"^19.2.7","@types/unist":"^3.0.3","remark-parse":"^11.0.0","@changesets/cli":"^2.28.1","@types/escodegen":"^0.0.10","@types/react-dom":"^19.2.3","remark-stringify":"^11.0.0","@tailwindcss/vite":"^4.1.11","@types/estree-jsx":"^1.0.5","mdast-util-mdx-jsx":"^3.2.0","@vitest/coverage-v8":"^1.6.0","@vitejs/plugin-react":"^4.7.0","importmap-vite-plugin":"^0.0.0","@tailwindcss/typography":"^0.5.16"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_1.11.2_1781260504592_0.6869324443569507","host":"s3://npm-registry-packages-npm-production"}},"1.11.3":{"name":"safe-mdx","version":"1.11.3","keywords":["mdx","react","server-components","rsc","safe","no-eval","cloudflare-workers","edge","markdown"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@1.11.3","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"a3b984bd0dd3cc53c0c51d633dd4278b49deb873","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-1.11.3.tgz","fileCount":114,"integrity":"sha512-J4NbTtY0aMT2y29RIOhCxBE0Rdl/Zq4DihyvzCtRV55LTgx387d3aPa13b2KqEQWIvGaDGd727lXGWE8y1fneg==","signatures":[{"sig":"MEUCIE9KAxrWtqkXDxk/ZOuQZ9KKTHgP6pLe76zmlI3A2OAlAiEA9SEMAk10eqfFE5gBI0PT4aOgqO/4KYfhVwybbRvvbng=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":897114},"main":"./dist/safe-mdx.js","type":"module","_from":"file:safe-mdx-1.11.3.tgz","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./src":{"types":"./src/safe-mdx.tsx","default":"./src/safe-mdx.tsx"},"./parse":{"types":"./dist/parse.d.ts","default":"./dist/parse.js"},"./src/*":{"types":"./src/*.tsx","default":"./src/*.tsx"},"./client":{"types":"./dist/dynamic-esm-component.d.ts","default":"./dist/dynamic-esm-component.js","react-server":"./dist/dynamic-esm-component.rsc.js"},"./markdown":{"types":"./dist/markdown.d.ts","default":"./dist/markdown.js"},"./domparser":{"types":"./dist/html/domparser.d.ts","browser":"./dist/html/domparser-browser.js","default":"./dist/html/domparser.js"},"./package.json":"./package.json","./incremental-parse":{"types":"./dist/incremental-parse.d.ts","default":"./dist/incremental-parse.js"}},"scripts":{"demo":"vite","test":"vitest","build":"tsc","start":"vite preview","compile":"tsc","demo:build":"vite build","deploy-demo":"vite build && npx -y wrangler pages deploy"},"_npmUser":{"name":"xmorse","email":"beats.by.morse@gmail.com"},"_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/b69b05898d2b27eb1f5053e827cbfd0e/safe-mdx-1.11.3.tgz","_integrity":"sha512-J4NbTtY0aMT2y29RIOhCxBE0Rdl/Zq4DihyvzCtRV55LTgx387d3aPa13b2KqEQWIvGaDGd727lXGWE8y1fneg==","repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"11.12.1","description":"Render MDX in React without eval, works in Cloudflare Workers and Vercel Edge","directories":{},"_nodeVersion":"24.15.0","dependencies":{"remark":"^15.0.1","unified":"^11.0.5","linkedom":"^0.18.12","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","@babel/types":"^7.28.2","@babel/parser":"^7.28.0","style-to-object":"^1.0.8","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","collapse-white-space":"^2.1.0","@standard-schema/spec":"^1.0.0","eval-estree-expression":"^3.0.0","unist-util-visit-parents":"^6.0.1"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","vite":"^6.2.6","react":"^19.2.1","dedent":"^1.5.1","rimraf":"^6.0.1","vitest":"^3.1.3","escodegen":"^2.1.0","react-dom":"^19.2.1","typescript":"5.8.3","@types/node":"^22.15.17","tailwindcss":"^4.1.11","@types/mdast":"^4.0.0","@types/react":"^19.2.7","@types/unist":"^3.0.3","remark-parse":"^11.0.0","@changesets/cli":"^2.28.1","@types/escodegen":"^0.0.10","@types/react-dom":"^19.2.3","remark-stringify":"^11.0.0","@tailwindcss/vite":"^4.1.11","@types/estree-jsx":"^1.0.5","mdast-util-mdx-jsx":"^3.2.0","@vitest/coverage-v8":"^1.6.0","@vitejs/plugin-react":"^4.7.0","importmap-vite-plugin":"^0.0.0","@tailwindcss/typography":"^0.5.16"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_1.11.3_1781689482227_0.28511122710473447","host":"s3://npm-registry-packages-npm-production"}},"1.11.4":{"name":"safe-mdx","version":"1.11.4","keywords":["mdx","react","server-components","rsc","safe","no-eval","cloudflare-workers","edge","markdown"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@1.11.4","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"70346a002a385f62d4abf847e8525bd7869be5cf","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-1.11.4.tgz","fileCount":114,"integrity":"sha512-YXM/oR03G7YJf1xGTQ68AR0fvZ0YQoxqEwvYyoR7+plZwdFWJ+bWU3TcgHmsU6iD8Z1nQAstfSjHOeKMrfoOJw==","signatures":[{"sig":"MEUCIQDY8uoa6oFPDAL5rS6b68u925Q6QO+bTByDbgRTRoHmMAIgcgXl5nB1au2bKVsdchVpAcBfiNxa2+qI1EtCLnmOwGA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":903199},"main":"./dist/safe-mdx.js","type":"module","_from":"file:safe-mdx-1.11.4.tgz","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./src":{"types":"./src/safe-mdx.tsx","default":"./src/safe-mdx.tsx"},"./parse":{"types":"./dist/parse.d.ts","default":"./dist/parse.js"},"./src/*":{"types":"./src/*.tsx","default":"./src/*.tsx"},"./client":{"types":"./dist/dynamic-esm-component.d.ts","default":"./dist/dynamic-esm-component.js","react-server":"./dist/dynamic-esm-component.rsc.js"},"./markdown":{"types":"./dist/markdown.d.ts","default":"./dist/markdown.js"},"./domparser":{"types":"./dist/html/domparser.d.ts","browser":"./dist/html/domparser-browser.js","default":"./dist/html/domparser.js"},"./package.json":"./package.json","./incremental-parse":{"types":"./dist/incremental-parse.d.ts","default":"./dist/incremental-parse.js"}},"scripts":{"demo":"vite","test":"vitest","build":"tsc","start":"vite preview","compile":"tsc","demo:build":"vite build","deploy-demo":"vite build && npx -y wrangler pages deploy"},"_npmUser":{"name":"xmorse","email":"beats.by.morse@gmail.com"},"_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/9336718aaf7081271321e2bae7a4f236/safe-mdx-1.11.4.tgz","_integrity":"sha512-YXM/oR03G7YJf1xGTQ68AR0fvZ0YQoxqEwvYyoR7+plZwdFWJ+bWU3TcgHmsU6iD8Z1nQAstfSjHOeKMrfoOJw==","repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"11.12.1","description":"Render MDX in React without eval, works in Cloudflare Workers and Vercel Edge","directories":{},"_nodeVersion":"24.15.0","dependencies":{"remark":"^15.0.1","unified":"^11.0.5","linkedom":"^0.18.12","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","@babel/types":"^7.28.2","@babel/parser":"^7.28.0","style-to-object":"^1.0.8","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","collapse-white-space":"^2.1.0","@standard-schema/spec":"^1.0.0","eval-estree-expression":"^3.0.0","unist-util-visit-parents":"^6.0.1"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","vite":"^6.2.6","react":"^19.2.1","dedent":"^1.5.1","rimraf":"^6.0.1","vitest":"^3.1.3","escodegen":"^2.1.0","react-dom":"^19.2.1","typescript":"5.8.3","@types/node":"^22.15.17","tailwindcss":"^4.1.11","@types/mdast":"^4.0.0","@types/react":"^19.2.7","@types/unist":"^3.0.3","remark-parse":"^11.0.0","@changesets/cli":"^2.28.1","@types/escodegen":"^0.0.10","@types/react-dom":"^19.2.3","remark-stringify":"^11.0.0","@tailwindcss/vite":"^4.1.11","@types/estree-jsx":"^1.0.5","mdast-util-mdx-jsx":"^3.2.0","@vitest/coverage-v8":"^1.6.0","@vitejs/plugin-react":"^4.7.0","importmap-vite-plugin":"^0.0.0","@tailwindcss/typography":"^0.5.16"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_1.11.4_1781689666636_0.9031073822818672","host":"s3://npm-registry-packages-npm-production"}},"1.11.5":{"name":"safe-mdx","version":"1.11.5","keywords":["mdx","react","server-components","rsc","safe","no-eval","cloudflare-workers","edge","markdown"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@1.11.5","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"8fe8eebda2278fb36c0d83ceb1599f10e5ef991d","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-1.11.5.tgz","fileCount":114,"integrity":"sha512-bGH+IAhCBi6pI4neklBk/IxE5jwmC2Wkb/5OMf55fsTBDU9vom/qk/P3kk97eLKLsXj+I2pVrt/Rgc0RiS9iIw==","signatures":[{"sig":"MEUCIQDLLYHoMymEfHjwU0yxgHCJjB/BWO8BAqnh7xn3gYPzHAIgYQvHdRgOY6rH8GUy1EF//AKKsyR9NqlAoAiw2D7ccPM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":915103},"main":"./dist/safe-mdx.js","type":"module","_from":"file:safe-mdx-1.11.5.tgz","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./src":{"types":"./src/safe-mdx.tsx","default":"./src/safe-mdx.tsx"},"./parse":{"types":"./dist/parse.d.ts","default":"./dist/parse.js"},"./src/*":{"types":"./src/*.tsx","default":"./src/*.tsx"},"./client":{"types":"./dist/dynamic-esm-component.d.ts","default":"./dist/dynamic-esm-component.js","react-server":"./dist/dynamic-esm-component.rsc.js"},"./markdown":{"types":"./dist/markdown.d.ts","default":"./dist/markdown.js"},"./domparser":{"types":"./dist/html/domparser.d.ts","browser":"./dist/html/domparser-browser.js","default":"./dist/html/domparser.js"},"./package.json":"./package.json","./incremental-parse":{"types":"./dist/incremental-parse.d.ts","default":"./dist/incremental-parse.js"}},"scripts":{"demo":"vite","test":"vitest","build":"tsc","start":"vite preview","compile":"tsc","demo:build":"vite build","deploy-demo":"vite build && npx -y wrangler pages deploy"},"_npmUser":{"name":"xmorse","email":"beats.by.morse@gmail.com"},"_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/43a0faffb29f091b09a44c6d4cba06ac/safe-mdx-1.11.5.tgz","_integrity":"sha512-bGH+IAhCBi6pI4neklBk/IxE5jwmC2Wkb/5OMf55fsTBDU9vom/qk/P3kk97eLKLsXj+I2pVrt/Rgc0RiS9iIw==","repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"11.12.1","description":"Render MDX in React without eval, works in Cloudflare Workers and Vercel Edge","directories":{},"_nodeVersion":"24.15.0","dependencies":{"remark":"^15.0.1","unified":"^11.0.5","linkedom":"^0.18.12","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","@babel/types":"^7.28.2","@babel/parser":"^7.28.0","style-to-object":"^1.0.8","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","collapse-white-space":"^2.1.0","@standard-schema/spec":"^1.0.0","eval-estree-expression":"^3.0.0","unist-util-visit-parents":"^6.0.1"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","vite":"^6.2.6","react":"^19.2.1","dedent":"^1.5.1","rimraf":"^6.0.1","vitest":"^3.1.3","escodegen":"^2.1.0","react-dom":"^19.2.1","typescript":"5.8.3","@types/node":"^22.15.17","tailwindcss":"^4.1.11","@types/mdast":"^4.0.0","@types/react":"^19.2.7","@types/unist":"^3.0.3","remark-parse":"^11.0.0","@changesets/cli":"^2.28.1","@types/escodegen":"^0.0.10","@types/react-dom":"^19.2.3","remark-stringify":"^11.0.0","@tailwindcss/vite":"^4.1.11","@types/estree-jsx":"^1.0.5","mdast-util-mdx-jsx":"^3.2.0","@vitest/coverage-v8":"^1.6.0","@vitejs/plugin-react":"^4.7.0","importmap-vite-plugin":"^0.0.0","@tailwindcss/typography":"^0.5.16"},"peerDependencies":{"react":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_1.11.5_1781692087273_0.707212471995144","host":"s3://npm-registry-packages-npm-production"}},"1.12.0":{"name":"safe-mdx","version":"1.12.0","keywords":["mdx","react","server-components","rsc","safe","no-eval","cloudflare-workers","edge","markdown"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@1.12.0","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"02ffaf28cf3844ea7c9f19b328fd338c14ddde0b","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-1.12.0.tgz","fileCount":114,"integrity":"sha512-9QPxtPXUfi3wAMyTgId6e03SVTDx++DMw2WPfjAtKeICEIOBjoUsvMaVOBXxm1ImM3rH5bwxwwvHVxHWul85Ag==","signatures":[{"sig":"MEUCIQDWYGsCl0c77W9t4H250mi70pK3OqRaKynwPvag4pUQLAIgTd7a4nsbPVWG4Vfw1yPgPKjxGxVHgpu9HUwhuZNgwyM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":936241},"main":"./dist/safe-mdx.js","type":"module","_from":"file:safe-mdx-1.12.0.tgz","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./src":{"types":"./src/safe-mdx.tsx","default":"./src/safe-mdx.tsx"},"./parse":{"types":"./dist/parse.d.ts","default":"./dist/parse.js"},"./src/*":{"types":"./src/*.tsx","default":"./src/*.tsx"},"./client":{"types":"./dist/dynamic-esm-component.d.ts","default":"./dist/dynamic-esm-component.js","react-server":"./dist/dynamic-esm-component.rsc.js"},"./markdown":{"types":"./dist/markdown.d.ts","default":"./dist/markdown.js"},"./domparser":{"types":"./dist/html/domparser.d.ts","browser":"./dist/html/domparser-browser.js","default":"./dist/html/domparser.js"},"./package.json":"./package.json","./incremental-parse":{"types":"./dist/incremental-parse.d.ts","default":"./dist/incremental-parse.js"}},"scripts":{"demo":"vite","test":"vitest","build":"tsc","start":"vite preview","compile":"tsc","demo:build":"vite build","deploy-demo":"vite build && npx -y wrangler pages deploy"},"_npmUser":{"name":"xmorse","email":"beats.by.morse@gmail.com"},"_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/881683516d51ec7d804d20aca856347e/safe-mdx-1.12.0.tgz","_integrity":"sha512-9QPxtPXUfi3wAMyTgId6e03SVTDx++DMw2WPfjAtKeICEIOBjoUsvMaVOBXxm1ImM3rH5bwxwwvHVxHWul85Ag==","repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"11.12.1","description":"Render MDX in React without eval, works in Cloudflare Workers and Vercel Edge","directories":{},"_nodeVersion":"24.15.0","dependencies":{"remark":"^15.0.1","unified":"^11.0.5","linkedom":"^0.18.12","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","@babel/types":"^7.28.2","@babel/parser":"^7.28.0","style-to-object":"^1.0.8","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","collapse-white-space":"^2.1.0","@standard-schema/spec":"^1.0.0","eval-estree-expression":"^3.0.0","unist-util-visit-parents":"^6.0.1"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","vite":"^6.2.6","react":"^19.2.1","dedent":"^1.5.1","rimraf":"^6.0.1","vitest":"^3.1.3","escodegen":"^2.1.0","react-dom":"^19.2.1","typescript":"5.8.3","@types/node":"^22.15.17","tailwindcss":"^4.1.11","@types/mdast":"^4.0.0","@types/react":"^19.2.7","@types/unist":"^3.0.3","remark-parse":"^11.0.0","@changesets/cli":"^2.28.1","@types/escodegen":"^0.0.10","@types/react-dom":"^19.2.3","remark-stringify":"^11.0.0","@tailwindcss/vite":"^4.1.11","@types/estree-jsx":"^1.0.5","mdast-util-mdx-jsx":"^3.2.0","@vitest/coverage-v8":"^1.6.0","@vitejs/plugin-react":"^4.7.0","importmap-vite-plugin":"^0.0.0","@tailwindcss/typography":"^0.5.16"},"peerDependencies":{"react":"*","react-dom":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_1.12.0_1786380930614_0.3673209035478726","host":"s3://npm-registry-packages-npm-production"}},"1.13.0":{"name":"safe-mdx","version":"1.13.0","keywords":["mdx","react","server-components","rsc","safe","no-eval","cloudflare-workers","edge","markdown"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","_id":"safe-mdx@1.13.0","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"homepage":"https://github.com/holocron-hq/safe-mdx","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"dist":{"shasum":"5ca3ffd64060dcf612a3a97663e63ea5aacfa550","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-1.13.0.tgz","fileCount":119,"integrity":"sha512-Z8Vy36b6qSsNa+nbxF7OexE/+IfopNv32cpoeqU6NG2RcspVpTeJkY3POcVheU48lFfwGLLIj6MLhwmMB1/TIw==","signatures":[{"sig":"MEQCIEzcHddNOuySLflPFs4oa1tJ7bg2xe7Yhnv8BNeoWJHLAiA+vBxRuNauBxIxBDJ0XIzjPHNap0r+pjWyRYU8rxtzvQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":997041},"main":"./dist/safe-mdx.js","type":"module","_from":"file:safe-mdx-1.13.0.tgz","types":"./dist/safe-mdx.d.ts","exports":{".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./src":{"types":"./src/safe-mdx.tsx","default":"./src/safe-mdx.tsx"},"./parse":{"types":"./dist/parse.d.ts","default":"./dist/parse.js"},"./src/*":{"types":"./src/*.tsx","default":"./src/*.tsx"},"./client":{"types":"./dist/dynamic-esm-component.d.ts","default":"./dist/dynamic-esm-component.js","react-server":"./dist/dynamic-esm-component.rsc.js"},"./markdown":{"types":"./dist/markdown.d.ts","default":"./dist/markdown.js"},"./domparser":{"types":"./dist/html/domparser.d.ts","browser":"./dist/html/domparser-browser.js","default":"./dist/html/domparser.js"},"./package.json":"./package.json","./incremental-parse":{"types":"./dist/incremental-parse.d.ts","default":"./dist/incremental-parse.js"}},"scripts":{"demo":"vite","test":"vitest","build":"tsc","start":"vite preview","compile":"tsc","demo:build":"vite build","deploy-demo":"vite build && npx -y wrangler pages deploy"},"_npmUser":{"name":"xmorse","email":"beats.by.morse@gmail.com"},"_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/4f0087bdb92b8e7934a3dd4c30c9febd/safe-mdx-1.13.0.tgz","_integrity":"sha512-Z8Vy36b6qSsNa+nbxF7OexE/+IfopNv32cpoeqU6NG2RcspVpTeJkY3POcVheU48lFfwGLLIj6MLhwmMB1/TIw==","repository":{"url":"git+https://github.com/holocron-hq/safe-mdx.git","type":"git"},"_npmVersion":"11.12.1","description":"Render MDX in React without eval, works in Cloudflare Workers and Vercel Edge","directories":{},"_nodeVersion":"24.15.0","dependencies":{"remark":"^15.0.1","unified":"^11.0.5","linkedom":"^0.18.12","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","@babel/types":"^7.28.2","@babel/parser":"^7.28.0","style-to-object":"^1.0.8","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","collapse-white-space":"^2.1.0","@standard-schema/spec":"^1.0.0","eval-estree-expression":"^3.0.0","unist-util-visit-parents":"^6.0.1"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","vite":"^6.2.6","react":"^19.2.1","dedent":"^1.5.1","rimraf":"^6.0.1","vitest":"^3.1.3","escodegen":"^2.1.0","react-dom":"^19.2.1","typescript":"5.8.3","@types/node":"^22.15.17","tailwindcss":"^4.1.11","@types/mdast":"^4.0.0","@types/react":"^19.2.7","@types/unist":"^3.0.3","remark-parse":"^11.0.0","@changesets/cli":"^2.28.1","@types/escodegen":"^0.0.10","@types/react-dom":"^19.2.3","remark-stringify":"^11.0.0","@tailwindcss/vite":"^4.1.11","@types/estree-jsx":"^1.0.5","mdast-util-mdx-jsx":"^3.2.0","@vitest/coverage-v8":"^1.6.0","@vitejs/plugin-react":"^4.7.0","importmap-vite-plugin":"^0.0.0","@tailwindcss/typography":"^0.5.16"},"peerDependencies":{"react":"*","react-dom":"*"},"_npmOperationalInternal":{"tmp":"tmp/safe-mdx_1.13.0_1786724845364_0.41100252213991584","host":"s3://npm-registry-packages-npm-production"}},"1.14.0":{"name":"safe-mdx","version":"1.14.0","description":"Render MDX in React without eval, works in Cloudflare Workers and Vercel Edge","type":"module","main":"./dist/safe-mdx.js","types":"./dist/safe-mdx.d.ts","repository":{"type":"git","url":"git+https://github.com/holocron-hq/safe-mdx.git"},"homepage":"https://github.com/holocron-hq/safe-mdx","bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"exports":{"./package.json":"./package.json",".":{"types":"./dist/safe-mdx.d.ts","default":"./dist/safe-mdx.js"},"./parse":{"types":"./dist/parse.d.ts","default":"./dist/parse.js"},"./markdown":{"types":"./dist/markdown.d.ts","default":"./dist/markdown.js"},"./incremental-parse":{"types":"./dist/incremental-parse.d.ts","default":"./dist/incremental-parse.js"},"./client":{"types":"./dist/dynamic-esm-component.d.ts","react-server":"./dist/dynamic-esm-component.rsc.js","default":"./dist/dynamic-esm-component.js"},"./domparser":{"types":"./dist/html/domparser.d.ts","browser":"./dist/html/domparser-browser.js","default":"./dist/html/domparser.js"},"./src":{"types":"./src/safe-mdx.tsx","default":"./src/safe-mdx.tsx"},"./src/*":{"types":"./src/*.tsx","default":"./src/*.tsx"}},"keywords":["mdx","react","server-components","rsc","safe","no-eval","cloudflare-workers","edge","markdown"],"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","peerDependencies":{"react":"*","react-dom":"*"},"dependencies":{"@babel/parser":"^7.28.0","@babel/types":"^7.28.2","@standard-schema/spec":"^1.0.0","collapse-white-space":"^2.1.0","eval-estree-expression":"^3.0.0","linkedom":"^0.18.12","remark":"^15.0.1","remark-frontmatter":"^5.0.0","remark-gfm":"^4.0.0","remark-mdx":"^3.0.0","style-to-object":"^1.0.8","unified":"^11.0.5","unist-util-visit":"^5.0.0","unist-util-visit-parents":"^6.0.1"},"devDependencies":{"@changesets/cli":"^2.28.1","@tailwindcss/typography":"^0.5.16","@tailwindcss/vite":"^4.1.11","@types/escodegen":"^0.0.10","@types/estree-jsx":"^1.0.5","@types/mdast":"^4.0.0","@types/node":"^22.15.17","@types/react":"^19.2.18","@types/react-dom":"^19.2.4","@types/unist":"^3.0.3","@vitejs/plugin-react":"^4.7.0","@vitest/coverage-v8":"^1.6.0","dedent":"^1.5.1","escodegen":"^2.1.0","importmap-vite-plugin":"^0.0.0","mdast-util-mdx-jsx":"^3.2.0","react":"^19.2.8","react-dom":"^19.2.8","remark-parse":"^11.0.0","remark-stringify":"^11.0.0","rimraf":"^6.0.1","tailwindcss":"^4.1.11","typescript":"5.8.3","vite":"^6.2.6","vitest":"^3.1.3","zod":"^4.1.12"},"scripts":{"build":"tsc","compile":"tsc","test":"vitest","demo":"vite","start":"vite preview","deploy-demo":"vite build && npx -y wrangler pages deploy","demo:build":"vite build"},"_id":"safe-mdx@1.14.0","_integrity":"sha512-U3ZcsORgw6zyy4wbJHHqVJU7dcpPeLwz4YyZaVukvkLKQTjkndp4+cWSCKtke8iJZ9KRyDyMgCOicVaqiNrDCQ==","_resolved":"/private/var/folders/8w/wvmrpgms5hngywvs8s99xnmm0000gn/T/82a5300a5c24794556154f6c16f49ea3/safe-mdx-1.14.0.tgz","_from":"file:safe-mdx-1.14.0.tgz","_nodeVersion":"24.15.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-U3ZcsORgw6zyy4wbJHHqVJU7dcpPeLwz4YyZaVukvkLKQTjkndp4+cWSCKtke8iJZ9KRyDyMgCOicVaqiNrDCQ==","shasum":"fb24763a0732dd64a9cca311ecfa473f64d0dec6","tarball":"https://registry.npmjs.org/safe-mdx/-/safe-mdx-1.14.0.tgz","fileCount":129,"unpackedSize":1043386,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICAn47C6fobjxvNsXbv3zOiZRjlkQyMFLE4zPeqwlPzRAiAizME9f2gbmZHVFrSfNyZEXvkvnzvDg/Zc/DSZOTVxpw=="}]},"_npmUser":{"name":"xmorse","email":"beats.by.morse@gmail.com"},"directories":{},"maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/safe-mdx_1.14.0_1786805517686_0.9748017226538195"},"_hasShrinkwrap":false}},"time":{"created":"2023-11-27T16:55:07.537Z","modified":"2026-08-15T14:51:57.955Z","0.0.0":"2023-11-27T16:55:07.806Z","0.0.1":"2023-11-28T10:35:04.770Z","0.0.2":"2023-12-03T18:11:18.234Z","0.0.3":"2023-12-08T19:30:46.319Z","0.0.4":"2024-01-26T09:58:03.393Z","0.0.5":"2024-10-17T10:24:49.085Z","0.0.6":"2025-04-07T11:25:57.651Z","0.1.0":"2025-06-07T20:53:37.562Z","0.2.0":"2025-06-18T16:36:03.250Z","0.3.0":"2025-06-23T17:27:34.359Z","0.3.1":"2025-06-23T17:45:08.768Z","0.3.2":"2025-06-23T20:29:34.798Z","1.0.0":"2025-06-28T10:30:37.148Z","1.0.1":"2025-06-28T10:32:30.101Z","1.0.2":"2025-06-28T10:35:51.035Z","1.0.3":"2025-06-28T10:39:02.841Z","1.0.4":"2025-06-28T10:39:48.591Z","1.1.0":"2025-06-29T15:56:16.974Z","1.2.0":"2025-07-09T10:59:13.700Z","1.3.0":"2025-07-09T11:35:16.389Z","1.3.1":"2025-07-10T14:16:13.969Z","1.3.2":"2025-07-17T14:16:50.014Z","1.3.3":"2025-09-17T13:42:54.478Z","1.3.6":"2025-09-17T15:25:45.101Z","1.3.7":"2025-09-17T16:05:41.950Z","1.3.8":"2025-09-17T17:03:48.626Z","1.3.9":"2025-11-03T15:29:18.765Z","1.3.10":"2026-04-14T11:06:14.438Z","1.4.0":"2026-04-20T12:56:32.128Z","1.5.0":"2026-04-22T09:38:06.661Z","1.6.0":"2026-04-29T10:44:00.843Z","1.7.0":"2026-04-30T16:12:50.536Z","1.8.0":"2026-05-01T10:27:32.348Z","1.9.0":"2026-05-02T09:06:15.258Z","1.10.0":"2026-05-02T21:33:16.322Z","1.11.0":"2026-05-07T08:06:56.041Z","1.11.1":"2026-05-19T13:23:02.634Z","1.11.2":"2026-06-12T10:35:04.821Z","1.11.3":"2026-06-17T09:44:42.420Z","1.11.4":"2026-06-17T09:47:46.784Z","1.11.5":"2026-06-17T10:28:07.458Z","1.12.0":"2026-08-10T16:55:30.772Z","1.13.0":"2026-08-14T16:27:25.513Z","1.14.0":"2026-08-15T14:51:57.824Z"},"bugs":{"url":"https://github.com/holocron-hq/safe-mdx/issues"},"author":{"name":"remorses","email":"beats.by.morse@gmail.com"},"license":"MIT","homepage":"https://github.com/holocron-hq/safe-mdx","keywords":["mdx","react","server-components","rsc","safe","no-eval","cloudflare-workers","edge","markdown"],"repository":{"type":"git","url":"git+https://github.com/holocron-hq/safe-mdx.git"},"description":"Render MDX in React without eval, works in Cloudflare Workers and Vercel Edge","maintainers":[{"name":"xmorse","email":"beats.by.morse@gmail.com"}],"readme":"<div align='center'>\n    <br/>\n    <br/>\n    <br/>\n    <h3>safe-mdx</h3>\n    <p>Render MDX in React without eval</p>\n    <br/>\n    <br/>\n</div>\n\n## Features\n\n-   Render MDX without `eval` on the server, so you can render MDX in Cloudflare Workers and Vercel Edge\n-   Works with React Server Components\n-   Supports custom MDX components\n-   Custom `createElement`. Pass a no-op function to use safe-mdx as a validation step.\n-   Use `componentPropsSchema` to validate component props against a schema (works with Zod, Valibot, etc).\n-   ESM `https://` imports support with `allowClientEsmImports` option (disabled by default for security)\n-   Page-scope `export function` / `export const` components and helpers when function evaluation is on\n-   Optional XSS sanitization for untrusted MDX (`sanitize`). Off by default.\n-   Fast. 3ms to render the [full mdx document for Zod v3](https://github.com/colinhacks/zod/blob/0a49fa39348b7c72b19ddedc3b0f879bd395304b/packages/docs/content/packages/v3.mdx) (2500 lines)\n\n## Why\n\nThe default MDX renderer uses `eval` (or `new Function(code)`) to render MDX components in the server. This is a security risk if the MDX code comes from untrusted sources and it's not allowed in some environments like Cloudflare Workers.\n\nFor example in a hypothetical platform similar to Notion, where users can write Markdown and publish it as a website, a user could be able to write MDX code that extracts secrets from the server in the SSR pass, using this library that is not possible. This is what happened with Mintlify platform in 2024.\n\nSome use cases for this package are:\n\n-   Render MDX in Cloudflare Workers and Vercel Edge\n-   Safely render dynamically generated MDX code, like inside a ChatGPT-style interface\n-   Render user generated MDX, like in a multi-tenant SaaS app\n\n<br>\n\n## Install\n\n```\nnpm i safe-mdx\n```\n\n## Usage\n\n```tsx\nimport { SafeMdxRenderer } from 'safe-mdx'\nimport { DynamicEsmComponent } from 'safe-mdx/client'\nimport { mdxParse } from 'safe-mdx/parse'\n\nconst code = `\n# Hello world\n\nThis is a paragraph\n\n<Heading>Custom component</Heading>\n`\n\nexport function Page() {\n    const ast = mdxParse(code)\n    return (\n        <SafeMdxRenderer\n            markdown={code}\n            mdast={ast}\n            components={{\n                // You can pass your own components here\n                Heading({ children }) {\n                    return <h1>{children}</h1>\n                },\n                p({ children }) {\n                    return <p style={{ color: 'black' }}>{children}</p>\n                },\n                blockquote({ children }) {\n                    return (\n                        <blockquote style={{ color: 'black' }}>\n                            {children}\n                        </blockquote>\n                    )\n                },\n            }}\n        />\n    )\n}\n```\n\n## Incremental parsing for streaming markdown\n\nUse `safe-mdx/incremental-parse` when markdown is changing rapidly, like during an LLM stream. Stable top-level mdast nodes are reused from a caller-owned cache, while only the live tail is parsed again. Parse errors are returned in `errors` instead of being thrown, so incomplete MDX can keep rendering the stable prefix.\n\n```tsx\nimport { useMemo } from 'react'\nimport { SafeMdxRenderer } from 'safe-mdx'\nimport {\n    parseMarkdownIncremental,\n    type SegmentCache,\n} from 'safe-mdx/incremental-parse'\n\nexport function StreamingMdx({ markdown }: { markdown: string }) {\n    const cache = useMemo<SegmentCache>(() => new Map(), [])\n    const { mdast, errors } = parseMarkdownIncremental({\n        markdown,\n        cache,\n        trailingNodes: 2,\n    })\n\n    return (\n        <div>\n            {errors.length ? <pre>{errors[0]?.message}</pre> : null}\n            {mdast.children.map((block, index) => (\n                <SafeMdxRenderer\n                    key={block.position?.start.offset ?? index}\n                    markdown={markdown}\n                    mdast={block}\n                />\n            ))}\n        </div>\n    )\n}\n```\n\nCustomize the parser with extra remark plugins by creating a processor once and passing it to the incremental parser.\n\n```ts\nimport remarkMath from 'remark-math'\nimport {\n    createMdxProcessor,\n    parseMarkdownIncremental,\n} from 'safe-mdx/incremental-parse'\n\nconst processor = createMdxProcessor({\n    remarkPlugins: [remarkMath],\n})\n\nconst cache = new Map()\nconst { mdast, errors } = parseMarkdownIncremental({\n    markdown,\n    cache,\n    processor,\n})\n```\n\n## JSX Components in Attributes\n\nsafe-mdx supports using JSX components inside component attributes, providing a secure alternative to JavaScript evaluation.\n\n```tsx\nimport { SafeMdxRenderer } from 'safe-mdx'\nimport { mdxParse } from 'safe-mdx/parse'\n\nconst code = `\n# Components in Attributes\n\n<Card\n  icon={<Icon name=\"star\" />}\n  actions={<Button variant=\"primary\">Click me</Button>}\n>\n  Card content with JSX components in attributes\n</Card>\n`\n\nexport function Page() {\n    const ast = mdxParse(code)\n    return (\n        <SafeMdxRenderer\n            markdown={code}\n            mdast={ast}\n            components={{\n                Card({ icon, actions, children }) {\n                    return (\n                        <div className=\"card\">\n                            <div className=\"header\">\n                                {icon}\n                                <div className=\"actions\">{actions}</div>\n                            </div>\n                            <div className=\"content\">{children}</div>\n                        </div>\n                    )\n                },\n                Icon({ name }) {\n                    return <span>⭐</span> // Your icon component\n                },\n                Button({ variant, children }) {\n                    return <button className={variant}>{children}</button>\n                },\n            }}\n        />\n    )\n}\n```\n\n### ESM Imports in Attributes\n\nTo use externally imported components in attributes, enable the `allowClientEsmImports` option:\n\n```tsx\nimport { SafeMdxRenderer } from 'safe-mdx'\nimport { mdxParse } from 'safe-mdx/parse'\n\nconst code = `\nimport { Icon } from 'https://esm.sh/lucide-react'\nimport Button from 'https://esm.sh/my-ui-library'\n\n# External Components in Attributes\n\n<Card\n  icon={<Icon name=\"star\" />}\n  action={<Button>External Button</Button>}\n>\n  Using externally imported components\n</Card>\n`\n\nexport function Page() {\n    const ast = mdxParse(code)\n    return (\n        <SafeMdxRenderer\n            markdown={code}\n            mdast={ast}\n            allowClientEsmImports={true} // Required for ESM imports\n            components={{\n                Card({ icon, action, children }) {\n                    return (\n                        <div className=\"card\">\n                            <div className=\"header\">\n                                {icon}\n                                {action}\n                            </div>\n                            <div className=\"content\">{children}</div>\n                        </div>\n                    )\n                },\n            }}\n        />\n    )\n}\n```\n\n`safe-mdx` resolves the client ESM renderer through its own `safe-mdx/client`\nsubpath, so enabling `allowClientEsmImports` does not need any extra prop.\n\n**Security Note**: ESM imports are disabled by default. Only enable `allowClientEsmImports` when you trust the MDX source, as it allows loading external code.\n\n## Server-side Module Resolution\n\nResolve MDX `import` statements against pre-loaded modules on the server — no client-side `eval` or ESM fetching needed. This is the recommended approach when your MDX files import local components.\n\n**Simple case** — use Vite's `import.meta.glob` with `{ eager: true }` to load all modules upfront. The result is already the shape `modules` expects:\n\n```tsx\nimport { SafeMdxRenderer } from 'safe-mdx'\nimport { mdxParse } from 'safe-mdx/parse'\n\n// { eager: true } returns the modules directly instead of lazy loaders:\n// { './snippets/card.tsx': { Card, default: ... }, './snippets/badge.tsx': { Badge, ... } }\nconst modules = import.meta.glob('./snippets/**/*.tsx', { eager: true })\n\nconst code = `\nimport { Card } from '/snippets/card'\nimport { Badge } from '/snippets/badge'\n\n# Hello\n\n<Card title=\"Welcome\">\n  Status: <Badge label=\"new\" />\n</Card>\n`\n\nexport function Page() {\n    const mdast = mdxParse(code)\n    return (\n        <SafeMdxRenderer\n            markdown={code}\n            mdast={mdast}\n            modules={modules}\n            baseUrl=\"./pages/\"\n        />\n    )\n}\n```\n\n**With Vite `import.meta.glob`** — use `resolveModules` to lazily load only the modules the MDX actually imports:\n\n```tsx\nimport { SafeMdxRenderer } from 'safe-mdx'\nimport { mdxParse, resolveModules } from 'safe-mdx/parse'\n\nconst code = `\nimport { Card } from '/snippets/card'\n\n# Hello\n\n<Card title=\"Welcome\">content</Card>\n`\n\nexport async function Page() {\n    const lazyGlob = import.meta.glob('./snippets/**/*.tsx')\n    const mdast = mdxParse(code)\n    const modules = await resolveModules({\n        glob: lazyGlob,\n        mdast,\n        baseUrl: './pages/',\n    })\n\n    return (\n        <SafeMdxRenderer\n            markdown={code}\n            mdast={mdast}\n            modules={modules}\n            baseUrl=\"./pages/\"\n        />\n    )\n}\n```\n\n`baseUrl` is the directory of the MDX file being rendered — it's used to resolve relative imports like `./card` to the correct module key. If omitted it defaults to `'./'`.\n\n## Change default MDX parser\n\nIf you want to use custom MDX plugins, you can pass your own MDX processed ast.\n\nBy default `safe-mdx` already has support for\n\n-   frontmatter\n-   gfm\n\n```tsx\nimport { SafeMdxRenderer } from 'safe-mdx'\nimport { remark, Root } from 'remark'\nimport remarkMdx from 'remark-mdx'\n\nconst code = `\n# Hello world\n\nThis is a paragraph\n\n<Heading>Custom component</Heading>\n`\n\nconst parser = remark()\n    .use(remarkMdx)\n    .use(() => {\n        return (tree, file) => {\n            file.data.ast = tree\n        }\n    })\n\nconst file = parser.processSync(code)\nconst mdast = file.data.ast as Root\n\nexport function Page() {\n    return <SafeMdxRenderer markdown={code} mdast={mdast} />\n}\n```\n\n## Reading the frontmatter\n\nsafe-mdx renderer ignores the frontmatter, to get its values you will have to parse the MDX to mdast and read it there.\n\n```tsx\nimport { SafeMdxRenderer } from 'safe-mdx'\nimport { remark } from 'remark'\nimport remarkFrontmatter from 'remark-frontmatter'\nimport { Yaml } from 'mdast'\nimport yaml from 'js-yaml'\nimport remarkMdx from 'remark-mdx'\n\nconst code = `\n---\nhello: 5\n---\n\n# Hello world\n`\n\nexport function Page() {\n    const parser = remark().use(remarkFrontmatter, ['yaml']).use(remarkMdx)\n\n    const mdast = parser.parse(code)\n\n    const yamlFrontmatter = mdast.children.find(\n        (node) => node.type === 'yaml',\n    ) as Yaml\n\n    const parsedFrontmatter = yaml.load(yamlFrontmatter.value || '')\n\n    console.log(parsedFrontmatter)\n    return <SafeMdxRenderer markdown={code} mdast={mdast} />\n}\n```\n\n## Override code block component\n\nIt's not practical to override the code block component using `code` as a component override, because it will also be used for inline code blocks. It also does not have access to meta string and language.\n\nInstead you can use `renderNode` to return some JSX for a specific mdast node:\n\n```tsx\n<SafeMdxRenderer\n    renderNode={(node, transform) => {\n        if (node.type === 'code') {\n            const language = node.lang || ''\n            const meta = parseMetaString(node.meta)\n\n            return (\n                <CodeBlock {...meta} lang={language}>\n                    <Pre>\n                        <ShikiRenderer code={node.value} language={language} />\n                    </Pre>\n                </CodeBlock>\n            )\n        }\n    }}\n/>\n```\n\n## Validating component props\n\nUse `componentPropsSchema` to validate component props against a schema. Works with any library that implements [Standard Schema](https://standardschema.dev) (Zod, Valibot, ArkType, etc).\n\nValidation errors are collected in `visitor.errors` with line numbers and property paths. The component still renders with the invalid props, so you can show errors alongside the content.\n\n```tsx\nimport { MdastToJsx, type ComponentPropsSchema } from 'safe-mdx'\nimport { mdxParse } from 'safe-mdx/parse'\nimport { z } from 'zod'\n\nconst code = `\n<Heading level={2} title=\"test\">Valid heading</Heading>\n\n<Heading level={10}>Invalid - level too high</Heading>\n\n<Cards count={-1}>Invalid - negative count</Cards>\n`\n\nconst componentPropsSchema: ComponentPropsSchema = {\n    Heading: z.object({\n        level: z.number().min(1).max(6),\n        title: z.string().optional(),\n    }),\n    Cards: z.object({\n        count: z.number().positive(),\n        variant: z.enum(['default', 'outline']).optional(),\n    }),\n}\n\nexport function Page() {\n    const mdast = mdxParse(code)\n    const visitor = new MdastToJsx({\n        markdown: code,\n        mdast,\n        components: {\n            Heading: ({ children, ...props }) => <h1 {...props}>{children}</h1>,\n            Cards: ({ children, ...props }) => <div {...props}>{children}</div>,\n        },\n        componentPropsSchema,\n    })\n    const jsx = visitor.run()\n\n    if (visitor.errors.length) {\n        // errors include type, line number, component name, property path, and message\n        // [\n        //   { type: 'validation', message: 'Invalid props for component \"Heading\" at \"level\": Too big...', line: 3, schemaPath: 'level' },\n        //   { type: 'validation', message: 'Invalid props for component \"Cards\" at \"count\": Too small...', line: 5, schemaPath: 'count' },\n        // ]\n    }\n\n    return jsx\n}\n```\n\n## RSC: don't pass components from a `'use client'` module\n\nWhen using `SafeMdxRenderer` in a React Server Component, the `components` prop must be a plain server-side object. If the file exporting your components map has `'use client'` at the top, the entire module becomes an opaque client reference in RSC. Spreading a client reference produces an empty object, so `SafeMdxRenderer` silently falls back to plain HTML tags with no styling.\n\n**Wrong:** exporting the components map from a `'use client'` file\n\n```tsx\n// components.tsx\n'use client'\nimport Zoom from 'react-medium-image-zoom'\n\nfunction P({ children }) {\n    return <p className=\"prose\">{children}</p>\n}\nfunction Img(props) {\n    return <Zoom><img {...props} /></Zoom>\n}\n\n// This object becomes an opaque client reference in RSC\nexport const components = { p: P, img: Img }\n```\n\n**Correct:** keep the map in a server-compatible file, import only the client components\n\n```tsx\n// zoomable-image.tsx\n'use client'\nimport Zoom from 'react-medium-image-zoom'\nexport function Img(props) {\n    return <Zoom><img {...props} /></Zoom>\n}\n\n// components.tsx (no 'use client')\nimport { Img } from './zoomable-image'\nfunction P({ children }) {\n    return <p className=\"prose\">{children}</p>\n}\nexport const components = { p: P, img: Img }\n```\n\nOnly components that use browser-only APIs (hooks, DOM refs, client libraries) belong in `'use client'` files. Pure JSX with classnames, config objects, and component maps must stay in server-compatible modules.\n\n## Handling errors\n\n`safe-mdx` collects errors during rendering and exposes them via the `onError` callback or the `visitor.errors` array. Each error has a `type` field so you can filter by category.\n\n### Error types\n\nEvery error is a `SafeMdxError` object:\n\n```ts\ninterface SafeMdxError {\n    type: 'validation' | 'missing-component' | 'expression' | 'esm-import' | 'sanitize'\n    message: string\n    line?: number       // source line in the MDX\n    schemaPath?: string // only for validation errors, e.g. \"user.age\"\n}\n```\n\n| Type | When it fires |\n|---|---|\n| `validation` | Component props fail schema validation (via `componentPropsSchema`) |\n| `missing-component` | MDX uses a `<Component>` that wasn't passed in `components` or resolved from `modules` |\n| `expression` | An MDX expression like `{1 + fn()}` or a JSX attribute expression fails to evaluate |\n| `esm-import` | An ESM `import` has an invalid URL or fails to parse (only with `allowClientEsmImports`) |\n| `sanitize` | A tag or prop was stripped because `sanitize` is on |\n\n### Using `onError` callback\n\nWorks with both `SafeMdxRenderer` and `MdastToJsx`. Called for each error during rendering. Throw inside the callback to stop rendering on the first error.\n\n```tsx\nimport { SafeMdxRenderer } from 'safe-mdx'\nimport { mdxParse } from 'safe-mdx/parse'\n\nexport function Page() {\n    const mdast = mdxParse(code)\n    return (\n        <SafeMdxRenderer\n            markdown={code}\n            mdast={mdast}\n            components={components}\n            componentPropsSchema={componentPropsSchema}\n            onError={(error) => {\n                // only throw on schema validation errors\n                if (error.type === 'validation') {\n                    throw new Error(\n                        `Invalid props on line ${error.line}: ${error.message}`,\n                    )\n                }\n                // log other errors without stopping rendering\n                console.warn(`[safe-mdx] ${error.type}: ${error.message}`)\n            }}\n        />\n    )\n}\n```\n\n### Using `MdastToJsx` directly\n\nAccess the full errors array after rendering:\n\n```tsx\nimport { MdastToJsx } from 'safe-mdx'\nimport { mdxParse } from 'safe-mdx/parse'\n\nexport function Page() {\n    const mdast = mdxParse(code)\n    const visitor = new MdastToJsx({ markdown: code, mdast, components })\n    const jsx = visitor.run()\n\n    // filter by type\n    const validationErrors = visitor.errors.filter(e => e.type === 'validation')\n    const missingComponents = visitor.errors.filter(e => e.type === 'missing-component')\n\n    return jsx\n}\n```\n\n## Scope\n\nPass variables and functions to MDX expressions with the `scope` prop. When scope is provided, function calls in expressions are automatically enabled.\n\n```tsx\nimport { SafeMdxRenderer } from 'safe-mdx'\nimport { mdxParse } from 'safe-mdx/parse'\n\nconst code = `\n# {greeting}\n\n<Card title={formatTitle({ text: \"hello\", uppercase: true })} />\n`\n\nconst scope = {\n    greeting: 'Welcome',\n    formatTitle: (opts) => (opts.uppercase ? opts.text.toUpperCase() : opts.text),\n}\n\nexport function Page() {\n    const ast = mdxParse(code)\n    return (\n        <SafeMdxRenderer\n            markdown={code}\n            mdast={ast}\n            components={components}\n            scope={scope}\n        />\n    )\n}\n```\n\n### Arrow functions and callbacks\n\nArrow functions and callbacks like `.map(item => item.name)` work out of the box when `scope` is provided. safe-mdx includes a built-in safe AST interpreter that evaluates function expressions by walking the syntax tree recursively, without using `new Function()` or `eval()`. This means arrow functions **work in Cloudflare Workers** and other edge runtimes.\n\n```tsx\nimport { SafeMdxRenderer } from 'safe-mdx'\nimport { mdxParse } from 'safe-mdx/parse'\n\nconst code = `\n{items.map(item => item.name).join(\", \")}\n\n{users.filter(u => u.role === \"admin\").map(u => u.name).join(\", \")}\n\n{nums.reduce((acc, x) => acc + x, 0)}\n\n{items.map(item => formatName(item.name)).join(\", \")}\n`\n\nexport function Page() {\n    const ast = mdxParse(code)\n    return (\n        <SafeMdxRenderer\n            markdown={code}\n            mdast={ast}\n            scope={{\n                items: [{ name: 'alice' }, { name: 'bob' }],\n                users: [\n                    { name: 'Alice', role: 'admin' },\n                    { name: 'Bob', role: 'user' },\n                ],\n                nums: [1, 2, 3, 4],\n                formatName: (s) => s.toUpperCase(),\n            }}\n        />\n    )\n}\n```\n\nSupported patterns include expression bodies (`x => x.name`), block bodies with return (`x => { return x * 2 }`), destructuring (`({ name }) => name`), multiple parameters (`(a, b) => a + b`), nested arrows, calling scope functions inside callbacks (`x => formatName(x)`), and chained calls like `.filter().map().join()`.\n\nThe `evaluateOptions` prop accepts the following options:\n\n| Option | Type | Default | Description |\n|---|---|---|---|\n| `functions` | `boolean` | `false` | Enable function calls in expressions. Automatically set to `true` when `scope` is provided. |\n| `generate` | `(ast) => string` | `undefined` | Pass `escodegen.generate` to use the legacy `new Function()` path instead of the built-in safe interpreter. Not needed in most cases. |\n| `booleanLogicalOperators` | `boolean` | `undefined` | Force `&&` and `||` to return booleans instead of truthy/falsy values. |\n| `strict` | `boolean` | `false` | Throw an error when variables referenced in expressions are undefined. |\n\n### JavaScript globals are not available by default\n\nsafe-mdx evaluates expressions in a **sandboxed context** where only the variables you pass in `scope` exist. Standard JavaScript globals like `Math`, `Number`, `parseInt`, `JSON`, `Array`, `Object`, etc. are **not available** unless you explicitly include them.\n\nThis is intentional for security: untrusted MDX cannot access anything you don't explicitly provide. But it means expressions like `Math.round(1.5)` will fail with `\"Math is not defined\"` unless you add `Math` to the scope.\n\n```tsx\nconst code = `\n<Box width={Math.round(100 / 3)} />\n\nRounded: {Math.ceil(7.2)}\n\nParsed: {parseInt(\"42\", 10)}\n`\n\n// Math, parseInt, etc. must be passed explicitly\nconst scope = {\n  Math,\n  parseInt,\n  parseFloat,\n  Number,\n  JSON,\n  Array,\n  Object,\n  Boolean,\n  String,\n  Infinity,\n  NaN,\n}\n\n<SafeMdxRenderer\n  markdown={code}\n  mdast={mdxParse(code)}\n  components={components}\n  scope={scope}\n/>\n```\n\nOnly pass the globals your MDX content needs. For most use cases, `Math` alone is sufficient. Adding `JSON` enables `JSON.parse()` for data-driven content. All of these are safe, side-effect-free objects.\n\n### Security considerations for scope\n\nUsing `scope` trades some of safe-mdx's sandboxing guarantees for expressiveness. Be aware of these risks:\n\n- **`scope` with functions**: the MDX author can call any function you put in scope with any arguments. Only expose functions that are safe to call with arbitrary inputs. Never put functions that access the filesystem, database, or network in scope unless you trust the MDX source.\n\n- **`evaluateOptions: { generate }`**: this overrides the built-in safe interpreter with `escodegen.generate`, which uses `new Function()` under the hood. This means **the MDX author can run arbitrary code** within the expression context. Only use `generate` when you fully trust the MDX content. This option **does not work in Cloudflare Workers** or other edge runtimes that block `new Function()` and `eval()`.\n\n- **`evaluateOptions: { strict: true }`**: useful for catching typos in scope variable names. Without it, undefined variables silently resolve to `undefined`.\n\nIf you are rendering **untrusted MDX** (user-generated content, multi-tenant apps), avoid using `scope` with sensitive functions. Instead, define your logic inside custom components passed to the `components` prop, which keeps the MDX author constrained to the component API you define.\n\n## Page-scope exports\n\nWith **function evaluation** on, you can export components and helpers in the MDX file and use them on the same page.\n\n```mdx\nexport function Card({ title, children }) {\n  return <div className=\"rounded-lg p-4\">{title}{children}</div>\n}\n\nexport function formatTitle(text) {\n  return text.toUpperCase()\n}\n\n# {formatTitle(\"hello\")}\n\n<Card title=\"Welcome\">Hello from a page-scope component</Card>\n```\n\nTurn it on with `evaluateOptions: { functions: true }`, or by passing a **non-empty** `scope` object.\n\n```tsx\n<SafeMdxRenderer\n  markdown={code}\n  mdast={mdxParse(code)}\n  evaluateOptions={{ functions: true }}\n  modules={{ react: React }}\n/>\n```\n\nPut a **blank line** after the export block. MDX keeps reading ESM if the next line is attached.\n\nTo use React **hooks**, import them and pass React in `modules`:\n\n```mdx\nimport { useState, useEffect } from \"react\"\n\nexport function Counter({ initial = 0 }) {\n  const [count, setCount] = useState(initial)\n  useEffect(() => {\n    document.title = String(count)\n  }, [count])\n  return <button className=\"px-4 py-2\">{count}</button>\n}\n\n<Counter initial={3} />\n```\n\nHooks are the **real** React hooks. `useState` works for the first server paint. `useEffect` runs after paint on the **client**. Hook components cannot run inside React Server Components.\n\nThese stay unsupported: `export default` layouts, `export class`, re-exports, and declarations without the `export` keyword.\n\n## Security\n\nsafe-mdx blocks **server-side** `eval`. That stops MDX from reading `process.env` during render.\n\nIt does **not** block browser XSS by default. Untrusted MDX can still emit `<script>`, `dangerouslySetInnerHTML`, or `iframe srcDoc`. React SSR will put that HTML in the page. The browser will run it.\n\nTurn on `sanitize` when the MDX author is not trusted:\n\n```tsx\n<SafeMdxRenderer markdown={code} mdast={mdast} sanitize />\n```\n\n`sanitize` is a boolean. There are no extra allowlists. The policy is fixed.\n\n### What it blocks\n\n- Tags: `script`, `object`, `embed`, `applet`, `portal`, `frame`, `frameset`, `base`. `base` is not XSS alone. It rewrites every relative URL.\n- Props: `dangerouslySetInnerHTML`, native `on*` handlers, `srcDoc`, `ping`\n- URLs that are not `http`, `https`, `mailto`, `tel`, relative, or `data:image/*` on `img`\n\n```mdx\n<script>alert(1)</script>\n<div dangerouslySetInnerHTML={{__html: '<img src=x onerror=alert(1)>'}} />\n<iframe srcDoc=\"<script>alert(document.cookie)</script>\" />\n<a href=\"javascript:alert(1)\">click</a>\n```\n\nThose render as nothing, or as the same tag with the unsafe prop removed.\n\n### What it allows\n\n**https iframes.** A remote iframe is another origin. It cannot read your cookies. `srcDoc`, `javascript:`, and `data:` sources are still stripped.\n\n**style tags** with a text child, and `style={{ }}` props. React keeps the CSS as text. CSS can restyle the page. It cannot run JS.\n\n**data image URLs** on `img`, for example `data:image/png;base64,...`.\n\n**meta** and **link**. A refresh meta is a redirect. A stylesheet link is the same class as `<style>`. `javascript:` and `data:` on `link href` are still stripped.\n\nDisabling function evaluation is **not** enough. Object literals and string attributes still work. That is why `sanitize` exists.\n\nReact 19 rewrites some `javascript:` URLs. It does not stop `dangerouslySetInnerHTML`, `srcDoc`, `<script>`, `vbscript:`, or `srcSet`. The peer range is `react: *`. Do not rely on that filter.\n\n`sanitize` cannot make XSS impossible if you pass unsafe **custom components**, put functions or React nodes in `scope`, use `renderNode`, or set `allowClientEsmImports`. Output those paths create is trusted and is not walked again.\n\nCustom props that the host later turns into `href` or `src` (for example `destination`) are also the host's job to validate.\n\nA remote iframe can still phish or replace the top page with `top.location`. That is not XSS.\n\nIf tenants share a domain, one XSS can steal cookies from other tenants. Isolate tenants on different subdomains if you cannot use `sanitize`.\n\n## Limitations\n\nThese features are not supported yet:\n\n-   Importing components or data from other files (unless using `modules` prop for local imports or `allowClientEsmImports` for `https://` imports).\n-   `export default` layouts, `export class`, and re-exports. Page-scope `export function` / `export const` work when function evaluation is on.\n\n**Note**: JSX components in attributes are now supported! You can use React components inside attributes like `<Card icon={<Icon />}>` without relying on JavaScript evaluation.\n","readmeFilename":"README.md"}