{"_id":"@absolutejs/sync-pack-favorites","_rev":"9-94728fe4fbd49335286ffca5848b0f92","name":"@absolutejs/sync-pack-favorites","dist-tags":{"latest":"0.4.0"},"versions":{"0.1.0":{"name":"@absolutejs/sync-pack-favorites","version":"0.1.0","keywords":["absolutejs","sync","sync-pack","favorites","bookmarks"],"author":"Alex Kahn","license":"CC BY-NC 4.0","_id":"@absolutejs/sync-pack-favorites@0.1.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"dist":{"shasum":"777b8024c0629b81a740e14d97210b2c549f4f48","tarball":"https://registry.npmjs.org/@absolutejs/sync-pack-favorites/-/sync-pack-favorites-0.1.0.tgz","fileCount":5,"integrity":"sha512-lKdHzgMLQngm2MivtcffVcsSfrjT6WTlLZ9ujGuC5Dy3Us4Xv8a/X8oDIdxXPw6RwR876DbJxiFV04e/K5hZpQ==","signatures":[{"sig":"MEYCIQDWYVpepRsHNnTLq5ZbfusJxiZFvfyc9nQi2qt+mf7tcQIhAPkEYWzTKo+DGc60zMjNBkAJ6BsaLZc4oaTPpi9rShFy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33582},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"777b8024c0629b81a740e14d97210b2c549f4f48","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts --outdir dist --sourcemap --target=bun --external @absolutejs/sync && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run typecheck && bun run test && bun run build && bun publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-lKdHzgMLQngm2MivtcffVcsSfrjT6WTlLZ9ujGuC5Dy3Us4Xv8a/X8oDIdxXPw6RwR876DbJxiFV04e/K5hZpQ==","repository":{"url":"https://github.com/absolutejs/sync-packs.git","type":"git","directory":"favorites"},"_npmVersion":"10.8.3","description":"Per-actor saved-resources pack for @absolutejs/sync — favorite/unfavorite/list with optional join to host resources","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3","@absolutejs/sync":"^1.9.2"},"peerDependencies":{"@absolutejs/sync":">= 1.9.2"},"_npmOperationalInternal":{"tmp":"tmp/sync-pack-favorites_0.1.0_1780009733206_0.03153114886361763","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@absolutejs/sync-pack-favorites","version":"0.2.0","keywords":["absolutejs","sync","sync-pack","favorites","bookmarks"],"author":"Alex Kahn","license":"CC BY-NC 4.0","_id":"@absolutejs/sync-pack-favorites@0.2.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"dist":{"shasum":"1851abd76126b0ec6f403cf2e6a4a481d195e70b","tarball":"https://registry.npmjs.org/@absolutejs/sync-pack-favorites/-/sync-pack-favorites-0.2.0.tgz","fileCount":5,"integrity":"sha512-DFO2IFFjp88CfwmQ/2XcZiwrpS6nKDOLQvk7XZubG3MvHU0zv799XWoT3RAiz3W7DJPlJq2A/geqVtLI+1K/Lw==","signatures":[{"sig":"MEQCIFRA64DYsxjjD1DdT2VQEdVPj+4B1ndmxfUL8zSR47IUAiAA7c+OuuhuhbtjHFJSSi4e/41KDTMlUGZ8KNdgnS0FTg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41602},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"1851abd76126b0ec6f403cf2e6a4a481d195e70b","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts --outdir dist --sourcemap --target=bun --external @absolutejs/sync && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run typecheck && bun run test && bun run build && bun publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-DFO2IFFjp88CfwmQ/2XcZiwrpS6nKDOLQvk7XZubG3MvHU0zv799XWoT3RAiz3W7DJPlJq2A/geqVtLI+1K/Lw==","repository":{"url":"https://github.com/absolutejs/sync-packs.git","type":"git","directory":"favorites"},"_npmVersion":"10.8.3","description":"Per-actor saved-resources pack for @absolutejs/sync — favorite/unfavorite/pin/list with optional join to host resources","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3","@absolutejs/sync":"^1.9.2"},"peerDependencies":{"@absolutejs/sync":">= 1.9.2"},"_npmOperationalInternal":{"tmp":"tmp/sync-pack-favorites_0.2.0_1780022483662_0.14121812047974092","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@absolutejs/sync-pack-favorites","version":"0.2.1","keywords":["absolutejs","sync","sync-pack","favorites","bookmarks"],"author":"Alex Kahn","license":"Apache-2.0","_id":"@absolutejs/sync-pack-favorites@0.2.1","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"dist":{"shasum":"94416e0c9752d6207399a13f36263431b9841efd","tarball":"https://registry.npmjs.org/@absolutejs/sync-pack-favorites/-/sync-pack-favorites-0.2.1.tgz","fileCount":6,"integrity":"sha512-+hHE9sjmOqLV51KNxOZ/lw0BxHj5vqlBmg2B7/RIJ/fn3b5oYN1aQ4A6MGjhuP96Q1V+GEE+PIGK38XUmYrAHQ==","signatures":[{"sig":"MEUCIQCif3cP1o1lspdf7SO1T3jRCu/64i8Dcz3ZSb7HWA7bVQIgF22/wbix5MIQf7PAl+wN6aLeskgrOP5iGzllbFHFIWs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52958},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"94416e0c9752d6207399a13f36263431b9841efd","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts --outdir dist --sourcemap --target=bun --external @absolutejs/sync && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run typecheck && bun run test && bun run build && bun publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-+hHE9sjmOqLV51KNxOZ/lw0BxHj5vqlBmg2B7/RIJ/fn3b5oYN1aQ4A6MGjhuP96Q1V+GEE+PIGK38XUmYrAHQ==","repository":{"url":"https://github.com/absolutejs/sync-packs.git","type":"git","directory":"favorites"},"_npmVersion":"10.8.3","description":"Per-actor saved-resources pack for @absolutejs/sync — favorite/unfavorite/pin/list with optional join to host resources","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3","@absolutejs/sync":"^1.9.2"},"peerDependencies":{"@absolutejs/sync":">= 1.9.2"},"_npmOperationalInternal":{"tmp":"tmp/sync-pack-favorites_0.2.1_1780071574159_0.746182317219586","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@absolutejs/sync-pack-favorites","version":"0.2.2","keywords":["absolutejs","sync","sync-pack","favorites","bookmarks"],"author":"Alex Kahn","license":"Apache-2.0","_id":"@absolutejs/sync-pack-favorites@0.2.2","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/sync-packs/tree/main/favorites","bugs":{"url":"https://github.com/absolutejs/sync-packs/issues"},"dist":{"shasum":"c4b0d19e8688ead77bdce1675453c4e0c2aaf2ac","tarball":"https://registry.npmjs.org/@absolutejs/sync-pack-favorites/-/sync-pack-favorites-0.2.2.tgz","fileCount":10,"integrity":"sha512-/ygS72sLbLVC2dwIL3daTuNIEhX4jfM2eQGjnonp+jpZZNyW94rjd+v+oZbH3cl+2rZanHSerIx0xdf+yO00jg==","signatures":[{"sig":"MEQCIEuuJlDd3O6YlxOsd/HZN7SLjz6saLdcBZzNWQzIA9DrAiAuczNOy6wg+P1sGyEo1t7Ho6G8agO30VydsH6cQIqIGQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1148785},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"c4b0d19e8688ead77bdce1675453c4e0c2aaf2ac","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --sourcemap --target=bun --external @absolutejs/sync && tsc --project tsconfig.build.json && absolute-manifest emit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run typecheck && bun run test && bun run build && bun publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-/ygS72sLbLVC2dwIL3daTuNIEhX4jfM2eQGjnonp+jpZZNyW94rjd+v+oZbH3cl+2rZanHSerIx0xdf+yO00jg==","absolutejs":{"manifestContract":1},"repository":{"url":"https://github.com/absolutejs/sync-packs.git","type":"git","directory":"favorites"},"_npmVersion":"10.8.3","description":"Per-actor saved-resources pack for @absolutejs/sync — favorite/unfavorite/pin/list with optional join to host resources","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3","@absolutejs/sync":"^1.9.2"},"peerDependencies":{"@absolutejs/sync":">= 1.9.2"},"_npmOperationalInternal":{"tmp":"tmp/sync-pack-favorites_0.2.2_1783965473162_0.8292663160916951","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@absolutejs/sync-pack-favorites","version":"0.2.3","keywords":["absolutejs","sync","sync-pack","favorites","bookmarks"],"author":"Alex Kahn","license":"Apache-2.0","_id":"@absolutejs/sync-pack-favorites@0.2.3","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/sync-packs/tree/main/favorites","bugs":{"url":"https://github.com/absolutejs/sync-packs/issues"},"dist":{"shasum":"515d144eb2f614e0690ca52691e0a4a1a69bde87","tarball":"https://registry.npmjs.org/@absolutejs/sync-pack-favorites/-/sync-pack-favorites-0.2.3.tgz","fileCount":10,"integrity":"sha512-A2/G4nxG3aEqVpAuglNE/FWptr6em7WLhvQs8Er7FmHtvhPTmp6xAXNoMS5auE2P7KEfxqNrnzR63+yYLuw/9Q==","signatures":[{"sig":"MEYCIQDWHvMlHi4uSQkpiHOW1kupXMbZJ1LG1/yYmHZUCjZhtwIhAJ5Rzbn6McH2w9mRVTGS5/lg5n/2srxU/G6TbNds0l5R","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1169911},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"515d144eb2f614e0690ca52691e0a4a1a69bde87","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --sourcemap --target=bun --external @absolutejs/sync && tsc --project tsconfig.build.json && absolute-manifest emit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run typecheck && bun run test && bun run build && bun publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-A2/G4nxG3aEqVpAuglNE/FWptr6em7WLhvQs8Er7FmHtvhPTmp6xAXNoMS5auE2P7KEfxqNrnzR63+yYLuw/9Q==","absolutejs":{"manifestContract":2},"repository":{"url":"https://github.com/absolutejs/sync-packs.git","type":"git","directory":"favorites"},"_npmVersion":"10.8.3","description":"Per-actor saved-resources pack for @absolutejs/sync — favorite/unfavorite/pin/list with optional join to host resources","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3","@absolutejs/sync":"^1.9.2"},"peerDependencies":{"@absolutejs/sync":">= 1.9.2"},"_npmOperationalInternal":{"tmp":"tmp/sync-pack-favorites_0.2.3_1784846213668_0.88733668920703","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@absolutejs/sync-pack-favorites","version":"0.2.4","keywords":["absolutejs","sync","sync-pack","favorites","bookmarks"],"author":"Alex Kahn","license":"Apache-2.0","_id":"@absolutejs/sync-pack-favorites@0.2.4","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/sync-packs/tree/main/favorites","bugs":{"url":"https://github.com/absolutejs/sync-packs/issues"},"dist":{"shasum":"2b41b6eb795b14561024b2379eabc59ced3f4090","tarball":"https://registry.npmjs.org/@absolutejs/sync-pack-favorites/-/sync-pack-favorites-0.2.4.tgz","fileCount":10,"integrity":"sha512-2AgaYg7/Cqt+AQaSpQE2RqEgJ9WIL+++dbJh2+JSklv24+Hk272+M9qpnB/R4Aut2B9Xyn+jnpL+W0FOwc29nQ==","signatures":[{"sig":"MEQCIBhCXh3J8Raj/+H4ksz7WJiClczOrbQ9r8rQ0pU2erRUAiBuJdtbMOtIw+ceZ5GR5wmc25S7Kve4mo6Wu9kxxrXuuQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":512561},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"2b41b6eb795b14561024b2379eabc59ced3f4090","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --sourcemap --target=bun --external @absolutejs/sync && tsc --project tsconfig.build.json && absolute-manifest emit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run typecheck && bun run test && bun run build && bun publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-2AgaYg7/Cqt+AQaSpQE2RqEgJ9WIL+++dbJh2+JSklv24+Hk272+M9qpnB/R4Aut2B9Xyn+jnpL+W0FOwc29nQ==","absolutejs":{"runtimePeers":{"@absolutejs/sync":{"range":">=2.11.0 <3","tested":"2.11.0","buildExternals":["@absolutejs/sync"],"artifactImports":["@absolutejs/sync/engine"]}},"manifestContract":2},"repository":{"url":"https://github.com/absolutejs/sync-packs.git","type":"git","directory":"favorites"},"_npmVersion":"10.8.3","description":"Per-actor saved-resources pack for @absolutejs/sync — favorite/unfavorite/pin/list with optional join to host resources","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3","@absolutejs/sync":"2.11.0"},"peerDependencies":{"@absolutejs/sync":">=2.11.0 <3"},"_npmOperationalInternal":{"tmp":"tmp/sync-pack-favorites_0.2.4_1784913347392_0.9304811926901737","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@absolutejs/sync-pack-favorites","version":"0.2.5","keywords":["absolutejs","sync","sync-pack","favorites","bookmarks"],"author":{"name":"Alex Kahn"},"license":"Apache-2.0","_id":"@absolutejs/sync-pack-favorites@0.2.5","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/sync-packs/tree/main/favorites","bugs":{"url":"https://github.com/absolutejs/sync-packs/issues"},"dist":{"shasum":"b8afa4631ebec7759debfbe1f905458de407e3d7","tarball":"https://registry.npmjs.org/@absolutejs/sync-pack-favorites/-/sync-pack-favorites-0.2.5.tgz","fileCount":10,"integrity":"sha512-1NTbSI5uQ1weR2/X22lTCjOvDeZFZ5cle58zcwyr0xAS6qb0qMXhGZ1btTECZmN0tiCZFPXM2alumRSsaxry4w==","signatures":[{"sig":"MEQCIAPmZ8yhHy/KpboR27lrZtUvPZmxhTApewcFfiA3U5blAiBEXl4fxRMD25XakhyyOk0fLnJ0JPu0IxzKPzkb7Y9J2g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":520486},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"gitHead":"ba7c2594b58ad9e1cd434195d96823ba678f2260","scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --sourcemap --target=bun --external @absolutejs/sync && tsc --project tsconfig.build.json && absolute-manifest emit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run typecheck && bun run test && bun run build && bun publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"absolutejs":{"manifestContract":2},"repository":{"url":"git+https://github.com/absolutejs/sync-packs.git","type":"git","directory":"favorites"},"_npmVersion":"10.9.2","description":"Per-actor saved-resources pack for @absolutejs/sync — favorite/unfavorite/pin/list with optional join to host resources","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3","@absolutejs/sync":"2.11.0"},"peerDependencies":{"@absolutejs/sync":">=2.11.0 <3"},"_npmOperationalInternal":{"tmp":"tmp/sync-pack-favorites_0.2.5_1787720837029_0.5340943683099575","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@absolutejs/sync-pack-favorites","version":"0.3.0","keywords":["absolutejs","sync","sync-pack","favorites","bookmarks"],"author":{"name":"Alex Kahn"},"license":"Apache-2.0","_id":"@absolutejs/sync-pack-favorites@0.3.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/sync-packs/tree/main/favorites","bugs":{"url":"https://github.com/absolutejs/sync-packs/issues"},"dist":{"shasum":"0b20e93194fb827f377bec8b4f137c9038ce7334","tarball":"https://registry.npmjs.org/@absolutejs/sync-pack-favorites/-/sync-pack-favorites-0.3.0.tgz","fileCount":10,"integrity":"sha512-SMHtcu/1+UIEJr2HLcsrpZLh3VnPXwWl33ciQBtzPxLZh2DX7hOlRFg9piE+Ac6S6ps+YEbDOBRcdeqXMYISnA==","signatures":[{"sig":"MEYCIQCZXp3pQkpwnoHOiRZfN7rpYuCVQRYyZqkflQS06xt1zgIhANxV5+YnxfecgS8vEmEpq4fjhIoC3IMc6vZK5vCeqc1Z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":521118},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"gitHead":"f6a9d1a741b1b3f39977cea64ba6931b3f2f61db","scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --sourcemap --target=bun --external @absolutejs/sync && tsc --project tsconfig.build.json && absolute-manifest emit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run typecheck && bun run test && bun run build && bun publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"absolutejs":{"sync":{"localSchema":{"version":1,"localData":{"mutations":[{"match":"*favorites*","protection":"required","sensitivity":"private","onProtectionUnavailable":"memory-only"}],"collections":[{"match":"*favorites*","protection":"required","sensitivity":"private","evictionPriority":"critical","onProtectionUnavailable":"memory-only"}]}}},"manifestContract":2},"repository":{"url":"git+https://github.com/absolutejs/sync-packs.git","type":"git","directory":"favorites"},"_npmVersion":"10.9.2","description":"Per-actor saved-resources pack for @absolutejs/sync — favorite/unfavorite/pin/list with optional join to host resources","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3","@absolutejs/sync":"2.28.0"},"peerDependencies":{"@absolutejs/sync":">=2.11.0 <3"},"_npmOperationalInternal":{"tmp":"tmp/sync-pack-favorites_0.3.0_1787723203034_0.3268663583834224","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@absolutejs/sync-pack-favorites","version":"0.4.0","description":"Per-actor saved-resources pack for @absolutejs/sync — favorite/unfavorite/pin/list with optional join to host resources","repository":{"type":"git","url":"git+https://github.com/absolutejs/sync-packs.git","directory":"favorites"},"homepage":"https://github.com/absolutejs/sync-packs/tree/main/favorites","bugs":{"url":"https://github.com/absolutejs/sync-packs/issues"},"main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","type":"module","license":"Apache-2.0","author":{"name":"Alex Kahn"},"publishConfig":{"access":"public"},"keywords":["absolutejs","sync","sync-pack","favorites","bookmarks"],"scripts":{"build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --sourcemap --target=bun --external @absolutejs/sync && tsc --project tsconfig.build.json && absolute-manifest emit","test":"bun test","typecheck":"tsc --noEmit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run typecheck && bun run test && bun run build && bun publish"},"peerDependencies":{"@absolutejs/sync":">=2.11.0 <3"},"devDependencies":{"@absolutejs/sync":"2.29.0","@types/bun":"1.3.14","prettier":"3.5.3","typescript":"5.8.3"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"absolutejs":{"manifestContract":2,"sync":{"localSchema":{"version":1,"localData":{"collections":[{"match":"*favorites*","sensitivity":"private","protection":"required","onProtectionUnavailable":"memory-only","evictionPriority":"critical"}],"mutations":[{"match":"*favorites*","sensitivity":"private","protection":"required","onProtectionUnavailable":"memory-only","conflict":{"strategy":"client-wins","maxAttempts":1}},{"match":"*favorites:toggle","sensitivity":"private","protection":"required","onProtectionUnavailable":"memory-only","conflict":{"strategy":"manual"}},{"match":"*favorites:togglePin","sensitivity":"private","protection":"required","onProtectionUnavailable":"memory-only","conflict":{"strategy":"manual"}}]}}}},"dependencies":{"@absolutejs/manifest":"^0.9.0","@sinclair/typebox":"^0.34.0"},"_id":"@absolutejs/sync-pack-favorites@0.4.0","gitHead":"70fac17d77643bafa53a933112c69a65b06245e9","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-mY/0dV7O/STat8VoThCbynodzswhwfSxai/4HxbXUH3g2V2fC00AdOUYCjLiaK4d/dNBtD6PqSld5dEluyAE/g==","shasum":"e3577517a0edc29df2817624084a6852a13aa353","tarball":"https://registry.npmjs.org/@absolutejs/sync-pack-favorites/-/sync-pack-favorites-0.4.0.tgz","fileCount":10,"unpackedSize":521889,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCVFuHXdXB2kAW4Cm4EcnZTn5PNjrIKA3GsS/gNPvadLQIhALOL6cWkYwHEFBYPJP1zxeWpMFBlxGqgyAVcd7WVJWsl"}]},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"directories":{},"maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sync-pack-favorites_0.4.0_1787729601200_0.39824039385034915"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-28T23:08:53.070Z","modified":"2026-08-26T07:33:21.546Z","0.1.0":"2026-05-28T23:08:53.372Z","0.2.0":"2026-05-29T02:41:23.823Z","0.2.1":"2026-05-29T16:19:34.291Z","0.2.2":"2026-07-13T17:57:53.331Z","0.2.3":"2026-07-23T22:36:53.831Z","0.2.4":"2026-07-24T17:15:47.542Z","0.2.5":"2026-08-26T05:07:17.209Z","0.3.0":"2026-08-26T05:46:43.213Z","0.4.0":"2026-08-26T07:33:21.373Z"},"bugs":{"url":"https://github.com/absolutejs/sync-packs/issues"},"author":{"name":"Alex Kahn"},"license":"Apache-2.0","homepage":"https://github.com/absolutejs/sync-packs/tree/main/favorites","keywords":["absolutejs","sync","sync-pack","favorites","bookmarks"],"repository":{"type":"git","url":"git+https://github.com/absolutejs/sync-packs.git","directory":"favorites"},"description":"Per-actor saved-resources pack for @absolutejs/sync — favorite/unfavorite/pin/list with optional join to host resources","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"readme":"# @absolutejs/sync-pack-favorites\n\nPer-actor saved-resources pack for\n[`@absolutejs/sync`](https://github.com/absolutejs/sync). Each actor sees\nonly their own rows; favoriting is idempotent (deterministic row id);\noptional join collection pairs each favorite with the host's resource\nrow in one live subscription.\n\n```bash\nbun add @absolutejs/sync-pack-favorites\n```\n\n## Usage\n\n```ts\nimport { createSyncEngine } from '@absolutejs/sync/engine';\nimport { createFavoritesPack } from '@absolutejs/sync-pack-favorites';\n\nconst engine = createSyncEngine();\nengine.registerPack(\n\tcreateFavoritesPack({\n\t\tgetActorId: (ctx) => ctx.session.userId,\n\t}),\n);\n```\n\nThen from the client:\n\n```ts\n// Toggle is the easy default — one round-trip, returns the new state.\nconst { favorited } = await store.mutate({\n\targs: { resourceKind: 'doc', resourceId: 'doc-123' },\n\tname: 'favorites:toggle',\n});\n\n// Or favorite / unfavorite explicitly.\nawait store.mutate({ args: { resourceKind: 'doc', resourceId: 'doc-123' }, name: 'favorites:favorite' });\nawait store.mutate({ args: { resourceKind: 'doc', resourceId: 'doc-123' }, name: 'favorites:unfavorite' });\n```\n\n## The pack exposes\n\n| Surface     | Name                          | What it does                                                |\n| ----------- | ----------------------------- | ----------------------------------------------------------- |\n| Collection  | `favorites`                   | Per-actor list. Optional `params.resourceKind` filter       |\n| Mutation    | `favorites:favorite`          | Idempotent insert. Subsequent calls are no-ops              |\n| Mutation    | `favorites:unfavorite`        | Idempotent delete. No-op if the row never existed           |\n| Mutation    | `favorites:toggle`            | Insert if missing, delete if present. Returns `{ favorited }` |\n| Collection  | `favorites-with-resource` (opt) | Join with the host's resource table — see below           |\n\n## Row shape\n\n```ts\ntype FavoriteRow = {\n\tid: string;              // `${actorId}:${resourceKind}:${resourceId}` — deterministic\n\tactorId: string;\n\tresourceKind: string;    // app-level: \"doc\" | \"task\" | \"issue\" | ...\n\tresourceId: string;\n\tcreatedAt: number;\n};\n```\n\nThe deterministic id means the same `(actor, kind, resource)` triple\nalways maps to the same row — so duplicate `favorite` calls are\nidempotent at the storage layer, not just behaviorally.\n\n## Optional: `favorites-with-resource` join\n\nWhen you set `joinResources`, the pack additionally registers a join\ncollection that pairs each favorite with the host's resource row (same\npattern as comments-with-author from sync-pack-comments).\n\n```ts\ntype DocRow = { id: string; title: string };\n\nengine.registerReader('docs', { all: () => db.docs.list() });\nengine.registerPack(\n\tcreateFavoritesPack<MyCtx, DocRow>({\n\t\tgetActorId,\n\t\tjoinResources: {\n\t\t\ttable: 'docs',\n\t\t\t// Default (row) => row.id; override if your resource id key isn't `id`.\n\t\t\t// key: (doc) => doc.docId,\n\t\t\t// Required: host supplies the resource-side hydrate.\n\t\t\thydrate: () => db.docs.list(),\n\t\t},\n\t}),\n);\n\nconst view = await engine.subscribe<\n\tFavoriteRow & { resource: DocRow },\n\t{ resourceKind?: string }\n>({\n\tcollection: 'favorites-with-resource',\n\tparams: { resourceKind: 'doc' },\n\tctx,\n\tonDiff: rerender,\n});\n// view.initial[0] === { ...favorite, resource: { id, title } }\n```\n\nInner join — favorites whose resource has been deleted drop out of the\njoin (but stay in the base `favorites` collection).\n\n## Storage\n\nDefault: per-instance in-memory store. For a persistent backend, pass a\ncustom `store`:\n\n```ts\nimport { type FavoritesStore } from '@absolutejs/sync-pack-favorites';\n\nconst store: FavoritesStore = {\n\tgetById: (id) => /* SELECT * FROM favorites WHERE id = $1 */,\n\treader: { all: () => /* SELECT */ },\n\twriter: { insert, update, delete },\n};\n```\n\n## Multiple instances\n\nPass a `prefix` to coexist with another favorites pack instance (e.g. a\n\"team\" set vs a \"private\" set):\n\n```ts\nengine.registerPack(createFavoritesPack({ prefix: 'team_', /* ... */ }));\nengine.registerPack(createFavoritesPack({ prefix: 'private_', /* ... */ }));\n```\n","readmeFilename":"README.md"}