{"_id":"@10up/block-renderer-serializer","_rev":"8-8f042a3d080eb55dbc26471b9ced7060","name":"@10up/block-renderer-serializer","dist-tags":{"latest":"0.3.0"},"versions":{"0.1.4":{"name":"@10up/block-renderer-serializer","version":"0.1.4","keywords":["wordpress","blocks","gutenberg","renderer","serialize"],"license":"MIT","_id":"@10up/block-renderer-serializer@0.1.4","maintainers":[{"name":"fabiankaegy","email":"mail@fabian-kaegy.de"},{"name":"eugene-manuilov","email":"eugene.manuilov@gmail.com"},{"name":"christianc1","email":"christian.m.chung@gmail.com"},{"name":"nicholasio","email":"nicholasio.oliveira@gmail.com"},{"name":"joesnellpdx","email":"joesnellpdx@gmail.com"},{"name":"devinle","email":"devin.leggett@gmail.com"},{"name":"darylldoyle","email":"daryll.doyle@10up.com"}],"homepage":"https://github.com/10up/json-block-renderer#readme","bugs":{"url":"https://github.com/10up/json-block-renderer/issues"},"dist":{"shasum":"87521b5ad363b1d28d294547f978b3f9fa6cb2f2","tarball":"https://registry.npmjs.org/@10up/block-renderer-serializer/-/block-renderer-serializer-0.1.4.tgz","fileCount":42,"integrity":"sha512-naxGCJIGn/vX1z3g4H0AMl3UPY5VX91ocXEgtOmlAC+hHGPxgL8r5+GzLagOYKzda4NNpXlhhpv2PwvFz1cREw==","signatures":[{"sig":"MEUCIQDB8WJg19pWR2UANjdb4d9+MunY8jOVSlIovJGc6EpYYAIgZp1ZRbRC37UN2zI6gs9LYJ/BVNsYE2I6sz+ZexG6460=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":126801},"main":"./dist/index.js","type":"module","_from":"file:10up-block-renderer-serializer-0.1.4.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"tsc -p tsconfig.build.json --watch","test":"vitest run","bench":"vitest bench --run","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"fabiankaegy","email":"mail@fabian-kaegy.de"},"_resolved":"/private/var/folders/j3/yjw_92c17dxg7b0pcdntvnqh0000gn/T/d44df18707cd81bc7ca464f40677f376/10up-block-renderer-serializer-0.1.4.tgz","_integrity":"sha512-naxGCJIGn/vX1z3g4H0AMl3UPY5VX91ocXEgtOmlAC+hHGPxgL8r5+GzLagOYKzda4NNpXlhhpv2PwvFz1cREw==","repository":{"url":"git+https://github.com/10up/json-block-renderer.git","type":"git","directory":"packages/serializer"},"_npmVersion":"11.7.0","description":"Render WordPress block markup from JSON block trees using native serialization","directories":{},"_nodeVersion":"25.3.0","dependencies":{"jsdom":"^24.0.0","@wordpress/hooks":"^4.38.0","@wordpress/blocks":"^14.11.0","@wordpress/element":"^6.11.0","@wordpress/block-editor":"^14.11.0","@wordpress/block-library":"^9.17.0","@10up/block-renderer-core":"0.1.4","parse5-html-rewriting-stream":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","typescript":"^5.7.0","@types/jsdom":"^21.1.0"},"_npmOperationalInternal":{"tmp":"tmp/block-renderer-serializer_0.1.4_1768823475829_0.04031718049176347","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@10up/block-renderer-serializer","version":"0.1.5","keywords":["wordpress","blocks","gutenberg","renderer","serialize"],"license":"MIT","_id":"@10up/block-renderer-serializer@0.1.5","maintainers":[{"name":"fabiankaegy","email":"mail@fabian-kaegy.de"},{"name":"eugene-manuilov","email":"eugene.manuilov@gmail.com"},{"name":"christianc1","email":"christian.m.chung@gmail.com"},{"name":"nicholasio","email":"nicholasio.oliveira@gmail.com"},{"name":"joesnellpdx","email":"joesnellpdx@gmail.com"},{"name":"devinle","email":"devin.leggett@gmail.com"},{"name":"darylldoyle","email":"daryll.doyle@10up.com"}],"homepage":"https://github.com/10up/json-block-renderer#readme","bugs":{"url":"https://github.com/10up/json-block-renderer/issues"},"dist":{"shasum":"269e31dbf3dcd00fc776827dc00a3ef01e7a5fb1","tarball":"https://registry.npmjs.org/@10up/block-renderer-serializer/-/block-renderer-serializer-0.1.5.tgz","fileCount":42,"integrity":"sha512-vTepvzLDlxfHT80kbt/0EpXrondrtnoJg1mMCd3FAY8NOP+asHhFZKmmDuHXlbuiCGbTn6Foo7LTkeeZMIfRJA==","signatures":[{"sig":"MEUCID4dyS5uyYVKjmzSeo2gEb13AJ3l6UY7WfhwP+gr5/+3AiEAn0CFndoaMnT5nApkzc+Sdid4qQ96pPnVdV8AtflWX3Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":126801},"main":"./dist/index.js","type":"module","_from":"file:10up-block-renderer-serializer-0.1.5.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"tsc -p tsconfig.build.json --watch","test":"vitest run","bench":"vitest bench --run","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:477346ab-7ca7-4c2e-a54c-b06e041f77a9"}},"_resolved":"/tmp/f47a2a1ccc40017c9c9453ba277cbd66/10up-block-renderer-serializer-0.1.5.tgz","_integrity":"sha512-vTepvzLDlxfHT80kbt/0EpXrondrtnoJg1mMCd3FAY8NOP+asHhFZKmmDuHXlbuiCGbTn6Foo7LTkeeZMIfRJA==","repository":{"url":"git+https://github.com/10up/json-block-renderer.git","type":"git","directory":"packages/serializer"},"_npmVersion":"11.7.0","description":"Render WordPress block markup from JSON block trees using native serialization","directories":{},"_nodeVersion":"22.21.1","dependencies":{"jsdom":"^24.0.0","@wordpress/hooks":"^4.38.0","@wordpress/blocks":"^14.11.0","@wordpress/element":"^6.11.0","@wordpress/block-editor":"^14.11.0","@wordpress/block-library":"^9.17.0","@10up/block-renderer-core":"0.1.5","parse5-html-rewriting-stream":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","typescript":"^5.7.0","@types/jsdom":"^21.1.0"},"_npmOperationalInternal":{"tmp":"tmp/block-renderer-serializer_0.1.5_1768824028447_0.17540737778785576","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@10up/block-renderer-serializer","version":"0.1.6","keywords":["wordpress","blocks","gutenberg","renderer","serialize"],"license":"MIT","_id":"@10up/block-renderer-serializer@0.1.6","maintainers":[{"name":"fabiankaegy","email":"mail@fabian-kaegy.de"},{"name":"eugene-manuilov","email":"eugene.manuilov@gmail.com"},{"name":"christianc1","email":"christian.m.chung@gmail.com"},{"name":"nicholasio","email":"nicholasio.oliveira@gmail.com"},{"name":"joesnellpdx","email":"joesnellpdx@gmail.com"},{"name":"devinle","email":"devin.leggett@gmail.com"},{"name":"darylldoyle","email":"daryll.doyle@10up.com"}],"homepage":"https://github.com/10up/json-block-renderer#readme","bugs":{"url":"https://github.com/10up/json-block-renderer/issues"},"dist":{"shasum":"c85b503008779895de630edf5df52e0e4adde9da","tarball":"https://registry.npmjs.org/@10up/block-renderer-serializer/-/block-renderer-serializer-0.1.6.tgz","fileCount":42,"integrity":"sha512-g0SapMpUxVcNx/4OXoEG1CKeMj0ZAFOdQOG4jceh8tGiTjIo/M4XKZf497M+jpGhq8asOPI0DX4dSgwQmUHKUg==","signatures":[{"sig":"MEYCIQD85knjaEYqS6QwtHz5yB1Mb3MbLvj80/EcnUNd8sYjHQIhAKEgY91tGqvIvdRvMo5O9xLW6uW4FHoq87j3G5GKMRsU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":126801},"main":"./dist/index.js","type":"module","_from":"file:10up-block-renderer-serializer-0.1.6.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"tsc -p tsconfig.build.json --watch","test":"vitest run","bench":"vitest bench --run","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:477346ab-7ca7-4c2e-a54c-b06e041f77a9"}},"_resolved":"/tmp/4192f87ea548134d6ab67790392d4eb8/10up-block-renderer-serializer-0.1.6.tgz","_integrity":"sha512-g0SapMpUxVcNx/4OXoEG1CKeMj0ZAFOdQOG4jceh8tGiTjIo/M4XKZf497M+jpGhq8asOPI0DX4dSgwQmUHKUg==","repository":{"url":"git+https://github.com/10up/json-block-renderer.git","type":"git","directory":"packages/serializer"},"_npmVersion":"11.7.0","description":"Render WordPress block markup from JSON block trees using native serialization","directories":{},"_nodeVersion":"22.21.1","dependencies":{"jsdom":"^24.0.0","@wordpress/hooks":"^4.38.0","@wordpress/blocks":"^14.11.0","@wordpress/element":"^6.11.0","@wordpress/block-editor":"^14.11.0","@wordpress/block-library":"^9.17.0","@10up/block-renderer-core":"0.1.6","parse5-html-rewriting-stream":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","typescript":"^5.7.0","@types/jsdom":"^21.1.0"},"_npmOperationalInternal":{"tmp":"tmp/block-renderer-serializer_0.1.6_1768824509866_0.9883252202244097","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@10up/block-renderer-serializer","version":"0.2.0","keywords":["wordpress","blocks","gutenberg","renderer","serialize"],"license":"MIT","_id":"@10up/block-renderer-serializer@0.2.0","maintainers":[{"name":"fabiankaegy","email":"mail@fabian-kaegy.de"},{"name":"eugene-manuilov","email":"eugene.manuilov@gmail.com"},{"name":"christianc1","email":"christian.m.chung@gmail.com"},{"name":"nicholasio","email":"nicholasio.oliveira@gmail.com"},{"name":"joesnellpdx","email":"joesnellpdx@gmail.com"},{"name":"devinle","email":"devin.leggett@gmail.com"},{"name":"darylldoyle","email":"daryll.doyle@10up.com"}],"homepage":"https://github.com/10up/json-block-renderer#readme","bugs":{"url":"https://github.com/10up/json-block-renderer/issues"},"dist":{"shasum":"c5dcd11b151614d96f5291732c4053be9ece097b","tarball":"https://registry.npmjs.org/@10up/block-renderer-serializer/-/block-renderer-serializer-0.2.0.tgz","fileCount":42,"integrity":"sha512-WGn4Mh/cnr+Rty/KoGQwBeX1BuU3LbTJUB1U/d2jjIFjVtsxww4UVZ3d0Z3aVi8Qthf0XPEySajFNHRob275+Q==","signatures":[{"sig":"MEYCIQCB6MBAbu8vkRLUyQz+SwropAfmuq3ex2KsmuFdxSH0ewIhANCIFherSKy3GWS3rNgfzTok28zPLeZGyJd0pemisL8F","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131377},"main":"./dist/index.js","type":"module","_from":"file:10up-block-renderer-serializer-0.2.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"tsc -p tsconfig.build.json --watch","test":"vitest run","bench":"vitest bench --run","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:477346ab-7ca7-4c2e-a54c-b06e041f77a9"}},"_resolved":"/tmp/6d595ce235dc8c367276bc0adde167f4/10up-block-renderer-serializer-0.2.0.tgz","_integrity":"sha512-WGn4Mh/cnr+Rty/KoGQwBeX1BuU3LbTJUB1U/d2jjIFjVtsxww4UVZ3d0Z3aVi8Qthf0XPEySajFNHRob275+Q==","repository":{"url":"git+https://github.com/10up/json-block-renderer.git","type":"git","directory":"packages/serializer"},"_npmVersion":"11.7.0","description":"Render WordPress block markup from JSON block trees using native serialization","directories":{},"_nodeVersion":"22.21.1","dependencies":{"jsdom":"^24.0.0","picomatch":"^4.0.3","@wordpress/hooks":"^4.38.0","@wordpress/blocks":"^14.11.0","@wordpress/element":"^6.11.0","@wordpress/block-editor":"^14.11.0","@wordpress/block-library":"^9.17.0","@10up/block-renderer-core":"0.1.6","parse5-html-rewriting-stream":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","typescript":"^5.7.0","@types/jsdom":"^21.1.0","@types/picomatch":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/block-renderer-serializer_0.2.0_1768830706611_0.5345405071004847","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@10up/block-renderer-serializer","version":"0.2.1","keywords":["wordpress","blocks","gutenberg","renderer","serialize"],"license":"MIT","_id":"@10up/block-renderer-serializer@0.2.1","maintainers":[{"name":"fabiankaegy","email":"mail@fabian-kaegy.de"},{"name":"eugene-manuilov","email":"eugene.manuilov@gmail.com"},{"name":"christianc1","email":"christian.m.chung@gmail.com"},{"name":"nicholasio","email":"nicholasio.oliveira@gmail.com"},{"name":"joesnellpdx","email":"joesnellpdx@gmail.com"},{"name":"devinle","email":"devin.leggett@gmail.com"},{"name":"darylldoyle","email":"daryll.doyle@10up.com"}],"homepage":"https://github.com/10up/json-block-renderer#readme","bugs":{"url":"https://github.com/10up/json-block-renderer/issues"},"dist":{"shasum":"e4b6240ae945cbac969ff897ee02ddc3beb32d9b","tarball":"https://registry.npmjs.org/@10up/block-renderer-serializer/-/block-renderer-serializer-0.2.1.tgz","fileCount":42,"integrity":"sha512-6UzgaJOSTHjzqk/btxX2iDtk6CE51gffWx/kZwFNLVdQMIWLkvhzriDnAFpktsrr2BwOMwY1Nybbqc7zxpQ1XA==","signatures":[{"sig":"MEUCIQDYvfkKt02ybxh9QKVBENmt1mCa9vpgiSZnFtJbSELqVgIgEuP9BdvNGoqKjJdE1SgjKYJDe6WGG/cB9oHf1M56Z7o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":132991},"main":"./dist/index.js","type":"module","_from":"file:10up-block-renderer-serializer-0.2.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"tsc -p tsconfig.build.json --watch","test":"vitest run","bench":"vitest bench --run","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:477346ab-7ca7-4c2e-a54c-b06e041f77a9"}},"_resolved":"/tmp/7ac0877184b2a987e492be89aeb5168f/10up-block-renderer-serializer-0.2.1.tgz","_integrity":"sha512-6UzgaJOSTHjzqk/btxX2iDtk6CE51gffWx/kZwFNLVdQMIWLkvhzriDnAFpktsrr2BwOMwY1Nybbqc7zxpQ1XA==","repository":{"url":"git+https://github.com/10up/json-block-renderer.git","type":"git","directory":"packages/serializer"},"_npmVersion":"11.7.0","description":"Render WordPress block markup from JSON block trees using native serialization","directories":{},"_nodeVersion":"22.21.1","dependencies":{"jsdom":"^24.0.0","picomatch":"^4.0.3","@wordpress/hooks":"^4.38.0","@wordpress/blocks":"^14.11.0","@wordpress/element":"^6.11.0","@wordpress/block-editor":"^14.11.0","@wordpress/block-library":"^9.17.0","@10up/block-renderer-core":"0.1.6","parse5-html-rewriting-stream":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","typescript":"^5.7.0","@types/jsdom":"^21.1.0","@types/picomatch":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/block-renderer-serializer_0.2.1_1768834430238_0.658735808983824","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@10up/block-renderer-serializer","version":"0.2.2","keywords":["wordpress","blocks","gutenberg","renderer","serialize"],"license":"MIT","_id":"@10up/block-renderer-serializer@0.2.2","maintainers":[{"name":"fabiankaegy","email":"mail@fabian-kaegy.de"},{"name":"eugene-manuilov","email":"eugene.manuilov@gmail.com"},{"name":"christianc1","email":"christian.m.chung@gmail.com"},{"name":"nicholasio","email":"nicholasio.oliveira@gmail.com"},{"name":"joesnellpdx","email":"joesnellpdx@gmail.com"},{"name":"devinle","email":"devin.leggett@gmail.com"},{"name":"darylldoyle","email":"daryll.doyle@10up.com"}],"homepage":"https://github.com/10up/json-block-renderer#readme","bugs":{"url":"https://github.com/10up/json-block-renderer/issues"},"dist":{"shasum":"7a59d716b3b3fc8e637f47283acfcc0a6f251d85","tarball":"https://registry.npmjs.org/@10up/block-renderer-serializer/-/block-renderer-serializer-0.2.2.tgz","fileCount":42,"integrity":"sha512-rRQIqy2QQGg2/ZRv+GjXl1Y8R+h11jbZkdQA0X33WD6SIzoA0xP1S9XS9e/x9+9UQUpsugAJfMgsF+9fTFiWPQ==","signatures":[{"sig":"MEUCIHSUxoLn4Hl/CgWlZEVGCsiB52klgst0Txf2ALjsGQAIAiEAyJgs01R8Ts1dG9t3zkVIwYnifMsHutbxXiYCN8mQRl8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":133192},"main":"./dist/index.js","type":"module","_from":"file:10up-block-renderer-serializer-0.2.2.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"tsc -p tsconfig.build.json --watch","test":"vitest run","bench":"vitest bench --run","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:477346ab-7ca7-4c2e-a54c-b06e041f77a9"}},"_resolved":"/tmp/988f7f8caae240dc84688da6cd3a6721/10up-block-renderer-serializer-0.2.2.tgz","_integrity":"sha512-rRQIqy2QQGg2/ZRv+GjXl1Y8R+h11jbZkdQA0X33WD6SIzoA0xP1S9XS9e/x9+9UQUpsugAJfMgsF+9fTFiWPQ==","repository":{"url":"git+https://github.com/10up/json-block-renderer.git","type":"git","directory":"packages/serializer"},"_npmVersion":"11.7.0","description":"Render WordPress block markup from JSON block trees using native serialization","directories":{},"_nodeVersion":"22.21.1","dependencies":{"jsdom":"^24.0.0","picomatch":"^4.0.3","@wordpress/hooks":"^4.38.0","@wordpress/blocks":"^14.11.0","@wordpress/element":"^6.11.0","@wordpress/block-editor":"^14.11.0","@wordpress/block-library":"^9.17.0","@10up/block-renderer-core":"0.1.6","parse5-html-rewriting-stream":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","typescript":"^5.7.0","@types/jsdom":"^21.1.0","@types/picomatch":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/block-renderer-serializer_0.2.2_1768908185214_0.1684532839940991","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@10up/block-renderer-serializer","version":"0.3.0","keywords":["wordpress","blocks","gutenberg","renderer","serialize"],"license":"MIT","_id":"@10up/block-renderer-serializer@0.3.0","maintainers":[{"name":"fabiankaegy","email":"mail@fabian-kaegy.de"},{"name":"eugene-manuilov","email":"eugene.manuilov@gmail.com"},{"name":"christianc1","email":"christian.m.chung@gmail.com"},{"name":"nicholasio","email":"nicholasio.oliveira@gmail.com"},{"name":"joesnellpdx","email":"joesnellpdx@gmail.com"},{"name":"devinle","email":"devin.leggett@gmail.com"},{"name":"darylldoyle","email":"daryll.doyle@10up.com"}],"homepage":"https://github.com/10up/json-block-renderer#readme","bugs":{"url":"https://github.com/10up/json-block-renderer/issues"},"dist":{"shasum":"efa02c740dbf389bdeacabd419278e80c6950836","tarball":"https://registry.npmjs.org/@10up/block-renderer-serializer/-/block-renderer-serializer-0.3.0.tgz","fileCount":42,"integrity":"sha512-v82/684E4JjJT4dKn7j3oPPY7Sys5Z6OTMCeqp3QGGdv1sFbTXaexkOGnPuic6mopbobW9fAlTwLE9nY9LunDA==","signatures":[{"sig":"MEQCID8UOd9hCgNvEbp3Phisax8ptlkHQccT4p1JlJiTRaHOAiAjx7t3DIqOainT1m31/rfAD1W9DLil1z+mps0HSd5BmQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":143749},"main":"./dist/index.js","type":"module","_from":"file:10up-block-renderer-serializer-0.3.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"tsc -p tsconfig.build.json --watch","test":"vitest run","bench":"vitest bench --run","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:477346ab-7ca7-4c2e-a54c-b06e041f77a9"}},"_resolved":"/tmp/72f189999f05cc0d18389626dbe26f33/10up-block-renderer-serializer-0.3.0.tgz","_integrity":"sha512-v82/684E4JjJT4dKn7j3oPPY7Sys5Z6OTMCeqp3QGGdv1sFbTXaexkOGnPuic6mopbobW9fAlTwLE9nY9LunDA==","repository":{"url":"git+https://github.com/10up/json-block-renderer.git","type":"git","directory":"packages/serializer"},"_npmVersion":"11.8.0","description":"Render WordPress block markup from JSON block trees using native serialization","directories":{},"_nodeVersion":"22.21.1","dependencies":{"jsdom":"^24.0.0","picomatch":"^4.0.3","@wordpress/hooks":"^4.38.0","@wordpress/blocks":"^14.11.0","@wordpress/element":"^6.11.0","@wordpress/block-editor":"^14.11.0","@wordpress/block-library":"^9.17.0","@10up/block-renderer-core":"0.2.0","parse5-html-rewriting-stream":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","typescript":"^5.7.0","@types/jsdom":"^21.1.0","@types/picomatch":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/block-renderer-serializer_0.3.0_1769077368535_0.3856680563593906","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-01-19T11:51:15.689Z","modified":"2026-08-21T19:38:47.755Z","0.1.4":"2026-01-19T11:51:15.979Z","0.1.5":"2026-01-19T12:00:28.617Z","0.1.6":"2026-01-19T12:08:30.000Z","0.2.0":"2026-01-19T13:51:46.750Z","0.2.1":"2026-01-19T14:53:50.395Z","0.2.2":"2026-01-20T11:23:05.379Z","0.3.0":"2026-01-22T10:22:48.705Z"},"bugs":{"url":"https://github.com/10up/json-block-renderer/issues"},"license":"MIT","homepage":"https://github.com/10up/json-block-renderer#readme","keywords":["wordpress","blocks","gutenberg","renderer","serialize"],"repository":{"url":"git+https://github.com/10up/json-block-renderer.git","type":"git","directory":"packages/serializer"},"description":"Render WordPress block markup from JSON block trees using native serialization","maintainers":[{"email":"mail@fabian-kaegy.de","name":"fabiankaegy"},{"email":"eugene.manuilov@gmail.com","name":"eugene-manuilov"},{"email":"christian.m.chung@gmail.com","name":"christianc1"},{"email":"nicholasio.oliveira@gmail.com","name":"nicholasio"},{"email":"joesnellpdx@gmail.com","name":"joesnellpdx"},{"email":"devin.leggett@gmail.com","name":"devinle"},{"email":"daryll.doyle@10up.com","name":"darylldoyle"},{"email":"jeffpaul@hotmail.com","name":"jeffpaul"}],"readme":"# @10up/block-renderer-serializer\n\nRender JSON block trees to WordPress block markup using native `@wordpress/blocks` serialization. This package converts the flat BlockTree JSON format into valid WordPress block markup.\n\n## Installation\n\n```bash\nnpm install @10up/block-renderer-serializer\n# or\npnpm add @10up/block-renderer-serializer\n```\n\n## Overview\n\nThis package:\n\n1. **Sets up browser environment** - Provides DOM APIs needed by `@wordpress/blocks` in Node.js\n2. **Registers blocks** - Core blocks and third-party blocks from plugins/themes\n3. **Converts JSON to blocks** - Transforms BlockTree format to WordPress block objects\n4. **Serializes to markup** - Produces valid `<!-- wp:block-name -->` markup\n\n## Usage\n\n### Basic Rendering\n\n```typescript\nimport {\n  setupBrowserEnvironment,\n  registerCoreBlocks,\n  renderBlockTree\n} from '@10up/block-renderer-serializer';\n\n// Setup environment (required once at startup)\nsetupBrowserEnvironment();\nawait registerCoreBlocks();\n\n// Render a block tree\nconst tree = {\n  root: 'para-1',\n  elements: {\n    'para-1': {\n      key: 'para-1',\n      type: 'core/paragraph',\n      props: { content: 'Hello world' }\n    }\n  }\n};\n\nconst markup = renderBlockTree(tree);\n// <!-- wp:paragraph -->\n// <p>Hello world</p>\n// <!-- /wp:paragraph -->\n```\n\n### Nested Blocks\n\n```typescript\nconst tree = {\n  root: 'group-1',\n  elements: {\n    'group-1': {\n      key: 'group-1',\n      type: 'core/group',\n      props: { layout: { type: 'constrained' } },\n      children: ['heading-1', 'para-1']\n    },\n    'heading-1': {\n      key: 'heading-1',\n      type: 'core/heading',\n      props: { content: 'Title', level: 2 },\n      parentKey: 'group-1'\n    },\n    'para-1': {\n      key: 'para-1',\n      type: 'core/paragraph',\n      props: { content: 'Content here' },\n      parentKey: 'group-1'\n    }\n  }\n};\n\nconst markup = renderBlockTree(tree);\n```\n\n### Multiple Root Blocks\n\nRender multiple separate block trees:\n\n```typescript\nimport { renderBlockTrees } from '@10up/block-renderer-serializer';\n\nconst trees = [tree1, tree2, tree3];\nconst markup = renderBlockTrees(trees);\n```\n\n### Custom Serialization Options\n\n```typescript\nimport { renderBlockTree } from '@10up/block-renderer-serializer';\n\nconst markup = renderBlockTree(tree, {\n  // Add newlines between blocks\n  pretty: true\n});\n```\n\n## Rendering Block Templates\n\nFor migration scripts or when working with PHP-style block templates, use `renderBlockTemplate`:\n\n```typescript\nimport {\n  setupBrowserEnvironment,\n  registerCoreBlocks,\n  renderBlockTemplate\n} from '@10up/block-renderer-serializer';\n\nsetupBrowserEnvironment();\nawait registerCoreBlocks();\n\n// PHP-style nested array format: [blockType, attributes?, innerBlocks?]\nconst template = [\n  ['core/paragraph', { content: 'Hello world' }],\n  ['core/group', { layout: { type: 'constrained' } }, [\n    ['core/heading', { content: 'Title', level: 2 }],\n    ['core/paragraph', { content: 'Content here' }],\n  ]],\n];\n\nconst markup = renderBlockTemplate(template);\n```\n\n### Block Template Format\n\nEach entry in the template is an array with 1-3 elements:\n\n```typescript\ntype BlockTemplateEntry =\n  | [string]                                          // Just block type\n  | [string, Record<string, unknown>]                 // Block type + attributes\n  | [string, Record<string, unknown>, BlockTemplateEntry[]]; // Full entry\n```\n\nExamples:\n- `['core/separator']` - Block with no attributes\n- `['core/paragraph', { content: 'Hello' }]` - Block with attributes\n- `['core/group', {}, [['core/paragraph', {}]]]` - Block with inner blocks\n\n### Convert Template to Blocks\n\nFor lower-level access, convert templates to WordPress block objects:\n\n```typescript\nimport { convertTemplateToBlocks } from '@10up/block-renderer-serializer';\n\nconst blocks = convertTemplateToBlocks(template);\n// Returns WordPress BlockInstance[] for further manipulation\n```\n\n## Third-Party Block Support\n\nThe renderer supports third-party blocks from plugins and themes. These blocks must be registered before rendering.\n\n### Scan WordPress Installation\n\nScan a WordPress installation for all available blocks:\n\n```typescript\nimport {\n  scanBlocksFromWpContent,\n  registerScannedBlocks\n} from '@10up/block-renderer-serializer';\n\n// Scan wp-content directory for block.json files\nconst scannedBlocks = scanBlocksFromWpContent(\n  '/path/to/wp-content',\n  'theme-name'  // Optional: scan theme blocks too\n);\n\n// Register all found blocks\nconst registeredCount = registerScannedBlocks(scannedBlocks);\nconsole.log(`Registered ${registeredCount} third-party blocks`);\n```\n\nThis scans:\n- `/wp-content/plugins/*/` (excluding `gutenberg` to avoid duplicates)\n- `/wp-content/mu-plugins/*/`\n- `/wp-content/client-mu-plugins/*/` (VIP)\n- `/wp-content/themes/{theme-name}/blocks/`\n\n### Register Custom Block Manually\n\n```typescript\nimport { registerCustomBlock } from '@10up/block-renderer-serializer';\n\nregisterCustomBlock({\n  name: 'my-plugin/custom-block',\n  title: 'Custom Block',\n  attributes: {\n    title: { type: 'string' }\n  }\n});\n```\n\n### Path Utilities\n\n```typescript\nimport {\n  getThemeNameFromPath,\n  getWpContentPathFromTheme\n} from '@10up/block-renderer-serializer';\n\ngetThemeNameFromPath('/var/www/wp-content/themes/my-theme');\n// 'my-theme'\n\ngetWpContentPathFromTheme('/var/www/wp-content/themes/my-theme');\n// '/var/www/wp-content'\n```\n\n## Block Registration\n\n### Check Registration Status\n\n```typescript\nimport {\n  areCoreBlocksRegistered,\n  isBlockRegistered,\n  getRegisteredBlockNames,\n  getBlocksByCategory\n} from '@10up/block-renderer-serializer';\n\n// Check if core blocks are registered\nif (!areCoreBlocksRegistered()) {\n  await registerCoreBlocks();\n}\n\n// Check specific block\nisBlockRegistered('core/paragraph');  // true\nisBlockRegistered('my-plugin/block'); // false (until registered)\n\n// Get all registered block names\nconst allBlocks = getRegisteredBlockNames();\n// ['core/paragraph', 'core/heading', 'core/group', ...]\n\n// Get blocks by category\nconst categories = getBlocksByCategory();\n// Map { 'text' => ['core/paragraph', 'core/heading', ...], ... }\n```\n\n### Unregister Blocks\n\n```typescript\nimport { unregisterBlock } from '@10up/block-renderer-serializer';\n\nunregisterBlock('core/freeform'); // Remove Classic Editor block\n```\n\n## Browser Environment\n\nWordPress block APIs require DOM APIs that don't exist in Node.js. This package sets up a browser-like environment using jsdom.\n\n```typescript\nimport {\n  setupBrowserEnvironment,\n  isBrowserEnvironmentReady\n} from '@10up/block-renderer-serializer';\n\n// Check if already initialized\nif (!isBrowserEnvironmentReady()) {\n  setupBrowserEnvironment();\n}\n```\n\nThe setup must be called before registering any blocks.\n\n## Low-Level APIs\n\n### Convert Tree to Blocks\n\nConvert without serializing (useful for inspection):\n\n```typescript\nimport { convertTreeToBlocks } from '@10up/block-renderer-serializer';\n\nconst blocks = convertTreeToBlocks(tree);\n// Returns WordPress block objects\n```\n\n### Convert Multiple Roots\n\n```typescript\nimport { convertMultipleRootsToBlocks } from '@10up/block-renderer-serializer';\n\nconst blocks = convertMultipleRootsToBlocks([tree1, tree2]);\n```\n\n### Validate Tree References\n\nCheck that all parent/child references are valid:\n\n```typescript\nimport { validateTreeReferences } from '@10up/block-renderer-serializer';\n\nconst isValid = validateTreeReferences(tree);\n// true if all children/parentKey references exist\n```\n\n### Serialize Block Objects\n\n```typescript\nimport { serializeBlocks } from '@10up/block-renderer-serializer';\n\nconst markup = serializeBlocks(blocks);\n```\n\n## Pretty Printing\n\nFormat block markup for better readability:\n\n```typescript\nimport { formatBlockMarkup } from '@10up/block-renderer-serializer';\nimport type { PrettyPrintOptions } from '@10up/block-renderer-serializer';\n\nconst markup = '<!-- wp:paragraph --><p>Hello</p><!-- /wp:paragraph -->';\n\nconst formatted = formatBlockMarkup(markup, {\n  indentSize: 2,       // Spaces per indent level (default: 2)\n  indentChar: ' ',     // Character to use for indentation (default: space)\n  newlineBetweenBlocks: true  // Add newlines between top-level blocks (default: true)\n});\n\n// Output:\n// <!-- wp:paragraph -->\n// <p>Hello</p>\n// <!-- /wp:paragraph -->\n```\n\n## PHP Pattern Transformation\n\nTransform rendered markup into production-ready PHP patterns with internationalization:\n\n```typescript\nimport {\n  transformToPhpPatternSync,\n  escapeText,\n  escapeImagePath,\n} from '@10up/block-renderer-serializer';\n\n// Transform complete markup\nconst phpMarkup = transformToPhpPatternSync(markup, {\n  textDomain: 'my-theme',\n  assetDirectory: 'assets'  // optional, default: 'assets'\n});\n\n// Individual escape functions\nescapeText('Hello World', 'my-theme');\n// \"<?php echo esc_html__( 'Hello World', 'my-theme' ); ?>\"\n\nescapeImagePath('assets/images/hero.jpg', 'my-theme');\n// \"<?php echo esc_url( get_template_directory_uri() ); ?>/assets/images/hero.jpg\"\n```\n\n### What Gets Transformed\n\n| Content Type | Transformation |\n|-------------|----------------|\n| Text inside tags (`<h2>`, `<p>`, `<a>`, etc.) | `<?php echo esc_html__( 'text', 'domain' ); ?>` |\n| `alt` attribute | `<?php echo esc_attr__( 'text', 'domain' ); ?>` |\n| `title` attribute | `<?php echo esc_attr__( 'text', 'domain' ); ?>` |\n| `placeholder` attribute | `<?php echo esc_attr__( 'text', 'domain' ); ?>` |\n| `aria-label` attribute | `<?php echo esc_attr__( 'text', 'domain' ); ?>` |\n| Local image `src` (with `assets/`) | `<?php echo esc_url( get_template_directory_uri() ); ?>/assets/...` |\n| Block JSON attributes | Escaped with appropriate function |\n\n### Usage with renderBlockTree\n\n```typescript\nimport { renderBlockTree } from '@10up/block-renderer-serializer';\n\n// Regular rendering\nconst markup = renderBlockTree(tree);\n\n// With PHP pattern transformation\nconst phpMarkup = renderBlockTree(tree, {\n  phpPattern: {\n    textDomain: 'my-theme',\n    assetDirectory: 'assets'\n  }\n});\n```\n\n## Types\n\n### ScannedBlock\n\n```typescript\ninterface ScannedBlock {\n  blockJson: BlockJson;\n  source: 'plugin' | 'mu-plugin' | 'theme';\n  sourceName: string;\n}\n```\n\n### SerializeOptions\n\n```typescript\ninterface SerializeOptions {\n  pretty?: boolean;\n}\n```\n\n## Complete Exports\n\n### Setup Functions\n\n| Function | Description |\n|----------|-------------|\n| `setupBrowserEnvironment()` | Initialize browser environment for Node.js |\n| `isBrowserEnvironmentReady()` | Check if environment is initialized |\n\n### Rendering Functions\n\n| Function | Description |\n|----------|-------------|\n| `renderBlockTree(tree, options?)` | Render single block tree to markup |\n| `renderBlockTrees(trees, options?)` | Render multiple block trees |\n| `renderBlockTemplate(template, options?)` | Render PHP-style nested array template to markup |\n| `serializeBlocks(blocks)` | Serialize WordPress block objects |\n\n### Conversion Functions\n\n| Function | Description |\n|----------|-------------|\n| `convertTreeToBlocks(tree)` | Convert BlockTree to WordPress blocks |\n| `convertTemplateToBlocks(template)` | Convert BlockTemplate to WordPress blocks |\n| `convertMultipleRootsToBlocks(trees)` | Convert multiple trees to blocks |\n| `validateTreeReferences(tree)` | Validate tree has valid references |\n\n### Registration Functions\n\n| Function | Description |\n|----------|-------------|\n| `registerCoreBlocks()` | Register all WordPress core blocks |\n| `registerCustomBlock(blockJson, settings?)` | Register a custom block |\n| `registerScannedBlocks(blocks)` | Register multiple scanned blocks |\n| `unregisterBlock(name)` | Unregister a block |\n| `areCoreBlocksRegistered()` | Check if core blocks are registered |\n| `isBlockRegistered(name)` | Check if specific block is registered |\n| `getRegisteredBlockNames()` | Get all registered block names |\n| `getBlocksByCategory()` | Get blocks grouped by category |\n\n### Block Scanning Functions\n\n| Function | Description |\n|----------|-------------|\n| `scanBlocksFromWpContent(wpContentPath, themeName?)` | Scan for block.json files |\n| `getThemeNameFromPath(themePath)` | Extract theme name from path |\n| `getWpContentPathFromTheme(themePath)` | Derive wp-content path from theme |\n\n### Pretty Printing Functions\n\n| Function | Description |\n|----------|-------------|\n| `formatBlockMarkup(markup, options?)` | Format block markup for readability |\n\n### PHP Pattern Transformation Functions\n\n| Function | Description |\n|----------|-------------|\n| `transformToPhpPatternSync(markup, options)` | Transform markup to PHP pattern |\n| `escapeText(text, textDomain)` | Escape text with esc_html__ |\n| `escapeImagePath(path, textDomain)` | Escape image path with get_template_directory_uri |\n\n### Types\n\n| Type | Description |\n|------|-------------|\n| `ScannedBlock` | Block found during scanning |\n| `SerializeOptions` | Options for BlockTree serialization |\n| `TemplateSerializeOptions` | Options for BlockTemplate serialization |\n| `PrettyPrintOptions` | Options for formatBlockMarkup |\n| `BlockTemplate` | PHP-style nested array template (from core) |\n| `BlockTemplateEntry` | Single entry in a BlockTemplate (from core) |\n\n## License\n\nMIT\n","readmeFilename":"README.md"}