{"_id":"@recordtimelabel/core","_rev":"45-9b403ed670b0d49ff07823bed3cdd86a","name":"@recordtimelabel/core","dist-tags":{"latest":"0.6.20"},"versions":{"0.1.0":{"name":"@recordtimelabel/core","version":"0.1.0","_id":"@recordtimelabel/core@0.1.0","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"9c346a6acf32831f7a1bfcdcce7af0fefba31ce3","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.1.0.tgz","fileCount":3,"integrity":"sha512-eLxFCGhI54XMeBo8GPovzH5KGXWZLkRq0bq2mbVuWiPh+5gExf9twFTBZyiC3SP8JIddiLCzAymbeAJ6lVyJ7w==","signatures":[{"sig":"MEMCHyXN1wSLP9PydriD8NShvroZIqD2suwlZ/3Kda/xxKkCIHKM+7WyD7h70MPV4VYqYCxZOC1n4VrsszKmENyHdSKs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27747},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js"},"gitHead":"367dc5852323f2068d24afe6ca4b17197f76715e","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.11.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.1.0_1780242743296_0.7947467980244276","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@recordtimelabel/core","version":"0.1.1","_id":"@recordtimelabel/core@0.1.1","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"9c8a8e2cd8fc53a60259fed5ae2f783dfe88dd14","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.1.1.tgz","fileCount":3,"integrity":"sha512-tAFhBuOPz0lF/JJc17Uq3n+5PgN5OdJ4tMwwVti/n5zcR3/lLbNWIcWGTHDiAHHM2d4pUV8PzfTf/+mY32Wppg==","signatures":[{"sig":"MEUCIQDGMgJgvySP+o2CF0lxNMMI3pXDRnif/V1hXzhuvzkZtgIgX7yEiGSxNneuBqUIV6agAQ2rmjYi934Cq4udp7faVc4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33351},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js"},"gitHead":"367dc5852323f2068d24afe6ca4b17197f76715e","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.11.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.1.1_1780320185952_0.19009794712008476","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@recordtimelabel/core","version":"0.1.2","_id":"@recordtimelabel/core@0.1.2","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"360a07c9fd9aba2c0455f92c1cc8f24de546682f","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.1.2.tgz","fileCount":3,"integrity":"sha512-fccjhe9LLJKG9uO3TTvDPdzxMkRnkSoTEvZDsPL6oWkSLB1xoxG7JTx5nmLdk1f7pN8nSN9UNmZJPyAVivsANg==","signatures":[{"sig":"MEUCIFCak1wL7NoYIjb5pNhK1JyItY4HQV+GpVkQi/zRJ0LfAiEAhGnzicIUi+GUJIEToJB49RQAgy21eHPAYJdAL+em9+s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64217},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js"},"gitHead":"367dc5852323f2068d24afe6ca4b17197f76715e","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.11.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.1.2_1780715485013_0.4396431119155688","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@recordtimelabel/core","version":"0.1.3","_id":"@recordtimelabel/core@0.1.3","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"1b7321e79fa4bd89b9246fa7645cdd4d783b2600","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.1.3.tgz","fileCount":3,"integrity":"sha512-K9aZ6uUkIp7AL8evplZUxjmQEUS5yrdcZU7lAz6AMPhXTCokxlzn1g9biS5c7C0n1zRbk7hCu4BkKoiOf3ghBQ==","signatures":[{"sig":"MEUCIQDJw6R3Kp64VrW6ovnQkGDAnQnpFHsq7KPlm9xzLB+FLwIgXpDeUooNiyTUOfy4tajA7oaUY3P5eb3p1Gq2ijKqec0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64218},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js"},"gitHead":"ea525bd5addf7967eaa6fe8eafdd10b98927a241","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.11.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.1.3_1780801748563_0.41903773882615414","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@recordtimelabel/core","version":"0.1.4","_id":"@recordtimelabel/core@0.1.4","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"f8c9ea1354dd1b696889ae6d71d904e96da14957","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.1.4.tgz","fileCount":3,"integrity":"sha512-tzX5fPQFJU//cif+OMO7TTXQmZhWvw1sxygwGGwbgmKWZGGOFj3at6LJflHTQ/atu6HNbHAh4N/7KlYZjpRYfQ==","signatures":[{"sig":"MEQCIBxq82iT0ybKe5QFCECXojd02qIdkoXvdeYN6/1BerfwAiB5E7Hu1V0UnLB4Beq8bX85sAyzXQL3s9P7d8ZAt0oC9Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":68919},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js"},"gitHead":"ea525bd5addf7967eaa6fe8eafdd10b98927a241","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.11.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.1.4_1780803855011_0.1942389010406329","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@recordtimelabel/core","version":"0.1.5","_id":"@recordtimelabel/core@0.1.5","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"d12b0dc4cd695e841053d6c32284b8a7e1f3f770","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.1.5.tgz","fileCount":3,"integrity":"sha512-Vh0cBrWIa3zTyhYo5E6dI51k/Xy2olpvZ01t2jOAoxHgWBYfkP7OXLZzMnT0ieEGmNKhg6MhKJ4LUvf6oDFnbQ==","signatures":[{"sig":"MEQCID1Dpi/6Abm4XZQFXcl7TYt6fZAc39Y+t+eu3JUuCF7GAiB/Ed9GoEKJWzhP0IffdjG9lr6Y98MvmBXF9u/GCjsAkA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72076},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js"},"gitHead":"65b84ab82789e388959d94d922dd6abca5083c26","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.11.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.1.5_1780830421392_0.8246560243284948","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@recordtimelabel/core","version":"0.1.7","_id":"@recordtimelabel/core@0.1.7","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"e79f397f527aef71543497e5b2f8130496eb5844","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.1.7.tgz","fileCount":3,"integrity":"sha512-si+Y8fNu/QCna4APT1Gi55Q0ZUqvo1ZpnATe65BEiVsktnDyHT3B5Hh+mgfcE9K8XBn5aNTx/Abjy36AJg4QPQ==","signatures":[{"sig":"MEYCIQDwVkV1ONJx7oJf9t7ePnlhfYA0e212EAYjGSaHS5N1CgIhAMeHZ0lnkqTSy0rJyNL4TxABAE0xctEgWKR3v/HXZx0W","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72738},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js"},"gitHead":"6323afcbcadeb3744aec9349e9c465cd3144a809","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.11.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.1.7_1780840677911_0.30327703580202137","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@recordtimelabel/core","version":"0.1.8","_id":"@recordtimelabel/core@0.1.8","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"0c4a0c116664a584b4d7de5f5ee6437a3cf70b6c","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.1.8.tgz","fileCount":3,"integrity":"sha512-XIpq3sxec/M8u0kpI/sjRvBMZxjE0sXQPpfrx+j7nua0Z4KFD2nhIXvdqJykIliGi/YdxlsP2Jrmu12mtxCKEQ==","signatures":[{"sig":"MEYCIQCyJO1NfWc4mGnuh80bsCNZmdQP6NIEPmQ94H8LSKa3ZgIhANmaR6mEQXmxSOcolMeTpdEt/vMGoHUygGh4RohfJOP6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73159},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js"},"gitHead":"6323afcbcadeb3744aec9349e9c465cd3144a809","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.11.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.1.8_1782985711281_0.11671635687591264","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@recordtimelabel/core","version":"0.1.9","_id":"@recordtimelabel/core@0.1.9","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"ab644ad9dcd4d923c46253d01e83c0e3f977c6e2","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.1.9.tgz","fileCount":3,"integrity":"sha512-1TSBSscY3NnowFrj0AdhMHRwnpVZ2kijVOJG5X4Xue92Ef7k7AVWcqHCXgoJc27CZ3M6JkZ7JQvF6zU2GWvk3A==","signatures":[{"sig":"MEUCIGelYSvivVICzMTTyIsnrNOK2IEiC8KilBOKPvAAYGV1AiEAzjWwGLaZnbfxIaBHroKDLmJ3iKP6NaiOzCWQ1hbv0C4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75860},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js"},"gitHead":"6323afcbcadeb3744aec9349e9c465cd3144a809","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.11.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.1.9_1784636418140_0.3344702631446923","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@recordtimelabel/core","version":"0.1.10","_id":"@recordtimelabel/core@0.1.10","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"a303bb9c7639d369c1a3b165cdfeac1005a83cda","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.1.10.tgz","fileCount":3,"integrity":"sha512-oHJK7WVYRQGbAWJ0ljdX+Uz1JFxwzb3sHRpWTNsQiqhUMprxH6hQq2SGizLDIQgJhiJKIUCux3Xf4UDNgzIPCg==","signatures":[{"sig":"MEUCIBBcaQN3f4taGms+XQHhidBjItDgHocQTMRlTFO9I/lBAiEAp3//OzZ65tbWHtvsRUbOEHhDAJBY0/0EiIM+rn18Sls=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76300},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js"},"gitHead":"6323afcbcadeb3744aec9349e9c465cd3144a809","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.11.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.1.10_1784640883780_0.676415351856188","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@recordtimelabel/core","version":"0.2.0","_id":"@recordtimelabel/core@0.2.0","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"af5b728accb96507dabcb67a342ada77df60aa37","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.2.0.tgz","fileCount":3,"integrity":"sha512-dsapX29OLEMUO27Cy0rqJeYd1H1i2kOlXjewgIUjPV+eAXaZQK1En0ZcQcTVvQAlJHpBaJYHSzL/IWVmJs6ZpA==","signatures":[{"sig":"MEYCIQCZdgzX4XdyHrXNgeSt8s6u8Jgchk2yGwkR/UFBLgXZHAIhAJj2RayYwCkgKaLDH8u9w6sKyOMVTVDwqtwbA/aWJj3+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":101628},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js"},"gitHead":"6323afcbcadeb3744aec9349e9c465cd3144a809","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.17.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.2.0_1784692740548_0.5002197792058469","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@recordtimelabel/core","version":"0.2.1","_id":"@recordtimelabel/core@0.2.1","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"af7528247e455c9879d523735756b25824984c98","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.2.1.tgz","fileCount":3,"integrity":"sha512-ZmLz3bi93NDYrGTWyrdeEDp2LTECnntr7jAoUICxtRNiO5FRhX4en1a+jDdvJvsqUqNsb9ElaUlh8iwA9k2C3A==","signatures":[{"sig":"MEYCIQCJqD0uZyKc07wCgkQQsaPuxNtHcnhHlrtBMZryImbS0gIhANYyW9NRkw2jFELujdzbWqNd6LPvKZGNT0hEq443zN7c","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":102570},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js"},"gitHead":"6323afcbcadeb3744aec9349e9c465cd3144a809","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.17.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.2.1_1784711074353_0.8504790729021761","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@recordtimelabel/core","version":"0.3.0","_id":"@recordtimelabel/core@0.3.0","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"d965285e398f5c0053395e04f70bdaa5cf5f2208","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.3.0.tgz","fileCount":3,"integrity":"sha512-lBx0jEOuWtp2xHRk/rogpADZrRGsG51Mlj42aa40zZWs3rTOgJ3DVTNU1A/Lp1KH6OyevGvB2sYk6hH6vO7sEA==","signatures":[{"sig":"MEQCIEHWo1XsqTKWnf123vlLquMBN92SsBEwenQemBZNSaUoAiAF6lFgRSxvXVpj9m2sTIHQe2D+zBXXNoy0twMRrHe3Qg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":120394},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js"},"gitHead":"6323afcbcadeb3744aec9349e9c465cd3144a809","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.17.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.3.0_1784994404649_0.358747704015669","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@recordtimelabel/core","version":"0.3.1","_id":"@recordtimelabel/core@0.3.1","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"f0dc304aff32c039609dfc035e4ab358e659acbd","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.3.1.tgz","fileCount":3,"integrity":"sha512-nBlDSfhlxTdzbyHzEWOWSHVP8+vRuMha7xzEJMCgE+IUbnxIfNypMfv8zfvXu41ftxUnrFT12mAq3ELeUOSjlg==","signatures":[{"sig":"MEUCIFvwtmWC0LOeI1EV9A2W6Dv/R+Vj6iYDs9iPiNRNriQ9AiEA7yqL6sXnUl7Ht3H1jIgt0GxenlYPZBwHClFDze7Cg9E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123507},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js"},"gitHead":"6323afcbcadeb3744aec9349e9c465cd3144a809","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.17.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.3.1_1785057013750_0.8891056663170522","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@recordtimelabel/core","version":"0.3.2","_id":"@recordtimelabel/core@0.3.2","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"3fc58c7792eb55ba732cd3e3fe5f92c14b2d54c5","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.3.2.tgz","fileCount":3,"integrity":"sha512-za5edB5KizSLOklbJP03KN3Ctc+Eq6ia5iNHeEIkj0J0zCJRw9Mygpf2OGRN8rgKsexjaG2fRHdmDrdbHFZwAw==","signatures":[{"sig":"MEUCIQCuz2kXLcne1NtpafmdNPq+i1s+Wne+egTMEGvx6oG8cwIgLOG7HxGoaee7Xpb7spzvjAHKqM9F2csfgsakZV03eIs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":124769},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js"},"gitHead":"6323afcbcadeb3744aec9349e9c465cd3144a809","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.17.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.3.2_1785059539504_0.2786534492380155","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@recordtimelabel/core","version":"0.3.3","_id":"@recordtimelabel/core@0.3.3","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"0e4fe7e34a4cf79e1a7869a51bd34dd39e1e9b67","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.3.3.tgz","fileCount":3,"integrity":"sha512-M+j89vP7ztV6lliQ2YBCUyEOTfAz5uXewszoUskpIBQhAloN/x3Qx0rVjOxUdjaZnJT6BCrTkSMcl1dzBAyAoQ==","signatures":[{"sig":"MEYCIQCK46MLkHa+xWaziMUjVLwzTDiKMKSHsnWIXs5We/uK6gIhAMDrZbj3c368UDKX1hG+b/xKj3EbA7p/eNGFC5etWAZp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131904},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js"},"gitHead":"6323afcbcadeb3744aec9349e9c465cd3144a809","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.17.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.3.3_1785165213124_0.41457748425337493","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@recordtimelabel/core","version":"0.4.0","_id":"@recordtimelabel/core@0.4.0","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"4cf39cd756661884bee73a3d8939b8e1ce86cb72","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.4.0.tgz","fileCount":6,"integrity":"sha512-8+DY5bGDVeIMRelmm9TgAiYpF4e4qqNwKswRil9vYnmpvEMetpSX5ri2RXpaeru/CB9g+hcZUjBg10BBeB1Gdw==","signatures":[{"sig":"MEQCIGnzh3hxUjN9Jpg2vJnsMXGfhkSaApMfviIQHdOA3UaNAiAMX3RbHj+79Vs0pAHTVWMaXZvjJs4OG8CRNpkIYKm8NA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":186048},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js","./compat":"./src/compat.js","./protocol":"./src/protocol.js","./firestore-v2":"./src/firestore-v2.js"},"gitHead":"6323afcbcadeb3744aec9349e9c465cd3144a809","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.17.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.4.0_1785898520458_0.9118652952008488","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@recordtimelabel/core","version":"0.4.1","_id":"@recordtimelabel/core@0.4.1","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"011e14bffd45d6adadfb0e476abaa4331941e3b3","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.4.1.tgz","fileCount":6,"integrity":"sha512-H+F3m8Yu+1LL+s9GUB0UTiyJAYJy0plQj8Iyi2tPlQyvhbCGwxN0Zftq8aXIkST5L/c5pAcgLDb9zLLzV27TnA==","signatures":[{"sig":"MEUCIDwB0t5jvqmjB7uTXHhxtpKv74Jyq8CVMGGaiaK3913LAiEAxhbaIlxmRlCLvzWqW6eJOZySvRLJaq6+XVvVOovlqMo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":186793},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js","./compat":"./src/compat.js","./protocol":"./src/protocol.js","./firestore-v2":"./src/firestore-v2.js"},"gitHead":"b126d6885f2211650b90e7eadbfec47b6de9a419","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.17.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.4.1_1785932286953_0.05544793846272644","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@recordtimelabel/core","version":"0.4.2","_id":"@recordtimelabel/core@0.4.2","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"acf3b5d98a60e49bbb7b0c35e4e456e0ec54c02b","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.4.2.tgz","fileCount":6,"integrity":"sha512-fHbgP/NwlZ0Evg9/sda9GdshuFLb3yD/bl58Xz/LSykjGzg79XIkTzU1v5FWRrG+DIS4hxR1CXcJdH8Tu7UtkA==","signatures":[{"sig":"MEYCIQCpdnt1wsQo5VSK1zyOgejd1oplznbq+Tqre5WZAVgJPAIhAP0jXHlYSqE7n4GSemZ0Rdcvzb9LP0YyTL28wtdRhkvc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":188902},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js","./compat":"./src/compat.js","./protocol":"./src/protocol.js","./firestore-v2":"./src/firestore-v2.js"},"gitHead":"13ccc597a66c59779608c9b7ebb41d38b0c500e7","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.17.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.4.2_1786016391696_0.36484488417644956","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@recordtimelabel/core","version":"0.4.3","_id":"@recordtimelabel/core@0.4.3","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"1cdac1a7369badf5ff316b6d6f43ec0dd5829717","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.4.3.tgz","fileCount":6,"integrity":"sha512-R54F1BY6MTVRoS4Z4GQyJQEtTi0kl04IOZKv9+6vxcHtF5zIRfkqCfrn09saGUqpPrMc/9I7W0jbNkUZXlPMEQ==","signatures":[{"sig":"MEUCIBJ0YZaghow4pcVDcKy62VWjZZxXoVgk8WJsesmUp/VjAiEAnR+fefyD5ysV03Y3pZGg9Jz2H6DPtuRGc4AxdjQWggo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":204734},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js","./compat":"./src/compat.js","./protocol":"./src/protocol.js","./firestore-v2":"./src/firestore-v2.js"},"scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.17.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.4.3_1786250772654_0.7887873454039489","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@recordtimelabel/core","version":"0.4.4","_id":"@recordtimelabel/core@0.4.4","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"d13aeec07f3ed6a5bc32472ac704903f6f9377cb","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.4.4.tgz","fileCount":6,"integrity":"sha512-7CJGQ1GGf/yQMSBPiyD8gxeG462whq0HL0QzTAMDGzAuX/zdOGAiQPKQs1Ctk7dqXMuG+kW43aPW0S3k/0U7mg==","signatures":[{"sig":"MEUCIQD3ZIbsctwwTXhtGrzz0q8AcwMNssmmNWIBEOgsdyOx7AIgcb4X79+4rd1LAt1ykGSPmnel0MaL8trYTl4pf8s+lsY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":209618},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js","./compat":"./src/compat.js","./protocol":"./src/protocol.js","./firestore-v2":"./src/firestore-v2.js"},"gitHead":"31d12a93f3bdd76d128d9080bdfc6ec59d705007","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.17.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.4.4_1786264792812_0.530580250058388","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"name":"@recordtimelabel/core","version":"0.4.5","_id":"@recordtimelabel/core@0.4.5","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"84869126839da69225ff1d1705fbfabc8fdb8a70","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.4.5.tgz","fileCount":6,"integrity":"sha512-tbigXvasoPmB2TvIIQHg5uXJBskLdAmXok+4bwPBW1VO8YKzc/EzBbVGIsG/ix01FEDd7GKzVkXXSGzNFzewhg==","signatures":[{"sig":"MEUCIQDf3t1aQMJOLzOHUuMABkBCsjwAptouCD9NWNGM/YyiNAIgJbXXKTaPAIDYhJlEXLHcb4RXVfrU+95EDtKurk0xhkA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":211449},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js","./compat":"./src/compat.js","./protocol":"./src/protocol.js","./firestore-v2":"./src/firestore-v2.js"},"gitHead":"31d12a93f3bdd76d128d9080bdfc6ec59d705007","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.17.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.4.5_1786355198190_0.7676296064526011","host":"s3://npm-registry-packages-npm-production"}},"0.4.6":{"name":"@recordtimelabel/core","version":"0.4.6","_id":"@recordtimelabel/core@0.4.6","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"60c9370a241f379eb4b6383d3d1768ec489c0aa5","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.4.6.tgz","fileCount":6,"integrity":"sha512-Dz2LA13Mp8m+EaXhD3t9lPxbVzV5yZ/+I9cW+D+rcT/GbHTPRqP5fFFzp/e/bjU8vbncdcvc4JTe5UH32Q/W9Q==","signatures":[{"sig":"MEYCIQCOCXCqIp0xi/mG/XuA/2hcPt0s4+p3LEmrRTvTf3EoXAIhAN3t5n5+FEQj0UApCs0s8gSGbmE1TU748MsnTF8WnicA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":218647},"main":"./src/index.js","type":"module","_from":"file:/tmp/rtl-core-publish-20260812-1215/recordtimelabel-core-0.4.6.tgz","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js","./compat":"./src/compat.js","./protocol":"./src/protocol.js","./firestore-v2":"./src/firestore-v2.js"},"scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_resolved":"/tmp/rtl-core-publish-20260812-1215/recordtimelabel-core-0.4.6.tgz","_integrity":"sha512-Dz2LA13Mp8m+EaXhD3t9lPxbVzV5yZ/+I9cW+D+rcT/GbHTPRqP5fFFzp/e/bjU8vbncdcvc4JTe5UH32Q/W9Q==","_npmVersion":"11.17.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.4.6_1786536929599_0.9412943496275614","host":"s3://npm-registry-packages-npm-production"}},"0.4.7":{"name":"@recordtimelabel/core","version":"0.4.7","_id":"@recordtimelabel/core@0.4.7","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"54c53c393872b02378747dc30a3bcf3cf02f6044","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.4.7.tgz","fileCount":6,"integrity":"sha512-AIUA5WwkOgf8Ej6lSU+uwsEhFQ1daHPPqVdTl3GwpS1JLiDhOyO47TwAThVyEqUngZmuG/nGeP77576AZSoELA==","signatures":[{"sig":"MEUCIQDjUGGDR30Ivj8PhFqZPbcLsBZPO4LBLpwVa9gEYmWABgIgSp1R7+iChT6HRKVzg8olW9knvKSZ9bkifdMNxK10ZAY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":223529},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js","./compat":"./src/compat.js","./protocol":"./src/protocol.js","./firestore-v2":"./src/firestore-v2.js"},"gitHead":"044bd58bec37917646249c2dfad92c136651a64f","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.17.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.4.7_1786599923221_0.12112504333933316","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@recordtimelabel/core","version":"0.5.0","_id":"@recordtimelabel/core@0.5.0","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"e6f1a3fdaf82cfdabb01173161809ff1f386a10a","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.5.0.tgz","fileCount":14,"integrity":"sha512-/1tEw9e8ahDFVM5TFpdGRKFDcM5fjQeGohzKWxWoV8mhZy88cdrG6AqjMsA178/byQffvkgNOxxo9L/1uw7pFQ==","signatures":[{"sig":"MEUCIQCJEfv+uXKNWlVMVMxxXr29mgOaQremujfEjbE9lqiEJgIgUvLx1KTuciaZmtcdL9clgB4ePuOot5Y9gxkjnByr4JQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":292619},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js","./compat":"./src/compat.js","./domain":"./src/domain.js","./protocol":"./src/protocol.js","./firestore-v2":"./src/firestore-v2.js"},"gitHead":"044bd58bec37917646249c2dfad92c136651a64f","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.17.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.5.0_1786619481113_0.997288031343782","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@recordtimelabel/core","version":"0.6.0","_id":"@recordtimelabel/core@0.6.0","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"bdeae60666e5581ddf9c10308cf0ead7fada6079","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.6.0.tgz","fileCount":16,"integrity":"sha512-xQcUzJ/NQCXDO26t+qmvdyTFxhw028Qv6TmixUMIcpc5H1aZsE/e4pB6gIor25fLOYUOMw/Z+v6OZR3djbVt/g==","signatures":[{"sig":"MEYCIQCzF1XURhnPpmFupGJP7aMNHUo+BmEnw4unc61VIK2BiAIhAJaT6A5tpBGyExkbfHXp+79JSrfXdymlv5hB9VtfoLAT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":311003},"main":"./src/index.js","type":"module","_from":"file:recordtimelabel-core-0.6.0.tgz","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js","./compat":"./src/compat.js","./domain":"./src/domain.js","./protocol":"./src/protocol.js","./firestore-v2":"./src/firestore-v2.js"},"scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_resolved":"/Users/sunno/programming/recordtimelabel-core/recordtimelabel-core-0.6.0.tgz","_integrity":"sha512-xQcUzJ/NQCXDO26t+qmvdyTFxhw028Qv6TmixUMIcpc5H1aZsE/e4pB6gIor25fLOYUOMw/Z+v6OZR3djbVt/g==","_npmVersion":"11.17.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.6.0_1786622087940_0.5053700469312512","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@recordtimelabel/core","version":"0.6.1","_id":"@recordtimelabel/core@0.6.1","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"aeb6aaf41cdff4711daa3a543c430693b46d1c4c","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.6.1.tgz","fileCount":16,"integrity":"sha512-ha6B3dOGUpMVSfbyCZ/SXcoTIs8MMBYQF8aTRB/cgwvPiFXpS2Vzt1NU3fH+ww71bmZhiuggslYOSYbovvj7mQ==","signatures":[{"sig":"MEUCIGChsHsDcd1WpgKlSSyiJprlFm8k0IwxWePVoVczLnhZAiEAxt0AkiM+cUzxZC/VAc8C4WcJ67FvkEZNqeK1uqhNbRM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":319246},"main":"./src/index.js","type":"module","_from":"file:recordtimelabel-core-0.6.1.tgz","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js","./compat":"./src/compat.js","./domain":"./src/domain.js","./protocol":"./src/protocol.js","./firestore-v2":"./src/firestore-v2.js"},"scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_resolved":"/Users/sunno/programming/recordtimelabel-core/recordtimelabel-core-0.6.1.tgz","_integrity":"sha512-ha6B3dOGUpMVSfbyCZ/SXcoTIs8MMBYQF8aTRB/cgwvPiFXpS2Vzt1NU3fH+ww71bmZhiuggslYOSYbovvj7mQ==","_npmVersion":"11.17.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.6.1_1786627272407_0.22789049843104237","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"@recordtimelabel/core","version":"0.6.2","_id":"@recordtimelabel/core@0.6.2","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"eb3c8db8618e19a2cc9d707b7a91711ea06c7c2f","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.6.2.tgz","fileCount":16,"integrity":"sha512-8DNjffZf0G6W+mvArvQzcLdDBAqRkKxjYRqx8c5og8ds2SthKI3WoCYlGLtdDD9sO6NPRA2daDVjtbPbZCeQsQ==","signatures":[{"sig":"MEUCIQDRSlEur9zS7PYdpDio2xl+tG+1OwvYc+GMcD5vOmlUywIgUIYxajnSOKBHqAao2hkrjK2QOEPAHPHtZPFitqMXE1c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":331607},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js","./compat":"./src/compat.js","./domain":"./src/domain.js","./protocol":"./src/protocol.js","./firestore-v2":"./src/firestore-v2.js"},"gitHead":"07379793ef3e730c9c745ca13f9d12f320163a5c","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.17.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.6.2_1786784324889_0.841287437608091","host":"s3://npm-registry-packages-npm-production"}},"0.6.4":{"name":"@recordtimelabel/core","version":"0.6.4","_id":"@recordtimelabel/core@0.6.4","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"abdd60f6690d148aea67ccfe2e8a8dbcf233588e","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.6.4.tgz","fileCount":16,"integrity":"sha512-D2q3kKVqRRECGRr1TJoZ5uc0RexOWGjTMQfth72QpI0dI8JAk7nqh8fb3zgGiVudyDA7JpBa9kKPaRq/hstgGg==","signatures":[{"sig":"MEUCIQCEpGbbnWCk8LN9tfcp0vnLWJThsXtMV4N2vLR4tVqiQgIgcGujEsL4G/jisoVowF1Ilhv/57cTiMaHBCcEkDmuBxI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":401083},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js","./compat":"./src/compat.js","./domain":"./src/domain.js","./protocol":"./src/protocol.js","./firestore-v2":"./src/firestore-v2.js"},"gitHead":"1b58f284fcdf9c214a6c1cc19bd5ba81e9226584","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.17.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.6.4_1786887788273_0.8155391594739743","host":"s3://npm-registry-packages-npm-production"}},"0.6.5":{"name":"@recordtimelabel/core","version":"0.6.5","_id":"@recordtimelabel/core@0.6.5","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"1e861132dd5373e55dc473720769014da634789f","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.6.5.tgz","fileCount":16,"integrity":"sha512-S9S1SyaD0tyBuV+r99+kD15tx+j3HCU641F8pY/bYrK2V2qC/V4CFRvBg0bUM+uloyeEVHmYUg32GxDLW417pA==","signatures":[{"sig":"MEUCIQDzC/2s4ET0sw7S3ttM5NWtKDIMy6Jr80fHNCzvPNzmpwIgVUYf77uzg3Ag7X6KdJQjsz+om/DZcGZ1zQr+u1teNyw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":412230},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js","./compat":"./src/compat.js","./domain":"./src/domain.js","./protocol":"./src/protocol.js","./firestore-v2":"./src/firestore-v2.js"},"gitHead":"1b58f284fcdf9c214a6c1cc19bd5ba81e9226584","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.17.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.6.5_1787192908401_0.8500882806204411","host":"s3://npm-registry-packages-npm-production"}},"0.6.6":{"name":"@recordtimelabel/core","version":"0.6.6","_id":"@recordtimelabel/core@0.6.6","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"2f4054fea4d2c2c32218e4b38daa456c73993934","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.6.6.tgz","fileCount":16,"integrity":"sha512-9UPqldWy4wHnby3LS5dMIp/1n3lxgfmQSM6Yoot+zDpw0IfxAyEMRcMTjxDCpdxfeOsrLNiZt1t7BAlYkt6zkw==","signatures":[{"sig":"MEYCIQDt/73QEjdezA08388+JcSCC/d7TN/SozQgYjHYzohdcwIhAKEyV6vr9oqIgEbcJH+IxWL12oG1fRYS5vVoJpLdt6Zl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":413984},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js","./compat":"./src/compat.js","./domain":"./src/domain.js","./protocol":"./src/protocol.js","./firestore-v2":"./src/firestore-v2.js"},"gitHead":"f8f904b511c15c7a7d53d6cccb61f8af62061832","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.17.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.6.6_1787203321332_0.7300313757428847","host":"s3://npm-registry-packages-npm-production"}},"0.6.7":{"name":"@recordtimelabel/core","version":"0.6.7","_id":"@recordtimelabel/core@0.6.7","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"8bdc40b70a73958d711c138eb11f45090544b078","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.6.7.tgz","fileCount":16,"integrity":"sha512-+ZELmz1fYXM49f/2PQkwhiF5OkhZnos9zzW+o0dAKF59OGnZxefatKaMCuMFHOpTDeHMaxweW/2ywP3+ToNe+Q==","signatures":[{"sig":"MEYCIQCV6Rn9zWRiMl680mytN7u/fFG6c52RZFt1dvYzVvqUUAIhAL7YNGgqFmBH1cycg3JgY6gN7FQud7lH+CjwJNH4NgwM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":415849},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js","./compat":"./src/compat.js","./domain":"./src/domain.js","./protocol":"./src/protocol.js","./firestore-v2":"./src/firestore-v2.js"},"gitHead":"43b15144851173a03c5ccd77eefafa8414cb817c","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.17.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.6.7_1787206454016_0.7221422875474792","host":"s3://npm-registry-packages-npm-production"}},"0.6.8":{"name":"@recordtimelabel/core","version":"0.6.8","_id":"@recordtimelabel/core@0.6.8","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"f59e55616232d1d29fb92af7901aa6c6ecdef615","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.6.8.tgz","fileCount":16,"integrity":"sha512-6AFJch0GCYkICxa3kGtv+zI1FmzQf5kqwAedlQWn3MKwO1UaFdRGB2QHLuJ2kfx7Q34KjZrtG9Pwz8QSsXjn9g==","signatures":[{"sig":"MEUCIEPsi3e3rb8dME9nzp9tL6gfScPuI20EdUJIVj/nxt1mAiEAibxt6F0oDWWble6ej27Do2LQym7AyoEcg+wCM1/6/IU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":417381},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js","./compat":"./src/compat.js","./domain":"./src/domain.js","./protocol":"./src/protocol.js","./firestore-v2":"./src/firestore-v2.js"},"gitHead":"f52a84a0401a7922943718baa9ed3c43b155660d","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.17.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.6.8_1787384434819_0.9548959770222911","host":"s3://npm-registry-packages-npm-production"}},"0.6.9":{"name":"@recordtimelabel/core","version":"0.6.9","_id":"@recordtimelabel/core@0.6.9","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"30164e52d92dd62407f8fb552681b9660d6b5288","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.6.9.tgz","fileCount":16,"integrity":"sha512-0P3UM+nxyVx7MW6Xjbkav+NTjKjbyQsTRlcSobNLK6QlUOUIqZtqlxCFvZfXqB40tfX9s6R+r3ldcVZQsN9WuA==","signatures":[{"sig":"MEUCIQCzHzwYFZ/l19bfeQ0LR+XHYL2PQnz8nMFLIqcUU3MlfQIgXUk7DImIJdzPeMNKTruYO3hNrdccOkQo1RXLzKE6orI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":418877},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js","./compat":"./src/compat.js","./domain":"./src/domain.js","./protocol":"./src/protocol.js","./firestore-v2":"./src/firestore-v2.js"},"gitHead":"00d69bdbbb6430793575a83342dcc6b296aef112","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.17.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.6.9_1787449726065_0.20382817216429516","host":"s3://npm-registry-packages-npm-production"}},"0.6.10":{"name":"@recordtimelabel/core","version":"0.6.10","_id":"@recordtimelabel/core@0.6.10","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"61a5ddbeb6ac2b3996ce633427bdfbbc2881dd03","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.6.10.tgz","fileCount":16,"integrity":"sha512-xpKwTNgoCL5M98nJD/LIkYUp2CirXoflaNp81rOf+0gXof+W3GCMgiYkEEWhlJrFlGTweI+hugrZO47EPmPOyw==","signatures":[{"sig":"MEUCIQCRiXYxCBXy7VLP1zmJGI3CN7M2W105TFlM9CqnvllM+wIgQuDIOAIEGFbD0O9wJgjS4YcNQlhBWL2gTii6OtGkAEc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":423221},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js","./compat":"./src/compat.js","./domain":"./src/domain.js","./protocol":"./src/protocol.js","./firestore-v2":"./src/firestore-v2.js"},"gitHead":"2fa35ec38c80cc18e555925fd8efd224128b6057","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.17.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.6.10_1787479727905_0.0032965311853043744","host":"s3://npm-registry-packages-npm-production"}},"0.6.11":{"name":"@recordtimelabel/core","version":"0.6.11","_id":"@recordtimelabel/core@0.6.11","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"26a40599ae3706f6749bb8102786cb0b8c0b5d70","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.6.11.tgz","fileCount":16,"integrity":"sha512-8SunLdNFgHWMc8Xftw9vlZqXKegSoXyLo/dCct3HimLTmMz/HF7iHyZOdQ2mBpeYmBIAC7kMcFnhcY/faEm7wA==","signatures":[{"sig":"MEYCIQCbWRUDu1DBEwe0BzQR54AcAXJPsuBwdYbU+Ex3CcvgmQIhALd7oolao6K1e6+3cdRWjIhhTc+45W9WrmlTk0oeDICt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":423902},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js","./compat":"./src/compat.js","./domain":"./src/domain.js","./protocol":"./src/protocol.js","./firestore-v2":"./src/firestore-v2.js"},"gitHead":"e274ec1dfbac185b9218b48165ba15cd0ad9cebf","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.17.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.6.11_1787924986167_0.6094205881014809","host":"s3://npm-registry-packages-npm-production"}},"0.6.12":{"name":"@recordtimelabel/core","version":"0.6.12","_id":"@recordtimelabel/core@0.6.12","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"d9160957a2ed23e06ea6491021a9a200cc1349e2","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.6.12.tgz","fileCount":16,"integrity":"sha512-GauqTa3ZXHsDiJxW30xE4b439wM3Wl1V0MwuNgQG095XWjN1bcfZpy5JnehgekfhjNPoxTRmiUjOmgSIT7hFow==","signatures":[{"sig":"MEQCIF6EUmxlG2Xb8eneVJ7tVP7Kwjp13nz/EWfFK1zWxla/AiBVvkjWdh/F8BEit+YSRS+YxS+5uHYJvgVzl+V6CQRvCQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":436946},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js","./compat":"./src/compat.js","./domain":"./src/domain.js","./protocol":"./src/protocol.js","./firestore-v2":"./src/firestore-v2.js"},"gitHead":"f0014c2dd1d6c5d17c870a3afeb69143dc15a035","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.17.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.6.12_1788111432639_0.6515823553440672","host":"s3://npm-registry-packages-npm-production"}},"0.6.13":{"name":"@recordtimelabel/core","version":"0.6.13","_id":"@recordtimelabel/core@0.6.13","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"9359e691d45c098e3332ab0202a663d68bf2b953","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.6.13.tgz","fileCount":16,"integrity":"sha512-oVVQnFRrVwZAUZwCEtVct60ibi5v2oFv2E1Ytu6nIDcL21JbbIUvhKBfBcVn8XYsplYRTe/BS75wgcc1dRbzVA==","signatures":[{"sig":"MEQCIAeA5iGqiS8qqc7vuyEX5UciV+sskIHKIrm9WHSnsg0MAiAKzwa53/aS9eF2uL9h7dWZTB+i1M3MoUTSju2q8a2Gsg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":438397},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js","./compat":"./src/compat.js","./domain":"./src/domain.js","./protocol":"./src/protocol.js","./firestore-v2":"./src/firestore-v2.js"},"gitHead":"f0014c2dd1d6c5d17c870a3afeb69143dc15a035","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.17.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.6.13_1788148496470_0.9937288067359873","host":"s3://npm-registry-packages-npm-production"}},"0.6.14":{"name":"@recordtimelabel/core","version":"0.6.14","_id":"@recordtimelabel/core@0.6.14","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"11a4fce3a191da957b8756066317a47116d0e54b","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.6.14.tgz","fileCount":16,"integrity":"sha512-MwFe05kho+bQ8UWtlSRPhhMleU1BuT0MML3j5HcAIbXAPNcuUsMY8TVXueqCSmio4z2vbBKxEfiHur9q6Y0gYQ==","signatures":[{"sig":"MEUCIEMSBShB70YerOTJpDfwpCYjaV41/8l5UlAl8nmOKiPaAiEAtu/9khZxzFJD65eEkV+SGwV0IMqO3w4/Ka/xHWlb45Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":438454},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js","./compat":"./src/compat.js","./domain":"./src/domain.js","./protocol":"./src/protocol.js","./firestore-v2":"./src/firestore-v2.js"},"gitHead":"f0014c2dd1d6c5d17c870a3afeb69143dc15a035","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.17.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.6.14_1788149638956_0.6531282943044123","host":"s3://npm-registry-packages-npm-production"}},"0.6.15":{"name":"@recordtimelabel/core","version":"0.6.15","_id":"@recordtimelabel/core@0.6.15","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"33f0151078674d636e1688e8ae47813de3858b10","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.6.15.tgz","fileCount":16,"integrity":"sha512-7f7Vx8kxnoMmPTfi00aEWIwOVSQkW/CoSBt81IKzqKsgq3i0OtSys9XALZO6NKq5RaM3iEq8A3Ub5DgjV5k5KQ==","signatures":[{"sig":"MEQCIAEUzyDpa9U6Nb32L15kcwzIFS1TfPqj4YOWGZSlHiJwAiBX5vmLQQVyMrTXgfykbIoBgEJpvrFPk3Xd6OD8+yTmhQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":439037},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js","./compat":"./src/compat.js","./domain":"./src/domain.js","./protocol":"./src/protocol.js","./firestore-v2":"./src/firestore-v2.js"},"gitHead":"39a0c70aa1cff29d62cd4bfcd280af4771f6b945","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.17.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.6.15_1788515279519_0.807091366049179","host":"s3://npm-registry-packages-npm-production"}},"0.6.16":{"name":"@recordtimelabel/core","version":"0.6.16","_id":"@recordtimelabel/core@0.6.16","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"a1705ebf9a21ad897ff650624664726342730d58","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.6.16.tgz","fileCount":16,"integrity":"sha512-AAXwGD+qmqkmLuKM30+60FXP5/4BEXZRlP+g3YMs8L8DXAHEqRAlY2gL3191OAA0afaQJvOJKWzQKCgwvDToOA==","signatures":[{"sig":"MEUCIDT2nuHy13ovbfp97Lz67lqoD2ZaEmz7upqY4LoJ54LQAiEArlszMKyqebl656qnUHYNjoxrdHfCZZ1Y89tGDBd4abY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":441608},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js","./compat":"./src/compat.js","./domain":"./src/domain.js","./protocol":"./src/protocol.js","./firestore-v2":"./src/firestore-v2.js"},"gitHead":"d7be0a5d5cd021c0c76a2628e06c88e73167fbee","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.17.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.6.16_1788626224086_0.046184540402441465","host":"s3://npm-registry-packages-npm-production"}},"0.6.17":{"name":"@recordtimelabel/core","version":"0.6.17","_id":"@recordtimelabel/core@0.6.17","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"a449bfe2cc78c52ed2e48edd0e70baf98ab9d613","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.6.17.tgz","fileCount":16,"integrity":"sha512-7rQbJY3128jVBFp2Ud1Avp2f5p2sQEe4xau9aPzBZAw145ZP0IS95134MY5kM1LKFyL7J22CUw1SqrApwKPLvA==","signatures":[{"sig":"MEUCIQD7a2y2ZImUeCGAIr1rxJlXgAC5DK7pGAo59lWSKdwVgwIgfwrLPfEfQUF6CURuTAA4VKniw/t/gu9VK6ANzmaDyVU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":441776},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js","./compat":"./src/compat.js","./domain":"./src/domain.js","./protocol":"./src/protocol.js","./firestore-v2":"./src/firestore-v2.js"},"gitHead":"6c5f799b3e1cc232abbda525015ac97810dbd04e","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.17.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.6.17_1788807980253_0.30123924352344567","host":"s3://npm-registry-packages-npm-production"}},"0.6.18":{"name":"@recordtimelabel/core","version":"0.6.18","_id":"@recordtimelabel/core@0.6.18","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"686d463dd7cd00f74092fe8670559e2843155b5a","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.6.18.tgz","fileCount":16,"integrity":"sha512-xhIbI+OuYhxLUJwVA3+02QS7iRizQ1iqeI7/SASITWojLknFV6pYZFPcBOAnJpT6BqXVMnrK1P5QUwUOQ3c7AA==","signatures":[{"sig":"MEUCIQDOJe5HjlwAA+zJ6cyHJf2ALAR/n3Zr3Uu5Nyu4ctCPQgIgEy0lp2e4hecgfhGz/jDqp3Hn/gw2PPApiRWIPqUgxPw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":443869},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js","./compat":"./src/compat.js","./domain":"./src/domain.js","./protocol":"./src/protocol.js","./firestore-v2":"./src/firestore-v2.js"},"gitHead":"ce6d95b49d1b17ecd6b8eefd7e0ca874942c9fa6","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.17.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.6.18_1789208996403_0.9326504181881925","host":"s3://npm-registry-packages-npm-production"}},"0.6.19":{"name":"@recordtimelabel/core","version":"0.6.19","_id":"@recordtimelabel/core@0.6.19","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"dist":{"shasum":"807f413ff3e15eb35f2cad3652e69dd8f4ac22c9","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.6.19.tgz","fileCount":16,"integrity":"sha512-3ODSeUseL0owwX42YaN98xFM/32x3Exbt1cBgfI5mXPgY0xmOf5gdBpWIr4k14pD5PE7J3JsUgiPPCvC9Klj1Q==","signatures":[{"sig":"MEQCIEylTp43X5CQucklpI/9CnPygeykZm+5pPGDhQPHOZyCAiBMC0hVH01FTviilU1fVTgre+r1BtcxJUkQR/ul+VBnaQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":444215},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js","./compat":"./src/compat.js","./domain":"./src/domain.js","./protocol":"./src/protocol.js","./firestore-v2":"./src/firestore-v2.js"},"gitHead":"ce6d95b49d1b17ecd6b8eefd7e0ca874942c9fa6","scripts":{"test":"node --test tests/*.test.mjs"},"_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.17.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.6.19_1789212222573_0.3023099386130592","host":"s3://npm-registry-packages-npm-production"}},"0.6.20":{"_id":"@recordtimelabel/core@0.6.20","dist":{"shasum":"18d239fb434f334ad1dc4db7e7887725e9806599","tarball":"https://registry.npmjs.org/@recordtimelabel/core/-/core-0.6.20.tgz","fileCount":16,"integrity":"sha512-KB53bdaqq5K80wYdxzj97x3BlSibISyQuTYqufBB0BboLD2pvpMvbbxRVaSp4HfMN4HpEdQPKSk/d+Z2h/dsxA==","signatures":[{"sig":"MEYCIQCKDmORgbZ3secUbgVvOiutoCJdHmloDg22vQBEiecuwAIhAJdhA9cI0EMjRynPA2XodEDvfr0lHlvBBF9q7l/EAjWg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCwPBQ9ubm7Ygvm1wHffy237N1Y6Acy21ZOvtWXT/DVcwIgVmDPzYuT8MLjfw+sBVWyrWcsn992ivFR0c9sqlrdp94="}],"unpackedSize":447173},"main":"./src/index.js","name":"@recordtimelabel/core","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js","./compat":"./src/compat.js","./domain":"./src/domain.js","./protocol":"./src/protocol.js","./firestore-v2":"./src/firestore-v2.js"},"gitHead":"ce6d95b49d1b17ecd6b8eefd7e0ca874942c9fa6","scripts":{"test":"node --test tests/*.test.mjs"},"version":"0.6.20","_npmUser":{"name":"jason73921","email":"sunnoon00@gmail.com"},"_npmVersion":"11.17.0","description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","directories":{},"maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/core_0.6.20_1789792000165_0.5777961848071875"}}},"time":{"created":"2026-05-31T15:52:23.186Z","modified":"2026-09-19T04:26:40.483Z","0.1.0":"2026-05-31T15:52:23.432Z","0.1.1":"2026-06-01T13:23:06.092Z","0.1.2":"2026-06-06T03:11:25.156Z","0.1.3":"2026-06-07T03:09:08.685Z","0.1.4":"2026-06-07T03:44:15.151Z","0.1.5":"2026-06-07T11:07:01.530Z","0.1.7":"2026-06-07T13:57:58.050Z","0.1.8":"2026-07-02T09:48:31.421Z","0.1.9":"2026-07-21T12:20:18.285Z","0.1.10":"2026-07-21T13:34:43.907Z","0.2.0":"2026-07-22T03:59:00.676Z","0.2.1":"2026-07-22T09:04:34.490Z","0.3.0":"2026-07-25T15:46:44.770Z","0.3.1":"2026-07-26T09:10:13.876Z","0.3.2":"2026-07-26T09:52:19.652Z","0.3.3":"2026-07-27T15:13:33.278Z","0.4.0":"2026-08-05T02:55:20.668Z","0.4.1":"2026-08-05T12:18:07.101Z","0.4.2":"2026-08-06T11:39:51.835Z","0.4.3":"2026-08-09T04:46:12.793Z","0.4.4":"2026-08-09T08:39:52.968Z","0.4.5":"2026-08-10T09:46:38.338Z","0.4.6":"2026-08-12T12:15:29.739Z","0.4.7":"2026-08-13T05:45:23.382Z","0.5.0":"2026-08-13T11:11:21.260Z","0.6.0":"2026-08-13T11:54:48.081Z","0.6.1":"2026-08-13T13:21:12.560Z","0.6.2":"2026-08-15T08:58:45.026Z","0.6.4":"2026-08-16T13:43:08.433Z","0.6.5":"2026-08-20T02:28:28.535Z","0.6.6":"2026-08-20T05:22:01.517Z","0.6.7":"2026-08-20T06:14:14.185Z","0.6.8":"2026-08-22T07:40:34.952Z","0.6.9":"2026-08-23T01:48:46.218Z","0.6.10":"2026-08-23T10:08:48.085Z","0.6.11":"2026-08-28T13:49:46.335Z","0.6.12":"2026-08-30T17:37:12.827Z","0.6.13":"2026-08-31T03:54:56.630Z","0.6.14":"2026-08-31T04:13:59.122Z","0.6.15":"2026-09-04T09:47:59.651Z","0.6.16":"2026-09-05T16:37:04.218Z","0.6.17":"2026-09-07T19:06:20.402Z","0.6.18":"2026-09-12T10:29:56.577Z","0.6.19":"2026-09-12T11:23:42.707Z","0.6.20":"2026-09-19T04:26:40.286Z"},"description":"Shared RecordTimeLabel data model, merge logic, operations, and sync engine.","maintainers":[{"name":"jason73921","email":"sunnoon00@gmail.com"}],"readme":"# @recordtimelabel/core\n\nShared RecordTimeLabel data model, normalization, merge logic, operation reducer, and sync engine.\n\n## Scope\n\nThis package is intentionally platform-neutral. It must not import React, Firebase, Chrome extension APIs, Electron APIs, or app-specific UI code.\n\nCurrent consumers:\n\n- `D:\\Programming\\RecordTimeLabel`\n- `D:\\Programming\\YouTwitchDownloader`\n\nDuring local development an app can consume a sibling checkout with:\n\n```json\n\"@recordtimelabel/core\": \"file:../recordtimelabel-core\"\n```\n\nFor release builds, consume a fixed npm package, git tag, or private registry version so builds do not depend on a sibling folder path. The release target is `0.6.20`; verify that its registry tarball and lockfile integrity are available before updating consumers:\n\n```json\n\"@recordtimelabel/core\": \"0.6.20\"\n```\n\nIf this checkout's `package.json` is ahead of the published version, publish the new package before updating consumers to that version.\n\nOrdinary cold sync uses bounded operations and per-operation acknowledgements; it never promotes pending work to a snapshot replacement.\n\n## Public API\n\n- `normalizeState(input)`\n- `normalizeRecords(records, options)`\n- `mergeLocalRemote({ localState, remoteState, pendingOps, clientId, now })`\n- `applyOperation(state, operation)`\n- `applyRecordTimeLabelOperation(state, operation)`\n- `createRecordTimeLabelSyncEngine({ storage, cloud, session, client, clock, logger })`\n- `RTL_MAX_SYNC_DRAIN_ROUNDS`\n- `RTL_SYNC_DRAIN_RETRY_DELAY_MS`\n- `RECORD_TIMELABEL_DURABLE_ENGINE_CAPABILITIES`\n- `RECORD_TIMELABEL_CAPABILITY_CLOUD_FAILURE_STATE`\n- `RECORD_TIMELABEL_CLOUD_FAILURE_CLASSES`\n- `RECORD_TIMELABEL_CLOUD_RECOVERY_ACTIONS`\n- `normalizeRecordTimeLabelCloudFailure(input)`\n- `classifyRecordTimeLabelCloudRecovery(input)`\n- `toRecordTimeLabelCloudFailureError(input)`\n- `RECORD_TIMELABEL_PROTOCOL_CAPABILITIES`\n- `toRecordTimeLabelWireOperation(operation)`\n- `buildRecordTimeLabelRequestId(namespace, operations)`\n- `createRecordTimeLabelTransportFailureResults(operations, failure, options)`\n- `normalizeRecordTimeLabelOperationResults(operations, results, options)`\n- `normalizeRecordTimeLabelEnvelopeResponse(operations, response, options)`\n- `createSyncEngine({ storageAdapter, cloudAdapter, clientId, clock, logger })`\n- `createRecordTimeLabelController({ storageAdapter, cloudAdapter, clientId, settingKeys, clock, logger })`\n- `buildRecordTimeLabelSyncPayload({ data, previousCloudData, pendingOps, syncMode, clientId, now, groupOrderNormalizer })`\n- `buildSyncPayloadWithOperations({ data, previousCloudData, pendingOps, syncMode, clientId, now, groupOrderNormalizer })`\n- `flushPendingOperations({ operations, storageAdapter, cloudAdapter, clientId, now })`\n- `mergeRemoteStateIntoLocal({ localData, remoteData, pendingOps, settingKeys, clientId, now })`\n- `buildLocalStateFromStorage(data, options)`\n- `buildStoragePatchFromState(state, options)`\n- `buildFirestoreV1UserPatch(state, options)`\n- `buildFirestoreV2LogicalPaths(userId)`\n- `buildFirestoreV2DocumentsFromState(state, options)`\n- `buildFirestoreV2DocumentChangeSet(previousDocuments, nextDocuments, options)`\n- `buildStateFromFirestoreV2Documents(documents, options)`\n- `validateRecordTimeLabelOperationBatch(body)`\n- `buildFirestoreV2OperationReadPlan(operations)`\n- `extendFirestoreV2OperationReadPlanWithRecords(readPlan, records)`\n- `extendFirestoreV2OperationReadPlanWithTrash(readPlan, trashEntries)`\n- `planFirestoreV2OperationChanges({ documents, operations, localState, now, requireLifecycleGeneration })`\n- `estimateFirestoreV2WriteUnits(changes, overhead)`\n- `buildOperationsFromSnapshotDiff({ previousState, nextState, now, operationIdPrefix, batchSize })`（一般操作在 `batches`，`folder.delete` 在 `bulkOperations`）\n- `RTL_SYNC_PROTOCOL_VERSION`\n- `hasMeaningfulRecordTimeLabelCloudState(data, options)`\n- `buildRecordTimeLabelContentFingerprint(data)`\n- `normalizeRecordTimeLabelDomainState(input)`\n- `migrateRecordTimeLabelExpandedGroups({ pendingOperations, currentView })`\n- `buildMigratedRecordTimeLabelV2State(legacyState, options)`\n- `RECORD_TIMELABEL_CLOUD_SCHEMAS`\n- `RECORD_TIMELABEL_SYNC_MODES`\n- `createOperation(type, payload, options)`\n- `OPERATION_TYPES`\n- `getActiveTrashEntries(entries, now)`\n- `RTL_TRASH_RETENTION_MS`\n- `buildFirestoreV2SnapshotRoot({ currentRoot, incomingRoot, mode })`\n- `applyRecordTimeLabelSnapshot(currentState, incomingState, mode)`\n- `composeRecordTimeLabelHydratedState({ remote, pendingOps, importJobs, localNavigation })`\n- `applyFirestoreV2ResolvedChangeBatch({ cache, changes, resolvedDocuments, targetRevision })`\n- `FIRESTORE_V2_BOOTSTRAP_REASONS`\n\nThe package exports five intentional entrypoints. The root (`@recordtimelabel/core`)\nkeeps the complete backwards-compatible surface, `/protocol` contains only shared\nacknowledgement protocol helpers, `/firestore-v2` contains platform-neutral document\nand operation planners, `/domain` contains group identity, Twitch VOD matching,\nlegacy import, and channel-folder planning, and `/compat` contains the legacy\n`createSyncEngine` and `createRecordTimeLabelController` APIs.\n\n`RECORD_TIMELABEL_DOMAIN_CAPABILITIES` is a local release contract. It is not a\ngateway protocol capability.\n\n### Durable sync engine\n\n`createRecordTimeLabelSyncEngine` is the platform-neutral durable workspace API. Its storage port\nhas `load()` and `save(workspace)` methods (adapters may consume the optional second\n`save(workspace, fenceContext)` argument to enforce the session/epoch atomically), and its cloud port has `bootstrap(context, attemptOptions)`,\n`applyOperations(envelope, context)`, and `subscribe(listener, context)` methods. The session port\nprovides `current()`, `subscribe(listener)`, and `isCurrent(sessionToken, uid, workspaceEpoch)`.\n`sessionToken` is an opaque fence for equality only. Core never aliases `current.id` or\nthe whole session object as an authorization token, and `bootstrap`/`catchUp`/`apply`\ncontext no longer carries `token`. Platform adapters obtain Firebase credentials from\ntheir own credential provider.\n\n`normalizeRecordTimeLabelCloudFailure` preserves `status`, `reason`, `code`,\n`message`, `retryable`, and `retryAfterMs`, and assigns exactly one class:\n`transient`, `bootstrap-required`, `auth-transition-required`, `terminal`, or\n`stale-session`. Classification uses only an explicit class, HTTP status,\n`retryable`, `bootstrapRequired`, and other platform-neutral fields. Adapters\nmay keep a Firebase reason string, but Core does not interpret Firebase or JWT\ntaxonomies. `{error: \"reason\"}` keeps that string as `reason`, `code`, and\n`message`. Capability `cloud-failure-state-v1` is part of\n`RECORD_TIMELABEL_PROTOCOL_CAPABILITIES`; clients must not invent that string.\nAn `auth-transition-required` bootstrap or catch-up failure latches the captured\nsession identity (`sessionToken` + UID + workspace epoch) so repeated `init()`\ncalls do not invoke `cloud.bootstrap` again. A changed SessionPort identity,\nUID, or workspace epoch clears the latch. An ID token refresh that keeps the\nsame `sessionToken` must not change session identity or current work.\n`recoverBaseline` falls back from catch-up only for explicit\n`bootstrap-required` / cursor-gap outcomes; auth and transient failures keep\ntheir class and must not start a second full walk.\n\nThe persisted workspace is versioned and contains only durable data:\n\n```js\n{\n  schemaVersion: 1,\n  ownerUid: 'user-id',\n  workspaceEpoch: 3,\n  remoteBaseline: { state, revision: 12, changeCursor: 'cursor-12' },\n  pendingOperations: [],\n  rejectedOperations: {},\n  syncMeta: {\n    // Core-owned resume fence; the cursor itself remains opaque adapter data.\n    changeCursorBinding: {\n      ownerUid: 'user-id', uid: 'user-id', workspaceEpoch: 3,\n      authSessionBinding: 'auth-session-3'\n    }\n  }\n}\n```\n\n`remoteBaseline.changeCursor` is an opaque string owned by the cloud adapter and\nmust remain byte-for-byte stable across persistence. Core stores the owner,\nworkspace-epoch, and non-credential auth binding separately in\n`syncMeta.changeCursorBinding` so a committed workspace can be resumed without\nembedding session credentials in the cursor.\n\nEvery normalized pending operation also carries `ownerUid` and a non-negative\n`workspaceEpoch`. Dispatch stamps these fields from the captured session; legacy\noperations missing them inherit the migrated workspace identity. An operation whose\nexplicit identity does not match the current workspace is moved to\n`rejectedOperations` with a stable identity-mismatch reason before any cloud apply.\n\nPending operations also carry an internal `syncBatchId`. Operations dispatched in\none call share a batch boundary, while legacy pending operations are assigned one\nstable boundary during migration. The engine sends only the first FIFO batch boundary,\ncapped at 20 operations, and derives a stable request ID from that boundary and the\nordered canonical wire operations. Durable retry metadata does not affect request identity,\nwhile reusing an operation ID with different wire content is quarantined. A bounded history\nof completed operation fingerprints is kept in `syncMeta`; `syncBatchId`, identity fences,\nand retry scheduling fields stay outside canonical wire operations.\n\nBootstrap attempts use `initial-hydration`, `rejection-rebase`, or `gap-recovery`\nmodes with a unique `attemptId`; all require a fresh logical attempt. Structured\nfailures, missing state, and missing/invalid revisions fail closed. UID or workspace\nepoch changes clear the visible workspace and require `init()` before another dispatch\nor sync; token refresh for the same UID/epoch only refreshes the subscription fence. An\noperation acknowledgement records its revision diagnostically and advances\n`remoteBaseline.revision` with a complete state, or with an all-applied no-state ACK at\nexactly the next revision; larger revision gaps trigger a fresh bootstrap. Re-dispatching\nthe same operation ID and wire content is reported as deduplicated, while different wire\ncontent is quarantined as an ID conflict. Rejected entries are terminal diagnostics in this\nAPI; an intentional retry currently requires a new operation ID.\n\nThe engine exposes `init()`, `dispatch(operations)`, `sync(reason)`,\n`syncUntilIdle(reason, options)`, `waitForIdle()`, `waitForRemoteReady()`, `getSnapshot()`,\n`subscribe(listener)`, and `destroy()`. A cloud `subscribe(listener, context)` disposer may\ncarry a `.ready` promise. After `init()` settles, hosts can await `waitForRemoteReady()` to\nprove that the current subscription's initial root observation and any bounded catch-up have\nsettled; this wait rejects when the listener fails before readiness and fails closed across a\nsession generation change or destroy. `init()` deliberately does not await this promise because\nthe initial listener callback may itself enter the engine queue. Anonymous/no-subscription use\nis immediately ready.\n\n`sync()` preserves the one-FIFO-batch boundary. `syncUntilIdle()` drains\nsubsequent batches up to `RTL_MAX_SYNC_DRAIN_ROUNDS`; it stops on retry/deferred/protocol\nconditions and reports `syncDrainLimitReached` as a retryable failure instead of silently\nreporting success. Hosts may provide `beforeRound({round, pendingCount, snapshot})` to block\ngateway writes while a host-specific hydration/import gate is active, and `runRound({round,\npendingCount, run})` to serialize that gate check and the gateway call with host mutations.\n`getSnapshot().state` is derived by replaying pending operations over `remoteBaseline.state`;\nrejected operations are kept in diagnostics and are not replayed. Session tokens are used for\nfencing but are never persisted. The legacy\n`createSyncEngine` and app adapters remain available and are not implicitly migrated by this API.\n\n`expandedGroups` is a local view projection, not durable cloud domain state. Durable workspaces,\ncontent fingerprints, and Firestore v2 root documents exclude it. The migration helper consumes\nlegacy `expandedGroups.update` operations in order, returns the resulting view projection, and is\nidempotent; legacy root fields are preserved verbatim when a compatibility document is rewritten\nso older clients can continue reading the view until they migrate.\n\n### Operation-result protocol\n\nThe root package and `@recordtimelabel/core/protocol` export the shared acknowledgement\nnormalizers. `normalizeRecordTimeLabelOperationResults(operations, results)` verifies count,\nrequest membership, unique IDs, and completeness before returning results in request order.\nThe only normalized statuses are `applied`, `noop`,\n`rejected`, and `retryable`; `retryable` is derived from that status, while the legacy `id` and\n`applied` fields remain available alongside `operationId`, `reason`, and `retryAfterMs`.\n\n`normalizeRecordTimeLabelEnvelopeResponse(operations, response)` requires an explicit\n`operationResults` array by default. Malformed, duplicate, missing, unknown, or ambiguous IDs\nthrow stable protocol errors so callers can reject the entire acknowledgement before changing\ndurable state.\n\nGateway-only compatibility code may opt into successful legacy envelopes with\n`{allowLegacySuccessWithoutResults: true}`. New durable clients never enable that fallback.\nCapabilities `operation-conflict-quarantine`, `strict-operation-results`, and\n`lifecycle-generation-fence` gate the corresponding 0.4.4 behavior. Single\n`record.restore`, `folder.restore`, and `trash.purge` operations require a positive\n`expectedGeneration`; batch lifecycle operations retain their existing contract. The gateway\nvalidator derives enforcement from `client.capabilities`. The planner is strict by default;\nthe time-limited legacy gateway path must explicitly pass `requireLifecycleGeneration: false`\nfor clients that did not declare the capability. A supplied but stale generation is always rejected.\n\n## Firestore v1 Compatibility\n\nPhase 1 keeps the existing `users/{uid}` document shape:\n\n- `folders`\n- `records`\n- `groupOrder`\n- `folderOrder`\n- `expandedGroups`\n- `settings`\n\nThe core also normalizes and preserves these compatibility metadata fields:\n\n- `rtlSyncMeta`\n- `deletedRecordTombstones`\n- `deletedFolderTombstones`\n- `trashEntries`\n\nDeletion must be represented by tombstones or operations. Do not reintroduce the old heuristic that treats \"local exists but cloud missing for more than five minutes\" as deletion.\n\n`mergeLocalRemote` resolves deletions by `lifecycleGeneration`, in both directions: a tombstone or\ntrash entry is dropped when either side carries that entity as active and newer, and restore\noperations are what bump the generation. When generations tie — an active copy written outside the\ndelete/restore path — the active copy's own timestamp breaks the tie against `deletedAt`. A stale\nsnapshot on either side therefore cannot re-delete an entity that was already restored.\n\nConsumers must not reimplement this reconciliation in an app-level wrapper. In particular, never\nclear a local tombstone just because the remote snapshot still carries the entity as active: that\nis presence-based inference, the same anti-pattern as the five-minute heuristic above, and it is not\norder-independent, so two clients using different rules will not converge on shared cloud data.\n\n## Firestore v2 Gateway Contract\n\nThe package exposes platform-neutral v2 document helpers so app adapters can share the same record/folder/settings/ops shape before wiring Firebase SDK or REST calls:\n\n- root document `users/{uid}/recordTimeLabel/main`: settings, order arrays, tombstones, and sync metadata\n- `users/{uid}/recordTimeLabel/main/records/{recordId}`: flattened per-record documents with `folderId`\n- `users/{uid}/recordTimeLabel/main/folders/{folderId}`: per-folder documents\n- `users/{uid}/recordTimeLabel/main/trash/{trashEntryId}`: 30-day record/folder snapshots\n- `users/{uid}/recordTimeLabel/main/lifecycleTombstones/{id}`: content-free anti-revival markers\n- `users/{uid}/recordTimeLabel/main/ops/{opId}`: pending operation documents\n\nThe v2 validator, bounded read planner, pure mutation planner, cost estimator, and snapshot-diff batch builder are also platform-neutral. They do not import Firebase and do not perform network writes. Functions and clients must use this package instead of maintaining app-specific planner copies.\n\n## Test\n\n```bash\nnpm test\n```\n","readmeFilename":"README.md"}