{"_id":"@alwatr/directive","_rev":"36-bdecfc869d8ddebb3927076272ed690c","name":"@alwatr/directive","dist-tags":{"latest":"10.2.0"},"versions":{"9.6.1":{"name":"@alwatr/directive","version":"9.6.1","keywords":["alwatr","browser-api","declarative-ui","decorator","directive","dom","esm","frontend","idempotent","javascript","lightweight","module","nanolib","spa","synapse","typescript","ui-library","vanilla-js","web-components","web-development"],"author":{"url":"https://ali.mihandoost.com","name":"S. Ali Mihandoost","email":"ali.mihandoost@gmail.com"},"license":"MPL-2.0","_id":"@alwatr/directive@9.6.1","maintainers":[{"name":"alimd","email":"ali.mihan.doost@gmail.com"}],"homepage":"https://github.com/Alwatr/alwatr/tree/next/pkg/nanolib/directive#readme","bugs":{"url":"https://github.com/Alwatr/alwatr/issues"},"dist":{"shasum":"b88d16c127a3d86a589b35c4d0250168bae99e62","tarball":"https://registry.npmjs.org/@alwatr/directive/-/directive-9.6.1.tgz","fileCount":26,"integrity":"sha512-FncP12+2prr/GWHeUi4YzLkMP9pdJk+ZgyfhVxn2xfWYKBLobOgftUZuds0tuFpdpIIE/bSQu+gXsaRuhGmO8Q==","signatures":[{"sig":"MEYCIQCTAjFWPJGA+jfu3OrhlcXHczLMuSyiBGWffEdJ2WaDlgIhAObS+/ygZarsutt9JXdUYjTvgiI6B0J+TIMP6Tw428tf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":92342},"type":"module","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js","default":"./dist/main.js"}},"gitHead":"65400d02263dcfef25f8e88bec164013615164d3","scripts":{"b":"bun run build","t":"bun run test","w":"bun run watch","cl":"bun run clean","lint":"eslint src/ --ext .ts","test":"ALWATR_DEBUG=0 bun test","build":"bun run build:ts && bun run build:es","clean":"rm -rfv dist *.tsbuildinfo","watch":"bun run watch:ts & bun run watch:es","format":"prettier --write \"src/**/*.ts\"","build:es":"nano-build --preset=module src/main.ts","build:ts":"tsc --build","watch:es":"bun run build:es --watch","watch:ts":"bun run build:ts --watch --preserveWatchOutput"},"_npmUser":{"name":"alimd","email":"ali.mihan.doost@gmail.com"},"repository":{"url":"git+https://github.com/Alwatr/alwatr.git","type":"git","directory":"pkg/nanolib/directive"},"_npmVersion":"lerna/5.0.0/node@v20.20.2+x64 (linux)","description":"Connect your TypeScript classes to the DOM, declaratively.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@alwatr/delay":"9.4.5","@alwatr/logger":"9.4.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.2","@alwatr/standard":"9.4.5","@alwatr/nano-build":"9.3.0","@alwatr/type-helper":"9.1.1","@happy-dom/global-registrator":"^20.8.9"},"_npmOperationalInternal":{"tmp":"tmp/directive_9.6.1_1776090565489_0.6710089127007504","host":"s3://npm-registry-packages-npm-production"}},"9.7.0":{"name":"@alwatr/directive","version":"9.7.0","keywords":["alwatr","browser-api","declarative-ui","decorator","directive","dom","esm","frontend","idempotent","javascript","lightweight","module","nanolib","spa","synapse","typescript","ui-library","vanilla-js","web-components","web-development"],"author":{"url":"https://ali.mihandoost.com","name":"S. Ali Mihandoost","email":"ali.mihandoost@gmail.com"},"license":"MPL-2.0","_id":"@alwatr/directive@9.7.0","maintainers":[{"name":"alimd","email":"ali.mihan.doost@gmail.com"}],"homepage":"https://github.com/Alwatr/alwatr/tree/next/pkg/nanolib/directive#readme","bugs":{"url":"https://github.com/Alwatr/alwatr/issues"},"dist":{"shasum":"d9569eb01e549c7affd71900a3d2ee735e89d362","tarball":"https://registry.npmjs.org/@alwatr/directive/-/directive-9.7.0.tgz","fileCount":26,"integrity":"sha512-eN3BlXVLO897NO7TPG7JeN4LVDIL2gOgptuIAMYGagJjF2WTGjP5npgfc+MukwgwfEZByPABwbHli6F+6RKHQw==","signatures":[{"sig":"MEUCIDbTwHLqpSF/wdQBzxYUo0zWDjNS+TN1rMbVWiKDkkgUAiEA6YleCb3G45Q9tqIxGVahTpJkqCzCdddVR+2vxR+rLjg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99455},"type":"module","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js","default":"./dist/main.js"}},"gitHead":"cfe0da1394b656a10123865dba26057a07b3759a","scripts":{"b":"bun run build","t":"bun run test","w":"bun run watch","cl":"bun run clean","lint":"eslint src/ --ext .ts","test":"ALWATR_DEBUG=0 bun test","build":"bun run build:ts && bun run build:es","clean":"rm -rfv dist *.tsbuildinfo","watch":"bun run watch:ts & bun run watch:es","format":"prettier --write \"src/**/*.ts\"","build:es":"nano-build --preset=module src/main.ts","build:ts":"tsc --build","watch:es":"bun run build:es --watch","watch:ts":"bun run build:ts --watch --preserveWatchOutput"},"_npmUser":{"name":"alimd","email":"ali.mihan.doost@gmail.com"},"repository":{"url":"git+https://github.com/Alwatr/alwatr.git","type":"git","directory":"pkg/nanolib/directive"},"_npmVersion":"lerna/5.0.0/node@v20.20.2+x64 (linux)","description":"Connect your TypeScript classes to the DOM, declaratively.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@alwatr/delay":"9.7.0","@alwatr/logger":"9.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.2","@alwatr/standard":"9.7.0","@alwatr/nano-build":"9.3.0","@alwatr/type-helper":"9.1.1","@happy-dom/global-registrator":"^20.8.9"},"_npmOperationalInternal":{"tmp":"tmp/directive_9.7.0_1776183067229_0.30864311417673296","host":"s3://npm-registry-packages-npm-production"}},"9.8.0":{"name":"@alwatr/directive","version":"9.8.0","keywords":["alwatr","browser-api","declarative-ui","decorator","directive","dom","esm","frontend","idempotent","javascript","lightweight","module","nanolib","spa","synapse","typescript","ui-library","vanilla-js","web-components","web-development"],"author":{"url":"https://ali.mihandoost.com","name":"S. Ali Mihandoost","email":"ali.mihandoost@gmail.com"},"license":"MPL-2.0","_id":"@alwatr/directive@9.8.0","maintainers":[{"name":"alimd","email":"ali.mihan.doost@gmail.com"}],"homepage":"https://github.com/Alwatr/alwatr/tree/next/pkg/nanolib/directive#readme","bugs":{"url":"https://github.com/Alwatr/alwatr/issues"},"dist":{"shasum":"03cc1a0717c157b383a3ec89be0931f47b77a7c3","tarball":"https://registry.npmjs.org/@alwatr/directive/-/directive-9.8.0.tgz","fileCount":26,"integrity":"sha512-B1aSPvDpqAXSA+inlSx6YI+2xWurz9V2CyG2YL6n0VFE/7kvNpgkcTvkawxj2RE1bgtk9LMWLiaek/UcOplFTA==","signatures":[{"sig":"MEQCIA+etaG8A+Lb8x91j+NJSYUtXOfprHIbrK37iYI0wiRrAiApY2m3ukHSBMWehwcBpTsYjNn8bkDg3WpVS8E8SQAmcQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":109322},"type":"module","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js","default":"./dist/main.js"}},"gitHead":"8af99fd7f11cbf6f8df8a8e675501204726dd889","scripts":{"b":"bun run build","t":"bun run test","w":"bun run watch","cl":"bun run clean","lint":"eslint src/ --ext .ts","test":"ALWATR_DEBUG=0 bun test","build":"bun run build:ts && bun run build:es","clean":"rm -rfv dist *.tsbuildinfo","watch":"bun run watch:ts & bun run watch:es","format":"prettier --write \"src/**/*.ts\"","build:es":"nano-build --preset=module src/main.ts","build:ts":"tsc --build","watch:es":"bun run build:es --watch","watch:ts":"bun run build:ts --watch --preserveWatchOutput"},"_npmUser":{"name":"alimd","email":"ali.mihan.doost@gmail.com"},"repository":{"url":"git+https://github.com/Alwatr/alwatr.git","type":"git","directory":"pkg/nanolib/directive"},"_npmVersion":"lerna/5.0.0/node@v20.20.2+x64 (linux)","description":"Connect your TypeScript classes to the DOM, declaratively.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@alwatr/delay":"9.7.0","@alwatr/logger":"9.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.2","@alwatr/standard":"9.7.0","@alwatr/nano-build":"9.3.0","@alwatr/type-helper":"9.1.1","@happy-dom/global-registrator":"^20.9.0"},"_npmOperationalInternal":{"tmp":"tmp/directive_9.8.0_1776187996992_0.03940282460959654","host":"s3://npm-registry-packages-npm-production"}},"9.9.0":{"name":"@alwatr/directive","version":"9.9.0","keywords":["alwatr","browser-api","declarative-ui","decorator","directive","dom","esm","frontend","idempotent","javascript","lightweight","module","nanolib","spa","synapse","typescript","ui-library","vanilla-js","web-components","web-development"],"author":{"url":"https://ali.mihandoost.com","name":"S. Ali Mihandoost","email":"ali.mihandoost@gmail.com"},"license":"MPL-2.0","_id":"@alwatr/directive@9.9.0","maintainers":[{"name":"alimd","email":"ali.mihan.doost@gmail.com"}],"homepage":"https://github.com/Alwatr/alwatr/tree/next/pkg/nanolib/directive#readme","bugs":{"url":"https://github.com/Alwatr/alwatr/issues"},"dist":{"shasum":"715aa95778d4304bacc53a603ca5d6be2328f75f","tarball":"https://registry.npmjs.org/@alwatr/directive/-/directive-9.9.0.tgz","fileCount":26,"integrity":"sha512-EEvW9qt0/z9UksZiBLPHRWoXXdbJGLYid+PwHCpR7gnWtZP+e3q+qLnHAzgLRctKPyoPWI8/ZVCGW+8qx2vJ4w==","signatures":[{"sig":"MEQCIEaEp860ya8Q25jZI+fVqwRPISFEHdCCmgfQ9CCw3xUTAiBAF3CziC9xEaP3nk6pmnIsS42TU0rWe64qQEPLHRQgTA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":116600},"type":"module","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js","default":"./dist/main.js"}},"gitHead":"ddf2d42c90a5dd90cccd0351d106833c80726136","scripts":{"b":"bun run build","t":"bun run test","w":"bun run watch","cl":"bun run clean","lint":"eslint src/ --ext .ts","test":"ALWATR_DEBUG=0 bun test","build":"bun run build:ts && bun run build:es","clean":"rm -rfv dist *.tsbuildinfo","watch":"bun run watch:ts & bun run watch:es","format":"prettier --write \"src/**/*.ts\"","build:es":"nano-build --preset=module src/main.ts","build:ts":"tsc --build","watch:es":"bun run build:es --watch","watch:ts":"bun run build:ts --watch --preserveWatchOutput"},"_npmUser":{"name":"alimd","email":"ali.mihan.doost@gmail.com"},"repository":{"url":"git+https://github.com/Alwatr/alwatr.git","type":"git","directory":"pkg/nanolib/directive"},"_npmVersion":"lerna/5.0.0/node@v20.20.2+x64 (linux)","description":"Connect your TypeScript classes to the DOM, declaratively.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@alwatr/delay":"9.7.0","@alwatr/logger":"9.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.2","@alwatr/standard":"9.7.0","@alwatr/nano-build":"9.3.0","@alwatr/type-helper":"9.1.1","@happy-dom/global-registrator":"^20.9.0"},"_npmOperationalInternal":{"tmp":"tmp/directive_9.9.0_1776193929393_0.05020636122574662","host":"s3://npm-registry-packages-npm-production"}},"9.10.0":{"name":"@alwatr/directive","version":"9.10.0","keywords":["alwatr","browser-api","declarative-ui","decorator","directive","dom","esm","frontend","idempotent","javascript","lightweight","module","nanolib","spa","synapse","typescript","ui-library","vanilla-js","web-components","web-development"],"author":{"url":"https://ali.mihandoost.com","name":"S. Ali Mihandoost","email":"ali.mihandoost@gmail.com"},"license":"MPL-2.0","_id":"@alwatr/directive@9.10.0","maintainers":[{"name":"alimd","email":"ali.mihan.doost@gmail.com"}],"homepage":"https://github.com/Alwatr/alwatr/tree/next/pkg/nanolib/directive#readme","bugs":{"url":"https://github.com/Alwatr/alwatr/issues"},"dist":{"shasum":"12eb936172bf53f33e2315f11e526d597a938d67","tarball":"https://registry.npmjs.org/@alwatr/directive/-/directive-9.10.0.tgz","fileCount":26,"integrity":"sha512-53VIfDySrX5B6YjSycdTx9rTywfujJJ2+AlhMCgI4uWar2S783UAXFYgaISAQJ0BPgzWpXGN8GZuHuwSzSpF/Q==","signatures":[{"sig":"MEUCIQD2q2+h8T15LJgO1MSHGHliVG6NzvveIU5IujjTG18LLQIgS+nGnOAkHWEI0hL+y3VmQGSm3noxLL7S/lsesTmkFJg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":127287},"type":"module","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js","default":"./dist/main.js"}},"gitHead":"b88ae5cd72935e76e019e3765c36eb633ece2910","scripts":{"b":"bun run build","t":"bun run test","w":"bun run watch","cl":"bun run clean","lint":"eslint src/ --ext .ts","test":"ALWATR_DEBUG=0 bun test","build":"bun run build:ts && bun run build:es","clean":"rm -rfv dist *.tsbuildinfo","watch":"bun run watch:ts & bun run watch:es","format":"prettier --write \"src/**/*.ts\"","build:es":"nano-build --preset=module-web src/main.ts","build:ts":"tsc --build","watch:es":"bun run build:es --watch","watch:ts":"bun run build:ts --watch --preserveWatchOutput"},"_npmUser":{"name":"alimd","email":"ali.mihan.doost@gmail.com"},"repository":{"url":"git+https://github.com/Alwatr/alwatr.git","type":"git","directory":"pkg/nanolib/directive"},"_npmVersion":"lerna/5.0.0/node@v20.20.2+x64 (linux)","description":"Connect your TypeScript classes to the DOM, declaratively.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@alwatr/delay":"9.10.0","@alwatr/logger":"9.10.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.2","@alwatr/standard":"9.7.0","@alwatr/nano-build":"9.10.0","@alwatr/type-helper":"9.1.1","@happy-dom/global-registrator":"^20.9.0"},"_npmOperationalInternal":{"tmp":"tmp/directive_9.10.0_1776278448948_0.6544033245871688","host":"s3://npm-registry-packages-npm-production"}},"9.10.1":{"name":"@alwatr/directive","version":"9.10.1","keywords":["alwatr","browser-api","declarative-ui","decorator","directive","dom","esm","frontend","idempotent","javascript","lightweight","module","nanolib","spa","synapse","typescript","ui-library","vanilla-js","web-components","web-development"],"author":{"url":"https://ali.mihandoost.com","name":"S. Ali Mihandoost","email":"ali.mihandoost@gmail.com"},"license":"MPL-2.0","_id":"@alwatr/directive@9.10.1","maintainers":[{"name":"alimd","email":"ali.mihan.doost@gmail.com"}],"homepage":"https://github.com/Alwatr/alwatr/tree/next/pkg/nanolib/directive#readme","bugs":{"url":"https://github.com/Alwatr/alwatr/issues"},"dist":{"shasum":"5428d9a204ca0e0cf8bc81e6cf43f3267a81a3a5","tarball":"https://registry.npmjs.org/@alwatr/directive/-/directive-9.10.1.tgz","fileCount":26,"integrity":"sha512-rry97NCyzQJwvQnIGifT7qscO0P0f/ND7Kc7h00fan54nLmor+4kTvR5+sJ6MUiMFqj2NbcQWlAomy5kNS8g4w==","signatures":[{"sig":"MEYCIQCV0IrzIYO6pRFfNBsXf33yRqskneNnlq9/8kA7Jlw7ygIhAJzrEWH2gQGE30dSdYzryeboL/ko0r+y0ybceiDN94Yk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":127287},"type":"module","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js","default":"./dist/main.js"}},"gitHead":"602a7b285b0cf6d799d97e44db81265ff73e47a2","scripts":{"b":"bun run build","t":"bun run test","w":"bun run watch","cl":"bun run clean","lint":"eslint src/ --ext .ts","test":"ALWATR_DEBUG=0 bun test","build":"bun run build:ts && bun run build:es","clean":"rm -rfv dist *.tsbuildinfo","watch":"bun run watch:ts & bun run watch:es","format":"prettier --write \"src/**/*.ts\"","build:es":"nano-build --preset=module-web src/main.ts","build:ts":"tsc --build","watch:es":"bun run build:es --watch","watch:ts":"bun run build:ts --watch --preserveWatchOutput"},"_npmUser":{"name":"alimd","email":"ali.mihan.doost@gmail.com"},"repository":{"url":"git+https://github.com/Alwatr/alwatr.git","type":"git","directory":"pkg/nanolib/directive"},"_npmVersion":"lerna/5.0.0/node@v20.20.2+x64 (linux)","description":"Connect your TypeScript classes to the DOM, declaratively.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@alwatr/delay":"9.10.1","@alwatr/logger":"9.10.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.2","@alwatr/standard":"9.7.0","@alwatr/nano-build":"9.10.1","@alwatr/type-helper":"9.1.1","@happy-dom/global-registrator":"^20.9.0"},"_npmOperationalInternal":{"tmp":"tmp/directive_9.10.1_1776541377200_0.4526708617622408","host":"s3://npm-registry-packages-npm-production"}},"9.11.0":{"name":"@alwatr/directive","version":"9.11.0","keywords":["alwatr","browser-api","declarative-ui","decorator","directive","dom","esm","frontend","idempotent","javascript","lightweight","module","nanolib","spa","synapse","typescript","ui-library","vanilla-js","web-components","web-development"],"author":{"url":"https://ali.mihandoost.com","name":"S. Ali Mihandoost","email":"ali.mihandoost@gmail.com"},"license":"MPL-2.0","_id":"@alwatr/directive@9.11.0","maintainers":[{"name":"alimd","email":"ali.mihan.doost@gmail.com"}],"homepage":"https://github.com/Alwatr/alwatr/tree/next/pkg/nanolib/directive#readme","bugs":{"url":"https://github.com/Alwatr/alwatr/issues"},"dist":{"shasum":"1a863e88201e49577f3d5e37e197f9cf55c8dd97","tarball":"https://registry.npmjs.org/@alwatr/directive/-/directive-9.11.0.tgz","fileCount":26,"integrity":"sha512-AWhskDWRa1z0LMCmP1wOmPfiTRbqSM2eaY9mUG4VU9TKE8rRPIJZMbXB66LItOpvfLs00AVK9wZtXD/BT4hiwQ==","signatures":[{"sig":"MEUCIG3JiNLruP8HbI5TG2KZzNdH6QWV0AbVm1tKtUaKvcU5AiEAkS2cf4HbBreVQMWt/anCNyblI0xoYp4ue0yBkAl47XQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":132227},"type":"module","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js","default":"./dist/main.js"}},"gitHead":"29a71f04aff78a80f55c57fa771af89cc0867cf6","scripts":{"b":"bun run build","t":"bun run test","w":"bun run watch","cl":"bun run clean","lint":"eslint src/ --ext .ts","test":"ALWATR_DEBUG=0 bun test","build":"bun run build:ts && bun run build:es","clean":"rm -rfv dist *.tsbuildinfo","watch":"bun run watch:ts & bun run watch:es","format":"prettier --write \"src/**/*.ts\"","build:es":"nano-build --preset=module-web src/main.ts","build:ts":"tsc --build","watch:es":"bun run build:es --watch","watch:ts":"bun run build:ts --watch --preserveWatchOutput"},"_npmUser":{"name":"alimd","email":"ali.mihan.doost@gmail.com"},"repository":{"url":"git+https://github.com/Alwatr/alwatr.git","type":"git","directory":"pkg/nanolib/directive"},"_npmVersion":"lerna/5.0.0/node@v20.20.2+x64 (linux)","description":"Connect your TypeScript classes to the DOM, declaratively.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@alwatr/delay":"9.10.1","@alwatr/logger":"9.10.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.2","@alwatr/standard":"9.7.0","@alwatr/nano-build":"9.10.1","@alwatr/type-helper":"9.1.1","@happy-dom/global-registrator":"^20.9.0"},"_npmOperationalInternal":{"tmp":"tmp/directive_9.11.0_1776608453535_0.7871396676362974","host":"s3://npm-registry-packages-npm-production"}},"9.11.2":{"name":"@alwatr/directive","version":"9.11.2","keywords":["alwatr","browser-api","declarative-ui","decorator","directive","dom","esm","frontend","idempotent","javascript","lightweight","module","nanolib","spa","synapse","typescript","ui-library","vanilla-js","web-components","web-development"],"author":{"url":"https://ali.mihandoost.com","name":"S. Ali Mihandoost","email":"ali.mihandoost@gmail.com"},"license":"MPL-2.0","_id":"@alwatr/directive@9.11.2","maintainers":[{"name":"alimd","email":"ali.mihan.doost@gmail.com"}],"homepage":"https://github.com/Alwatr/alwatr/tree/next/pkg/nanolib/directive#readme","bugs":{"url":"https://github.com/Alwatr/alwatr/issues"},"dist":{"shasum":"b7da857893d87e5cbbc2d806767216b506c0cfa1","tarball":"https://registry.npmjs.org/@alwatr/directive/-/directive-9.11.2.tgz","fileCount":26,"integrity":"sha512-74VxJvmDJSUIrUpslu6LkPOy1PEw2POCQ8YrWVcgyUZUC2Wd93SfdioDbJGBkPfD2CPVgJ06pSJrLkDzy4YT6Q==","signatures":[{"sig":"MEQCIDYTg3KsIJrmNswYK6lgNr6b0agh3blC51Ng589FsdhcAiAy19YO7lYVQDUxJ7Ol6O2h4tkoiBJf4okwev2WUmLz1w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":130246},"type":"module","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js","default":"./dist/main.js"}},"gitHead":"ad72dc5b615ab443b1f7e2616ec647574bb04cf5","scripts":{"b":"bun run build","t":"bun run test","w":"bun run watch","cl":"bun run clean","lint":"eslint src/ --ext .ts","test":"ALWATR_DEBUG=0 bun test","build":"bun run build:ts && bun run build:es","clean":"rm -rfv dist *.tsbuildinfo","watch":"bun run watch:ts & bun run watch:es","format":"prettier --write \"src/**/*.ts\"","build:es":"nano-build --preset=module-web src/main.ts","build:ts":"tsc --build","watch:es":"bun run build:es --watch","watch:ts":"bun run build:ts --watch --preserveWatchOutput"},"_npmUser":{"name":"alimd","email":"ali.mihan.doost@gmail.com"},"repository":{"url":"git+https://github.com/Alwatr/alwatr.git","type":"git","directory":"pkg/nanolib/directive"},"_npmVersion":"lerna/5.1.0/node@v20.20.2+x64 (linux)","description":"Connect your TypeScript classes to the DOM, declaratively.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@alwatr/delay":"9.11.2","@alwatr/logger":"9.11.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@alwatr/standard":"9.11.2","@alwatr/nano-build":"9.10.1","@alwatr/type-helper":"9.11.2","@happy-dom/global-registrator":"^20.9.0"},"_npmOperationalInternal":{"tmp":"tmp/directive_9.11.2_1776806006380_0.9235057942876952","host":"s3://npm-registry-packages-npm-production"}},"9.14.0":{"name":"@alwatr/directive","version":"9.14.0","keywords":["alwatr","browser-api","declarative-ui","decorator","directive","dom","esm","frontend","idempotent","javascript","lightweight","module","nanolib","spa","synapse","typescript","ui-library","vanilla-js","web-components","web-development"],"author":{"url":"https://ali.mihandoost.com","name":"S. Ali Mihandoost","email":"ali.mihandoost@gmail.com"},"license":"MPL-2.0","_id":"@alwatr/directive@9.14.0","maintainers":[{"name":"alimd","email":"ali.mihan.doost@gmail.com"}],"homepage":"https://github.com/Alwatr/alwatr/tree/next/pkg/nanolib/directive#readme","bugs":{"url":"https://github.com/Alwatr/alwatr/issues"},"dist":{"shasum":"ef9cd1e594d8cd8eeb4934acfaf166ca11044e62","tarball":"https://registry.npmjs.org/@alwatr/directive/-/directive-9.14.0.tgz","fileCount":26,"integrity":"sha512-qAsl5TZbIBHe0Tn1FdUAEVFn9vXBuSiBKfTZwJuxIwuAPw1jMUAB7gyZon4IGLytqr0GNBKMufWF6+N+++mnZA==","signatures":[{"sig":"MEUCICYgQxdVPDb1IAt4MqWRQ91Wzuhpe0DBNtCkxtrfo/60AiEAkbZkC0izdiwhVTkmkZDx5l/UObHZiSXyNDmfdpDV0kA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":130453},"type":"module","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js","default":"./dist/main.js"}},"gitHead":"4e499b23191d4460ea60f34cde8a99b472741f1a","scripts":{"b":"bun run build","t":"bun run test","w":"bun run watch","cl":"bun run clean","lint":"eslint src/ --ext .ts","test":"ALWATR_DEBUG=0 bun test","build":"bun run build:ts && bun run build:es","clean":"rm -rfv dist *.tsbuildinfo","watch":"bun run watch:ts & bun run watch:es","format":"prettier --write \"src/**/*.ts\"","build:es":"nano-build --preset=module-web src/main.ts","build:ts":"tsc --build","watch:es":"bun run build:es --watch","watch:ts":"bun run build:ts --watch --preserveWatchOutput"},"_npmUser":{"name":"alimd","email":"ali.mihan.doost@gmail.com"},"repository":{"url":"git+https://github.com/Alwatr/alwatr.git","type":"git","directory":"pkg/nanolib/directive"},"_npmVersion":"lerna/5.2.0/node@v20.20.2+x64 (linux)","description":"Connect your TypeScript classes to the DOM, declaratively.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@alwatr/delay":"9.14.0","@alwatr/logger":"9.14.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@alwatr/standard":"9.14.0","@alwatr/nano-build":"9.14.0","@alwatr/type-helper":"9.14.0","@happy-dom/global-registrator":"^20.9.0"},"_npmOperationalInternal":{"tmp":"tmp/directive_9.14.0_1777126816588_0.9398350624479583","host":"s3://npm-registry-packages-npm-production"}},"9.16.0":{"name":"@alwatr/directive","version":"9.16.0","keywords":["alwatr","browser-api","declarative-ui","decorator","directive","dom","esm","frontend","idempotent","javascript","lightweight","module","nanolib","spa","synapse","typescript","ui-library","vanilla-js","web-components","web-development"],"author":{"url":"https://ali.mihandoost.com","name":"S. Ali Mihandoost","email":"ali.mihandoost@gmail.com"},"license":"MPL-2.0","_id":"@alwatr/directive@9.16.0","maintainers":[{"name":"alimd","email":"ali.mihan.doost@gmail.com"}],"homepage":"https://github.com/Alwatr/alwatr/tree/next/pkg/nanolib/directive#readme","bugs":{"url":"https://github.com/Alwatr/alwatr/issues"},"dist":{"shasum":"60ba1d2d51c1a160e8a309a921295807857fe47b","tarball":"https://registry.npmjs.org/@alwatr/directive/-/directive-9.16.0.tgz","fileCount":26,"integrity":"sha512-XsTatKwHDErFztjEuvdAIuMnebuNRaiD5fp/VOqdCLtCh/NkDo7NB/9EpB5R/sI2DrOnxmg+bw4y3QMs4BTG7A==","signatures":[{"sig":"MEYCIQDtYuxQ7PkhDX6Qqvu/wlCQ0KyCuPEQaAwKJQVn86bWpgIhAKj4DyN3Lin7ZHC+yn3biS65cQKRarkQSg07TUbMGx2U","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131857},"type":"module","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js","default":"./dist/main.js"}},"gitHead":"c210044f6e8ab444ec2f9e600f095761cbd279bd","scripts":{"b":"bun run build","t":"bun run test","w":"bun run watch","cl":"bun run clean","lint":"eslint src/ --ext .ts","test":"ALWATR_DEBUG=0 bun test","build":"bun run build:ts && bun run build:es","clean":"rm -rfv dist *.tsbuildinfo","watch":"bun run watch:ts & bun run watch:es","format":"prettier --write \"src/**/*.ts\"","build:es":"nano-build --preset=module-web src/main.ts","build:ts":"tsc --build","watch:es":"bun run build:es --watch","watch:ts":"bun run build:ts --watch --preserveWatchOutput"},"_npmUser":{"name":"alimd","email":"ali.mihan.doost@gmail.com"},"repository":{"url":"git+https://github.com/Alwatr/alwatr.git","type":"git","directory":"pkg/nanolib/directive"},"_npmVersion":"lerna/5.2.0/node@v20.20.2+x64 (linux)","description":"Connect your TypeScript classes to the DOM, declaratively.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@alwatr/delay":"9.16.0","@alwatr/logger":"9.16.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@alwatr/standard":"9.16.0","@alwatr/nano-build":"9.14.0","@alwatr/type-helper":"9.14.0","@happy-dom/global-registrator":"^20.9.0"},"_npmOperationalInternal":{"tmp":"tmp/directive_9.16.0_1777287342416_0.03398992297993253","host":"s3://npm-registry-packages-npm-production"}},"9.18.0":{"name":"@alwatr/directive","version":"9.18.0","keywords":["alwatr","browser-api","declarative-ui","decorator","directive","dom","esm","frontend","idempotent","javascript","lightweight","module","nanolib","spa","synapse","typescript","ui-library","vanilla-js","web-components","web-development"],"author":{"url":"https://ali.mihandoost.com","name":"S. Ali Mihandoost","email":"ali.mihandoost@gmail.com"},"license":"MPL-2.0","_id":"@alwatr/directive@9.18.0","maintainers":[{"name":"alimd","email":"ali.mihan.doost@gmail.com"}],"homepage":"https://github.com/Alwatr/alwatr/tree/next/pkg/nanolib/directive#readme","bugs":{"url":"https://github.com/Alwatr/alwatr/issues"},"dist":{"shasum":"0d4deb6dd90ee05515f59ecefe63dd2b3cb20af6","tarball":"https://registry.npmjs.org/@alwatr/directive/-/directive-9.18.0.tgz","fileCount":29,"integrity":"sha512-oBioAT8EgQWnqI5XvD0TXaCinLtsB6AgYy4pNxP88S3Gu2pPrKV4N8pVN08ikDYhLVTz2OcrhG53YlJmzBdfuw==","signatures":[{"sig":"MEYCIQCxFe8G7ssh8rVEPRuTSVSoq3i6Z7usq1/kG2fe7gzXvQIhAMgW8FSdBwUDNlToyM+iotlypEjKC1I01RDbCaRTUJNV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":193221},"type":"module","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js","default":"./dist/main.js"}},"gitHead":"ae7aed95106fd2e6d3c14f0628fc12ae8a29ea15","scripts":{"b":"bun run build","t":"bun run test","w":"bun run watch","cl":"bun run clean","lint":"eslint src/ --ext .ts","test":"ALWATR_DEBUG=0 bun test","build":"bun run build:ts && bun run build:es","clean":"rm -rfv dist *.tsbuildinfo","watch":"bun run watch:ts & bun run watch:es","format":"prettier --write \"src/**/*.ts\"","build:es":"nano-build --preset=module-web src/main.ts","build:ts":"tsc --build","watch:es":"bun run build:es --watch","watch:ts":"bun run build:ts --watch --preserveWatchOutput"},"_npmUser":{"name":"alimd","email":"ali.mihan.doost@gmail.com"},"repository":{"url":"git+https://github.com/Alwatr/alwatr.git","type":"git","directory":"pkg/nanolib/directive"},"_npmVersion":"lerna/5.2.0/node@v20.20.2+x64 (linux)","description":"Connect your TypeScript classes to the DOM, declaratively.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"lit-html":"^3.3.2","@alwatr/delay":"9.16.0","@alwatr/logger":"9.16.0","@alwatr/signal":"9.16.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@alwatr/standard":"9.16.0","@alwatr/nano-build":"9.14.0","@alwatr/type-helper":"9.14.0","@happy-dom/global-registrator":"^20.9.0"},"_npmOperationalInternal":{"tmp":"tmp/directive_9.18.0_1777378493990_0.20131901161534738","host":"s3://npm-registry-packages-npm-production"}},"9.20.0":{"name":"@alwatr/directive","version":"9.20.0","keywords":["alwatr","browser-api","declarative-ui","decorator","directive","dom","esm","frontend","idempotent","javascript","lightweight","module","nanolib","spa","synapse","typescript","ui-library","vanilla-js","web-components","web-development"],"author":{"url":"https://ali.mihandoost.com","name":"S. Ali Mihandoost","email":"ali.mihandoost@gmail.com"},"license":"MPL-2.0","_id":"@alwatr/directive@9.20.0","maintainers":[{"name":"alimd","email":"ali.mihan.doost@gmail.com"}],"homepage":"https://github.com/Alwatr/alwatr/tree/next/pkg/nanolib/directive#readme","bugs":{"url":"https://github.com/Alwatr/alwatr/issues"},"dist":{"shasum":"42a726d1a06f7a22242806ca8faa91f63438f092","tarball":"https://registry.npmjs.org/@alwatr/directive/-/directive-9.20.0.tgz","fileCount":29,"integrity":"sha512-EuUXnTGexZZNJ/fvnWoneh+r9G+1NHVbladolXWP3jYUhb2Du234zkU87edcITOhl1nDXIQx3ex217Hx51/P7A==","signatures":[{"sig":"MEQCICFk+ntw6Z0t0Zug9weeVuBoV5I2FejbiPn91mUyGdT9AiA7VPyc9YDVZ7K7X3Yrtzvh85DVI5q7HmPZJgJ6aQtjnw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":194109},"type":"module","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js","default":"./dist/main.js"}},"gitHead":"6e47fd80a2da33bb78e12b1d51258f11e2caec72","scripts":{"b":"bun run build","t":"bun run test","w":"bun run watch","cl":"bun run clean","lint":"eslint src/ --ext .ts","test":"ALWATR_DEBUG=0 bun test","build":"bun run build:ts && bun run build:es","clean":"rm -rfv dist *.tsbuildinfo","watch":"bun run watch:ts & bun run watch:es","format":"prettier --write \"src/**/*.ts\"","build:es":"nano-build --preset=module-web src/main.ts","build:ts":"tsc --build","watch:es":"bun run build:es --watch","watch:ts":"bun run build:ts --watch --preserveWatchOutput"},"_npmUser":{"name":"alimd","email":"ali.mihan.doost@gmail.com"},"repository":{"url":"git+https://github.com/Alwatr/alwatr.git","type":"git","directory":"pkg/nanolib/directive"},"_npmVersion":"lerna/5.2.0/node@v20.20.2+x64 (linux)","description":"Connect your TypeScript classes to the DOM, declaratively.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"lit-html":"^3.3.2","@alwatr/delay":"9.20.0","@alwatr/logger":"9.16.0","@alwatr/signal":"9.20.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@alwatr/standard":"9.16.0","@alwatr/nano-build":"9.14.0","@alwatr/type-helper":"9.14.0","@happy-dom/global-registrator":"^20.9.0"},"_npmOperationalInternal":{"tmp":"tmp/directive_9.20.0_1777577626803_0.6729295701584397","host":"s3://npm-registry-packages-npm-production"}},"9.20.1":{"name":"@alwatr/directive","version":"9.20.1","keywords":["alwatr","browser-api","declarative-ui","decorator","directive","dom","esm","frontend","idempotent","javascript","lightweight","module","nanolib","spa","synapse","typescript","ui-library","vanilla-js","web-components","web-development"],"author":{"url":"https://ali.mihandoost.com","name":"S. Ali Mihandoost","email":"ali.mihandoost@gmail.com"},"license":"MPL-2.0","_id":"@alwatr/directive@9.20.1","maintainers":[{"name":"alimd","email":"ali.mihan.doost@gmail.com"}],"homepage":"https://github.com/Alwatr/alwatr/tree/next/pkg/nanolib/directive#readme","bugs":{"url":"https://github.com/Alwatr/alwatr/issues"},"dist":{"shasum":"36b03465177def88f7e1bcc826c553b4e49bd691","tarball":"https://registry.npmjs.org/@alwatr/directive/-/directive-9.20.1.tgz","fileCount":29,"integrity":"sha512-a+EjA7JB/2bNOPDLj5MkETsgvUI5E0b2ZBCMYBnhharQgBruZajsV96AujFjMY7dc0jpKlgHhXWr9Uk9iq5xqw==","signatures":[{"sig":"MEUCIQCM18t0FgoPkAyV9JokJYiFsTaMsrmTIoAH3lJy1a5Q0AIgfqsuN8EwIKlxgfe0sCrkOwEOSxoFaVYecqb2hQ6dHFE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":194109},"type":"module","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js","default":"./dist/main.js"}},"gitHead":"73461cfe9ed6d5f18f606d585057203103ea05fa","scripts":{"b":"bun run build","t":"bun run test","w":"bun run watch","cl":"bun run clean","lint":"eslint src/ --ext .ts","test":"ALWATR_DEBUG=0 bun test","build":"bun run build:ts && bun run build:es","clean":"rm -rfv dist *.tsbuildinfo","watch":"bun run watch:ts & bun run watch:es","format":"prettier --write \"src/**/*.ts\"","build:es":"nano-build --preset=module-web src/main.ts","build:ts":"tsc --build","watch:es":"bun run build:es --watch","watch:ts":"bun run build:ts --watch --preserveWatchOutput"},"_npmUser":{"name":"alimd","email":"ali.mihan.doost@gmail.com"},"repository":{"url":"git+https://github.com/Alwatr/alwatr.git","type":"git","directory":"pkg/nanolib/directive"},"_npmVersion":"lerna/5.2.0/node@v20.20.2+x64 (linux)","description":"Connect your TypeScript classes to the DOM, declaratively.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"lit-html":"^3.3.2","@alwatr/delay":"9.20.0","@alwatr/logger":"9.20.1","@alwatr/signal":"9.20.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@alwatr/standard":"9.16.0","@alwatr/nano-build":"9.14.0","@alwatr/type-helper":"9.14.0","@happy-dom/global-registrator":"^20.9.0"},"_npmOperationalInternal":{"tmp":"tmp/directive_9.20.1_1777578611968_0.2415750445499627","host":"s3://npm-registry-packages-npm-production"}},"9.22.0":{"name":"@alwatr/directive","version":"9.22.0","keywords":["alwatr","browser-api","declarative-ui","decorator","directive","dom","esm","frontend","idempotent","javascript","lightweight","module","nanolib","spa","synapse","typescript","ui-library","vanilla-js","web-components","web-development"],"author":{"url":"https://ali.mihandoost.com","name":"S. Ali Mihandoost","email":"ali.mihandoost@gmail.com"},"license":"MPL-2.0","_id":"@alwatr/directive@9.22.0","maintainers":[{"name":"alimd","email":"ali.mihan.doost@gmail.com"}],"homepage":"https://github.com/Alwatr/alwatr/tree/next/pkg/nanolib/directive#readme","bugs":{"url":"https://github.com/Alwatr/alwatr/issues"},"dist":{"shasum":"d3231f924456f7103b3967aef3f43f1d9dfef9e6","tarball":"https://registry.npmjs.org/@alwatr/directive/-/directive-9.22.0.tgz","fileCount":29,"integrity":"sha512-6LSglyOq8DnSi7ebIo47Ts9AqYfIVZQYHOaUQxegL5dTpTwfTGbfsWXQ7HDIh0jGpM96QCmFwDdax61HYAvLuw==","signatures":[{"sig":"MEYCIQDsbvxObYfnBqyF58EU/Ni0TF3k2MVtDVqJU5VzD+FfowIhAI0v9Z59lHM197mXpcbMflAq7ipMr4dk7W7ccraPyHyL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":221955},"type":"module","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js","default":"./dist/main.js"}},"gitHead":"d4fa1c8bb1cd4e044df6a52d7fbd584a16968442","scripts":{"b":"bun run build","t":"bun run test","w":"bun run watch","cl":"bun run clean","lint":"eslint src/ --ext .ts","test":"ALWATR_DEBUG=0 bun test","build":"bun run build:ts && bun run build:es","clean":"rm -rfv dist *.tsbuildinfo","watch":"bun run watch:ts & bun run watch:es","format":"prettier --write \"src/**/*.ts\"","build:es":"nano-build --preset=module-web src/main.ts","build:ts":"tsc --build","watch:es":"bun run build:es --watch","watch:ts":"bun run build:ts --watch --preserveWatchOutput"},"_npmUser":{"name":"alimd","email":"ali.mihan.doost@gmail.com"},"repository":{"url":"git+https://github.com/Alwatr/alwatr.git","type":"git","directory":"pkg/nanolib/directive"},"_npmVersion":"lerna/5.2.0/node@v20.20.2+x64 (linux)","description":"Connect your TypeScript classes to the DOM, declaratively.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"lit-html":"^3.3.2","@alwatr/delay":"9.20.0","@alwatr/logger":"9.20.1","@alwatr/signal":"9.20.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@alwatr/standard":"9.16.0","@alwatr/nano-build":"9.14.0","@alwatr/type-helper":"9.14.0","@happy-dom/global-registrator":"^20.9.0"},"_npmOperationalInternal":{"tmp":"tmp/directive_9.22.0_1777718170703_0.764477124112015","host":"s3://npm-registry-packages-npm-production"}},"9.23.0":{"name":"@alwatr/directive","version":"9.23.0","keywords":["alwatr","browser-api","declarative-ui","decorator","directive","dom","esm","frontend","idempotent","javascript","lightweight","module","nanolib","spa","synapse","typescript","ui-library","vanilla-js","web-components","web-development"],"author":{"url":"https://ali.mihandoost.com","name":"S. Ali Mihandoost","email":"ali.mihandoost@gmail.com"},"license":"MPL-2.0","_id":"@alwatr/directive@9.23.0","maintainers":[{"name":"alimd","email":"ali.mihan.doost@gmail.com"}],"homepage":"https://github.com/Alwatr/alwatr/tree/next/pkg/nanolib/directive#readme","bugs":{"url":"https://github.com/Alwatr/alwatr/issues"},"dist":{"shasum":"c8da7d1863edb265474d3c30708bc71fee10550e","tarball":"https://registry.npmjs.org/@alwatr/directive/-/directive-9.23.0.tgz","fileCount":29,"integrity":"sha512-zwizVmxVi7yAlxikTG3HpK5cyG6jDhgaTxUv9c3eNihAWizTd7miYM8CXX9fyL/uQidzu00F1PpBLDKmeuidGA==","signatures":[{"sig":"MEQCIEkEX3m1XsH0ANMCTsOArP1NM+ETIxIqILCGe4YlHDcaAiBoHVo4PRvzMgmJFEuD/YPylRvn829oJSYaiLa9S/4TRQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":222175},"type":"module","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js","default":"./dist/main.js"}},"gitHead":"2526586f84d802babd330372c401549078a43faa","scripts":{"b":"bun run build","t":"bun run test","w":"bun run watch","cl":"bun run clean","lint":"eslint src/ --ext .ts","test":"ALWATR_DEBUG=0 bun test","build":"bun run build:ts && bun run build:es","clean":"rm -rfv dist *.tsbuildinfo","watch":"bun run watch:ts & bun run watch:es","format":"prettier --write \"src/**/*.ts\"","build:es":"nano-build --preset=module-web src/main.ts","build:ts":"tsc --build","watch:es":"bun run build:es --watch","watch:ts":"bun run build:ts --watch --preserveWatchOutput"},"_npmUser":{"name":"alimd","email":"ali.mihan.doost@gmail.com"},"repository":{"url":"git+https://github.com/Alwatr/alwatr.git","type":"git","directory":"pkg/nanolib/directive"},"_npmVersion":"lerna/5.2.0/node@v20.20.2+x64 (linux)","description":"Connect your TypeScript classes to the DOM, declaratively.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"lit-html":"^3.3.2","@alwatr/delay":"9.20.0","@alwatr/logger":"9.20.1","@alwatr/signal":"9.20.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@alwatr/standard":"9.16.0","@alwatr/nano-build":"9.14.0","@alwatr/type-helper":"9.14.0","@happy-dom/global-registrator":"^20.9.0"},"_npmOperationalInternal":{"tmp":"tmp/directive_9.23.0_1777978184600_0.45077644792548166","host":"s3://npm-registry-packages-npm-production"}},"9.23.1":{"name":"@alwatr/directive","version":"9.23.1","keywords":["alwatr","browser-api","declarative-ui","decorator","directive","dom","esm","frontend","idempotent","javascript","lightweight","module","nanolib","spa","synapse","typescript","ui-library","vanilla-js","web-components","web-development"],"author":{"url":"https://ali.mihandoost.com","name":"S. Ali Mihandoost","email":"ali.mihandoost@gmail.com"},"license":"MPL-2.0","_id":"@alwatr/directive@9.23.1","maintainers":[{"name":"alimd","email":"ali.mihan.doost@gmail.com"}],"homepage":"https://github.com/Alwatr/alwatr/tree/next/pkg/nanolib/directive#readme","bugs":{"url":"https://github.com/Alwatr/alwatr/issues"},"dist":{"shasum":"85c38c9630a381d73932bad47052fcc72f47cdf6","tarball":"https://registry.npmjs.org/@alwatr/directive/-/directive-9.23.1.tgz","fileCount":29,"integrity":"sha512-D5CTS//tLBcOR8QCxvbDlcZzf6tANl4YgLKy7pfZ4krZYs0a/yoNFzBGSBAGk4T+fnzC+5OcudCFP+Hi8SP/NA==","signatures":[{"sig":"MEUCIEwwMY3FW5c8m2HGqjiJyps0SwwX+2uhFMcZKcsG+5rCAiEAllXt7pXLdKGsEbOELt26H+n3x3rtNN0QqEtSfQVqQkI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":222175},"type":"module","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js","default":"./dist/main.js"}},"gitHead":"0d8a77c24193ba45cd697082aaca94187bc28b22","scripts":{"b":"bun run build","t":"bun run test","w":"bun run watch","cl":"bun run clean","lint":"eslint src/ --ext .ts","test":"ALWATR_DEBUG=0 bun test","build":"bun run build:ts && bun run build:es","clean":"rm -rfv dist *.tsbuildinfo","watch":"bun run watch:ts & bun run watch:es","format":"prettier --write \"src/**/*.ts\"","build:es":"nano-build --preset=module-web src/main.ts","build:ts":"tsc --build","watch:es":"bun run build:es --watch","watch:ts":"bun run build:ts --watch --preserveWatchOutput"},"_npmUser":{"name":"alimd","email":"ali.mihan.doost@gmail.com"},"repository":{"url":"git+https://github.com/Alwatr/alwatr.git","type":"git","directory":"pkg/nanolib/directive"},"_npmVersion":"lerna/5.2.0/node@v20.20.2+x64 (linux)","description":"Connect your TypeScript classes to the DOM, declaratively.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"lit-html":"^3.3.2","@alwatr/delay":"9.20.0","@alwatr/logger":"9.20.1","@alwatr/signal":"9.23.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@alwatr/standard":"9.16.0","@alwatr/nano-build":"9.14.0","@alwatr/type-helper":"9.14.0","@happy-dom/global-registrator":"^20.9.0"},"_npmOperationalInternal":{"tmp":"tmp/directive_9.23.1_1778094609667_0.9814587452847094","host":"s3://npm-registry-packages-npm-production"}},"9.23.2":{"name":"@alwatr/directive","version":"9.23.2","keywords":["alwatr","browser-api","declarative-ui","decorator","directive","dom","esm","frontend","idempotent","javascript","lightweight","module","nanolib","spa","synapse","typescript","ui-library","vanilla-js","web-components","web-development"],"author":{"url":"https://ali.mihandoost.com","name":"S. Ali Mihandoost","email":"ali.mihandoost@gmail.com"},"license":"MPL-2.0","_id":"@alwatr/directive@9.23.2","maintainers":[{"name":"alimd","email":"ali.mihan.doost@gmail.com"}],"homepage":"https://github.com/Alwatr/alwatr/tree/next/pkg/nanolib/directive#readme","bugs":{"url":"https://github.com/Alwatr/alwatr/issues"},"dist":{"shasum":"e7a23e527d3263eb24338473c32f98031ae42fe6","tarball":"https://registry.npmjs.org/@alwatr/directive/-/directive-9.23.2.tgz","fileCount":29,"integrity":"sha512-MqLm8D8qrUIM59J++pADdsWbPn5T1EHvI8DKLA1dYxABsRNYC4fKwIuo/PRTz5Ay+OJOaujffqDaY20d6w1fow==","signatures":[{"sig":"MEUCIHd+56v8zVE/K/aPJYJxBmJ0xwQtlHsfPvPzRFneKhPIAiEA6TOefaCggZkUz2gLfJ2G94x06ptDOSslVU6C5lTvoPk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":222175},"type":"module","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js","default":"./dist/main.js"}},"gitHead":"8d4cb5239641beefd451781270f6a90a682e40ce","scripts":{"b":"bun run build","t":"bun run test","w":"bun run watch","cl":"bun run clean","lint":"eslint src/ --ext .ts","test":"ALWATR_DEBUG=0 bun test","build":"bun run build:ts && bun run build:es","clean":"rm -rfv dist *.tsbuildinfo","watch":"bun run watch:ts & bun run watch:es","format":"prettier --write \"src/**/*.ts\"","build:es":"nano-build --preset=module-web src/main.ts","build:ts":"tsc --build","watch:es":"bun run build:es --watch","watch:ts":"bun run build:ts --watch --preserveWatchOutput"},"_npmUser":{"name":"alimd","email":"ali.mihan.doost@gmail.com"},"repository":{"url":"git+https://github.com/Alwatr/alwatr.git","type":"git","directory":"pkg/nanolib/directive"},"_npmVersion":"lerna/5.2.0/node@v20.20.2+x64 (linux)","description":"Connect your TypeScript classes to the DOM, declaratively.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"lit-html":"^3.3.2","@alwatr/delay":"9.20.0","@alwatr/logger":"9.20.1","@alwatr/signal":"9.23.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@alwatr/standard":"9.16.0","@alwatr/nano-build":"9.14.0","@alwatr/type-helper":"9.14.0","@happy-dom/global-registrator":"^20.9.0"},"_npmOperationalInternal":{"tmp":"tmp/directive_9.23.2_1778156597805_0.44815103338695783","host":"s3://npm-registry-packages-npm-production"}},"9.23.3":{"name":"@alwatr/directive","version":"9.23.3","keywords":["alwatr","browser-api","declarative-ui","decorator","directive","dom","esm","frontend","idempotent","javascript","lightweight","module","nanolib","spa","synapse","typescript","ui-library","vanilla-js","web-components","web-development"],"author":{"url":"https://ali.mihandoost.com","name":"S. Ali Mihandoost","email":"ali.mihandoost@gmail.com"},"license":"MPL-2.0","_id":"@alwatr/directive@9.23.3","maintainers":[{"name":"alimd","email":"ali.mihan.doost@gmail.com"}],"homepage":"https://github.com/Alwatr/alwatr/tree/next/pkg/nanolib/directive#readme","bugs":{"url":"https://github.com/Alwatr/alwatr/issues"},"dist":{"shasum":"81d7832141c2f18060763704cdfd466bcc628121","tarball":"https://registry.npmjs.org/@alwatr/directive/-/directive-9.23.3.tgz","fileCount":29,"integrity":"sha512-5DfJIvWGFdn8BaC+PoJSHI8byo7X1cAnZe4kdKnrJ+AzXOOU99ImhNZMHLncc5IxjirHnENbi356rx1IPuMObg==","signatures":[{"sig":"MEUCIAQXZ+vco5pVerBshHURZdI78pl5CgbAYVv7szRtfTErAiEAob/9/SXsn3UNq23CNiIKL4RmzMIHqlHNhGjhhZ0x5Qk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":222151},"type":"module","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js","default":"./dist/main.js"}},"gitHead":"e38ea606b08ee85402fe112d4e32e741a446dcad","scripts":{"b":"bun run build","t":"bun run test","w":"bun run watch","cl":"bun run clean","lint":"eslint src/ --ext .ts","test":"ALWATR_DEBUG=0 bun test","build":"bun run build:ts && bun run build:es","clean":"rm -rfv dist *.tsbuildinfo","watch":"bun run watch:ts & bun run watch:es","format":"prettier --write \"src/**/*.ts\"","build:es":"nano-build --preset=module-web src/main.ts","build:ts":"tsc --build","watch:es":"bun run build:es --watch","watch:ts":"bun run build:ts --watch --preserveWatchOutput"},"_npmUser":{"name":"alimd","email":"ali.mihan.doost@gmail.com"},"repository":{"url":"git+https://github.com/Alwatr/alwatr.git","type":"git","directory":"pkg/nanolib/directive"},"_npmVersion":"lerna/5.2.1/node@v20.20.2+x64 (linux)","description":"Connect your TypeScript classes to the DOM, declaratively.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"lit-html":"^3.3.2","@alwatr/delay":"9.23.3","@alwatr/logger":"9.23.3","@alwatr/signal":"9.23.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@alwatr/standard":"9.16.0","@alwatr/nano-build":"9.14.0","@alwatr/type-helper":"9.14.0","@happy-dom/global-registrator":"^20.9.0"},"_npmOperationalInternal":{"tmp":"tmp/directive_9.23.3_1778589511512_0.4483234676809993","host":"s3://npm-registry-packages-npm-production"}},"9.23.4":{"name":"@alwatr/directive","version":"9.23.4","keywords":["alwatr","browser-api","declarative-ui","decorator","directive","dom","esm","frontend","idempotent","javascript","lightweight","module","nanolib","spa","synapse","typescript","ui-library","vanilla-js","web-components","web-development"],"author":{"url":"https://ali.mihandoost.com","name":"S. Ali Mihandoost","email":"ali.mihandoost@gmail.com"},"license":"MPL-2.0","_id":"@alwatr/directive@9.23.4","maintainers":[{"name":"alimd","email":"ali.mihan.doost@gmail.com"}],"homepage":"https://github.com/Alwatr/alwatr/tree/next/pkg/nanolib/directive#readme","bugs":{"url":"https://github.com/Alwatr/alwatr/issues"},"dist":{"shasum":"d57a7e6a2598e95e4918e10ed5f1490d89fa86ce","tarball":"https://registry.npmjs.org/@alwatr/directive/-/directive-9.23.4.tgz","fileCount":29,"integrity":"sha512-y8ek8UbRFN/uoKL5qaWS1Mrs7oc+T4eWST9zcspxonR8pWmTmoH5le0miyFQsIXdvUjyEb6l+RWvKz0vjNBpLw==","signatures":[{"sig":"MEQCIC6CgGMHm/+pyBksXsOLG2jdCSDFJaVKAQL0TzmoeuriAiAPxOT7daAp9uRRC7nKt+1f8I1gBQWIeSjWr0fNPSfkVg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":222665},"type":"module","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js","default":"./dist/main.js"}},"gitHead":"b7ff247c6aea81278ef4866ca003132ec99ef0b3","scripts":{"b":"bun run build","t":"bun run test","w":"bun run watch","cl":"bun run clean","lint":"eslint src/ --ext .ts","test":"ALWATR_DEBUG=0 bun test","build":"bun run build:ts && bun run build:es","clean":"rm -rfv dist *.tsbuildinfo","watch":"bun run watch:ts & bun run watch:es","format":"prettier --write \"src/**/*.ts\"","build:es":"nano-build --preset=module-web src/main.ts","build:ts":"tsc --build","watch:es":"bun run build:es --watch","watch:ts":"bun run build:ts --watch --preserveWatchOutput"},"_npmUser":{"name":"alimd","email":"ali.mihan.doost@gmail.com"},"repository":{"url":"git+https://github.com/Alwatr/alwatr.git","type":"git","directory":"pkg/nanolib/directive"},"_npmVersion":"lerna/5.2.1/node@v20.20.2+x64 (linux)","description":"Connect your TypeScript classes to the DOM, declaratively.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"lit-html":"^3.3.2","@alwatr/delay":"9.23.3","@alwatr/logger":"9.23.3","@alwatr/signal":"9.23.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@alwatr/standard":"9.16.0","@alwatr/nano-build":"9.14.0","@alwatr/type-helper":"9.14.0","@happy-dom/global-registrator":"^20.9.0"},"_npmOperationalInternal":{"tmp":"tmp/directive_9.23.4_1778690779622_0.44494466147494016","host":"s3://npm-registry-packages-npm-production"}},"9.24.0":{"name":"@alwatr/directive","version":"9.24.0","keywords":["alwatr","browser-api","declarative-ui","decorator","directive","dom","esm","frontend","idempotent","javascript","lightweight","module","nanolib","spa","synapse","typescript","ui-library","vanilla-js","web-components","web-development"],"author":{"url":"https://ali.mihandoost.com","name":"S. Ali Mihandoost","email":"ali.mihandoost@gmail.com"},"license":"MPL-2.0","_id":"@alwatr/directive@9.24.0","maintainers":[{"name":"alimd","email":"ali.mihan.doost@gmail.com"}],"homepage":"https://github.com/Alwatr/alwatr/tree/next/pkg/nanolib/directive#readme","bugs":{"url":"https://github.com/Alwatr/alwatr/issues"},"dist":{"shasum":"54f247d9b417e82fa0cf8e5c8bd960bd24df0720","tarball":"https://registry.npmjs.org/@alwatr/directive/-/directive-9.24.0.tgz","fileCount":29,"integrity":"sha512-uysktGEKJcIv+tlylFu7KkIwGQoDBalEJrTeh3XXTOdnzgO5ZY6BJhasjyENOSfVEFU5Zhh77O7YLW+NJZ4YAA==","signatures":[{"sig":"MEUCICSxVFT6Y2teMPKipsf02ai2k797LSEQ2k3pSiCJD98PAiEAlUhmFedyd1syhtTt097X/2kaFZnyvNe89NPYOGDfVKs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":222665},"type":"module","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js","default":"./dist/main.js"}},"gitHead":"7953ae95627dcfcea72516a288560769c7d8fb06","scripts":{"b":"bun run build","t":"bun run test","w":"bun run watch","cl":"bun run clean","lint":"eslint src/ --ext .ts","test":"ALWATR_DEBUG=0 bun test","build":"bun run build:ts && bun run build:es","clean":"rm -rfv dist *.tsbuildinfo","watch":"bun run watch:ts & bun run watch:es","format":"prettier --write \"src/**/*.ts\"","build:es":"nano-build --preset=module-web src/main.ts","build:ts":"tsc --build","watch:es":"bun run build:es --watch","watch:ts":"bun run build:ts --watch --preserveWatchOutput"},"_npmUser":{"name":"alimd","email":"ali.mihan.doost@gmail.com"},"repository":{"url":"git+https://github.com/Alwatr/alwatr.git","type":"git","directory":"pkg/nanolib/directive"},"_npmVersion":"lerna/5.2.1/node@v20.20.2+x64 (linux)","description":"Connect your TypeScript classes to the DOM, declaratively.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"lit-html":"^3.3.3","@alwatr/delay":"9.24.0","@alwatr/logger":"9.24.0","@alwatr/signal":"9.24.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@alwatr/standard":"9.16.0","@alwatr/nano-build":"9.14.0","@alwatr/type-helper":"9.14.0","@happy-dom/global-registrator":"^20.9.0"},"_npmOperationalInternal":{"tmp":"tmp/directive_9.24.0_1778786718607_0.5571909894022979","host":"s3://npm-registry-packages-npm-production"}},"9.25.0":{"name":"@alwatr/directive","version":"9.25.0","keywords":["alwatr","browser-api","declarative-ui","decorator","directive","dom","esm","frontend","idempotent","javascript","lightweight","module","nanolib","spa","synapse","typescript","ui-library","vanilla-js","web-components","web-development"],"author":{"url":"https://ali.mihandoost.com","name":"S. Ali Mihandoost","email":"ali.mihandoost@gmail.com"},"license":"MPL-2.0","_id":"@alwatr/directive@9.25.0","maintainers":[{"name":"alimd","email":"ali.mihan.doost@gmail.com"}],"homepage":"https://github.com/Alwatr/alwatr/tree/next/pkg/nanolib/directive#readme","bugs":{"url":"https://github.com/Alwatr/alwatr/issues"},"dist":{"shasum":"3a84c294403ee3232460fcab1433914496cc2fd8","tarball":"https://registry.npmjs.org/@alwatr/directive/-/directive-9.25.0.tgz","fileCount":29,"integrity":"sha512-9wgZ6lvntN5IcnXH9Bz6kVjA/HqIksafGmusn/HLO6tnh9X55r2vzjzgNYHzjtvjRyiQmEzzMq0dyxh+sFXMGw==","signatures":[{"sig":"MEQCIA/qwHwh0JkOGYohk6PZNqe6liv6hB6/sFZ+WzRHmaGuAiA8JFwEUsWbIBcQq/jWigYQYqwSvw10X/XWUkR7kBHOeg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":222665},"type":"module","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js","default":"./dist/main.js"}},"gitHead":"a49ae304180faab79539b5ddfe62d18ac91a232e","scripts":{"b":"bun run build","t":"bun run test","w":"bun run watch","cl":"bun run clean","lint":"eslint src/ --ext .ts","test":"ALWATR_DEBUG=0 bun test","build":"bun run build:ts && bun run build:es","clean":"rm -rfv dist *.tsbuildinfo","watch":"bun run watch:ts & bun run watch:es","format":"prettier --write \"src/**/*.ts\"","build:es":"nano-build --preset=module-web src/main.ts","build:ts":"tsc --build","watch:es":"bun run build:es --watch","watch:ts":"bun run build:ts --watch --preserveWatchOutput"},"_npmUser":{"name":"alimd","email":"ali.mihan.doost@gmail.com"},"repository":{"url":"git+https://github.com/Alwatr/alwatr.git","type":"git","directory":"pkg/nanolib/directive"},"_npmVersion":"lerna/5.2.1/node@v20.20.2+x64 (linux)","description":"Connect your TypeScript classes to the DOM, declaratively.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"lit-html":"^3.3.3","@alwatr/delay":"9.25.0","@alwatr/logger":"9.25.0","@alwatr/signal":"9.25.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@alwatr/standard":"9.16.0","@alwatr/nano-build":"9.25.0","@alwatr/type-helper":"9.14.0","@happy-dom/global-registrator":"^20.9.0"},"_npmOperationalInternal":{"tmp":"tmp/directive_9.25.0_1779366175355_0.7712893316635243","host":"s3://npm-registry-packages-npm-production"}},"9.26.0":{"name":"@alwatr/directive","version":"9.26.0","keywords":["alwatr","browser-api","declarative-ui","decorator","directive","dom","esm","frontend","idempotent","javascript","lightweight","module","nanolib","spa","synapse","typescript","ui-library","vanilla-js","web-components","web-development"],"author":{"url":"https://ali.mihandoost.com","name":"S. Ali Mihandoost","email":"ali.mihandoost@gmail.com"},"license":"MPL-2.0","_id":"@alwatr/directive@9.26.0","maintainers":[{"name":"alimd","email":"ali.mihan.doost@gmail.com"}],"homepage":"https://github.com/Alwatr/alwatr/tree/next/pkg/nanolib/directive#readme","bugs":{"url":"https://github.com/Alwatr/alwatr/issues"},"dist":{"shasum":"65f6e705acd1779171c0e2117b65106d2b07b07b","tarball":"https://registry.npmjs.org/@alwatr/directive/-/directive-9.26.0.tgz","fileCount":29,"integrity":"sha512-qG182Hr6KVn43AKpqU6kKReGbcuDpNYodUp0JF7scVWKH6A4/f4HdCgYid5Jg9oz56c/nxdtQ4cLbDIL4Y6VWg==","signatures":[{"sig":"MEUCIAnCyyYLdazoseVn7ZA9avPv9YwzpkyYO7G1NxQbcLHBAiEAwQkxFvlzTxHq3yCiiWLSa0n4Ml4pVtx8cOWFEkRw9hk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":222665},"type":"module","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js","default":"./dist/main.js"}},"gitHead":"ef62969b649929413c640e69d241f4e99d6062e8","scripts":{"b":"bun run build","t":"bun run test","w":"bun run watch","cl":"bun run clean","lint":"eslint src/ --ext .ts","test":"ALWATR_DEBUG=0 bun test","build":"bun run build:ts && bun run build:es","clean":"rm -rfv dist *.tsbuildinfo","watch":"bun run watch:ts & bun run watch:es","format":"prettier --write \"src/**/*.ts\"","build:es":"nano-build --preset=module-web src/main.ts","build:ts":"tsc --build","watch:es":"bun run build:es --watch","watch:ts":"bun run build:ts --watch --preserveWatchOutput"},"_npmUser":{"name":"alimd","email":"ali.mihan.doost@gmail.com"},"repository":{"url":"git+https://github.com/Alwatr/alwatr.git","type":"git","directory":"pkg/nanolib/directive"},"_npmVersion":"lerna/5.2.1/node@v22.22.3+x64 (linux)","description":"Connect your TypeScript classes to the DOM, declaratively.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"lit-html":"^3.3.3","@alwatr/delay":"9.25.0","@alwatr/logger":"9.25.0","@alwatr/signal":"9.26.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@alwatr/standard":"9.16.0","@alwatr/nano-build":"9.25.0","@alwatr/type-helper":"9.14.0","@happy-dom/global-registrator":"^20.9.0"},"_npmOperationalInternal":{"tmp":"tmp/directive_9.26.0_1779554497919_0.47288085336489294","host":"s3://npm-registry-packages-npm-production"}},"9.29.0":{"name":"@alwatr/directive","version":"9.29.0","keywords":["alwatr","browser-api","declarative-ui","decorator","directive","dom","esm","frontend","idempotent","javascript","lightweight","module","nanolib","spa","synapse","typescript","ui-library","vanilla-js","web-components","web-development"],"author":{"url":"https://ali.mihandoost.com","name":"S. Ali Mihandoost","email":"ali.mihandoost@gmail.com"},"license":"MPL-2.0","_id":"@alwatr/directive@9.29.0","maintainers":[{"name":"alimd","email":"ali.mihan.doost@gmail.com"}],"homepage":"https://github.com/Alwatr/alwatr/tree/next/pkg/nanolib/directive#readme","bugs":{"url":"https://github.com/Alwatr/alwatr/issues"},"dist":{"shasum":"ffa2741e1eb8ce5ae93a64a08bf2b1f42f5bf23a","tarball":"https://registry.npmjs.org/@alwatr/directive/-/directive-9.29.0.tgz","fileCount":35,"integrity":"sha512-fgzgJnObtCk0C/hJUkWRjuGHEfApc6YsDQ4Y0s7diYS7buXc+SoC6Wsz9NsVGaMPStcr07i18Uy9Ts2DJkizWw==","signatures":[{"sig":"MEQCIAa9U3IvLVgcQS71zKWjRNouSP57/ZUaYi6D1z/u6qoLAiBH5rvjp7HNmH/X3yPc1GtAXU3RQJ1kuG+/Gw/DMtCA6g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":213906},"type":"module","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js","default":"./dist/main.js"}},"gitHead":"2f80c615d90e038dca634a2dfba8d900d3df6248","scripts":{"b":"bun run build","t":"bun run test","w":"bun run watch","cl":"bun run clean","lint":"eslint src/ --ext .ts","test":"ALWATR_DEBUG=0 bun test","build":"bun run build:ts && bun run build:es","clean":"rm -rfv dist *.tsbuildinfo","watch":"bun run watch:ts & bun run watch:es","format":"prettier --write \"src/**/*.ts\"","build:es":"nano-build --preset=module-web src/main.ts","build:ts":"tsc --build","watch:es":"bun run build:es --watch","watch:ts":"bun run build:ts --watch --preserveWatchOutput"},"_npmUser":{"name":"alimd","email":"ali.mihan.doost@gmail.com"},"repository":{"url":"git+https://github.com/Alwatr/alwatr.git","type":"git","directory":"pkg/nanolib/directive"},"_npmVersion":"lerna/5.2.2/node@v22.22.3+x64 (linux)","description":"Connect your TypeScript classes to the DOM, declaratively.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"lit-html":"^3.3.3","@alwatr/delay":"9.29.0","@alwatr/logger":"9.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@alwatr/standard":"9.16.0","@alwatr/nano-build":"9.25.0","@alwatr/type-helper":"9.14.0","@happy-dom/global-registrator":"^20.9.0"},"_npmOperationalInternal":{"tmp":"tmp/directive_9.29.0_1780236916303_0.8691869678013253","host":"s3://npm-registry-packages-npm-production"}},"9.30.0":{"name":"@alwatr/directive","version":"9.30.0","keywords":["alwatr","browser-api","declarative-ui","decorator","directive","dom","esm","frontend","idempotent","javascript","lightweight","module","nanolib","spa","synapse","typescript","ui-library","vanilla-js","web-components","web-development"],"author":{"url":"https://ali.mihandoost.com","name":"S. Ali Mihandoost","email":"ali.mihandoost@gmail.com"},"license":"MPL-2.0","_id":"@alwatr/directive@9.30.0","maintainers":[{"name":"alimd","email":"ali.mihan.doost@gmail.com"}],"homepage":"https://github.com/Alwatr/alwatr/tree/next/pkg/nanolib/directive#readme","bugs":{"url":"https://github.com/Alwatr/alwatr/issues"},"dist":{"shasum":"d5914c0f49c6fec2a66fc75155dfafee0b83ea24","tarball":"https://registry.npmjs.org/@alwatr/directive/-/directive-9.30.0.tgz","fileCount":35,"integrity":"sha512-wmAB56J/DYB3ZPU6c2G8iloFAOb+0VqvrkQzyP5hf7NdwKWRS3+jjs3PjAhLDX5xAMexqSOsTfEnuQqVwqq5Ww==","signatures":[{"sig":"MEUCIQD26EgiM+yvhE+iGx6yTciz88D9a00LOiKzZBc4p617MAIgOU+9xrId4SsYFVxUnUrHuoG/ueaYW++ytDPIFZ05Of8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":213906},"type":"module","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js","default":"./dist/main.js"}},"gitHead":"9ef1681df17bbf7c991631d800a2d4261e54b843","scripts":{"b":"bun run build","t":"bun run test","w":"bun run watch","cl":"bun run clean","lint":"eslint src/ --ext .ts","test":"ALWATR_DEBUG=0 bun test","build":"bun run build:ts && bun run build:es","clean":"rm -rfv dist *.tsbuildinfo","watch":"bun run watch:ts & bun run watch:es","format":"prettier --write \"src/**/*.ts\"","build:es":"nano-build --preset=module-web src/main.ts","build:ts":"tsc --build","watch:es":"bun run build:es --watch","watch:ts":"bun run build:ts --watch --preserveWatchOutput"},"_npmUser":{"name":"alimd","email":"ali.mihan.doost@gmail.com"},"repository":{"url":"git+https://github.com/Alwatr/alwatr.git","type":"git","directory":"pkg/nanolib/directive"},"_npmVersion":"lerna/5.2.2/node@v22.22.3+x64 (linux)","description":"Connect your TypeScript classes to the DOM, declaratively.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"lit-html":"^3.3.3","@alwatr/delay":"9.30.0","@alwatr/logger":"9.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@alwatr/standard":"9.16.0","@alwatr/nano-build":"9.25.0","@alwatr/type-helper":"9.14.0","@happy-dom/global-registrator":"^20.9.0"},"_npmOperationalInternal":{"tmp":"tmp/directive_9.30.0_1780393622304_0.7738219612954722","host":"s3://npm-registry-packages-npm-production"}},"9.31.0":{"name":"@alwatr/directive","version":"9.31.0","keywords":["alwatr","browser-api","declarative-ui","decorator","directive","dom","esm","frontend","idempotent","javascript","lightweight","module","nanolib","spa","synapse","typescript","ui-library","vanilla-js","web-components","web-development"],"author":{"url":"https://ali.mihandoost.com","name":"S. Ali Mihandoost","email":"ali.mihandoost@gmail.com"},"license":"MPL-2.0","_id":"@alwatr/directive@9.31.0","maintainers":[{"name":"alimd","email":"ali.mihan.doost@gmail.com"}],"homepage":"https://github.com/Alwatr/alwatr/tree/next/pkg/nanolib/directive#readme","bugs":{"url":"https://github.com/Alwatr/alwatr/issues"},"dist":{"shasum":"c32124cb3dfa65d49141a097f12368f0082cda3e","tarball":"https://registry.npmjs.org/@alwatr/directive/-/directive-9.31.0.tgz","fileCount":44,"integrity":"sha512-qtqccXrVYukCsg9l3/+T3H5mT9s1baG2/1PtqXwOMTD+fjNFyhQHnZAIlMRhs220mPQiAKMx+vSxyjaT053OeA==","signatures":[{"sig":"MEUCIAN5jg5Vr1qG2MeXwidbvfJXEkLZf4KwUe/XECKh5uGdAiEA714DI0kdCB/T298LopgcNnBljxI+zU0lWvZYG+K8fBg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":226048},"type":"module","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js","default":"./dist/main.js"}},"gitHead":"a2bdb86945c56f8b99b6dd0f8ec714df70dfa3e5","scripts":{"b":"bun run build","t":"bun run test","w":"bun run watch","cl":"bun run clean","lint":"eslint src/ --ext .ts","test":"ALWATR_DEBUG=0 bun test","build":"bun run build:ts && bun run build:es","clean":"rm -rfv dist *.tsbuildinfo","watch":"bun run watch:ts & bun run watch:es","format":"prettier --write \"src/**/*.ts\"","build:es":"nano-build --preset=module-web src/main.ts","build:ts":"tsc --build","watch:es":"bun run build:es --watch","watch:ts":"bun run build:ts --watch --preserveWatchOutput"},"_npmUser":{"name":"alimd","email":"ali.mihan.doost@gmail.com"},"repository":{"url":"git+https://github.com/Alwatr/alwatr.git","type":"git","directory":"pkg/nanolib/directive"},"_npmVersion":"lerna/5.3.0/node@v22.22.3+x64 (linux)","description":"Connect your TypeScript classes to the DOM, declaratively.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"lit-html":"^3.3.3","@alwatr/delay":"9.31.0","@alwatr/logger":"9.31.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@alwatr/standard":"9.16.0","@alwatr/nano-build":"9.25.0","@alwatr/type-helper":"9.14.0","@happy-dom/global-registrator":"^20.10.2"},"_npmOperationalInternal":{"tmp":"tmp/directive_9.31.0_1780835155430_0.9577016896962325","host":"s3://npm-registry-packages-npm-production"}},"9.32.0":{"name":"@alwatr/directive","version":"9.32.0","keywords":["alwatr","browser-api","declarative-ui","decorator","directive","dom","esm","frontend","idempotent","javascript","lightweight","module","nanolib","spa","synapse","typescript","ui-library","vanilla-js","web-components","web-development"],"author":{"url":"https://ali.mihandoost.com","name":"S. Ali Mihandoost","email":"ali.mihandoost@gmail.com"},"license":"MPL-2.0","_id":"@alwatr/directive@9.32.0","maintainers":[{"name":"alimd","email":"ali.mihan.doost@gmail.com"}],"homepage":"https://github.com/Alwatr/alwatr/tree/next/pkg/nanolib/directive#readme","bugs":{"url":"https://github.com/Alwatr/alwatr/issues"},"dist":{"shasum":"cb3a63c83b784c302f724fd7ef634e074411d139","tarball":"https://registry.npmjs.org/@alwatr/directive/-/directive-9.32.0.tgz","fileCount":44,"integrity":"sha512-G9zr4Rx1UXYTR4xtm3guBd5RpxoGQgJU1yyY2OUp/LXhxm5/B/CWAgZ4IhnQITn/QjGUu0RrlZhZmz/FSg0lpA==","signatures":[{"sig":"MEQCIBzNTRIzixnMt11+fWbicdu1EfE0daB/RuWqK2mewptBAiBEn4PYsdWqgcl4ryOZ3aGqAdIQ3m2NdiI7fO42EwMQ7w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":227624},"type":"module","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js","default":"./dist/main.js"}},"gitHead":"ac7ea45eecea81a216886612f1cd7dbc4b0dc106","scripts":{"b":"bun run build","t":"bun run test","w":"bun run watch","cl":"bun run clean","lint":"eslint src/ --ext .ts","test":"ALWATR_DEBUG=0 bun test","build":"bun run build:ts && bun run build:es","clean":"rm -rfv dist *.tsbuildinfo","watch":"bun run watch:ts & bun run watch:es","format":"prettier --write \"src/**/*.ts\"","build:es":"nano-build --preset=module-web src/main.ts","build:ts":"tsc --build","watch:es":"bun run build:es --watch","watch:ts":"bun run build:ts --watch --preserveWatchOutput"},"_npmUser":{"name":"alimd","email":"ali.mihan.doost@gmail.com"},"repository":{"url":"git+https://github.com/Alwatr/alwatr.git","type":"git","directory":"pkg/nanolib/directive"},"_npmVersion":"lerna/5.3.0/node@v22.22.3+x64 (linux)","description":"Connect your TypeScript classes to the DOM, declaratively.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"lit-html":"^3.3.3","@alwatr/delay":"9.32.0","@alwatr/logger":"9.31.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@alwatr/standard":"9.16.0","@alwatr/nano-build":"9.25.0","@alwatr/type-helper":"9.14.0","@happy-dom/global-registrator":"^20.10.2"},"_npmOperationalInternal":{"tmp":"tmp/directive_9.32.0_1780842713397_0.1626057717096805","host":"s3://npm-registry-packages-npm-production"}},"9.33.0":{"name":"@alwatr/directive","version":"9.33.0","keywords":["alwatr","browser-api","declarative-ui","decorator","directive","dom","esm","frontend","idempotent","javascript","lightweight","module","nanolib","spa","synapse","typescript","ui-library","vanilla-js","web-components","web-development"],"author":{"url":"https://ali.mihandoost.com","name":"S. Ali Mihandoost","email":"ali.mihandoost@gmail.com"},"license":"MPL-2.0","_id":"@alwatr/directive@9.33.0","maintainers":[{"name":"alimd","email":"ali.mihan.doost@gmail.com"}],"homepage":"https://github.com/Alwatr/alwatr/tree/next/pkg/nanolib/directive#readme","bugs":{"url":"https://github.com/Alwatr/alwatr/issues"},"dist":{"shasum":"7cc58e2eb47e09b465efd719d5501cf2daf79675","tarball":"https://registry.npmjs.org/@alwatr/directive/-/directive-9.33.0.tgz","fileCount":44,"integrity":"sha512-4YXKbSX4wBCsEFl8npLmS8fTuzZiut/loo1rf2NeKlJeZl6JCQLx9tSyQE20GyNUn0UztnGIGAjkSIrEeQCfoQ==","signatures":[{"sig":"MEUCIQCDn8WYF2ZwR9rTtdPwzaz18hOyfLo5cQV/VI0VfCqj6AIgCvf4A6b1sJPy2tUNDyyavP0SC43df7Xwj7QwqoFBF3w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":227624},"type":"module","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js","default":"./dist/main.js"}},"gitHead":"ba7e63efa62c86c7845269f94c4cc9924c38ff21","scripts":{"b":"bun run build","t":"bun run test","w":"bun run watch","cl":"bun run clean","lint":"eslint src/ --ext .ts","test":"ALWATR_DEBUG=0 bun test","build":"bun run build:ts && bun run build:es","clean":"rm -rfv dist *.tsbuildinfo","watch":"bun run watch:ts & bun run watch:es","format":"prettier --write \"src/**/*.ts\"","build:es":"nano-build --preset=module-web src/main.ts","build:ts":"tsc --build","watch:es":"bun run build:es --watch","watch:ts":"bun run build:ts --watch --preserveWatchOutput"},"_npmUser":{"name":"alimd","email":"ali.mihan.doost@gmail.com"},"repository":{"url":"git+https://github.com/Alwatr/alwatr.git","type":"git","directory":"pkg/nanolib/directive"},"_npmVersion":"lerna/5.3.0/node@v22.22.3+x64 (linux)","description":"Connect your TypeScript classes to the DOM, declaratively.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"lit-html":"^3.3.3","@alwatr/delay":"9.33.0","@alwatr/logger":"9.33.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@alwatr/standard":"9.33.0","@alwatr/nano-build":"9.25.0","@alwatr/type-helper":"9.14.0","@happy-dom/global-registrator":"^20.10.2"},"_npmOperationalInternal":{"tmp":"tmp/directive_9.33.0_1781057078903_0.952444863266839","host":"s3://npm-registry-packages-npm-production"}},"9.33.1":{"name":"@alwatr/directive","version":"9.33.1","keywords":["alwatr","browser-api","declarative-ui","decorator","directive","dom","esm","frontend","idempotent","javascript","lightweight","module","nanolib","spa","synapse","typescript","ui-library","vanilla-js","web-components","web-development"],"author":{"url":"https://ali.mihandoost.com","name":"S. Ali Mihandoost","email":"ali.mihandoost@gmail.com"},"license":"MPL-2.0","_id":"@alwatr/directive@9.33.1","maintainers":[{"name":"alimd","email":"ali.mihan.doost@gmail.com"}],"homepage":"https://github.com/Alwatr/alwatr/tree/next/pkg/nanolib/directive#readme","bugs":{"url":"https://github.com/Alwatr/alwatr/issues"},"dist":{"shasum":"569f9e4450c19dc46cda9855724f96017ae2eb28","tarball":"https://registry.npmjs.org/@alwatr/directive/-/directive-9.33.1.tgz","fileCount":46,"integrity":"sha512-e7vA31vdpkrQow76hF/N62eeLVasiiHrWqigaJitC9CLkrPQRcz0xUPM1HXd+il6Kg+t1yPxSjDEbTgVoEHL7w==","signatures":[{"sig":"MEUCIANZfiqqOxWwEDadsPrUr4fvRP/5qr0C7qxrRg9WSfMaAiEAxDW/4N8nRIGY174A1N7j1eJ3bfp0oNhI2R+0kHLZ6fw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":295080},"type":"module","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js","default":"./dist/main.js","development":"./dist/dev/main.js"}},"gitHead":"84fba5b7b428188be17aaaaf062b0b7eaae96555","scripts":{"b":"bun run build","t":"bun run test","w":"bun run watch","cl":"bun run clean","lint":"eslint src/ --ext .ts","test":"bun test","build":"bun run build:ts && bun run build:es","clean":"rm -rfv dist *.tsbuildinfo","watch":"bun run watch:ts & bun run watch:es","format":"prettier --write \"src/**/*.ts\"","build:es":"bun run build:es:dev && bun run build:es:prod","build:ts":"tsc --build","watch:es":"bun run build:es:dev --watch","watch:ts":"bun run build:ts --watch --preserveWatchOutput","build:es:dev":"nano-build --preset=module-web --outdir=dist/dev src/main.ts","build:es:prod":"NODE_ENV=production nano-build --preset=module-web --outdir=dist src/main.ts"},"_npmUser":{"name":"alimd","email":"ali.mihan.doost@gmail.com"},"repository":{"url":"git+https://github.com/Alwatr/alwatr.git","type":"git","directory":"pkg/nanolib/directive"},"_npmVersion":"lerna/5.3.0/node@v22.22.3+x64 (linux)","description":"Connect your TypeScript classes to the DOM, declaratively.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"lit-html":"^3.3.3","@alwatr/delay":"9.33.1","@alwatr/logger":"9.33.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@alwatr/standard":"9.33.0","@alwatr/nano-build":"9.33.1","@alwatr/type-helper":"9.33.1","@happy-dom/global-registrator":"^20.10.2"},"_npmOperationalInternal":{"tmp":"tmp/directive_9.33.1_1781089521256_0.9384224566318049","host":"s3://npm-registry-packages-npm-production"}},"9.35.0":{"name":"@alwatr/directive","version":"9.35.0","keywords":["alwatr","browser-api","declarative-ui","decorator","directive","dom","esm","frontend","idempotent","javascript","lightweight","module","nanolib","spa","synapse","typescript","ui-library","vanilla-js","web-components","web-development"],"author":{"url":"https://ali.mihandoost.com","name":"S. Ali Mihandoost","email":"ali.mihandoost@gmail.com"},"license":"MPL-2.0","_id":"@alwatr/directive@9.35.0","maintainers":[{"name":"alimd","email":"ali.mihan.doost@gmail.com"}],"homepage":"https://github.com/Alwatr/alwatr/tree/next/pkg/nanolib/directive#readme","bugs":{"url":"https://github.com/Alwatr/alwatr/issues"},"dist":{"shasum":"f826557c76a05cf923d8364cccc99b2cdacac3eb","tarball":"https://registry.npmjs.org/@alwatr/directive/-/directive-9.35.0.tgz","fileCount":46,"integrity":"sha512-EFXoJz02Rd7niJiif7CeuNpCBeC7K7McYWmRUCu88cdTh9thTdaDc7OeJdiVA0tu7/Lza1lT2KHO50AqarX4xQ==","signatures":[{"sig":"MEYCIQDCSXfugxNfivvIKnHZFW8og3LGjjFe3p0YCCylfUTPLgIhAJNAvr93cWeFV79T8BkV3wrOmZNhXPbxZr12Th04rHCz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":294748},"type":"module","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js","default":"./dist/main.js","development":"./dist/dev/main.js"}},"gitHead":"85e47c26720607e780d06e568a6734ac20e5bc82","scripts":{"b":"bun run build","t":"bun run test","w":"bun run watch","cl":"bun run clean","lint":"eslint src/ --ext .ts","test":"bun test","build":"bun run build:ts && bun run build:es","clean":"rm -rfv dist *.tsbuildinfo","watch":"bun run watch:ts & bun run watch:es","format":"prettier --write \"src/**/*.ts\"","build:es":"bun run build:es:dev && bun run build:es:prod","build:ts":"tsc --build","watch:es":"bun run build:es:dev --watch","watch:ts":"bun run build:ts --watch --preserveWatchOutput","build:es:dev":"nano-build --preset=module-web --outdir=dist/dev src/main.ts","build:es:prod":"NODE_ENV=production nano-build --preset=module-web --outdir=dist src/main.ts"},"_npmUser":{"name":"alimd","email":"ali.mihan.doost@gmail.com"},"repository":{"url":"git+https://github.com/Alwatr/alwatr.git","type":"git","directory":"pkg/nanolib/directive"},"_npmVersion":"lerna/5.3.0/node@v22.22.3+x64 (linux)","description":"Connect your TypeScript classes to the DOM, declaratively.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"lit-html":"^3.3.3","@alwatr/delay":"9.33.1","@alwatr/logger":"9.33.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@alwatr/standard":"9.33.0","@alwatr/nano-build":"9.33.1","@alwatr/type-helper":"9.33.1","@happy-dom/global-registrator":"^20.10.2"},"_npmOperationalInternal":{"tmp":"tmp/directive_9.35.0_1781189805169_0.9943231296983084","host":"s3://npm-registry-packages-npm-production"}},"9.36.0":{"name":"@alwatr/directive","version":"9.36.0","keywords":["alwatr","browser-api","declarative-ui","decorator","directive","dom","esm","frontend","idempotent","javascript","lightweight","module","nanolib","spa","synapse","typescript","ui-library","vanilla-js","web-components","web-development"],"author":{"url":"https://ali.mihandoost.com","name":"S. Ali Mihandoost","email":"ali.mihandoost@gmail.com"},"license":"MPL-2.0","_id":"@alwatr/directive@9.36.0","maintainers":[{"name":"alimd","email":"ali.mihan.doost@gmail.com"}],"homepage":"https://github.com/Alwatr/alwatr/tree/next/pkg/nanolib/directive#readme","bugs":{"url":"https://github.com/Alwatr/alwatr/issues"},"dist":{"shasum":"01c5b08e90aed06abffb96b5ba3da63d65b74c68","tarball":"https://registry.npmjs.org/@alwatr/directive/-/directive-9.36.0.tgz","fileCount":46,"integrity":"sha512-zCS0fBg51KbWa/DwDrH2d3AS1om2Qb7Uf3x9GPGC7tmpWFYhPc7wZkIuA/r85/MeX+sTxCooPmn9t0MPBrZ7tQ==","signatures":[{"sig":"MEUCIB3JqU4U+swxDUoTLEu4u9WX5N8qxVAGDlbFPntAFEDeAiEAiJCQDpqI5R0us573abdAdGmP3oUEVgLKp6yYrqeOcHk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":294748},"type":"module","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js","default":"./dist/main.js","development":"./dist/dev/main.js"}},"gitHead":"252426e3bf06fdf5331691d5e8c09a4808104275","scripts":{"b":"bun run build","t":"bun run test","w":"bun run watch","cl":"bun run clean","lint":"eslint src/ --ext .ts","test":"bun test","build":"bun run build:ts && bun run build:es","clean":"rm -rfv dist *.tsbuildinfo","watch":"bun run watch:ts & bun run watch:es","format":"prettier --write \"src/**/*.ts\"","build:es":"bun run build:es:dev && bun run build:es:prod","build:ts":"tsc --build","watch:es":"bun run build:es:dev --watch","watch:ts":"bun run build:ts --watch --preserveWatchOutput","build:es:dev":"nano-build --preset=module-web --outdir=dist/dev src/main.ts","build:es:prod":"NODE_ENV=production nano-build --preset=module-web --outdir=dist src/main.ts"},"_npmUser":{"name":"alimd","email":"ali.mihan.doost@gmail.com"},"repository":{"url":"git+https://github.com/Alwatr/alwatr.git","type":"git","directory":"pkg/nanolib/directive"},"_npmVersion":"lerna/5.3.0/node@v22.22.3+x64 (linux)","description":"Connect your TypeScript classes to the DOM, declaratively.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"lit-html":"^3.3.3","@alwatr/delay":"9.36.0","@alwatr/logger":"9.36.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@alwatr/standard":"9.33.0","@alwatr/nano-build":"9.33.1","@alwatr/type-helper":"9.36.0","@happy-dom/global-registrator":"^20.10.2"},"_npmOperationalInternal":{"tmp":"tmp/directive_9.36.0_1781214301926_0.14462804582034727","host":"s3://npm-registry-packages-npm-production"}},"9.37.0":{"name":"@alwatr/directive","version":"9.37.0","keywords":["alwatr","browser-api","declarative-ui","decorator","directive","dom","esm","frontend","idempotent","javascript","lightweight","module","nanolib","spa","synapse","typescript","ui-library","vanilla-js","web-components","web-development"],"author":{"url":"https://ali.mihandoost.com","name":"S. Ali Mihandoost","email":"ali.mihandoost@gmail.com"},"license":"MPL-2.0","_id":"@alwatr/directive@9.37.0","maintainers":[{"name":"alimd","email":"ali.mihan.doost@gmail.com"}],"homepage":"https://github.com/Alwatr/alwatr/tree/next/pkg/nanolib/directive#readme","bugs":{"url":"https://github.com/Alwatr/alwatr/issues"},"dist":{"shasum":"fcd5af989649c636cc38562f3226138b553dcbd9","tarball":"https://registry.npmjs.org/@alwatr/directive/-/directive-9.37.0.tgz","fileCount":46,"integrity":"sha512-KOMHpnSyqd2Q+zUh/NKuA6MFMRHi7644UH5i5hAQ9ODYZIrr2mqkQFwZA0JvWu4zT0aABLxIZiEwmMFVoxD5uw==","signatures":[{"sig":"MEUCIQCQfkTZO1t0vEEFMg+OlKugqmbivIKcNxVjtF6Zsv654QIgRpAd8mPv7bepFZM5s510AuXd0YbdhYknqqAj4HLZ1e4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":294748},"type":"module","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js","default":"./dist/main.js","development":"./dist/dev/main.js"}},"gitHead":"726ee4a94d5cbd08344fabcf329ebc383dcc7504","scripts":{"b":"bun run build","t":"bun run test","w":"bun run watch","cl":"bun run clean","lint":"eslint src/ --ext .ts","test":"bun test","build":"bun run build:ts && bun run build:es","clean":"rm -rfv dist *.tsbuildinfo","watch":"bun run watch:ts & bun run watch:es","format":"prettier --write \"src/**/*.ts\"","build:es":"bun run build:es:dev && bun run build:es:prod","build:ts":"tsc --build","watch:es":"bun run build:es:dev --watch","watch:ts":"bun run build:ts --watch --preserveWatchOutput","build:es:dev":"nano-build --preset=module-web --outdir=dist/dev src/main.ts","build:es:prod":"NODE_ENV=production nano-build --preset=module-web --outdir=dist src/main.ts"},"_npmUser":{"name":"alimd","email":"ali.mihan.doost@gmail.com"},"repository":{"url":"git+https://github.com/Alwatr/alwatr.git","type":"git","directory":"pkg/nanolib/directive"},"_npmVersion":"lerna/5.3.0/node@v22.22.3+x64 (linux)","description":"Connect your TypeScript classes to the DOM, declaratively.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"lit-html":"^3.3.3","@alwatr/delay":"9.37.0","@alwatr/logger":"9.36.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@alwatr/standard":"9.33.0","@alwatr/nano-build":"9.33.1","@alwatr/type-helper":"9.36.0","@happy-dom/global-registrator":"^20.10.3"},"_npmOperationalInternal":{"tmp":"tmp/directive_9.37.0_1781355015083_0.38317138953285146","host":"s3://npm-registry-packages-npm-production"}},"9.38.1":{"name":"@alwatr/directive","version":"9.38.1","keywords":["alwatr","browser-api","declarative-ui","decorator","directive","dom","esm","frontend","idempotent","javascript","lightweight","module","nanolib","spa","synapse","typescript","ui-library","vanilla-js","web-components","web-development"],"author":{"url":"https://ali.mihandoost.com","name":"S. Ali Mihandoost","email":"ali.mihandoost@gmail.com"},"license":"MPL-2.0","_id":"@alwatr/directive@9.38.1","maintainers":[{"name":"alimd","email":"ali.mihan.doost@gmail.com"}],"homepage":"https://github.com/Alwatr/alwatr/tree/next/pkg/nanolib/directive#readme","bugs":{"url":"https://github.com/Alwatr/alwatr/issues"},"dist":{"shasum":"bfc26e03fbf7c5d3bf973d3ea72de8b450c0190e","tarball":"https://registry.npmjs.org/@alwatr/directive/-/directive-9.38.1.tgz","fileCount":46,"integrity":"sha512-IL9x9hB7KdmrmPffsabuVOt3OENrfnxxx2xaXVujZdzuLkHb0F5/zwPG4Dv6p2kmWcwbs98i7D+5acm2v0Aybw==","signatures":[{"sig":"MEUCIHBsQCyrUGrRb61QTDXeYDp+ViW23Px+Sh9/U0aOoxoDAiEA9lUQW/uEnHebgzzvcGGQJeQxJruex5DNaBG0FV/fBk8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":294748},"type":"module","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js","default":"./dist/main.js","development":"./dist/dev/main.js"}},"gitHead":"918e99e7142b84f69eaa703ce9e27c3ac9d9300b","scripts":{"b":"bun run build","t":"bun run test","w":"bun run watch","cl":"bun run clean","lint":"eslint src/ --ext .ts","test":"bun test","build":"bun run build:ts && bun run build:es","clean":"rm -rfv dist *.tsbuildinfo","watch":"bun run watch:ts & bun run watch:es","format":"prettier --write \"src/**/*.ts\"","build:es":"bun run build:es:dev && bun run build:es:prod","build:ts":"tsc --build","watch:es":"bun run build:es:dev --watch","watch:ts":"bun run build:ts --watch --preserveWatchOutput","build:es:dev":"nano-build --preset=module-web --outdir=dist/dev src/main.ts","build:es:prod":"NODE_ENV=production nano-build --preset=module-web --outdir=dist src/main.ts"},"_npmUser":{"name":"alimd","email":"ali.mihan.doost@gmail.com"},"repository":{"url":"git+https://github.com/Alwatr/alwatr.git","type":"git","directory":"pkg/nanolib/directive"},"_npmVersion":"lerna/5.3.0/node@v22.23.0+x64 (linux)","description":"Connect your TypeScript classes to the DOM, declaratively.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.0","dependencies":{"lit-html":"^3.3.3","@alwatr/delay":"9.38.1","@alwatr/logger":"9.38.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@alwatr/standard":"9.38.1","@alwatr/nano-build":"9.38.1","@alwatr/type-helper":"9.36.0","@happy-dom/global-registrator":"^20.10.6"},"_npmOperationalInternal":{"tmp":"tmp/directive_9.38.1_1782630645129_0.05832118177352674","host":"s3://npm-registry-packages-npm-production"}},"9.38.2":{"name":"@alwatr/directive","version":"9.38.2","keywords":["alwatr","browser-api","declarative-ui","decorator","directive","dom","esm","frontend","idempotent","javascript","lightweight","module","nanolib","spa","synapse","typescript","ui-library","vanilla-js","web-components","web-development"],"author":{"url":"https://ali.mihandoost.com","name":"S. Ali Mihandoost","email":"ali.mihandoost@gmail.com"},"license":"MPL-2.0","_id":"@alwatr/directive@9.38.2","maintainers":[{"name":"alimd","email":"ali.mihan.doost@gmail.com"}],"homepage":"https://github.com/Alwatr/alwatr/tree/next/pkg/nanolib/directive#readme","bugs":{"url":"https://github.com/Alwatr/alwatr/issues"},"dist":{"shasum":"eb05a50713a3be0e39f8be9eb2c1550f95f7ab7a","tarball":"https://registry.npmjs.org/@alwatr/directive/-/directive-9.38.2.tgz","fileCount":46,"integrity":"sha512-XO1Rix5l/VtNEsh0oSJtZ13NEy591DuOg/nPRn+qJo62ibdKzmH2HoMC77VHWEwVc8gr2Zgll5CjY4UaqBvBZw==","signatures":[{"sig":"MEUCIGcVt7a8SfAS3iN3oNWeF/cNtz6dvMpzJqivEAAKd1lRAiEAtSVRu5O8Y1L9t9/E/PmWp4xt3rzOyIMXdkwhEWT4REA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":294796},"type":"module","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js","default":"./dist/main.js","development":"./dist/dev/main.js"}},"gitHead":"69569fc5d7a66d5f027d5d4f58af4289280d5e5d","scripts":{"b":"bun run build","t":"bun run test","w":"bun run watch","cl":"bun run clean","lint":"eslint src/ --ext .ts","test":"bun test","build":"bun run build:ts && bun run build:es","clean":"rm -rfv dist *.tsbuildinfo","watch":"bun run watch:ts & bun run watch:es","format":"prettier --write \"src/**/*.ts\"","build:es":"bun run build:es:dev && bun run build:es:prod","build:ts":"tsc --build","watch:es":"bun run build:es:dev --watch","watch:ts":"bun run build:ts --watch --preserveWatchOutput","build:es:dev":"nano-build --preset=module-web --outdir=dist/dev src/main.ts","build:es:prod":"NODE_ENV=production nano-build --preset=module-web --outdir=dist src/main.ts"},"_npmUser":{"name":"alimd","email":"ali.mihan.doost@gmail.com"},"repository":{"url":"git+https://github.com/Alwatr/alwatr.git","type":"git","directory":"pkg/nanolib/directive"},"_npmVersion":"lerna/5.4.0/node@v22.23.1+x64 (linux)","description":"Connect your TypeScript classes to the DOM, declaratively.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"lit-html":"^3.3.3","@alwatr/delay":"9.38.2","@alwatr/logger":"9.38.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^7.0.2","@alwatr/standard":"9.38.2","@alwatr/nano-build":"9.38.1","@alwatr/type-helper":"9.38.2","@happy-dom/global-registrator":"^20.10.6"},"_npmOperationalInternal":{"tmp":"tmp/directive_9.38.2_1783856609893_0.09461080919370901","host":"s3://npm-registry-packages-npm-production"}},"10.0.0":{"name":"@alwatr/directive","version":"10.0.0","keywords":["alwatr","browser-api","declarative-ui","decorator","directive","dom","esm","frontend","idempotent","javascript","lightweight","module","nanolib","spa","synapse","typescript","ui-library","vanilla-js","web-components","web-development"],"author":{"url":"https://ali.mihandoost.com","name":"S. Ali Mihandoost","email":"ali.mihandoost@gmail.com"},"license":"MPL-2.0","_id":"@alwatr/directive@10.0.0","maintainers":[{"name":"alimd","email":"ali.mihan.doost@gmail.com"}],"homepage":"https://github.com/Alwatr/alwatr/tree/next/pkg/nanolib/directive#readme","bugs":{"url":"https://github.com/Alwatr/alwatr/issues"},"dist":{"shasum":"0d7f789273ac5e0dac9a534fe72366ccc87616ef","tarball":"https://registry.npmjs.org/@alwatr/directive/-/directive-10.0.0.tgz","fileCount":46,"integrity":"sha512-Xq1LyIMBnePEfw8GRDsgrXtOktEwuPqD/hsKvgvDgOcGkr6BtDXV31hyw34RNB355UazWh3zY4wy5keFXUN2Rg==","signatures":[{"sig":"MEUCIQDnKoCXKTS6GsuxlD8GhS//xBIWx6lj0d+txN516dQEjQIgD23nmxx0/j8djQZ93URQvxRTVTCpwbH5kckvRI0VQ9s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":294796},"type":"module","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js","default":"./dist/main.js","development":"./dist/dev/main.js"}},"gitHead":"ad367007af237263a64306c359d05fea63fb2dc7","scripts":{"b":"bun run build","t":"bun run test","w":"bun run watch","cl":"bun run clean","lint":"eslint src/ --ext .ts","test":"bun test","build":"bun run build:ts && bun run build:es","clean":"rm -rfv dist *.tsbuildinfo","watch":"bun run watch:ts & bun run watch:es","format":"prettier --write \"src/**/*.ts\"","build:es":"bun run build:es:dev && bun run build:es:prod","build:ts":"tsc --build","watch:es":"bun run build:es:dev --watch","watch:ts":"bun run build:ts --watch --preserveWatchOutput","build:es:dev":"nano-build --preset=module-web --outdir=dist/dev src/main.ts","build:es:prod":"NODE_ENV=production nano-build --preset=module-web --outdir=dist src/main.ts"},"_npmUser":{"name":"alimd","email":"ali.mihan.doost@gmail.com"},"repository":{"url":"git+https://github.com/Alwatr/alwatr.git","type":"git","directory":"pkg/nanolib/directive"},"_npmVersion":"lerna/5.4.2/node@v22.23.1+x64 (linux)","description":"Connect your TypeScript classes to the DOM, declaratively.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"lit-html":"^3.3.3","@alwatr/delay":"10.0.0","@alwatr/logger":"10.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^7.0.2","@alwatr/standard":"10.0.0","@alwatr/nano-build":"10.0.0","@alwatr/type-helper":"10.0.0","@happy-dom/global-registrator":"^20.11.1"},"_npmOperationalInternal":{"tmp":"tmp/directive_10.0.0_1785075717597_0.25308310906971054","host":"s3://npm-registry-packages-npm-production"}},"10.1.0":{"name":"@alwatr/directive","version":"10.1.0","keywords":["alwatr","browser-api","declarative-ui","decorator","directive","dom","esm","frontend","idempotent","javascript","lightweight","module","nanolib","spa","synapse","typescript","ui-library","vanilla-js","web-components","web-development"],"author":{"url":"https://ali.mihandoost.com","name":"S. Ali Mihandoost","email":"ali.mihandoost@gmail.com"},"license":"MPL-2.0","_id":"@alwatr/directive@10.1.0","maintainers":[{"name":"alimd","email":"ali.mihan.doost@gmail.com"}],"homepage":"https://github.com/Alwatr/alwatr/tree/next/pkg/nanolib/directive#readme","bugs":{"url":"https://github.com/Alwatr/alwatr/issues"},"dist":{"shasum":"3a531cce0a4f5b3e7bc46ec7c01c7f45e8c70cc6","tarball":"https://registry.npmjs.org/@alwatr/directive/-/directive-10.1.0.tgz","fileCount":46,"integrity":"sha512-YBwmMuo+SguSYGQt4y2XnfF3ro3AdJIdnAF7vvp0FcP+CyHFl+sN+HeA1xIl0h+unEoB24LoOINX3d8uZDTvgQ==","signatures":[{"sig":"MEYCIQCcemJNYnuXshbP87ugE+/zg3j9bHK07It1tw0ZYKmXWQIhAIIkMDu50as87nZA6m8YlaecMHJza93dnBTWrjfg7HTq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":294798},"type":"module","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js","default":"./dist/main.js","development":"./dist/dev/main.js"}},"gitHead":"b9efc218052a99652c3cb0bc990496f26b5b18cf","scripts":{"b":"bun run build","t":"bun run test","w":"bun run watch","cl":"bun run clean","lint":"eslint src/ --ext .ts","test":"bun test","build":"bun run build:ts && bun run build:es","clean":"rm -rfv dist *.tsbuildinfo","watch":"bun run watch:ts & bun run watch:es","format":"prettier --write \"src/**/*.ts\"","build:es":"bun run build:es:dev && bun run build:es:prod","build:ts":"tsc --build","watch:es":"bun run build:es:dev --watch","watch:ts":"bun run build:ts --watch --preserveWatchOutput","build:es:dev":"nano-build --preset=module-web --outdir=dist/dev src/main.ts","build:es:prod":"NODE_ENV=production nano-build --preset=module-web --outdir=dist src/main.ts"},"_npmUser":{"name":"alimd","email":"ali.mihan.doost@gmail.com"},"repository":{"url":"git+https://github.com/Alwatr/alwatr.git","type":"git","directory":"pkg/nanolib/directive"},"_npmVersion":"lerna/5.6.1/node@v22.23.2+x64 (linux)","description":"Connect your TypeScript classes to the DOM, declaratively.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"lit-html":"^3.3.3","@alwatr/delay":"10.1.0","@alwatr/logger":"10.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^7.0.2","@alwatr/standard":"10.0.0","@alwatr/nano-build":"10.0.0","@alwatr/type-helper":"10.0.0","@happy-dom/global-registrator":"^20.12.0"},"_npmOperationalInternal":{"tmp":"tmp/directive_10.1.0_1788188314005_0.6706256721059256","host":"s3://npm-registry-packages-npm-production"}},"10.2.0":{"_id":"@alwatr/directive@10.2.0","bugs":{"url":"https://github.com/Alwatr/alwatr/issues"},"dist":{"shasum":"dbc0fe93592afe5961324b02f0bbbe137d8015c6","tarball":"https://registry.npmjs.org/@alwatr/directive/-/directive-10.2.0.tgz","fileCount":46,"integrity":"sha512-8aSeRzhKcxMlPsD23Wg4W5NSo6gFnmTEDwF9cc+V4TmX2HeWjMFa2v4v2pjOTi0tGEAZnZ6KWA7Bid96ukMvAQ==","signatures":[{"sig":"MEUCICgogqvFVW1JTMgxLQaTrI43HZaNbZWdl4eVdV+Gbb4mAiEAhYsHIsniBsc/JN38PUUV1ID4lIMITTlE9oWNc/LVnIU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCC+TGkiUR4vj6fWA4PxvPKbxvviZckHNcm45AkpvDiCgIgN3nrktbwjKuzZG21zODzqveH3NJCxk1JMjs6ELjWBR8="}],"unpackedSize":294813},"name":"@alwatr/directive","type":"module","author":{"url":"https://ali.mihandoost.com","name":"S. Ali Mihandoost","email":"ali.mihandoost@gmail.com"},"exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js","default":"./dist/main.js","development":"./dist/dev/main.js"}},"gitHead":"2a0a52415ec6af039244806419c3b79734994c71","license":"MPL-2.0","scripts":{"b":"bun run build","t":"bun run test","w":"bun run watch","cl":"bun run clean","lint":"eslint src/ --ext .ts","test":"ALWATR_DEBUG=0 bun test","build":"bun run build:ts && bun run build:es","clean":"rm -rfv dist *.tsbuildinfo","watch":"bun run watch:ts & bun run watch:es","format":"prettier --write \"src/**/*.ts\"","build:es":"bun run build:es:dev && bun run build:es:prod","build:ts":"tsc --build","watch:es":"bun run build:es:dev --watch","watch:ts":"bun run build:ts --watch --preserveWatchOutput","build:es:dev":"nano-build --preset=module-web --outdir=dist/dev src/main.ts","build:es:prod":"NODE_ENV=production nano-build --preset=module-web --outdir=dist src/main.ts"},"version":"10.2.0","_npmUser":{"name":"alimd","email":"ali.mihan.doost@gmail.com"},"homepage":"https://github.com/Alwatr/alwatr/tree/next/pkg/nanolib/directive#readme","keywords":["alwatr","browser-api","declarative-ui","decorator","directive","dom","esm","frontend","idempotent","javascript","lightweight","module","nanolib","spa","synapse","typescript","ui-library","vanilla-js","web-components","web-development"],"repository":{"url":"git+https://github.com/Alwatr/alwatr.git","type":"git","directory":"pkg/nanolib/directive"},"_npmVersion":"lerna/5.6.1/node@v22.23.2+x64 (linux)","description":"Connect your TypeScript classes to the DOM, declaratively.","directories":{},"maintainers":[{"name":"alimd","email":"ali.mihan.doost@gmail.com"}],"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"lit-html":"^3.3.3","@alwatr/delay":"10.2.0","@alwatr/logger":"10.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^7.0.2","@alwatr/standard":"10.0.0","@alwatr/nano-build":"10.0.0","@alwatr/type-helper":"10.2.0","@happy-dom/global-registrator":"^20.14.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/directive_10.2.0_1788887181604_0.25351195686040695"}}},"time":{"created":"2026-04-13T14:29:25.413Z","modified":"2026-09-08T17:06:21.938Z","9.6.1":"2026-04-13T14:29:25.630Z","9.7.0":"2026-04-14T16:11:07.385Z","9.8.0":"2026-04-14T17:33:17.156Z","9.9.0":"2026-04-14T19:12:09.547Z","9.10.0":"2026-04-15T18:40:49.088Z","9.10.1":"2026-04-18T19:42:57.349Z","9.11.0":"2026-04-19T14:20:53.694Z","9.11.2":"2026-04-21T21:13:26.505Z","9.14.0":"2026-04-25T14:20:16.739Z","9.16.0":"2026-04-27T10:55:42.575Z","9.18.0":"2026-04-28T12:14:54.165Z","9.20.0":"2026-04-30T19:33:46.937Z","9.20.1":"2026-04-30T19:50:12.159Z","9.22.0":"2026-05-02T10:36:10.832Z","9.23.0":"2026-05-05T10:49:44.775Z","9.23.1":"2026-05-06T19:10:09.811Z","9.23.2":"2026-05-07T12:23:17.960Z","9.23.3":"2026-05-12T12:38:31.647Z","9.23.4":"2026-05-13T16:46:19.770Z","9.24.0":"2026-05-14T19:25:18.785Z","9.25.0":"2026-05-21T12:22:55.513Z","9.26.0":"2026-05-23T16:41:38.061Z","9.29.0":"2026-05-31T14:15:16.451Z","9.30.0":"2026-06-02T09:47:02.447Z","9.31.0":"2026-06-07T12:25:55.593Z","9.32.0":"2026-06-07T14:31:53.539Z","9.33.0":"2026-06-10T02:04:39.054Z","9.33.1":"2026-06-10T11:05:21.409Z","9.35.0":"2026-06-11T14:56:45.375Z","9.36.0":"2026-06-11T21:45:02.106Z","9.37.0":"2026-06-13T12:50:15.255Z","9.38.1":"2026-06-28T07:10:45.300Z","9.38.2":"2026-07-12T11:43:30.021Z","10.0.0":"2026-07-26T14:21:57.743Z","10.1.0":"2026-08-31T14:58:34.146Z","10.2.0":"2026-09-08T17:06:21.716Z"},"bugs":{"url":"https://github.com/Alwatr/alwatr/issues"},"author":{"url":"https://ali.mihandoost.com","name":"S. Ali Mihandoost","email":"ali.mihandoost@gmail.com"},"license":"MPL-2.0","homepage":"https://github.com/Alwatr/alwatr/tree/next/pkg/nanolib/directive#readme","keywords":["alwatr","browser-api","declarative-ui","decorator","directive","dom","esm","frontend","idempotent","javascript","lightweight","module","nanolib","spa","synapse","typescript","ui-library","vanilla-js","web-components","web-development"],"repository":{"url":"git+https://github.com/Alwatr/alwatr.git","type":"git","directory":"pkg/nanolib/directive"},"description":"Connect your TypeScript classes to the DOM, declaratively.","maintainers":[{"name":"alimd","email":"ali.mihan.doost@gmail.com"}],"readme":"# @alwatr/directive\n\n**Declarative DOM behavior — without a framework.**\n\n`@alwatr/directive` is a tiny, zero-dependency TypeScript library that lets you attach rich, reusable behaviors to DOM elements using plain HTML attributes. No virtual DOM. No build-time magic. No framework lock-in.\n\n---\n\n## Why Directives?\n\nModern web apps constantly need to enrich DOM elements: tooltips, lazy loaders, copy buttons, form validators, infinite scrollers, and more. The typical approaches all have trade-offs:\n\n| Approach                                 | Problem                                                                 |\n| ---------------------------------------- | ----------------------------------------------------------------------- |\n| Inline `querySelector` + event listeners | Scattered, hard to reuse, breaks on dynamic content                     |\n| Full framework (React, Vue, Angular)     | Heavy, opinionated, requires full buy-in                                |\n| Web Components                           | Verbose, requires custom element registration, no plain-HTML activation |\n| **`@alwatr/directive`**                  | ✅ Lightweight, declarative, reusable, SPA-friendly                     |\n\nThe **Directive Pattern** solves this by letting you encapsulate any DOM behavior in a self-contained class, then activate it declaratively from HTML — just by adding an attribute.\n\n### Key advantages\n\n- **Declarative activation** — behavior is triggered by HTML attributes, not imperative JS calls\n- **Zero coupling** — directives don't know about each other; HTML is the only contract\n- **Idempotent bootstrap** — safely re-run on dynamic content; already-initialized elements are skipped\n- **Async-safe initialization** — `init_()` runs after a macrotask so the DOM is always settled; visibility hooks (`lazyInit_()`, `onVisible_()`) are initialized after a macrotask and fire when the element becomes visible\n- **Automatic cleanup** — destroy hooks and `autoDestroy()` prevent memory leaks\n- **Progressive enhancement** — works on any existing HTML without restructuring your markup\n- **Tiny footprint** — no runtime overhead beyond what your directive actually does\n\n---\n\n## Installation\n\n```bash\nbun add @alwatr/directive\n# or\nnpm i @alwatr/directive\n# or\nyarn add @alwatr/directive\n# or\npnpm i @alwatr/directive\n```\n\n---\n\n## Core Concepts\n\nThe library is built around three primitives:\n\n### 1. `@directive(attributeName)`\n\nA class decorator that **registers** your class against an HTML attribute name. When `bootstrapDirectives()` runs, any element with that attribute gets an instance of your class.\n\n### 2. `Directive`\n\nThe abstract base class your directives extend. It wires up the element, a scoped logger, the attribute value, and the lifecycle hooks — so you only write the logic that matters.\n\n### 3. `bootstrapDirectives(root?)`\n\nScans a DOM subtree, finds all elements matching registered attribute names, and instantiates the corresponding directive class for each one. Idempotent — safe to call multiple times or on overlapping subtrees.\n\n---\n\n## Quick Start\n\n### 1. Create a directive\n\n```typescript\n// src/directives/copy-button.ts\nimport {directive, Directive} from '@alwatr/directive';\n\n@directive('copy-button')\nexport class CopyButtonDirective extends Directive {\n  private originalText_!: string;\n\n  protected override async init_(): Promise<void> {\n    // this.attributeValue  → value of the 'copy-button' attribute\n    // this.element_        → the bound HTMLElement\n    // this.logger_         → scoped logger: \"directive:copy-button/0\"\n\n    this.originalText_ = this.element_.textContent ?? 'Copy';\n    this.element_.addEventListener('click', () => this.handleClick_());\n  }\n\n  private async handleClick_(): Promise<void> {\n    const text = this.attributeValue || this.element_.dataset.copyText || '';\n\n    try {\n      await navigator.clipboard.writeText(text);\n      this.element_.textContent = 'Copied!';\n    } catch {\n      this.element_.textContent = 'Failed!';\n    }\n\n    setTimeout(() => {\n      this.element_.textContent = this.originalText_;\n    }, 2000);\n  }\n}\n```\n\n### 2. Bootstrap on page load\n\n```typescript\n// src/main.ts\nimport {bootstrapDirectives} from '@alwatr/directive';\nimport './directives/copy-button.js'; // importing registers the directive\n\n// Safe to call at any point — if the DOM isn't ready yet,\n// bootstrapDirectives() will automatically defer until DOMContentLoaded.\nbootstrapDirectives();\n```\n\n### 3. Activate from HTML\n\n```html\n<button copy-button=\"Hello, world!\">Copy</button>\n```\n\nThat's it. No `getElementById`. No manual wiring. The attribute is the contract.\n\n---\n\n## Reading the Attribute Value\n\nEvery directive automatically receives the attribute's value via `this.attributeValue`:\n\n```html\n<div show-tooltip=\"This is a helpful hint\">Hover me</div>\n```\n\n```typescript\n@directive('show-tooltip')\nclass TooltipDirective extends Directive {\n  protected override init_(): void {\n    // this.attributeValue === 'This is a helpful hint'\n    this.element_.title = this.attributeValue;\n  }\n}\n```\n\n> **Tip:** `init_()` is optional. If you only need `@on` decorators or visibility hooks, you don't have to define it at all.\n\n---\n\n## Dynamic Content (SPA-friendly)\n\n`bootstrapDirectives` is **idempotent**. You can call it as many times as you want — already-initialized elements are tracked internally via a `WeakMap` and are never touched again.\n\n```typescript\n// After fetching and injecting new HTML into the page:\nconst container = document.querySelector('#dynamic-region')!;\ncontainer.innerHTML = await fetchSomeHtml();\n\n// Only the new elements will be initialized\nbootstrapDirectives(container);\n```\n\nThis makes `@alwatr/directive` a natural fit for SPAs, server-side rendered pages with client-side hydration, and any app that loads content dynamically.\n\n---\n\n## Lifecycle\n\n```\nnew Directive(element, attributeName)\n  │\n  ├─ constructor runs synchronously\n  │    sets: attributeName, attributeValue, element_, logger_, index\n  │\n  └─ after one macrotask (delay.nextMacrotask)\n       ├─ init_()?       ← optional — runs once (setup, event listeners, signal subscriptions)\n       ├─ lazyInit_()?   ← optional — runs once, when element first enters viewport\n       ├─ onVisible_()?  ← optional — runs every time element enters viewport\n       └─ onHidden_()?   ← optional — runs every time element leaves viewport\n\nstate change (via @state accessor or StateSignal subscription)\n  │\n  └─ requestUpdate()   ← ignored if disableUpdate_ is true; batched otherwise\n       ├─ shouldUpdate_()?  ← return false to abort (skip update_/updated_ entirely)\n       ├─ update_()     ← DOM mutations / lit-html render() [LitDirective]\n       └─ updated_()    ← post-render hook\n```\n\nThe macrotask delay ensures the full DOM subtree is painted and settled before your directive runs — no race conditions with sibling elements or CSS.\n\nAll four hooks are **optional**. You only define the ones you need — a directive that only uses `@on` decorators doesn't need any hook at all.\n\n---\n\n## Visibility Hooks\n\n`Directive` provides two optional lifecycle hooks for viewport-aware behavior. Both are powered by `IntersectionObserver` and include automatic cleanup on `destroy()`.\n\n### `lazyInit_()`\n\nRuns **exactly once** — the first time the element enters the viewport. Ideal for expensive one-time operations you want to defer until the element is actually visible.\n\n**Fallback chain** (when `IntersectionObserver` is unavailable):\n\n1. `IntersectionObserver` — fires on first intersection, then disconnects\n2. `requestIdleCallback` — schedules execution during browser idle time\n3. `setTimeout(100ms)` — last resort for environments with neither API\n\n```typescript\n@directive('product-image')\nclass ProductImageDirective extends Directive {\n  protected override init_(): void {\n    this.element_.classList.add('loading-skeleton');\n  }\n\n  protected override async lazyInit_(): Promise<void> {\n    // Only runs once, when the image scrolls into view\n    const img = this.element_.querySelector('img')!;\n    img.src = img.dataset['src']!;\n    await img.decode();\n    this.element_.classList.remove('loading-skeleton');\n  }\n}\n```\n\n```html\n<div product-image=\"product-123\">\n  <img data-src=\"https://cdn.example.com/product-123.jpg\" />\n</div>\n```\n\n### `onVisible_()`\n\nRuns **every time** the element enters the viewport. Ideal for impression tracking, restarting animations, or refreshing dynamic data on each appearance.\n\n**Fallback** (when `IntersectionObserver` is unavailable): `onVisible_()` is scheduled once via `setTimeout(100ms)` at setup time, so critical visibility logic is never silently skipped while avoiding a performance hit at startup.\n\n```typescript\n@directive('track-impression')\nclass ImpressionTrackerDirective extends Directive {\n  protected override onVisible_(): void {\n    // Fires each time this element scrolls into view\n    analytics.trackImpression(this.attributeValue);\n  }\n}\n```\n\n```html\n<div track-impression=\"banner-hero\">...</div>\n```\n\n### `onHidden_()`\n\nRuns **every time** the element leaves the viewport. The counterpart to `onVisible_()`.\n\n**Fallback**: no fallback — if `IntersectionObserver` is unavailable, this hook is never called. Design your directive to work correctly without it.\n\n```typescript\n@directive('auto-pause-video')\nclass AutoPauseVideoDirective extends Directive {\n  private video_!: HTMLVideoElement;\n\n  protected override init_(): void {\n    this.video_ = this.element_.querySelector('video')!;\n  }\n\n  protected override onVisible_(): void {\n    void this.video_.play();\n  }\n\n  protected override onHidden_(): void {\n    this.video_.pause();\n  }\n}\n```\n\n```html\n<div auto-pause-video>\n  <video src=\"clip.mp4\"></video>\n</div>\n```\n\n> **Note:** `onVisible_` and `onHidden_` share a single `IntersectionObserver` instance — no duplicate observers are created when both are defined.\n\n### Customizing the `IntersectionObserver` — `intersectionOptions_`\n\nBy default, all three visibility hooks (`lazyInit_`, `onVisible_`, `onHidden_`) use the browser's default `IntersectionObserver` settings: the **viewport** as the root, **no margin**, and a **0 threshold** (fires as soon as a single pixel is visible).\n\nOverride `intersectionOptions_` in your subclass to change this behaviour. The same options object is shared by every observer created for that directive instance.\n\n```typescript\nprotected override intersectionOptions_: IntersectionObserverInit = {\n  rootMargin: '200px 0px', // pre-load 200 px before the element enters the viewport\n  threshold: 0,\n};\n```\n\n#### Common recipes\n\n**Pre-load before the element is visible** — useful for images and heavy components:\n\n```typescript\n@directive('lazy-image')\nclass LazyImageDirective extends Directive {\n  protected override intersectionOptions_: IntersectionObserverInit = {\n    rootMargin: '200px 0px', // start loading 200 px early\n  };\n\n  protected override async lazyInit_(): Promise<void> {\n    const img = this.element_.querySelector('img')!;\n    img.src = img.dataset['src']!;\n    await img.decode();\n  }\n}\n```\n\n**Fire only when the element is at least 50 % visible** — useful for impression tracking:\n\n```typescript\n@directive('track-impression')\nclass ImpressionTrackerDirective extends Directive {\n  protected override intersectionOptions_: IntersectionObserverInit = {\n    threshold: 0.5, // at least half the element must be visible\n  };\n\n  protected override onVisible_(): void {\n    analytics.trackImpression(this.attributeValue);\n  }\n}\n```\n\n**Observe within a scrollable container** — useful for sticky headers or virtualised lists:\n\n```typescript\n@directive('sticky-header')\nclass StickyHeaderDirective extends Directive {\n  protected override intersectionOptions_: IntersectionObserverInit = {\n    root: document.querySelector('#scroll-container'),\n    rootMargin: '-64px 0px 0px 0px', // account for a 64 px top bar\n    threshold: 0,\n  };\n\n  protected override onHidden_(): void {\n    this.element_.classList.add('is-sticky');\n  }\n\n  protected override onVisible_(): void {\n    this.element_.classList.remove('is-sticky');\n  }\n}\n```\n\n> **Tip:** `intersectionOptions_` must be set **before** `init_()` completes, because the observers are created during `initializeLifecycle_()` which runs right after `init_()`. The safest place is a class field initializer or the constructor.\n\n### Using both hooks together\n\n```typescript\n@directive('product-card')\nclass ProductCardDirective extends Directive {\n  // Runs once at setup — attach event listeners\n  protected override init_(): void {\n    this.element_.addEventListener('click', () => this.handleClick_());\n  }\n\n  // Runs once when card first scrolls into view — fetch data\n  protected override async lazyInit_(): Promise<void> {\n    const data = await fetchProductData(this.attributeValue);\n    this.element_.querySelector('.price')!.textContent = data.price;\n  }\n\n  // Runs every time card scrolls into view — track impressions\n  protected override onVisible_(): void {\n    analytics.trackImpression(this.attributeValue);\n  }\n\n  private handleClick_() {\n    /* ... */\n  }\n}\n```\n\n### Cleanup & `destroy()`\n\nAll visibility hooks register their `IntersectionObserver` in `destroyHookList__` automatically. `onVisible_` and `onHidden_` share a single observer, so only one entry is added. When `destroy()` is called:\n\n- The `lazyInit_` observer is disconnected — if the element hasn't entered the viewport yet, `lazyInit_()` will **not** run.\n- The shared `onVisible_`/`onHidden_` observer is disconnected — neither hook will fire after destruction.\n\nNo manual cleanup is needed. No memory leaks.\n\n### Hook comparison\n\n|                    | `init_()?`             | `lazyInit_()?`                       | `onVisible_()?`                        | `onHidden_()?`                    |\n| ------------------ | ---------------------- | ------------------------------------ | -------------------------------------- | --------------------------------- |\n| **When**           | After next macrotask   | First viewport entry                 | Every viewport entry                   | Every viewport exit               |\n| **Times**          | Once                   | Once                                 | Unlimited                              | Unlimited                         |\n| **Good for**       | Event listeners, setup | Lazy loading, data fetch             | Impression tracking, animation restart | Pause video, cancel work, hide UI |\n| **Auto cleanup**   | —                      | ✅ observer disconnected on destroy  | ✅ shared observer, disconnected       | ✅ shared observer, disconnected  |\n| **Error handling** | —                      | ✅ logged, never re-thrown           | ✅ logged, never re-thrown             | ✅ logged, never re-thrown        |\n| **Fallback**       | —                      | `requestIdleCallback` → `setTimeout` | Called once via `setTimeout(100ms)`    | None — silently skipped           |\n| **Custom options** | —                      | ✅ via `intersectionOptions_`        | ✅ via `intersectionOptions_`          | ✅ via `intersectionOptions_`     |\n\n---\n\n## Cleanup & Memory Management\n\n### `addDestroyHook(task)`\n\nRegister cleanup callbacks that run when `destroy()` is called. Use this to remove global event listeners, cancel timers, or unsubscribe from signals.\n\n```typescript\n@directive('live-clock')\nclass LiveClockDirective extends Directive {\n  protected override init_(): void {\n    const intervalId = setInterval(() => {\n      this.element_.textContent = new Date().toLocaleTimeString();\n    }, 1000);\n\n    // Registered cleanup — runs automatically on destroy()\n    this.addDestroyHook(() => clearInterval(intervalId));\n  }\n}\n```\n\n### `destroy()`\n\nRuns all registered destroy hooks in order, then nullifies the internal element reference to aid garbage collection.\n\n### `autoDestroy()`\n\nChecks whether `this.element_` is still connected to the DOM. If not, calls `destroy()` and returns `true`. Use this with `autoDestructDirectives()` for periodic cleanup.\n\n### `autoDestructDirectives()`\n\nIterates over all live directive instances and calls `autoDestroy()` on each. Pair with a `MutationObserver` or a periodic interval for automatic memory management in long-running SPAs.\n\n```typescript\nimport {autoDestructDirectives} from '@alwatr/directive';\n\n// Clean up disconnected directives every 30 seconds\nsetInterval(autoDestructDirectives, 30_000);\n```\n\n---\n\n## Dispatching Events\n\nUse `dispatch()` to fire a bubbling `CustomEvent` from the directive's element — a clean way to communicate upward without tight coupling.\n\n```typescript\n@directive('submit-form')\nclass SubmitFormDirective extends Directive {\n  protected override init_(): void {\n    this.element_.addEventListener('click', () => {\n      this.dispatch('form-submitted', {formId: this.attributeValue});\n    });\n  }\n}\n\n// Anywhere in the app_\ndocument.addEventListener('form-submitted', (e: CustomEvent) => {\n  console.log('Form submitted:', e.detail.formId);\n});\n```\n\n---\n\n## Reactive Rendering — `requestUpdate()`, `shouldUpdate_()`, `update_()`, `updated_()`\n\n`Directive` includes a lightweight batched update cycle for directives that need to re-render their DOM in response to state changes.\n\n### The update cycle\n\n```\nstate change\n  │\n  └─ requestUpdate()     ← ignored if disableUpdate_ is true; batched otherwise\n       │\n       ├─ shouldUpdate_()?  ← return false to abort (update_/updated_ are skipped)\n       ├─ update_()         ← perform DOM mutations / call lit-html render()\n       └─ updated_()        ← post-render hook (focus, measure, dispatch events)\n```\n\n### Triggering an update\n\nThere are three idiomatic ways to start the cycle:\n\n**1. `@state` accessor (most common — local state)**\n\nSetting a `@state`-decorated accessor automatically calls `requestUpdate()`:\n\n```ts\n@directive('like-button')\nclass LikeButtonDirective extends Directive {\n  @state()\n  accessor liked_: string | null = null;\n\n  protected override init_(): void {\n    this.liked_ = 'false'; // triggers first update\n    this.on_('click', () => {\n      this.liked_ = this.liked_ === 'true' ? 'false' : 'true'; // triggers re-render\n    });\n  }\n\n  protected override update_(): void {\n    this.element_.classList.toggle('liked', this.liked_ === 'true');\n  }\n}\n```\n\n**2. `StateSignal` subscription (shared application state)**\n\nSubscribe to a signal in `init_()` and call `requestUpdate()` from the callback. Use the built-in `subscribe_()` helper to avoid the manual `addDestroyHook` boilerplate:\n\n```ts\n@directive('cart-badge')\nclass CartBadgeDirective extends Directive {\n  private count_ = 0;\n\n  protected override init_(): void {\n    // subscribe_() automatically unsubscribes on destroy() — no addDestroyHook needed\n    this.subscribe_(cartSignal, (cart) => {\n      this.count_ = cart.items.length;\n      this.requestUpdate();\n    });\n  }\n\n  protected override update_(): void {\n    this.element_.textContent = String(this.count_);\n  }\n}\n```\n\n**3. Manual call (imperative mutations)**\n\nCall `requestUpdate()` directly after mutating non-`@state` internal state:\n\n```ts\nprotected override init_(): void {\n  this.on_('click', () => {\n    this.count_++;\n    this.requestUpdate();\n  });\n}\n```\n\n### `shouldUpdate_()`\n\nOverride to conditionally abort an update cycle before `update_()` runs. Return `false` (strict boolean) to skip the render entirely; return `true` or `void` to proceed normally.\n\nThe `disableUpdate_` flag is cleared even when `shouldUpdate_()` returns `false`, so a future `requestUpdate()` will schedule a new cycle normally.\n\n```ts\n@directive('data-table')\nclass DataTableDirective extends LitDirective {\n  private loading_ = true;\n\n  // Suppress all renders until data has been fetched\n  protected override shouldUpdate_(): boolean | void {\n    if (this.loading_) return false;\n  }\n\n  protected override async lazyInit_(): Promise<void> {\n    this.rows_ = await fetchRows();\n    this.loading_ = false;\n    this.requestUpdate(); // shouldUpdate_() now returns void → render proceeds\n  }\n\n  protected override render_() {\n    return html`\n      ${this.rows_.map(\n        (r) => html`\n          <tr><td>${r.name}</td></tr>\n        `,\n      )}\n    `;\n  }\n}\n```\n\nAnother common pattern — skip renders while the element is inside a hidden panel:\n\n```ts\nprotected override shouldUpdate_(): boolean | void {\n  if (this.element_.closest('[hidden]')) return false;\n}\n```\n\n### `disableUpdate_`\n\nA `protected` boolean flag that controls whether `requestUpdate()` is allowed to schedule a new render cycle. It serves two roles:\n\n**1. Pending-update guard (automatic)**\nSet to `true` by `requestUpdate()` and cleared back to `false` by `performUpdate__()` once the cycle finishes (or is aborted by `shouldUpdate_()`). This collapses multiple `requestUpdate()` calls within the same macrotask into a single render.\n\n**2. Manual render suppression (opt-in)**\nSubclasses can set `disableUpdate_ = true` at any time to pause rendering indefinitely — for example, while performing a multi-step async setup or while the element is off-screen. Set it back to `false` and call `requestUpdate()` to resume.\n\n**`disableUpdate_` vs `shouldUpdate_()`**\n\n|                      | `disableUpdate_ = true`                    | `shouldUpdate_()` returning `false`         |\n| -------------------- | ------------------------------------------ | ------------------------------------------- |\n| Scope                | Prevents **all future** cycles until reset | Aborts only the **current** in-flight cycle |\n| Resets automatically | No — you must reset it manually            | Yes — cleared after each aborted cycle      |\n| Use when             | Sustained pause (loading, off-screen)      | Per-cycle condition (data not ready yet)    |\n\n```ts\n@directive('live-feed')\nclass LiveFeedDirective extends LitDirective {\n  // Pause all renders while the element is scrolled out of view\n  protected override onHidden_(): void {\n    this.disableUpdate_ = true;\n  }\n\n  protected override onVisible_(): void {\n    this.disableUpdate_ = false;\n    this.requestUpdate(); // catch up with any missed state changes\n  }\n\n  protected override render_() {\n    return html`\n      <ul>\n        ${this.items_.map(\n          (i) => html`\n            <li>${i}</li>\n          `,\n        )}\n      </ul>\n    `;\n  }\n}\n```\n\n```ts\n@directive('async-card')\nclass AsyncCardDirective extends LitDirective {\n  protected override async init_(): Promise<void> {\n    // Block signal-triggered renders until initial data is ready\n    this.disableUpdate_ = true;\n\n    this.subscribe_(dataSignal, (data) => {\n      this.data_ = data;\n      this.requestUpdate(); // silently ignored while disableUpdate_ is true\n    });\n\n    await this.loadInitialData_();\n\n    this.disableUpdate_ = false; // re-enable\n    this.requestUpdate(); // first render with fully loaded state\n  }\n}\n```\n\n### `update_()`\n\nOverride to perform DOM mutations. Called once per scheduled cycle, synchronously inside the macrotask. `LitDirective` overrides this to call `lit-html`'s `render()`.\n\n### `updated_()`\n\nOverride to run post-render logic — measuring layout, focusing an element, or dispatching a `CustomEvent`:\n\n```ts\nprotected override updated_(): void {\n  this.element_.querySelector<HTMLElement>('.active-item')?.focus();\n}\n```\n\n---\n\n## `LitDirective` — Declarative Templates with `lit-html`\n\n`LitDirective` extends `Directive` and adds a `render_()` hook that integrates `lit-html`. Use it when you want to describe a directive's DOM output as a declarative template instead of imperative DOM mutations.\n\n```ts\nimport {directive, LitDirective, state} from '@alwatr/directive';\nimport {html} from 'lit-html';\n\n@directive('cart-badge')\nexport class CartBadgeDirective extends LitDirective {\n  @state()\n  accessor count_: string | null = null;\n\n  protected override init_(): void {\n    // StateSignal.subscribe() calls the callback immediately with the current value,\n    // so the first render happens right after init_() without any extra trigger.\n    const sub = cartSignal.subscribe((cart) => {\n      this.count_ = String(cart.items.length); // @state setter calls requestUpdate()\n    });\n    this.addDestroyHook(() => sub.unsubscribe());\n  }\n\n  protected override render_() {\n    return html`\n      <span class=\"badge\">${this.count_ ?? '0'}</span>\n    `;\n  }\n}\n```\n\n```html\n<div cart-badge></div>\n```\n\n### `render_()`\n\nThe only method you must implement. Return any value accepted by `lit-html`'s `render()` — typically an `html` tagged template literal. Keep it pure and side-effect-free; all side effects belong in `update_()` or `updated_()`.\n\n### `rootElement_`\n\nBy default `lit-html` renders into `this.element_`. Override `rootElement_` to redirect rendering into a different container:\n\n```ts\n@directive('shadow-card')\nclass ShadowCardDirective extends LitDirective {\n  protected override rootElement_ = this.element_.attachShadow({mode: 'open'}) as unknown as HTMLElement;\n\n  protected override render_() {\n    return html`\n      <slot></slot>\n    `;\n  }\n}\n```\n\n### When to use `LitDirective` vs `Directive`\n\n| Scenario                                             | Use            |\n| ---------------------------------------------------- | -------------- |\n| Simple DOM mutations, event listeners, class toggles | `Directive`    |\n| Complex, data-driven templates that change shape     | `LitDirective` |\n| Subscribing to signals and re-rendering a template   | `LitDirective` |\n\n---\n\n## `@state` — Reactive Local State\n\n`@state` marks an `accessor` as reactive. Every time the accessor is set, `requestUpdate()` is called automatically — no manual trigger needed.\n\n```ts\n@state()\naccessor count_: string | null = null;\n```\n\n**Rules:**\n\n- Requires the `accessor` keyword (ES2024 auto-accessor feature)\n- **Primitive equality check** — if the new value is identical to the current value (via `Object.is`) and is a primitive or `null`, the update is skipped. For objects and arrays, every `set` schedules an update regardless of reference equality.\n- For **shared** state, use a `StateSignal` subscription instead (see above)\n\n**Combining `@state` with `StateSignal`** is the standard pattern for reactive directives:\n\n```ts\n@directive('user-avatar')\nclass UserAvatarDirective extends LitDirective {\n  @state()\n  accessor avatarUrl_: string | null = null;\n\n  protected override init_(): void {\n    const sub = userSignal.subscribe((user) => {\n      this.avatarUrl_ = user.avatarUrl; // @state triggers re-render on each emission\n    });\n    this.addDestroyHook(() => sub.unsubscribe());\n  }\n\n  protected override render_() {\n    return html`\n      <img\n        src=${this.avatarUrl_ ?? '/default-avatar.png'}\n        alt=\"avatar\"\n      />\n    `;\n  }\n}\n```\n\nThese TC39 Stage 3 accessor decorators reduce boilerplate for common patterns inside directives. They require the `accessor` keyword.\n\n### `@query(selector, cache?, root?)`\n\nLazily queries a single child element. Cached by default.\n\n```typescript\n@directive('my-card')\nclass CardDirective extends Directive {\n  @query('.card-title')\n  accessor titleEl!: HTMLElement | null;\n\n  @query('.card-body', false) // cache=false → re-queries on every access\n  accessor bodyEl!: HTMLElement | null;\n\n  protected override init_(): void {\n    if (this.titleEl) {\n      this.titleEl.textContent = 'Hello!';\n    }\n  }\n}\n```\n\n### `@queryAll(selector, cache?, root?)`\n\nLazily queries all matching child elements. Cached by default.\n\n```typescript\n@directive('my-tabs')\nclass TabsDirective extends Directive {\n  @queryAll('.tab-item')\n  accessor tabItems!: NodeListOf<HTMLElement>;\n\n  protected override init_(): void {\n    this.tabItems.forEach((tab, i) => {\n      tab.addEventListener('click', () => this.activateTab_(i));\n    });\n  }\n\n  private activateTab_(index: number): void {\n    /* ... */\n  }\n}\n```\n\n### `@attribute(name, cache?, root?)`\n\nLazily reads an attribute value from the element. Cached by default.\n\n```typescript\n@directive('user-card')\nclass UserCardDirective extends Directive {\n  @attribute('user-id')\n  accessor userId!: string | null;\n\n  @attribute('user-role')\n  accessor userRole!: string | null;\n\n  protected override async init_(): Promise<void> {\n    if (!this.userId) return;\n    const user = await fetchUser(this.userId);\n    this.element_.querySelector('.name')!.textContent = user.name;\n  }\n}\n```\n\n### `@on(eventType, selector?, options?)`\n\n> **⚠️ Deprecated:** This decorator relies on `context.addInitializer`, which is not yet stable across all JS environments. Use the `on_()` protected method inside `init_()` instead — it provides identical functionality with full stability.\n\nRegisters a DOM event listener on `this.element_` (or a matching child element) and automatically removes it when the directive is destroyed — no manual `addEventListener` / `removeEventListener` needed.\n\n```typescript\n@directive('my-form')\nclass MyFormDirective extends Directive {\n  // Basic: listen on this.element_\n  @on('click')\n  protected onClick_(event: Event): void {\n    console.log('clicked', event);\n  }\n\n  // Selector-based: listen on a child element\n  @on('input', '.search-input')\n  protected onInput_(event: Event): void {\n    console.log('input', (event.target as HTMLInputElement).value);\n  }\n\n  // With options (e.g. passive scroll listener)\n  @on('scroll', undefined, {passive: true})\n  protected onScroll_(event: Event): void {\n    /* ... */\n  }\n}\n```\n\nThe listener is bound to the directive instance, so `this` inside the method always refers to the directive. Cleanup is registered automatically via `addDestroyHook` — when `destroy()` is called, all `@on` listeners are removed.\n\nSince `init_()` is optional, a directive that only uses `@on` decorators doesn't need to define any lifecycle hook:\n\n```typescript\n@directive('close-dialog')\nclass CloseDialogDirective extends Directive {\n  @on('click')\n  protected onClick_(): void {\n    this.element_.closest('dialog')?.close();\n  }\n}\n```\n\n> **Warning:** If `selector` is provided but `this.element_.querySelector(selector)` returns `null`, a warning is logged and the listener is silently skipped — no error is thrown.\n\n---\n\n## Full API Reference\n\n### `directive(attributeName: string)`\n\nClass decorator. Registers the decorated class in the global directive registry.\n\n- `attributeName` — the HTML attribute that activates this directive (e.g. `'show-tooltip'`)\n- Throws if used on a non-class target\n- Logs a warning and skips silently if the same attribute name is registered twice\n\n---\n\n### `Directive` (abstract class)\n\n| Member                                   | Type                                              | Description                                                                                                                                                                          |\n| ---------------------------------------- | ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `attributeName`                          | `readonly string`                                 | The attribute name this directive is bound to                                                                                                                                        |\n| `attributeValue`                         | `readonly string`                                 | The value of the attribute at construction time                                                                                                                                      |\n| `index`                                  | `readonly number`                                 | Per-attribute instance counter (0, 1, 2, …)                                                                                                                                          |\n| `element_`                               | `protected readonly HTMLElement`                  | The bound DOM element                                                                                                                                                                |\n| `logger_`                                | `protected readonly`                              | Scoped logger: `directive:{attributeName}/{index}`                                                                                                                                   |\n| `intersectionOptions_`                   | `protected IntersectionObserverInit \\| undefined` | Optional options forwarded to every `IntersectionObserver` created for this directive (`lazyInit_`, `onVisible_`, `onHidden_`). Must be set before `init_()` completes.              |\n| `init_()?`                               | `protected`                                       | Optional — runs once after next macrotask (setup, event listeners)                                                                                                                   |\n| `lazyInit_()?`                           | `protected`                                       | Optional — runs once when element first enters the viewport                                                                                                                          |\n| `onVisible_()?`                          | `protected`                                       | Optional — runs every time element enters the viewport                                                                                                                               |\n| `onHidden_()?`                           | `protected`                                       | Optional — runs every time element leaves the viewport                                                                                                                               |\n| `requestUpdate()`                        | `public`                                          | Schedules a batched `update_()` + `updated_()` call for the next macrotask. Ignored if `disableUpdate_` is `true`. Multiple calls within the same cycle collapse into one.           |\n| `disableUpdate_`                         | `protected boolean`                               | When `true`, `requestUpdate()` is a no-op. Set manually to pause rendering; reset to `false` and call `requestUpdate()` to resume. Also used internally as the pending-update guard. |\n| `shouldUpdate_()`                        | `protected`                                       | Called before `update_()` in each cycle. Return `false` to abort the cycle (skips `update_()` and `updated_()`). Return `true` or `void` to proceed. Base returns `void`.            |\n| `update_()`                              | `protected`                                       | Called once per update cycle — override to perform DOM mutations. `LitDirective` overrides this to call `lit-html`'s `render()`.                                                     |\n| `updated_()`                             | `protected`                                       | Called immediately after `update_()` — override for post-render logic (focus, measure, dispatch events).                                                                             |\n| `dispatch(event, detail?)`               | `public`                                          | Fires a bubbling `CustomEvent` from `element_`                                                                                                                                       |\n| `addDestroyHook(task)`                   | `public`                                          | Registers an async cleanup callback                                                                                                                                                  |\n| `subscribe_(signal, callback, options?)` | `protected`                                       | Subscribes to a read-only signal and automatically unsubscribes on `destroy()`. Idiomatic replacement for `signal.subscribe()` + `addDestroyHook()`.                                 |\n| `destroy()`                              | `public async`                                    | Runs all destroy hooks, then nullifies `element_`                                                                                                                                    |\n| `autoDestroy()`                          | `public`                                          | Destroys if element is disconnected; returns `true` if destroyed                                                                                                                     |\n\n---\n\n### `LitDirective` (abstract class, extends `Directive`)\n\n| Member            | Type                                 | Description                                                                                                                                                                    |\n| ----------------- | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `rootElement_`    | `protected HTMLElement \\| undefined` | The container `lit-html` renders into. Defaults to `element_`. Override to redirect rendering (e.g. Shadow DOM root).                                                          |\n| `shouldUpdate_()` | `protected override`                 | Inherited guard — return `false` to skip `render_()` entirely for the current cycle. Return `true` or `void` to proceed. Useful for suppressing renders while data is loading. |\n| `render_()`       | `protected abstract`                 | **Must implement.** Returns the `lit-html` template for each update cycle. Keep it pure — no side effects.                                                                     |\n| `update_()`       | `protected override`                 | Calls `render_()` and passes the result to `lit-html`'s `render()`. Do not call directly — use `requestUpdate()`.                                                              |\n\n---\n\n### `bootstrapDirectives(root?: Element | Document)`\n\nScans `root` (default: `document.body`) for elements matching registered attribute names and instantiates their directive classes.\n\n- Safe to call before DOM is ready — defers automatically via `DOMContentLoaded`\n- Idempotent — uses a `WeakMap` to skip already-initialized elements\n- Scoped — pass any element to limit the scan to a subtree\n\n---\n\n### `autoDestructDirectives()`\n\nIterates all live directive instances and calls `autoDestroy()` on each. Removes destroyed instances from the internal registry.\n\n---\n\n### `state()`\n\nAccessor decorator. Marks the accessor as reactive local state — every `set` call automatically schedules a re-render via `requestUpdate()`.\n\n- **Primitive equality check** — if the new value is identical to the current value (via `Object.is`) and is a primitive or `null`, the update is skipped. For objects and arrays, every `set` schedules an update regardless of reference equality.\n- **Requires `accessor` keyword**\n- For shared application state, use a `StateSignal` subscription instead\n\n---\n\n### `query<T>(selector, cache?, root?)`\n\nAccessor decorator. Lazily queries `element_.querySelector<T>(selector)`.\n\n- `cache` (default `true`) — caches result after first access\n- `root` — override the query root (defaults to `element_`)\n- **Requires `accessor` keyword**\n\n---\n\n### `queryAll<T>(selector, cache?, root?)`\n\nAccessor decorator. Lazily queries `element_.querySelectorAll<T>(selector)`.\n\n- Same options as `@query`\n- **Requires `accessor` keyword**\n\n---\n\n### `attribute(name, cache?, root?)`\n\nAccessor decorator. Lazily reads `element_.getAttribute(name)`.\n\n- `cache` (default `true`) — caches result after first access\n- `root` — override the element to read from (defaults to `element_`)\n- **Requires `accessor` keyword**\n\n---\n\n### `on(eventType, selector?, options?)` _(deprecated)_\n\n> **⚠️ Deprecated:** Relies on `context.addInitializer`, which is not yet stable. Use `on_()` inside `init_()` instead.\n\nMethod decorator. Registers a DOM event listener and removes it automatically on `destroy()`.\n\n- `eventType` — `keyof HTMLElementEventMap | string` — the event to listen for (e.g. `'click'`, `'input'`)\n- `selector` — optional CSS selector; when provided, the listener is registered on `this.element_.querySelector(selector)` instead of `this.element_`\n- `options` — optional `AddEventListenerOptions | boolean` passed directly to `addEventListener`\n- The decorated method is bound to the directive instance (`this` is always the directive)\n- When `selector` is provided but matches no element, a warning is logged and registration is skipped silently\n- Throws if applied to a non-method class member\n\n---\n\n## TypeScript Configuration\n\nDirectives use TC39 Stage 3 decorators. Make sure your `tsconfig.json` does **not** use `experimentalDecorators`:\n\n```jsonc\n{\n  \"compilerOptions\": {\n    // Do NOT set \"experimentalDecorators\": true\n    // Stage 3 decorators are enabled by default in TypeScript 5+\n  },\n}\n```\n\n---\n\n---\n\n## 🌊 Part of Alwatr Flux\n\n`@alwatr/directive` is the **View Layer** of the [Alwatr Flux](https://github.com/Alwatr/alwatr/tree/next/pkg/flux) architecture — a complete Unidirectional Data Flow system for building scalable Progressive Web Applications.\n\n```\nView (@alwatr/directive — declarative DOM behaviors)\n  ↓\nAction Layer (@alwatr/action — global event delegation)\n  ↓\nController (business logic)\n  ↓\nState Layer (@alwatr/signal — fine-grained reactivity)\n  ↓\nView (re-render via signal subscriptions)\n```\n\nDirectives are the **presentation layer** of the Flux architecture. They attach rich behaviors to DOM elements declaratively, subscribe to signals for reactive updates, and dispatch actions upward through the action bus — never touching state directly.\n\n**The full Flux bundle** (`@alwatr/flux`) includes directives, signals, actions, page-ready, and storage — everything you need to build a complete reactive application from a single import.\n\n```typescript\n// Use @alwatr/flux for the complete architecture\nimport {Directive, directive, bootstrapDirectives, createStateSignal, onAction} from '@alwatr/flux';\n\n// Or use @alwatr/directive standalone for just the directive system\nimport {Directive, directive, bootstrapDirectives} from '@alwatr/directive';\n```\n\n→ [View the complete Flux documentation](https://github.com/Alwatr/alwatr/tree/next/pkg/flux)\n\n---\n\n## Contributing\n\nContributions are welcome! Please read our [contribution guidelines](https://github.com/Alwatr/.github/blob/next/CONTRIBUTING.md) before submitting a pull request.\n","readmeFilename":"README.md"}