{"_id":"@ad-execute-manager/helper","_rev":"8-e1f32024758b6c959ec76e2d4b5a2a59","name":"@ad-execute-manager/helper","dist-tags":{"latest":"2.1.0"},"versions":{"2.0.0-alpha.1":{"name":"@ad-execute-manager/helper","version":"2.0.0-alpha.1","author":{"name":"singcl"},"license":"MIT","_id":"@ad-execute-manager/helper@2.0.0-alpha.1","maintainers":[{"name":"singcl","email":"24661881@qq.com"}],"homepage":"https://npmjs.com/package/@ad-execute-manager/helper","dist":{"shasum":"428c9a62eb5a21d0faf2185d9ec95dfd35fa9f94","tarball":"https://registry.npmjs.org/@ad-execute-manager/helper/-/helper-2.0.0-alpha.1.tgz","fileCount":27,"integrity":"sha512-YDiCAaM+TPYpu/g+/n/efCmEkfBsJiHGybvxuOP7l9tmVtJA5qRnZFNws4CEpYA0/894ujoEEPa2duz3fZCykg==","signatures":[{"sig":"MEUCIQDwiz9q//gq7XC3IopEm0Dg86blMr61Q5rfnxFXOCKBxAIgL7st4ByUJT9Yg2PvDajnrJ3I2cnNLQkiACGDodsHqd4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83361},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"fc7e88b248baa048a38988aa8d72762dc3b20163","_npmUser":{"name":"singcl","email":"24661881@qq.com"},"_npmVersion":"10.9.3","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"peerDependencies":{"@singcl/ad-execute-manager":">=2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/helper_2.0.0-alpha.1_1766907064220_0.40854002341620177","host":"s3://npm-registry-packages-npm-production"}},"2.0.0-alpha.2":{"name":"@ad-execute-manager/helper","version":"2.0.0-alpha.2","keywords":["helper","event-emitter","logger","storage","count-recorder","pubsub","serializable-error","utilities","javascript","nodejs"],"author":{"url":"https://github.com/singcl","name":"singcl","email":"iambabyer@gmail.com"},"license":"MIT","_id":"@ad-execute-manager/helper@2.0.0-alpha.2","maintainers":[{"name":"singcl","email":"24661881@qq.com"}],"homepage":"https://npmjs.com/package/@singcl/helper","bugs":{"url":"https://github.com/singcl/ad-execute-manager/issues"},"dist":{"shasum":"abb9b8a3d7a3d7a0f11b2b6cdda90d5325b74cd9","tarball":"https://registry.npmjs.org/@ad-execute-manager/helper/-/helper-2.0.0-alpha.2.tgz","fileCount":12,"integrity":"sha512-oVYdcNcmgbZHJaJd0rUf0AXemHXD+W0bMs7w20SdS2k1ECL9Mf7vU+Spd5lG04PLLFt6XBoiIGX13p9STPxU4w==","signatures":[{"sig":"MEUCIQDZ5a96NWedIWm5sV7PFBxsaxfYCf6SUsMYkVZjTpWHGgIgIHfeN752hzZSNM67MBzJ+Acd7p+y3feMykxGbe9jufQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27395},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=14.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"82f88fe7de4d7b4cecdf4b64c0232e2cc0169a43","scripts":{"dev":"rslib build --watch","lint":"eslint .","test":"rstest","build":"rslib build && tsc","format":"prettier --write .","prepublishOnly":"npm run build"},"_npmUser":{"name":"singcl","email":"24661881@qq.com"},"repository":{"url":"git+https://github.com/singcl/ad-execute-manager.git","type":"git"},"_npmVersion":"8.5.0","description":"A collection of utility helper classes for JavaScript applications including EventEmitter, Logger, Storage, CountRecorder, PubSub, and SerializableError.","directories":{},"_nodeVersion":"16.14.2","_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.2","globals":"^16.5.0","prettier":"^3.7.3","@eslint/js":"^9.39.1","typescript":"^5.9.3","@rslib/core":"^0.18.5","@rstest/core":"^0.7.2","@babel/preset-env":"^7.28.5","@babel/eslint-parser":"^7.28.5","eslint-plugin-import":"^2.32.0"},"_npmOperationalInternal":{"tmp":"tmp/helper_2.0.0-alpha.2_1770706768830_0.5703716996603665","host":"s3://npm-registry-packages-npm-production"}},"2.0.0-alpha.3":{"name":"@ad-execute-manager/helper","version":"2.0.0-alpha.3","keywords":["helper","event-emitter","logger","storage","count-recorder","pubsub","serializable-error","utilities","javascript","nodejs"],"author":{"url":"https://github.com/singcl","name":"singcl","email":"iambabyer@gmail.com"},"license":"MIT","_id":"@ad-execute-manager/helper@2.0.0-alpha.3","maintainers":[{"name":"singcl","email":"24661881@qq.com"}],"homepage":"https://npmjs.com/package/@singcl/helper","bugs":{"url":"https://github.com/singcl/ad-execute-manager/issues"},"dist":{"shasum":"53bd5d655972e62963488bc18952f9dd7092655d","tarball":"https://registry.npmjs.org/@ad-execute-manager/helper/-/helper-2.0.0-alpha.3.tgz","fileCount":12,"integrity":"sha512-qwxHWCrp3NoDSBRN544htEqvnZEGDhUdE5aiijp1Pfm1AT/Ou+sxyevu6k6f97jK9yB4jIHEIZHiVLi2YerhCQ==","signatures":[{"sig":"MEQCICrn7BpHvsEAynT7w6kCYTH1tMF9CB/nm5THH+kqyqnBAiBzapT8+Zjbhn6/+MO3Y4QQ/UxilHolZ45MLVCHMvNjvw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27395},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=14.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"782c04297ab50a217f8cebe33969e205351c7fd8","scripts":{"dev":"rslib build --watch","lint":"eslint .","test":"rstest","build":"rslib build && tsc","format":"prettier --write .","prepublishOnly":"npm run build"},"_npmUser":{"name":"singcl","email":"24661881@qq.com"},"repository":{"url":"git+https://github.com/singcl/ad-execute-manager.git","type":"git"},"_npmVersion":"8.5.0","description":"A collection of utility helper classes for JavaScript applications including EventEmitter, Logger, Storage, CountRecorder, PubSub, and SerializableError.","directories":{},"_nodeVersion":"16.14.2","_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.2","globals":"^16.5.0","prettier":"^3.7.3","@eslint/js":"^9.39.1","typescript":"^5.9.3","@rslib/core":"^0.18.5","@rstest/core":"^0.7.2","@babel/preset-env":"^7.28.5","@babel/eslint-parser":"^7.28.5","eslint-plugin-import":"^2.32.0"},"_npmOperationalInternal":{"tmp":"tmp/helper_2.0.0-alpha.3_1770714297211_0.804373726735568","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@ad-execute-manager/helper","version":"2.0.0","keywords":["helper","event-emitter","logger","storage","count-recorder","pubsub","serializable-error","utilities","javascript","nodejs"],"author":{"url":"https://github.com/singcl","name":"singcl","email":"iambabyer@gmail.com"},"license":"MIT","_id":"@ad-execute-manager/helper@2.0.0","maintainers":[{"name":"singcl","email":"24661881@qq.com"}],"homepage":"https://npmjs.com/package/@ad-execute-manager/helper","bugs":{"url":"https://github.com/singcl/ad-execute-manager/issues"},"dist":{"shasum":"c1b7a675b9f123b77f074a672835460ee3efc32b","tarball":"https://registry.npmjs.org/@ad-execute-manager/helper/-/helper-2.0.0.tgz","fileCount":12,"integrity":"sha512-6kh9GlhvgtARUq5M2NgiXSafZa96JisrfkjSTWEm8Y6WKVCNBb0bOmlgbhvsnJaYHZmXei5LtnEomvMj0bQPpg==","signatures":[{"sig":"MEUCIQC8XYCegHUUzGur92k7PHO82XLuan18Z92p2sfRqz5qVQIgVFez1arRF0PFPva+MZ6HwhdU/3IUl86PnTC9XhqU+n8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35464},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=14.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"133bbd16b5e6ad58f38a9cd0956c6b8ef3a6ff2f","scripts":{"dev":"rslib build --watch","lint":"eslint .","test":"rstest","build":"rslib build && tsc","format":"prettier --write .","prepublishOnly":"npm run build"},"_npmUser":{"name":"singcl","email":"24661881@qq.com"},"repository":{"url":"git+https://github.com/singcl/ad-execute-manager.git","type":"git"},"_npmVersion":"10.9.3","description":"A collection of utility helper classes for JavaScript applications including EventEmitter, Logger, Storage, CountRecorder, PubSub, and SerializableError.","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.2","globals":"^16.5.0","prettier":"^3.7.3","@eslint/js":"^9.39.1","typescript":"^5.9.3","@rslib/core":"^0.18.5","@rstest/core":"^0.7.2","@babel/preset-env":"^7.28.5","@babel/eslint-parser":"^7.28.5","eslint-plugin-import":"^2.32.0"},"_npmOperationalInternal":{"tmp":"tmp/helper_2.0.0_1770730517685_0.6812964626604485","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@ad-execute-manager/helper","version":"2.0.1","keywords":["helper","event-emitter","logger","storage","count-recorder","pubsub","serializable-error","utilities","javascript","nodejs"],"author":{"url":"https://github.com/singcl","name":"singcl","email":"iambabyer@gmail.com"},"license":"MIT","_id":"@ad-execute-manager/helper@2.0.1","maintainers":[{"name":"singcl","email":"24661881@qq.com"}],"homepage":"https://npmjs.com/package/@ad-execute-manager/helper","bugs":{"url":"https://github.com/singcl/ad-execute-manager/issues"},"dist":{"shasum":"37476063b1f26c3faa2715feaa3eabebdf67ab61","tarball":"https://registry.npmjs.org/@ad-execute-manager/helper/-/helper-2.0.1.tgz","fileCount":12,"integrity":"sha512-BCoQ6nuLChe7boEi7RHOLbUvvLOTN829XkJHCeFcCJjYnosPupNTI1IoQzS/A9KJZlXXLhMqUZlvLn5yOejUlg==","signatures":[{"sig":"MEUCIEpan+fIxz45jLiGdXspfia4GuOplsv4iNQAKdHEu8u2AiEAtd3Cq+rBqqI8pFCEm6L8BbBkS5+uJzb2/mc+6y7N6vM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35464},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=14.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"dac1d9b099ee13449e4e49b1ae6823299ef0e16d","scripts":{"dev":"rslib build --watch","lint":"eslint .","test":"rstest","build":"rslib build && tsc","format":"prettier --write .","prepublishOnly":"npm run build"},"_npmUser":{"name":"singcl","email":"24661881@qq.com"},"repository":{"url":"git+https://github.com/singcl/ad-execute-manager.git","type":"git"},"_npmVersion":"10.9.3","description":"A collection of utility helper classes for JavaScript applications including EventEmitter, Logger, Storage, CountRecorder, PubSub, and SerializableError.","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.2","globals":"^16.5.0","prettier":"^3.7.3","@eslint/js":"^9.39.1","typescript":"^5.9.3","@rslib/core":"^0.18.5","@rstest/core":"^0.7.2","@babel/preset-env":"^7.28.5","@babel/eslint-parser":"^7.28.5","eslint-plugin-import":"^2.32.0"},"_npmOperationalInternal":{"tmp":"tmp/helper_2.0.1_1770730556656_0.5886773040198447","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"@ad-execute-manager/helper","version":"2.0.2","keywords":["helper","event-emitter","logger","storage","count-recorder","pubsub","serializable-error","utilities","javascript","nodejs"],"author":{"url":"https://github.com/singcl","name":"singcl","email":"iambabyer@gmail.com"},"license":"MIT","_id":"@ad-execute-manager/helper@2.0.2","maintainers":[{"name":"singcl","email":"24661881@qq.com"}],"homepage":"https://npmjs.com/package/@ad-execute-manager/helper","bugs":{"url":"https://github.com/singcl/ad-execute-manager/issues"},"dist":{"shasum":"9e08e573998a80ad37a3ef74b822f1af17fe05de","tarball":"https://registry.npmjs.org/@ad-execute-manager/helper/-/helper-2.0.2.tgz","fileCount":6,"integrity":"sha512-QLqd6vjXR7f/HYhi8HK98fc7I1RfWvkFTAY/mDZZxrRphkZ0pKBiXJp2/puhCRjV8fZsB0Nve9DnNHdCc2lgJw==","signatures":[{"sig":"MEQCIDtpGc8679fu+auFP0RzVFlGkFOjyLm+U2RW8YO1XcCrAiBuXg/Y1DKb9B0L8pBhQmrCpSSbGGZlw0XzjCMgy42Y0g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16840},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=14.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"125db4b0802b729880f057231b20f8a8c8596663","scripts":{"dev":"rslib build --watch","lint":"eslint .","test":"rstest","build":"rslib build && tsc","format":"prettier --write .","prepublishOnly":"npm run build"},"_npmUser":{"name":"singcl","email":"24661881@qq.com"},"repository":{"url":"git+https://github.com/singcl/ad-execute-manager.git","type":"git"},"_npmVersion":"8.5.0","description":"A collection of utility helper classes for JavaScript applications including EventEmitter, Logger, Storage, CountRecorder, PubSub, and SerializableError.","directories":{},"_nodeVersion":"16.14.2","dependencies":{"@ad-execute-manager/event":"^2.0.2","@ad-execute-manager/logger":"^2.0.2","@ad-execute-manager/storage":"^2.0.2","@ad-execute-manager/count-recorder":"^2.0.2","@ad-execute-manager/serializable-error":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.2","globals":"^16.5.0","prettier":"^3.7.3","@eslint/js":"^9.39.1","typescript":"^5.9.3","@rslib/core":"^0.18.5","@rstest/core":"^0.7.2","@babel/preset-env":"^7.28.5","@babel/eslint-parser":"^7.28.5","eslint-plugin-import":"^2.32.0"},"_npmOperationalInternal":{"tmp":"tmp/helper_2.0.2_1770781418006_0.8211848829526476","host":"s3://npm-registry-packages-npm-production"}},"2.0.5":{"name":"@ad-execute-manager/helper","version":"2.0.5","keywords":["helper","event-emitter","logger","storage","count-recorder","pubsub","serializable-error","utilities","javascript","nodejs"],"author":{"url":"https://github.com/singcl","name":"singcl","email":"iambabyer@gmail.com"},"license":"MIT","_id":"@ad-execute-manager/helper@2.0.5","maintainers":[{"name":"singcl","email":"24661881@qq.com"}],"homepage":"https://npmjs.com/package/@ad-execute-manager/helper","bugs":{"url":"https://github.com/singcl/ad-execute-manager/issues"},"dist":{"shasum":"c4367b9d9bc879be445df8a721f674cf499201bf","tarball":"https://registry.npmjs.org/@ad-execute-manager/helper/-/helper-2.0.5.tgz","fileCount":6,"integrity":"sha512-ptIF4c5qisyKgxEIIINwoSVOmFFX09OCC2Pljvl2lb/THv9Irc7BrWTw7sj5sxNwtEGdWndvJPMRsC/hjpMZmg==","signatures":[{"sig":"MEUCIFU5OGU8QzPMoZD4P7xawlhnHVaeNH6KlNf3oX/2EGpqAiEAih8xor0U09Kdq1VsMtrKWNdmmHUJV564b/pA+2RCCFY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16849},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=14.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"496539214dcaa933fcb20441d4962601c22045b9","scripts":{"dev":"rslib build --watch","lint":"eslint .","test":"rstest","build":"rslib build && tsc","format":"prettier --write .","prepublishOnly":"npm i && npm run build"},"_npmUser":{"name":"singcl","email":"24661881@qq.com"},"repository":{"url":"git+https://github.com/singcl/ad-execute-manager.git","type":"git"},"_npmVersion":"8.5.0","description":"A collection of utility helper classes for JavaScript applications including EventEmitter, Logger, Storage, CountRecorder, PubSub, and SerializableError.","directories":{},"_nodeVersion":"16.14.2","dependencies":{"@ad-execute-manager/event":"^2.0.5","@ad-execute-manager/logger":"^2.0.5","@ad-execute-manager/storage":"^2.0.5","@ad-execute-manager/count-recorder":"^2.0.5","@ad-execute-manager/serializable-error":"^2.0.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.2","globals":"^16.5.0","prettier":"^3.7.3","@eslint/js":"^9.39.1","typescript":"^5.9.3","@rslib/core":"^0.18.5","@rstest/core":"^0.7.2","@babel/preset-env":"^7.28.5","@babel/eslint-parser":"^7.28.5","eslint-plugin-import":"^2.32.0"},"_npmOperationalInternal":{"tmp":"tmp/helper_2.0.5_1770859228943_0.821850545712929","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@ad-execute-manager/helper","version":"2.1.0","description":"A collection of utility helper classes for JavaScript applications including EventEmitter, Logger, Storage, CountRecorder, PubSub, and SerializableError.","type":"module","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs","types":"./dist/index.d.ts"}},"main":"./dist/index.cjs","types":"./dist/index.d.ts","author":{"name":"singcl","email":"iambabyer@gmail.com","url":"https://github.com/singcl"},"license":"MIT","homepage":"https://npmjs.com/package/@ad-execute-manager/helper","repository":{"type":"git","url":"git+https://github.com/singcl/ad-execute-manager.git"},"bugs":{"url":"https://github.com/singcl/ad-execute-manager/issues"},"engines":{"node":">=14.0.0"},"keywords":["helper","event-emitter","logger","storage","count-recorder","pubsub","serializable-error","utilities","javascript","nodejs"],"scripts":{"build":"rslib build && tsc","dev":"rslib build --watch","format":"prettier --write .","lint":"eslint .","test":"rstest","prepublishOnly":"npm i && npm run build"},"dependencies":{"@ad-execute-manager/serializable-error":"^2.0.5","@ad-execute-manager/logger":"^2.0.5","@ad-execute-manager/storage":"^2.1.0","@ad-execute-manager/count-recorder":"^2.1.0","@ad-execute-manager/event":"^2.0.5"},"devDependencies":{"@babel/eslint-parser":"^7.28.5","@babel/preset-env":"^7.28.5","@eslint/js":"^9.39.1","@rslib/core":"^0.18.5","@rstest/core":"^0.7.2","eslint":"^9.39.2","eslint-plugin-import":"^2.32.0","globals":"^16.5.0","prettier":"^3.7.3","typescript":"^5.9.3"},"_id":"@ad-execute-manager/helper@2.1.0","gitHead":"c0b70075e58600b4b5e04cf6d28d8570a9d3d5aa","_nodeVersion":"22.21.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-tvfg1oR7bd7tBCwaR4OSLvDW4vS7Vq3V36ZLajrMbBSNvNpBmm/f0SGcn0mqoiNdg4yaGdL/IWc4GjuPvpvEvw==","shasum":"fd7783258b64c6d21a004f2ed7ba08a8cd0174e2","tarball":"https://registry.npmjs.org/@ad-execute-manager/helper/-/helper-2.1.0.tgz","fileCount":6,"unpackedSize":16849,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIB+002mt7G1pIhMvcwNlI38zHUDxsWWwE9Ktu/NN61OZAiBBQOqDB6/ndPESemqWhyzuHebxEEGWIsG8mIiPXss+LA=="}]},"_npmUser":{"name":"singcl","email":"24661881@qq.com"},"directories":{},"maintainers":[{"name":"singcl","email":"24661881@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/helper_2.1.0_1772265905856_0.19126965867929435"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-28T07:31:04.044Z","modified":"2026-02-28T08:05:06.158Z","2.0.0-alpha.1":"2025-12-28T07:31:04.396Z","2.0.0-alpha.2":"2026-02-10T06:59:28.973Z","2.0.0-alpha.3":"2026-02-10T09:04:57.353Z","2.0.0":"2026-02-10T13:35:17.833Z","2.0.1":"2026-02-10T13:35:56.796Z","2.0.2":"2026-02-11T03:43:38.166Z","2.0.5":"2026-02-12T01:20:29.098Z","2.1.0":"2026-02-28T08:05:06.030Z"},"bugs":{"url":"https://github.com/singcl/ad-execute-manager/issues"},"author":{"name":"singcl","email":"iambabyer@gmail.com","url":"https://github.com/singcl"},"license":"MIT","homepage":"https://npmjs.com/package/@ad-execute-manager/helper","keywords":["helper","event-emitter","logger","storage","count-recorder","pubsub","serializable-error","utilities","javascript","nodejs"],"repository":{"type":"git","url":"git+https://github.com/singcl/ad-execute-manager.git"},"description":"A collection of utility helper classes for JavaScript applications including EventEmitter, Logger, Storage, CountRecorder, PubSub, and SerializableError.","maintainers":[{"name":"singcl","email":"24661881@qq.com"}],"readme":"# @ad-execute-manager/helper\r\n\r\nA collection of utility helper classes for JavaScript applications including EventEmitter, Logger, Storage, CountRecorder, PubSub, and SerializableError.\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install @ad-execute-manager/helper\r\n```\r\n\r\n## Features\r\n\r\n- **EventEmitter**: A powerful event emitter with support for once events, max listeners, and event queuing\r\n- **Logger**: A flexible logging utility with multiple log levels and customizable prefixes\r\n- **Storage**: A storage wrapper with expiration support, including \"today\" expiration for daily data\r\n- **CountRecorder**: A utility for tracking and managing counts with expiration\r\n- **PubSub**: A simple publish-subscribe pattern implementation\r\n- **SerializableError**: An error class that can be serialized to JSON\r\n\r\n## Usage\r\n\r\n### EventEmitter\r\n\r\n```javascript\r\nimport { EventEmitter } from '@ad-execute-manager/helper';\r\n\r\nconst emitter = new EventEmitter({ maxListeners: 10 });\r\n\r\nemitter.on('event', (data) => {\r\n  console.log('Received:', data);\r\n});\r\n\r\nemitter.emit('event', { message: 'Hello' });\r\n```\r\n\r\n### Logger\r\n\r\n```javascript\r\nimport { Logger } from '@ad-execute-manager/helper';\r\n\r\nconst logger = new Logger({ prefix: 'MyApp', level: 'info' });\r\n\r\nlogger.info('Application started');\r\nlogger.error('Something went wrong');\r\n```\r\n\r\n### Storage\r\n\r\n```javascript\r\nimport { Storage } from '@ad-execute-manager/helper';\r\n\r\nconst storage = new Storage({ prefix: 'myapp_' });\r\n\r\n// Set data that expires at end of day\r\nstorage.setItem('dailyTask', { completed: false }, 'today');\r\n\r\n// Set data with custom expiration (2 hours)\r\nstorage.setItem('tempData', { value: 123 }, 2 * 60 * 60 * 1000);\r\n\r\n// Get data\r\nconst data = storage.getItem('dailyTask');\r\n```\r\n\r\n### CountRecorder\r\n\r\n```javascript\r\nimport { CountRecorder } from '@ad-execute-manager/helper';\r\n\r\nconst recorder = CountRecorder.new({\r\n  local_sign: 'daily_ads',\r\n  total: 5,\r\n  expire: 'today',\r\n  userId: 'user123'\r\n});\r\n\r\nconsole.log(recorder.remain()); // Remaining count\r\nrecorder.updateToday(); // Increment today's count\r\n```\r\n\r\n### PubSub\r\n\r\n```javascript\r\nimport { PubSub } from '@ad-execute-manager/helper';\r\n\r\nconst pubsub = new PubSub();\r\n\r\nconst unsubscribe = pubsub.on('topic', (data) => {\r\n  console.log('Received:', data);\r\n});\r\n\r\npubsub.emit('topic', { message: 'Hello' });\r\n\r\nunsubscribe();\r\n```\r\n\r\n### SerializableError\r\n\r\n```javascript\r\nimport { SerializableError } from '@ad-execute-manager/helper';\r\n\r\nconst error = new SerializableError('Something went wrong', {\r\n  errorCode: 500,\r\n  errMsg: 'Internal server error'\r\n});\r\n\r\nconsole.log(error.toJSON());\r\n```\r\n\r\n## Examples\r\n\r\n### 实际应用场景示例\r\n\r\n#### 1. 应用状态管理\r\n\r\n```javascript\r\nimport { EventEmitter } from '@ad-execute-manager/helper';\r\n\r\n// 创建一个全局事件总线\r\nconst eventBus = new EventEmitter();\r\n\r\n// 组件 A 订阅状态更新\r\neventBus.on('userLoggedIn', (userData) => {\r\n  console.log('User logged in:', userData);\r\n  // 更新组件状态\r\n});\r\n\r\n// 组件 B 触发登录事件\r\nfunction handleLogin(userData) {\r\n  // 登录逻辑\r\n  eventBus.emit('userLoggedIn', userData);\r\n}\r\n```\r\n\r\n#### 2. 应用配置管理\r\n\r\n```javascript\r\nimport Storage from '@ad-execute-manager/helper';\r\n\r\n// 创建配置存储\r\nconst configStorage = Storage.new({ prefix: 'app_config_' });\r\n\r\n// 保存用户偏好设置\r\nfunction saveUserPreferences(preferences) {\r\n  configStorage.setItem('userPreferences', preferences);\r\n}\r\n\r\n// 获取用户偏好设置\r\nfunction getUserPreferences() {\r\n  return configStorage.getItem('userPreferences') || {\r\n    theme: 'light',\r\n    notifications: true\r\n  };\r\n}\r\n```\r\n\r\n#### 3. 广告展示次数限制\r\n\r\n```javascript\r\nimport { CountRecorder } from '@ad-execute-manager/helper';\r\n\r\n// 创建广告计数器\r\nconst adCounter = CountRecorder.new({\r\n  local_sign: 'daily_ads',\r\n  total: 5, // 每天最多展示 5 次\r\n  expire: 'today',\r\n  userId: 'user123'\r\n});\r\n\r\n// 检查是否可以展示广告\r\nfunction canShowAd() {\r\n  return adCounter.remain() > 0;\r\n}\r\n\r\n// 展示广告并更新计数\r\nfunction showAd() {\r\n  if (canShowAd()) {\r\n    console.log('Showing ad...');\r\n    adCounter.updateToday();\r\n    return true;\r\n  } else {\r\n    console.log('Ad limit reached for today');\r\n    return false;\r\n  }\r\n}\r\n```\r\n\r\n#### 4. 应用日志系统\r\n\r\n```javascript\r\nimport { Logger } from '@ad-execute-manager/helper';\r\n\r\n// 创建应用日志器\r\nconst appLogger = new Logger({ \r\n  prefix: 'MyApp',\r\n  level: process.env.NODE_ENV === 'production' ? 'info' : 'debug'\r\n});\r\n\r\n// 记录应用启动\r\nappLogger.info('Application started');\r\n\r\n// 记录错误\r\nfunction handleError(error) {\r\n  appLogger.error('Error occurred:', error);\r\n  // 错误处理逻辑\r\n}\r\n```\r\n\r\n#### 5. 微服务间通信\r\n\r\n```javascript\r\nimport PubSub from '@ad-execute-manager/helper';\r\n\r\n// 创建消息总线\r\nconst messageBus = new PubSub();\r\n\r\n// 服务 A 订阅消息\r\nmessageBus.on('orderCreated', (orderData) => {\r\n  console.log('Processing order:', orderData.id);\r\n  // 处理订单逻辑\r\n});\r\n\r\n// 服务 B 发布消息\r\nfunction createOrder(orderData) {\r\n  // 创建订单逻辑\r\n  messageBus.emit('orderCreated', orderData);\r\n}\r\n```\r\n\r\n#### 6. 错误处理与序列化\r\n\r\n```javascript\r\nimport { SerializableError } from '@ad-execute-manager/helper';\r\n\r\n// 处理 API 错误\r\nasync function fetchData() {\r\n  try {\r\n    const response = await fetch('/api/data');\r\n    if (!response.ok) {\r\n      throw new SerializableError('API request failed', {\r\n        errorCode: response.status,\r\n        errMsg: response.statusText\r\n      });\r\n    }\r\n    return await response.json();\r\n  } catch (error) {\r\n    if (error instanceof SerializableError) {\r\n      // 序列化错误以便传输\r\n      console.log('Serialized error:', error.toJSON());\r\n      // 发送错误到监控系统\r\n    }\r\n    throw error;\r\n  }\r\n}\r\n```\r\n\r\n## API\r\n\r\n### EventEmitter\r\n\r\n#### Constructor\r\n\r\n```javascript\r\nnew EventEmitter(options)\r\n```\r\n\r\n- **options** (Object): 配置选项\r\n  - **maxListeners** (Number): 最大监听器数量，默认 5\r\n  - **maxQueueSize** (Number): 最大队列大小，默认 1\r\n  - **maxOnceEvents** (Number): 最大一次性事件数量，默认 5\r\n\r\n#### Methods\r\n\r\n- **on(event, listener)**\r\n  - **event** (String): 事件名称\r\n  - **listener** (Function): 事件监听器函数\r\n  - 注册一个事件监听器\r\n\r\n- **once(event, listener)**\r\n  - **event** (String): 事件名称\r\n  - **listener** (Function): 事件监听器函数\r\n  - 注册一个只执行一次的事件监听器\r\n\r\n- **emit(event, ...args)**\r\n  - **event** (String): 事件名称\r\n  - **...args** (Any): 传递给监听器的参数\r\n  - 触发一个事件\r\n\r\n- **off(event, listenerToRemove)**\r\n  - **event** (String): 事件名称\r\n  - **listenerToRemove** (Function): 要移除的监听器函数\r\n  - 移除一个事件监听器\r\n\r\n- **removeAllListeners(event)**\r\n  - **event** (String, optional): 事件名称，不提供则移除所有事件的监听器\r\n  - 移除所有事件监听器\r\n\r\n- **static geInstance(args)**\r\n  - **args** (Object): 构造函数参数\r\n  - 返回 EventEmitter 的单例实例\r\n\r\n### Logger\r\n\r\n#### Constructor\r\n\r\n```javascript\r\nnew Logger(options)\r\n```\r\n\r\n- **options** (Object): 配置选项\r\n  - **prefix** (String): 日志前缀，默认 'Logger'\r\n  - **level** (String): 日志级别，可选值: 'error', 'warn', 'info', 'log', 'debug'，默认 'log'\r\n  - **enabled** (Boolean): 是否启用日志，默认 true\r\n\r\n#### Methods\r\n\r\n- **enable()**: 启用日志\r\n- **disable()**: 禁用日志\r\n- **isEnabled()**: 返回日志是否启用\r\n- **setLevel(level)**: 设置日志级别\r\n  - **level** (String): 日志级别\r\n- **error(message, ...args)**: 输出错误日志\r\n- **warn(message, ...args)**: 输出警告日志\r\n- **info(message, ...args)**: 输出信息日志\r\n- **log(message, ...args)**: 输出普通日志\r\n- **debug(message, ...args)**: 输出调试日志\r\n\r\n### Storage\r\n\r\n#### Constructor\r\n\r\n```javascript\r\nnew Storage(options)\r\n```\r\n\r\n- **options** (Object): 配置选项\r\n  - **prefix** (String): 存储键前缀，默认 'storage_'\r\n  - **expire** (Number|null): 默认过期时间（毫秒），null 表示永不过期\r\n  - **userId** (String|Number): 用户 ID\r\n\r\n#### Methods\r\n\r\n- **setItem(key, value, expire)**\r\n  - **key** (String): 存储键\r\n  - **value** (Any): 存储值\r\n  - **expire** (Number|'today', optional): 过期时间（毫秒）或 'today' 表示当天有效\r\n  - 设置存储项\r\n\r\n- **getItem(key)**\r\n  - **key** (String): 存储键\r\n  - 返回存储的值，如果过期或不存在则返回 null\r\n\r\n- **getUserItem(key)**\r\n  - **key** (String): 存储键\r\n  - 返回用户维度的存储值，如果过期或不存在则返回 null\r\n\r\n- **setUserItem(key, value, expire)**\r\n  - **key** (String): 存储键\r\n  - **value** (Any): 存储值\r\n  - **expire** (Number|'today', optional): 过期时间（毫秒）或 'today' 表示当天有效\r\n  - 设置用户维度的存储项\r\n\r\n- **removeItem(key)**\r\n  - **key** (String): 存储键\r\n  - 删除存储项\r\n\r\n- **clear()**: 清空所有存储项\r\n\r\n- **keys()**: 返回所有未过期的存储键数组\r\n\r\n- **static new(args)**\r\n  - **args** (Object): 构造函数参数\r\n  - 返回 Storage 的新实例\r\n\r\n### CountRecorder\r\n\r\n#### Constructor\r\n\r\n```javascript\r\nnew CountRecorder(args)\r\n```\r\n\r\n- **args** (Object): 配置选项\r\n  - **local_sign** (String): 本地存储标识\r\n  - **total** (Number, optional): 总次数\r\n  - **expire** (Number|'today', optional): 过期时间（毫秒）或 'today' 表示当天有效\r\n  - **userId** (String|Number): 用户 ID\r\n\r\n#### Methods\r\n\r\n- **updateToday()**: 更新当天计数\r\n\r\n- **remain()**: 返回剩余次数\r\n\r\n- **static new(args)**\r\n  - **args** (Object): 构造函数参数\r\n  - 返回 CountRecorder 的新实例\r\n\r\n### PubSub\r\n\r\n#### Constructor\r\n\r\n```javascript\r\nnew PubSub()\r\n```\r\n\r\n#### Methods\r\n\r\n- **on(eventName, callback)**\r\n  - **eventName** (String): 事件名称\r\n  - **callback** (Function): 事件回调函数\r\n  - 注册一个事件监听器，返回一个取消订阅函数\r\n\r\n- **off(eventName, callback)**\r\n  - **eventName** (String): 事件名称\r\n  - **callback** (Function): 要移除的回调函数\r\n  - 移除一个事件监听器\r\n\r\n- **emit(eventName, ...args)**\r\n  - **eventName** (String): 事件名称\r\n  - **...args** (Any): 传递给回调的参数\r\n  - 触发一个事件\r\n\r\n- **once(eventName, callback)**\r\n  - **eventName** (String): 事件名称\r\n  - **callback** (Function): 事件回调函数\r\n  - 注册一个只执行一次的事件监听器\r\n\r\n- **listenerCount(eventName)**\r\n  - **eventName** (String): 事件名称\r\n  - 返回事件的监听器数量\r\n\r\n- **removeAllListeners()**: 移除所有事件监听器\r\n\r\n### SerializableError\r\n\r\n#### Constructor\r\n\r\n```javascript\r\nnew SerializableError(message, options)\r\n```\r\n\r\n- **message** (String): 错误消息\r\n- **options** (Object, optional): 配置选项\r\n  - **errMsg** (String): 错误描述\r\n  - **errorCode** (Number): 错误代码\r\n\r\n#### Methods\r\n\r\n- **toJSON()**: 返回可序列化的错误对象\r\n\r\n## License\r\n\r\nMIT\r\n","readmeFilename":"README.md"}