{"_id":"frameset","_rev":"36-c1f342f93762d95c91d789f3cc9ed5d2","name":"frameset","dist-tags":{"latest":"0.17.1"},"versions":{"0.1.0":{"name":"frameset","version":"0.1.0","_id":"frameset@0.1.0","maintainers":[{"name":"rupertsworld","email":"rp@rupert.cloud"}],"bin":{"frameset":"dist/cli.js"},"dist":{"shasum":"3cb12d0d3e24d6014e88811403e8587dbe171dc1","tarball":"https://registry.npmjs.org/frameset/-/frameset-0.1.0.tgz","fileCount":46,"integrity":"sha512-1wyQPar7B5f9eCsE/gcLw+Wn6K84taPcTvWtxHlwQ73SC4PJwIGTdntGdW7/T5eFl2Wz9NAjG/NPYf9CdZYsnw==","signatures":[{"sig":"MEYCIQCqenx6clNvnCMp28i5Qpld9Gz/3skbNVRmNcFimeOFjwIhAOUT9MLBF2N9eOG3tXkpnd/ZvyaTdT8sSDqnpj+0I7Fy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":162345},"type":"module","gitHead":"58b3849d89e915269c3acd58c780b8bd71a64688","scripts":{"dev":"node ./src/cli.ts --path example","test":"node --test test/*.test.ts","build":"tsup src/cli.ts --format esm --target node22 --outDir dist && node -e \"require('node:fs').copyFileSync('src/shared-styles.css','dist/shared-styles.css')\" && vite build src/viewer --outDir ../../dist/viewer --emptyOutDir --base /__frameset/viewer/","start":"node ./src/cli.ts","typecheck":"tsc --project tsconfig.json && tsc --project src/viewer/tsconfig.json"},"_npmUser":{"name":"rupertsworld","email":"rp@rupert.cloud"},"_npmVersion":"11.8.0","description":"A lightweight viewer for iterating on HTML frames alongside a real codebase. A frame is an HTML fragment that imports real components and styles. Frameset discovers those files, wraps them into full documents at serve time, and shows them in a live viewer","directories":{},"_nodeVersion":"22.21.0","dependencies":{"vite":"^8.0.0","chalk":"^5.6.2","lit-html":"^3.3.2","commander":"^14.0.3","@telepath-computer/ui":"^0.1.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","typescript":"^5.9.2","@types/node":"^24.5.2"},"_npmOperationalInternal":{"tmp":"tmp/frameset_0.1.0_1774320463026_0.8405386959382235","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"frameset","version":"0.1.1","_id":"frameset@0.1.1","maintainers":[{"name":"rupertsworld","email":"rp@rupert.cloud"}],"bin":{"frameset":"dist/cli.js"},"dist":{"shasum":"2052a6d3ad7b6d5f5800b54a3b4daf7cec2d6b74","tarball":"https://registry.npmjs.org/frameset/-/frameset-0.1.1.tgz","fileCount":51,"integrity":"sha512-6VPdoGWmV+P4odnQvTxeFB2L6p68/C7LUOO+7+ngvjYuz4umrzQHuvdY80iAU+xhBlqMpEjmVS2DUmtoT3+jwA==","signatures":[{"sig":"MEUCIFClnj/iTMGUdGmeJmc+Gd+oX/Khfya8bmly+NBEKqIFAiEA9U7q4oUqbwzNsBdVmk/XIEfUCOvaauSWsQAb0KTcczs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":202152},"type":"module","gitHead":"10887d47d334d3382df74a7adda75fe49e223bbc","scripts":{"dev":"node ./src/cli.ts --path example","test":"node --test test/*.test.ts","build":"tsup src/cli.ts --format esm --target node22 --outDir dist && node scripts/copy-static.js && vite build src/viewer --outDir ../../dist/viewer --emptyOutDir --base /__frameset/viewer/","start":"node ./src/cli.ts","test:e2e":"playwright test","typecheck":"tsc --project tsconfig.json && tsc --project src/viewer/tsconfig.json"},"_npmUser":{"name":"rupertsworld","email":"rp@rupert.cloud"},"_npmVersion":"10.9.4","description":"A lightweight viewer for iterating on HTML frames alongside a real codebase. A frame is an HTML fragment that imports real components and styles. Frameset discovers those files, wraps them into full documents at serve time, and shows them in a live viewer","directories":{},"_nodeVersion":"22.22.1","dependencies":{"vite":"^8.0.0","chalk":"^5.6.2","lit-html":"^3.3.2","commander":"^14.0.3","@telepath-computer/ui":"^0.1.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","typescript":"^5.9.2","@types/node":"^24.5.2","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/frameset_0.1.1_1775167184167_0.43760802495895623","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"frameset","version":"0.1.2","_id":"frameset@0.1.2","maintainers":[{"name":"rupertsworld","email":"rp@rupert.cloud"}],"bin":{"frameset":"dist/cli.js"},"dist":{"shasum":"2027490fd49d5592e9edce37c371a28f57cf85a1","tarball":"https://registry.npmjs.org/frameset/-/frameset-0.1.2.tgz","fileCount":59,"integrity":"sha512-bNeE8yuSbAhTdgh5pSoe1VwZaDQgOlx94DJhc7bPKJCuDjfR4C35qHsLwYG+DAecLuW57eGIaMbtUFGibLtb5w==","signatures":[{"sig":"MEUCIE1r9wMiQ4m0L77fFZCksgensUi6F95VhMtUHiv1HORFAiEA+oP1rdKfjgYeMkhaS0ekAzAclKH2QUbR/w9TIw39jrY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4381152},"type":"module","gitHead":"d7f7692b6beecb03b5ad1b2c0b7c992d01be002f","scripts":{"dev":"node ./src/cli.ts --path example","test":"node --test test/*.test.ts","build":"tsup src/cli.ts --format esm --target node22 --outDir dist && node scripts/copy-static.js && vite build src/viewer --outDir ../../dist/viewer --emptyOutDir --base /__frameset/viewer/","start":"node ./src/cli.ts","test:e2e":"playwright test","typecheck":"tsc --project tsconfig.json && tsc --project src/viewer/tsconfig.json"},"_npmUser":{"name":"rupertsworld","email":"rp@rupert.cloud"},"_npmVersion":"10.9.4","description":"A lightweight viewer for iterating on HTML frames alongside a real codebase. A frame is an HTML fragment that imports real components and styles. Frameset discovers those files, wraps them into full documents at serve time, and shows them in a live viewer","directories":{},"_nodeVersion":"22.22.0","dependencies":{"vite":"^8.0.0","chalk":"^5.6.2","lit-html":"^3.3.2","commander":"^14.0.3","node-html-parser":"^7.1.0","@phosphor-icons/web":"^2.1.2"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","typescript":"^5.9.2","@types/node":"^24.5.2","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/frameset_0.1.2_1782165450746_0.7514600069599717","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"frameset","version":"0.1.3","_id":"frameset@0.1.3","maintainers":[{"name":"rupertsworld","email":"rp@rupert.cloud"}],"bin":{"frameset":"dist/cli.js"},"dist":{"shasum":"379670f26fee179331b01243709249e0d554b433","tarball":"https://registry.npmjs.org/frameset/-/frameset-0.1.3.tgz","fileCount":59,"integrity":"sha512-1W53lP5T1OtRmHF8UBKruFx2yvhYrxx8fjUVGwfY6SIUAk4QRATeBchEvtWrptOnK53AmW++dLeSKXL/8ErcWw==","signatures":[{"sig":"MEUCIQCnmZpHrXUnEA11PWgXuTMTsJ5n6sSuqvXbeoopXbFR4wIgRcFjfVVGo6mU6d9X9JRYbv0YsThWHM92JaT4K1LfprA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4381357},"type":"module","gitHead":"6baa2fb1c27cbd3f14d526d6be576291964965cc","scripts":{"dev":"node ./src/cli.ts --path example","test":"node --test test/*.test.ts","build":"tsup src/cli.ts --format esm --target node22 --outDir dist && node scripts/copy-static.js && vite build src/viewer --outDir ../../dist/viewer --emptyOutDir --base /__frameset/viewer/","start":"node ./src/cli.ts","test:e2e":"playwright test","typecheck":"tsc --project tsconfig.json && tsc --project src/viewer/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:007fbddd-2441-41da-adda-cba53206408b"}},"_npmVersion":"11.17.0","description":"A lightweight viewer for iterating on HTML frames alongside a real codebase. A frame is an HTML fragment that imports real components and styles. Frameset discovers those files, wraps them into full documents at serve time, and shows them in a live viewer","directories":{},"_nodeVersion":"24.16.0","dependencies":{"vite":"^8.0.0","chalk":"^5.6.2","lit-html":"^3.3.2","commander":"^14.0.3","node-html-parser":"^7.1.0","@phosphor-icons/web":"^2.1.2"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","typescript":"^5.9.2","@types/node":"^24.5.2","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/frameset_0.1.3_1782165903729_0.8296255605352685","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"frameset","version":"0.1.4","_id":"frameset@0.1.4","maintainers":[{"name":"rupertsworld","email":"rp@rupert.cloud"}],"bin":{"frameset":"dist/cli.js"},"dist":{"shasum":"49487cfdcd0af771f608f7e4c9b3d1fe37b1f247","tarball":"https://registry.npmjs.org/frameset/-/frameset-0.1.4.tgz","fileCount":59,"integrity":"sha512-WnmA1JUybwq2qYq1UrMGIfK86PQQNaVTqy7DMNgFNgrOLCVZdfeuUy6jMHSfU+/yHwj8IMLmr1c1BhvOWfCEqA==","signatures":[{"sig":"MEYCIQDiWgbVMFXyUe846WUP1upjCjSZgpPk/QdbFrpVVKTQewIhAI0INAHoMrm0cVonTUsUpAlOPWGMUK6yhx3EVm7T06pK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4380569},"type":"module","gitHead":"3c7eee348d3237014b12d7405d48ca410127909f","scripts":{"dev":"node ./src/cli.ts --path example","test":"node --test test/*.test.ts","build":"tsup src/cli.ts --format esm --target node22 --outDir dist && node scripts/copy-static.js && vite build src/viewer --outDir ../../dist/viewer --emptyOutDir --base /__frameset/viewer/","start":"node ./src/cli.ts","test:e2e":"playwright test","typecheck":"tsc --project tsconfig.json && tsc --project src/viewer/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:007fbddd-2441-41da-adda-cba53206408b"}},"_npmVersion":"11.17.0","description":"A lightweight viewer for iterating on HTML frames alongside a real codebase. A frame is an HTML fragment that imports real components and styles. Frameset discovers those files, wraps them into full documents at serve time, and shows them in a live viewer","directories":{},"_nodeVersion":"24.16.0","dependencies":{"vite":"^8.0.0","chalk":"^5.6.2","lit-html":"^3.3.2","commander":"^14.0.3","node-html-parser":"^7.1.0","@phosphor-icons/web":"^2.1.2"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","typescript":"^5.9.2","@types/node":"^24.5.2","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/frameset_0.1.4_1782237711920_0.006815924891911074","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"frameset","version":"0.1.5","_id":"frameset@0.1.5","maintainers":[{"name":"rupertsworld","email":"rp@rupert.cloud"}],"bin":{"frameset":"dist/cli.js"},"dist":{"shasum":"5a70a0d5848d93e858b3cad509dbf43197ddbb2d","tarball":"https://registry.npmjs.org/frameset/-/frameset-0.1.5.tgz","fileCount":58,"integrity":"sha512-dQIWA7+GtwZmt/6GKodpX2MVT4zg0uo+eCVfd3L2lENxahXoj+f7GPm6tVwvFBDZ0P903yvne0S67KWAhrssEA==","signatures":[{"sig":"MEYCIQCQjl+5hGe8xrjeZQsv9/4ozO9cAzbYr5nwQgq4n+ttQQIhAL62QZ4sVvFyGWC8ATxicSvZ29CrEaufvyl1P8yITUxm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4362626},"type":"module","gitHead":"efe17352c5cf695636a6d4a3f2769cc686ad7e36","scripts":{"dev":"node ./src/cli.ts --path example","test":"node --test test/*.test.ts","build":"tsup src/cli.ts --format esm --target node22 --outDir dist && node scripts/copy-static.js && vite build src/viewer --outDir ../../dist/viewer --emptyOutDir --base /__frameset/viewer/","start":"node ./src/cli.ts","test:e2e":"playwright test","typecheck":"tsc --project tsconfig.json && tsc --project src/viewer/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:007fbddd-2441-41da-adda-cba53206408b"}},"_npmVersion":"11.17.0","description":"A lightweight viewer for iterating on HTML frames alongside a real codebase. A frame is an HTML fragment that imports real components and styles. Frameset discovers those files, wraps them into full documents at serve time, and shows them in a live viewer","directories":{},"_nodeVersion":"24.17.0","dependencies":{"vite":"^8.0.0","chalk":"^5.6.2","lit-html":"^3.3.2","commander":"^14.0.3","node-html-parser":"^7.1.0","@phosphor-icons/web":"^2.1.2"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","typescript":"^5.9.2","@types/node":"^24.5.2","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/frameset_0.1.5_1782504315697_0.29854808269986255","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"frameset","version":"0.2.0","_id":"frameset@0.2.0","maintainers":[{"name":"rupertsworld","email":"rp@rupert.cloud"}],"bin":{"frameset":"dist/cli.js"},"dist":{"shasum":"dcaea825ee7d92121a95b83fc344b21eb81a446f","tarball":"https://registry.npmjs.org/frameset/-/frameset-0.2.0.tgz","fileCount":64,"integrity":"sha512-RmgL+HLnZi0WZfcvWs6d//p6oY30DB07ljkJ6xL5bzcx9DAqaQ3UXiwQ6aiSm0Qs5YkxDMr17aMzxL3YoE7tLw==","signatures":[{"sig":"MEUCIQCDGLjCZ0yeJaKvwKCmyQ95f2Keo/F+2TFcqQ0i4ZwvaAIgZG7iYrcGEZzBCaKj16XtOYriYPqULQBfP2dRdDC4c04=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4508104},"type":"module","gitHead":"d7cb8193771e93e2ac985caee04ed43e376bc921","scripts":{"dev":"node ./src/cli.ts --path example","test":"node --test test/*.test.ts","build":"tsup src/cli.ts --format esm --target node22 --outDir dist && tsup --config tsup.frame-runtime.config.ts && node scripts/copy-static.js && vite build src/viewer --outDir ../../dist/viewer --emptyOutDir --base /__frameset/viewer/","start":"node ./src/cli.ts","test:e2e":"playwright test","typecheck":"tsc --project tsconfig.json && tsc --project src/viewer/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:007fbddd-2441-41da-adda-cba53206408b"}},"_npmVersion":"11.17.0","description":"A lightweight viewer for iterating on HTML frames alongside a real codebase. A frame is an HTML fragment that imports real components and styles. Frameset discovers those files, wraps them into full documents at serve time, and shows them in a live viewer","directories":{},"_nodeVersion":"24.17.0","dependencies":{"vite":"^8.0.0","chalk":"^5.6.2","lit-html":"^3.3.2","commander":"^14.0.3","node-html-parser":"^7.1.0","@phosphor-icons/web":"^2.1.2","@rupertsworld/event-target":"^0.1.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","esbuild":"^0.28.1","typescript":"^5.9.2","@types/node":"^24.5.2","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/frameset_0.2.0_1782518154981_0.8925474033921004","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"frameset","version":"0.2.1","_id":"frameset@0.2.1","maintainers":[{"name":"rupertsworld","email":"rp@rupert.cloud"}],"bin":{"frameset":"dist/cli.js"},"dist":{"shasum":"3d7e621da97e5f6d4ee358b776df5921de7814a6","tarball":"https://registry.npmjs.org/frameset/-/frameset-0.2.1.tgz","fileCount":65,"integrity":"sha512-iNMTh3av1tBO7Xgcqas4UmQfBBE0Ij+oxRGRImpeQ8xSU2ofbrZEVkYpcCYETxROOG2NFAwC7elUlcQiD+HG+A==","signatures":[{"sig":"MEUCIQD7KC8Ca3RKuKxjjXniOnJf1M0ZFh265VqdKnETGYSvvgIgejnsuBFh1gwQpKYV8MAqhMSBU70ZpiF0GDjRDsVNR5c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4515825},"type":"module","gitHead":"8193bec5391a87b448f298be7e8a159a821c39dc","scripts":{"dev":"node ./src/cli.ts --path example","test":"node --test test/*.test.ts","build":"tsup src/cli.ts --format esm --target node22 --outDir dist && tsup --config tsup.frame-runtime.config.ts && node scripts/copy-static.js && vite build src/viewer --outDir ../../dist/viewer --emptyOutDir --base /__frameset/viewer/","start":"node ./src/cli.ts","test:e2e":"playwright test","typecheck":"tsc --project tsconfig.json && tsc --project src/viewer/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:007fbddd-2441-41da-adda-cba53206408b"}},"_npmVersion":"11.17.0","description":"A lightweight viewer for iterating on HTML frames alongside a real codebase. A frame is an HTML fragment that imports real components and styles. Frameset discovers those files, wraps them into full documents at serve time, and shows them in a live viewer","directories":{},"_nodeVersion":"24.17.0","dependencies":{"vite":"^8.0.0","chalk":"^5.6.2","lit-html":"^3.3.2","commander":"^14.0.3","node-html-parser":"^7.1.0","@phosphor-icons/web":"^2.1.2","@rupertsworld/event-target":"^0.1.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","esbuild":"^0.28.1","typescript":"^5.9.2","@types/node":"^24.5.2","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/frameset_0.2.1_1782518944727_0.3570861114945163","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"frameset","version":"0.2.2","_id":"frameset@0.2.2","maintainers":[{"name":"rupertsworld","email":"rp@rupert.cloud"}],"bin":{"frameset":"dist/cli.js"},"dist":{"shasum":"84e32aeccb7a944171ed1619bbc6af3762c9154e","tarball":"https://registry.npmjs.org/frameset/-/frameset-0.2.2.tgz","fileCount":66,"integrity":"sha512-ioZd1ZWXmWyWgGMMmRolIKnNkEO6M6mAihWf98QG7GiXuddVrPTbDj/RzYGjanbbgV0f2F1sBavQaTTQKqCwaA==","signatures":[{"sig":"MEUCIQDAoJ4gS5qaS8zsIFi++HfAs040cLoeZJfBJsFOAWHc4AIgHty2wtFmZSbX+0S/f73MMmTRCXEo1h/irD8DYiM9BtY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4410582},"type":"module","gitHead":"5e3ebd5314a9555dcba63451348431a5cf3e464b","scripts":{"dev":"node ./src/cli.ts --path example","test":"node --test test/*.test.ts","build":"tsup src/cli.ts --format esm --target node22 --outDir dist --external esbuild && tsup --config tsup.frame-runtime.config.ts && node scripts/copy-static.js && vite build src/viewer --outDir ../../dist/viewer --emptyOutDir --base /__frameset/viewer/","start":"node ./src/cli.ts","test:e2e":"playwright test","typecheck":"tsc --project tsconfig.json && tsc --project src/viewer/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:007fbddd-2441-41da-adda-cba53206408b"}},"_npmVersion":"11.17.0","description":"A lightweight viewer for iterating on HTML frames alongside a real codebase. A frame is an HTML fragment that imports real components and styles. Frameset discovers those files, wraps them into full documents at serve time, and shows them in a live viewer","directories":{},"_nodeVersion":"24.17.0","dependencies":{"vite":"^8.0.0","chalk":"^5.6.2","lit-html":"^3.3.2","commander":"^14.0.3","node-html-parser":"^7.1.0","@phosphor-icons/web":"^2.1.2","@rupertsworld/event-target":"^0.1.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","esbuild":"^0.28.1","typescript":"^5.9.2","@types/node":"^24.5.2","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/frameset_0.2.2_1782519833899_0.08553899783609009","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"frameset","version":"0.2.3","_id":"frameset@0.2.3","maintainers":[{"name":"rupertsworld","email":"rp@rupert.cloud"}],"bin":{"frameset":"dist/cli.js"},"dist":{"shasum":"55de73239d50922520ea69074e098c7accfb8a44","tarball":"https://registry.npmjs.org/frameset/-/frameset-0.2.3.tgz","fileCount":66,"integrity":"sha512-bmC168VT+jczThrJmWoUIxQyPZ0OxWW655iz3TgMvRsMF5R4P+8PfH1bRiFN0GJtgm74fZm8LNCBWuY72IKIvQ==","signatures":[{"sig":"MEUCIGYHB+zs7etPo9F0qYu6vY+UcDllC9KCdtYsGMq/PRnsAiEA10DJUGG8qRPYw5wJY9C23exRdg8NT+S7C8MWGxWaE2A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4413315},"type":"module","gitHead":"840aa09dfd79a45847cbe4db6ac3bb9779035ca4","scripts":{"dev":"node ./src/cli.ts --path example","test":"node --test test/*.test.ts","build":"tsup src/cli.ts --format esm --target node22 --outDir dist --external esbuild && tsup --config tsup.frame-runtime.config.ts && node scripts/copy-static.js && vite build src/viewer --outDir ../../dist/viewer --emptyOutDir --base /__frameset/viewer/","start":"node ./src/cli.ts","test:e2e":"playwright test","typecheck":"tsc --project tsconfig.json && tsc --project src/viewer/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:007fbddd-2441-41da-adda-cba53206408b"}},"_npmVersion":"11.17.0","description":"A lightweight viewer for iterating on HTML frames alongside a real codebase. A frame is an HTML fragment that imports real components and styles. Frameset discovers those files, wraps them into full documents at serve time, and shows them in a live viewer","directories":{},"_nodeVersion":"24.17.0","dependencies":{"vite":"^8.0.0","chalk":"^5.6.2","lit-html":"^3.3.2","commander":"^14.0.3","node-html-parser":"^7.1.0","@phosphor-icons/web":"^2.1.2","@rupertsworld/event-target":"^0.1.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","esbuild":"^0.28.1","typescript":"^5.9.2","@types/node":"^24.5.2","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/frameset_0.2.3_1782520839768_0.37202840954766847","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"frameset","version":"0.3.0","_id":"frameset@0.3.0","maintainers":[{"name":"rupertsworld","email":"rp@rupert.cloud"}],"bin":{"frameset":"dist/cli.js"},"dist":{"shasum":"48fdc026e61ea720c842ebf665c8cdb7245ac43f","tarball":"https://registry.npmjs.org/frameset/-/frameset-0.3.0.tgz","fileCount":69,"integrity":"sha512-RRngckJOyaNP5Lde0Uu/isxBCqTwqvMI40Ofh1ha9KK7W6DoJ+YHglr4DvpsbQKnKyfQuiBRIzQ3bL1yZltc/A==","signatures":[{"sig":"MEUCIFaifFpqKXk0GQPERdlGoc9YFtNy0jc9fRgb1YJEbudZAiEA2FX/msSNl3q5X7V3WDiNZJg4meCSZDedxXFbqtIQphI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4425232},"type":"module","gitHead":"4107628629c90e4c7aee572cf145d6eed2c64ddf","scripts":{"dev":"node ./src/cli.ts --path example","test":"node --test test/*.test.ts","build":"tsup src/cli.ts --format esm --target node22 --outDir dist --external esbuild && tsup --config tsup.frame-runtime.config.ts && node scripts/copy-static.js && vite build src/viewer --outDir ../../dist/viewer --emptyOutDir --base /__frameset/viewer/","start":"node ./src/cli.ts","test:e2e":"playwright test","typecheck":"tsc --project tsconfig.json && tsc --project src/viewer/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:007fbddd-2441-41da-adda-cba53206408b"}},"_npmVersion":"11.17.0","description":"A lightweight viewer for iterating on HTML frames alongside a real codebase. A frame is an HTML fragment that imports real components and styles. Frameset discovers those files, wraps them into full documents at serve time, and shows them in a live viewer","directories":{},"_nodeVersion":"24.17.0","dependencies":{"vite":"^8.0.0","chalk":"^5.6.2","lit-html":"^3.3.2","commander":"^14.0.3","node-html-parser":"^7.1.0","@phosphor-icons/web":"^2.1.2","@rupertsworld/event-target":"^0.1.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","esbuild":"^0.28.1","typescript":"^5.9.2","@types/node":"^24.5.2","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/frameset_0.3.0_1782522805177_0.9905165114055947","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"frameset","version":"0.3.1","_id":"frameset@0.3.1","maintainers":[{"name":"rupertsworld","email":"rp@rupert.cloud"}],"bin":{"frameset":"dist/cli.js"},"dist":{"shasum":"711627e7a50a298234d87f46edcb5e81b6cd1de5","tarball":"https://registry.npmjs.org/frameset/-/frameset-0.3.1.tgz","fileCount":68,"integrity":"sha512-EVjz35i3DO7306RgJqwnx/zUchDuhKzPsj7hawxfT+FChYSxNFsQmN9ja7ZK6ZqWRE8n9DQaDylAJIPD9Dokgw==","signatures":[{"sig":"MEYCIQDyReWjIP6XgBB47ywSQzsSPgpOr2dhL6xVrGak8Bo4SQIhANk3QYUSc9xwl+p4/hUXBAqzILuBZf+gISNyiYKcdLx+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4453103},"type":"module","gitHead":"bf29302c5197b88a4e7fb180846c7d6aab354c29","scripts":{"dev":"cd example && node ../src/cli.ts frames","test":"node --test test/*.test.ts","build":"tsup src/cli.ts --format esm --target node22 --outDir dist --external esbuild && tsup --config tsup.frame-runtime.config.ts && node scripts/copy-static.js && vite build src/viewer --outDir ../../dist/viewer --emptyOutDir --base /__frameset/viewer/","test:e2e":"playwright test","typecheck":"tsc --project tsconfig.json && tsc --project src/viewer/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:007fbddd-2441-41da-adda-cba53206408b"}},"_npmVersion":"11.5.2","description":"A lightweight viewer for iterating on HTML frames alongside a real codebase. A frame is an HTML fragment that imports real components and styles. Frameset discovers those files, wraps them into full documents at serve time, and shows them in a live viewer","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^8.0.0","chalk":"^5.6.2","lit-html":"^3.3.2","commander":"^14.0.3","node-html-parser":"^7.1.0","@phosphor-icons/web":"^2.1.2","@rupertsworld/event-target":"^0.1.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","esbuild":"^0.28.1","typescript":"^5.9.2","@types/node":"^24.5.2","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/frameset_0.3.1_1783647744944_0.9320814589658082","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"frameset","version":"0.3.2","_id":"frameset@0.3.2","maintainers":[{"name":"rupertsworld","email":"rp@rupert.cloud"}],"bin":{"frameset":"dist/cli.js"},"dist":{"shasum":"79ea9ca10f2c630ac45bdcde68ae35862318b811","tarball":"https://registry.npmjs.org/frameset/-/frameset-0.3.2.tgz","fileCount":68,"integrity":"sha512-+RerKhZ/Y/K73jIC3dIfsoIBFKG8MpJw5NGdCp636BFNfRM1l4MpLCK1BPSxUUJP/8fLuZUEuTLTXPOuCNtrhw==","signatures":[{"sig":"MEQCICgxxoOy46WBbyAPqUQcuAnqzP7pz/gTFxxT18MBu62vAiBdfYaHjoUU3PjDQO0PC8La9+q43H5oOXz5Fhb9p474Wg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4454983},"type":"module","gitHead":"2ecd89d709b975feb8322b55bf985a59bb4c5889","scripts":{"dev":"cd example && node ../src/cli.ts frames","test":"node --test test/*.test.ts","build":"tsup src/cli.ts --format esm --target node22 --outDir dist --external esbuild && tsup --config tsup.frame-runtime.config.ts && node scripts/copy-static.js && vite build src/viewer --outDir ../../dist/viewer --emptyOutDir --base /__frameset/viewer/","test:e2e":"playwright test","typecheck":"tsc --project tsconfig.json && tsc --project src/viewer/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:007fbddd-2441-41da-adda-cba53206408b"}},"_npmVersion":"11.5.2","description":"A lightweight viewer for iterating on HTML frames alongside a real codebase. A frame is an HTML fragment that imports real components and styles. Frameset discovers those files, wraps them into full documents at serve time, and shows them in a live viewer","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^8.0.0","chalk":"^5.6.2","lit-html":"^3.3.2","commander":"^14.0.3","node-html-parser":"^7.1.0","@phosphor-icons/web":"^2.1.2","@rupertsworld/event-target":"^0.1.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","esbuild":"^0.28.1","typescript":"^5.9.2","@types/node":"^24.5.2","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/frameset_0.3.2_1783649385257_0.7133173643615878","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"frameset","version":"0.4.0","_id":"frameset@0.4.0","maintainers":[{"name":"rupertsworld","email":"rp@rupert.cloud"}],"bin":{"frameset":"dist/cli.js"},"dist":{"shasum":"4fb11385a26dcb073a9d83a4882fb0a5ee27ccd0","tarball":"https://registry.npmjs.org/frameset/-/frameset-0.4.0.tgz","fileCount":91,"integrity":"sha512-HHsOltjwJRLmZN98XHuqy4+p044F3okehpD5JC8qFFxHIUAEqVVqfprZsYwSfe3QOzdZlLt1D5rkFLK0svQ8Bg==","signatures":[{"sig":"MEUCICV/JTb/xBx5gvv1k+A4VMuGeG2eRL5eTL4ns/YUWlBwAiEArqZBc0ndqrSXAxZyl7eQTnhq4oiG8RbPN+fY2mQemuY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4586741},"type":"module","gitHead":"158161208a678ffb5763f41382562c099362cb22","scripts":{"dev":"cd example && node ../src/cli.ts","test":"node --test test/*.test.ts","build":"tsup src/cli.ts --format esm --target node22 --outDir dist --external esbuild && tsup --config tsup.frame-runtime.config.ts && node scripts/copy-static.js && vite build src/viewer --outDir ../../dist/viewer --emptyOutDir --base /__frameset/viewer/","test:e2e":"playwright test","typecheck":"tsc --project tsconfig.json && tsc --project src/viewer/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:007fbddd-2441-41da-adda-cba53206408b"}},"_npmVersion":"11.5.2","description":"A lightweight viewer for iterating on HTML frames alongside a real codebase. A frame is an HTML fragment that imports real components and styles. A `frameset.json` manifest names those files, and Frameset wraps them into full documents at serve time and s","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^8.0.0","chalk":"^5.6.2","lit-html":"^3.3.2","commander":"^14.0.3","node-html-parser":"^7.1.0","@phosphor-icons/web":"^2.1.2","@rupertsworld/event-target":"^0.1.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","esbuild":"^0.28.1","typescript":"^5.9.2","@types/node":"^24.5.2","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/frameset_0.4.0_1785207379817_0.4363783817205067","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"frameset","version":"0.4.1","_id":"frameset@0.4.1","maintainers":[{"name":"rupertsworld","email":"rp@rupert.cloud"}],"bin":{"frameset":"dist/cli.js"},"dist":{"shasum":"aeda9e4b7011808641ba96f88a520df06845ca00","tarball":"https://registry.npmjs.org/frameset/-/frameset-0.4.1.tgz","fileCount":15,"integrity":"sha512-2Fd6ooUE5tKQiL5Nn+l1FekqohsgcCZ+E9QnA4xxBMHGRFu+gExpm7qUqSm8WF0Fa2wHq2wn+PWMSkDsI4zB1Q==","signatures":[{"sig":"MEUCIB3YNw1Ss+ycvMG3Bf6lySqTXvcReyFqQqROQk6PXXBOAiEAjl+Y1gtqHNYL1WVhoyvjm3T9DoyWaW8AqFCjRYNS02A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4251392},"type":"module","gitHead":"066d139d77e567d9beec9c92c7496e63384dfe33","scripts":{"dev":"cd example && node ../src/cli.ts","test":"node --test test/*.test.ts","build":"tsup src/cli.ts --format esm --target node22 --outDir dist --external esbuild && tsup --config tsup.frame-runtime.config.ts && node scripts/copy-static.js && vite build src/viewer --outDir ../../dist/viewer --emptyOutDir --base /__frameset/viewer/","test:e2e":"playwright test","typecheck":"tsc --project tsconfig.json && tsc --project src/viewer/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:007fbddd-2441-41da-adda-cba53206408b"}},"_npmVersion":"11.5.2","description":"A lightweight viewer for iterating on HTML frames alongside a real codebase. A frame is an HTML fragment that imports real components and styles. A `frameset.json` manifest names those files, and Frameset wraps them into full documents at serve time and s","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^8.0.0","chalk":"^5.6.2","lit-html":"^3.3.2","commander":"^14.0.3","node-html-parser":"^7.1.0","@phosphor-icons/web":"^2.1.2","@rupertsworld/event-target":"^0.1.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","esbuild":"^0.28.1","typescript":"^5.9.2","@types/node":"^24.5.2","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/frameset_0.4.1_1785210190313_0.5639087170544215","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"frameset","version":"0.5.0","_id":"frameset@0.5.0","maintainers":[{"name":"rupertsworld","email":"rp@rupert.cloud"}],"bin":{"frameset":"dist/cli.js"},"dist":{"shasum":"17f49afb9d56557070a40f99eaaa051a8b2ce096","tarball":"https://registry.npmjs.org/frameset/-/frameset-0.5.0.tgz","fileCount":15,"integrity":"sha512-TYTkELgTSlIGw7JBpxWCchfW/FRxiR6Uzu0meuwAXN3h3QcJeAzcumF47LFc2j2EWA6YffjzgSfp2aASXryeAw==","signatures":[{"sig":"MEYCIQD9u9Njg/gU9JKs8FTQ+KekmZUSOHfkejBnUbQv0FoKqgIhAPmN+q8L87IwIXmsIEZG7cukIeljNlnbXwMit+De5ynM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4251569},"type":"module","gitHead":"f1821b4fe3bee7280823f0e3b8e1bb70edc0b12b","scripts":{"dev":"cd example && node ../src/cli.ts","test":"node --test test/*.test.ts","build":"tsup src/cli.ts --format esm --target node22 --outDir dist --external esbuild && tsup --config tsup.frame-runtime.config.ts && node scripts/copy-static.js && vite build src/viewer --outDir ../../dist/viewer --emptyOutDir --base /__frameset/viewer/","test:e2e":"playwright test","typecheck":"tsc --project tsconfig.json && tsc --project src/viewer/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:007fbddd-2441-41da-adda-cba53206408b"}},"_npmVersion":"11.5.2","description":"A lightweight viewer for iterating on HTML frames alongside a real codebase. A frame is an HTML fragment that imports real components and styles. A `frameset.json` manifest names those files, and Frameset wraps them into full documents at serve time and s","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^8.0.0","chalk":"^5.6.2","lit-html":"^3.3.2","commander":"^14.0.3","@phosphor-icons/web":"^2.1.2","@rupertsworld/event-target":"^0.1.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","esbuild":"^0.28.1","typescript":"^5.9.2","@types/node":"^24.5.2","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/frameset_0.5.0_1785211071771_0.6493452326888489","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"frameset","version":"0.5.1","_id":"frameset@0.5.1","maintainers":[{"name":"rupertsworld","email":"rp@rupert.cloud"}],"bin":{"frameset":"dist/cli.js"},"dist":{"shasum":"5994fc1bb127be7566a1983930c3b7f078fb3903","tarball":"https://registry.npmjs.org/frameset/-/frameset-0.5.1.tgz","fileCount":15,"integrity":"sha512-nY0OwAN+pZ4KEiAIjWkgVVIkgXAlawiV7jrDMBToeRZ7nOA4cVkNC+b1JWclB0FA+jX3++wTruUlDV4ZO+0H4w==","signatures":[{"sig":"MEUCICq1tHcdDJviENAlyRs1Wtbvy76gljn+DENBGskMZeGBAiEAi31EG/k5gjCvNFqtH8SBkEj/YMmd6mGmPwK1qDy0sqw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4253547},"type":"module","gitHead":"47430595ff92cd74c060ca1476814329d11d11db","scripts":{"dev":"cd example && node ../src/cli.ts","test":"node --test test/*.test.ts","build":"tsup src/cli.ts --format esm --target node22 --outDir dist --external esbuild && tsup --config tsup.frame-runtime.config.ts && node scripts/copy-static.js && vite build src/viewer --outDir ../../dist/viewer --emptyOutDir --base /__frameset/viewer/","test:e2e":"playwright test","typecheck":"tsc --project tsconfig.json && tsc --project src/viewer/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:007fbddd-2441-41da-adda-cba53206408b"}},"_npmVersion":"11.5.2","description":"A lightweight viewer for iterating on HTML frames alongside a real codebase. A frame is an HTML fragment that imports real components and styles. A `frameset.json` manifest names those files, and Frameset wraps them into full documents at serve time and s","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^8.0.0","chalk":"^5.6.2","lit-html":"^3.3.2","commander":"^14.0.3","@phosphor-icons/web":"^2.1.2","@rupertsworld/event-target":"^0.1.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","esbuild":"^0.28.1","typescript":"^5.9.2","@types/node":"^24.5.2","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/frameset_0.5.1_1785213268347_0.257702555776836","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"frameset","version":"0.6.0","_id":"frameset@0.6.0","maintainers":[{"name":"rupertsworld","email":"rp@rupert.cloud"}],"bin":{"frameset":"dist/cli.js"},"dist":{"shasum":"a18e032c02a719595417a0cc188f6f132db17b29","tarball":"https://registry.npmjs.org/frameset/-/frameset-0.6.0.tgz","fileCount":15,"integrity":"sha512-cxbfM+HBgOOMPWIrk1DdPR3lzvBacHIPDMaDDRNZBSA4/6sIcWwwnd0VZuted1bOB8nUI0jk9RV2Br06BhoA8g==","signatures":[{"sig":"MEYCIQDHk9ctpcyRqQ0tsdeb/NULuWJvdJmgzJj4EgbDQYfiKQIhANNPyzcuaNUAaG8BEs1AwXCGZ8890s28ixjqxcMb76b3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4254126},"type":"module","gitHead":"c588403a49ba948ccc63d435c36f2c24d351eb11","scripts":{"dev":"cd example && node ../src/cli.ts","test":"node --test test/*.test.ts","build":"tsup src/cli.ts --format esm --target node22 --outDir dist --external esbuild && tsup --config tsup.frame-runtime.config.ts && node scripts/copy-static.js && vite build src/viewer --outDir ../../dist/viewer --emptyOutDir --base /__frameset/viewer/","test:e2e":"playwright test","typecheck":"tsc --project tsconfig.json && tsc --project src/viewer/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:007fbddd-2441-41da-adda-cba53206408b"}},"_npmVersion":"11.5.2","description":"A lightweight viewer for iterating on HTML frames alongside a real codebase. A frame is an HTML fragment that imports real components and styles. A `frameset.json` manifest names those files, and Frameset wraps them into full documents at serve time and s","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^8.0.0","chalk":"^5.6.2","lit-html":"^3.3.2","commander":"^14.0.3","@phosphor-icons/web":"^2.1.2","@rupertsworld/event-target":"^0.1.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","esbuild":"^0.28.1","typescript":"^5.9.2","@types/node":"^24.5.2","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/frameset_0.6.0_1785272651089_0.39771372928321536","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"frameset","version":"0.6.1","_id":"frameset@0.6.1","maintainers":[{"name":"rupertsworld","email":"rp@rupert.cloud"}],"bin":{"frameset":"dist/cli.js"},"dist":{"shasum":"06fc40f7f2f8be4191f5ef527f0f186ad4a4cb71","tarball":"https://registry.npmjs.org/frameset/-/frameset-0.6.1.tgz","fileCount":15,"integrity":"sha512-RZ8gLUXbycPrrI65gsDLIvxbtwMMIHy0iu4dZvueE6Cb2QpqEcwo6LVrQw2lJD0z7NLyfDK3qWLjX0xlQveaTA==","signatures":[{"sig":"MEYCIQCeA/FEV8pBLGY7t2LNtHsY3VbOT1gOqtwgUJejVYmZ8QIhAJ4SmZbNHLWxrrfaqnR8TYLI/eOsWIlctPQYoDVIqOWz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4254225},"type":"module","gitHead":"b73667175e5b5f65585b5458f1b1ed1412e50ea5","scripts":{"dev":"cd example && node ../src/cli.ts","test":"node --import ./test/helpers/exit-watchdog.ts --test test/*.test.ts","build":"tsup src/cli.ts --format esm --target node22 --outDir dist --external esbuild && tsup --config tsup.frame-runtime.config.ts && node scripts/copy-static.js && vite build src/viewer --outDir ../../dist/viewer --emptyOutDir --base /__frameset/viewer/","test:e2e":"playwright test","typecheck":"tsc --project tsconfig.json && tsc --project src/viewer/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:007fbddd-2441-41da-adda-cba53206408b"}},"_npmVersion":"11.5.2","description":"A lightweight viewer for iterating on HTML frames alongside a real codebase. A frame is an HTML fragment that imports real components and styles. A `frameset.json` manifest names those files, and Frameset wraps them into full documents at serve time and s","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^8.0.0","chalk":"^5.6.2","lit-html":"^3.3.2","commander":"^14.0.3","@phosphor-icons/web":"^2.1.2","@rupertsworld/event-target":"^0.1.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","esbuild":"^0.28.1","typescript":"^5.9.2","@types/node":"^24.5.2","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/frameset_0.6.1_1785277699795_0.14427706488333625","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"frameset","version":"0.7.1","_id":"frameset@0.7.1","maintainers":[{"name":"rupertsworld","email":"rp@rupert.cloud"}],"bin":{"frameset":"dist/cli.js"},"dist":{"shasum":"849eeb00ed3fef7c423277e757e0fb7471a2fd81","tarball":"https://registry.npmjs.org/frameset/-/frameset-0.7.1.tgz","fileCount":15,"integrity":"sha512-nhmJnlDYpTbdOfSA1cr6M1eHvNeWddioq/bZrnjUO1H1TXNc7+bSVAQboTWXF8QFOB7zm6uMtwTGsCZvRNEP0A==","signatures":[{"sig":"MEUCIQCHtopSI49VebND3Hfy7VgVGZHTQptjJk25K+SivF4HDQIgXdSBUxv3rMp4rMT1F1gQ+XaIHgfWGgbvWnci2az/wZY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4261244},"type":"module","gitHead":"84ba84214097d6f57bd4a104ae8a7d94ec4480f2","scripts":{"dev":"cd example && node ../src/cli.ts","test":"node --import ./test/helpers/exit-watchdog.ts --test test/*.test.ts","build":"tsup src/cli.ts --format esm --target node22 --outDir dist --external esbuild && tsup --config tsup.frame-runtime.config.ts && node scripts/copy-static.js && vite build src/viewer --outDir ../../dist/viewer --emptyOutDir --base /__frameset/viewer/","test:e2e":"playwright test","typecheck":"tsc --project tsconfig.json && tsc --project src/viewer/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:007fbddd-2441-41da-adda-cba53206408b"}},"_npmVersion":"11.5.2","description":"A lightweight viewer for iterating on HTML frames alongside a real codebase. A frame is an HTML fragment that imports real components and styles. A `frameset.json` manifest names those files, and Frameset wraps them into full documents at serve time and s","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^8.0.0","chalk":"^5.6.2","lit-html":"^3.3.2","commander":"^14.0.3","@phosphor-icons/web":"^2.1.2","@rupertsworld/event-target":"^0.1.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","esbuild":"^0.28.1","typescript":"^5.9.2","@types/node":"^24.5.2","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/frameset_0.7.1_1785362009027_0.8844383488434024","host":"s3://npm-registry-packages-npm-production"}},"0.7.2":{"name":"frameset","version":"0.7.2","_id":"frameset@0.7.2","maintainers":[{"name":"rupertsworld","email":"rp@rupert.cloud"}],"bin":{"frameset":"dist/cli.js"},"dist":{"shasum":"e1a85af4bc25faa93985a2f825f3356579aee166","tarball":"https://registry.npmjs.org/frameset/-/frameset-0.7.2.tgz","fileCount":15,"integrity":"sha512-ryJCc4OEQFCuOjySV5ra2WoZlRLmQk6Y1w7s9HJjr18jOaefJiGgmrJFQc3i/oxWERyaRTukFIrmMQHgyHOaCg==","signatures":[{"sig":"MEYCIQDaH2ZW2h4q9gmXW5JehJN6TFJ8rbWIHwncUH4Lfe10aQIhAJ0M1u16Y8Bw+F9WqLDK5zYbbA3YG7p6uRkamniNXNOe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4260785},"type":"module","gitHead":"7e4456d8f4703acd77515dccff46977419736139","scripts":{"dev":"cd example && node ../src/cli.ts","test":"node --import ./test/helpers/exit-watchdog.ts --test test/*.test.ts","build":"tsup src/cli.ts --format esm --target node22 --outDir dist --external esbuild && tsup --config tsup.frame-runtime.config.ts && node scripts/copy-static.js && vite build src/viewer --outDir ../../dist/viewer --emptyOutDir --base /__frameset/viewer/","test:e2e":"playwright test","typecheck":"tsc --project tsconfig.json && tsc --project src/viewer/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:007fbddd-2441-41da-adda-cba53206408b"}},"_npmVersion":"11.5.2","description":"A lightweight viewer for iterating on HTML frames alongside a real codebase. A frame is an HTML fragment that imports real components and styles. A `frameset.json` manifest names those files, and Frameset wraps them into full documents at serve time and s","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^8.0.0","chalk":"^5.6.2","lit-html":"^3.3.2","commander":"^14.0.3","@phosphor-icons/web":"^2.1.2","@rupertsworld/event-target":"^0.1.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","esbuild":"^0.28.1","typescript":"^5.9.2","@types/node":"^24.5.2","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/frameset_0.7.2_1785363188245_0.07696693370320817","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"frameset","version":"0.8.0","_id":"frameset@0.8.0","maintainers":[{"name":"rupertsworld","email":"rp@rupert.cloud"}],"bin":{"frameset":"dist/cli.js"},"dist":{"shasum":"519166d1e6ea2ddab6c1c140a7ee42ae0b0f24a6","tarball":"https://registry.npmjs.org/frameset/-/frameset-0.8.0.tgz","fileCount":15,"integrity":"sha512-d/h1aGyi9LQ8I0IiRZhP9+IkG0tSQZn4bgVdEUWj94zuyyv6gQEMMl1vWdYJzSdkWQtSC972FC6sZLKhs+D3Xw==","signatures":[{"sig":"MEUCIQCWzpDAKKEakkPKEJWcd0wi0GyTIQthmx2KYg2x4iXBhwIgR1woygeW9BMKXDJ7TelXnhFoWW2xbV0Evc9xoAHIl8Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4261605},"type":"module","gitHead":"6fedca1f277d262821d2f49c418bccc2a2904038","scripts":{"dev":"cd example && node ../src/cli.ts","test":"node --import ./test/helpers/exit-watchdog.ts --test test/*.test.ts","build":"tsup src/cli.ts --format esm --target node22 --outDir dist --external esbuild && tsup --config tsup.frame-runtime.config.ts && node scripts/copy-static.js && vite build src/viewer --outDir ../../dist/viewer --emptyOutDir --base /__frameset/viewer/","test:e2e":"playwright test","typecheck":"tsc --project tsconfig.json && tsc --project src/viewer/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:007fbddd-2441-41da-adda-cba53206408b"}},"_npmVersion":"11.5.2","description":"A lightweight viewer for iterating on HTML frames alongside a real codebase. A frame is an HTML fragment that imports real components and styles. A `frameset.json` manifest names those files, and Frameset wraps them into full documents at serve time and s","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^8.0.0","chalk":"^5.6.2","lit-html":"^3.3.2","commander":"^14.0.3","@phosphor-icons/web":"^2.1.2","@rupertsworld/event-target":"^0.1.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","esbuild":"^0.28.1","typescript":"^5.9.2","@types/node":"^24.5.2","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/frameset_0.8.0_1785367214222_0.6194564237371711","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"frameset","version":"0.9.0","_id":"frameset@0.9.0","maintainers":[{"name":"rupertsworld","email":"rp@rupert.cloud"}],"bin":{"frameset":"dist/cli.js"},"dist":{"shasum":"d84a2573fdd1727a48c5f5fac2332262677fc317","tarball":"https://registry.npmjs.org/frameset/-/frameset-0.9.0.tgz","fileCount":22,"integrity":"sha512-exYOwqlirc+Op7M4JSX2lIjcecOHb9kjamU/soQ5WsW9+UioONI1e/HonOluIK5qE0pc4BhNjLir1KgDPca43A==","signatures":[{"sig":"MEYCIQCSxSVCvg1xPvWEY4nVvFkdyPG5Myv15+eEFxHV7in7IwIhAI4vgC97m8IIpa1hhx+pC4t5s8ZMAEL52ttkrM95mf1f","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4293279},"type":"module","exports":{"./extension":{"types":"./dist/extensions/api.d.ts","import":"./dist/extensions/api.js"},"./inspector":{"types":"./dist/extensions/inspector.d.ts","import":"./dist/extensions/inspector.js"}},"gitHead":"df30fc0a077c2ed08fb58c72f81140ab599a7900","scripts":{"dev":"cd example && node ../src/cli.ts","test":"node --import ./test/helpers/exit-watchdog.ts --test test/*.test.ts","build":"tsup src/cli.ts --format esm --target node22 --outDir dist --external esbuild && tsup --config tsup.frame-runtime.config.ts && tsup --entry.inspector src/extensions/inspector/index.ts --entry.api src/extensions/api.ts --format esm --platform browser --outDir dist/extensions --dts --tsconfig src/extensions/tsconfig.json && node scripts/copy-static.js && vite build src/viewer --outDir ../../dist/viewer --emptyOutDir --base /__frameset/viewer/","test:e2e":"playwright test","typecheck":"tsc --project tsconfig.json && tsc --project src/viewer/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:007fbddd-2441-41da-adda-cba53206408b"}},"_npmVersion":"11.5.2","description":"A lightweight viewer for iterating on HTML frames alongside a real codebase. A frame is an HTML fragment that imports real components and styles. A `frameset.json` manifest names those files, and Frameset wraps them into full documents at serve time and s","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^8.0.0","chalk":"^5.6.2","lit-html":"^3.3.2","commander":"^14.0.3","@phosphor-icons/web":"^2.1.2","@rupertsworld/event-target":"^0.1.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","esbuild":"^0.28.1","typescript":"^5.9.2","@types/node":"^24.5.2","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/frameset_0.9.0_1785374299893_0.5089432054799854","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"frameset","version":"0.9.1","_id":"frameset@0.9.1","maintainers":[{"name":"rupertsworld","email":"rp@rupert.cloud"}],"bin":{"frameset":"dist/cli.js"},"dist":{"shasum":"cb100d779fbcbeee8d6030008d67a14c5b6d18fe","tarball":"https://registry.npmjs.org/frameset/-/frameset-0.9.1.tgz","fileCount":22,"integrity":"sha512-Gx93ORgzskBHzS/IJI0aqpOmpfo3OWeBwzbHypGlW+92DKIZokIBVBguwoYySJCwsogOQTl7ne/ZEE9Pw/zsRQ==","signatures":[{"sig":"MEUCIQDXzzJUHqnBAgWKNwMnB3wGuQmYAe8PWjhsiyIJw7trnAIgc2aXCp9ygKcQsgzguTkYlYC5n9WhRH506r30VqH6fNw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4295701},"type":"module","exports":{"./extension":{"types":"./dist/extensions/api.d.ts","import":"./dist/extensions/api.js"},"./inspector":{"types":"./dist/extensions/inspector.d.ts","import":"./dist/extensions/inspector.js"}},"gitHead":"e4ef30cb51fedf568f9a52997f64d54adc29f303","scripts":{"dev":"cd example && node ../src/cli.ts","test":"node --import ./test/helpers/exit-watchdog.ts --test test/*.test.ts","build":"tsup src/cli.ts --format esm --target node22 --outDir dist --external esbuild && tsup --config tsup.frame-runtime.config.ts && tsup --entry.inspector src/extensions/inspector/index.ts --entry.api src/extensions/api.ts --format esm --platform browser --outDir dist/extensions --dts --tsconfig src/extensions/tsconfig.json && node scripts/copy-static.js && vite build src/viewer --outDir ../../dist/viewer --emptyOutDir --base /__frameset/viewer/","test:e2e":"playwright test","typecheck":"tsc --project tsconfig.json && tsc --project src/viewer/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:007fbddd-2441-41da-adda-cba53206408b"}},"_npmVersion":"11.5.2","description":"A lightweight viewer for iterating on HTML frames alongside a real codebase. A frame is an HTML fragment that imports real components and styles. A `frameset.json` manifest names those files, and Frameset wraps them into full documents at serve time and s","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^8.0.0","chalk":"^5.6.2","lit-html":"^3.3.2","commander":"^14.0.3","@phosphor-icons/web":"^2.1.2","@rupertsworld/event-target":"^0.1.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","esbuild":"^0.28.1","typescript":"^5.9.2","@types/node":"^24.5.2","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/frameset_0.9.1_1785375240171_0.3493813166620683","host":"s3://npm-registry-packages-npm-production"}},"0.9.2":{"name":"frameset","version":"0.9.2","_id":"frameset@0.9.2","maintainers":[{"name":"rupertsworld","email":"rp@rupert.cloud"}],"bin":{"frameset":"dist/cli.js"},"dist":{"shasum":"fd75972c267d3fdf4be071c53dc5be486aeb2885","tarball":"https://registry.npmjs.org/frameset/-/frameset-0.9.2.tgz","fileCount":22,"integrity":"sha512-3O+id2ubyKJDMMSg4MGo4ApykUod+WCd3EzMyWdLUQT6vGZSQbl8oLJ1T3EUJ8vyfU8UBtXUh7EJbasLRJuWrQ==","signatures":[{"sig":"MEUCIQCOKai0BrfJxY1+Zw7OV+n9CTlIDU2UWfcGvUtfrDZyggIgbmtI/4WCOHKbv3cIwWSV7GjqtqITGqznGQCL1aP3oM8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4297416},"type":"module","exports":{"./extension":{"types":"./dist/extensions/api.d.ts","import":"./dist/extensions/api.js"},"./inspector":{"types":"./dist/extensions/inspector.d.ts","import":"./dist/extensions/inspector.js"}},"gitHead":"8ea64596d4b516c1eb1908a732d3e027646a4b21","scripts":{"dev":"cd example && node ../src/cli.ts","test":"node --import ./test/helpers/exit-watchdog.ts --test test/*.test.ts","build":"tsup src/cli.ts --format esm --target node22 --outDir dist --external esbuild && tsup --config tsup.frame-runtime.config.ts && tsup --entry.inspector src/extensions/inspector/index.ts --entry.api src/extensions/api.ts --format esm --platform browser --outDir dist/extensions --dts --tsconfig src/extensions/tsconfig.json && node scripts/copy-static.js && vite build src/viewer --outDir ../../dist/viewer --emptyOutDir --base /__frameset/viewer/","test:e2e":"playwright test","typecheck":"tsc --project tsconfig.json && tsc --project src/viewer/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:007fbddd-2441-41da-adda-cba53206408b"}},"_npmVersion":"11.5.2","description":"A lightweight viewer for iterating on HTML frames alongside a real codebase. A frame is an HTML fragment that imports real components and styles. A `frameset.json` manifest names those files, and Frameset wraps them into full documents at serve time and s","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^8.0.0","chalk":"^5.6.2","lit-html":"^3.3.2","commander":"^14.0.3","@phosphor-icons/web":"^2.1.2","@rupertsworld/event-target":"^0.1.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","esbuild":"^0.28.1","typescript":"^5.9.2","@types/node":"^24.5.2","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/frameset_0.9.2_1785484456201_0.9727679817093824","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"frameset","version":"0.10.0","_id":"frameset@0.10.0","maintainers":[{"name":"rupertsworld","email":"rp@rupert.cloud"}],"bin":{"frameset":"dist/cli.js"},"dist":{"shasum":"1d2dad3e630cbf1dbe93aea242a9579f30306a65","tarball":"https://registry.npmjs.org/frameset/-/frameset-0.10.0.tgz","fileCount":22,"integrity":"sha512-+l9dW5M6D0vdKe5Ew1XCn4r+4IremXoTIM5HFpit+cr+edpkL638E41Vx1Xos2kkfWJkXo+0qwFQ5jxCpZSd1w==","signatures":[{"sig":"MEUCIGRIShwP0LThOythriSL0PrIx/7AamWPwLaRWWDCEwCEAiEAySpOtUDtKNz2WpgfLbhAL3IICkd0bRp2AuLLC1inHlw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4312914},"type":"module","exports":{"./extension":{"types":"./dist/extensions/api.d.ts","import":"./dist/extensions/api.js"},"./inspector":{"types":"./dist/extensions/inspector.d.ts","import":"./dist/extensions/inspector.js"}},"gitHead":"ac8982e099491b1cc3955b7784aeb781482aee39","scripts":{"dev":"cd example && node ../src/cli.ts","test":"node --import ./test/helpers/exit-watchdog.ts --test test/*.test.ts","build":"tsup src/cli.ts --format esm --target node22 --outDir dist --external esbuild && tsup --config tsup.frame-runtime.config.ts && tsup --entry.inspector src/extensions/inspector/index.ts --entry.api src/extensions/api.ts --format esm --platform browser --outDir dist/extensions --dts --tsconfig src/extensions/tsconfig.json && node scripts/copy-static.js && vite build src/viewer --outDir ../../dist/viewer --emptyOutDir --base /__frameset/viewer/","test:e2e":"playwright test","typecheck":"tsc --project tsconfig.json && tsc --project src/viewer/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:007fbddd-2441-41da-adda-cba53206408b"}},"_npmVersion":"11.5.2","description":"A lightweight viewer for iterating on HTML frames alongside a real codebase. A frame is an HTML fragment that imports real components and styles. A `frameset.json` manifest names those files, and Frameset wraps them into full documents at serve time and s","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^8.0.0","chalk":"^5.6.2","lit-html":"^3.3.2","commander":"^14.0.3","@phosphor-icons/web":"^2.1.2","@rupertsworld/event-target":"^0.1.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","esbuild":"^0.28.1","typescript":"^5.9.2","@types/node":"^24.5.2","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/frameset_0.10.0_1785555290438_0.11897923201746496","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"frameset","version":"0.10.1","_id":"frameset@0.10.1","maintainers":[{"name":"rupertsworld","email":"rp@rupert.cloud"}],"bin":{"frameset":"dist/cli.js"},"dist":{"shasum":"2bb7cff6cbd042efdf2010eb5fe24dec40e21397","tarball":"https://registry.npmjs.org/frameset/-/frameset-0.10.1.tgz","fileCount":22,"integrity":"sha512-/oO8K+8ERt5nOOC4o5fypCz7Pz2cPjs29QjEA4ezd92JPs2IMNi1no+d+D1eSUdAqRkUmWE3+DytgKiP7Ytcpw==","signatures":[{"sig":"MEYCIQCqmA3O6+YgbSnbmaZjJ6hdtn/CfzwQETs/AcZfhRdSoAIhAL7woMj1xbkIWbzdPkiLPsOx0UBzgupUmKs0BDnmpE9u","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4314727},"type":"module","exports":{"./extension":{"types":"./dist/extensions/api.d.ts","import":"./dist/extensions/api.js"},"./inspector":{"types":"./dist/extensions/inspector.d.ts","import":"./dist/extensions/inspector.js"}},"gitHead":"289c063ce1e916097689a7d2d37dcc4f8d78715b","scripts":{"dev":"cd example && node ../src/cli.ts","test":"node --import ./test/helpers/exit-watchdog.ts --test test/*.test.ts","build":"tsup src/cli.ts --format esm --target node22 --outDir dist --external esbuild && tsup --config tsup.frame-runtime.config.ts && tsup --entry.inspector src/extensions/inspector/index.ts --entry.api src/extensions/api.ts --format esm --platform browser --outDir dist/extensions --dts --tsconfig src/extensions/tsconfig.json && node scripts/copy-static.js && vite build src/viewer --outDir ../../dist/viewer --emptyOutDir --base /__frameset/viewer/","test:e2e":"playwright test","typecheck":"tsc --project tsconfig.json && tsc --project src/viewer/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:007fbddd-2441-41da-adda-cba53206408b"}},"_npmVersion":"11.5.2","description":"A lightweight viewer for iterating on HTML frames alongside a real codebase. A frame is an HTML fragment that imports real components and styles. A `frameset.json` manifest names those files, and Frameset wraps them into full documents at serve time and s","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^8.0.0","chalk":"^5.6.2","lit-html":"^3.3.2","commander":"^14.0.3","@phosphor-icons/web":"^2.1.2","@rupertsworld/event-target":"^0.1.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","esbuild":"^0.28.1","typescript":"^5.9.2","@types/node":"^24.5.2","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/frameset_0.10.1_1785816270107_0.7391831935144146","host":"s3://npm-registry-packages-npm-production"}},"0.10.2":{"name":"frameset","version":"0.10.2","_id":"frameset@0.10.2","maintainers":[{"name":"rupertsworld","email":"rp@rupert.cloud"}],"bin":{"frameset":"dist/cli.js"},"dist":{"shasum":"9f8c9e62d451fd1298dae9d188e8f45c1b6ebc8c","tarball":"https://registry.npmjs.org/frameset/-/frameset-0.10.2.tgz","fileCount":22,"integrity":"sha512-oLWmPgEtbRSFWheSeLWVPtUWesyfR2VA5Of4CHbgsXPytQ+7ILrTCgIOzd+ueqmGH2HzGpFRV9kZZoWeg/0Qjw==","signatures":[{"sig":"MEQCIEf5X416MgzVyQevSjGky8dwuoB8b6nsA22tGWa0tVgpAiBQhYXG8TqwOysHK2tbCHCD/0u54K14AkBdFDM4XxW0XA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4315114},"type":"module","exports":{"./extension":{"types":"./dist/extensions/api.d.ts","import":"./dist/extensions/api.js"},"./inspector":{"types":"./dist/extensions/inspector.d.ts","import":"./dist/extensions/inspector.js"}},"gitHead":"ac9dd4d32be0716e97dd44691050c2a45a9ee6a7","scripts":{"dev":"cd example && node ../src/cli.ts","test":"node --import ./test/helpers/exit-watchdog.ts --test test/*.test.ts","build":"tsup src/cli.ts --format esm --target node22 --outDir dist --external esbuild && tsup --config tsup.frame-runtime.config.ts && tsup --entry.inspector src/extensions/inspector/index.ts --entry.api src/extensions/api.ts --format esm --platform browser --outDir dist/extensions --dts --tsconfig src/extensions/tsconfig.json && node scripts/copy-static.js && vite build src/viewer --outDir ../../dist/viewer --emptyOutDir --base /__frameset/viewer/","test:e2e":"playwright test","typecheck":"tsc --project tsconfig.json && tsc --project src/viewer/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:007fbddd-2441-41da-adda-cba53206408b"}},"_npmVersion":"11.5.2","description":"A lightweight viewer for iterating on HTML frames alongside a real codebase. A frame is an HTML fragment that imports real components and styles. A `frameset.json` manifest names those files, and Frameset wraps them into full documents at serve time and s","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vite":"^8.0.0","chalk":"^5.6.2","lit-html":"^3.3.2","commander":"^14.0.3","@phosphor-icons/web":"^2.1.2","@rupertsworld/event-target":"^0.1.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","esbuild":"^0.28.1","typescript":"^5.9.2","@types/node":"^24.5.2","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/frameset_0.10.2_1785908186005_0.4600415069250303","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"frameset","version":"0.11.0","_id":"frameset@0.11.0","maintainers":[{"name":"rupertsworld","email":"rp@rupert.cloud"}],"bin":{"frameset":"dist/cli.js"},"dist":{"shasum":"664d21f964dfe3ba141afda0997c168e1ad4575d","tarball":"https://registry.npmjs.org/frameset/-/frameset-0.11.0.tgz","fileCount":26,"integrity":"sha512-sWb+q2GS36Yoze4SQcfS0Qz+X8JZZlJFU39BpbFlOpG4/1Nby4MGZ9ujQWFmp5ESrqq8DB+ao+y4nCVMoIPEMg==","signatures":[{"sig":"MEUCIQDdyZyiB3iFlTn/qMFNsj4ufK7MNfUNaai4roWA0kq7EAIgZdTjNwwqAWZIMrkMo6SfOXU/P4T53PhC21O90VRsYlI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4408198},"type":"module","exports":{"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"},"./extension":{"types":"./dist/extensions/api.d.ts","import":"./dist/extensions/api.js"},"./inspector":{"types":"./dist/extensions/inspector.d.ts","import":"./dist/extensions/inspector.js"}},"gitHead":"230471b9552cfe2f460d8712b35b14785af404e6","scripts":{"dev":"node src/cli.ts","test":"node --import ./test/helpers/exit-watchdog.ts --test test/*.test.ts","build":"tsup src/cli.ts --format esm --target node22 --outDir dist --external esbuild && tsup src/vite.ts src/frame-liquid.ts --format esm --target node22 --outDir dist --external liquidjs --dts && tsup --config tsup.frame-runtime.config.ts && tsup --entry.inspector src/extensions/inspector/index.ts --entry.api src/extensions/api.ts --format esm --platform browser --outDir dist/extensions --dts --tsconfig src/extensions/tsconfig.json && node scripts/copy-static.js && vite build src/viewer --outDir ../../dist/viewer --emptyOutDir --base /_frameset/viewer/","test:e2e":"playwright test","typecheck":"tsc --project tsconfig.json && tsc --project src/viewer/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:007fbddd-2441-41da-adda-cba53206408b"}},"_npmVersion":"11.5.2","description":"Frameset is a tool for designing and specifying UI using templates. Each frame is one self-contained file — YAML frontmatter over a Liquid template — that takes parameters, renders as its own document, and can be embedded inside other frames. Nest them an","directories":{},"_nodeVersion":"24.19.0","dependencies":{"vite":"^8.0.0","yaml":"^2.9.0","chalk":"^5.6.2","liquidjs":"^10.29.0","lit-html":"^3.3.2","commander":"^14.0.3","@phosphor-icons/web":"^2.1.2"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vite6":"npm:vite@^6.0.0","esbuild":"^0.28.1","typescript":"^5.9.2","@types/node":"^24.5.2","vite-current":"npm:vite@^8.0.0","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/frameset_0.11.0_1787032879189_0.998969778156958","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"frameset","version":"0.12.0","_id":"frameset@0.12.0","maintainers":[{"name":"rupertsworld","email":"rp@rupert.cloud"}],"bin":{"frameset":"dist/cli.js"},"dist":{"shasum":"70184133d04d28bb45a1285cec1d3492beeee38b","tarball":"https://registry.npmjs.org/frameset/-/frameset-0.12.0.tgz","fileCount":19,"integrity":"sha512-TKUNVU/+DLJd6cfE882pDPfrPteziE4kx3Q0gzpb5pMoFnLz1Q5gBh982RgK3k/Z4vsZTtcnQIrxEmHM+5HFzA==","signatures":[{"sig":"MEQCIBeMJLEd/lJUrluaNjJq5U9yHEpWUnO1dIrzvO87WuuTAiAr79V+ekyAJ0z3alxOILNZWBWcz4Ef4qcpqmLIidQI4A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4373820},"type":"module","exports":{"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"}},"gitHead":"9d3786804431f961c1dbfc1140beee9ac9f5721e","scripts":{"dev":"node src/cli.ts","test":"node --import ./test/helpers/exit-watchdog.ts --test test/*.test.ts","build":"tsup src/cli.ts --format esm --target node22 --outDir dist --external esbuild && tsup src/vite.ts src/frame-liquid.ts --format esm --target node22 --outDir dist --external liquidjs --dts && tsup --config tsup.frame-runtime.config.ts && node scripts/copy-static.js && vite build src/viewer --outDir ../../dist/viewer --emptyOutDir --base /_frameset/viewer/","test:e2e":"playwright test","typecheck":"tsc --project tsconfig.json && tsc --project src/viewer/tsconfig.json && tsc --project src/frame/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:007fbddd-2441-41da-adda-cba53206408b"}},"_npmVersion":"11.5.2","description":"Frameset is a tool for designing and specifying UI using templates. Each frame is one self-contained file — YAML frontmatter over a Liquid template — that takes parameters, renders as its own document, and can be embedded inside other frames. Nest them an","directories":{},"_nodeVersion":"24.19.0","dependencies":{"vite":"^8.0.0","yaml":"^2.9.0","chalk":"^5.6.2","liquidjs":"^10.29.0","lit-html":"^3.3.2","commander":"^14.0.3","@phosphor-icons/web":"^2.1.2"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vite6":"npm:vite@^6.0.0","esbuild":"^0.28.1","typescript":"^5.9.2","@types/node":"^24.5.2","vite-current":"npm:vite@^8.0.0","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/frameset_0.12.0_1787104403830_0.7270912253463713","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"frameset","version":"0.13.0","_id":"frameset@0.13.0","maintainers":[{"name":"rupertsworld","email":"rp@rupert.cloud"}],"bin":{"frameset":"dist/cli.js"},"dist":{"shasum":"d3044cc5fc1dfa92597d71b7368c1f4b2b1a4e53","tarball":"https://registry.npmjs.org/frameset/-/frameset-0.13.0.tgz","fileCount":19,"integrity":"sha512-ZJNowEz9BQGkfmNdDdhh8elidilj7PMay9Xop0tVGE1S23qwNMiaRPo4EebEYOIAoZN0VpGtEhEQvS+708yspw==","signatures":[{"sig":"MEYCIQCXcrBHHWeZILV+U8yRIcu+9g5kEBKpxX89rAAKdxSF3AIhAIgyq69HXtSxtxpBXLkFelyjf3eLoamYU9AfuLDY48pL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4387207},"type":"module","exports":{"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"}},"gitHead":"ff8910ddafb32516f9dfe421cff8b3433708cd03","scripts":{"dev":"node src/cli.ts","test":"node --import ./test/helpers/exit-watchdog.ts --test test/*.test.ts","build":"tsup src/cli.ts --format esm --target node22 --outDir dist --external esbuild && tsup src/vite.ts src/frame-liquid.ts --format esm --target node22 --outDir dist --external liquidjs --dts && tsup --config tsup.frame-runtime.config.ts && node scripts/copy-static.js && vite build src/viewer --outDir ../../dist/viewer --emptyOutDir --base /_frameset/viewer/","test:e2e":"playwright test","typecheck":"tsc --project tsconfig.json && tsc --project src/viewer/tsconfig.json && tsc --project src/frame/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:007fbddd-2441-41da-adda-cba53206408b"}},"_npmVersion":"11.5.2","description":"Frameset is a tool for designing and specifying UI using templates. Each frame is one self-contained file — YAML frontmatter over a Liquid template — that takes parameters, renders as its own document, and can be embedded inside other frames. Nest them an","directories":{},"_nodeVersion":"24.19.0","dependencies":{"vite":"^8.0.0","yaml":"^2.9.0","chalk":"^5.6.2","esbuild":"^0.28.1","liquidjs":"^10.29.0","lit-html":"^3.3.2","commander":"^14.0.3","@phosphor-icons/web":"^2.1.2"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vite6":"npm:vite@^6.0.0","typescript":"^5.9.2","@types/node":"^24.5.2","vite-current":"npm:vite@^8.0.0","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/frameset_0.13.0_1787114384182_0.04591432693784081","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"frameset","version":"0.14.0","_id":"frameset@0.14.0","maintainers":[{"name":"rupertsworld","email":"rp@rupert.cloud"}],"bin":{"frameset":"dist/cli.js"},"dist":{"shasum":"650615a3c1dc77fa547309bf285e20e47be337e5","tarball":"https://registry.npmjs.org/frameset/-/frameset-0.14.0.tgz","fileCount":22,"integrity":"sha512-RONm6r5O9cZvv5xEbyBqBjwuLKOkU3+Rji/Y36a1JlwBJtB1yRl83t4b3u7amcPaCFNnJomG+bSKBaL+g09wSw==","signatures":[{"sig":"MEUCIBw2xeD3SSF26V1ArVKyxNylNJhm6EvrAK2ul9INONKGAiEAuHA9vzCyYc5L+AYw49TSecSGa9FkyhDzJ1trEc86KKo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4421628},"type":"module","exports":{"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"}},"gitHead":"e275f016a8b502f3defbda6821f761b36d2a07bd","scripts":{"dev":"node src/cli.ts","test":"node --import ./test/helpers/exit-watchdog.ts --test test/*.test.ts","build":"tsup src/cli.ts --format esm --target node22 --outDir dist --external esbuild && tsup src/vite.ts src/frame-liquid.ts --format esm --target node22 --outDir dist --external liquidjs --dts && tsup --config tsup.frame-runtime.config.ts && node scripts/copy-static.js && vite build src/viewer --outDir ../../dist/viewer --emptyOutDir --base /_frameset/viewer/","test:e2e":"playwright test","typecheck":"tsc --project tsconfig.json && tsc --project src/viewer/tsconfig.json && tsc --project src/frame/tsconfig.json"},"_npmUser":{"name":"rupertsworld","email":"rp@rupert.cloud"},"_npmVersion":"11.17.0","description":"Frameset is a tool for designing and specifying UI using templates. Each frame is one self-contained file — YAML frontmatter over a Liquid template — that takes parameters, renders as its own document, and can be embedded inside other frames. Nest them an","directories":{},"_nodeVersion":"24.19.0","dependencies":{"vite":"^8.0.0","yaml":"^2.9.0","chalk":"^5.6.2","esbuild":"^0.28.1","liquidjs":"^10.29.0","lit-html":"^3.3.2","commander":"^14.0.3","@phosphor-icons/web":"^2.1.2"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vite6":"npm:vite@^6.0.0","typescript":"^5.9.2","@types/node":"^24.5.2","vite-current":"npm:vite@^8.0.0","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/frameset_0.14.0_1787870209737_0.7664083189182549","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"frameset","version":"0.15.0","_id":"frameset@0.15.0","maintainers":[{"name":"rupertsworld","email":"rp@rupert.cloud"}],"bin":{"frameset":"dist/cli.js"},"dist":{"shasum":"5ffde4fcb056bf17d1f59fc61f1e8927f5aaa2d4","tarball":"https://registry.npmjs.org/frameset/-/frameset-0.15.0.tgz","fileCount":23,"integrity":"sha512-v2F5Um0wZUqzNXHeeZZAIQq1Qf8y2+RjKC911qmNOPI3n6d5RzHcwy++pb8LJzWO7VIZLHJzTQ/MmU/vwHx2rA==","signatures":[{"sig":"MEYCIQDCOPaSvazNh8+HHN2IAeMy2RfmglxvsN1/1f2+MAQkAwIhALsk1AfjuhmT+nME9LP8M3xrFue6vi05OdeWoteiQ7C4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4418507},"type":"module","exports":{"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"}},"gitHead":"d2ccf3da09acc290bff73df36980213ba065bdfa","scripts":{"dev":"node src/cli.ts","test":"node --import ./test/helpers/exit-watchdog.ts --test test/*.test.ts","build":"tsup src/cli.ts --format esm --target node22 --outDir dist --external esbuild && tsup src/vite.ts src/frame-liquid.ts --format esm --target node22 --outDir dist --external liquidjs --dts && tsup --config tsup.frame-runtime.config.ts && node scripts/copy-static.js && vite build src/viewer --outDir ../../dist/viewer --emptyOutDir --base /_frameset/viewer/","test:e2e":"playwright test","typecheck":"tsc --project tsconfig.json && tsc --project src/viewer/tsconfig.json && tsc --project src/frame/tsconfig.json"},"_npmUser":{"name":"rupertsworld","email":"rp@rupert.cloud"},"_npmVersion":"11.17.0","description":"Frameset is a tool for designing and specifying UI using templates. Each frame is one self-contained file — YAML frontmatter over a Liquid template — that takes parameters, renders as its own document, and can be embedded inside other frames. Nest them an","directories":{},"_nodeVersion":"24.19.0","dependencies":{"vite":"^8.0.0","yaml":"^2.9.0","chalk":"^5.6.2","esbuild":"^0.28.1","liquidjs":"^10.29.0","lit-html":"^3.3.2","commander":"^14.0.3","@phosphor-icons/web":"^2.1.2"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vite6":"npm:vite@^6.0.0","typescript":"^5.9.2","@types/node":"^24.5.2","vite-current":"npm:vite@^8.0.0","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/frameset_0.15.0_1787888781030_0.6480611813108199","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"frameset","version":"0.16.0","_id":"frameset@0.16.0","maintainers":[{"name":"rupertsworld","email":"rp@rupert.cloud"}],"bin":{"frameset":"dist/cli.js"},"dist":{"shasum":"6672f5fa824338d9a830b07383f3cd6faf42340c","tarball":"https://registry.npmjs.org/frameset/-/frameset-0.16.0.tgz","fileCount":20,"integrity":"sha512-26pEPWB/0n/yOX2oKv9tdTVxQg2W1W5pU6tbcrN6AE9XPdyIQ82RWmAS7pV9qs6G/L0deI7ePohweFzGIAj4Lg==","signatures":[{"sig":"MEYCIQCkwCJUQvD71UEfDKnQy+ZBnWtS/o6vAT1ufDg2vonRBwIhAKzBtWgoRD8BbEevsoKoaunt9kSvIJV5r5tvjSGuCs9r","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4412349},"type":"module","exports":{"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"}},"gitHead":"4f8b3ae912fa9c4f459f873b9036f6878f437298","scripts":{"dev":"node src/cli.ts","test":"node --import ./test/helpers/exit-watchdog.ts --test test/*.test.ts","build":"tsup src/cli.ts --format esm --target node22 --outDir dist --external esbuild && tsup src/vite.ts src/frame-liquid.ts --format esm --target node22 --outDir dist --external liquidjs --dts && tsup --config tsup.frame-runtime.config.ts && node scripts/copy-static.js && vite build src/viewer --outDir ../../dist/viewer --emptyOutDir --base /_frameset/viewer/","test:e2e":"playwright test","typecheck":"tsc --project tsconfig.json && tsc --project src/viewer/tsconfig.json && tsc --project src/frame/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:007fbddd-2441-41da-adda-cba53206408b"}},"_npmVersion":"11.5.2","description":"Frameset is a tool for designing and specifying UI using templates. Each frame is one self-contained file — YAML frontmatter over a Liquid template — that takes parameters, renders as its own document, and can be embedded inside other frames. Nest them an","directories":{},"_nodeVersion":"24.19.0","dependencies":{"vite":"^8.0.0","yaml":"^2.9.0","chalk":"^5.6.2","esbuild":"^0.28.1","liquidjs":"^10.29.0","lit-html":"^3.3.2","commander":"^14.0.3","@phosphor-icons/web":"^2.1.2"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vite6":"npm:vite@^6.0.0","typescript":"^5.9.2","@types/node":"^24.5.2","vite-current":"npm:vite@^8.0.0","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/frameset_0.16.0_1788350657125_0.32839605512536263","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"frameset","version":"0.17.0","_id":"frameset@0.17.0","maintainers":[{"name":"rupertsworld","email":"rp@rupert.cloud"}],"bin":{"frameset":"dist/cli.js"},"dist":{"shasum":"51e200ed2abe1633bc7a2f9dc848d7bf882cfcbf","tarball":"https://registry.npmjs.org/frameset/-/frameset-0.17.0.tgz","fileCount":20,"integrity":"sha512-zzXfPBDjTay+qW40LwvfavQ2+GBfwVF82j02E6u3zveeGMnAo61ZqsLk4dCKe+nUII4OhvIilEl2wCM6XEe+Kw==","signatures":[{"sig":"MEUCIARN5Us6Kc7/O3XlC4f2n5kp2gu21sAryWlZY34eKwasAiEAucRW8cSEgt7x4XsWnkwDQnePAJI+GkvlI0XUbeyu41g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4411898},"type":"module","exports":{"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"}},"gitHead":"884f7ed028cacd552363e3e1e1becbe4b6df4048","scripts":{"dev":"node src/cli.ts","test":"node --import ./test/helpers/exit-watchdog.ts --test test/*.test.ts","build":"tsup src/cli.ts --format esm --target node22 --outDir dist --external esbuild && tsup src/vite.ts src/frame-liquid.ts --format esm --target node22 --outDir dist --external liquidjs --dts && tsup --config tsup.frame-runtime.config.ts && node scripts/copy-static.js && vite build src/viewer --outDir ../../dist/viewer --emptyOutDir --base /_frameset/viewer/","test:e2e":"playwright test","typecheck":"tsc --project tsconfig.json && tsc --project src/viewer/tsconfig.json && tsc --project src/frame/tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:007fbddd-2441-41da-adda-cba53206408b"}},"_npmVersion":"11.5.2","description":"Frameset is a tool for designing and specifying UI using templates. Each frame is one self-contained file — YAML frontmatter over a Liquid template — that takes parameters, renders as its own document, and can be embedded inside other frames. Nest them an","directories":{},"_nodeVersion":"24.20.0","dependencies":{"vite":"^8.0.0","yaml":"^2.9.0","chalk":"^5.6.2","esbuild":"^0.28.1","liquidjs":"^10.29.0","lit-html":"^3.3.2","commander":"^14.0.3","@phosphor-icons/web":"^2.1.2"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vite6":"npm:vite@^6.0.0","typescript":"^5.9.2","@types/node":"^24.5.2","vite-current":"npm:vite@^8.0.0","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/frameset_0.17.0_1788920682963_0.7401829894871221","host":"s3://npm-registry-packages-npm-production"}},"0.17.1":{"name":"frameset","version":"0.17.1","type":"module","bin":{"frameset":"dist/cli.js"},"scripts":{"build":"tsup src/cli.ts --format esm --target node22 --outDir dist --external esbuild && tsup src/vite.ts src/frame-liquid.ts --format esm --target node22 --outDir dist --external liquidjs --dts && tsup --config tsup.frame-runtime.config.ts && node scripts/copy-static.js && vite build src/viewer --outDir ../../dist/viewer --emptyOutDir --base /_frameset/viewer/","dev":"node src/cli.ts","test":"node --import ./test/helpers/exit-watchdog.ts --test test/*.test.ts","test:e2e":"playwright test","typecheck":"tsc --project tsconfig.json && tsc --project src/viewer/tsconfig.json && tsc --project src/frame/tsconfig.json"},"dependencies":{"@phosphor-icons/web":"^2.1.2","chalk":"^5.6.2","commander":"^14.0.3","esbuild":"^0.28.1","liquidjs":"^10.29.0","lit-html":"^3.3.2","vite":"^8.0.0","yaml":"^2.9.0"},"devDependencies":{"@playwright/test":"^1.59.1","@types/node":"^24.5.2","tsup":"^8.5.0","typescript":"^5.9.2","vite-current":"npm:vite@^8.0.0","vite6":"npm:vite@^6.0.0"},"exports":{"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"}},"_id":"frameset@0.17.1","gitHead":"8303ef2e11c1ea5051d1b09eec7397643c5b7ec3","description":"Frameset is a tool for designing and specifying UI using templates. Each frame is one self-contained file — YAML frontmatter over a Liquid template — that takes parameters, renders as its own document, and can be embedded inside other frames. Nest them an","_nodeVersion":"24.20.0","_npmVersion":"11.5.2","dist":{"integrity":"sha512-meXPtLD/GqeQk/gdLnAF8ly7k30AaWugpbaY+/k+HFFACIrPYMWJWkiB0IB7IlqKt4i2487CayCjIE78cx2Frg==","shasum":"db99a082023d07736720ef74f0530d166289fe5c","tarball":"https://registry.npmjs.org/frameset/-/frameset-0.17.1.tgz","fileCount":20,"unpackedSize":4411906,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQChELYsqboQKHUHfiAj4j/cOxMO/+9aS6V3tiaDf0Pv8AIgRVJ3xHkHVesmzqiQHPiSZKpN+slcHNcycVfXPAuYjV0="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:007fbddd-2441-41da-adda-cba53206408b"}},"directories":{},"maintainers":[{"name":"rupertsworld","email":"rp@rupert.cloud"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/frameset_0.17.1_1788922006110_0.1837382260021836"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-24T02:47:42.894Z","modified":"2026-09-09T02:46:46.655Z","0.1.0":"2026-03-24T02:47:43.178Z","0.1.1":"2026-04-02T21:59:44.326Z","0.1.2":"2026-06-22T21:57:30.927Z","0.1.3":"2026-06-22T22:05:03.950Z","0.1.4":"2026-06-23T18:01:52.293Z","0.1.5":"2026-06-26T20:05:15.898Z","0.2.0":"2026-06-26T23:55:55.201Z","0.2.1":"2026-06-27T00:09:04.961Z","0.2.2":"2026-06-27T00:23:54.098Z","0.2.3":"2026-06-27T00:40:39.965Z","0.3.0":"2026-06-27T01:13:25.359Z","0.3.1":"2026-07-10T01:42:25.114Z","0.3.2":"2026-07-10T02:09:45.473Z","0.4.0":"2026-07-28T02:56:20.058Z","0.4.1":"2026-07-28T03:43:10.518Z","0.5.0":"2026-07-28T03:57:51.945Z","0.5.1":"2026-07-28T04:34:28.551Z","0.6.0":"2026-07-28T21:04:11.282Z","0.6.1":"2026-07-28T22:28:19.981Z","0.7.1":"2026-07-29T21:53:29.240Z","0.7.2":"2026-07-29T22:13:08.459Z","0.8.0":"2026-07-29T23:20:14.416Z","0.9.0":"2026-07-30T01:18:20.098Z","0.9.1":"2026-07-30T01:34:00.375Z","0.9.2":"2026-07-31T07:54:16.374Z","0.10.0":"2026-08-01T03:34:50.595Z","0.10.1":"2026-08-04T04:04:30.325Z","0.10.2":"2026-08-05T05:36:26.195Z","0.11.0":"2026-08-18T06:01:19.392Z","0.12.0":"2026-08-19T01:53:24.006Z","0.13.0":"2026-08-19T04:39:44.382Z","0.14.0":"2026-08-27T22:36:49.914Z","0.15.0":"2026-08-28T03:46:21.191Z","0.16.0":"2026-09-02T12:04:17.352Z","0.17.0":"2026-09-09T02:24:43.167Z","0.17.1":"2026-09-09T02:46:46.395Z"},"description":"Frameset is a tool for designing and specifying UI using templates. Each frame is one self-contained file — YAML frontmatter over a Liquid template — that takes parameters, renders as its own document, and can be embedded inside other frames. Nest them an","maintainers":[{"name":"rupertsworld","email":"rp@rupert.cloud"}],"readme":"# Frameset\n\nFrameset is a tool for designing and specifying UI using templates. Each frame\nis one self-contained file — YAML frontmatter over a Liquid template — that\ntakes parameters, renders as its own document, and can be embedded inside other\nframes. Nest them and you get a digital twin of an application: the same\nstructure and the same states, with none of its data, routing, or machinery.\n\nStorybook targets isolated component stories. Figma targets visual design.\nFrameset targets the space between: a design surface made of real markup. One\nfile can be a sketch of a screen that has no routes or data yet, a prototype\nyou click through, a gallery of every state it can be in, and the specification\nan implementation is held to — each state adjusted through controls derived\nfrom its parameters, and linked to.\n\nThe templates are deliberately dumb — interpolation, conditionals, loops, and\ncomposition, with no arbitrary JavaScript — so a frame stays something to read\nand reason about rather than another program to debug.\n\n## A frame at a glance\n\n```liquid\n---\ntitle: Status badge\nparams:\n  tone: { enum: [neutral, success], default: neutral }\n  label: { type: string, default: Ready }\nimports:\n  - ./status.css\n---\n<span class=\"status status--{{ tone }}\">{{ label }}</span>\n```\n\nThe frontmatter is optional. `params` supplies the render interface and\ncontrol metadata. `imports` is an ordered dependency list: strings are\nside-effect imports, while a single-key mapping binds a default export into\nthe Liquid scope. `data` binds inline values into the scope the same way.\n`style` holds the frame's own CSS and `script` its own behavior, each delivered\nto the document once however many instances render. `adoptedStyles` is the\nframe's own CSS for the declarative shadow roots the body writes, per host\ntag, adopted into each such root. The body is Liquid and may\nuse interpolation, conditionals, loops, and frame composition — but no style,\nscript, or document-defining elements: the body is a fragment, and styles and\nbehavior belong in `style`, `script` and `imports`.\n\nFrontmatter is a strict JSON-compatible subset of YAML, and those eight keys —\n`title`, `description`, `params`, `imports`, `data`, `style`, `script`,\n`adoptedStyles` — are the only ones allowed. Duplicate keys are rejected, and param, import, and data names\nmust be identifiers: `makeRoom`, not `make-room` or `10`.\n\n## Quick start\n\nInstall Frameset in the project and add `frameset.json`:\n\n```sh\nnpm install --save-dev frameset\n```\n\n```json\n{\n  \"root\": \".\",\n  \"imports\": { \"design/**/*.frame\": [\"design/foundation.ts\"] },\n  \"sidebar\": [\n    { \"type\": \"frame\", \"path\": \"design/dashboard.frame\", \"title\": \"Dashboard\" },\n    {\n      \"type\": \"folder\",\n      \"title\": \"Account\",\n      \"children\": [\n        { \"type\": \"frame\", \"path\": \"design/account/sign-in.frame\" }\n      ]\n    }\n  ]\n}\n```\n\nRun the command from the directory containing the manifest — that exact\ndirectory, since parent directories are not searched:\n\n```sh\nnpx frameset\n```\n\nFrameset starts at `http://127.0.0.1:4400/` and opens the viewer. Use\n`--port`, `--host`, and `--allowed-hosts` to change the server settings.\nSidebar entries are explicit and retain manifest order. Every `.frame` under\n`root` is still addressable and composable, whether or not the sidebar lists\nit. `imports` maps a glob to modules every matching frame's document loads\nbefore the frame itself — the place for a foundation stylesheet or the\nelement definitions frames rely on to draw.\n\n## Params and controls\n\nControls derive from the frame's `params`; frame code does not register them at\nruntime. An `enum` renders a dropdown, `type: number` a number input,\n`type: boolean` a checkbox, and `type: string` a text input. Object and array\nparams are structured fixtures and do not render controls.\n\nThe viewer URL is the selected frame id plus its arguments:\n\n```text\n/design/status?tone=success&label=Deployed\n```\n\nDefaults seed the render and the controls. Changing a control rewrites the\nquery and re-renders the document in place, so the URL is also the shareable\nstate.\nThe viewer renders controls for the root frame; `<frameset-frame>` renders them\nfor an embedded frame.\n\nA frame's id is its path under `root` without the suffix, so\n`design/status.frame` has the id `design/status`. That id answers at three\naddresses, which is worth knowing when something looks wrong:\n\n```text\n/#design/status         the viewer, with that frame selected\n/design/status          the frame document by itself\n/design/status.frame    the compiled module\n```\n\nFetching the last one is what proves the frame compiles.\n\n## Composition\n\nLiquid `render` inlines another frame's output into the current document:\n\n```liquid\n{% render './status', tone: 'success', label: 'Deployed' %}\n```\n\n`<frameset-frame>` embeds another frame as its own document and viewport:\n\n```html\n<frameset-frame\n  src=\"./status?tone=success\"\n  label=\"Status\"\n  width=\"320\"\n  height=\"80\"\n  background=\"#fff\"\n  border\n></frameset-frame>\n```\n\n`render` invokes the child in isolation: only the arguments you name cross the\nboundary. Surrounding scope does not — including a loop's `forloop.index`, which\nhas to be passed explicitly as an argument.\n\nAn embed's label and control strip render outside its declared box, so they\nnever change its size, and content that overflows the box is clipped\n(`overflow=\"visible\"` to let it escape).\n\nUse `render` when the child belongs to the same page and style context. Use\n`<frameset-frame>` for document isolation, a fixed viewport, and embedded\ncontrols. Its `src` may be relative to the current frame or absolute from the\nproject root.\n\n## Importing frames\n\nThe viewer is not the only way to use a frame. Add the package's Vite plugin to\na project's own config, and `.frame` files become importable modules anywhere\nthat build reaches — application code, scripts, or tests:\n\n```ts\nimport { defineConfig } from \"vite\";\nimport frameset from \"frameset/vite\";\n\nexport default defineConfig({\n  plugins: [frameset()],\n});\n```\n\nThe Frameset server installs this plugin itself, so the config entry is only\nfor your own build.\n\nAn import returns a frozen module — `render` plus the frontmatter:\n\n```ts\nimport status from \"./design/status.frame\";\n\nstatus.render({ tone: \"success\" }); // → markup string, synchronously\nstatus.params;                      // → the declared schema fragments\nstatus.imports;                     // → [\"./status.css\"]\n```\n\nImporting also delivers the frame's dependencies to the document, so a\nspecimen's styles are present exactly as they are in the viewer, once however\nmany times it renders.\n\nThis is what makes a frame usable as a specification: the frame renders the\nintended result, and a test holds the implementation against it. The test\nrunner needs the plugin above so `.frame` imports compile, and a real browser\nso the frame's styles apply:\n\n```ts\nimport spec from \"../design/status.frame\"; // delivers the spec's CSS here\nimport \"../src/status-badge\"; // defines <status-badge>\n\n// the frame declares which tones exist, so the suite covers whatever it declares\ntest.each(spec.params.tone.enum as string[])(\"tone %s matches the spec\", (tone) => {\n  document.body.innerHTML = spec.render({ tone, label: \"Ready\" });\n  const reference = document.body.firstElementChild!;\n\n  const actual = document.createElement(\"status-badge\");\n  actual.setAttribute(\"tone\", tone);\n  document.body.append(actual);\n\n  expect(getComputedStyle(actual).backgroundColor).toBe(\n    getComputedStyle(reference).backgroundColor,\n  );\n});\n```\n\n## How Frameset itself is specified\n\nThe `specs/` folder in the repository holds the full specification of the\nformat, server, viewer, and integration contracts.\n","readmeFilename":"README.md"}