{"_id":"swtl","_rev":"34-0721d08984e700f5ac65d338524b6046","name":"swtl","dist-tags":{"latest":"0.4.1"},"versions":{"0.0.1":{"name":"swtl","version":"0.0.1","description":"A Service Worker Templating Language (`swtl`) for component-like templating in service workers. Streams templates to the browser as they're being parsed, and handles rendering iterables/Responses in templates by default.","main":"index.js","type":"module","scripts":{"dev":"concurrently \"esbuild ./demo/sw.js --bundle --outfile=./demo/bundled-sw.js --watch --format=iife\" \"cd demo && npx http-server -o\"","start":"node --watch dev.js","test":"node --watch tests/tests.js"},"exports":{"./html.js":"./html.js","./render.js":"./render.js","./router.js":"./router.js"},"keywords":[],"author":"","license":"ISC","devDependencies":{"concurrently":"^8.2.0","esbuild":"^0.19.0"},"gitHead":"7af6a4a5acfc30da81fc7f258cc99a1c425b326a","_id":"swtl@0.0.1","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-PwuCu3gC+Ww2ojihoBm87dVEHowP9qjCHIBm+DKh+fu2RFuUptTfj9xtQ1PZ1KdTkF/S08WdRl89VrifhonAQQ==","shasum":"d4849fb4dfcfde8b13a29fca47d992d9bc04173e","tarball":"https://registry.npmjs.org/swtl/-/swtl-0.0.1.tgz","fileCount":6,"unpackedSize":17038,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC5QwLKeSl9KjTwhyOkH6hSVaL8hknxlKS4xDqU6XKGeAIhAPdoPVPTVOcXllo+yuKqaFW5uF1A+9Ordt5f6DhWn9uN"}]},"_npmUser":{"name":"passle","email":"pascalschilp@gmail.com"},"directories":{},"maintainers":[{"name":"passle","email":"pascalschilp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/swtl_0.0.1_1691995269260_0.49432872775245307"},"_hasShrinkwrap":false},"0.0.2":{"name":"swtl","version":"0.0.2","description":"A Service Worker Templating Language (`swtl`) for component-like templating in service workers. Streams templates to the browser as they're being parsed, and handles rendering iterables/Responses in templates by default.","main":"index.js","type":"module","scripts":{"dev":"concurrently \"esbuild ./demo/sw.js --bundle --outfile=./demo/bundled-sw.js --watch --format=iife\" \"cd demo && npx http-server -o\"","start":"node --watch dev.js","test":"node --watch tests/tests.js"},"exports":{"./html.js":"./html.js","./render.js":"./render.js","./router.js":"./router.js"},"keywords":[],"author":"","license":"ISC","devDependencies":{"concurrently":"^8.2.0","esbuild":"^0.19.0"},"gitHead":"d9c7bb32032bce5e399ca9576c6d45425959cb84","_id":"swtl@0.0.2","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-Rs12ij1Mc8tVYr7K0Uy/3WI0hwrIUB+OHmRKGNDUsqjuNYbuRZavE6PbrHAcJy1+sf4PW+CJIq1hGtV2C2l4Iw==","shasum":"abc6a23631fed9a21449ed237cef5f128bfe0de3","tarball":"https://registry.npmjs.org/swtl/-/swtl-0.0.2.tgz","fileCount":6,"unpackedSize":17242,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCHHHYyXA1FITZvqdVWwpicU8+IZ1cj7Yesk8wKK0xsXQIgSIsRHrXkc6UrJz+sCHX1Z/u90Z3Jxpqyhq2GccpONqI="}]},"_npmUser":{"name":"passle","email":"pascalschilp@gmail.com"},"directories":{},"maintainers":[{"name":"passle","email":"pascalschilp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/swtl_0.0.2_1692003809410_0.3400169461046223"},"_hasShrinkwrap":false},"0.0.3":{"name":"swtl","version":"0.0.3","description":"A Service Worker Templating Language (`swtl`) for component-like templating in service workers. Streams templates to the browser as they're being parsed, and handles rendering iterables/Responses in templates by default.","main":"index.js","type":"module","scripts":{"dev":"concurrently \"esbuild ./demo/sw.js --bundle --outfile=./demo/bundled-sw.js --watch --format=iife\" \"cd demo && npx http-server -o\"","start":"node --watch dev.js","test":"node --watch tests/tests.js"},"exports":{"./html.js":"./html.js","./render.js":"./render.js","./router.js":"./router.js"},"keywords":[],"author":"","license":"ISC","devDependencies":{"concurrently":"^8.2.0","esbuild":"^0.19.0"},"gitHead":"51e3faec62742fa5debfe849c73e487558c696be","_id":"swtl@0.0.3","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-SLwly+d2YkT1slvztkHMJgWgOCXK53snJ2Ks3FXGTjStioaacS+5UyQdXvI0EWJvzK3ahszdAI887XZMKdsVWA==","shasum":"402a298138887522d460dcdcd68862e0f2a1b1ae","tarball":"https://registry.npmjs.org/swtl/-/swtl-0.0.3.tgz","fileCount":6,"unpackedSize":17242,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDsnnSH9imx1/iVmdk/gUEOU+yCktQQ/9dXXDzv0FXmxAiBe90zyURUBlRu1mbSBFnyyQIBEHh0yYQdiERVjCO1clg=="}]},"_npmUser":{"name":"passle","email":"pascalschilp@gmail.com"},"directories":{},"maintainers":[{"name":"passle","email":"pascalschilp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/swtl_0.0.3_1692017473706_0.9315539765971392"},"_hasShrinkwrap":false},"0.0.5":{"name":"swtl","version":"0.0.5","description":"A Service Worker Templating Language (`swtl`) for component-like templating in service workers. Streams templates to the browser as they're being parsed, and handles rendering iterables/Responses in templates by default.","main":"index.js","type":"module","scripts":{"dev":"concurrently \"esbuild ./demo/sw.js --bundle --outfile=./demo/bundled-sw.js --watch --format=iife\" \"cd demo && npx http-server -o\"","start":"node --watch dev.js","test":"node --watch tests/tests.js"},"exports":{".":"./index.js","./html.js":"./html.js","./async.js":"./async.js","./render.js":"./render.js","./router.js":"./router.js"},"keywords":[],"author":"","license":"ISC","devDependencies":{"concurrently":"^8.2.0","esbuild":"^0.19.0"},"gitHead":"60aa6596d31349b64c252b69f8135e610561f561","_id":"swtl@0.0.5","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-Feaivy8WDBt8CDya/Q9LuqaSZf489Xu0cBrxrFJkxemQQYgOUi+32W9Pl4yPkfmv/hQRH9IM702y3H76y09wig==","shasum":"9db707b49331c0ac06ffc3637da45dd9e1ef3372","tarball":"https://registry.npmjs.org/swtl/-/swtl-0.0.5.tgz","fileCount":8,"unpackedSize":20841,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFzplt4Azt5A745HRQc099j2DCj6SxFNuyGEXdSJNMiXAiAMkSKKyb/MkRh/FlrDlW59XGsumpf5PGXawLSpX6Nyug=="}]},"_npmUser":{"name":"passle","email":"pascalschilp@gmail.com"},"directories":{},"maintainers":[{"name":"passle","email":"pascalschilp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/swtl_0.0.5_1692433412352_0.1955008033336234"},"_hasShrinkwrap":false},"0.0.6":{"name":"swtl","version":"0.0.6","description":"A Service Worker Templating Language (`swtl`) for component-like templating in service workers. Streams templates to the browser as they're being parsed, and handles rendering iterables/Responses in templates by default.","main":"index.js","type":"module","scripts":{"dev":"concurrently \"esbuild ./demo/sw.js --bundle --outfile=./demo/bundled-sw.js --watch --format=iife\" \"cd demo && npx http-server -o\"","start":"node --watch dev.js","test":"node --watch tests/tests.js"},"exports":{".":"./index.js","./html.js":"./html.js","./async.js":"./async.js","./render.js":"./render.js","./router.js":"./router.js"},"keywords":[],"author":"","license":"ISC","devDependencies":{"concurrently":"^8.2.0","esbuild":"^0.19.0"},"gitHead":"2028e412c64b1b19f0ec262e15e4eeadc9cc45c2","_id":"swtl@0.0.6","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-TFeph3eyBiDuWeRTXbfNNj7XKP9hCEJoi5TReHox6XC8/9bNPYBUyf3UcAkQt6+OsQxo2NXw3otd/DF4/VPlrA==","shasum":"c15a5dad969d233bbe66d4ff02fee412ddd813d6","tarball":"https://registry.npmjs.org/swtl/-/swtl-0.0.6.tgz","fileCount":8,"unpackedSize":21432,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF/gngyvYFkrix3rzhW0Hh+FT1Lomond+sd0OtM4iUBQAiEA8NaqAshIMPk5TPB9j50wkLqD9QxhNHrGlMzSDXtR3tg="}]},"_npmUser":{"name":"passle","email":"pascalschilp@gmail.com"},"directories":{},"maintainers":[{"name":"passle","email":"pascalschilp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/swtl_0.0.6_1692568551511_0.9536628194087342"},"_hasShrinkwrap":false},"0.0.7":{"name":"swtl","version":"0.0.7","description":"A Service Worker Templating Language (`swtl`) for component-like templating in service workers. Streams templates to the browser as they're being parsed, and handles rendering iterables/Responses in templates by default.","main":"index.js","type":"module","scripts":{"dev":"concurrently \"esbuild ./demo/sw.js --bundle --outfile=./demo/bundled-sw.js --watch --format=iife\" \"cd demo && npx http-server -o\"","start":"node --watch dev.js","test":"node --watch tests/tests.js"},"exports":{".":"./index.js","./html.js":"./html.js","./async.js":"./async.js","./render.js":"./render.js","./router.js":"./router.js"},"keywords":[],"author":"","license":"ISC","devDependencies":{"concurrently":"^8.2.0","esbuild":"^0.19.0"},"gitHead":"5aa5d434ba666ef08337023ced45cd1159555eb8","_id":"swtl@0.0.7","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-4CFS6Fvj39l5NuGESy9mv9skWHEj1hVBcncIM8hzDKRvk2jp8pE1S5KsoV1iJDSq5TJlriXW51dApGuskA+k9Q==","shasum":"6ad56568e438ac22e53c5466857d46aecef72e7a","tarball":"https://registry.npmjs.org/swtl/-/swtl-0.0.7.tgz","fileCount":8,"unpackedSize":21996,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCLxq5Em2kF51kYmwFGUSO37W4qW8KwRPSzM+8a6UdIZQIhAJEDHMidU+ExrAy2ZonHPS8htgYZBMpGlvsDESd2jzbE"}]},"_npmUser":{"name":"passle","email":"pascalschilp@gmail.com"},"directories":{},"maintainers":[{"name":"passle","email":"pascalschilp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/swtl_0.0.7_1692703830932_0.874879431705627"},"_hasShrinkwrap":false},"0.0.8":{"name":"swtl","version":"0.0.8","description":"A Service Worker Templating Language (`swtl`) for component-like templating in service workers. Streams templates to the browser as they're being parsed, and handles rendering iterables/Responses in templates by default.","main":"index.js","type":"module","scripts":{"dev":"concurrently \"esbuild ./demo/sw.js --bundle --outfile=./demo/bundled-sw.js --watch --format=iife\" \"cd demo && npx http-server -o\"","start":"node --watch dev.js","test":"node --watch tests/tests.js"},"exports":{".":"./index.js","./html.js":"./html.js","./async.js":"./async.js","./render.js":"./render.js","./router.js":"./router.js"},"keywords":[],"author":"","license":"ISC","devDependencies":{"concurrently":"^8.2.0","esbuild":"^0.19.0"},"gitHead":"eb3d006c82e3647537036957d52718422c299e41","_id":"swtl@0.0.8","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-nnzQBml31znFPzviScPPakwf3DO+RhlAv7cyJ0sq2sqV5581gRMqW+gCdZuM4FcA5A6wLMp4RN+2CHXL9X27ew==","shasum":"b11157406176173b0fdc51524d1715c7c96e7ed8","tarball":"https://registry.npmjs.org/swtl/-/swtl-0.0.8.tgz","fileCount":8,"unpackedSize":22116,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDiFJPAaas/yETlxqgU41u8hs0Q2FgmN7QlS3NFEa2k+AIgbUNrZwDZTWkiTEzwP6VqcqRP8DGOCKTqoyBDaG66Kis="}]},"_npmUser":{"name":"passle","email":"pascalschilp@gmail.com"},"directories":{},"maintainers":[{"name":"passle","email":"pascalschilp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/swtl_0.0.8_1693049771860_0.8020402366811317"},"_hasShrinkwrap":false},"0.0.9":{"name":"swtl","version":"0.0.9","description":"A Service Worker Templating Language (`swtl`) for component-like templating in service workers. Streams templates to the browser as they're being parsed, and handles rendering iterables/Responses in templates by default.","main":"index.js","type":"module","scripts":{"dev":"concurrently \"esbuild ./demo/sw.js --bundle --outfile=./demo/bundled-sw.js --watch --format=iife\" \"cd demo && npx http-server -o\"","start":"node --watch dev.js","test":"node --watch tests/tests.js"},"exports":{".":"./index.js","./html.js":"./html.js","./async.js":"./async.js","./render.js":"./render.js","./router.js":"./router.js","./strategies.js":"./strategies.js"},"keywords":[],"author":"","license":"ISC","devDependencies":{"concurrently":"^8.2.0","esbuild":"^0.19.0"},"gitHead":"89e0bd3ab0d92b05675f3580c0db96fd0e32c32a","_id":"swtl@0.0.9","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-nxOu4IVgQYbke4RATNVXDOFbHZAe6CF83BiCHFgX+JlyDZmaWai+8ihIS34DM/2MjkD9Rq+kLa+0zBfVLDUH5A==","shasum":"f79609fefed6c6d83399752d6389cce9110eb1f8","tarball":"https://registry.npmjs.org/swtl/-/swtl-0.0.9.tgz","fileCount":9,"unpackedSize":23035,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBhAj3jvpcSJYSjbrf923eL2cCLAxRZ/7ONsVb8V5NSjAiEAlHpR+1jnEVoYxEoEQUN2hX46ERmnXU6ck0vRJPHuZVY="}]},"_npmUser":{"name":"passle","email":"pascalschilp@gmail.com"},"directories":{},"maintainers":[{"name":"passle","email":"pascalschilp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/swtl_0.0.9_1693054514392_0.9334579588198868"},"_hasShrinkwrap":false},"0.0.10":{"name":"swtl","version":"0.0.10","description":"A Service Worker Templating Language (`swtl`) for component-like templating in service workers. Streams templates to the browser as they're being parsed, and handles rendering iterables/Responses in templates by default.","main":"index.js","type":"module","scripts":{"dev":"concurrently \"esbuild ./demo/sw.js --bundle --outfile=./demo/bundled-sw.js --watch --format=iife\" \"cd demo && npx http-server -o\"","start":"node --watch dev.js","test":"node --watch tests/tests.js"},"exports":{".":"./index.js","./html.js":"./html.js","./async.js":"./async.js","./render.js":"./render.js","./router.js":"./router.js","./strategies.js":"./strategies.js"},"keywords":[],"author":"","license":"ISC","devDependencies":{"concurrently":"^8.2.0","esbuild":"^0.19.0"},"gitHead":"04bf3c738bfa74acc4bd5d6df75ef978241212d0","_id":"swtl@0.0.10","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-1ZDEMgPObZ7wK2ZV1BQNwuVbiOsDVfsavULcbjDXhlT2VVoP4LvI7jwMwHHul1SVw3i0uZ8cc+CGoJVvocsw7A==","shasum":"6de043a4b42036d6a9f3fa20a46568bc3f85b274","tarball":"https://registry.npmjs.org/swtl/-/swtl-0.0.10.tgz","fileCount":9,"unpackedSize":23601,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE0FeiDiGutPwdhKfn+hmuG1jDxQcHQh8zSaLux4kjArAiEAmh1jl8TG7ShRJGb9SXX4KFIBiTu1KQsP2Y9IPx2e07k="}]},"_npmUser":{"name":"passle","email":"pascalschilp@gmail.com"},"directories":{},"maintainers":[{"name":"passle","email":"pascalschilp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/swtl_0.0.10_1693128088509_0.9144237592925761"},"_hasShrinkwrap":false},"0.0.11":{"name":"swtl","version":"0.0.11","description":"A Service Worker Templating Language (`swtl`) for component-like templating in service workers. Streams templates to the browser as they're being parsed, and handles rendering iterables/Responses in templates by default.","main":"index.js","type":"module","scripts":{"dev":"concurrently \"esbuild ./demo/sw.js --bundle --outfile=./demo/bundled-sw.js --watch --format=iife\" \"cd demo && npx http-server -o\"","start":"node --watch dev.js","test":"node --watch tests/tests.js"},"exports":{".":"./index.js","./html.js":"./html.js","./async.js":"./async.js","./render.js":"./render.js","./router.js":"./router.js","./strategies.js":"./strategies.js"},"keywords":[],"author":"","license":"ISC","devDependencies":{"concurrently":"^8.2.0","esbuild":"^0.19.0"},"gitHead":"bce1b4b9c956f6704bb0f978c0b0b55fd4733c24","_id":"swtl@0.0.11","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-XlWm0wfyEAF49oYRi6EYE1FFUMH5+alvaSPjfEND8QdS9mG5uYnbpBCWamRpglp/4nibOq25Y0p5k/DiH60EtA==","shasum":"05f3d4a2c72809406db74a49ee3436fd180861f8","tarball":"https://registry.npmjs.org/swtl/-/swtl-0.0.11.tgz","fileCount":9,"unpackedSize":23679,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD+AswjHFGCzC9ag29m2yjqUPl/AAumlLzNRZ5DH8t2OgIhAMkUNOMXN6SPeyG7+wL1wzpF0admEYZvhzEw+L41ntiF"}]},"_npmUser":{"name":"passle","email":"pascalschilp@gmail.com"},"directories":{},"maintainers":[{"name":"passle","email":"pascalschilp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/swtl_0.0.11_1693209612412_0.3867103597138051"},"_hasShrinkwrap":false},"0.0.12":{"name":"swtl","version":"0.0.12","description":"A Service Worker Templating Language (`swtl`) for component-like templating in service workers. Streams templates to the browser as they're being parsed, and handles rendering iterables/Responses in templates by default.","main":"index.js","type":"module","scripts":{"dev":"esbuild ./demo/sw.js --bundle --outfile=./demo/bundled-sw.js --watch --format=iife --servedir=demo","start":"node --watch dev.js","test":"node --watch tests/tests.js"},"exports":{".":"./index.js","./html.js":"./html.js","./await.js":"./await.js","./render.js":"./render.js","./router.js":"./router.js","./strategies.js":"./strategies.js"},"keywords":[],"author":"","license":"ISC","devDependencies":{"esbuild":"^0.19.0"},"gitHead":"e06c83a1ad02845f88113b481ac73c984fe2c1c3","_id":"swtl@0.0.12","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-07mqJ3ppghENKwiYzrJdjoiMHysh3QWHHnzK3rT1PVSufrn3z8XLVpJpXc+jgZCRnISNlH2piS7l4Q2JNoxr7Q==","shasum":"7d57693513cabe65942e20936440a0a644d4f913","tarball":"https://registry.npmjs.org/swtl/-/swtl-0.0.12.tgz","fileCount":9,"unpackedSize":25524,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCukBKo9VpqVSd7DzJPJzeAfo7Tqgw2hAj2kgpMvmEf8wIhALuHhT2YXWc+cXC2qpXlzuPc84tJsstMVW3iMQIOeyU9"}]},"_npmUser":{"name":"passle","email":"pascalschilp@gmail.com"},"directories":{},"maintainers":[{"name":"passle","email":"pascalschilp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/swtl_0.0.12_1693238342648_0.37908924881815875"},"_hasShrinkwrap":false},"0.0.13":{"name":"swtl","version":"0.0.13","description":"A Service Worker Templating Language (`swtl`) for component-like templating in service workers. Streams templates to the browser as they're being parsed, and handles rendering iterables/Responses in templates by default.","main":"index.js","type":"module","scripts":{"dev":"esbuild ./demo/sw.js --bundle --outfile=./demo/bundled-sw.js --watch --format=iife --servedir=demo","start":"node --watch dev.js","test":"node --watch tests/tests.js"},"exports":{".":"./index.js","./html.js":"./html.js","./await.js":"./await.js","./render.js":"./render.js","./router.js":"./router.js","./strategies.js":"./strategies.js"},"keywords":[],"author":"","license":"ISC","devDependencies":{"esbuild":"^0.19.0"},"gitHead":"81adb42344c11c26f9342db4948574d8e9d847f4","_id":"swtl@0.0.13","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-CMoKJUCk3PCjMv7bGJcFttyiqk5CFv0ktno/YKHrkUarQYKweFgXr01FOw0VbLaUz/2nqdzoaRWpK2hw15Ndzg==","shasum":"333c4f01ab958cefbc3422143186e73c79a7f738","tarball":"https://registry.npmjs.org/swtl/-/swtl-0.0.13.tgz","fileCount":9,"unpackedSize":25992,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCE0mhy421Q1n9Sj6Y10xHUQo9t+agmrT1wQve7Yw6uxwIhAN3dsVsIsgw12c1kknaqPI9el17wOaXyjh6/MGPolPNh"}]},"_npmUser":{"name":"passle","email":"pascalschilp@gmail.com"},"directories":{},"maintainers":[{"name":"passle","email":"pascalschilp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/swtl_0.0.13_1693257198560_0.47096468428876426"},"_hasShrinkwrap":false},"0.0.14":{"name":"swtl","version":"0.0.14","description":"A Service Worker Templating Language (`swtl`) for component-like templating in service workers. Streams templates to the browser as they're being parsed, and handles rendering iterables/Responses in templates by default.","main":"index.js","type":"module","scripts":{"dev":"esbuild ./demo/sw.js --bundle --outfile=./demo/bundled-sw.js --watch --format=iife --servedir=demo","start":"node --watch dev.js","test":"node --watch tests/tests.js"},"exports":{".":"./index.js","./html.js":"./html.js","./await.js":"./await.js","./render.js":"./render.js","./router.js":"./router.js","./strategies.js":"./strategies.js"},"keywords":[],"author":"","license":"ISC","devDependencies":{"esbuild":"^0.19.0"},"gitHead":"4c088d3d3dc1394ead3962790952f0db70fbc052","_id":"swtl@0.0.14","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-atgNdol0XjU8QKwqtpqvIcYbv+CW7O8i6ieDu3ZQZ/J3cL/G7uJM+46gtC7w7/tlNyuwNMHrRo74iDsYP4h4ng==","shasum":"09a66f22e6266612f03343715437e898f9f2c2dc","tarball":"https://registry.npmjs.org/swtl/-/swtl-0.0.14.tgz","fileCount":9,"unpackedSize":26083,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICi/BA1h1licjdW4cejnj22HdRb+dak0sJGWZwL6rRyPAiEAzPEPXyafddsgWKrrDrrz2Zc4iBnIzPQw7imZlJ1P0Sc="}]},"_npmUser":{"name":"passle","email":"pascalschilp@gmail.com"},"directories":{},"maintainers":[{"name":"passle","email":"pascalschilp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/swtl_0.0.14_1693258276233_0.8544798109996241"},"_hasShrinkwrap":false},"0.0.15":{"name":"swtl","version":"0.0.15","description":"A Service Worker Templating Language (`swtl`) for component-like templating in service workers. Streams templates to the browser as they're being parsed, and handles rendering iterables/Responses in templates by default.","main":"index.js","type":"module","scripts":{"dev":"esbuild ./demo/sw.js --bundle --outfile=./demo/bundled-sw.js --watch --format=iife --servedir=demo","start":"node --watch dev.js","test":"node --watch tests/tests.js"},"exports":{".":"./index.js","./html.js":"./html.js","./await.js":"./await.js","./render.js":"./render.js","./router.js":"./router.js","./strategies.js":"./strategies.js"},"keywords":[],"author":"","license":"ISC","devDependencies":{"esbuild":"^0.19.0"},"gitHead":"aebe993879a6d3159ac485552962af92f1bbf409","_id":"swtl@0.0.15","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-KN+7pDbiuzmhPSxl82yWDoXbWsNJzawDm/M8gDp3Aa1QBUg9sFK6RmVmVCoJGy4g/lVEZ9ongTe5jjbXfcCFLw==","shasum":"3a99287ec1f057ac77ca441bebf9f8ceecf8c520","tarball":"https://registry.npmjs.org/swtl/-/swtl-0.0.15.tgz","fileCount":9,"unpackedSize":26154,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCKpdeWlneodMpl17iWeKxm/2XfCP2HP6DVegs4y86+MgIhALBovTyEY7JpsiA2gbzx7aXxfdFRAWXAnmpedcYifXm5"}]},"_npmUser":{"name":"passle","email":"pascalschilp@gmail.com"},"directories":{},"maintainers":[{"name":"passle","email":"pascalschilp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/swtl_0.0.15_1693323266739_0.6687493148252945"},"_hasShrinkwrap":false},"0.0.16":{"name":"swtl","version":"0.0.16","description":"A Service Worker Templating Language (`swtl`) for component-like templating in service workers. Streams templates to the browser as they're being parsed, and handles rendering iterables/Responses in templates by default.","main":"index.js","type":"module","scripts":{"dev":"esbuild ./demo/sw.js --bundle --outfile=./demo/bundled-sw.js --watch --format=iife --servedir=demo","start":"node --watch dev.js","test":"node --watch tests/tests.js"},"exports":{".":"./index.js","./html.js":"./html.js","./await.js":"./await.js","./render.js":"./render.js","./router.js":"./router.js","./strategies.js":"./strategies.js"},"keywords":[],"author":"","license":"ISC","devDependencies":{"esbuild":"^0.19.0"},"gitHead":"1988183c077890e308cb912564deaa65c1aa8ee3","_id":"swtl@0.0.16","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-V4WuckWgbt8j0Bbba9yvf+TEz2DtZTQmGec5sPonxOAKqtY8WJ5EUGA3LBfj6/oruuq0rvZkP5iorDSdcIEIaQ==","shasum":"0733bdb87c980165accb09819e9fedf576363674","tarball":"https://registry.npmjs.org/swtl/-/swtl-0.0.16.tgz","fileCount":9,"unpackedSize":26161,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICGiq9/Q5c/1+K336Hf7lu8kxixxSGkZhUR8u7YC3uqsAiAKDu8TCkBVBA5e15ja26G5OL8ouAXUqlMpPAP4meEC5A=="}]},"_npmUser":{"name":"passle","email":"pascalschilp@gmail.com"},"directories":{},"maintainers":[{"name":"passle","email":"pascalschilp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/swtl_0.0.16_1693328692640_0.6128251917087766"},"_hasShrinkwrap":false},"0.0.17":{"name":"swtl","version":"0.0.17","description":"A Service Worker Templating Language (`swtl`) for component-like templating in service workers. Streams templates to the browser as they're being parsed, and handles rendering iterables/Responses in templates by default.","main":"index.js","type":"module","scripts":{"dev":"esbuild ./demo/sw.js --bundle --outfile=./demo/bundled-sw.js --watch --format=iife --servedir=demo","start":"node --watch dev.js","test":"node --watch tests/tests.js"},"exports":{".":"./index.js","./html.js":"./html.js","./await.js":"./await.js","./render.js":"./render.js","./router.js":"./router.js","./strategies.js":"./strategies.js"},"keywords":[],"author":"","license":"ISC","devDependencies":{"esbuild":"^0.19.0"},"gitHead":"b87229665125de7a6b3c82d8f3784538923e8a16","_id":"swtl@0.0.17","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-anWtaBtK06ebTCoP567vU42FajAt4ngtlavlYdn4MnmFRohZ0ojSyFIRO8KmDx5glaw1jOdaLWO2Z3UOl+62mA==","shasum":"4207806c93538515f0785c8f3f3adfa18d171910","tarball":"https://registry.npmjs.org/swtl/-/swtl-0.0.17.tgz","fileCount":9,"unpackedSize":26373,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD/SwV0h2/W0jW8ZlMw8aA9UAel1vGxIFAmLEJMfdzgugIhAI/jb29CkuRkAJYwNS+gJYMW80IkXhiQirOmC9u+99rf"}]},"_npmUser":{"name":"passle","email":"pascalschilp@gmail.com"},"directories":{},"maintainers":[{"name":"passle","email":"pascalschilp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/swtl_0.0.17_1693385211943_0.42188393521260426"},"_hasShrinkwrap":false},"0.0.18":{"name":"swtl","version":"0.0.18","description":"A Service Worker Templating Language (`swtl`) for component-like templating in service workers. Streams templates to the browser as they're being parsed, and handles rendering iterables/Responses in templates by default.","main":"index.js","type":"module","scripts":{"dev":"esbuild ./demo/sw.js --bundle --outfile=./demo/bundled-sw.js --watch --format=iife --servedir=demo","start":"node --watch dev.js","test":"node --watch tests/tests.js"},"exports":{".":"./index.js","./html.js":"./html.js","./await.js":"./await.js","./render.js":"./render.js","./router.js":"./router.js","./strategies.js":"./strategies.js"},"keywords":[],"author":"","license":"ISC","devDependencies":{"esbuild":"^0.19.0"},"gitHead":"71315a6533f575950c8be07ab11106b6e27f04b3","_id":"swtl@0.0.18","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-s23NNHGzXzKAHd9lxQIiYqyj49fBREbfiUc8K6uBe7kW7iRmQqSllnHybP7CzcOXo6R05nWMVRi6FevOSVJBCA==","shasum":"aa5a9935fed0dae52ff7f6a676d805bf99639f13","tarball":"https://registry.npmjs.org/swtl/-/swtl-0.0.18.tgz","fileCount":9,"unpackedSize":26512,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGhABFh9NmHWj1CoCHOPRZiQu+45z/dYCcpAisSdu2nlAiEA78cSIK1RTSC4lKLfPphcKkOuUJHo1NJQCPvKxetYdkE="}]},"_npmUser":{"name":"passle","email":"pascalschilp@gmail.com"},"directories":{},"maintainers":[{"name":"passle","email":"pascalschilp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/swtl_0.0.18_1693393452740_0.6283454390107326"},"_hasShrinkwrap":false},"0.0.19":{"name":"swtl","version":"0.0.19","description":"> Check out the [swtl-starter](https://github.com/thepassle/swtl-starter) app","main":"index.js","type":"module","scripts":{"dev":"esbuild ./demo/sw.js --bundle --outfile=./demo/bundled-sw.js --watch --format=iife --servedir=demo","start":"node --watch dev.js","test":"node --watch tests/tests.js"},"exports":{".":"./index.js","./html.js":"./html.js","./await.js":"./await.js","./render.js":"./render.js","./router.js":"./router.js","./strategies.js":"./strategies.js"},"keywords":[],"author":"","license":"ISC","devDependencies":{"esbuild":"^0.19.0"},"gitHead":"a0eb10594c4827e71435721082e0157cae79db08","_id":"swtl@0.0.19","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-WTAdEUeDGn6DhkzJbEUdrddt0xVErZOOnCVlvjTubxVKKC1vbwcCXYNTT9kvBwp1FCqOsFG5mTJtDMJH0jq86A==","shasum":"9b627910e3474ab734d02b9329b90b5d037d36f4","tarball":"https://registry.npmjs.org/swtl/-/swtl-0.0.19.tgz","fileCount":9,"unpackedSize":26661,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHxfY1c0nSsV+bT5TrlBbkafJuArrvN1FfdBbBzU/XLvAiByHDe06iqcyFYC7s2mxs9mj5wI24Gr5Lpwgk8fiW+PuQ=="}]},"_npmUser":{"name":"passle","email":"pascalschilp@gmail.com"},"directories":{},"maintainers":[{"name":"passle","email":"pascalschilp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/swtl_0.0.19_1693638801474_0.9073311854939641"},"_hasShrinkwrap":false},"0.0.20":{"name":"swtl","version":"0.0.20","description":"> Check out the [swtl-starter](https://github.com/thepassle/swtl-starter) app","main":"index.js","type":"module","scripts":{"dev":"esbuild ./demo/sw.js --bundle --outfile=./demo/bundled-sw.js --watch --format=iife --servedir=demo","start":"node --watch dev.js","test":"node --watch tests/tests.js"},"exports":{".":"./index.js","./html.js":"./html.js","./await.js":"./await.js","./render.js":"./render.js","./router.js":"./router.js","./strategies.js":"./strategies.js"},"keywords":[],"author":"","license":"ISC","devDependencies":{"esbuild":"^0.19.0"},"gitHead":"7d241637b57f471ddd81c834299568c9b6306b8a","_id":"swtl@0.0.20","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-DzwMhw6ZVPUjxuTl/OIJ/KYHPKV5abRCsIuc775G4nkncVKEXDc/H7ie5kCtWJqfQPSj5qdlYOCjqpGWiIDnbA==","shasum":"4a945f4de95434426810b43b56c532289f5166e0","tarball":"https://registry.npmjs.org/swtl/-/swtl-0.0.20.tgz","fileCount":9,"unpackedSize":26589,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDnqyIbFVEtch4HSJZA8UVPKAfp5rQdgvuuVz3IHnAHXwIgBrI0qPCqvP0oKcHp7+Nfq9jl/pXNlWNNBNQftGglXUg="}]},"_npmUser":{"name":"passle","email":"pascalschilp@gmail.com"},"directories":{},"maintainers":[{"name":"passle","email":"pascalschilp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/swtl_0.0.20_1693639453444_0.17761651486140528"},"_hasShrinkwrap":false},"0.0.21":{"name":"swtl","version":"0.0.21","description":"> Check out the [swtl-starter](https://github.com/thepassle/swtl-starter) app","main":"index.js","type":"module","scripts":{"dev":"esbuild ./demo/sw.js --bundle --outfile=./demo/bundled-sw.js --watch --format=iife --servedir=demo","start":"node --watch dev.js","test":"node --watch tests/tests.js"},"exports":{".":"./index.js","./html.js":"./html.js","./await.js":"./await.js","./render.js":"./render.js","./router.js":"./router.js","./strategies.js":"./strategies.js"},"keywords":[],"author":"","license":"ISC","devDependencies":{"esbuild":"^0.19.0"},"gitHead":"a910c98b9f0aa1ee3ed3599a518ae9a9b7b5c97c","_id":"swtl@0.0.21","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-P31HIA5Hjx1RcZYAFA7SrNmfQ7ok9GVQPT79gbTzM6yNRItZGUI2iD0A0ogh27/EOfVrdm+8A+ETteWFvPqC6A==","shasum":"78b78a2ffd6578a71944a652b1cc815ff496b944","tarball":"https://registry.npmjs.org/swtl/-/swtl-0.0.21.tgz","fileCount":9,"unpackedSize":26726,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDPV5qGFfipLxCWlPPrFBcn9NxNSN0yAxqvD0wJqVTD3AiEAgIf84zY+L3+S56B0doJH263URA2clZsuGBedZW6ModU="}]},"_npmUser":{"name":"passle","email":"pascalschilp@gmail.com"},"directories":{},"maintainers":[{"name":"passle","email":"pascalschilp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/swtl_0.0.21_1693860862414_0.6648580073147012"},"_hasShrinkwrap":false},"0.0.22":{"name":"swtl","version":"0.0.22","description":"> Check out the [swtl-starter](https://github.com/thepassle/swtl-starter) app","main":"index.js","type":"module","scripts":{"dev":"esbuild ./demo/sw.js --bundle --outfile=./demo/bundled-sw.js --watch --format=iife --servedir=demo","start":"node --watch dev.js","test":"node --watch tests/tests.js"},"exports":{".":"./index.js","./html.js":"./html.js","./await.js":"./await.js","./render.js":"./render.js","./router.js":"./router.js","./strategies.js":"./strategies.js"},"keywords":[],"author":"","license":"ISC","devDependencies":{"esbuild":"^0.19.0"},"gitHead":"594737517169a3ca7eae26072d66b92b00212318","_id":"swtl@0.0.22","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-dw2QKaDCCx5yp1+UhDNi4OhwaYfgSCmrK26ckD9PeXn5tsES11+ETMgYX0d2RzTggxFAlvmTaPisrD188P2FOw==","shasum":"cf344debaed9cfd266463dce76db3025c8f1c37c","tarball":"https://registry.npmjs.org/swtl/-/swtl-0.0.22.tgz","fileCount":9,"unpackedSize":26732,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIChN6XcxQR9GQ6qyL0pTAmn19CMRkAJWlSaE+Cc7AnpLAiA/LIYAG/M4kFid+KQoC3GCOe40laAoOQckOpVWxgKe+A=="}]},"_npmUser":{"name":"passle","email":"pascalschilp@gmail.com"},"directories":{},"maintainers":[{"name":"passle","email":"pascalschilp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/swtl_0.0.22_1693861673757_0.42984346431526066"},"_hasShrinkwrap":false},"0.0.23":{"name":"swtl","version":"0.0.23","description":"> Check out the [swtl-starter](https://github.com/thepassle/swtl-starter) app","main":"index.js","type":"module","scripts":{"dev":"esbuild ./demo/sw.js --bundle --outfile=./demo/bundled-sw.js --watch --format=iife --servedir=demo","start":"node --watch dev.js","test":"node --watch tests/tests.js"},"exports":{".":"./index.js","./html.js":"./html.js","./await.js":"./await.js","./render.js":"./render.js","./router.js":"./router.js","./strategies.js":"./strategies.js"},"keywords":[],"author":"","license":"ISC","devDependencies":{"esbuild":"^0.19.0"},"gitHead":"39ddb71c4f6046c744a82dccb8d7c1dc5365ebf4","_id":"swtl@0.0.23","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-B7UHjOGnTaXdwch1kAUbIjlgZ5+25uxNrcNLLZ1sQXPH25uz8avI2mdykrpJhBOtVLeGZ0jfxUeg3cIF+BZ5Zg==","shasum":"125dae035821c575fa4cfafe4f60ca7fe205d0f0","tarball":"https://registry.npmjs.org/swtl/-/swtl-0.0.23.tgz","fileCount":9,"unpackedSize":26757,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBGJLBGP2S2PFV9huXevKiFye0d+RPjb9aouOPDrFL4lAiEAvNtAcFcRMK3x5Np2RoIn1WKnXZLB2j2LMOLsdSZ241c="}]},"_npmUser":{"name":"passle","email":"pascalschilp@gmail.com"},"directories":{},"maintainers":[{"name":"passle","email":"pascalschilp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/swtl_0.0.23_1701179523236_0.004770782705622922"},"_hasShrinkwrap":false},"0.0.24":{"name":"swtl","version":"0.0.24","description":"> Check out the [swtl-starter](https://github.com/thepassle/swtl-starter) app","main":"index.js","type":"module","scripts":{"dev":"esbuild ./demo/sw.js --bundle --outfile=./demo/bundled-sw.js --watch --format=iife --servedir=demo","start":"node --watch dev.js","test":"node --watch tests/tests.js"},"exports":{".":"./index.js","./html.js":"./html.js","./await.js":"./await.js","./render.js":"./render.js","./router.js":"./router.js","./strategies.js":"./strategies.js"},"keywords":[],"author":"","license":"ISC","devDependencies":{"esbuild":"^0.19.0"},"gitHead":"f282620927370cb65be23451bbd2cd5960e0e189","_id":"swtl@0.0.24","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-ZMEezQm7K8ajgc3xqVbL7SY8mgyU7rgrPHLWYYnJ3UqDwSk4Y+Xd0ckE7YDxlwPft+YmJsvdIp4AgP+jLcLZew==","shasum":"8c90b85ede035e4bf558df65e59b928f623cc31d","tarball":"https://registry.npmjs.org/swtl/-/swtl-0.0.24.tgz","fileCount":9,"unpackedSize":26805,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF0F24UZRtPzmExC68hI7Sez4vUjIate0IRV4oK862PXAiAYgr6BrJlLVk18LiT+STo+5QIAVLYKONIP2u2INs3g7A=="}]},"_npmUser":{"name":"passle","email":"pascalschilp@gmail.com"},"directories":{},"maintainers":[{"name":"passle","email":"pascalschilp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/swtl_0.0.24_1705084213244_0.7032525819945805"},"_hasShrinkwrap":false},"0.1.0":{"name":"swtl","version":"0.1.0","description":"> Check out the [swtl-starter](https://github.com/thepassle/swtl-starter) app","main":"index.js","type":"module","scripts":{"dev":"esbuild ./demo/sw.js --bundle --outfile=./demo/bundled-sw.js --watch --format=iife --servedir=demo","start":"node --watch dev.js","test":"node --watch tests/tests.js"},"exports":{".":"./index.js","./html.js":"./html.js","./await.js":"./await.js","./render.js":"./render.js","./router.js":"./router.js","./strategies.js":"./strategies.js"},"keywords":[],"author":"","license":"ISC","devDependencies":{"esbuild":"^0.19.0"},"gitHead":"5cc3dac6706f248df6eaeb3071b5f4ca594a100e","_id":"swtl@0.1.0","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-OLJqtza/wDZyF0uIPaPuVfhww09lKGBuawjCRlUvJP+wlYEpCkjcUIy/bYBpTOYYkRB920FSMKS04jNCJmyvLg==","shasum":"27c2ec370c99750032f1dca6c7556995e5ed1481","tarball":"https://registry.npmjs.org/swtl/-/swtl-0.1.0.tgz","fileCount":9,"unpackedSize":27273,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGtr5AkaRw/4h6gjDEpKDGCfCDijAM+WnBaMGuJNwXU4AiB1jEZmQIH3VIq/SpX6m5t3ijR8XSqavjU6BydhqI8vmA=="}]},"_npmUser":{"name":"passle","email":"pascalschilp@gmail.com"},"directories":{},"maintainers":[{"name":"passle","email":"pascalschilp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/swtl_0.1.0_1705243082906_0.9634413533386639"},"_hasShrinkwrap":false},"0.2.0":{"name":"swtl","version":"0.2.0","description":"> Check out the [swtl-starter](https://github.com/thepassle/swtl-starter) app","main":"index.js","type":"module","scripts":{"dev":"esbuild ./demo/sw.js --bundle --outfile=./demo/bundled-sw.js --watch --format=iife --servedir=demo","start":"node --watch dev.js","test":"node --watch tests/tests.js"},"exports":{".":"./index.js","./html.js":"./html.js","./await.js":"./await.js","./render.js":"./render.js","./router.js":"./router.js","./strategies.js":"./strategies.js","./slot.js":"./slot.js"},"keywords":[],"author":"","license":"ISC","devDependencies":{"esbuild":"^0.19.0"},"gitHead":"4459d0b22dd57bd42569ec4480f10ef81f4c4e7b","_id":"swtl@0.2.0","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-dQAmElEM294PKYsire4giqE9mYks5wqbaQTHspaOcPmyooLb6+MID0pEFPfUxSc1xofl46EFIOpEMEHFq9R5Tg==","shasum":"c3b2fb06815d5060558f40860cb8c5556cf5f5ec","tarball":"https://registry.npmjs.org/swtl/-/swtl-0.2.0.tgz","fileCount":10,"unpackedSize":28318,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF+vgzKZxN6ehajWP2+SiGuRJw/QxQ/CE/Fvtwumd4gnAiEA0b7oxgIpwdZ9/jw/30n+x/+TC1rYRxbu3wuhBVORWjA="}]},"_npmUser":{"name":"passle","email":"pascalschilp@gmail.com"},"directories":{},"maintainers":[{"name":"passle","email":"pascalschilp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/swtl_0.2.0_1705565332682_0.08453954144380704"},"_hasShrinkwrap":false},"0.2.1":{"name":"swtl","version":"0.2.1","description":"> Check out the [swtl-starter](https://github.com/thepassle/swtl-starter) app","main":"index.js","type":"module","scripts":{"dev":"esbuild ./demo/sw.js --bundle --outfile=./demo/bundled-sw.js --watch --format=iife --servedir=demo","start":"node --watch dev.js","test":"node --watch tests/tests.js"},"exports":{".":"./index.js","./html.js":"./html.js","./await.js":"./await.js","./render.js":"./render.js","./router.js":"./router.js","./strategies.js":"./strategies.js","./slot.js":"./slot.js"},"keywords":[],"author":"","license":"ISC","devDependencies":{"esbuild":"^0.19.0"},"gitHead":"55e4b22f04af2cc20b67f2c945201adf5a3f47fe","_id":"swtl@0.2.1","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-yEKjwiuhf/4k2mCkqZTyiypPkshMg/dFoF6aqN9KpIxMyWJ7R3P9uuuRI3iYjlN7W8EvjyyVj/sTzLZeBmbyEw==","shasum":"0b973a5b4c20061c7a336dcf7c6cdb709a384184","tarball":"https://registry.npmjs.org/swtl/-/swtl-0.2.1.tgz","fileCount":10,"unpackedSize":28352,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBohFrwT7NbxW63UupQnU6djhpfadKUWPZYqDh4yNontAiAn8GNLmHLCFpQKRR9xhOyyvEVwvxtlvn28lsYXWHmZYA=="}]},"_npmUser":{"name":"passle","email":"pascalschilp@gmail.com"},"directories":{},"maintainers":[{"name":"passle","email":"pascalschilp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/swtl_0.2.1_1705575118624_0.15680104947455442"},"_hasShrinkwrap":false},"0.3.0":{"name":"swtl","version":"0.3.0","description":"> Check out the [swtl-starter](https://github.com/thepassle/swtl-starter) app","main":"index.js","type":"module","scripts":{"dev":"esbuild ./demo/sw.js --bundle --outfile=./demo/bundled-sw.js --watch --format=iife --servedir=demo","start":"node --watch dev.js","test":"node --test test/*.test.js","test:watch":"node --watch --test tests/tests.js"},"exports":{".":"./index.js","./html.js":"./html.js","./await.js":"./await.js","./render.js":"./render.js","./router.js":"./router.js","./strategies.js":"./strategies.js","./slot.js":"./slot.js","./ssr/*.js":"./ssr/*.js","./package.json":"./package.json"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@swtl/lit":"^0.1.2"},"dependencies":{},"_id":"swtl@0.3.0","gitHead":"1c9e3841eef3f9fdff5e1223d90058c21b2bdd4c","_nodeVersion":"18.19.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-fkh9lcbYzne26TBUMAtg1b0qPV/gtvHDX8CJE/JQ7WXvgwmiGM7hYoKo+je5YMSzwq1dDFHF/BGPTqD9TfD/kw==","shasum":"aacdacd358c3cd7b348f6e90b0a48148f3c1844a","tarball":"https://registry.npmjs.org/swtl/-/swtl-0.3.0.tgz","fileCount":11,"unpackedSize":37689,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFKVfr/DTow0sZs5Jk54h9AwXu9uHBAebYZc3oPLvHEAAiBMU+5lmR4BSY1Zw0bJXDs0ftsGm1e8n5NVTE6svGxUUA=="}]},"_npmUser":{"name":"passle","email":"pascalschilp@gmail.com"},"directories":{},"maintainers":[{"name":"passle","email":"pascalschilp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/swtl_0.3.0_1712078247988_0.401368504884996"},"_hasShrinkwrap":false},"0.3.1":{"name":"swtl","version":"0.3.1","description":"> Check out the [swtl-starter](https://github.com/thepassle/swtl-starter) app","main":"index.js","type":"module","scripts":{"dev":"esbuild ./demo/sw.js --bundle --outfile=./demo/bundled-sw.js --watch --format=iife --servedir=demo","start":"node --watch dev.js","test":"node --test test/*.test.js","test:watch":"node --watch --test tests/tests.js"},"exports":{".":"./index.js","./html.js":"./html.js","./await.js":"./await.js","./render.js":"./render.js","./router.js":"./router.js","./strategies.js":"./strategies.js","./slot.js":"./slot.js","./ssr/*.js":"./ssr/*.js","./package.json":"./package.json"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@swtl/lit":"^0.1.3"},"dependencies":{},"_id":"swtl@0.3.1","gitHead":"3d70a13d7efa911b35549e2ac2fc2d341190f9c4","_nodeVersion":"18.19.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-R7fTlNsyA6P+ToGFUu457CSn0PUU3Bo7q3KcwQTnoFhHuB5dtUX5qsIC86sNCLo5UgesyGXzqvAHWnQvM68vXQ==","shasum":"d355298d028eaab387eaa91dc4614f18e1dcc0f4","tarball":"https://registry.npmjs.org/swtl/-/swtl-0.3.1.tgz","fileCount":11,"unpackedSize":37751,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCBqze8t4SecTaYS2uq7+rJNpdjLfIbsSu8FIxbT1Bj5gIgJo9IisEXWyL1v1aUG9NOKpgZnxwcMFeNb8bzH2sa0K8="}]},"_npmUser":{"name":"passle","email":"pascalschilp@gmail.com"},"directories":{},"maintainers":[{"name":"passle","email":"pascalschilp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/swtl_0.3.1_1712085271545_0.818486784331897"},"_hasShrinkwrap":false},"0.3.2":{"name":"swtl","version":"0.3.2","description":"> Check out the [swtl-starter](https://github.com/thepassle/swtl-starter) app","main":"index.js","type":"module","scripts":{"dev":"esbuild ./demo/sw.js --bundle --outfile=./demo/bundled-sw.js --watch --format=iife --servedir=demo","start":"node --watch dev.js","test":"node --test test/*.test.js","test:watch":"node --watch --test tests/tests.js","lint:types":"tsc","lint:types:watch":"tsc --watch"},"exports":{".":{"types":"./dist-types/index.d.ts","default":"./index.js"},"./html.js":{"types":"./dist-types/html.d.ts","default":"./html.js"},"./await.js":{"types":"./dist-types/await.d.ts","default":"./await.js"},"./render.js":{"types":"./dist-types/render.d.ts","default":"./render.js"},"./router.js":{"types":"./dist-types/router.d.ts","default":"./router.js"},"./strategies.js":{"types":"./dist-types/strategies.d.ts","default":"./strategies.js"},"./slot.js":{"types":"./dist-types/slot.d.ts","default":"./slot.js"},"./ssr/*.js":{"types":"./dist-types/ssr/*.d.ts","default":"./ssr/*.js"},"./package.json":"./package.json"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@swtl/lit":"^0.1.4"},"dependencies":{},"_id":"swtl@0.3.2","gitHead":"6571ed22f18b3ad670f4d7e2c6d922e0bbae7269","_nodeVersion":"18.19.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-YicjXgdHPdppv614+K1mKk9C4aF0oD+oxykhVooUGW7v0sKH3VeZ3D6MpKvFJYX1F8Or4tgFvLAuyA4AaG6Gpw==","shasum":"6538c2542763975912eee2ed3c0a0b9c23fe8909","tarball":"https://registry.npmjs.org/swtl/-/swtl-0.3.2.tgz","fileCount":11,"unpackedSize":43866,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCoPi1QCpZbqvHrWiEt79tc9u/w6cK3mqr0w7e6FOiMcgIhANMV8eIfQvxv3pWnqXHMnAAxigETnXe5oK+tet03qkRn"}]},"_npmUser":{"name":"passle","email":"pascalschilp@gmail.com"},"directories":{},"maintainers":[{"name":"passle","email":"pascalschilp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/swtl_0.3.2_1712135971209_0.7062520664253591"},"_hasShrinkwrap":false},"0.3.3":{"name":"swtl","version":"0.3.3","description":"> Check out the [swtl-starter](https://github.com/thepassle/swtl-starter) app","main":"index.js","type":"module","scripts":{"dev":"esbuild ./demo/sw.js --bundle --outfile=./demo/bundled-sw.js --watch --format=iife --servedir=demo","start":"node --watch dev.js","test":"node --test test/*.test.js","test:watch":"node --watch --test test/*.test.js","lint:types":"tsc","lint:types:watch":"tsc --watch"},"exports":{".":{"types":"./dist-types/index.d.ts","default":"./index.js"},"./html.js":{"types":"./dist-types/html.d.ts","default":"./html.js"},"./await.js":{"types":"./dist-types/await.d.ts","default":"./await.js"},"./render.js":{"types":"./dist-types/render.d.ts","default":"./render.js"},"./router.js":{"types":"./dist-types/router.d.ts","default":"./router.js"},"./strategies.js":{"types":"./dist-types/strategies.d.ts","default":"./strategies.js"},"./slot.js":{"types":"./dist-types/slot.d.ts","default":"./slot.js"},"./ssr/*.js":{"types":"./dist-types/ssr/*.d.ts","default":"./ssr/*.js"},"./package.json":"./package.json"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@swtl/lit":"^0.1.5"},"dependencies":{},"_id":"swtl@0.3.3","gitHead":"620eade61de0c56e30e6e3428b2320e914366bc8","_nodeVersion":"18.19.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-KAY1hnxse4VLa/1HCoJJfee0+ZhFsJfV263NsnZe+z4Xo0NXihbSp0nx3VXeqUrLCiJJXJlycSb0QwnrkBXlOQ==","shasum":"9020bd961b96ed6c6f3a40abb4b0f19d17c34919","tarball":"https://registry.npmjs.org/swtl/-/swtl-0.3.3.tgz","fileCount":11,"unpackedSize":44020,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID0FbbOAI3KVvT/X5IeOjR27JH6nR0xtL4fO/npi9SitAiEAjQo5HdNRQFoJ/0Xz8BmLGl4LFy7zCIxYZq4uHmMfRzI="}]},"_npmUser":{"name":"passle","email":"pascalschilp@gmail.com"},"directories":{},"maintainers":[{"name":"passle","email":"pascalschilp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/swtl_0.3.3_1712148654415_0.029834451449384902"},"_hasShrinkwrap":false},"0.3.4":{"name":"swtl","version":"0.3.4","description":"> Check out the [swtl-starter](https://github.com/thepassle/swtl-starter) app","main":"index.js","type":"module","scripts":{"dev":"esbuild ./demo/sw.js --bundle --outfile=./demo/bundled-sw.js --watch --format=iife --servedir=demo","start":"node --watch dev.js","test":"node --test test/*.test.js","test:watch":"node --watch --test test/*.test.js","lint:types":"tsc","lint:types:watch":"tsc --watch"},"exports":{".":{"types":"./dist-types/index.d.ts","default":"./index.js"},"./html.js":{"types":"./dist-types/html.d.ts","default":"./html.js"},"./await.js":{"types":"./dist-types/await.d.ts","default":"./await.js"},"./render.js":{"types":"./dist-types/render.d.ts","default":"./render.js"},"./router.js":{"types":"./dist-types/router.d.ts","default":"./router.js"},"./strategies.js":{"types":"./dist-types/strategies.d.ts","default":"./strategies.js"},"./slot.js":{"types":"./dist-types/slot.d.ts","default":"./slot.js"},"./ssr/*.js":{"types":"./dist-types/ssr/*.d.ts","default":"./ssr/*.js"},"./package.json":"./package.json"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@swtl/lit":"^0.1.5"},"dependencies":{},"_id":"swtl@0.3.4","gitHead":"8213052b1dd4b09638a80e6433068f45aefc0a70","_nodeVersion":"18.19.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-LIG2HYSFZgo0wIJUQAjM15x/x3460YplsaEC/3yd5nDxcit+IwJaI9y8lRT1Av6uYkcw8b2E/I+Mn42VuaIYhg==","shasum":"2e415917c5a79030d7eb943bbe3bf67a5a230cd6","tarball":"https://registry.npmjs.org/swtl/-/swtl-0.3.4.tgz","fileCount":22,"unpackedSize":86288,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD1YGtZ95sB5HJ9QTndFEudnD3jl11CS74RHeqC/jIRcgIhAL5r10st+DPZa1SVT3TxyZu6SYJH7YfbLOuG4NDZqlVv"}]},"_npmUser":{"name":"passle","email":"pascalschilp@gmail.com"},"directories":{},"maintainers":[{"name":"passle","email":"pascalschilp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/swtl_0.3.4_1712170329768_0.7118790356566576"},"_hasShrinkwrap":false},"0.3.5":{"name":"swtl","version":"0.3.5","description":"> Check out the [swtl-starter](https://github.com/thepassle/swtl-starter) app","main":"index.js","type":"module","scripts":{"dev":"esbuild ./demo/sw.js --bundle --outfile=./demo/bundled-sw.js --watch --format=iife --servedir=demo","start":"node --watch dev.js","test":"node --test test/*.test.js","test:watch":"node --watch --test test/*.test.js","lint:types":"tsc","lint:types:watch":"tsc --watch"},"exports":{".":{"types":"./dist-types/index.d.ts","default":"./index.js"},"./html.js":{"types":"./dist-types/html.d.ts","default":"./html.js"},"./await.js":{"types":"./dist-types/await.d.ts","default":"./await.js"},"./render.js":{"types":"./dist-types/render.d.ts","default":"./render.js"},"./router.js":{"types":"./dist-types/router.d.ts","default":"./router.js"},"./strategies.js":{"types":"./dist-types/strategies.d.ts","default":"./strategies.js"},"./slot.js":{"types":"./dist-types/slot.d.ts","default":"./slot.js"},"./ssr/*.js":{"types":"./dist-types/ssr/*.d.ts","default":"./ssr/*.js"},"./package.json":"./package.json"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@swtl/lit":"^0.1.5"},"dependencies":{},"_id":"swtl@0.3.5","gitHead":"5b6b988623734cb29690b516ca4d60701b400a21","_nodeVersion":"18.19.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-bb0vNP3IcTrq/xIZZNIJ9UfDhvCIAbVzFeXsUxW7Y/9USd+g7FiQJx4cylRTIpDFblIoS1+8gymbDGVea7DiOg==","shasum":"a2af4e3adb98788da85f6aeff2df4a48acbd8bc4","tarball":"https://registry.npmjs.org/swtl/-/swtl-0.3.5.tgz","fileCount":22,"unpackedSize":86569,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDiKbf8vilK92Of0556UKnJ0n15S9qJ6BeXG7S2AMBUbwIgUR2YrnDcEsFDjvlRO3YOy00eYof20DK3yPpnKnE1qpI="}]},"_npmUser":{"name":"passle","email":"pascalschilp@gmail.com"},"directories":{},"maintainers":[{"name":"passle","email":"pascalschilp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/swtl_0.3.5_1712172223142_0.43148249679850204"},"_hasShrinkwrap":false},"0.3.6":{"name":"swtl","version":"0.3.6","description":"> Check out the [swtl-starter](https://github.com/thepassle/swtl-starter) app","main":"index.js","type":"module","scripts":{"dev":"esbuild ./demo/sw.js --bundle --outfile=./demo/bundled-sw.js --watch --format=iife --servedir=demo","start":"node --watch dev.js","test":"node --test test/*.test.js","test:watch":"node --watch --test test/*.test.js","lint:types":"tsc","lint:types:watch":"tsc --watch"},"exports":{".":{"types":"./dist-types/index.d.ts","default":"./index.js"},"./html.js":{"types":"./dist-types/html.d.ts","default":"./html.js"},"./await.js":{"types":"./dist-types/await.d.ts","default":"./await.js"},"./render.js":{"types":"./dist-types/render.d.ts","default":"./render.js"},"./router.js":{"types":"./dist-types/router.d.ts","default":"./router.js"},"./strategies.js":{"types":"./dist-types/strategies.d.ts","default":"./strategies.js"},"./slot.js":{"types":"./dist-types/slot.d.ts","default":"./slot.js"},"./ssr/*.js":{"types":"./dist-types/ssr/*.d.ts","default":"./ssr/*.js"},"./package.json":"./package.json"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@swtl/lit":"^0.1.5"},"dependencies":{},"_id":"swtl@0.3.6","gitHead":"b6197e63834d0fd6c5de9c4b2a5062cac5ac2a55","_nodeVersion":"18.19.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-HxXjSzEZl+nwigVAi6b733f7jGeCBvrhDNwjFv/4opMmHqzK+CPA7Yck/+kQuCFCKcOMJfyFbQ3PzuOs1AzTQg==","shasum":"47b17b6987ebfcc05d6c4e7a0bae2360d566c66e","tarball":"https://registry.npmjs.org/swtl/-/swtl-0.3.6.tgz","fileCount":22,"unpackedSize":86859,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCz7kpv0xHzZJGfV+BzFqkwJwSDMacTmH5DTg/I4JrIHAIgP/X5xvWLx+q73K3tnuNQO2hkCGeZ4U7KkcrfP+hLxO0="}]},"_npmUser":{"name":"passle","email":"pascalschilp@gmail.com"},"directories":{},"maintainers":[{"name":"passle","email":"pascalschilp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/swtl_0.3.6_1712173399827_0.6644017775833135"},"_hasShrinkwrap":false},"0.4.0":{"name":"swtl","version":"0.4.0","description":"> Check out the [swtl-starter](https://github.com/thepassle/swtl-starter) app","main":"index.js","type":"module","scripts":{"dev":"esbuild ./demo/sw.js --bundle --outfile=./demo/bundled-sw.js --watch --format=iife --servedir=demo","start":"node --watch dev.js","test":"node --test test/*.test.js","test:watch":"node --watch --test test/*.test.js","lint:types":"tsc","lint:types:watch":"tsc --watch"},"exports":{".":{"types":"./dist-types/index.d.ts","default":"./index.js"},"./html.js":{"types":"./dist-types/html.d.ts","default":"./html.js"},"./await.js":{"types":"./dist-types/await.d.ts","default":"./await.js"},"./render.js":{"types":"./dist-types/render.d.ts","default":"./render.js"},"./router.js":{"types":"./dist-types/router.d.ts","default":"./router.js"},"./strategies.js":{"types":"./dist-types/strategies.d.ts","default":"./strategies.js"},"./slot.js":{"types":"./dist-types/slot.d.ts","default":"./slot.js"},"./ssr/*.js":{"types":"./dist-types/ssr/*.d.ts","default":"./ssr/*.js"},"./package.json":"./package.json"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@swtl/lit":"^0.1.5"},"dependencies":{},"_id":"swtl@0.4.0","gitHead":"199f359e5633e2522ea2cf5e113dd0127caaec22","_nodeVersion":"18.19.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-VrQVRy2yS94mu1EPLRBoSCQlsxVt5fHZ1EM2b+tViL7p4NXQd7IIMt4AQrV8ofIXBQZR5u1TSOU9wDDl9KmvuA==","shasum":"e4659deac831773463503bad92c1f167749b77b4","tarball":"https://registry.npmjs.org/swtl/-/swtl-0.4.0.tgz","fileCount":22,"unpackedSize":87835,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCJgnK3D/UDozha+wu2SNsWd6B9hYql6Ycb6UXApn2PkAIgMehOkfEFvht8/HgTih1lSxalO5MEtdaBegPPPPr3l/U="}]},"_npmUser":{"name":"passle","email":"pascalschilp@gmail.com"},"directories":{},"maintainers":[{"name":"passle","email":"pascalschilp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/swtl_0.4.0_1712256723561_0.397713680001768"},"_hasShrinkwrap":false},"0.4.1":{"name":"swtl","version":"0.4.1","description":"> Check out the [swtl-starter](https://github.com/thepassle/swtl-starter) app","main":"index.js","type":"module","scripts":{"dev":"esbuild ./demo/sw.js --bundle --outfile=./demo/bundled-sw.js --watch --format=iife --servedir=demo","start":"node --watch dev.js","test":"node --test test/*.test.js","test:watch":"node --watch --test test/*.test.js","lint:types":"tsc","lint:types:watch":"tsc --watch"},"exports":{".":{"types":"./dist-types/index.d.ts","default":"./index.js"},"./html.js":{"types":"./dist-types/html.d.ts","default":"./html.js"},"./await.js":{"types":"./dist-types/await.d.ts","default":"./await.js"},"./render.js":{"types":"./dist-types/render.d.ts","default":"./render.js"},"./router.js":{"types":"./dist-types/router.d.ts","default":"./router.js"},"./strategies.js":{"types":"./dist-types/strategies.d.ts","default":"./strategies.js"},"./slot.js":{"types":"./dist-types/slot.d.ts","default":"./slot.js"},"./ssr/*.js":{"types":"./dist-types/ssr/*.d.ts","default":"./ssr/*.js"},"./package.json":"./package.json"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@swtl/lit":"^0.1.5"},"dependencies":{},"_id":"swtl@0.4.1","gitHead":"ec5b02a9383a3c722ea9beb079dcfbe936e34a2c","_nodeVersion":"18.19.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-4oiElnZm5+7RLJwCZqB6Tv1W0YL+oNzRXNAjbyjYzGGk4cud0FIESOmu1hL2kJNQr9wSCQhs+EL0gj656XqiAQ==","shasum":"ea2a03c1098a41813beb4e41409efc02ef6d24be","tarball":"https://registry.npmjs.org/swtl/-/swtl-0.4.1.tgz","fileCount":22,"unpackedSize":88218,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC570HIqS2lo7zX9L4kZVCcCUIRj9ztj+T1/FmZfAx6dAiAmU5/wHkC6EP/uCjIAQ5oRV5BXtX4Pj6ryqqfSZ1GMNw=="}]},"_npmUser":{"name":"passle","email":"pascalschilp@gmail.com"},"directories":{},"maintainers":[{"name":"passle","email":"pascalschilp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/swtl_0.4.1_1712267405018_0.9378957783305224"},"_hasShrinkwrap":false}},"time":{"created":"2023-08-14T06:41:09.259Z","0.0.1":"2023-08-14T06:41:09.448Z","modified":"2024-04-04T21:50:05.338Z","0.0.2":"2023-08-14T09:03:29.592Z","0.0.3":"2023-08-14T12:51:13.868Z","0.0.5":"2023-08-19T08:23:32.535Z","0.0.6":"2023-08-20T21:55:51.722Z","0.0.7":"2023-08-22T11:30:31.122Z","0.0.8":"2023-08-26T11:36:12.085Z","0.0.9":"2023-08-26T12:55:14.596Z","0.0.10":"2023-08-27T09:21:28.689Z","0.0.11":"2023-08-28T08:00:12.592Z","0.0.12":"2023-08-28T15:59:02.851Z","0.0.13":"2023-08-28T21:13:18.715Z","0.0.14":"2023-08-28T21:31:16.495Z","0.0.15":"2023-08-29T15:34:26.963Z","0.0.16":"2023-08-29T17:04:52.853Z","0.0.17":"2023-08-30T08:46:52.146Z","0.0.18":"2023-08-30T11:04:12.924Z","0.0.19":"2023-09-02T07:13:21.779Z","0.0.20":"2023-09-02T07:24:13.671Z","0.0.21":"2023-09-04T20:54:22.575Z","0.0.22":"2023-09-04T21:07:53.950Z","0.0.23":"2023-11-28T13:52:03.439Z","0.0.24":"2024-01-12T18:30:13.555Z","0.1.0":"2024-01-14T14:38:03.072Z","0.2.0":"2024-01-18T08:08:52.836Z","0.2.1":"2024-01-18T10:51:58.801Z","0.3.0":"2024-04-02T17:17:28.167Z","0.3.1":"2024-04-02T19:14:31.751Z","0.3.2":"2024-04-03T09:19:31.366Z","0.3.3":"2024-04-03T12:50:54.554Z","0.3.4":"2024-04-03T18:52:09.916Z","0.3.5":"2024-04-03T19:23:43.341Z","0.3.6":"2024-04-03T19:43:20.032Z","0.4.0":"2024-04-04T18:52:03.759Z","0.4.1":"2024-04-04T21:50:05.189Z"},"maintainers":[{"name":"passle","email":"pascalschilp@gmail.com"}],"description":"> Check out the [swtl-starter](https://github.com/thepassle/swtl-starter) app","keywords":[],"license":"ISC","readme":"# swtl\n\n> Check out the [swtl-starter](https://github.com/thepassle/swtl-starter) app\n\nA Service Worker Templating Language (`swtl`) for component-like templating in service workers. Streams templates to the browser as they're being parsed, and handles rendering iterables/Responses in templates by default. Also supports SSR/SWSRing custom elements, with a pluggable custom element renderer system.\n\nRuns in Service Workers, but can also be used in Node, or other server-side JS environments.\n\n```bash\nnpm i swtl\n```\n\n## Example\n\n```js\nimport { html, Router, CacheFirst } from 'swtl';\nimport { BreadCrumbs } from './BreadCrumbs.js'\n\nfunction HtmlPage({children, title}) {\n  return html`<html><head><title>${title}</title></head><body>${children}</body></html>`;\n}\n\nfunction Footer() {\n  return html`<footer>Copyright</footer>`;\n}\n\nconst router = new Router({\n  routes: [\n    {\n      path: '/',\n      response: ({url, params, query, request}) => html`\n        <${HtmlPage} title=\"Home\">\n          <h1>Home</h1>\n          <nav>\n            <${BreadCrumbs} path=${request.url.pathname}/>\n          </nav>\n          ${fetch('./some-partial.html')}\n          ${caches.match('./another-partial.html')}\n          <ul>\n            ${['foo', 'bar', 'baz'].map(i => html`<li>${i}</li>`)}\n          </ul>\n          <${CacheFirst} file=\"./some-file.html\"/>\n          <${Footer}/>\n        <//>\n      `\n    },\n  ]\n});\n\nself.addEventListener('fetch', (event) => {\n  if (event.request.mode === 'navigate') {\n    event.respondWith(router.handleRequest(event.request));\n  }\n});\n```\n\n## Router\n\nUses [URLPattern](https://developer.mozilla.org/en-US/docs/Web/API/URLPattern) internally for matching the `paths`. The `response` callback gets passed the native [`Request`](https://developer.mozilla.org/en-US/docs/Web/API/Request) object, as well as any route params or query params.\n\n```js\nimport { html, Router } from 'swtl';\n\nconst router = new Router({\n  routes: [\n    {\n      path: '/',\n      response: () => html`<h1>Home</h1>`\n    },\n    {\n      path: '/:foo',\n      response: ({params}) => html`<h1>${params.foo}</h1>`\n    },\n    {\n      path: '/:foo/:bar',\n      response: ({params}) => html`<h1>${params.foo}/${params.bar}</h1>`\n    },\n    {\n      path: '/:foo/:bar',\n      response: ({url, params, query, request}) => html`<h1>${params.foo}/${params.bar}</h1>`\n    },\n  ]\n});\n\nself.addEventListener('fetch', (event) => {\n  if (event.request.mode === 'navigate') {\n    event.respondWith(router.handleRequest(event.request));\n  }\n});\n```\n\n### `baseHref`\n\nYou can also specify a `baseHref`, for example if your app is served under a specific base route, like `https://my-app.com/foo/bar/`:\n\n```js\nconst router = new Router({\n  baseHref: '/foo/bar/',\n  routes: [\n    {\n      // The url will be: https://my-app.com/foo/bar/\n      path: '',\n      response: () => html`<${Home}/>`\n    },\n    {\n      // The url will be: https://my-app.com/foo/bar/users/1\n      path: 'users/:id',\n      response: ({params}) => html`<${User} id=${params.id}/>`\n    }\n  ]\n});\n```\n\nNote that you also have the set the `base` tag in your HTML:\n```html\n<base href=\"/foo/bar/\">\n```\n\n### `fallback`\n\nYou can also provide a fallback in case no routes are matched. If you don't provide a fallback, the request will not be handled by the service worker, and go through to the network.\n\n```js\nconst router = new Router({\n  routes: [\n    {\n      path: '/',\n      response: () => html`<${Home}/>`\n    }\n  ],\n  fallback: ({query, request}) => html`<${NotFound}/>`\n});\n```\n\n### `plugins`\n\nYou can also provide plugins. You can add global plugins that will run for every route, or add plugins for specific routes only. If you return a `Response` from a plugin, the router will return that response to the browser instead of your `response` function.\n\n```js\nimport { Router, html, HtmlResponse } from 'swtl';\n\nconst logger = {\n  name: 'logger-plugin',\n  beforeResponse({request}) {\n    console.log(`Request made to ${request.url}`);\n  }\n}\n\nconst router = new Router({\n  /**\n   * These plugins run for all routes\n   */\n  plugins: [logger],\n  routes: [\n    {\n      path: '/',\n      response: () => html`<${Home}/>`,\n      /**\n       * These plugins run for this route only\n       */\n      plugins: [\n        {\n          name: 'my-plugin',\n          async beforeResponse({url, query, params, request}) {\n            console.log('Running [my-plugin]!');\n\n            /**\n             * Based on conditions we can return a different response\n             */\n            if (query.foo === 'bar') {\n              return new Response('bar');\n            }\n\n            if (query.bar === 'foo') {\n              /**\n               * Returns a `Response` with a stream of the html template as body for convenience\n               */\n              return new HtmlResponse(html`<${Bar}/>`);\n            }\n\n            /**\n             * We can also use plugins for redirects\n             */\n            if (params.user === 'frank') {\n              return Response.redirect('/foo');\n            }\n          }\n        }\n      ]\n    }\n  ]\n});\n```\n\n### `options`\n\nYou can also provide `options`, the `options` will be passed to the `Response` that `handleRequest` returns:\n\n```js\nconst router = new Router({\n  routes: [\n    {\n      path: '/foo',\n      response: () => html`foo`,\n      options: {\n        headers: {\n          'content-type': 'text/xml'\n        }\n      }\n    }\n  ],\n});\n```\n\n## Html\n\n### Basic usage\n\n```js\n/**\n * Children\n */\nfunction Heading({children}) {\n  return html`<h1>${children}</h1>`;\n}\n\nhtml`<${Heading}>Hello world<//>`\n\n/**\n * Self-closing\n */\nfunction Heading() {\n  return html`<h1>Hello world</h1>`;\n}\n\nhtml`<${Heading}/>`\n\n/**\n * Properties and spread\n */\nfunction MyComponent({foo, title, baz, qux, bool}) {\n  return html`\n    <h1>${title}</h1>\n    <div>${foo}</div>\n    <div>${baz} ${qux}</div>\n    <div>${bool}</div>\n  `;\n}\n\nconst object = {\n  baz: 'hello',\n  qux: 'world',\n}\n\nhtml`<${MyComponent} title=\"hello\" foo=${1} ...${object} bool/>`;\n\n/** \n * Note that quotes are optional when using expressions, the following is also fine:\n * foo=\"${1}\"\n * ...bar=\"${object}\"\n */\n```\n\n### Slots\n\nIn addition to `children`, SWTL also supports `slots`, for when you need a little more flexibility for composition. You can use `slots` like so:\n\n```js\nimport { Slot } from 'swtl';\n\nfunction Parent({slots}) {\n  return html`\n    <h1>${slots.default}</h1>\n    <h2>${slots.bar}</h2>\n    <h3>${slots.baz}</h3>\n  `;\n}\n\nhtml`<${Parent}>\n  <${Slot}>Foo<//>\n  <${Slot} name=\"bar\">Bar<//>\n  <${Slot} name=\"baz\">Baz<//>\n<//>`\n\n// Output:\n// <h1>Foo</h1>\n// <h2>Bar</h2>\n// <h3>Baz</h3>\n```\n\n### Iterables/Responses\n\nYou can also use iterables or [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response)s in your templates directly\n\n```js\nconst stream = new ReadableStream({\n  start(controller) {\n    ['a', 'b', 'c'].forEach(s => controller.enqueue(s));\n    controller.close();\n  }\n});\n\nfunction* gen() {\n  yield '<li>1</li>';\n  yield '<li>2</li>';\n  yield '<li>3</li>';\n}\n\nconst template = html`\n  <main> \n    ${fetch('/some.html')}\n    ${caches.match('/some.html')}\n    ${new Response('hello')}\n    ${stream}\n    <ul>\n      ${gen()}\n    </ul>\n  </main>\n`;\n```\n\n## Strategies\n\nWe also ship some built-in components to declaratively let you request files.\n\n```js\nimport { NetworkFirst, NetworkOnly, CacheFirst, CacheOnly, html } from 'swtl';\n\nconst template = html`\n  <h1>Hello world</h1>\n  \n  <${NetworkFirst} file=\"./some-file.html\"/>\n  <${NetworkOnly} file=\"./some-file.html\"/>\n  <${CacheFirst} file=\"./some-file.html\"/>\n  <${CacheOnly} file=\"./some-file.html\"/>\n\n  <footer>Copyright</footer>\n`;\n```\n\nYou can also provide a fallback:\n\n```js\nconst template = html`\n  <${NetworkFirst} file=\"./some-file.html\">\n    <div>Failed to fetch, and not in cache</div>\n  <//>\n\n  <${NetworkOnly} file=\"./some-file.html\">\n    <div>Failed to fetch</div>\n  <//>\n\n  <${CacheFirst} file=\"./some-file.html\">\n    <div>Not in cache, and failed to fetch</div>\n  <//>\n\n  <${CacheOnly} file=\"./some-file.html\">\n    <div>Not in cache</div>\n  <//>\n`;\n```\n\nIf you're using SWTL in a more SPA-like PWA app, you can also use the following strategies:\n\n```js\nimport { networkFirst, networkOnly, cacheFirst, cacheOnly, staleWhileRevalidate } from 'swtl';\n\nimport { Router } from 'swtl';\n\nconst router = new Router({\n  routes: [\n    {\n      path: '/images/*.svg',\n      response: cacheFirst\n    },\n  ]\n});\n\nself.addEventListener('fetch', (event) => {\n  event.respondWith(router.handleRequest(event.request));\n});\n```\n\n## Out of order streaming\n\nFor out of order streaming you can use the built-in `Await` component and provide a `promise` property:\n\n```js\nimport { Await, when } from 'swtl';\n\nhtml`\n  <${Await} promise=${() => fetch('/api/foo').then(r => r.json())}>\n    ${(status, data, error) => html`\n      <h1>Fetching data</h1>\n      ${when(status.pending, () => html`<p>Loading...</p>`)}\n      ${when(status.error, () => html`<p>Failed to fetch data</p>`)}\n      ${when(status.success, () => html`\n        <ul>\n          ${data.map(i => html`<li>${i}</li>`)}\n        </ul>\n      `)}\n    `}\n  <//>\n`\n```\n\n\n## Render\n\nThe `Router` streams responses to the browser via the `render` function internally in `handleRequest`:\n\n```js\nimport { render } from 'swtl';\n\nfor await (const chunk of render(html`<h1>${1}</h1>`)) {\n  console.log(chunk);\n}\n```\n\nBut we also export a `renderToString`:\n\n```js\nimport { renderToString } from 'swtl';\n\nconst result = await renderToString(html`<h1>${1}</h1>`);\n```\n\n## SSR/SWSR\n\nSwtl also supports SSR (Server Side Rendering) or SWSR (Service Worker Side Rendering) of custom elements via a pluggable custom element renderer system. Here's an example: \n\n```js\nimport { litRenderer } from '@swtl/lit';\n\nconst router = new Router({\n  customElementRenderers = [litRenderer]\n  // etc\n})\n```\n\n> Note that `customElementRenderers` are order-sensitive; `customElementRenderers` will do a `match` check to see if the current renderer should or should not render the given custom element. If this `match` check returns false, it will defer to the next renderer (if any) or to the default renderer, which just outputs the custom element as-is, and essentially _doesn't_ SSR/SWSR it. You don't have to provide the default renderer manually; it gets added for you.\n\nYou can then use (in this case) LitElements in your SWTL template, e.g.:\n\n```js\nhtml`<my-lit-el .foo=${{a: 'b'}} bar=\"2\"></my-lit-el>`\n```\n\nAnd the LitElement will get rendered via `@lit-labs/ssr` with Declarative Shadow Dom. If you want to hydrate your component, you'll have to explicitly load the client-side code for your component:\n\n```js\nhtml`\n  <my-lit-el .foo=${{a: 'b'}} bar=\"2\"></my-lit-el>\n  <script type=\"module\" src=\"./my-lit-el.js\"/>\n`\n```\n\n## Creating Custom Element Renderers\n\nYou can also create _custom_ custom element renderers (no, that's not a typo). The way this works is as follows:\n\nSwtl's `html` tag will parse the template for SWTL Components, but also for custom elements. Given the following template:\n\n```js\nhtml`<my-el foo=1 disabled>foo</my-el>`\n```\n\nInternally, the following object will be created:\n```js\n{\n  tag: 'my-el',\n  children: ['foo'],\n  attributes: [\n    {\n      name: 'foo',\n      value: '1'\n    },\n    {\n      name: 'disabled',\n      value: true\n    }\n  ]\n}\n```\n\nCustom element renderers get passed this custom element object. A custom element renderer is an object with two methods on it: `match` and `render`. Here's an example:\n\n```js\nasync function* render({tag, children, attributes}, renderChildren) {\n  yield `<${tag}>`;\n  yield `<template shadowroot=\"open\" shadowrootmode=\"open\">`;\n  yield `render shadow DOM`\n  yield `</template>`;\n  yield* renderChildren(children);\n  yield `</${tag}>`;\n}\n\nexport const fooRenderer = {\n  name: 'foo',\n  /**\n   * Return a boolean to indicate if your custom renderer \n   * should render this custom element or not\n   */\n  match({tag, children, attributes}) {\n    const ctor = customElements.get(tag);\n    return ctor.isFooElement;\n  },\n  render\n}\n```\n\nThe `match` function indicates whether or not this renderer should render the custom element it gets passed. If this returns true, the `render` function will be called for this custom element. If false, it will defer to the `defaultRenderer`, which just outputs the custom element as it was authored and does not SSR/SWSR it.\n\nThe `render` function should be a generator function that yields your SSR/SWSR'd custom element.\n\n## Acknowledgements\n\nInspired by libraries like [`preact/htm`](https://github.com/developit/htm) and [`lit-html`](https://github.com/lit/lit).\n\nAnd [`Astro`](https://github.com/withastro/astro) for doing the hard work of implementing the rendering logic back when I requested this to be supported in Astro.\n\n❤️","readmeFilename":"README.md"}