{"_id":"@bernierllc/content-autosave-manager","_rev":"11-b99f8748d2ad53f45fb9a3aa2da89372","name":"@bernierllc/content-autosave-manager","dist-tags":{"latest":"1.6.0"},"versions":{"1.0.0":{"name":"@bernierllc/content-autosave-manager","version":"1.0.0","keywords":["autosave","debouncing","retry","conflict-detection","content-management","version-tracking"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/content-autosave-manager@1.0.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/BernierLLC/tools/tree/main/packages/core/content-autosave-manager#readme","bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"dist":{"shasum":"daf83c4e2d068817c9f16aa5d0b5f532a2d489ad","tarball":"https://registry.npmjs.org/@bernierllc/content-autosave-manager/-/content-autosave-manager-1.0.0.tgz","fileCount":26,"integrity":"sha512-a31pLkaolRIjPHpF01YsAD20Ruu90g9opo57wjdXhYgzuBqL+yzzl/Db7xm+UYIZyIAvYN2ZO0s+wP3MWiGUcQ==","signatures":[{"sig":"MEUCIQDPv8IiIirZIQPdRIKGPH0BYwm4bxqMtQ/3XlQg0L9fFwIgVAfRyHc503EaahJh/l/IrLvQrDCbgpQ+wiAMUKP1Kr8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123686},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"e36471225e21fdcaddf9a54aaedaf6346ee0078c","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"bernierllc":{"integration":{"logger":"planned","neverhub":"optional","neveradmin":"not-applicable"}},"repository":{"url":"git+https://github.com/BernierLLC/tools.git","type":"git","directory":"packages/core/content-autosave-manager"},"_npmVersion":"11.6.0","description":"Automatic content saving with debouncing, retry logic, and conflict detection","directories":{},"_nodeVersion":"24.10.0","dependencies":{"@bernierllc/backoff-retry":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/content-autosave-manager_1.0.0_1762140712820_0.0883357262919422","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@bernierllc/content-autosave-manager","version":"1.0.1","keywords":["autosave","debouncing","retry","conflict-detection","content-management","version-tracking"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/content-autosave-manager@1.0.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/BernierLLC/tools/tree/main/packages/core/content-autosave-manager#readme","bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"dist":{"shasum":"4e0b18b10f33755f7882d70e1897aabb9bebb5ca","tarball":"https://registry.npmjs.org/@bernierllc/content-autosave-manager/-/content-autosave-manager-1.0.1.tgz","fileCount":10,"integrity":"sha512-6/ljfd2m6tXCIu2Sftiup6fQiot2Tj56K3eKeEj4wkB1d/Txs8Zlv7TGzzzFUlhwWC3LZhlXf/Rmc1KIuZ+Rqg==","signatures":[{"sig":"MEYCIQCUkQe9170ktJTOLE93NaUqUlKNW+5VfgHfpsOC7cXJEAIhALIhZqv/3tVNX5u0Ex4aidTzOBGEesjd4b7z+zDZ9ker","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28739},"main":"dist/index.js","_from":"file:bernierllc-content-autosave-manager-1.0.1.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"_resolved":"/private/var/folders/r0/wspnzd1s18sfjy10ffyv2qxw0000gn/T/382244951a697b944f03d3a16056bad9/bernierllc-content-autosave-manager-1.0.1.tgz","_integrity":"sha512-6/ljfd2m6tXCIu2Sftiup6fQiot2Tj56K3eKeEj4wkB1d/Txs8Zlv7TGzzzFUlhwWC3LZhlXf/Rmc1KIuZ+Rqg==","bernierllc":{"integration":{"logger":"planned","neverhub":"optional","neveradmin":"not-applicable"}},"repository":{"url":"git+https://github.com/BernierLLC/tools.git","type":"git","directory":"packages/core/content-autosave-manager"},"_npmVersion":"11.6.0","description":"Automatic content saving with debouncing, retry logic, and conflict detection","directories":{},"_nodeVersion":"24.10.0","dependencies":{"@bernierllc/backoff-retry":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/content-autosave-manager_1.0.1_1762306857318_0.9405986655964378","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@bernierllc/content-autosave-manager","version":"1.2.0","keywords":["autosave","debouncing","retry","conflict-detection","content-management","version-tracking"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/content-autosave-manager@1.2.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/BernierLLC/tools/tree/main/packages/core/content-autosave-manager#readme","bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"dist":{"shasum":"91dd918703acd1fdf088d1fa293cdbf60a40e215","tarball":"https://registry.npmjs.org/@bernierllc/content-autosave-manager/-/content-autosave-manager-1.2.0.tgz","fileCount":10,"integrity":"sha512-lYJZ8WHQl5j+hfBdoFWCMB0PiKyZd+PaN3WT3amEIvqwJv2os3nDb6PMvQ+ZzrDhJXqBeI4DT76Cd3VXxv88Ow==","signatures":[{"sig":"MEYCIQCm54adQbQOB2sxaLTnL+BovBg0n63p0ZVVTrUBPeXglQIhAIYR46RroPeP6qVe5elElHWmJ8uLPvGfLuvMPLnvHm9l","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28843},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"af7e74b3715d56d3a193e1bb6743b337c2b0df6d","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2b618875-1326-489e-ab8e-ca9c867eb9f0"}},"bernierllc":{"integration":{"logger":"planned","neverhub":"optional","neveradmin":"not-applicable"}},"repository":{"url":"git+https://github.com/BernierLLC/tools.git","type":"git","directory":"packages/core/content-autosave-manager"},"_npmVersion":"lerna/9.0.3/node@v20.19.6+x64 (linux)","description":"Automatic content saving with debouncing, retry logic, and conflict detection","directories":{},"_nodeVersion":"20.19.6","dependencies":{"@bernierllc/backoff-retry":"0.5.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/content-autosave-manager_1.2.0_1767642460283_0.3014156665325156","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@bernierllc/content-autosave-manager","version":"1.2.1","keywords":["autosave","debouncing","retry","conflict-detection","content-management","version-tracking"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/content-autosave-manager@1.2.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/BernierLLC/tools/tree/main/packages/core/content-autosave-manager#readme","bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"dist":{"shasum":"9275f815910bda10489c6e4e5dff0513a9afb07a","tarball":"https://registry.npmjs.org/@bernierllc/content-autosave-manager/-/content-autosave-manager-1.2.1.tgz","fileCount":10,"integrity":"sha512-MmNg6FXeBkH4GqBALpcyiTIIXimVlqkvdznqnmntHvpErqnm98B654I2c1SduhnqtewiX5R0YMm5+htXYJ5tWw==","signatures":[{"sig":"MEUCIQDCGiFF+kBIaRpoi+HcRKniHSUINVkjhYsJQGdhTMjF8AIgQ92oWIc7mDWTDE9LLSIWf099ZAgWXv34HdzOWLYltGI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28785},"main":"dist/index.js","_from":"file:bernierllc-content-autosave-manager-1.2.1.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2b618875-1326-489e-ab8e-ca9c867eb9f0"}},"_resolved":"/tmp/14438e836137fe54edce86b75c0b3481/bernierllc-content-autosave-manager-1.2.1.tgz","_integrity":"sha512-MmNg6FXeBkH4GqBALpcyiTIIXimVlqkvdznqnmntHvpErqnm98B654I2c1SduhnqtewiX5R0YMm5+htXYJ5tWw==","bernierllc":{"integration":{"logger":"planned","neverhub":"optional","neveradmin":"not-applicable"}},"repository":{"url":"git+https://github.com/BernierLLC/tools.git","type":"git","directory":"packages/core/content-autosave-manager"},"_npmVersion":"11.11.0","description":"Automatic content saving with debouncing, retry logic, and conflict detection","directories":{},"_nodeVersion":"20.20.0","dependencies":{"@bernierllc/backoff-retry":"0.5.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/content-autosave-manager_1.2.1_1773078371654_0.06287935596499672","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@bernierllc/content-autosave-manager","version":"1.2.2","keywords":["autosave","debouncing","retry","conflict-detection","content-management","version-tracking"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/content-autosave-manager@1.2.2","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/BernierLLC/tools/tree/main/packages/core/content-autosave-manager#readme","bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"dist":{"shasum":"6a4446264cae78c7c5c5f8f53389ccb09f7008a3","tarball":"https://registry.npmjs.org/@bernierllc/content-autosave-manager/-/content-autosave-manager-1.2.2.tgz","fileCount":10,"integrity":"sha512-qkwUtWTTKrdPEvPcXeoCuVAn58vCe5217/r7CEsoUq0CYpR2NuXWLFu6pgagEyE5jKHaNMOGd+iMe9K4/wDagQ==","signatures":[{"sig":"MEQCIDPDvnhNJhTVPu4wvGrtsyAvIgHo+UbTlJMhROLlbsD/AiALLkZRBEwAv+xLZZigy10dOzJ0JFRd7uXG7O3rC3cHnw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28785},"main":"dist/index.js","_from":"file:bernierllc-content-autosave-manager-1.2.2.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2b618875-1326-489e-ab8e-ca9c867eb9f0"}},"_resolved":"/home/runner/work/tools/tools/packages/core/content-autosave-manager/bernierllc-content-autosave-manager-1.2.2.tgz","_integrity":"sha512-qkwUtWTTKrdPEvPcXeoCuVAn58vCe5217/r7CEsoUq0CYpR2NuXWLFu6pgagEyE5jKHaNMOGd+iMe9K4/wDagQ==","bernierllc":{"integration":{"logger":"planned","neverhub":"optional","neveradmin":"not-applicable"}},"repository":{"url":"git+https://github.com/BernierLLC/tools.git","type":"git","directory":"packages/core/content-autosave-manager"},"_npmVersion":"11.11.0","description":"Automatic content saving with debouncing, retry logic, and conflict detection","directories":{},"_nodeVersion":"20.20.0","dependencies":{"@bernierllc/backoff-retry":"0.5.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/content-autosave-manager_1.2.2_1773163049733_0.3444874383177665","host":"s3://npm-registry-packages-npm-production"}},"1.2.3":{"name":"@bernierllc/content-autosave-manager","version":"1.2.3","keywords":["autosave","debouncing","retry","conflict-detection","content-management","version-tracking"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/content-autosave-manager@1.2.3","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/BernierLLC/tools/tree/main/packages/core/content-autosave-manager#readme","bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"dist":{"shasum":"042004bdb0f68e229057348a902a22bbdc674e1c","tarball":"https://registry.npmjs.org/@bernierllc/content-autosave-manager/-/content-autosave-manager-1.2.3.tgz","fileCount":10,"integrity":"sha512-ewG4n4PEjt57VDfcksr130K77gIr8HzBN6N4R4Iy80E3bZQszaq0A/q4TBPKfx/8lUJawsuPuJ0gWxAlT33MFg==","signatures":[{"sig":"MEYCIQCK2nNGUCWc4pB1aQeSsLSfAIiFSkaUawn6aJ9H/7NQ/QIhAPLBUxY4aSlm2m/MkNCub1Ln7ESLU3RhHenhqqt6JAq/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28785},"main":"dist/index.js","_from":"file:bernierllc-content-autosave-manager-1.2.3.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2b618875-1326-489e-ab8e-ca9c867eb9f0"}},"_resolved":"/home/runner/work/tools/tools/packages/core/content-autosave-manager/bernierllc-content-autosave-manager-1.2.3.tgz","_integrity":"sha512-ewG4n4PEjt57VDfcksr130K77gIr8HzBN6N4R4Iy80E3bZQszaq0A/q4TBPKfx/8lUJawsuPuJ0gWxAlT33MFg==","bernierllc":{"integration":{"logger":"planned","neverhub":"optional","neveradmin":"not-applicable"}},"repository":{"url":"git+https://github.com/BernierLLC/tools.git","type":"git","directory":"packages/core/content-autosave-manager"},"_npmVersion":"11.14.1","description":"Automatic content saving with debouncing, retry logic, and conflict detection","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/backoff-retry":"0.5.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/content-autosave-manager_1.2.3_1779133367504_0.12565876895748174","host":"s3://npm-registry-packages-npm-production"}},"1.2.4":{"name":"@bernierllc/content-autosave-manager","version":"1.2.4","keywords":["autosave","debouncing","retry","conflict-detection","content-management","version-tracking"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/content-autosave-manager@1.2.4","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/BernierLLC/tools/tree/main/packages/core/content-autosave-manager#readme","bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"dist":{"shasum":"a444d44baa4ac68f7cc20e227e10c3c762cffc27","tarball":"https://registry.npmjs.org/@bernierllc/content-autosave-manager/-/content-autosave-manager-1.2.4.tgz","fileCount":10,"integrity":"sha512-xhY9ILHxBE2yG5DEVZVxDcDGluYuqPu531x07H0oA57z/KZbBHdRcZ3AG6EKxjUqjtmA8VdIozrh68ZYTJXjwA==","signatures":[{"sig":"MEYCIQCdMP82/0Di85uoy5ctgyPLrkirmvxQQEHfX8yst2bJ2AIhAP1Arhhe12TBP2GI1f1sWwi7R6sVkTB1/Ph+d7lJLVw4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28785},"main":"dist/index.js","_from":"file:bernierllc-content-autosave-manager-1.2.4.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2b618875-1326-489e-ab8e-ca9c867eb9f0"}},"_resolved":"/home/runner/work/tools/tools/packages/core/content-autosave-manager/bernierllc-content-autosave-manager-1.2.4.tgz","_integrity":"sha512-xhY9ILHxBE2yG5DEVZVxDcDGluYuqPu531x07H0oA57z/KZbBHdRcZ3AG6EKxjUqjtmA8VdIozrh68ZYTJXjwA==","bernierllc":{"integration":{"logger":"planned","neverhub":"optional","neveradmin":"not-applicable"}},"repository":{"url":"git+https://github.com/BernierLLC/tools.git","type":"git","directory":"packages/core/content-autosave-manager"},"_npmVersion":"11.14.1","description":"Automatic content saving with debouncing, retry logic, and conflict detection","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/backoff-retry":"0.5.4"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/content-autosave-manager_1.2.4_1779157122402_0.5764479006864767","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@bernierllc/content-autosave-manager","version":"1.4.0","keywords":["autosave","debouncing","retry","conflict-detection","content-management","version-tracking"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/content-autosave-manager@1.4.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/BernierLLC/tools/tree/main/packages/core/content-autosave-manager#readme","bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"dist":{"shasum":"ee2225b6d540048ac55c3565cbd96d027ced8b7a","tarball":"https://registry.npmjs.org/@bernierllc/content-autosave-manager/-/content-autosave-manager-1.4.0.tgz","fileCount":12,"integrity":"sha512-J9rcQAMneHFqa7I4CNlXyk9QTy2mZk0O1Mu5O7Tq3MZrutzWbHcI1PklYY3yo4T286yzM4lVYNlg3cSGW9S4Fw==","signatures":[{"sig":"MEYCIQCU7k7eTKOtzcYk/EqjNT/SlH5T6v4jc//QKrQmkgm2gAIhAMdo5vicm2KH3QZ3G3jvE51ltCf8vOeVUmNlF2YbweuU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30852},"main":"dist/index.js","_from":"file:bernierllc-content-autosave-manager-1.4.0.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2b618875-1326-489e-ab8e-ca9c867eb9f0"}},"_resolved":"/home/runner/work/tools/tools/packages/core/content-autosave-manager/bernierllc-content-autosave-manager-1.4.0.tgz","_integrity":"sha512-J9rcQAMneHFqa7I4CNlXyk9QTy2mZk0O1Mu5O7Tq3MZrutzWbHcI1PklYY3yo4T286yzM4lVYNlg3cSGW9S4Fw==","bernierllc":{"integration":{"logger":"planned","neverhub":"optional","neveradmin":"not-applicable"}},"repository":{"url":"git+https://github.com/BernierLLC/tools.git","type":"git","directory":"packages/core/content-autosave-manager"},"_npmVersion":"11.14.1","description":"Automatic content saving with debouncing, retry logic, and conflict detection","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/backoff-retry":"0.7.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/content-autosave-manager_1.4.0_1779233858463_0.896944116105109","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@bernierllc/content-autosave-manager","version":"1.5.0","keywords":["autosave","debouncing","retry","conflict-detection","content-management","version-tracking"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/content-autosave-manager@1.5.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/BernierLLC/tools/tree/main/packages/core/content-autosave-manager#readme","bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"dist":{"shasum":"bd0a82100a226a59d7903b24a8ab8993c9a9e85e","tarball":"https://registry.npmjs.org/@bernierllc/content-autosave-manager/-/content-autosave-manager-1.5.0.tgz","fileCount":12,"integrity":"sha512-1IJs4UaK3IkQFPab6ZCVf9UUzr3gXHXvctYFr0mApyVtiIvYkxEnUxoY3oYqDn2U2Q2LMwUKEU+u22pEyAoSUg==","signatures":[{"sig":"MEUCIF6u2Wwq2N+nQsQ2+BP/ARQR0Qd5GH5oTfxmij2hrwHBAiEA4EdftLTnReKpUeS830JgW972MQrmI5cYqOV/XNof2x0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30852},"main":"dist/index.js","_from":"file:bernierllc-content-autosave-manager-1.5.0.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2b618875-1326-489e-ab8e-ca9c867eb9f0"}},"_resolved":"/home/runner/work/tools/tools/packages/core/content-autosave-manager/bernierllc-content-autosave-manager-1.5.0.tgz","_integrity":"sha512-1IJs4UaK3IkQFPab6ZCVf9UUzr3gXHXvctYFr0mApyVtiIvYkxEnUxoY3oYqDn2U2Q2LMwUKEU+u22pEyAoSUg==","bernierllc":{"integration":{"logger":"planned","neverhub":"optional","neveradmin":"not-applicable"}},"repository":{"url":"git+https://github.com/BernierLLC/tools.git","type":"git","directory":"packages/core/content-autosave-manager"},"_npmVersion":"11.14.1","description":"Automatic content saving with debouncing, retry logic, and conflict detection","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/backoff-retry":"0.8.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/content-autosave-manager_1.5.0_1779240969645_0.15368555538534623","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"@bernierllc/content-autosave-manager","version":"1.5.1","keywords":["autosave","debouncing","retry","conflict-detection","content-management","version-tracking"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/content-autosave-manager@1.5.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/BernierLLC/tools/tree/main/packages/core/content-autosave-manager#readme","bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"dist":{"shasum":"c5bcc1860b711bbef9a2eb23ec12333c6b48c58b","tarball":"https://registry.npmjs.org/@bernierllc/content-autosave-manager/-/content-autosave-manager-1.5.1.tgz","fileCount":12,"integrity":"sha512-d4ql1oRfipHErnqTyy6/8E74kM38djFMHPWJxVldsdNJ5uDxNOSeiBiKRVV4/1G6pLV6GpntVi6vXYtunPBohA==","signatures":[{"sig":"MEUCIQCXhbwVv0+UkcZtjHGY5JirLR3CfqZEGpzW4PtCNznypwIgXP8FWUm/jeO7d7ui6PhxUbYquPTxhuuzyM9BjLFUWl4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30852},"main":"dist/index.js","_from":"file:bernierllc-content-autosave-manager-1.5.1.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2b618875-1326-489e-ab8e-ca9c867eb9f0"}},"_resolved":"/home/runner/work/tools/tools/packages/core/content-autosave-manager/bernierllc-content-autosave-manager-1.5.1.tgz","_integrity":"sha512-d4ql1oRfipHErnqTyy6/8E74kM38djFMHPWJxVldsdNJ5uDxNOSeiBiKRVV4/1G6pLV6GpntVi6vXYtunPBohA==","bernierllc":{"integration":{"logger":"planned","neverhub":"optional","neveradmin":"not-applicable"}},"repository":{"url":"git+https://github.com/BernierLLC/tools.git","type":"git","directory":"packages/core/content-autosave-manager"},"_npmVersion":"11.14.1","description":"Automatic content saving with debouncing, retry logic, and conflict detection","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/backoff-retry":"0.8.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/content-autosave-manager_1.5.1_1779243149636_0.2159833262158517","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@bernierllc/content-autosave-manager","version":"1.6.0","description":"Automatic content saving with debouncing, retry logic, and conflict detection","main":"dist/index.js","types":"dist/index.d.ts","keywords":["autosave","debouncing","retry","conflict-detection","content-management","version-tracking"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","dependencies":{"@bernierllc/backoff-retry":"0.9.0"},"devDependencies":{"@types/jest":"^29.0.0","@types/node":"^20.0.0","@typescript-eslint/eslint-plugin":"^6.0.0","@typescript-eslint/parser":"^6.0.0","eslint":"^8.0.0","jest":"^29.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"bernierllc":{"integration":{"neverhub":"optional","neveradmin":"not-applicable","logger":"planned"}},"repository":{"type":"git","url":"git+https://github.com/BernierLLC/tools.git","directory":"packages/core/content-autosave-manager"},"bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"homepage":"https://github.com/BernierLLC/tools/tree/main/packages/core/content-autosave-manager#readme","scripts":{"build":"tsc","test":"jest --watch","test:run":"jest","test:coverage":"jest --coverage","lint":"eslint src --ext .ts","clean":"rm -rf dist"},"_id":"@bernierllc/content-autosave-manager@1.6.0","_integrity":"sha512-NxE22ItflQXqXIMHcF8R+TW8kfQLcWfm7rnglYqu0HC7+zBw6D6zTOPn/aN825QLqW+/1W/SrKZ6txV74oNaSQ==","_resolved":"/home/runner/work/tools/tools/packages/core/content-autosave-manager/bernierllc-content-autosave-manager-1.6.0.tgz","_from":"file:bernierllc-content-autosave-manager-1.6.0.tgz","_nodeVersion":"20.20.2","_npmVersion":"11.14.1","dist":{"integrity":"sha512-NxE22ItflQXqXIMHcF8R+TW8kfQLcWfm7rnglYqu0HC7+zBw6D6zTOPn/aN825QLqW+/1W/SrKZ6txV74oNaSQ==","shasum":"825a367f63081500d01f107396cadc4ff3d10aaa","tarball":"https://registry.npmjs.org/@bernierllc/content-autosave-manager/-/content-autosave-manager-1.6.0.tgz","fileCount":12,"unpackedSize":30852,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFQK4Pb3uRpV85qHNn6MDGC6uq9OCe+P8+1XLRO92N6MAiEAgilULeoUC8GqAQWZQUOpzASJhER1TJU4VA5dfdo6o7s="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2b618875-1326-489e-ab8e-ca9c867eb9f0"}},"directories":{},"maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/content-autosave-manager_1.6.0_1779249704942_0.4460270991324009"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-03T03:31:52.724Z","modified":"2026-05-20T04:01:45.233Z","1.0.0":"2025-11-03T03:31:52.993Z","1.0.1":"2025-11-05T01:40:57.531Z","1.2.0":"2026-01-05T19:47:40.446Z","1.2.1":"2026-03-09T17:46:11.832Z","1.2.2":"2026-03-10T17:17:29.881Z","1.2.3":"2026-05-18T19:42:47.677Z","1.2.4":"2026-05-19T02:18:42.555Z","1.4.0":"2026-05-19T23:37:38.601Z","1.5.0":"2026-05-20T01:36:09.806Z","1.5.1":"2026-05-20T02:12:29.822Z","1.6.0":"2026-05-20T04:01:45.095Z"},"bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","homepage":"https://github.com/BernierLLC/tools/tree/main/packages/core/content-autosave-manager#readme","keywords":["autosave","debouncing","retry","conflict-detection","content-management","version-tracking"],"repository":{"type":"git","url":"git+https://github.com/BernierLLC/tools.git","directory":"packages/core/content-autosave-manager"},"description":"Automatic content saving with debouncing, retry logic, and conflict detection","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"readme":"# @bernierllc/content-autosave-manager\n\nAutomatic content saving with debouncing, retry logic, and conflict detection for preventing data loss during editing sessions.\n\n## Features\n\n- **Debounced Autosaving** - Save after inactivity period (configurable delay)\n- **Retry Logic** - Automatic retry on failures using exponential backoff from @bernierllc/backoff-retry\n- **Conflict Detection** - Detects version conflicts with configurable resolution strategies\n- **Version Tracking** - Maintains version numbers for draft content\n- **Status Management** - Real-time save status (idle, saving, saved, error)\n- **Event Hooks** - Listen to status changes and handle conflicts\n- **Multi-Content Support** - Manage autosave for multiple content items independently\n- **Framework Agnostic** - Works with any framework or save function\n\n## Installation\n\n```bash\nnpm install @bernierllc/content-autosave-manager\n```\n\n## Usage\n\n### Basic Example\n\n```typescript\nimport { AutosaveManager } from '@bernierllc/content-autosave-manager';\n\n// Create manager instance\nconst manager = new AutosaveManager<string>({\n  debounceMs: 2000,    // Wait 2 seconds of inactivity before saving\n  maxRetries: 3,       // Retry failed saves up to 3 times\n  retryStrategy: 'exponential',\n  enableVersioning: true,\n  enableConflictDetection: true,\n});\n\n// Define save function\nconst saveFunction = async (contentId: string, content: string, version?: number) => {\n  try {\n    const response = await fetch(`/api/content/${contentId}`, {\n      method: 'PUT',\n      headers: { 'Content-Type': 'application/json' },\n      body: JSON.stringify({ content, version }),\n    });\n\n    if (!response.ok) {\n      if (response.status === 409) {\n        // Conflict detected\n        const serverData = await response.json();\n        return {\n          success: false,\n          conflict: true,\n          version: serverData.version,\n          serverContent: serverData.content,\n        };\n      }\n      return { success: false, error: 'Save failed' };\n    }\n\n    const data = await response.json();\n    return { success: true, version: data.version };\n  } catch (error) {\n    return { success: false, error: error.message };\n  }\n};\n\n// Enable autosave for content item\nmanager.enable('blog-post-123', saveFunction);\n\n// Listen to status changes\nmanager.onStatusChange((event) => {\n  console.log(`Content ${event.contentId} status: ${event.status}`);\n  if (event.status === 'saved') {\n    console.log(`Saved at ${event.lastSaved}, version ${event.version}`);\n  }\n  if (event.status === 'error') {\n    console.error(`Save error: ${event.error}`);\n  }\n});\n\n// Queue save (debounced)\nmanager.queueSave('blog-post-123', 'Updated content...');\n\n// Force immediate save (bypasses debouncing)\nconst result = await manager.forceSave('blog-post-123', 'Final content');\nif (result.success) {\n  console.log('Content saved successfully');\n}\n\n// Check current status\nconst status = manager.getStatus('blog-post-123');\nconsole.log(status);\n// {\n//   contentId: 'blog-post-123',\n//   status: 'saved',\n//   version: 5,\n//   lastSaved: Date,\n//   error: undefined\n// }\n\n// Cleanup\nmanager.disable('blog-post-123');\n```\n\n### Conflict Handling\n\n```typescript\nimport { AutosaveManager, ConflictEvent, ConflictResolution } from '@bernierllc/content-autosave-manager';\n\nconst manager = new AutosaveManager<string>();\n\n// Register conflict handler\nmanager.onConflict(async (event: ConflictEvent<string>) => {\n  console.log('Conflict detected!');\n  console.log('Local version:', event.localVersion, event.localContent);\n  console.log('Server version:', event.serverVersion, event.serverContent);\n\n  // Show user a conflict resolution dialog\n  const userChoice = await showConflictDialog(event);\n\n  // Return resolution strategy\n  if (userChoice === 'keep-local') {\n    return 'local';  // Retry save with local content\n  } else if (userChoice === 'use-server') {\n    return 'server'; // Accept server version\n  } else {\n    return 'manual'; // User will resolve manually\n  }\n});\n\nmanager.enable('document-1', saveFunction);\n```\n\n### Multiple Content Items\n\n```typescript\nconst manager = new AutosaveManager<string>();\n\n// Enable autosave for multiple content items\nmanager.enable('blog-post-1', saveBlogPost);\nmanager.enable('comment-1', saveComment);\nmanager.enable('note-1', saveNote);\n\n// Queue saves independently\nmanager.queueSave('blog-post-1', 'Blog content...');\nmanager.queueSave('comment-1', 'Comment text...');\nmanager.queueSave('note-1', 'Note content...');\n\n// Each item autosaves independently with its own debounce timer\n```\n\n### Per-Item Configuration\n\n```typescript\nconst manager = new AutosaveManager<string>({\n  debounceMs: 2000,  // Default for all items\n  maxRetries: 3,\n});\n\n// Override config for specific items\nmanager.enable('critical-doc', saveFunction, {\n  debounceMs: 500,   // Save more frequently for critical content\n  maxRetries: 5,     // More retries for important content\n});\n\nmanager.enable('draft-note', saveFunction, {\n  debounceMs: 5000,  // Save less frequently for drafts\n  maxRetries: 1,     // Fewer retries for non-critical content\n});\n```\n\n## API Reference\n\n### AutosaveManager\n\n#### Constructor\n\n```typescript\nnew AutosaveManager<T>(config?: Partial<AutosaveConfig>)\n```\n\nCreates a new autosave manager instance.\n\n#### Methods\n\n##### `enable(contentId, saveFunction, config?)`\n\nEnable autosave for a content item.\n\n```typescript\nmanager.enable(\n  contentId: string,\n  saveFunction: SaveFunction<T>,\n  config?: Partial<AutosaveConfig>\n): void\n```\n\n##### `disable(contentId)`\n\nDisable autosave for a content item.\n\n```typescript\nmanager.disable(contentId: string): void\n```\n\n##### `queueSave(contentId, content)`\n\nQueue content for autosave (triggers debounced save).\n\n```typescript\nmanager.queueSave(contentId: string, content: T): void\n```\n\n##### `forceSave(contentId, content)`\n\nForce immediate save (bypasses debouncing).\n\n```typescript\nmanager.forceSave(contentId: string, content: T): Promise<SaveResult<T>>\n```\n\n##### `getStatus(contentId)`\n\nGet current autosave status.\n\n```typescript\nmanager.getStatus(contentId: string): AutosaveStatusEvent | null\n```\n\n##### `onConflict(handler)`\n\nRegister conflict handler.\n\n```typescript\nmanager.onConflict(handler: ConflictHandler<T>): void\n```\n\n##### `onStatusChange(listener)`\n\nRegister status change listener.\n\n```typescript\nmanager.onStatusChange(listener: (event: AutosaveStatusEvent) => void): void\n```\n\n##### `clear(contentId)`\n\nClear all autosave state for content item.\n\n```typescript\nmanager.clear(contentId: string): void\n```\n\n##### `destroy()`\n\nCleanup all autosave state.\n\n```typescript\nmanager.destroy(): void\n```\n\n## Configuration\n\n### AutosaveConfig\n\n```typescript\ninterface AutosaveConfig {\n  debounceMs?: number;                 // Default: 2000\n  maxRetries?: number;                 // Default: 3\n  retryStrategy?: 'exponential' | 'linear' | 'fibonacci'; // Default: 'exponential'\n  enableVersioning?: boolean;          // Default: true\n  enableConflictDetection?: boolean;   // Default: true\n}\n```\n\n### Environment Variables\n\n```bash\nAUTOSAVE_DEBOUNCE_MS=2000\nAUTOSAVE_MAX_RETRIES=3\nAUTOSAVE_RETRY_STRATEGY=exponential\nAUTOSAVE_ENABLE_VERSIONING=true\nAUTOSAVE_ENABLE_CONFLICTS=true\n```\n\nConfiguration precedence (highest to lowest):\n1. Per-item config (enable method)\n2. Constructor options\n3. Environment variables\n4. Default values\n\n## Types\n\n### SaveFunction\n\n```typescript\ntype SaveFunction<T> = (\n  contentId: string,\n  content: T,\n  version?: number\n) => Promise<SaveResult<T>>;\n```\n\n### SaveResult\n\n```typescript\ninterface SaveResult<T> {\n  success: boolean;\n  version?: number;\n  conflict?: boolean;\n  serverContent?: T;\n  error?: string;\n}\n```\n\n### AutosaveStatus\n\n```typescript\ntype AutosaveStatus = 'idle' | 'saving' | 'saved' | 'error';\n```\n\n### ConflictResolution\n\n```typescript\ntype ConflictResolution = 'local' | 'server' | 'manual';\n```\n\n## Integration Status\n\n- **Logger**: planned - Autosave operations should be logged for debugging\n- **Docs-Suite**: ready - Complete API documentation with TypeDoc\n- **NeverHub**: optional - Can publish autosave events when available\n\n## Dependencies\n\n- [@bernierllc/backoff-retry](../backoff-retry) - Exponential backoff retry logic\n\n## Related Packages\n\n- [@bernierllc/content-editor-core](../content-editor-core) - Core editor functionality\n- [@bernierllc/blog-post-editor](../../service/blog-post-editor) - Blog post editing service\n- [@bernierllc/content-management-suite](../../suite/content-management-suite) - Complete CMS\n\n## License\n\nCopyright (c) 2025 Bernier LLC. All rights reserved.\n\nThis file is licensed to the client under a limited-use license.\nThe client may use and modify this code *only within the scope of the project it was delivered for*.\nRedistribution or use in other products or commercial offerings is not permitted without written consent from Bernier LLC.\n","readmeFilename":"README.md"}