{"_id":"glashjs","_rev":"34-8279e5555a988d54f11e410b11fb3998","name":"glashjs","dist-tags":{"latest":"0.15.2"},"versions":{"0.0.1":{"name":"glashjs","version":"0.0.1","keywords":["glash","glashdb","framework","offline","pwa","asset-optimization","avif","brotli","security"],"license":"UNLICENSED","_id":"glashjs@0.0.1","maintainers":[{"name":"thechrisjohn","email":"christian.john161@gmail.com"}],"bin":{"glash":"bin/glash.mjs"},"dist":{"shasum":"6653d910979844048e5c9e0417de91eea3199d6b","tarball":"https://registry.npmjs.org/glashjs/-/glashjs-0.0.1.tgz","fileCount":12,"integrity":"sha512-rxl9DzgSDz/VbZ2hv52l55IWSuWxGAVL9B+Xf6HeAo1QDaEaTQTiemMCo690hLJfgtT56avdtuChJcNWBgG5cw==","signatures":[{"sig":"MEQCIF5rO1Al+AJPy6I3VobxHuIMrwzWVQF9NULuFd1xaWgdAiB8bIMM0dJBzUkaJnTX7CrclVxD44GvVmkZrT76isjqMw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39325},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./config":"./src/config.mjs","./security":"./src/security/headers.mjs"},"gitHead":"86df96cdda05609c8296575c081a472f599f48eb","_npmUser":{"name":"thechrisjohn","email":"christian.john161@gmail.com"},"_npmVersion":"11.6.2","description":"glashjs — a build pipeline + runtime conventions for fast, offline-capable, hard-to-hack sites. Built on proven primitives, with a best-in-class asset optimizer, PWA offline layer, and secure-by-default headers.","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"optionalDependencies":{"sharp":"^0.33.0"},"_npmOperationalInternal":{"tmp":"tmp/glashjs_0.0.1_1780510505694_0.9889268795237183","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"glashjs","version":"0.0.2","keywords":["glash","glashdb","framework","offline","pwa","asset-optimization","avif","brotli","security"],"license":"UNLICENSED","_id":"glashjs@0.0.2","maintainers":[{"name":"thechrisjohn","email":"christian.john161@gmail.com"}],"bin":{"glash":"bin/glash.mjs"},"dist":{"shasum":"8990d20f38f81b5e76edc48a1287f297d71f4007","tarball":"https://registry.npmjs.org/glashjs/-/glashjs-0.0.2.tgz","fileCount":12,"integrity":"sha512-ah7yLLcLm7zZlfUG1Fz5nNoYzZPAfopzADRNZAk6TLjNWAt/Iuh4VDMICAV36cneJPfP8FIlW7j2uRMxNzUc+w==","signatures":[{"sig":"MEUCIFRWG853iSPoXIypW8nPgD1yygfeb11yUtNYlSxDKmuwAiEAloeFhuOKzBZ/LDzIZF4LZOpu5YOf7xpUMrFHFwowfF4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39882},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./config":"./src/config.mjs","./security":"./src/security/headers.mjs"},"gitHead":"86df96cdda05609c8296575c081a472f599f48eb","_npmUser":{"name":"thechrisjohn","email":"christian.john161@gmail.com"},"_npmVersion":"11.6.2","description":"glashjs — a build pipeline + runtime conventions for fast, offline-capable, hard-to-hack sites. Built on proven primitives, with a best-in-class asset optimizer, PWA offline layer, and secure-by-default headers.","directories":{},"_nodeVersion":"24.13.0","dependencies":{},"_hasShrinkwrap":false,"peerDependencies":{"sharp":"^0.34.5"},"peerDependenciesMeta":{"sharp":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/glashjs_0.0.2_1780511398046_0.48726788992405434","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"glashjs","version":"0.0.3","keywords":["glash","glashdb","framework","offline","pwa","asset-optimization","avif","brotli","security"],"license":"MIT","_id":"glashjs@0.0.3","maintainers":[{"name":"thechrisjohn","email":"christian.john161@gmail.com"}],"bin":{"glash":"bin/glash.mjs"},"dist":{"shasum":"70e11d798079b8def011b134cf35be3c168fc836","tarball":"https://registry.npmjs.org/glashjs/-/glashjs-0.0.3.tgz","fileCount":13,"integrity":"sha512-lrLIFcG/4KQIGwx8xiyuabitQWZsZihTSXpVjm7jnuGbG00uax5sXdcM6BHlV63MPvqMWWZ3amvUHNIqSNf1BA==","signatures":[{"sig":"MEUCIQC/Zq/OhTz6IaL5I9lrkq0FJ4wS1OAMl2Ma4eH2/TenqQIgIXIN8SfdBNoqe1Toc7f7nlo4i7KXBJp36ZiMnjauRIg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40939},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./config":"./src/config.mjs","./security":"./src/security/headers.mjs"},"gitHead":"86df96cdda05609c8296575c081a472f599f48eb","_npmUser":{"name":"thechrisjohn","email":"christian.john161@gmail.com"},"_npmVersion":"11.6.2","description":"glashjs — a build pipeline + runtime conventions for fast, offline-capable, hard-to-hack sites. Built on proven primitives, with a best-in-class asset optimizer, PWA offline layer, and secure-by-default headers.","directories":{},"_nodeVersion":"24.13.0","dependencies":{},"_hasShrinkwrap":false,"peerDependencies":{"sharp":"^0.34.5"},"peerDependenciesMeta":{"sharp":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/glashjs_0.0.3_1780516155940_0.9828717916368706","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"glashjs","version":"0.1.0","keywords":["glash","glashdb","framework","offline","pwa","asset-optimization","avif","brotli","security","routing","ssr","api","server","web-framework"],"license":"MIT","_id":"glashjs@0.1.0","maintainers":[{"name":"thechrisjohn","email":"christian.john161@gmail.com"}],"bin":{"glash":"bin/glash.mjs"},"dist":{"shasum":"ed33cf2d822fbbc28fb51f53c0561b168b34b7ed","tarball":"https://registry.npmjs.org/glashjs/-/glashjs-0.1.0.tgz","fileCount":16,"integrity":"sha512-AxmVKtTCBnhRPtrlJDL9mOpmtMh1xP2OxkIRAAwZq1+OtNeLr44mNtINas/kuWsrsMX3g2BZduVfk/RoDfjrUA==","signatures":[{"sig":"MEYCIQDg5cdr1JoAEn/dqQYfM/039916Yh0wMnfYlu67dBQRpgIhALfjGkYdE196DrG+WusycWzAUZ25pv9beMArgr3Se3vR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":55979},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./config":"./src/config.mjs","./security":"./src/security/headers.mjs"},"gitHead":"86df96cdda05609c8296575c081a472f599f48eb","_npmUser":{"name":"thechrisjohn","email":"christian.john161@gmail.com"},"_npmVersion":"11.6.2","description":"glashjs — a web framework with file-based routing, SSR, API routes, a best-in-class asset optimizer, offline PWA layer, animated favicon, and secure-by-default headers. Zero dependencies.","directories":{},"_nodeVersion":"24.13.0","dependencies":{},"_hasShrinkwrap":false,"peerDependencies":{"sharp":"^0.34.5"},"peerDependenciesMeta":{"sharp":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/glashjs_0.1.0_1780518629492_0.12520192889225834","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"glashjs","version":"0.2.0","keywords":["glash","glashdb","framework","offline","pwa","asset-optimization","avif","brotli","security","routing","ssr","api","server","web-framework"],"license":"MIT","_id":"glashjs@0.2.0","maintainers":[{"name":"thechrisjohn","email":"christian.john161@gmail.com"}],"bin":{"glash":"bin/glash.mjs"},"dist":{"shasum":"e11761f8a901c2601353b90da09572b41c12c3bb","tarball":"https://registry.npmjs.org/glashjs/-/glashjs-0.2.0.tgz","fileCount":17,"integrity":"sha512-fKiol6IyRSa6UAemeUsvdweay38Ky13uGUeZwihqQ2zRzCzw7pdQWD+GTg7kb9bEhP+GzX5BPSWB8c4Obwd0MA==","signatures":[{"sig":"MEUCIQDwXMtNaSXu/UF/C87h1Jr1o1vYCHVFiLxOJO+2ZPLQ2wIgQ8JurARjtSDKNUmKac7mQtnBtVKqRJ1jUAGp69TDRFA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64526},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./config":"./src/config.mjs","./security":"./src/security/headers.mjs"},"gitHead":"86df96cdda05609c8296575c081a472f599f48eb","_npmUser":{"name":"thechrisjohn","email":"christian.john161@gmail.com"},"_npmVersion":"11.6.2","description":"glashjs — a web framework with file-based routing, SSR, API routes, a best-in-class asset optimizer, offline PWA layer, animated favicon, and secure-by-default headers. Zero dependencies.","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"preact":"^10.29.2","esbuild":"^0.28.0","preact-render-to-string":"^6.7.0"},"peerDependencies":{"sharp":"^0.34.5","preact":"^10.25.0","esbuild":">=0.20.0","preact-render-to-string":"^6.5.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"preact":{"optional":true},"esbuild":{"optional":true},"preact-render-to-string":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/glashjs_0.2.0_1780519415861_0.5423302414945947","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"glashjs","version":"0.3.0","keywords":["glash","glashdb","framework","offline","pwa","asset-optimization","avif","brotli","security","routing","ssr","api","server","web-framework"],"license":"MIT","_id":"glashjs@0.3.0","maintainers":[{"name":"thechrisjohn","email":"christian.john161@gmail.com"}],"bin":{"glash":"bin/glash.mjs"},"dist":{"shasum":"d7c832078a6d0080358f9c8c1ad8094e5070ee7a","tarball":"https://registry.npmjs.org/glashjs/-/glashjs-0.3.0.tgz","fileCount":17,"integrity":"sha512-b7CWKW4ggb0ooXXqksp7akZFzFzYLxj1pUVrE107i+vF9YwcrJex/FgNG4B5VLM0uw8Jyr5LRCwgYqu0RwZ4PA==","signatures":[{"sig":"MEUCIQDOl3hmwVPvz7PxiJuiohADCuLB/Q9Pb2e3WNjsF5B+kQIgDHL1ufrAde0Jyh8fWpvb6qmdIktKWWIHMitkQD//EAY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":68749},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./config":"./src/config.mjs","./security":"./src/security/headers.mjs"},"gitHead":"86df96cdda05609c8296575c081a472f599f48eb","_npmUser":{"name":"thechrisjohn","email":"christian.john161@gmail.com"},"_npmVersion":"11.6.2","description":"glashjs — a web framework with file-based routing, SSR, API routes, a best-in-class asset optimizer, offline PWA layer, animated favicon, and secure-by-default headers. Zero dependencies.","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"preact":"^10.29.2","esbuild":"^0.28.0","preact-render-to-string":"^6.7.0"},"peerDependencies":{"sharp":"^0.34.5","preact":"^10.25.0","esbuild":">=0.20.0","preact-render-to-string":"^6.5.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"preact":{"optional":true},"esbuild":{"optional":true},"preact-render-to-string":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/glashjs_0.3.0_1780520105211_0.36608504409371667","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"glashjs","version":"0.4.0","keywords":["glash","glashdb","framework","offline","pwa","asset-optimization","avif","brotli","security","routing","ssr","api","server","web-framework"],"license":"MIT","_id":"glashjs@0.4.0","maintainers":[{"name":"thechrisjohn","email":"christian.john161@gmail.com"}],"bin":{"glash":"bin/glash.mjs"},"dist":{"shasum":"40a1e8848b354dbcf6f0b361ad061b0705eb7590","tarball":"https://registry.npmjs.org/glashjs/-/glashjs-0.4.0.tgz","fileCount":18,"integrity":"sha512-MO6eragBLOA6+njWz7+IKxOsgW+cN7uPuUdhD1qFsbuX5gunuiqaOc3Jqca/bbpVVePNqydb7InoUKMtJE/Jrw==","signatures":[{"sig":"MEUCIGIq+t7PKmhn5FoOOhTWQmyDHBxUAjtfh84sWOXZPNZEAiEAqn4+Uw7FLL5ZLvr0iKeYGARXk3OB8Kgga8UWMUpTjJI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73481},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./image":"./src/components/image.mjs","./config":"./src/config.mjs","./security":"./src/security/headers.mjs","./package.json":"./package.json"},"gitHead":"86df96cdda05609c8296575c081a472f599f48eb","_npmUser":{"name":"thechrisjohn","email":"christian.john161@gmail.com"},"_npmVersion":"11.6.2","description":"glashjs — a web framework with file-based routing, SSR, API routes, a best-in-class asset optimizer, offline PWA layer, animated favicon, and secure-by-default headers. Zero dependencies.","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"preact":"^10.29.2","esbuild":"^0.28.0","preact-render-to-string":"^6.7.0"},"peerDependencies":{"sharp":"^0.34.5","preact":"^10.25.0","esbuild":">=0.20.0","preact-render-to-string":"^6.5.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"preact":{"optional":true},"esbuild":{"optional":true},"preact-render-to-string":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/glashjs_0.4.0_1780520524833_0.15178925550160116","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"glashjs","version":"0.5.0","keywords":["glash","glashdb","framework","offline","pwa","asset-optimization","avif","brotli","security","routing","ssr","api","server","web-framework"],"license":"MIT","_id":"glashjs@0.5.0","maintainers":[{"name":"thechrisjohn","email":"christian.john161@gmail.com"}],"bin":{"glash":"bin/glash.mjs"},"dist":{"shasum":"65957cebd4f96e313557f3d3e3d11a30348a4207","tarball":"https://registry.npmjs.org/glashjs/-/glashjs-0.5.0.tgz","fileCount":19,"integrity":"sha512-QpgEqYFBp/QI3lpgYgiWds6jyvAC11WTeRgQINZgxNrDirykumOHoFqXJMlcdcfovJwTijJFU8eDpZK+tT0+Og==","signatures":[{"sig":"MEYCIQDvipge6wk/KN8IIJjH2ky4lGWq8sGIn76K/UdPVeMaUgIhAOzVu75NcyXiI4hMRAa8Y2imFZE1azBMqY+95+v8Xdwq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77241},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./image":"./src/components/image.mjs","./video":"./src/components/video.mjs","./config":"./src/config.mjs","./security":"./src/security/headers.mjs","./package.json":"./package.json"},"gitHead":"86df96cdda05609c8296575c081a472f599f48eb","_npmUser":{"name":"thechrisjohn","email":"christian.john161@gmail.com"},"_npmVersion":"11.6.2","description":"glashjs — a web framework with file-based routing, SSR, API routes, a best-in-class asset optimizer, offline PWA layer, animated favicon, and secure-by-default headers. Zero dependencies.","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"preact":"^10.29.2","esbuild":"^0.28.0","preact-render-to-string":"^6.7.0"},"peerDependencies":{"sharp":"^0.34.5","preact":"^10.25.0","esbuild":">=0.20.0","preact-render-to-string":"^6.5.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"preact":{"optional":true},"esbuild":{"optional":true},"preact-render-to-string":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/glashjs_0.5.0_1780520964213_0.44829010829274973","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"glashjs","version":"0.5.1","keywords":["glash","glashdb","framework","offline","pwa","asset-optimization","avif","brotli","security","routing","ssr","api","server","web-framework"],"license":"MIT","_id":"glashjs@0.5.1","maintainers":[{"name":"thechrisjohn","email":"christian.john161@gmail.com"}],"bin":{"glash":"bin/glash.mjs"},"dist":{"shasum":"a1db3ddfdebab0fd4919ce9c8670c8288f7a6168","tarball":"https://registry.npmjs.org/glashjs/-/glashjs-0.5.1.tgz","fileCount":19,"integrity":"sha512-4o++8Yse6lhZrynJsVv/Ordq5pQ5+aDZSAQOYpvNvateDX7f08Xc5StWFIMBqRe54AHKlo/mMhYDieslZpaHDQ==","signatures":[{"sig":"MEUCIQDfehHQtLoPnq09ge//5dSCOzicIom9KemmagzxP0dMVwIgOhGEvBXSCYvWDJKZkDYQczKc8FK/98/01afDW/0eVCE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77562},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./image":"./src/components/image.mjs","./video":"./src/components/video.mjs","./config":"./src/config.mjs","./security":"./src/security/headers.mjs","./package.json":"./package.json"},"gitHead":"86df96cdda05609c8296575c081a472f599f48eb","_npmUser":{"name":"thechrisjohn","email":"christian.john161@gmail.com"},"_npmVersion":"11.6.2","description":"glashjs — a web framework with file-based routing, SSR, API routes, a best-in-class asset optimizer, offline PWA layer, animated favicon, and secure-by-default headers. Zero dependencies.","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"preact":"^10.29.2","esbuild":"^0.28.0","preact-render-to-string":"^6.7.0"},"peerDependencies":{"sharp":"^0.34.5","preact":"^10.25.0","esbuild":">=0.20.0","preact-render-to-string":"^6.5.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"preact":{"optional":true},"esbuild":{"optional":true},"preact-render-to-string":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/glashjs_0.5.1_1780521070104_0.16946033966634144","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"glashjs","version":"0.6.0","keywords":["glash","glashdb","framework","offline","pwa","asset-optimization","avif","brotli","security","routing","ssr","api","server","web-framework"],"license":"MIT","_id":"glashjs@0.6.0","maintainers":[{"name":"thechrisjohn","email":"christian.john161@gmail.com"}],"bin":{"glash":"bin/glash.mjs"},"dist":{"shasum":"962d8c40dd98c46a67094bfed8ee3575a454757a","tarball":"https://registry.npmjs.org/glashjs/-/glashjs-0.6.0.tgz","fileCount":21,"integrity":"sha512-ycNuBMX2vVnsL+PWeBtUN66pHQEJItO3nR8b98WO88f5+lUpmFVXlPznOGPTAEhjxMssNOoM8IxY+Uf1WSbfiA==","signatures":[{"sig":"MEUCIAP/X/3pqoU3G6zYIUDVuOJLbME6aWN2sJZ4DZpLbs8jAiEA/ZLgnx66RyIy7Fstnnr58JF66IUSFawLoX/qDT63vXU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83471},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./link":"./src/components/link.mjs","./image":"./src/components/image.mjs","./video":"./src/components/video.mjs","./config":"./src/config.mjs","./security":"./src/security/headers.mjs","./package.json":"./package.json"},"gitHead":"86df96cdda05609c8296575c081a472f599f48eb","_npmUser":{"name":"thechrisjohn","email":"christian.john161@gmail.com"},"_npmVersion":"11.6.2","description":"glashjs — a web framework with file-based routing, SSR, API routes, a best-in-class asset optimizer, offline PWA layer, animated favicon, and secure-by-default headers. Zero dependencies.","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"preact":"^10.29.2","esbuild":"^0.28.0","preact-render-to-string":"^6.7.0"},"peerDependencies":{"sharp":"^0.34.5","preact":"^10.25.0","esbuild":">=0.20.0","preact-render-to-string":"^6.5.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"preact":{"optional":true},"esbuild":{"optional":true},"preact-render-to-string":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/glashjs_0.6.0_1780522068094_0.7790981368399259","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"glashjs","version":"0.6.1","keywords":["glash","glashdb","framework","offline","pwa","asset-optimization","avif","brotli","security","routing","ssr","api","server","web-framework"],"license":"MIT","_id":"glashjs@0.6.1","maintainers":[{"name":"thechrisjohn","email":"christian.john161@gmail.com"}],"bin":{"glash":"bin/glash.mjs"},"dist":{"shasum":"00cdd73550bb9d2c43b8117c6fc2023d6b0f27ea","tarball":"https://registry.npmjs.org/glashjs/-/glashjs-0.6.1.tgz","fileCount":22,"integrity":"sha512-KCoFkFVp2S0jvcCWvHkjZpsPH7OAbwPPCDfpyJs3N6DgIaZ7R+TPF8ozBbEVsDULk3UJlSCUSWOxkYBW8U830A==","signatures":[{"sig":"MEYCIQCwOrxPLRIkjlBQs7fhdharqnGBpZCPzOCEJtHvoLPFvQIhAN0RYthOVYHk/cBnSOy/SZkSHKoBEYj1D2FlH+w2v6Pu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":86511},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./link":"./src/components/link.mjs","./image":"./src/components/image.mjs","./video":"./src/components/video.mjs","./config":"./src/config.mjs","./security":"./src/security/headers.mjs","./package.json":"./package.json"},"gitHead":"86df96cdda05609c8296575c081a472f599f48eb","_npmUser":{"name":"thechrisjohn","email":"christian.john161@gmail.com"},"_npmVersion":"11.6.2","description":"glashjs — a web framework built on top of Next.js: file-based routing, SSR, API routes, JSX components with client hydration, nested layouts, streaming SSR, a best-in-class build-time asset optimizer, offline PWA layer, animated favicon, and secure-by-def","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"preact":"^10.29.2","esbuild":"^0.28.0","preact-render-to-string":"^6.7.0"},"peerDependencies":{"sharp":"^0.34.5","preact":"^10.25.0","esbuild":">=0.20.0","preact-render-to-string":"^6.5.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"preact":{"optional":true},"esbuild":{"optional":true},"preact-render-to-string":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/glashjs_0.6.1_1780522504627_0.7061251167190001","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"glashjs","version":"0.7.0","keywords":["glash","glashdb","framework","offline","pwa","asset-optimization","avif","brotli","security","routing","ssr","api","server","web-framework"],"license":"MIT","_id":"glashjs@0.7.0","maintainers":[{"name":"thechrisjohn","email":"christian.john161@gmail.com"}],"bin":{"glash":"bin/glash.mjs"},"dist":{"shasum":"e46304d484bb7ce87f97c2cf1d58f406db9aef12","tarball":"https://registry.npmjs.org/glashjs/-/glashjs-0.7.0.tgz","fileCount":22,"integrity":"sha512-fLTAhIGOWCDIAsHw1WCpA0hdrnPEWI9ybc0N4cpqiZwV1VH0FcJfZkrkkg6kG1kB3oZFzvAvCnYkM7W4sUIdKQ==","signatures":[{"sig":"MEQCIEjnPhcTRbEMnqGmlHMjM+N/tRCmXl4zt8DeJIfYTTLqAiB4Am2RAmlQJ63HG/ADhGuYai332POXPD7KOQ2RhL6JkA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":86628},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./link":"./src/components/link.mjs","./image":"./src/components/image.mjs","./video":"./src/components/video.mjs","./config":"./src/config.mjs","./security":"./src/security/headers.mjs","./package.json":"./package.json"},"gitHead":"86df96cdda05609c8296575c081a472f599f48eb","_npmUser":{"name":"thechrisjohn","email":"christian.john161@gmail.com"},"_npmVersion":"11.6.2","description":"glashjs — a web framework built on top of Next.js: file-based routing, SSR, API routes, JSX components with client hydration, nested layouts, streaming SSR, a best-in-class build-time asset optimizer, offline PWA layer, animated favicon, and secure-by-def","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"preact":"^10.29.2","esbuild":"^0.28.0","preact-render-to-string":"^6.7.0"},"peerDependencies":{"sharp":"^0.34.5","preact":"^10.25.0","esbuild":">=0.20.0","preact-render-to-string":"^6.5.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"preact":{"optional":true},"esbuild":{"optional":true},"preact-render-to-string":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/glashjs_0.7.0_1780522602802_0.19224060848315339","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"glashjs","version":"0.7.1","keywords":["glash","glashdb","framework","offline","pwa","asset-optimization","avif","brotli","security","routing","ssr","api","server","web-framework"],"license":"MIT","_id":"glashjs@0.7.1","maintainers":[{"name":"thechrisjohn","email":"christian.john161@gmail.com"}],"bin":{"glash":"bin/glash.mjs"},"dist":{"shasum":"eef63d9e7bcf423ee68c06d79381116706961b68","tarball":"https://registry.npmjs.org/glashjs/-/glashjs-0.7.1.tgz","fileCount":22,"integrity":"sha512-8BdGg7VL/sOJyfAeqPKsg5Unpjsx/Mv3HPBQIlwjmCixMJCWDssOEDjRdm/j0gv5VkpwxNsTjphuFLdV471+LQ==","signatures":[{"sig":"MEQCIFat5yJK0xQPO3CNjqzAW/LHXsinwoJyz50iVrtWJvweAiB7SVl810fzifvtcwcGnZjaJytzV+KcG6zuChmn720MXw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":86643},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./link":"./src/components/link.mjs","./image":"./src/components/image.mjs","./video":"./src/components/video.mjs","./config":"./src/config.mjs","./security":"./src/security/headers.mjs","./package.json":"./package.json"},"gitHead":"86df96cdda05609c8296575c081a472f599f48eb","_npmUser":{"name":"thechrisjohn","email":"christian.john161@gmail.com"},"_npmVersion":"11.6.2","description":"glashjs — a Next.js alternative built on Preact + esbuild + Node: file-based routing, SSR, API routes, JSX components with client hydration, nested layouts, streaming SSR, a best-in-class build-time asset optimizer, offline PWA layer, animated favicon, an","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"preact":"^10.29.2","esbuild":"^0.28.0","preact-render-to-string":"^6.7.0"},"peerDependencies":{"sharp":"^0.34.5","preact":"^10.25.0","esbuild":">=0.20.0","preact-render-to-string":"^6.5.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"preact":{"optional":true},"esbuild":{"optional":true},"preact-render-to-string":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/glashjs_0.7.1_1780522754815_0.8031367026174645","host":"s3://npm-registry-packages-npm-production"}},"0.7.2":{"name":"glashjs","version":"0.7.2","keywords":["glash","glashdb","framework","offline","pwa","asset-optimization","avif","brotli","security","routing","ssr","api","server","web-framework"],"license":"MIT","_id":"glashjs@0.7.2","maintainers":[{"name":"thechrisjohn","email":"christian.john161@gmail.com"}],"homepage":"https://github.com/theChrisJohn/glashjs#readme","bugs":{"url":"https://github.com/theChrisJohn/glashjs/issues"},"bin":{"glash":"bin/glash.mjs"},"dist":{"shasum":"5eda16065176b360545e86674b9b86a62aacf224","tarball":"https://registry.npmjs.org/glashjs/-/glashjs-0.7.2.tgz","fileCount":22,"integrity":"sha512-mgFt1CvabsrF8Vr/aVxGE1gBab3uFUEaXVoVF3fHHvIsBnZS4U0XB367/zj7fFCDRpmCaD6V9zFcajIZRyW93A==","signatures":[{"sig":"MEUCIQDrOrMGONvq6hTZ31K6B3rsRyxZ1LDcAeYCg1d6s/r/JwIgXvHtZjrdbI2C4q6sAP72bE+SzIr4V94h//gRXFn2nJ0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":86765},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./link":"./src/components/link.mjs","./image":"./src/components/image.mjs","./video":"./src/components/video.mjs","./config":"./src/config.mjs","./security":"./src/security/headers.mjs","./package.json":"./package.json"},"gitHead":"2554ccd5b05512fcc2b4983a9926d163c4acb720","_npmUser":{"name":"thechrisjohn","email":"christian.john161@gmail.com"},"repository":{"url":"git+https://github.com/theChrisJohn/glashjs.git","type":"git"},"_npmVersion":"11.6.2","description":"glashjs — a web framework built on top of Next.js: file-based routing, SSR, API routes, JSX components with client hydration, nested layouts, streaming SSR, a best-in-class build-time asset optimizer, offline PWA layer, animated favicon, and secure-by-def","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"preact":"^10.29.2","esbuild":"^0.28.0","preact-render-to-string":"^6.7.0"},"peerDependencies":{"sharp":"^0.34.5","preact":"^10.25.0","esbuild":">=0.20.0","preact-render-to-string":"^6.5.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"preact":{"optional":true},"esbuild":{"optional":true},"preact-render-to-string":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/glashjs_0.7.2_1780524043941_0.8134690324260074","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"glashjs","version":"0.8.0","keywords":["glash","glashdb","framework","offline","pwa","asset-optimization","avif","brotli","security","routing","ssr","api","server","web-framework"],"license":"MIT","_id":"glashjs@0.8.0","maintainers":[{"name":"thechrisjohn","email":"christian.john161@gmail.com"}],"homepage":"https://github.com/theChrisJohn/glashjs#readme","bugs":{"url":"https://github.com/theChrisJohn/glashjs/issues"},"bin":{"glash":"bin/glash.mjs"},"dist":{"shasum":"e4dfb8f78df8c4307fb3f19c4a811144ee0a89e5","tarball":"https://registry.npmjs.org/glashjs/-/glashjs-0.8.0.tgz","fileCount":22,"integrity":"sha512-VNEC/3D1dqsIagmzaAy6vzl4+G3cD2pzEK1yOdKGG7qZUH0vs2VhPQwLmOb8rZEe1tm5HNfSMTd6iuBB4PuAZA==","signatures":[{"sig":"MEYCIQDAPE4rH3MvruYZvvTKhmqRob2B9/hKQVxyh/9Lu28sJgIhAKMiqGV99liSJLXXIq4ufVWIciGyNlHWw5iR3EFbM2XO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":93269},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./link":"./src/components/link.mjs","./image":"./src/components/image.mjs","./video":"./src/components/video.mjs","./config":"./src/config.mjs","./security":"./src/security/headers.mjs","./package.json":"./package.json"},"gitHead":"2c1049621ded2b09c1dcbb6e633d779cd15d740c","_npmUser":{"name":"thechrisjohn","email":"christian.john161@gmail.com"},"repository":{"url":"git+https://github.com/theChrisJohn/glashjs.git","type":"git"},"_npmVersion":"11.6.2","description":"glashjs — a web framework built on top of Next.js: file-based routing, SSR, API routes, JSX components with client hydration, nested layouts, streaming SSR, a best-in-class build-time asset optimizer, offline PWA layer, animated favicon, and secure-by-def","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"preact":"^10.29.2","esbuild":"^0.28.0","preact-render-to-string":"^6.7.0"},"peerDependencies":{"sharp":"^0.34.5","preact":"^10.25.0","esbuild":">=0.20.0","preact-render-to-string":"^6.5.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"preact":{"optional":true},"esbuild":{"optional":true},"preact-render-to-string":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/glashjs_0.8.0_1780622191620_0.7205425931041287","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"glashjs","version":"0.9.0","keywords":["glash","glashdb","framework","offline","pwa","asset-optimization","avif","brotli","security","routing","ssr","api","server","web-framework"],"license":"MIT","_id":"glashjs@0.9.0","maintainers":[{"name":"thechrisjohn","email":"christian.john161@gmail.com"}],"homepage":"https://github.com/theChrisJohn/glashjs#readme","bugs":{"url":"https://github.com/theChrisJohn/glashjs/issues"},"bin":{"glash":"bin/glash.mjs"},"dist":{"shasum":"a820c2accfa705ab4b9d81c00c34a4871a65a571","tarball":"https://registry.npmjs.org/glashjs/-/glashjs-0.9.0.tgz","fileCount":22,"integrity":"sha512-2jr/92F7ObPfyKeK5CJ250jZPZtURdeSaFb1aESTTi6t5am+kPdyWqfp//VNxNpmLA52D6PFJqbYvO2EOFEIOg==","signatures":[{"sig":"MEQCIHZrI9QtCDOenoM7mnXqkpboXtlxDO45kuHLghrwd+VRAiBrnX8QkYuAmCdrJy0CMSSubJftlwoQD2QqactFw8Cwyw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":95517},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./link":"./src/components/link.mjs","./image":"./src/components/image.mjs","./video":"./src/components/video.mjs","./config":"./src/config.mjs","./security":"./src/security/headers.mjs","./package.json":"./package.json"},"gitHead":"81812f0f9bdbaf78938b72ba81ff2803ca04f3d8","_npmUser":{"name":"thechrisjohn","email":"christian.john161@gmail.com"},"repository":{"url":"git+https://github.com/theChrisJohn/glashjs.git","type":"git"},"_npmVersion":"11.6.2","description":"glashjs — a web framework built on top of Next.js: file-based routing, SSR, API routes, JSX components with client hydration, nested layouts, streaming SSR, a best-in-class build-time asset optimizer, offline PWA layer, animated favicon, and secure-by-def","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"preact":"^10.29.2","esbuild":"^0.28.0","preact-render-to-string":"^6.7.0"},"peerDependencies":{"sharp":"^0.34.5","preact":"^10.25.0","esbuild":">=0.20.0","preact-render-to-string":"^6.5.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"preact":{"optional":true},"esbuild":{"optional":true},"preact-render-to-string":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/glashjs_0.9.0_1780622726195_0.39019659237158955","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"glashjs","version":"0.10.0","keywords":["glash","glashdb","framework","offline","pwa","asset-optimization","avif","brotli","security","routing","ssr","api","server","web-framework"],"license":"MIT","_id":"glashjs@0.10.0","maintainers":[{"name":"thechrisjohn","email":"christian.john161@gmail.com"}],"homepage":"https://github.com/theChrisJohn/glashjs#readme","bugs":{"url":"https://github.com/theChrisJohn/glashjs/issues"},"bin":{"glash":"bin/glash.mjs"},"dist":{"shasum":"ad1b099687ddf719c3593a503852686597592dde","tarball":"https://registry.npmjs.org/glashjs/-/glashjs-0.10.0.tgz","fileCount":22,"integrity":"sha512-UP1wuwG9WPOzwhtwk/LepgR/lhHND0CSDHedAu2JwEkArfPAywoCjPOwV4ISAYyJLKDTxZ8huWpSRjtheyhnkQ==","signatures":[{"sig":"MEYCIQDoKxCWyyLqSpgVdANVoy6gqYJ6arfqZUOqUMAQZ7w62AIhAKgxZtI0wlHHgxPlKXBFKuJoBO3lRQM6CAzTgU+g1abo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":97586},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./link":"./src/components/link.mjs","./image":"./src/components/image.mjs","./video":"./src/components/video.mjs","./config":"./src/config.mjs","./security":"./src/security/headers.mjs","./package.json":"./package.json"},"gitHead":"e0add153c0c12ebaa8a58f829e933ab031821b1a","_npmUser":{"name":"thechrisjohn","email":"christian.john161@gmail.com"},"repository":{"url":"git+https://github.com/theChrisJohn/glashjs.git","type":"git"},"_npmVersion":"11.6.2","description":"glashjs — a web framework built on top of Next.js: file-based routing, SSR, API routes, JSX components with client hydration, nested layouts, streaming SSR, a best-in-class build-time asset optimizer, offline PWA layer, animated favicon, and secure-by-def","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"preact":"^10.29.2","esbuild":"^0.28.0","preact-render-to-string":"^6.7.0"},"peerDependencies":{"sharp":"^0.34.5","preact":"^10.25.0","esbuild":">=0.20.0","preact-render-to-string":"^6.5.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"preact":{"optional":true},"esbuild":{"optional":true},"preact-render-to-string":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/glashjs_0.10.0_1780623318794_0.9332758081988604","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"glashjs","version":"0.11.0","keywords":["glash","glashdb","framework","offline","pwa","asset-optimization","avif","brotli","security","routing","ssr","api","server","web-framework"],"license":"MIT","_id":"glashjs@0.11.0","maintainers":[{"name":"thechrisjohn","email":"christian.john161@gmail.com"}],"homepage":"https://github.com/theChrisJohn/glashjs#readme","bugs":{"url":"https://github.com/theChrisJohn/glashjs/issues"},"bin":{"glash":"bin/glash.mjs"},"dist":{"shasum":"ea494385b43f25031f96102762b27ad395714be6","tarball":"https://registry.npmjs.org/glashjs/-/glashjs-0.11.0.tgz","fileCount":23,"integrity":"sha512-LjxopQmWk9VMW3+HEgzIkgCB33MOUGJciLJTxjkcfJl+pAf3P+Z8CqM5EBtMFY2aPWjsNHZmuI1ZXvmM7WkDFw==","signatures":[{"sig":"MEUCIALr1095hhxG5uHSOT2DHHRBoNftGdYek8C5E8T+M4RJAiEAjKVXNwxdrcZlKzD7Tu4D6GFO8XvO9CPwk4MJZxNY7Qc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":100555},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./link":"./src/components/link.mjs","./image":"./src/components/image.mjs","./video":"./src/components/video.mjs","./config":"./src/config.mjs","./security":"./src/security/headers.mjs","./package.json":"./package.json"},"gitHead":"eaf6740efc069e595b3e2b7c3fc78ee907de2311","_npmUser":{"name":"thechrisjohn","email":"christian.john161@gmail.com"},"repository":{"url":"git+https://github.com/theChrisJohn/glashjs.git","type":"git"},"_npmVersion":"11.6.2","description":"glashjs — a web framework built on top of Next.js: file-based routing, SSR, API routes, JSX components with client hydration, nested layouts, streaming SSR, a best-in-class build-time asset optimizer, offline PWA layer, animated favicon, and secure-by-def","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"preact":"^10.29.2","esbuild":"^0.28.0","preact-render-to-string":"^6.7.0"},"peerDependencies":{"sharp":"^0.34.5","preact":"^10.25.0","esbuild":">=0.20.0","preact-render-to-string":"^6.5.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"preact":{"optional":true},"esbuild":{"optional":true},"preact-render-to-string":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/glashjs_0.11.0_1780623839541_0.9026887055841644","host":"s3://npm-registry-packages-npm-production"}},"0.11.1":{"name":"glashjs","version":"0.11.1","keywords":["glash","glashdb","framework","offline","pwa","asset-optimization","avif","brotli","security","routing","ssr","api","server","web-framework"],"license":"MIT","_id":"glashjs@0.11.1","maintainers":[{"name":"thechrisjohn","email":"christian.john161@gmail.com"}],"homepage":"https://github.com/theChrisJohn/glashjs#readme","bugs":{"url":"https://github.com/theChrisJohn/glashjs/issues"},"bin":{"glash":"bin/glash.mjs","glashjs":"bin/glash.mjs"},"dist":{"shasum":"f70ee3c86c6b0c7b110b3501926460cadac13237","tarball":"https://registry.npmjs.org/glashjs/-/glashjs-0.11.1.tgz","fileCount":23,"integrity":"sha512-eAfKX0i3uDlayOP28kIMWyAF7txgCB9fMsvjfZIvcWi+Y9xzPmjcHmT2g5LKJXsR9V7xj90n1cDPMEzRxWoImw==","signatures":[{"sig":"MEUCIBRRJWcTaDm12oEB2psZaSCauMCFdzVXJ0f9MCGMHojgAiEA0g0tCyUZ9cl3bO//Z6lzBZ51OtQviybmeqRt37hYGgg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":101008},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./link":"./src/components/link.mjs","./image":"./src/components/image.mjs","./video":"./src/components/video.mjs","./config":"./src/config.mjs","./security":"./src/security/headers.mjs","./package.json":"./package.json"},"gitHead":"9239ea62da96231120e831609fa313d52ee875bc","_npmUser":{"name":"thechrisjohn","email":"christian.john161@gmail.com"},"repository":{"url":"git+https://github.com/theChrisJohn/glashjs.git","type":"git"},"_npmVersion":"11.6.2","description":"glashjs — a web framework built on top of Next.js: file-based routing, SSR, API routes, JSX components with client hydration, nested layouts, streaming SSR, a best-in-class build-time asset optimizer, offline PWA layer, animated favicon, and secure-by-def","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"preact":"^10.29.2","esbuild":"^0.28.0","preact-render-to-string":"^6.7.0"},"peerDependencies":{"sharp":"^0.34.5","preact":"^10.25.0","esbuild":">=0.20.0","preact-render-to-string":"^6.5.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"preact":{"optional":true},"esbuild":{"optional":true},"preact-render-to-string":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/glashjs_0.11.1_1780625670212_0.8178270127115785","host":"s3://npm-registry-packages-npm-production"}},"0.11.2":{"name":"glashjs","version":"0.11.2","keywords":["glash","glashdb","framework","offline","pwa","asset-optimization","avif","brotli","security","routing","ssr","api","server","web-framework"],"license":"MIT","_id":"glashjs@0.11.2","maintainers":[{"name":"thechrisjohn","email":"christian.john161@gmail.com"}],"homepage":"https://github.com/theChrisJohn/glashjs#readme","bugs":{"url":"https://github.com/theChrisJohn/glashjs/issues"},"bin":{"glash":"bin/glash.mjs","glashjs":"bin/glash.mjs"},"dist":{"shasum":"7be49d04373f6a37a7f56ae2951cd69a82ebaca1","tarball":"https://registry.npmjs.org/glashjs/-/glashjs-0.11.2.tgz","fileCount":23,"integrity":"sha512-6dQ074pmRLRPX6gGMpEBfOs/MKdlja9phvFg8qmF3m8X2UH2Lmiun1fV4TfKSI/5NCrIDZi6N+M3MbYE1YB/yg==","signatures":[{"sig":"MEUCIEZnnIOELMpNgFk3c54OR89Pz/3eVbRIsiImOlQuzPxRAiEAnK9grpxgmPS+kmV3kFY9uhiadGcHSt6FuLopFOAWnHA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":101150},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./link":"./src/components/link.mjs","./image":"./src/components/image.mjs","./video":"./src/components/video.mjs","./config":"./src/config.mjs","./security":"./src/security/headers.mjs","./package.json":"./package.json"},"gitHead":"977c63eee1d8b5292974b3691aa1d523b3d82bcc","_npmUser":{"name":"thechrisjohn","email":"christian.john161@gmail.com"},"repository":{"url":"git+https://github.com/theChrisJohn/glashjs.git","type":"git"},"_npmVersion":"11.6.2","description":"glashjs — a web framework built on top of Next.js: file-based routing, SSR, API routes, JSX components with client hydration, nested layouts, streaming SSR, a best-in-class build-time asset optimizer, offline PWA layer, animated favicon, and secure-by-def","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"preact":"^10.29.2","esbuild":"^0.28.0","preact-render-to-string":"^6.7.0"},"peerDependencies":{"sharp":"^0.34.5","preact":"^10.25.0","esbuild":">=0.20.0","preact-render-to-string":"^6.5.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"preact":{"optional":true},"esbuild":{"optional":true},"preact-render-to-string":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/glashjs_0.11.2_1780626028450_0.39374908734139935","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"glashjs","version":"0.12.0","keywords":["glash","glashdb","framework","offline","pwa","asset-optimization","avif","brotli","security","routing","ssr","api","server","web-framework"],"license":"MIT","_id":"glashjs@0.12.0","maintainers":[{"name":"thechrisjohn","email":"christian.john161@gmail.com"}],"homepage":"https://github.com/theChrisJohn/glashjs#readme","bugs":{"url":"https://github.com/theChrisJohn/glashjs/issues"},"bin":{"glash":"bin/glash.mjs","glashjs":"bin/glash.mjs"},"dist":{"shasum":"b5990093e28c7c943cdc59fc3b726f437df5ca7d","tarball":"https://registry.npmjs.org/glashjs/-/glashjs-0.12.0.tgz","fileCount":24,"integrity":"sha512-SJHdqFGm9th7c2bxN7VMUqstW2QYfPRW2i8bJ1M7eqWctw9IvAU2EdUnVPpp7V1TcrXWKtecUWHUZ7+By2YKsg==","signatures":[{"sig":"MEUCIQDubqLVt9OHtswUZIco9IVRWEIhsBwOkCUd7p14CIgBQwIgTTyuJrRjHo0E3so9zPAqbPF5YTew+XQ4d7VkIa2umZM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113298},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./link":"./src/components/link.mjs","./image":"./src/components/image.mjs","./video":"./src/components/video.mjs","./config":"./src/config.mjs","./security":"./src/security/headers.mjs","./package.json":"./package.json"},"gitHead":"d7dea6f069c7230974840fe42b8120ea4c3dd179","_npmUser":{"name":"thechrisjohn","email":"christian.john161@gmail.com"},"repository":{"url":"git+https://github.com/theChrisJohn/glashjs.git","type":"git"},"_npmVersion":"11.6.2","description":"glashjs — a web framework built on top of Next.js: file-based routing, SSR, API routes, JSX components with client hydration, nested layouts, streaming SSR, a best-in-class build-time asset optimizer, offline PWA layer, animated favicon, and secure-by-def","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"preact":"^10.29.2","esbuild":"^0.28.0","preact-render-to-string":"^6.7.0"},"peerDependencies":{"sharp":"^0.34.5","preact":"^10.25.0","esbuild":">=0.20.0","preact-render-to-string":"^6.5.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"preact":{"optional":true},"esbuild":{"optional":true},"preact-render-to-string":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/glashjs_0.12.0_1780627296971_0.4463458030102374","host":"s3://npm-registry-packages-npm-production"}},"0.12.1":{"name":"glashjs","version":"0.12.1","keywords":["glash","glashdb","framework","offline","pwa","asset-optimization","avif","brotli","security","routing","ssr","api","server","web-framework"],"license":"MIT","_id":"glashjs@0.12.1","maintainers":[{"name":"thechrisjohn","email":"christian.john161@gmail.com"}],"homepage":"https://github.com/theChrisJohn/glashjs#readme","bugs":{"url":"https://github.com/theChrisJohn/glashjs/issues"},"bin":{"glash":"bin/glash.mjs","glashjs":"bin/glash.mjs"},"dist":{"shasum":"ef1123059e4a835c5d71e4c13e8f2a79506e750d","tarball":"https://registry.npmjs.org/glashjs/-/glashjs-0.12.1.tgz","fileCount":24,"integrity":"sha512-CjFF1u+tR6+TOKs2pyh41TaiDG+8gTxLzUhDdibON5yrQm4XMGmJWXNyLhNw100MxMB2Lrdw6vpbv1OxnA4bgw==","signatures":[{"sig":"MEYCIQCP9d0q6Ze8jaECRj719rBQgwS1SWl1V0wd0ZSyDv9mNQIhAKjOaO6c3ueBpZcqQv6e1xPA+OqOE9ZDAQuYIeSBh0Po","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113745},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./link":"./src/components/link.mjs","./image":"./src/components/image.mjs","./video":"./src/components/video.mjs","./config":"./src/config.mjs","./security":"./src/security/headers.mjs","./package.json":"./package.json"},"gitHead":"751c654e962d831f9edb13eeec6cfd1a7e31b535","_npmUser":{"name":"thechrisjohn","email":"christian.john161@gmail.com"},"repository":{"url":"git+https://github.com/theChrisJohn/glashjs.git","type":"git"},"_npmVersion":"11.6.2","description":"glashjs — a web framework built on top of Next.js: file-based routing, SSR, API routes, JSX components with client hydration, nested layouts, streaming SSR, a best-in-class build-time asset optimizer, offline PWA layer, animated favicon, and secure-by-def","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"preact":"^10.29.2","esbuild":"^0.28.0","preact-render-to-string":"^6.7.0"},"peerDependencies":{"sharp":"^0.34.5","preact":"^10.25.0","esbuild":">=0.20.0","preact-render-to-string":"^6.5.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"preact":{"optional":true},"esbuild":{"optional":true},"preact-render-to-string":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/glashjs_0.12.1_1780627708919_0.9972584525793313","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"glashjs","version":"0.13.0","keywords":["glash","glashdb","framework","offline","pwa","asset-optimization","avif","brotli","security","routing","ssr","api","server","web-framework"],"license":"MIT","_id":"glashjs@0.13.0","maintainers":[{"name":"thechrisjohn","email":"christian.john161@gmail.com"}],"homepage":"https://github.com/theChrisJohn/glashjs#readme","bugs":{"url":"https://github.com/theChrisJohn/glashjs/issues"},"bin":{"glash":"bin/glash.mjs","glashjs":"bin/glash.mjs"},"dist":{"shasum":"93426264d51715c209264fa79e9a24aed1352c16","tarball":"https://registry.npmjs.org/glashjs/-/glashjs-0.13.0.tgz","fileCount":32,"integrity":"sha512-5i4lWc4SAE1RhKG814sad4Lqf8U8oWkr+wTQUlW0rUZ7la5InAzsA85qUVFJgYaSd/ki7MsbSTBXt/0R++c13A==","signatures":[{"sig":"MEYCIQCWjc9HggYsi4aGcPnkGC8K07q/oVK8TucNFROT2hSgOAIhAOwqB3rPpuE6E5F4h9w3fAJ0XJ5Ea53ZLH8yF4GhP4YB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":145118},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./env":"./src/env.mjs","./sql":"./src/sql-runner.mjs","./auth":"./src/auth.mjs","./link":"./src/components/link.mjs","./image":"./src/components/image.mjs","./video":"./src/components/video.mjs","./config":"./src/config.mjs","./routes":"./src/routes.mjs","./postgres":"./src/postgres.mjs","./security":"./src/security/headers.mjs","./package.json":"./package.json","./typed-routes":"./src/typed-routes.mjs","./server-functions":"./src/server-functions.mjs"},"gitHead":"751c654e962d831f9edb13eeec6cfd1a7e31b535","_npmUser":{"name":"thechrisjohn","email":"christian.john161@gmail.com"},"repository":{"url":"git+https://github.com/theChrisJohn/glashjs.git","type":"git"},"_npmVersion":"11.6.2","description":"glashjs — The Postgres-native full-stack framework for builders who want to ship without DevOps. Framework, hosting, database, auth, and deploy in one GlashDB-native runtime.","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"preact":"^10.29.2","esbuild":"^0.28.0","preact-render-to-string":"^6.7.0"},"peerDependencies":{"pg":"^8.16.0","sharp":"^0.34.5","preact":"^10.25.0","esbuild":">=0.20.0","preact-render-to-string":"^6.5.0"},"peerDependenciesMeta":{"pg":{"optional":true},"sharp":{"optional":true},"preact":{"optional":true},"esbuild":{"optional":true},"preact-render-to-string":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/glashjs_0.13.0_1780630604993_0.39065054231198015","host":"s3://npm-registry-packages-npm-production"}},"0.13.1":{"name":"glashjs","version":"0.13.1","keywords":["glash","glashdb","framework","offline","pwa","asset-optimization","avif","brotli","security","routing","ssr","api","server","web-framework"],"license":"MIT","_id":"glashjs@0.13.1","maintainers":[{"name":"thechrisjohn","email":"christian.john161@gmail.com"}],"homepage":"https://github.com/theChrisJohn/glashjs#readme","bugs":{"url":"https://github.com/theChrisJohn/glashjs/issues"},"bin":{"glash":"bin/glash.mjs","glashjs":"bin/glash.mjs"},"dist":{"shasum":"802054b72ac3dbc69a52e5ee45cfd2a364a12e34","tarball":"https://registry.npmjs.org/glashjs/-/glashjs-0.13.1.tgz","fileCount":32,"integrity":"sha512-XJG/By2fq/ihm7QTjjE0FcNX32GNRp8oHrPINM5/kphNqrRtbZ0IljT81dzunOj7jVZxH6e3Tytd8QBWZfyMlA==","signatures":[{"sig":"MEYCIQDCw4TLiCa8qELc3Cl5dNOxemZABGw4ShFRDXRwyQoT4QIhAKIlpw8et15Hh+F2AgQpR44rN1cKIRpTgMHwQRUyLQYX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":146076},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./env":"./src/env.mjs","./sql":"./src/sql-runner.mjs","./auth":"./src/auth.mjs","./link":"./src/components/link.mjs","./image":"./src/components/image.mjs","./video":"./src/components/video.mjs","./config":"./src/config.mjs","./routes":"./src/routes.mjs","./postgres":"./src/postgres.mjs","./security":"./src/security/headers.mjs","./package.json":"./package.json","./typed-routes":"./src/typed-routes.mjs","./server-functions":"./src/server-functions.mjs"},"gitHead":"751c654e962d831f9edb13eeec6cfd1a7e31b535","_npmUser":{"name":"thechrisjohn","email":"christian.john161@gmail.com"},"repository":{"url":"git+https://github.com/theChrisJohn/glashjs.git","type":"git"},"_npmVersion":"11.6.2","description":"glashjs — The Postgres-native full-stack framework for builders who want to ship without DevOps. Framework, hosting, database, auth, and deploy in one GlashDB-native runtime.","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"preact":"^10.29.2","esbuild":"^0.28.0","preact-render-to-string":"^6.7.0"},"peerDependencies":{"pg":"^8.16.0","sharp":"^0.34.5","preact":"^10.25.0","esbuild":">=0.20.0","preact-render-to-string":"^6.5.0"},"peerDependenciesMeta":{"pg":{"optional":true},"sharp":{"optional":true},"preact":{"optional":true},"esbuild":{"optional":true},"preact-render-to-string":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/glashjs_0.13.1_1780633076788_0.7250304817030699","host":"s3://npm-registry-packages-npm-production"}},"0.13.2":{"name":"glashjs","version":"0.13.2","keywords":["glash","glashdb","framework","offline","pwa","asset-optimization","avif","brotli","security","routing","ssr","api","server","web-framework"],"license":"MIT","_id":"glashjs@0.13.2","maintainers":[{"name":"thechrisjohn","email":"christian.john161@gmail.com"}],"homepage":"https://github.com/theChrisJohn/glashjs#readme","bugs":{"url":"https://github.com/theChrisJohn/glashjs/issues"},"bin":{"glash":"bin/glash.mjs","glashjs":"bin/glash.mjs"},"dist":{"shasum":"c17f92c545a0874ad9a019f773aaf876972ce78a","tarball":"https://registry.npmjs.org/glashjs/-/glashjs-0.13.2.tgz","fileCount":32,"integrity":"sha512-VDH+Flm2xWNHHXpLQ3E8evvdvrHaUGDkB92P6cBsbc5u6b5BeB+CjavJ0ljQTLQZqaMepOQMtO3mhIRiwHzvHQ==","signatures":[{"sig":"MEYCIQDXSpIFZvjzgoMrTTm67N6uueuLzRla4IWK5gqRgRDVMAIhANeuXYSnfU2Nvp4NktKBvxvJLaDoEVb06/KuELvq+MGZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":146265},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./env":"./src/env.mjs","./sql":"./src/sql-runner.mjs","./auth":"./src/auth.mjs","./link":"./src/components/link.mjs","./image":"./src/components/image.mjs","./video":"./src/components/video.mjs","./config":"./src/config.mjs","./routes":"./src/routes.mjs","./postgres":"./src/postgres.mjs","./security":"./src/security/headers.mjs","./package.json":"./package.json","./typed-routes":"./src/typed-routes.mjs","./server-functions":"./src/server-functions.mjs"},"gitHead":"751c654e962d831f9edb13eeec6cfd1a7e31b535","_npmUser":{"name":"thechrisjohn","email":"christian.john161@gmail.com"},"repository":{"url":"git+https://github.com/theChrisJohn/glashjs.git","type":"git"},"_npmVersion":"11.6.2","description":"glashjs — The Postgres-native full-stack framework for builders who want to ship without DevOps. Framework, hosting, database, auth, and deploy in one GlashDB-native runtime.","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"preact":"^10.29.2","esbuild":"^0.28.0","preact-render-to-string":"^6.7.0"},"peerDependencies":{"pg":"^8.16.0","sharp":"^0.34.5","preact":"^10.25.0","esbuild":">=0.20.0","preact-render-to-string":"^6.5.0"},"peerDependenciesMeta":{"pg":{"optional":true},"sharp":{"optional":true},"preact":{"optional":true},"esbuild":{"optional":true},"preact-render-to-string":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/glashjs_0.13.2_1780634285609_0.23600164160107617","host":"s3://npm-registry-packages-npm-production"}},"0.13.3":{"name":"glashjs","version":"0.13.3","keywords":["glash","glashdb","framework","offline","pwa","asset-optimization","avif","brotli","security","routing","ssr","api","server","web-framework"],"license":"MIT","_id":"glashjs@0.13.3","maintainers":[{"name":"thechrisjohn","email":"christian.john161@gmail.com"}],"homepage":"https://github.com/theChrisJohn/glashjs#readme","bugs":{"url":"https://github.com/theChrisJohn/glashjs/issues"},"bin":{"glash":"bin/glash.mjs","glashjs":"bin/glash.mjs"},"dist":{"shasum":"57fdd9766cf1a53359b22634b6f5e0fbf7481e5c","tarball":"https://registry.npmjs.org/glashjs/-/glashjs-0.13.3.tgz","fileCount":35,"integrity":"sha512-YFIvf5SNs7xwPm7NI8iC5kcO49BeN1remOf2d6Weu7Akoxu9zKx4qK9frYL/zYW6xcO0wAnVyHACckiIYyqSHg==","signatures":[{"sig":"MEUCIBX4PrCX0iDf0EMhdm375XyB41UAgeaCnIhGKY/RpCHsAiEA95eYRSZMfNu7Dz18E2NoFE8BaLQ6au+eLpMxVCnfCqA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":149428},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./env":"./src/env.mjs","./sql":"./src/sql-runner.mjs","./auth":"./src/auth.mjs","./link":"./src/components/link.mjs","./image":"./src/components/image.mjs","./video":"./src/components/video.mjs","./config":"./src/config.mjs","./routes":"./src/routes.mjs","./postgres":"./src/postgres.mjs","./security":"./src/security/headers.mjs","./package.json":"./package.json","./typed-routes":"./src/typed-routes.mjs","./server-functions":"./src/server-functions.mjs"},"gitHead":"751c654e962d831f9edb13eeec6cfd1a7e31b535","_npmUser":{"name":"thechrisjohn","email":"christian.john161@gmail.com"},"repository":{"url":"git+https://github.com/theChrisJohn/glashjs.git","type":"git"},"_npmVersion":"11.6.2","description":"glashjs — The Postgres-native full-stack framework for builders who want to ship without DevOps. Framework, hosting, database, auth, and deploy in one GlashDB-native runtime.","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"preact":"^10.29.2","esbuild":"^0.28.0","preact-render-to-string":"^6.7.0"},"peerDependencies":{"pg":"^8.16.0","sharp":"^0.34.5","preact":"^10.25.0","esbuild":">=0.20.0","preact-render-to-string":"^6.5.0"},"peerDependenciesMeta":{"pg":{"optional":true},"sharp":{"optional":true},"preact":{"optional":true},"esbuild":{"optional":true},"preact-render-to-string":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/glashjs_0.13.3_1780634503726_0.8536604547235629","host":"s3://npm-registry-packages-npm-production"}},"0.13.4":{"name":"glashjs","version":"0.13.4","keywords":["glash","glashdb","framework","offline","pwa","asset-optimization","avif","brotli","security","routing","ssr","api","server","web-framework"],"license":"MIT","_id":"glashjs@0.13.4","maintainers":[{"name":"thechrisjohn","email":"christian.john161@gmail.com"}],"homepage":"https://github.com/theChrisJohn/glashjs#readme","bugs":{"url":"https://github.com/theChrisJohn/glashjs/issues"},"bin":{"glash":"bin/glash.mjs","glashjs":"bin/glash.mjs"},"dist":{"shasum":"62f008162e29e906296887311bdd5a430f0ccd49","tarball":"https://registry.npmjs.org/glashjs/-/glashjs-0.13.4.tgz","fileCount":35,"integrity":"sha512-ykX4Z6yFxJBeX0A/r0kSdPIrt3KSxr4PhdXMDqzUf8iSEVgOdan3LE6JbgHn2mDjenHzmphtdzelYhCdqWc9gQ==","signatures":[{"sig":"MEUCIG4+fTsWhyIjmKxzzX10fvxRcysTZ94IYOjainToYYABAiEAoOlgAgwdWAfxWiVR7kmqf4XJb61TvJo2YLLC113BhGI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":150486},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./env":"./src/env.mjs","./sql":"./src/sql-runner.mjs","./auth":"./src/auth.mjs","./link":"./src/components/link.mjs","./image":"./src/components/image.mjs","./video":"./src/components/video.mjs","./config":"./src/config.mjs","./routes":"./src/routes.mjs","./postgres":"./src/postgres.mjs","./security":"./src/security/headers.mjs","./package.json":"./package.json","./typed-routes":"./src/typed-routes.mjs","./server-functions":"./src/server-functions.mjs"},"gitHead":"751c654e962d831f9edb13eeec6cfd1a7e31b535","_npmUser":{"name":"thechrisjohn","email":"christian.john161@gmail.com"},"repository":{"url":"git+https://github.com/theChrisJohn/glashjs.git","type":"git"},"_npmVersion":"11.6.2","description":"glashjs — The Postgres-native full-stack framework for builders who want to ship without DevOps. Framework, hosting, database, auth, and deploy in one GlashDB-native runtime.","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"preact":"^10.29.2","esbuild":"^0.28.0","preact-render-to-string":"^6.7.0"},"peerDependencies":{"pg":"^8.16.0","sharp":"^0.34.5","preact":"^10.25.0","esbuild":">=0.20.0","preact-render-to-string":"^6.5.0"},"peerDependenciesMeta":{"pg":{"optional":true},"sharp":{"optional":true},"preact":{"optional":true},"esbuild":{"optional":true},"preact-render-to-string":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/glashjs_0.13.4_1780637179263_0.554852193955196","host":"s3://npm-registry-packages-npm-production"}},"0.13.5":{"name":"glashjs","version":"0.13.5","keywords":["glash","glashdb","framework","offline","pwa","asset-optimization","avif","brotli","security","routing","ssr","api","server","web-framework"],"license":"MIT","_id":"glashjs@0.13.5","maintainers":[{"name":"thechrisjohn","email":"christian.john161@gmail.com"}],"homepage":"https://github.com/theChrisJohn/glashjs#readme","bugs":{"url":"https://github.com/theChrisJohn/glashjs/issues"},"bin":{"glash":"bin/glash.mjs","glashjs":"bin/glash.mjs"},"dist":{"shasum":"e3753879f177836ba785d0417eed9821ad7fa682","tarball":"https://registry.npmjs.org/glashjs/-/glashjs-0.13.5.tgz","fileCount":35,"integrity":"sha512-N3p6KYUtosdaQjNPBFhgdQqzF6UN8+lQStdkpw1mzU66nfQ3GrdIkqg5SD9ZngIlN7maoMrlx/IKgO8Gmh6vSw==","signatures":[{"sig":"MEYCIQCpBY+h0QZNKRp6JEuv7iyjz645k+atVJUbUDZA6LeX1gIhANCMA/YzxBJdIDybGhEfIiXCIwGEaWPMPjYu2TP3xsJZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":151109},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./env":"./src/env.mjs","./sql":"./src/sql-runner.mjs","./auth":"./src/auth.mjs","./link":"./src/components/link.mjs","./image":"./src/components/image.mjs","./video":"./src/components/video.mjs","./config":"./src/config.mjs","./routes":"./src/routes.mjs","./postgres":"./src/postgres.mjs","./security":"./src/security/headers.mjs","./package.json":"./package.json","./typed-routes":"./src/typed-routes.mjs","./server-functions":"./src/server-functions.mjs"},"gitHead":"751c654e962d831f9edb13eeec6cfd1a7e31b535","_npmUser":{"name":"thechrisjohn","email":"christian.john161@gmail.com"},"repository":{"url":"git+https://github.com/theChrisJohn/glashjs.git","type":"git"},"_npmVersion":"11.6.2","description":"glashjs — The Postgres-native full-stack framework for builders who want to ship without DevOps. Framework, hosting, database, auth, and deploy in one GlashDB-native runtime.","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"preact":"^10.29.2","esbuild":"^0.28.0","preact-render-to-string":"^6.7.0"},"peerDependencies":{"pg":"^8.16.0","sharp":"^0.34.5","preact":"^10.25.0","esbuild":">=0.20.0","preact-render-to-string":"^6.5.0"},"peerDependenciesMeta":{"pg":{"optional":true},"sharp":{"optional":true},"preact":{"optional":true},"esbuild":{"optional":true},"preact-render-to-string":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/glashjs_0.13.5_1780637744692_0.4860521669682667","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"glashjs","version":"0.14.0","keywords":["glash","glashdb","framework","offline","pwa","asset-optimization","avif","brotli","security","routing","ssr","api","server","web-framework"],"license":"MIT","_id":"glashjs@0.14.0","maintainers":[{"name":"thechrisjohn","email":"christian.john161@gmail.com"}],"homepage":"https://github.com/theChrisJohn/glashjs#readme","bugs":{"url":"https://github.com/theChrisJohn/glashjs/issues"},"bin":{"glash":"bin/glash.mjs","glashjs":"bin/glash.mjs"},"dist":{"shasum":"745150fec2f4dade49bbd56d9ecfbc1c2983bd02","tarball":"https://registry.npmjs.org/glashjs/-/glashjs-0.14.0.tgz","fileCount":36,"integrity":"sha512-SmTbKGeKxsnk497gEpgFNDH4+r4RnTqrNJTe6pyE6n/tI37IrG4ZXXYptUAkFu7s0ZPqh1z6wTsSBT2VN3kk4g==","signatures":[{"sig":"MEUCIAIfKVghjDTkN73FbpD+Yrpgdi5SsdiMhxFkxrTkCtwoAiEAsqAMl5ZKf878bp+7NXa9X8kHY1fTF1FD/JBgudow/YQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":163020},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./env":"./src/env.mjs","./sql":"./src/sql-runner.mjs","./auth":"./src/auth.mjs","./i18n":"./src/i18n.mjs","./link":"./src/components/link.mjs","./image":"./src/components/image.mjs","./video":"./src/components/video.mjs","./config":"./src/config.mjs","./routes":"./src/routes.mjs","./postgres":"./src/postgres.mjs","./security":"./src/security/headers.mjs","./package.json":"./package.json","./typed-routes":"./src/typed-routes.mjs","./server-functions":"./src/server-functions.mjs"},"gitHead":"751c654e962d831f9edb13eeec6cfd1a7e31b535","_npmUser":{"name":"thechrisjohn","email":"christian.john161@gmail.com"},"repository":{"url":"git+https://github.com/theChrisJohn/glashjs.git","type":"git"},"_npmVersion":"11.6.2","description":"glashjs — The Postgres-native full-stack framework for builders who want to ship without DevOps. Framework, hosting, database, auth, and deploy in one GlashDB-native runtime.","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"preact":"^10.29.2","esbuild":"^0.28.0","preact-render-to-string":"^6.7.0"},"peerDependencies":{"pg":"^8.16.0","sharp":"^0.34.5","preact":"^10.25.0","esbuild":">=0.20.0","preact-render-to-string":"^6.5.0"},"peerDependenciesMeta":{"pg":{"optional":true},"sharp":{"optional":true},"preact":{"optional":true},"esbuild":{"optional":true},"preact-render-to-string":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/glashjs_0.14.0_1780638144744_0.3564437484019438","host":"s3://npm-registry-packages-npm-production"}},"0.14.1":{"name":"glashjs","version":"0.14.1","keywords":["glash","glashdb","framework","offline","pwa","asset-optimization","avif","brotli","security","routing","ssr","api","server","web-framework"],"license":"MIT","_id":"glashjs@0.14.1","maintainers":[{"name":"thechrisjohn","email":"christian.john161@gmail.com"}],"homepage":"https://github.com/theChrisJohn/glashjs#readme","bugs":{"url":"https://github.com/theChrisJohn/glashjs/issues"},"bin":{"glash":"bin/glash.mjs","glashjs":"bin/glash.mjs"},"dist":{"shasum":"ae79a0000a69524421ffe91b7aa88e88a82efd26","tarball":"https://registry.npmjs.org/glashjs/-/glashjs-0.14.1.tgz","fileCount":37,"integrity":"sha512-2OEd83AjiLGjNN3YJUrpRm+dAxAZfv6o1aK4WgaZmgv/IVEmjBQRQYtGPPBthLWOcPUHH175MPHvXXfwW22p4Q==","signatures":[{"sig":"MEUCIBJu5RL6RCVu3ryOnc6+8Zv5sGdSBKYswL+tM5n/vft9AiEAnjAHS31vuLDMEI3IgyVKeKOeO7+1z+Ub1FK0m+mJ4ag=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":169358},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./env":"./src/env.mjs","./sql":"./src/sql-runner.mjs","./auth":"./src/auth.mjs","./i18n":"./src/i18n.mjs","./link":"./src/components/link.mjs","./image":"./src/components/image.mjs","./video":"./src/components/video.mjs","./config":"./src/config.mjs","./routes":"./src/routes.mjs","./postgres":"./src/postgres.mjs","./security":"./src/security/headers.mjs","./package.json":"./package.json","./typed-routes":"./src/typed-routes.mjs","./server-functions":"./src/server-functions.mjs"},"gitHead":"751c654e962d831f9edb13eeec6cfd1a7e31b535","_npmUser":{"name":"thechrisjohn","email":"christian.john161@gmail.com"},"repository":{"url":"git+https://github.com/theChrisJohn/glashjs.git","type":"git"},"_npmVersion":"11.6.2","description":"glashjs — The Postgres-native full-stack framework for builders who want to ship without DevOps. Framework, hosting, database, auth, and deploy in one GlashDB-native runtime.","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"preact":"^10.29.2","esbuild":"^0.28.0","preact-render-to-string":"^6.7.0"},"peerDependencies":{"pg":"^8.16.0","sharp":"^0.34.5","preact":"^10.25.0","esbuild":">=0.20.0","preact-render-to-string":"^6.5.0"},"peerDependenciesMeta":{"pg":{"optional":true},"sharp":{"optional":true},"preact":{"optional":true},"esbuild":{"optional":true},"preact-render-to-string":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/glashjs_0.14.1_1780654036427_0.14563058166430287","host":"s3://npm-registry-packages-npm-production"}},"0.14.2":{"name":"glashjs","version":"0.14.2","keywords":["glash","glashdb","framework","offline","pwa","asset-optimization","avif","brotli","security","routing","ssr","api","server","web-framework"],"license":"MIT","_id":"glashjs@0.14.2","maintainers":[{"name":"thechrisjohn","email":"christian.john161@gmail.com"}],"homepage":"https://github.com/theChrisJohn/glashjs#readme","bugs":{"url":"https://github.com/theChrisJohn/glashjs/issues"},"bin":{"glash":"bin/glash.mjs","glashjs":"bin/glash.mjs"},"dist":{"shasum":"81c543699476348c546fafaa1de9a05be828ccfd","tarball":"https://registry.npmjs.org/glashjs/-/glashjs-0.14.2.tgz","fileCount":37,"integrity":"sha512-+J9xEKsbE4SwlVVbhCKLq9+c5SWVlJJ/qcoKCznXDkDN/NF8fd0mKRpFwHNxGtErVQILgYNBaCGu5Bfc0kA5zA==","signatures":[{"sig":"MEQCIBrfXFZ8tRIlpBzev/dKFEJNZs7XK0vxrrx/LEPtOP8TAiA8l/2hC55a3n8CQKyhkUeIhYl4tnaodcK6UnS4YEG07A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":171326},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./env":"./src/env.mjs","./sql":"./src/sql-runner.mjs","./auth":"./src/auth.mjs","./i18n":"./src/i18n.mjs","./link":"./src/components/link.mjs","./image":"./src/components/image.mjs","./video":"./src/components/video.mjs","./config":"./src/config.mjs","./routes":"./src/routes.mjs","./postgres":"./src/postgres.mjs","./security":"./src/security/headers.mjs","./package.json":"./package.json","./typed-routes":"./src/typed-routes.mjs","./server-functions":"./src/server-functions.mjs"},"gitHead":"751c654e962d831f9edb13eeec6cfd1a7e31b535","_npmUser":{"name":"thechrisjohn","email":"christian.john161@gmail.com"},"repository":{"url":"git+https://github.com/theChrisJohn/glashjs.git","type":"git"},"_npmVersion":"11.6.2","description":"glashjs — The Postgres-native full-stack framework for builders who want to ship without DevOps. Framework, hosting, database, auth, and deploy in one GlashDB-native runtime.","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"preact":"^10.29.2","esbuild":"^0.28.0","preact-render-to-string":"^6.7.0"},"peerDependencies":{"pg":"^8.16.0","sharp":"^0.34.5","preact":"^10.25.0","esbuild":">=0.20.0","preact-render-to-string":"^6.5.0"},"peerDependenciesMeta":{"pg":{"optional":true},"sharp":{"optional":true},"preact":{"optional":true},"esbuild":{"optional":true},"preact-render-to-string":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/glashjs_0.14.2_1780654287448_0.5524254608902621","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"glashjs","version":"0.15.0","keywords":["glash","glashdb","framework","offline","pwa","asset-optimization","avif","brotli","security","routing","ssr","api","server","web-framework"],"license":"MIT","_id":"glashjs@0.15.0","maintainers":[{"name":"thechrisjohn","email":"christian.john161@gmail.com"}],"homepage":"https://github.com/theChrisJohn/glashjs#readme","bugs":{"url":"https://github.com/theChrisJohn/glashjs/issues"},"bin":{"glash":"bin/glash.mjs","glashjs":"bin/glash.mjs"},"dist":{"shasum":"4e28f4c1f3ff6b4db82cf41d849c705047d72f96","tarball":"https://registry.npmjs.org/glashjs/-/glashjs-0.15.0.tgz","fileCount":37,"integrity":"sha512-40X/XmV98rQqM8G2oQKYQdxoFRQAjFakr8ZOJWUfvymsU08eNCjBoVcCDH8G83B2ODKqexMWeYnfyZ/SguRXUQ==","signatures":[{"sig":"MEUCIEGzUrG/y+w5OHa0WPXDyPaBv3n99dNnrhm2Y1QnPynKAiEA3Po6/rTl7w+04WuMrofZE4DcGU2WpEeKdIjlSjequ9I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":172902},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./env":"./src/env.mjs","./sql":"./src/sql-runner.mjs","./auth":"./src/auth.mjs","./i18n":"./src/i18n.mjs","./link":"./src/components/link.mjs","./image":"./src/components/image.mjs","./video":"./src/components/video.mjs","./config":"./src/config.mjs","./routes":"./src/routes.mjs","./postgres":"./src/postgres.mjs","./security":"./src/security/headers.mjs","./package.json":"./package.json","./typed-routes":"./src/typed-routes.mjs","./server-functions":"./src/server-functions.mjs"},"gitHead":"751c654e962d831f9edb13eeec6cfd1a7e31b535","_npmUser":{"name":"thechrisjohn","email":"christian.john161@gmail.com"},"repository":{"url":"git+https://github.com/theChrisJohn/glashjs.git","type":"git"},"_npmVersion":"11.6.2","description":"glashjs — The Postgres-native full-stack framework for builders who want to ship without DevOps. Framework, hosting, database, auth, and deploy in one GlashDB-native runtime.","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"preact":"^10.29.2","esbuild":"^0.28.0","preact-render-to-string":"^6.7.0"},"peerDependencies":{"pg":"^8.16.0","sharp":"^0.34.5","preact":"^10.25.0","esbuild":">=0.20.0","preact-render-to-string":"^6.5.0"},"peerDependenciesMeta":{"pg":{"optional":true},"sharp":{"optional":true},"preact":{"optional":true},"esbuild":{"optional":true},"preact-render-to-string":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/glashjs_0.15.0_1780654607904_0.2729933391571382","host":"s3://npm-registry-packages-npm-production"}},"0.15.1":{"name":"glashjs","version":"0.15.1","keywords":["glash","glashdb","framework","offline","pwa","asset-optimization","avif","brotli","security","routing","ssr","api","server","web-framework"],"license":"MIT","_id":"glashjs@0.15.1","maintainers":[{"name":"thechrisjohn","email":"christian.john161@gmail.com"}],"homepage":"https://github.com/theChrisJohn/glashjs#readme","bugs":{"url":"https://github.com/theChrisJohn/glashjs/issues"},"bin":{"glash":"bin/glash.mjs","glashjs":"bin/glash.mjs"},"dist":{"shasum":"2b44ce484c8b8f51702188d5f853960b96b6b095","tarball":"https://registry.npmjs.org/glashjs/-/glashjs-0.15.1.tgz","fileCount":37,"integrity":"sha512-NRMA1B8vkrR7jXkvOBGwrICFh3kr7vjiLvf/IKbRKToc+PfOKwfqMNRwfdd7sUhYLMTtb23f1iPI0KZGjcuAmA==","signatures":[{"sig":"MEYCIQCRf/Ql0GCbNoWrRdCIYeYiOIGv2VcVv7VftgOuoH2tHQIhAPMIpJ6/KRLTKybciVzGhbi+B13/fijY6WU/53FP9G0O","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":180712},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./env":"./src/env.mjs","./sql":"./src/sql-runner.mjs","./auth":"./src/auth.mjs","./i18n":"./src/i18n.mjs","./link":"./src/components/link.mjs","./image":"./src/components/image.mjs","./video":"./src/components/video.mjs","./config":"./src/config.mjs","./routes":"./src/routes.mjs","./postgres":"./src/postgres.mjs","./security":"./src/security/headers.mjs","./package.json":"./package.json","./typed-routes":"./src/typed-routes.mjs","./server-functions":"./src/server-functions.mjs"},"gitHead":"751c654e962d831f9edb13eeec6cfd1a7e31b535","_npmUser":{"name":"thechrisjohn","email":"christian.john161@gmail.com"},"repository":{"url":"git+https://github.com/theChrisJohn/glashjs.git","type":"git"},"_npmVersion":"11.6.2","description":"glashjs — The Postgres-native full-stack framework for builders who want to ship without DevOps. Framework, hosting, database, auth, and deploy in one GlashDB-native runtime.","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"preact":"^10.29.2","esbuild":"^0.28.0","preact-render-to-string":"^6.7.0"},"peerDependencies":{"pg":"^8.16.0","sharp":"^0.34.5","preact":"^10.25.0","esbuild":">=0.20.0","preact-render-to-string":"^6.5.0"},"peerDependenciesMeta":{"pg":{"optional":true},"sharp":{"optional":true},"preact":{"optional":true},"esbuild":{"optional":true},"preact-render-to-string":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/glashjs_0.15.1_1780655577457_0.13206969565269433","host":"s3://npm-registry-packages-npm-production"}},"0.15.2":{"name":"glashjs","version":"0.15.2","description":"glashjs — The Postgres-native full-stack framework for builders who want to ship without DevOps. Framework, hosting, database, auth, and deploy in one GlashDB-native runtime.","type":"module","bin":{"glashjs":"bin/glash.mjs","glash":"bin/glash.mjs"},"exports":{".":"./src/index.mjs","./config":"./src/config.mjs","./security":"./src/security/headers.mjs","./env":"./src/env.mjs","./db":"./src/db.mjs","./database":"./src/db.mjs","./client":"./src/client.mjs","./postgres":"./src/postgres.mjs","./auth":"./src/auth.mjs","./server-functions":"./src/server-functions.mjs","./sql":"./src/sql-runner.mjs","./typed-routes":"./src/typed-routes.mjs","./routes":"./src/routes.mjs","./image":"./src/components/image.mjs","./video":"./src/components/video.mjs","./link":"./src/components/link.mjs","./package.json":"./package.json","./i18n":"./src/i18n.mjs"},"engines":{"node":">=20"},"peerDependencies":{"esbuild":">=0.20.0","preact":"^10.25.0","preact-render-to-string":"^6.5.0","pg":"^8.16.0","sharp":"^0.34.5"},"peerDependenciesMeta":{"pg":{"optional":true},"sharp":{"optional":true},"esbuild":{"optional":true},"preact":{"optional":true},"preact-render-to-string":{"optional":true}},"keywords":["glash","glashdb","framework","offline","pwa","asset-optimization","avif","brotli","security","routing","ssr","api","server","web-framework"],"license":"MIT","devDependencies":{"esbuild":"^0.28.0","preact":"^10.29.2","preact-render-to-string":"^6.7.0"},"repository":{"type":"git","url":"git+https://github.com/theChrisJohn/glashjs.git"},"homepage":"https://github.com/theChrisJohn/glashjs#readme","bugs":{"url":"https://github.com/theChrisJohn/glashjs/issues"},"gitHead":"751c654e962d831f9edb13eeec6cfd1a7e31b535","_id":"glashjs@0.15.2","_nodeVersion":"24.13.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-LFz5RH3ADMU98ovhLwtZTtMUaY3dA8ALRQlnYOcOxSFCHdHW7lAC0XkBHyonGewRf7SAWTlp864GSA88RlxRgg==","shasum":"5ba9a24c8c53fe994dcd0e9cccca4d564518d43d","tarball":"https://registry.npmjs.org/glashjs/-/glashjs-0.15.2.tgz","fileCount":40,"unpackedSize":215233,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICQHYTSYigV7gc1C2iiDcP9KOsKrfRRRozA7jrsZRRcJAiAWuODrwbMO5ug1UXeZNICfO/3ZFAUfW322gIk7Gieu/Q=="}]},"_npmUser":{"name":"thechrisjohn","email":"christian.john161@gmail.com"},"directories":{},"maintainers":[{"name":"thechrisjohn","email":"christian.john161@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/glashjs_0.15.2_1781047909413_0.5425104937132339"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-03T18:15:05.504Z","modified":"2026-06-09T23:31:49.638Z","0.0.1":"2026-06-03T18:15:05.872Z","0.0.2":"2026-06-03T18:29:58.195Z","0.0.3":"2026-06-03T19:49:16.100Z","0.1.0":"2026-06-03T20:30:29.629Z","0.2.0":"2026-06-03T20:43:36.002Z","0.3.0":"2026-06-03T20:55:05.360Z","0.4.0":"2026-06-03T21:02:04.969Z","0.5.0":"2026-06-03T21:09:24.362Z","0.5.1":"2026-06-03T21:11:10.272Z","0.6.0":"2026-06-03T21:27:48.233Z","0.6.1":"2026-06-03T21:35:04.764Z","0.7.0":"2026-06-03T21:36:42.938Z","0.7.1":"2026-06-03T21:39:14.965Z","0.7.2":"2026-06-03T22:00:44.086Z","0.8.0":"2026-06-05T01:16:31.762Z","0.9.0":"2026-06-05T01:25:26.350Z","0.10.0":"2026-06-05T01:35:18.948Z","0.11.0":"2026-06-05T01:43:59.708Z","0.11.1":"2026-06-05T02:14:30.374Z","0.11.2":"2026-06-05T02:20:28.596Z","0.12.0":"2026-06-05T02:41:37.122Z","0.12.1":"2026-06-05T02:48:29.084Z","0.13.0":"2026-06-05T03:36:45.164Z","0.13.1":"2026-06-05T04:17:56.942Z","0.13.2":"2026-06-05T04:38:05.735Z","0.13.3":"2026-06-05T04:41:43.911Z","0.13.4":"2026-06-05T05:26:19.493Z","0.13.5":"2026-06-05T05:35:44.846Z","0.14.0":"2026-06-05T05:42:24.872Z","0.14.1":"2026-06-05T10:07:16.558Z","0.14.2":"2026-06-05T10:11:27.602Z","0.15.0":"2026-06-05T10:16:48.068Z","0.15.1":"2026-06-05T10:32:57.606Z","0.15.2":"2026-06-09T23:31:49.542Z"},"bugs":{"url":"https://github.com/theChrisJohn/glashjs/issues"},"license":"MIT","homepage":"https://github.com/theChrisJohn/glashjs#readme","keywords":["glash","glashdb","framework","offline","pwa","asset-optimization","avif","brotli","security","routing","ssr","api","server","web-framework"],"repository":{"type":"git","url":"git+https://github.com/theChrisJohn/glashjs.git"},"description":"glashjs — The Postgres-native full-stack framework for builders who want to ship without DevOps. Framework, hosting, database, auth, and deploy in one GlashDB-native runtime.","maintainers":[{"name":"thechrisjohn","email":"christian.john161@gmail.com"}],"readme":"# glashjs\n\n**The Postgres-native full-stack framework for builders who want to ship without DevOps.**\n\nglashjs is the GlashDB-native framework layer: **Framework + Hosting + Database + Auth + Deploy**. It gives you file-based routing, typed routes, server functions, API routes, Postgres helpers, glashAuth helpers, SQL runner support, AI deployment prompts, zero-config hosting, automatic env management, and one-command deployment.\n\n## Create a Glash project\n\n```bash\nnpx glashjs create my-app\ncd my-app\nnpm run dev\n```\n\nThe create CLI asks for:\n\n- Project name and folder.\n- CSS setup: Tailwind, plain CSS, or none.\n- Postgres by default.\n- glashAuth route helpers.\n- SQL runner support through the local CLI.\n- AI deployment prompts.\n- Optional IP auto-translation.\n- Package manager and dependency install.\n\nFor non-interactive use:\n\n```bash\nnpx glashjs create my-app --yes --css tailwind --pm npm\nnpx glashjs create my-app --yes --css plain --no-install\n```\n\nThe generated app includes:\n\n```text\nroutes/\n  index.jsx\n  _layout.jsx\n  api/health.mjs\n  api/auth/signin.mjs\n  api/auth/signup.mjs\n  api/auth/me.mjs\n  api/functions/contact.mjs\ndb/schema.sql\n.glash/prompts/deploy.md\nglash.config.mjs\n.env.example\n.env.local\n```\n\n## First-class features\n\n- **File-based routing**: every file in `routes/` becomes a page or API route.\n- **Typed routes**: `glashjs typegen` writes `glash-routes.d.ts` with literal page/API route unions.\n- **Server functions**: wrap trusted server code with `serverFunction()` and call it from the browser.\n- **API routes**: method exports such as `GET`, `POST`, `PUT`, and `DELETE`.\n- **Postgres by default**: `glashjs/postgres` reads `DATABASE_URL` and exposes `sql`, `query`, and transactions.\n- **glashAuth built in**: `glashjs/auth` calls the real GlashDB auth API under `/api/auth/v1/:projectId`.\n- **SQL runner support**: `glashjs sql db/schema.sql` runs checked-in SQL against `DATABASE_URL`; starters do not expose arbitrary SQL over HTTP.\n- **AI deployment prompts**: starters include `.glash/prompts/deploy.md` for agents and deployment review.\n- **Zero-config hosting**: `glashjs deploy` builds and hands off to the GlashDB deploy CLI.\n- **Automatic env management**: `.env`, `.env.local`, and mode-specific env files load automatically; hosted deploys use GlashDB project env vars.\n- **One-command deployment**: `npm run deploy`.\n\n## Commands\n\n```bash\nglashjs create [name]          # scaffold a new Glash project\nglashjs dev [--port 3000]     # dev server with live reload, bound to localhost\nglashjs dev --host 0.0.0.0   # opt into LAN preview\nglashjs build                 # optimize assets, precompile routes, emit PWA/security manifests\nglashjs serve                 # serve the production build\nglashjs typegen               # generate typed route declarations\nglashjs sql <file.sql>        # run project SQL (--yes-production for remote DBs)\nglashjs deploy                # build, then deploy to GlashDB\nglashjs optimize public       # optimize public assets only (--video opt-in)\nglashjs migrate               # scaffold routes from an existing Next app\nglashjs update [--to <ver>]   # update glashjs to an exact resolved version\n```\n\n`glashjs` installs two bins: `glashjs` and `glash`. In projects that also install the GlashDB deploy CLI, prefer `glashjs <cmd>` so the package names stay clear.\n\n## Routing\n\n```text\nroutes/\n  index.mjs          -> /\n  about.jsx          -> /about\n  blog/[slug].jsx    -> /blog/:slug\n  docs/[...path].mjs -> /docs/*\n  api/hello.mjs      -> /api/hello\n  404.jsx            -> custom not-found page\n  500.jsx            -> custom error page\n```\n\n```js\n// routes/api/hello.mjs\nimport { json } from 'glashjs';\n\nexport const GET = (ctx) => json({\n  ok: true,\n  name: ctx.query.name ?? 'builder',\n});\n```\n\n```jsx\n// routes/index.jsx\nexport const metadata = { title: 'Home' };\n\nexport default function Home() {\n  return <main>Ship without DevOps.</main>;\n}\n```\n\n## Postgres\n\n```js\nimport { sql, transaction } from 'glashjs/postgres';\n\nconst users = await sql`\n  select id, email\n  from users\n  order by created_at desc\n  limit ${20}\n`;\n\nawait transaction(async (db) => {\n  await db.query('insert into events(name) values ($1)', ['signup']);\n});\n```\n\n## glashAuth\n\n```js\nimport { glashAuth } from 'glashjs/auth';\n\nconst auth = glashAuth();\nconst session = await auth.signin({ email, password });\nconst user = await auth.me(session.accessToken);\n```\n\nRequired env:\n\n```bash\nNEXT_PUBLIC_GLASHDB_URL=\"https://api.glashdb.com/api/p/<projectId>\"\nGLASHDB_URL=\"https://api.glashdb.com/api/p/<projectId>\"\nNEXT_PUBLIC_GLASHDB_ANON_KEY=\"...\"\nGLASH_SESSION_SECRET=\"at-least-32-random-characters\"\nDATABASE_URL=\"postgresql://...\"\n```\n\n## Native GlashDB client\n\n```js\nimport { glash } from 'glashjs/db';\n\nconst db = glash();\n\nconst { data: authData } = await db.auth.signInWithPassword({ email, password });\nconst { data: todos } = await db.from('todos').select('*').eq('user_id', authData.user.id);\n```\n\nDrop these into your app environment for the full database runtime path:\n\n```bash\nNEXT_PUBLIC_GLASHDB_URL=\"https://api.glashdb.com/api/p/<projectId>\"\nNEXT_PUBLIC_GLASHDB_ANON_KEY=\"...\"\nGLASHDB_URL=\"https://api.glashdb.com/api/p/<projectId>\"\nGLASHDB_SERVICE_ROLE_KEY=\"...\"\nDATABASE_URL=\"postgresql://...\"\n```\n\nServer-only admin code can opt into the service role key without exposing it to browser bundles:\n\n```js\nimport { glashServer } from 'glashjs/db';\n\nconst admin = glashServer({ serviceRole: true });\nconst { data: users } = await admin.auth.admin.listUsers();\n```\n\n## Server Functions\n\n```js\n// routes/api/functions/contact.mjs\nimport { serverFunction } from 'glashjs/server-functions';\nimport { sql } from 'glashjs/postgres';\n\nexport const POST = serverFunction(async ({ email }) => {\n  await sql`insert into contacts(email) values (${email}) on conflict do nothing`;\n  return { saved: true };\n});\n```\n\n```js\nimport { callServerFunction } from 'glashjs/server-functions';\n\nawait callServerFunction('/api/functions/contact', { email: 'you@example.com' });\n```\n\n## Configuration\n\n```js\n// glash.config.mjs\nimport { defineConfig } from 'glashjs/config';\n\nexport default defineConfig({\n  name: 'My Glash App',\n  routesDir: 'routes',\n  publicDir: 'public',\n  outDir: '.glash/out',\n  stylesheets: ['/app.css'],\n  offline: true,\n  favicon: 'node_modules/glashjs/templates/glash_favicon.svg',\n  animatedFavicon: false,\n  i18n: false,\n  dataPrefixes: ['/api/', '/auth/', '/rest/', '/live', '/stream'],\n  assetOptimization: {\n    video: false,\n    maxTransformBytes: 50 * 1024 * 1024,\n    maxTotalBytes: 5 * 1024 * 1024 * 1024,\n    maxProcessMs: 60_000,\n  },\n});\n```\n\n`i18n` is opt-in because it calls third-party geolocation/translation services\nand relaxes CSP for the translation widget.\n\n## Deploy\n\n```bash\nnpm run build\nnpm run deploy\n```\n\n`glashjs deploy`:\n\n1. Loads env files.\n2. Builds the app.\n3. Optimizes public assets.\n4. Precompiles JSX routes and client bundles.\n5. Emits PWA, offline, security, and asset manifests.\n6. Hands off to a local pinned GlashDB CLI when installed, otherwise a pinned fallback CLI package, for upload, env sync, build logs, live URL, and hosting.\n\n## Asset Optimization\n\nglashjs optimizes assets at build time:\n\n- Text, SVG, JS, CSS, and HTML -> Brotli + Gzip.\n- Images -> AVIF/WebP when optional `sharp` is installed.\n- Video -> AV1/WebM only when explicitly enabled (`assetOptimization.video` or `glashjs optimize --video`).\n- Emits `glash-assets.manifest.json` for edge/runtime negotiation.\n\nCore remains light. Optional image/video enhancers are installed only when you choose them.\n\n## Security Guardrails\n\n- Build, serve, typegen, and SQL runner paths stay inside the project root by default.\n- `glashjs sql` refuses remote-looking `DATABASE_URL` targets unless you pass `--yes-production`.\n- Generated auth routes include a small in-memory rate limiter for signup/signin attempts.\n- The service worker only runtime-caches static/precache assets, not arbitrary same-origin pages or data.\n- `getServerData()` is public by design. In dev, glashjs warns when returned props look like secrets or tokens.\n- `unsafeRaw()` intentionally injects trusted HTML. Prefer the `html` template helper for escaped output.\n\n## Migrating an Existing App\n\n```bash\nnpx glashjs migrate\nnpx glashjs migrate --dry-run\n```\n\nThe migration command scaffolds `routes/` beside your existing app and writes a report. It handles mechanical route mapping and flags framework-specific code that needs hands-on porting.\n\n## Design Stance\n\nglashjs is built for builders who want the product surface and the production platform to work together. Your app code, Postgres database, auth system, environment variables, deploy logs, domains, and live URL all belong to one GlashDB project.\n","readmeFilename":"README.md"}