{"_id":"@adsq/angular-signal-store","_rev":"10-6287888e2d042ec9fdad2b6738b3ca3c","name":"@adsq/angular-signal-store","dist-tags":{"latest":"0.2.1"},"versions":{"0.1.0":{"name":"@adsq/angular-signal-store","version":"0.1.0","keywords":["angular","signal","store","state-management","reactive","proxy","@adsq/jsnq"],"license":"MIT","_id":"@adsq/angular-signal-store@0.1.0","maintainers":[{"name":"adsq","email":"adscampaincreate@gmail.com"}],"homepage":"https://github.com/synestiqx/angular-signal-store#readme","bugs":{"url":"https://github.com/synestiqx/angular-signal-store/issues"},"dist":{"shasum":"b7543d9693a425681071ec7a0ef87af65cb162e0","tarball":"https://registry.npmjs.org/@adsq/angular-signal-store/-/angular-signal-store-0.1.0.tgz","fileCount":13,"integrity":"sha512-bbbnxJcURUGB/RkFbFtZlLtYlpIohkS42rWFqOUEjtW4uPHveo2zR8qdmCK1DANjNFi1RAxQnUPi7ttGTMYWig==","signatures":[{"sig":"MEQCIF/hrAK5obGdKn5xj2WK0zvq7MY5lp//YOZEl6gBRodUAiBDRGCaBMvIM44MVHXaK9oLsQVu2Etougp3/bKXEipFhA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":831910},"type":"module","module":"./dist/fesm2022/synestiqx-angular-signal-store.mjs","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/fesm2022/synestiqx-angular-signal-store.mjs"},"./devtools":{"types":"./dist/devtools/index.d.ts","default":"./dist/fesm2022/synestiqx-angular-signal-store-devtools.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"88599c49c11e28f848187d521bb070929f7b5028","scripts":{"build":"ng-packagr -p ng-package.json -c tsconfig.lib.json","prepack":"npm run build","typecheck":"tsc --noEmit","test:smoke":"bun test/smoke.ts","bench:store":"bun test/store-throughput-bench.ts"},"_npmUser":{"name":"adsq","email":"adscampaincreate@gmail.com"},"deprecated":"Broken package entry: module/exports pointed at a stale ng-packagr filename, so any import failed with ERR_MODULE_NOT_FOUND. Upgrade to 0.1.6.","repository":{"url":"git+https://github.com/synestiqx/angular-signal-store.git","type":"git"},"_npmVersion":"11.12.1","description":"Angular SignalStore — reactive, proxy-based store with fine-grained signal wake. Uses jsnq (separate dependency) for queries/mutations.","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"rxjs":"7.8.2","tslib":"^2.8.1","@adsq/jsnq":"^0.1.0","ng-packagr":"20.3.2","typescript":"5.8.3","@angular/core":"20.3.26","@angular/compiler":"20.3.26","@angular/compiler-cli":"20.3.26"},"peerDependencies":{"rxjs":"^6.5.3 || ^7.4.0","@adsq/jsnq":"^0.1.0","@angular/core":">=20.0.0 <23.0.0"},"_npmOperationalInternal":{"tmp":"tmp/angular-signal-store_0.1.0_1784691581036_0.5377890577073263","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@adsq/angular-signal-store","version":"0.1.1","keywords":["angular","signal","store","state-management","reactive","proxy","jsnq"],"license":"MIT","_id":"@adsq/angular-signal-store@0.1.1","maintainers":[{"name":"adsq","email":"adscampaincreate@gmail.com"}],"homepage":"https://github.com/synestiqx/angular-signal-store#readme","bugs":{"url":"https://github.com/synestiqx/angular-signal-store/issues"},"dist":{"shasum":"23a58f3db16be8a2809fe79c0ecd5f88994b319e","tarball":"https://registry.npmjs.org/@adsq/angular-signal-store/-/angular-signal-store-0.1.1.tgz","fileCount":13,"integrity":"sha512-Vmc8yAGkJqSTWcEs/XijuI9/yDqBmTyCYNm46pgf/SSYfbqM9c0DiYEiD9KX57rUz7PP+tBat4ls4bDa4TnANQ==","signatures":[{"sig":"MEUCIQDuQ8g09hNm+fWq+NG3nYRArsLFQxOgO/EqSO/5KzACfwIgRxzsPFVCX0AWH6sn+/hL1pQcts1AShQd+u9vDAk65DE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":832420},"type":"module","module":"./dist/fesm2022/synestiqx-angular-signal-store.mjs","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/fesm2022/synestiqx-angular-signal-store.mjs"},"./devtools":{"types":"./dist/devtools/index.d.ts","default":"./dist/fesm2022/synestiqx-angular-signal-store-devtools.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"a372f801d8dc0931ddfea9b86230382b23220a29","scripts":{"build":"ng-packagr -p ng-package.json -c tsconfig.lib.json","prepack":"npm run build","typecheck":"tsc --noEmit","test:smoke":"bun test/smoke.ts","bench:store":"bun test/store-throughput-bench.ts"},"_npmUser":{"name":"adsq","email":"adscampaincreate@gmail.com"},"deprecated":"Broken package entry: module/exports pointed at a stale ng-packagr filename, so any import failed with ERR_MODULE_NOT_FOUND. Upgrade to 0.1.6.","repository":{"url":"git+https://github.com/synestiqx/angular-signal-store.git","type":"git"},"_npmVersion":"11.12.1","description":"Angular SignalStore — reactive, proxy-based store with fine-grained signal wake. Uses jsnq (separate dependency) for queries/mutations.","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"rxjs":"7.8.2","tslib":"^2.8.1","@adsq/jsnq":"^0.1.0","ng-packagr":"20.3.2","typescript":"5.8.3","@angular/core":"20.3.26","@angular/compiler":"20.3.26","@angular/compiler-cli":"20.3.26"},"peerDependencies":{"rxjs":"^6.5.3 || ^7.4.0","@adsq/jsnq":"^0.1.0","@angular/core":">=20.0.0 <23.0.0"},"_npmOperationalInternal":{"tmp":"tmp/angular-signal-store_0.1.1_1784694282281_0.42511063102362256","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@adsq/angular-signal-store","version":"0.1.2","keywords":["angular","signal","store","state-management","reactive","proxy","jsnq"],"license":"MIT","_id":"@adsq/angular-signal-store@0.1.2","maintainers":[{"name":"adsq","email":"adscampaincreate@gmail.com"}],"homepage":"https://github.com/adsqx/angular-signal-store#readme","bugs":{"url":"https://github.com/adsqx/angular-signal-store/issues"},"dist":{"shasum":"eaf24e638bf59a154b05effe6c52c6a3d1896486","tarball":"https://registry.npmjs.org/@adsq/angular-signal-store/-/angular-signal-store-0.1.2.tgz","fileCount":13,"integrity":"sha512-V1QDJmQk3KzoAaKDAVq9E6KhHtTfELaZzFP1ltBM9tLoxomYBqUaOQ07P1WzuDHWhqoXOo2osIGq9iyF1C8AOA==","signatures":[{"sig":"MEUCIQDSzg3lvE8ICkmQlCjEEMEgur5H0ulnJctJM6KOH4+wWgIgQZMexCHiCB1ptA5iXVXR3BDmivU5dcCiNAIXrTe8K6U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":832408},"type":"module","module":"./dist/fesm2022/synestiqx-angular-signal-store.mjs","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/fesm2022/synestiqx-angular-signal-store.mjs"},"./devtools":{"types":"./dist/devtools/index.d.ts","default":"./dist/fesm2022/synestiqx-angular-signal-store-devtools.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"780d371c26a9fddb60cf83f154ef33cb7bfb11ef","scripts":{"build":"ng-packagr -p ng-package.json -c tsconfig.lib.json","prepack":"npm run build","typecheck":"tsc --noEmit","test:smoke":"bun test/smoke.ts","bench:store":"bun test/store-throughput-bench.ts"},"_npmUser":{"name":"adsq","email":"adscampaincreate@gmail.com"},"deprecated":"Broken package entry: module/exports pointed at a stale ng-packagr filename, so any import failed with ERR_MODULE_NOT_FOUND. Upgrade to 0.1.6.","repository":{"url":"git+https://github.com/adsqx/angular-signal-store.git","type":"git"},"_npmVersion":"11.12.1","description":"Angular SignalStore — reactive, proxy-based store with fine-grained signal wake. Uses jsnq (separate dependency) for queries/mutations.","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"rxjs":"7.8.2","tslib":"^2.8.1","@adsq/jsnq":"^0.1.0","ng-packagr":"20.3.2","typescript":"5.8.3","@angular/core":"20.3.26","@angular/compiler":"20.3.26","@angular/compiler-cli":"20.3.26"},"peerDependencies":{"rxjs":"^6.5.3 || ^7.4.0","@adsq/jsnq":"^0.1.0","@angular/core":">=20.0.0 <23.0.0"},"_npmOperationalInternal":{"tmp":"tmp/angular-signal-store_0.1.2_1784695838279_0.7056389972632875","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@adsq/angular-signal-store","version":"0.1.3","keywords":["angular","signal","store","state-management","reactive","proxy","jsnq"],"license":"MIT","_id":"@adsq/angular-signal-store@0.1.3","maintainers":[{"name":"adsq","email":"adscampaincreate@gmail.com"}],"homepage":"https://github.com/adsqx/angular-signal-store#readme","bugs":{"url":"https://github.com/adsqx/angular-signal-store/issues"},"dist":{"shasum":"fbe5aee05278da6e773bde97236a4c945464f431","tarball":"https://registry.npmjs.org/@adsq/angular-signal-store/-/angular-signal-store-0.1.3.tgz","fileCount":13,"integrity":"sha512-zk+Xt72BsR4NVmaKU3RoNaBTvroZfOPYCwq4AYDxtMm88wzAC8LKrCfB3uw4vf83aGnJy2SwAid3k813xy5xbA==","signatures":[{"sig":"MEUCIQD08zhs+UBdTocrxopsym82iSBRb/p9Lyh9S87F7A8M9QIgBfTilafwJgEu6vUIyiKXiV2xIUALOALdS0w1MdviYTI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":835472},"type":"module","module":"./dist/fesm2022/synestiqx-angular-signal-store.mjs","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/fesm2022/synestiqx-angular-signal-store.mjs"},"./devtools":{"types":"./dist/devtools/index.d.ts","default":"./dist/fesm2022/synestiqx-angular-signal-store-devtools.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"6ad4420d0c8f55d318255b7dd9d4980edb081739","scripts":{"build":"ng-packagr -p ng-package.json -c tsconfig.lib.json","prepack":"npm run build","typecheck":"tsc --noEmit","test:smoke":"bun test/smoke.ts","bench:store":"bun test/store-throughput-bench.ts"},"_npmUser":{"name":"adsq","email":"adscampaincreate@gmail.com"},"deprecated":"Broken package entry: module/exports pointed at a stale ng-packagr filename, so any import failed with ERR_MODULE_NOT_FOUND. Upgrade to 0.1.6.","repository":{"url":"git+https://github.com/adsqx/angular-signal-store.git","type":"git"},"_npmVersion":"11.12.1","description":"Angular SignalStore — reactive, proxy-based store with fine-grained signal wake. Uses jsnq (separate dependency) for queries/mutations.","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"rxjs":"7.8.2","tslib":"^2.8.1","@adsq/jsnq":"^0.1.0","ng-packagr":"20.3.2","typescript":"5.8.3","@angular/core":"20.3.26","@angular/compiler":"20.3.26","@angular/compiler-cli":"20.3.26"},"peerDependencies":{"rxjs":"^6.5.3 || ^7.4.0","@adsq/jsnq":"^0.1.0","@angular/core":">=20.0.0 <23.0.0"},"_npmOperationalInternal":{"tmp":"tmp/angular-signal-store_0.1.3_1784696658748_0.9936723119376318","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@adsq/angular-signal-store","version":"0.1.4","keywords":["angular","signal","store","state-management","reactive","proxy","jsnq"],"license":"MIT","_id":"@adsq/angular-signal-store@0.1.4","maintainers":[{"name":"adsq","email":"adscampaincreate@gmail.com"}],"homepage":"https://github.com/adsqx/angular-signal-store#readme","bugs":{"url":"https://github.com/adsqx/angular-signal-store/issues"},"dist":{"shasum":"4c801cebaa43c6ba417f353604ac5e22c5dc686b","tarball":"https://registry.npmjs.org/@adsq/angular-signal-store/-/angular-signal-store-0.1.4.tgz","fileCount":15,"integrity":"sha512-VSXfszkZVjMtdJxGlLp3wJ2DqhB+54Pr3vXiQSywc5nBAE6ogjRimjXKTWc/aN/KzjmbZYc4OsYKbPGYkRy95g==","signatures":[{"sig":"MEUCIQCExBet5ZoGURFXpP6rCVwL8O8bPJt4ez7WuDdSbWx5fQIgGYRTK6vFZdUlxHmHrXd3ypa58nfoglL6FlMJY4qBl0E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":846740},"type":"module","module":"./dist/fesm2022/synestiqx-angular-signal-store.mjs","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/fesm2022/synestiqx-angular-signal-store.mjs"},"./devtools":{"types":"./dist/devtools/index.d.ts","default":"./dist/fesm2022/synestiqx-angular-signal-store-devtools.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"cef289d91367e6a5746890f7e7c381a6fabf9f88","scripts":{"build":"ng-packagr -p ng-package.json -c tsconfig.lib.json","prepack":"npm run build","typecheck":"tsc --noEmit","test:smoke":"bun test/smoke.ts","bench:store":"bun test/store-throughput-bench.ts"},"_npmUser":{"name":"adsq","email":"adscampaincreate@gmail.com"},"deprecated":"Broken package entry: module/exports pointed at a stale ng-packagr filename, so any import failed with ERR_MODULE_NOT_FOUND. Upgrade to 0.1.6.","repository":{"url":"git+https://github.com/adsqx/angular-signal-store.git","type":"git"},"_npmVersion":"11.12.1","description":"Angular SignalStore — reactive, proxy-based store with fine-grained signal wake. Uses jsnq (separate dependency) for queries/mutations.","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"rxjs":"7.8.2","tslib":"^2.8.1","@adsq/jsnq":"^0.1.0","ng-packagr":"20.3.2","typescript":"5.8.3","@angular/core":"20.3.26","@angular/compiler":"20.3.26","@angular/compiler-cli":"20.3.26"},"peerDependencies":{"rxjs":"^6.5.3 || ^7.4.0","@adsq/jsnq":"^0.1.0","@angular/core":">=20.0.0 <23.0.0"},"_npmOperationalInternal":{"tmp":"tmp/angular-signal-store_0.1.4_1784699159276_0.5122144058313534","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@adsq/angular-signal-store","version":"0.1.5","keywords":["angular","signal","store","state-management","reactive","proxy","jsnq"],"license":"MIT","_id":"@adsq/angular-signal-store@0.1.5","maintainers":[{"name":"adsq","email":"adscampaincreate@gmail.com"}],"homepage":"https://github.com/adsqx/angular-signal-store#readme","bugs":{"url":"https://github.com/adsqx/angular-signal-store/issues"},"dist":{"shasum":"07975d1a3d66845c15e857b4baab6ae8e8bfc277","tarball":"https://registry.npmjs.org/@adsq/angular-signal-store/-/angular-signal-store-0.1.5.tgz","fileCount":15,"integrity":"sha512-8KjufkqYb20NeM0NfiA5j89/LOBG0AtMWtV54YnlKCCTI306CfBdgCCyKgDZwZHpC90vI4Uc2Kmmjk7G+p1pEA==","signatures":[{"sig":"MEYCIQDpIFzo8mev+ZFRgeTU1Hq0IZSv3nIHtn+hcyy5boO0wQIhAM3SrglMO6QdkdjR4Ndjrdsj5dEAAAiyXC8ewOxEzdti","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":846734},"type":"module","module":"./dist/fesm2022/synestiqx-angular-signal-store.mjs","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/fesm2022/synestiqx-angular-signal-store.mjs"},"./devtools":{"types":"./dist/devtools/index.d.ts","default":"./dist/fesm2022/synestiqx-angular-signal-store-devtools.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"eaaeeffee77d15d06c1b81225551e25dde791412","scripts":{"build":"ng-packagr -p ng-package.json -c tsconfig.lib.json","prepack":"npm run build","typecheck":"tsc --noEmit","test:smoke":"bun test/smoke.ts","bench:store":"bun test/store-throughput-bench.ts"},"_npmUser":{"name":"adsq","email":"adscampaincreate@gmail.com"},"deprecated":"Broken package entry: module/exports pointed at a stale ng-packagr filename, so any import failed with ERR_MODULE_NOT_FOUND. Upgrade to 0.1.6.","repository":{"url":"git+https://github.com/adsqx/angular-signal-store.git","type":"git"},"_npmVersion":"11.12.1","description":"Angular SignalStore — reactive, proxy-based store with fine-grained signal wake. Uses jsnq (separate dependency) for queries/mutations.","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"rxjs":"7.8.2","tslib":"^2.8.1","@adsq/jsnq":"^0.1.0","ng-packagr":"20.3.2","typescript":"5.8.3","@angular/core":"20.3.26","@angular/compiler":"20.3.26","@angular/compiler-cli":"20.3.26"},"peerDependencies":{"rxjs":"^6.5.3 || ^7.4.0","@adsq/jsnq":"^0.1.0","@angular/core":">=20.0.0 <23.0.0"},"_npmOperationalInternal":{"tmp":"tmp/angular-signal-store_0.1.5_1784699397629_0.7688686355334389","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@adsq/angular-signal-store","version":"0.1.6","keywords":["angular","signal","store","state-management","reactive","proxy","jsnq"],"license":"MIT","_id":"@adsq/angular-signal-store@0.1.6","maintainers":[{"name":"adsq","email":"adscampaincreate@gmail.com"}],"homepage":"https://github.com/adsqx/angular-signal-store#readme","bugs":{"url":"https://github.com/adsqx/angular-signal-store/issues"},"dist":{"shasum":"4a3f4749bb4a732c1d43c0538a21da3b7f015690","tarball":"https://registry.npmjs.org/@adsq/angular-signal-store/-/angular-signal-store-0.1.6.tgz","fileCount":15,"integrity":"sha512-7WrY1gxHhnl7YXXt4BKvB2IC7d1L0eE7qjJ/2j1q7aSYfi3VbyWgu2PqnZv3m7GEKom++eIEHP9GhzpFWOmnAA==","signatures":[{"sig":"MEUCICTPckfxP3cR2u795dbmkIYbdDIeIOK/dmeksrsp/jwHAiEA5ZQGJ++WJSDhiVstZb/9Mnq8sfvewoPnLJZItMTYgy4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":846802},"type":"module","module":"./dist/fesm2022/adsq-angular-signal-store.mjs","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/fesm2022/adsq-angular-signal-store.mjs"},"./devtools":{"types":"./dist/devtools/index.d.ts","default":"./dist/fesm2022/adsq-angular-signal-store-devtools.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"d75367222b40025cf43c52d019768f9aee693853","scripts":{"build":"ng-packagr -p ng-package.json -c tsconfig.lib.json","prepack":"npm run build && npm run verify:exports","typecheck":"tsc --noEmit","test:smoke":"bun test/smoke.ts","bench:store":"bun test/store-throughput-bench.ts","verify:exports":"node scripts/verify-exports.mjs"},"_npmUser":{"name":"adsq","email":"adscampaincreate@gmail.com"},"repository":{"url":"git+https://github.com/adsqx/angular-signal-store.git","type":"git"},"_npmVersion":"11.12.1","description":"Angular SignalStore — reactive, proxy-based store with fine-grained signal wake. Uses jsnq (separate dependency) for queries/mutations.","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"rxjs":"7.8.2","tslib":"^2.8.1","@adsq/jsnq":"^0.1.0","ng-packagr":"20.3.2","typescript":"5.8.3","@angular/core":"20.3.26","@angular/compiler":"20.3.26","@angular/compiler-cli":"20.3.26"},"peerDependencies":{"rxjs":"^6.5.3 || ^7.4.0","@adsq/jsnq":"^0.1.0","@angular/core":">=20.0.0 <23.0.0"},"_npmOperationalInternal":{"tmp":"tmp/angular-signal-store_0.1.6_1784699974557_0.6963145713718291","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@adsq/angular-signal-store","version":"0.2.0","keywords":["angular","signal","store","state-management","reactive","proxy","jsnq"],"license":"MIT","_id":"@adsq/angular-signal-store@0.2.0","maintainers":[{"name":"adsq","email":"adscampaincreate@gmail.com"}],"homepage":"https://github.com/adsqx/angular-signal-store#readme","bugs":{"url":"https://github.com/adsqx/angular-signal-store/issues"},"dist":{"shasum":"df9461a2cc83d6d7f11fa3c406851b681ee31925","tarball":"https://registry.npmjs.org/@adsq/angular-signal-store/-/angular-signal-store-0.2.0.tgz","fileCount":19,"integrity":"sha512-HttGw5lXaixwKF2IMxPduz/jhtlBD52eKKIliCuaEPr9lCZfgcrhVxDbWdenDchcg7wmYFL+0Gvff7UeEY5SLg==","signatures":[{"sig":"MEYCIQCKO6td5TlM1HV5AGqDqg0LQMOXqIL5g4OvihLb8xqCJwIhAJQi2Masx/R+Tl/c8Tc+MaTogXdQveBulGdDS8oN/fUz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":863743},"type":"module","module":"./dist/fesm2022/adsq-angular-signal-store.mjs","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/fesm2022/adsq-angular-signal-store.mjs"},"./jsnq":{"types":"./dist/jsnq/index.d.ts","default":"./dist/fesm2022/adsq-angular-signal-store-jsnq.mjs"},"./devtools":{"types":"./dist/devtools/index.d.ts","default":"./dist/fesm2022/adsq-angular-signal-store-devtools.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"b7dc677c2055e904e7d96a3f1c7e5be74a2835dc","scripts":{"build":"ng-packagr -p ng-package.json -c tsconfig.lib.json","prepack":"npm run build && npm run verify:exports","typecheck":"tsc --noEmit","test:smoke":"bun test/smoke.ts","bench:store":"bun test/store-throughput-bench.ts","verify:exports":"node scripts/verify-exports.mjs","test:jsnq-optional":"bun test/jsnq-optional.test.ts"},"_npmUser":{"name":"adsq","email":"adscampaincreate@gmail.com"},"repository":{"url":"git+https://github.com/adsqx/angular-signal-store.git","type":"git"},"_npmVersion":"11.12.1","description":"Angular SignalStore — reactive, proxy-based store with fine-grained signal wake. Uses jsnq (separate dependency) for queries/mutations.","directories":{},"sideEffects":["**/*-jsnq.mjs"],"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"rxjs":"7.8.2","tslib":"^2.8.1","@adsq/jsnq":"^0.1.0","ng-packagr":"20.3.2","typescript":"5.8.3","@angular/core":"20.3.26","@angular/compiler":"20.3.26","@angular/compiler-cli":"20.3.26"},"peerDependencies":{"rxjs":"^6.5.3 || ^7.4.0","@adsq/jsnq":"^0.1.0","@angular/core":">=20.0.0 <23.0.0"},"_npmOperationalInternal":{"tmp":"tmp/angular-signal-store_0.2.0_1784739920835_0.3150645776098995","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@adsq/angular-signal-store","version":"0.2.1","description":"Angular SignalStore — reactive, proxy-based store with fine-grained signal wake. Uses jsnq (separate dependency) for queries/mutations.","repository":{"type":"git","url":"git+https://github.com/adsqx/angular-signal-store.git"},"homepage":"https://github.com/adsqx/angular-signal-store#readme","bugs":{"url":"https://github.com/adsqx/angular-signal-store/issues"},"type":"module","module":"./dist/fesm2022/adsq-angular-signal-store.mjs","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/fesm2022/adsq-angular-signal-store.mjs"},"./jsnq":{"types":"./dist/jsnq/index.d.ts","default":"./dist/fesm2022/adsq-angular-signal-store-jsnq.mjs"},"./devtools":{"types":"./dist/devtools/index.d.ts","default":"./dist/fesm2022/adsq-angular-signal-store-devtools.mjs"},"./package.json":{"default":"./package.json"}},"sideEffects":["**/*-jsnq.mjs"],"scripts":{"build":"ng-packagr -p ng-package.json -c tsconfig.lib.json","prepack":"npm run build && npm run verify:exports","typecheck":"tsc --noEmit","test:smoke":"bun test/smoke.ts","bench:store":"bun test/store-throughput-bench.ts","verify:exports":"node scripts/verify-exports.mjs","test:jsnq-optional":"bun test/jsnq-optional.test.ts","bench:paths":"bun test/path-bench.ts"},"peerDependencies":{"@angular/core":">=20.0.0 <23.0.0","rxjs":"^6.5.3 || ^7.4.0","@adsq/jsnq":"^0.1.0"},"devDependencies":{"@angular/compiler":"20.3.26","@angular/compiler-cli":"20.3.26","@angular/core":"20.3.26","ng-packagr":"20.3.2","rxjs":"7.8.2","tslib":"^2.8.1","typescript":"5.8.3","@adsq/jsnq":"^0.1.0"},"keywords":["angular","signal","store","state-management","reactive","proxy","jsnq"],"license":"MIT","gitHead":"4616c636403f4e79c6bf121e27e0c28c1593fad3","_id":"@adsq/angular-signal-store@0.2.1","_nodeVersion":"24.15.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-6+shEo5KWwMT4lBxwkB/t3z31xapptnZMx6vdvDFnKaTggKiwmfQMq75ACqB1WsWfzstDqI5dvWFJfi3N4Wxsg==","shasum":"c15d43669ebea901b6b0d54326d6ebe5659d4a44","tarball":"https://registry.npmjs.org/@adsq/angular-signal-store/-/angular-signal-store-0.2.1.tgz","fileCount":19,"unpackedSize":861928,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCwameyegHHkp5afbWg/9m1ZM1J2C9AufcFoyTHcvoFxAIgRCC1fBfJTKzHYFz/S3qkyHSbtUGILxLPMvB/QDYlkCY="}]},"_npmUser":{"name":"adsq","email":"adscampaincreate@gmail.com"},"directories":{},"maintainers":[{"name":"adsq","email":"adscampaincreate@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/angular-signal-store_0.2.1_1784742004064_0.1720513985407961"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-22T03:39:40.903Z","modified":"2026-07-22T17:40:04.450Z","0.1.0":"2026-07-22T03:39:41.229Z","0.1.1":"2026-07-22T04:24:42.480Z","0.1.2":"2026-07-22T04:50:38.498Z","0.1.3":"2026-07-22T05:04:18.900Z","0.1.4":"2026-07-22T05:45:59.460Z","0.1.5":"2026-07-22T05:49:57.773Z","0.1.6":"2026-07-22T05:59:34.762Z","0.2.0":"2026-07-22T17:05:20.998Z","0.2.1":"2026-07-22T17:40:04.270Z"},"bugs":{"url":"https://github.com/adsqx/angular-signal-store/issues"},"license":"MIT","homepage":"https://github.com/adsqx/angular-signal-store#readme","keywords":["angular","signal","store","state-management","reactive","proxy","jsnq"],"repository":{"type":"git","url":"git+https://github.com/adsqx/angular-signal-store.git"},"description":"Angular SignalStore — reactive, proxy-based store with fine-grained signal wake. Uses jsnq (separate dependency) for queries/mutations.","maintainers":[{"name":"adsq","email":"adscampaincreate@gmail.com"}],"readme":"# Angular SignalStore\n\nAngular signal store with a callable nested proxy API. It uses the independent `@adsq/jsnq` package for path traversal, queries, and copy-on-write mutation hot paths.\n\n## Install\n\n```sh\nnpm install @adsq/angular-signal-store\n# or\nbun add @adsq/angular-signal-store\n```\n\n`@adsq/jsnq` is a peer dependency, so npm and bun install it for you. Declare it in your\nown `package.json` as well when the application imports JSNQ operators directly, so that\nstrict installers such as pnpm and Yarn PnP resolve those imports:\n\n```sh\nnpm install @adsq/jsnq\n```\n\nAngular, RxJS, and JSNQ are peers. The package supports Angular 20 through 22, is APF partial-compiled with the lowest supported Angular version, and is tested against the current Angular 22 line. This avoids a second Angular runtime and keeps forward linker compatibility.\n\n## Store In An Angular Service\n\n```ts\nimport { Injectable } from '@angular/core';\nimport { SignalStore } from '@adsq/angular-signal-store';\n\ntype AppState = {\n  user: { name: string; tags: string[]; preferences?: Record<string, unknown> };\n  dashboard: { tiles: number };\n};\n\n@Injectable({ providedIn: 'root' })\nexport class AppStore {\n  readonly store = this.signalStore.createStore<AppState>({\n    user: { name: 'Ann', tags: ['admin'] },\n    dashboard: { tiles: 12 },\n  }, 'app');\n\n  constructor(private readonly signalStore: SignalStore) {}\n}\n```\n\nThis normal service pattern does not need `waitForStore`: the service owns `this.store`, so its methods read and mutate that proxy directly.\n\n```ts\nrename(name: string): void {\n  this.store.user.name = name;\n}\n\ncurrentName(): string {\n  return this.store.user.name();\n}\n```\n\nComponent usage:\n\n```ts\nconst store = appStore.store;\n\nstore.user.name();\nstore.user.name = 'Ada';\nstore.user.tags.push('maintainer');\nstore.user.tags.pop();\nstore.dashboard.tiles = store.dashboard.tiles() + 1;\n```\n\n## In A Component Template\n\nExpose the proxy as a component field and read it directly in the template. No `async`\npipe, no `signal()` wrapper, no subscription:\n\n```ts\n@Component({ selector: 'app-dashboard', templateUrl: './dashboard.component.html' })\nexport class DashboardComponent {\n  readonly store = this.appStore.store;\n\n  constructor(private readonly appStore: AppStore) {}\n\n  addTile(): void {\n    this.store.dashboard.tiles = this.store.dashboard.tiles() + 1;\n  }\n}\n```\n\n```html\n<h1>{{ store.user.name() }}</h1>\n<p>{{ store.dashboard.tiles() }} tiles</p>\n\n@for (tag of store.user.tags(); track tag) {\n  <span class=\"tag\">{{ tag }}</span>\n}\n\n@for (service of store.services(); track service.name) {\n  <div class=\"row\">\n    <strong>{{ service.name }}</strong>\n    <span>{{ service.rps }}</span>\n  </div>\n}\n\n<button (click)=\"addTile()\">Add tile</button>\n```\n\nThree rules cover every template:\n\n- **A leaf is called**: `{{ store.user.name() }}`. The call is the reactive read, so only\n  this component's bindings for that path rerender when it changes.\n- **An array is called to iterate it**, then each item is a plain value read without\n  parentheses: `@for (service of store.services(); track service.name)` then\n  `{{ service.name }}`. Items are snapshots, not nested accessors.\n- **`length` is reactive without a call**: `{{ store.history.length }}` tracks pushes and\n  pops without materialising the array.\n\nWrites stay ordinary assignments, so an event handler is a one-liner and needs no action,\nreducer, or dispatch.\n\nDynamic nested keys are supported by the runtime proxy:\n\n```ts\nstore.user.preferences = {};\nstore.user.preferences.theme = 'dark';\nstore.user.preferences.theme();\n```\n\nDeclare optional fields or an index signature when TypeScript must accept keys that are not present in the initial interface.\n\n## JSNQ Operations\n\nJSNQ is a **separate entry point**. Import it once during application bootstrap to enable\n`mutate`, `$query`, `$queryOne`, `$liveQuery`, and `$liveQueryOne`:\n\n```ts\nimport '@adsq/angular-signal-store/jsnq';\n```\n\nRegistration is synchronous — there is no dynamic import and nothing to await, so a\nmutation issued immediately after bootstrap works. Applications that only read and write\nstore paths never load the query engine and are **11.9 kB gzip smaller** for it. Calling a\nJSNQ API without the import throws an error naming the missing entry point.\n\n```ts\nimport where from '@adsq/jsnq/operators/where';\nimport update from '@adsq/jsnq/operators/update';\n\nstore.users.mutate(\n  where('active', '===', true),\n  update('score', (score: number) => score + 1),\n);\n\nconst active = store.users.$query(where('active', '===', true));\nconst first = store.users.$queryOne(where('id', '===', 1));\nconst liveActive = store.users.$liveQuery(where('active', '===', true));\n\nliveActive(); // reactive accessor: use in a template, computed, or effect\n```\n\n`$query` and `$queryOne` read a one-shot snapshot. `$liveQuery` and `$liveQueryOne`\nreturn Angular signal-style callable accessors and rerun when their tracked branch changes.\nJSNQ is versioned separately. The store imports public JSNQ subpaths instead of maintaining\na private traversal/pipeline copy. Operators can be imported individually.\n\n## Lazy Creation\n\nInitial data is cloned when `createStore` runs. Everything reactive around it is demand-driven:\n\n- nested proxies are created on first navigation;\n- Angular version signals are created on first tracked path read;\n- computed values, array query memos, RxJS bindings and BehaviorSubjects are created only when their APIs are used;\n- proxy/query caches use bounded or weak-reference storage where identity permits it;\n- devtools is a separate secondary entry and has no provider unless explicitly enabled;\n- named-store waiters are allocated only while code awaits creation.\n\nNo subscription or BehaviorSubject is created for an untouched path. RxJS remains an Angular peer dependency, but stream objects are not eagerly allocated per field.\n\n## Named Stores And Async Creation\n\nUse `waitForStore` only across an asynchronous ownership boundary where consumer code may run before the service/module that creates the named store. It is not required when a service already exposes its own `store` property.\n\n```ts\nconst pending = signalStore.waitForStore<AppState>('app', {\n  timeoutMs: 5_000,\n  signal: abortController.signal,\n});\n\nconst store = await pending;\nsignalStore.useStore('app'); // synchronous; throws when missing\n```\n\n`waitForStore` is event-driven and removes abort/timeout resources on every completion path.\n\n## Batch And Wake Modes\n\n```ts\nconst instance = signalStore.getStore('app');\n\ninstance.batch(() => {\n  store.user.name = 'Ada';\n  store.dashboard.tiles = 16;\n});\n\ninstance.wakeUp('user.name', 'grained'); // exact path only\ninstance.wakeUp('user.name', 'leaf');    // path plus parent chain\n```\n\nCanonical wake modes:\n\n| Mode | Paths dirtied | Use case |\n| --- | --- | --- |\n| `grained` | Exact requested path only | Maximum granularity for leaf consumers. |\n| `leaf` | Requested path plus its parent chain | Default targeted wake; refreshes container consumers too. |\n\n`exact` and `granular` are compatibility aliases for `grained`. Unlike SolidStore's\none-argument global mode setter, Angular `wakeUp(path, mode)` always performs a targeted\nwake. Store construction option `dependencyMode: 'exact' | 'container'` controls whether\ntracked computations depend on exact paths or containers; it is separate from an explicit\n`wakeUp` call.\n\nWrites inside `batch()` remain synchronous and immediately readable. Version notifications\nare queued and flushed once after the outer batch ends, including exception paths. Nested\nbatches are supported. Individual proxy writes need no explicit batch; use it when several\nwrites must be observed as one coherent update. Array mutations also invalidate shifted\nindices and reactive `length` reads.\n\n## Optional Devtools\n\n```ts\nimport { ApplicationConfig, isDevMode } from '@angular/core';\nimport { provideSignalStoreDevtools } from '@adsq/angular-signal-store/devtools';\n\nexport const appConfig: ApplicationConfig = {\n  providers: [\n    ...(isDevMode() ? [provideSignalStoreDevtools()] : []),\n  ],\n};\n```\n\nApplications that never import the `/devtools` entry do not load its implementation. The main entry contains only the injection token and adapter types.\n\n## Package Entries\n\n- `@adsq/angular-signal-store`: store runtime and public types.\n- `@adsq/angular-signal-store/jsnq`: optional query/mutation engine registration.\n- `@adsq/angular-signal-store/devtools`: optional development adapter/provider.\n- `@adsq/jsnq/operators/<name>`: focused JSNQ operators.\n\n## Use With AI Coding Agents\n\nThe package ships a `SKILL.md` written in the [Agent Skills](https://agentskills.io)\nformat, covering the architecture rule, the template rules, batching, wake modes, and JSNQ.\nInstall it so an agent applies the store correctly instead of guessing at the proxy API:\n\n```sh\n# this project only\nmkdir -p .claude/skills/angular-signal-store\ncp node_modules/angular-signal-store/SKILL.md .claude/skills/angular-signal-store/\n\n# or for every project\nmkdir -p ~/.claude/skills/angular-signal-store\ncp node_modules/angular-signal-store/SKILL.md ~/.claude/skills/angular-signal-store/\n```\n\nClaude Code picks the skill up without a restart and loads it when the task involves this\nstore. Agents that do not read `.claude/skills/` can be pointed at\n`node_modules/angular-signal-store/SKILL.md` directly.\n\n## Verify\n\n```sh\nnpm run typecheck\nnpm run test:smoke\nnpm run build\nnpm pack --dry-run\n```\n\n## Bundle Size\n\nMeasured from the APF FESM with esbuild minification. Angular, RxJS, and JSNQ remain external peers:\n\n| Entry | Minified | Gzip | Brotli |\n| --- | ---: | ---: | ---: |\n| Angular Store core | 98.0 kB | 25.6 kB | 22.5 kB |\n| Optional devtools | 4.1 kB | 1.4 kB | 1.2 kB |\n\nApplications only pay for the devtools entry when they import it.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}