{"_id":"@borisovg/service-core","_rev":"15-5126aaf79bb360b96475f26d729491db","name":"@borisovg/service-core","dist-tags":{"latest":"2.4.1"},"versions":{"1.0.0":{"name":"@borisovg/service-core","version":"1.0.0","license":"Apache-2.0","_id":"@borisovg/service-core@1.0.0","maintainers":[{"name":"borisovg","email":"git@gir.me.uk"}],"homepage":"https://github.com/borisovg/node-service-core#readme","bugs":{"url":"https://github.com/borisovg/node-service-core/issues"},"dist":{"shasum":"549c6558b3b336521237ba52d2c62c338a6d4463","tarball":"https://registry.npmjs.org/@borisovg/service-core/-/service-core-1.0.0.tgz","fileCount":27,"integrity":"sha512-kDu0qxBI96LTzaVLeW/EJvACQ3ExnYEQewwK2J1XU23CQrHG1yl9DsJn/x7bfZfKyTy6m/oIJzNKOWdqlLoUaQ==","signatures":[{"sig":"MEQCIB/J3HAksV3BxtN83Con4ldvwCxhfad+ymJSn8Ngy6p2AiAPqGHmv9mghZj9PpxvkwknC96bKd0SF++ZxfA+sz9fnQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":34717},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"75367a41e4c383b442f2f9b3e22c65db89b3267c","scripts":{"lint":"make lint","test":"make test","prepublishOnly":"make"},"_npmUser":{"name":"borisovg","email":"git@gir.me.uk"},"repository":{"url":"git+https://github.com/borisovg/node-service-core.git","type":"git"},"_npmVersion":"9.5.0","description":"Micro-framework for Node.js services","directories":{},"_nodeVersion":"18.15.0","eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["eslint:recommended","plugin:@typescript-eslint/recommended","prettier"],"plugins":["@typescript-eslint"]},"_hasShrinkwrap":false,"devDependencies":{"c8":"^8","mocha":"^10","sinon":"^17","eslint":"^8","prettier":"^3","ts-mocha":"^10","typescript":"^5","@types/node":"^20","@types/mocha":"^10","@types/sinon":"^17","eslint-plugin-import":"^2","eslint-config-prettier":"^9","@typescript-eslint/parser":"^6","@typescript-eslint/eslint-plugin":"^6"},"_npmOperationalInternal":{"tmp":"tmp/service-core_1.0.0_1701693154989_0.2293001661823557","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"@borisovg/service-core","version":"1.1.0","license":"Apache-2.0","_id":"@borisovg/service-core@1.1.0","maintainers":[{"name":"borisovg","email":"git@gir.me.uk"}],"homepage":"https://github.com/borisovg/node-service-core#readme","bugs":{"url":"https://github.com/borisovg/node-service-core/issues"},"dist":{"shasum":"6bcc8311b748a723b411ad1c0fd2051175693e56","tarball":"https://registry.npmjs.org/@borisovg/service-core/-/service-core-1.1.0.tgz","fileCount":27,"integrity":"sha512-3rJ1tML5n9dRhOqqmJ+4j4Gb6rR//XmzdYVbGZlPYlqN1LzLX512F3PYLUDIJqob5b4Pocvo0pUCkTJyUmEJdQ==","signatures":[{"sig":"MEQCIFgclJzXHpBNNM1Wpe2DwGCaQ8d4zX1d9MAGwGrM4Sn/AiAzF3u9Lz34OpKhBX6vqrLELazdyByMbE0l/I3rmpIkrw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":34904},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"66f7d194584b612977f7dc7b148be4cb9fc7ed1b","scripts":{"lint":"make lint","test":"make test","prepublishOnly":"make"},"_npmUser":{"name":"borisovg","email":"git@gir.me.uk"},"repository":{"url":"git+https://github.com/borisovg/node-service-core.git","type":"git"},"_npmVersion":"10.2.4","description":"Micro-framework for Node.js services","directories":{},"_nodeVersion":"20.11.0","eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["eslint:recommended","plugin:@typescript-eslint/recommended","prettier"],"plugins":["@typescript-eslint"]},"_hasShrinkwrap":false,"devDependencies":{"c8":"^8","mocha":"^10","sinon":"^17","eslint":"^8","prettier":"^3","ts-mocha":"^10","typescript":"^5","@types/node":"^20","@types/mocha":"^10","@types/sinon":"^17","eslint-plugin-import":"^2","eslint-config-prettier":"^9","@typescript-eslint/parser":"^6","@typescript-eslint/eslint-plugin":"^6"},"_npmOperationalInternal":{"tmp":"tmp/service-core_1.1.0_1707498797657_0.6840471160872874","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"@borisovg/service-core","version":"1.2.0","license":"Apache-2.0","_id":"@borisovg/service-core@1.2.0","maintainers":[{"name":"borisovg","email":"git@gir.me.uk"}],"homepage":"https://github.com/borisovg/node-service-core#readme","bugs":{"url":"https://github.com/borisovg/node-service-core/issues"},"dist":{"shasum":"84be23c05e7ed4e37c9c8c64de3924a1ce64101c","tarball":"https://registry.npmjs.org/@borisovg/service-core/-/service-core-1.2.0.tgz","fileCount":31,"integrity":"sha512-GOrDwmFXaY764WKgjaSm88PezECa+j2XZ9VvPsqd33kzfjg99oqnrX3X8ViG2gr7Lr+UlUSZWr6h3lpYaopuOg==","signatures":[{"sig":"MEUCICLLbMk3FUKZjxEcJnfOhvAtmkDYA+SRsV5jLYU2X6edAiEA/yShb9T3j7jJ+1kcKRKWejqJjFRIvNJ5ApxnR89MwFk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":36787},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"6588a7da55266c84dc01bb497ef88233b7abebb5","scripts":{"lint":"make lint","test":"make test","prepublishOnly":"make"},"_npmUser":{"name":"borisovg","email":"git@gir.me.uk"},"prettier":{"tabWidth":2,"singleQuote":true},"repository":{"url":"git+https://github.com/borisovg/node-service-core.git","type":"git"},"_npmVersion":"10.2.4","description":"Micro-framework for Node.js services","directories":{},"_nodeVersion":"20.11.0","eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["eslint:recommended","plugin:@typescript-eslint/recommended","prettier"],"plugins":["@typescript-eslint"]},"_hasShrinkwrap":false,"devDependencies":{"c8":"^8","mocha":"^10","sinon":"^17","eslint":"^8","prettier":"^3","ts-mocha":"^10","typescript":"^5","@types/node":"^20","@types/mocha":"^10","@types/sinon":"^17","eslint-plugin-import":"^2","eslint-config-prettier":"^9","@typescript-eslint/parser":"^6","@typescript-eslint/eslint-plugin":"^6"},"_npmOperationalInternal":{"tmp":"tmp/service-core_1.2.0_1707503294749_0.10948132146762579","host":"s3://npm-registry-packages"}},"1.2.1":{"name":"@borisovg/service-core","version":"1.2.1","license":"Apache-2.0","_id":"@borisovg/service-core@1.2.1","maintainers":[{"name":"borisovg","email":"git@gir.me.uk"}],"homepage":"https://github.com/borisovg/node-service-core#readme","bugs":{"url":"https://github.com/borisovg/node-service-core/issues"},"dist":{"shasum":"9edfd194e41bde7dcb83e3efb3c2fe7797de069e","tarball":"https://registry.npmjs.org/@borisovg/service-core/-/service-core-1.2.1.tgz","fileCount":31,"integrity":"sha512-UpGtXH3fUe0b7Cs69nNzSdWUg8sFeJtPSA2AMfIUj4XTn/Oi7tEcgRCV25tsa3q/1mWfiBC5ioOmZm2apb882w==","signatures":[{"sig":"MEUCIFrSoFM/c3scfh+uEkBPSIdwG49DYzRnRSSJ/KPreXkFAiEAsMJVrG622qtYdfsqn4HqrQODoBGNlhrnCPTeAlH+Y58=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":36787},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"07791eeeae08a3d83dbf7635b4e9c04528950062","scripts":{"lint":"make lint","test":"make test","prepublishOnly":"make"},"_npmUser":{"name":"borisovg","email":"git@gir.me.uk"},"prettier":{"tabWidth":2,"singleQuote":true},"repository":{"url":"git+https://github.com/borisovg/node-service-core.git","type":"git"},"_npmVersion":"9.2.0","description":"Micro-framework for Node.js services","directories":{},"_nodeVersion":"18.19.0","eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["eslint:recommended","plugin:@typescript-eslint/recommended","prettier"],"plugins":["@typescript-eslint"]},"_hasShrinkwrap":false,"devDependencies":{"c8":"^9","mocha":"^10","sinon":"^17","eslint":"^8","prettier":"^3","ts-mocha":"^10","typescript":"^5","@types/node":"^20","@types/mocha":"^10","@types/sinon":"^17","eslint-plugin-import":"^2","eslint-config-prettier":"^9","@typescript-eslint/parser":"^6","@typescript-eslint/eslint-plugin":"^6"},"_npmOperationalInternal":{"tmp":"tmp/service-core_1.2.1_1707517234038_0.23205025916581068","host":"s3://npm-registry-packages"}},"1.3.0":{"name":"@borisovg/service-core","version":"1.3.0","license":"Apache-2.0","_id":"@borisovg/service-core@1.3.0","maintainers":[{"name":"borisovg","email":"git@gir.me.uk"}],"homepage":"https://github.com/borisovg/node-service-core#readme","bugs":{"url":"https://github.com/borisovg/node-service-core/issues"},"dist":{"shasum":"7d9d275c2b7f60c35ccc2c992fcefc7cb1105d7b","tarball":"https://registry.npmjs.org/@borisovg/service-core/-/service-core-1.3.0.tgz","fileCount":35,"integrity":"sha512-E3yGU85HuWxiOnL9TOtCquShIRpjH/GEhUWTqsQnNopowfSd3HRc2raW9xtdYXNMGFuX0WB1e2UN789bCzLm7g==","signatures":[{"sig":"MEUCIGBvvPMHQIHtpiZoP4eD6y4MhC4yQQY6ecRJX1006+pnAiEAw9Po1tP9pPRX+G1DKbSAwROy9K4+GE4v1CER2OsHUWs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":43141},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"a671ae8bc917c93c4b0ec32d207355a96e57bd0c","scripts":{"lint":"make lint","test":"make test","prepublishOnly":"make"},"_npmUser":{"name":"borisovg","email":"git@gir.me.uk"},"prettier":{"tabWidth":2,"singleQuote":true},"repository":{"url":"git+https://github.com/borisovg/node-service-core.git","type":"git"},"_npmVersion":"10.2.4","description":"Micro-framework for Node.js services","directories":{},"_nodeVersion":"20.11.1","eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["eslint:recommended","plugin:@typescript-eslint/recommended","prettier"],"plugins":["@typescript-eslint"]},"_hasShrinkwrap":false,"devDependencies":{"c8":"^9","mocha":"^10","sinon":"^17","eslint":"^8","prettier":"^3","ts-mocha":"^10","typescript":"^5","@types/node":"^20","@types/mocha":"^10","@types/sinon":"^17","eslint-plugin-import":"^2","eslint-config-prettier":"^9","@typescript-eslint/parser":"^7","@typescript-eslint/eslint-plugin":"^7"},"_npmOperationalInternal":{"tmp":"tmp/service-core_1.3.0_1708558695603_0.018650049937171564","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@borisovg/service-core","version":"2.0.0","license":"Apache-2.0","_id":"@borisovg/service-core@2.0.0","maintainers":[{"name":"borisovg","email":"git@gir.me.uk"}],"homepage":"https://github.com/borisovg/node-service-core#readme","bugs":{"url":"https://github.com/borisovg/node-service-core/issues"},"dist":{"shasum":"9b9e3b8477fa322adba8163960ddabd786ba397d","tarball":"https://registry.npmjs.org/@borisovg/service-core/-/service-core-2.0.0.tgz","fileCount":47,"integrity":"sha512-yTJkf/aJtOCbEE3x16qBzmrd8eJ8UIPcjLZFijjh1hyROTeCDkU6dE2LLwWH/u6ZexOZyLB8gm/G8ThMIdrFJA==","signatures":[{"sig":"MEYCIQCuhXrUuNujQa4xzzJ7ZMVnaK44w14jMRg/YOlp5tS71gIhAKBTkZRh9c/sHY/z4mj0ulKucyV3k1dGpWF23ua8y9lK","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":50197},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"50191e4f1aa857eb081892ed5c92c42dc79f6fb6","scripts":{"lint":"make lint","test":"make test","prepublishOnly":"make"},"_npmUser":{"name":"borisovg","email":"git@gir.me.uk"},"prettier":{"tabWidth":2,"singleQuote":true},"repository":{"url":"git+https://github.com/borisovg/node-service-core.git","type":"git"},"_npmVersion":"10.2.4","description":"Micro-framework for Node.js services","directories":{},"_nodeVersion":"20.11.1","eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["eslint:recommended","plugin:@typescript-eslint/recommended","prettier"],"plugins":["@typescript-eslint"]},"_hasShrinkwrap":false,"devDependencies":{"c8":"^9","mocha":"^10","sinon":"^17","eslint":"^8","prettier":"^3","ts-mocha":"^10","typescript":"^5","@types/node":"^20","@types/mocha":"^10","@types/sinon":"^17","eslint-plugin-import":"^2","eslint-config-prettier":"^9","@typescript-eslint/parser":"^7","@typescript-eslint/eslint-plugin":"^7"},"_npmOperationalInternal":{"tmp":"tmp/service-core_2.0.0_1711989912254_0.9640722642362578","host":"s3://npm-registry-packages"}},"2.0.1":{"name":"@borisovg/service-core","version":"2.0.1","license":"Apache-2.0","_id":"@borisovg/service-core@2.0.1","maintainers":[{"name":"borisovg","email":"git@gir.me.uk"}],"homepage":"https://github.com/borisovg/node-service-core#readme","bugs":{"url":"https://github.com/borisovg/node-service-core/issues"},"dist":{"shasum":"a2ede3325136767cf6c7035448faacc76851aa51","tarball":"https://registry.npmjs.org/@borisovg/service-core/-/service-core-2.0.1.tgz","fileCount":47,"integrity":"sha512-5ZjjjKvH7/ELuo8dMTTfWsA5OTQoVzZUKpfZG3sfUqA82f5O8Wg6/Jq5H/WjYmKe6BeQ6VXI1vqsXpUuI5N7vw==","signatures":[{"sig":"MEUCIQD/6q0EOFgZS+iumbUsp05s8Gb9cnQkOBqQLRfCgdanawIgBr7xGHXpEtAQ0EQUf9/ZlviEQ3B8C+QR2gF8ZQHO3zs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":50272},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"295f894923ee125e5db7086298964d8f71ae02e5","scripts":{"lint":"make lint","test":"make test","prepublishOnly":"make"},"_npmUser":{"name":"borisovg","email":"git@gir.me.uk"},"prettier":{"tabWidth":2,"singleQuote":true},"repository":{"url":"git+https://github.com/borisovg/node-service-core.git","type":"git"},"_npmVersion":"10.2.4","description":"Micro-framework for Node.js services","directories":{},"_nodeVersion":"20.11.1","eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["eslint:recommended","plugin:@typescript-eslint/recommended","prettier"],"plugins":["@typescript-eslint"]},"_hasShrinkwrap":false,"devDependencies":{"c8":"^9","mocha":"^10","sinon":"^17","eslint":"^8","prettier":"^3","ts-mocha":"^10","typescript":"^5","@types/node":"^20","@types/mocha":"^10","@types/sinon":"^17","eslint-plugin-import":"^2","eslint-config-prettier":"^9","@typescript-eslint/parser":"^7","@typescript-eslint/eslint-plugin":"^7"},"_npmOperationalInternal":{"tmp":"tmp/service-core_2.0.1_1711994981628_0.7610399846882343","host":"s3://npm-registry-packages"}},"2.1.0":{"name":"@borisovg/service-core","version":"2.1.0","license":"Apache-2.0","_id":"@borisovg/service-core@2.1.0","maintainers":[{"name":"borisovg","email":"git@gir.me.uk"}],"homepage":"https://github.com/borisovg/node-service-core#readme","bugs":{"url":"https://github.com/borisovg/node-service-core/issues"},"dist":{"shasum":"dc71160ad39845162737260a1ef5a46f477205f5","tarball":"https://registry.npmjs.org/@borisovg/service-core/-/service-core-2.1.0.tgz","fileCount":47,"integrity":"sha512-ektThZ8+LyzzUHrl2Al+OWOjCaDnbYZ/bY68x0S3DyEYfna4zl56bxKsrAlnZSF/XBJTkJVE2cnvUBa9PEt9OQ==","signatures":[{"sig":"MEYCIQCWitEnvvjWGGU0SEGxvMX7B1tvkucLtuwEZXRbmcbfsgIhAN73+O+w6vRHNAdXhI+SDHoQVBbk/kx1CqtGpkKjUy8Q","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":50363},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"df9a9bcdb856bf7bc0063bde89dd1fce998e6a49","scripts":{"lint":"make lint","test":"make test","prepublishOnly":"make"},"_npmUser":{"name":"borisovg","email":"git@gir.me.uk"},"prettier":{"tabWidth":2,"singleQuote":true},"repository":{"url":"git+https://github.com/borisovg/node-service-core.git","type":"git"},"_npmVersion":"10.2.4","description":"Micro-framework for Node.js services","directories":{},"_nodeVersion":"20.11.1","eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["eslint:recommended","plugin:@typescript-eslint/recommended","prettier"],"plugins":["@typescript-eslint"]},"_hasShrinkwrap":false,"devDependencies":{"c8":"^9.1.0","mocha":"^10.4.0","sinon":"^17.0.1","eslint":"^8.57.0","prettier":"^3.2.5","ts-mocha":"^10.0.0","typescript":"^5.4.5","@types/node":"^20.12.7","@types/mocha":"^10.0.6","@types/sinon":"^17.0.3","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^9.1.0","@typescript-eslint/parser":"^7.7.0","@typescript-eslint/eslint-plugin":"^7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/service-core_2.1.0_1713525914516_0.9701103731279372","host":"s3://npm-registry-packages"}},"2.1.1":{"name":"@borisovg/service-core","version":"2.1.1","license":"Apache-2.0","_id":"@borisovg/service-core@2.1.1","maintainers":[{"name":"borisovg","email":"git@gir.me.uk"}],"homepage":"https://github.com/borisovg/node-service-core#readme","bugs":{"url":"https://github.com/borisovg/node-service-core/issues"},"dist":{"shasum":"ba93dbd4f8e21f3f154318e50763492eaa9bf88c","tarball":"https://registry.npmjs.org/@borisovg/service-core/-/service-core-2.1.1.tgz","fileCount":47,"integrity":"sha512-mCiBb8lYL1pbrVbnupWXCjZcEyCvkT9rErAC7uFcGVqbYxiEgqUo1/a7TopXdzCCFtWNrHUqJXIWsvUBDK9Axw==","signatures":[{"sig":"MEQCIHext3p7jHPkSprOsTYbfTR6cN6n+Oax+iuQIQ3f925zAiBnzz6aCzuNQZXQ+SWQRKR0dtRKW/Py6n80AHMbO+Kz4g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":50363},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"f65a76cb2557e379bd7287a9ea3d74273f1e5d8d","scripts":{"lint":"make lint","test":"make test","prepublishOnly":"make"},"_npmUser":{"name":"borisovg","email":"git@gir.me.uk"},"prettier":{"tabWidth":2,"singleQuote":true},"repository":{"url":"git+https://github.com/borisovg/node-service-core.git","type":"git"},"_npmVersion":"10.2.4","description":"Micro-framework for Node.js services","directories":{},"_nodeVersion":"20.11.1","eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["eslint:recommended","plugin:@typescript-eslint/recommended","prettier"],"plugins":["@typescript-eslint"]},"_hasShrinkwrap":false,"devDependencies":{"c8":"^9.1.0","mocha":"^10.4.0","sinon":"^17.0.1","eslint":"^8.57.0","prettier":"^3.2.5","ts-mocha":"^10.0.0","typescript":"^5.4.5","@types/node":"^20.12.7","@types/mocha":"^10.0.6","@types/sinon":"^17.0.3","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^9.1.0","@typescript-eslint/parser":"^7.7.0","@typescript-eslint/eslint-plugin":"^7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/service-core_2.1.1_1713526120327_0.4022657124148443","host":"s3://npm-registry-packages"}},"2.1.2":{"name":"@borisovg/service-core","version":"2.1.2","license":"Apache-2.0","_id":"@borisovg/service-core@2.1.2","maintainers":[{"name":"borisovg","email":"git@gir.me.uk"}],"homepage":"https://github.com/borisovg/node-service-core#readme","bugs":{"url":"https://github.com/borisovg/node-service-core/issues"},"dist":{"shasum":"ddcf6fb79913e5a5437a9a795ca0e386a02f515c","tarball":"https://registry.npmjs.org/@borisovg/service-core/-/service-core-2.1.2.tgz","fileCount":47,"integrity":"sha512-IZGCwG4mYdSpFCyjHn9hArQHe9UuX93Lljf/CKzeoBrSU88ItTSlKQRy39F/uog/ndCFu7xm9k0PjkZtUC+pjg==","signatures":[{"sig":"MEUCIQC3W8UH2eFJX9wgOdrex3JmSCx9Ekb72zeL7B4T4io09QIgW8yBUp78R6FMW2raNUkDOcJdjg4tu+gMX8DgcIEH1ds=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":50714},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"ca15b82305ad74adf2be0a40474824607afaac53","scripts":{"lint":"make lint","test":"make test","prepublishOnly":"make"},"_npmUser":{"name":"borisovg","email":"git@gir.me.uk"},"prettier":{"tabWidth":2,"singleQuote":true},"repository":{"url":"git+https://github.com/borisovg/node-service-core.git","type":"git"},"_npmVersion":"10.5.2","description":"Micro-framework for Node.js services","directories":{},"_nodeVersion":"20.11.1","eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["eslint:recommended","plugin:@typescript-eslint/recommended","prettier"],"plugins":["@typescript-eslint"]},"_hasShrinkwrap":false,"packageManager":"pnpm@9.0.4+sha512.c374b52de3de88c58fd8333df664a737279cdb0e1344ba4054d3b1fffa9a1a3670854f755dca4f16adea3f14be9896a7fcaf167409fe0c1ad60475271dafe81a","devDependencies":{"c8":"^9.1.0","mocha":"^10.4.0","sinon":"^17.0.1","eslint":"^8.57.0","prettier":"^3.2.5","ts-mocha":"^10.0.0","typescript":"^5.4.5","@types/node":"^20.12.7","@types/mocha":"^10.0.6","@types/sinon":"^17.0.3","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^9.1.0","@typescript-eslint/parser":"^7.7.0","@typescript-eslint/eslint-plugin":"^7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/service-core_2.1.2_1713538035247_0.8778093238069893","host":"s3://npm-registry-packages"}},"2.1.3":{"name":"@borisovg/service-core","version":"2.1.3","license":"Apache-2.0","_id":"@borisovg/service-core@2.1.3","maintainers":[{"name":"borisovg","email":"git@gir.me.uk"}],"homepage":"https://github.com/borisovg/node-service-core#readme","bugs":{"url":"https://github.com/borisovg/node-service-core/issues"},"dist":{"shasum":"136f25da0e366c1d74a43b55fdb522cf3f7e62b6","tarball":"https://registry.npmjs.org/@borisovg/service-core/-/service-core-2.1.3.tgz","fileCount":47,"integrity":"sha512-/PLqYomzlh3iyHROK6eR2eqqpNBGb9yo1g7zeM3DRXt5Lv1STO8c8D75UhhgMgqOuGFb8g/bkB+99v2kHac7Dw==","signatures":[{"sig":"MEQCIEGhjO3d1hBONC2+tss9ncZPF43W588cccW2RFAlVnqwAiB826ZtYI7SejHK2JfbjcmyLWeAhmdJCUWddQ+vuOWovQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":50785},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"8a1267d8b5af41458c59d5f96e3850d883844dea","scripts":{"lint":"make lint","test":"make test","prepublishOnly":"make"},"_npmUser":{"name":"borisovg","email":"git@gir.me.uk"},"prettier":{"tabWidth":2,"singleQuote":true},"repository":{"url":"git+https://github.com/borisovg/node-service-core.git","type":"git"},"_npmVersion":"10.5.2","description":"Micro-framework for Node.js services","directories":{},"_nodeVersion":"20.11.1","eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["eslint:recommended","plugin:@typescript-eslint/recommended","prettier"],"plugins":["@typescript-eslint"]},"_hasShrinkwrap":false,"packageManager":"pnpm@9.0.4+sha512.c374b52de3de88c58fd8333df664a737279cdb0e1344ba4054d3b1fffa9a1a3670854f755dca4f16adea3f14be9896a7fcaf167409fe0c1ad60475271dafe81a","devDependencies":{"c8":"^9.1.0","mocha":"^10.4.0","sinon":"^17.0.1","eslint":"^8.57.0","prettier":"^3.2.5","ts-mocha":"^10.0.0","typescript":"^5.4.5","@types/node":"^20.12.7","@types/mocha":"^10.0.6","@types/sinon":"^17.0.3","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^9.1.0","@typescript-eslint/parser":"^7.7.0","@typescript-eslint/eslint-plugin":"^7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/service-core_2.1.3_1713721949359_0.33193397413171644","host":"s3://npm-registry-packages"}},"2.2.0":{"name":"@borisovg/service-core","version":"2.2.0","license":"Apache-2.0","_id":"@borisovg/service-core@2.2.0","maintainers":[{"name":"borisovg","email":"git@gir.me.uk"}],"homepage":"https://github.com/borisovg/node-service-core#readme","bugs":{"url":"https://github.com/borisovg/node-service-core/issues"},"dist":{"shasum":"1da8b7663b98fe0fff21a675821850f397cdf5d4","tarball":"https://registry.npmjs.org/@borisovg/service-core/-/service-core-2.2.0.tgz","fileCount":47,"integrity":"sha512-xwzAGN2SdTvax4N18N1terlZMi+TX3Zy+Dwx3Xc26vkMh2q6s829Iuxqx2jn79Z6qjngt8+0WcRR0mVQfuY1lQ==","signatures":[{"sig":"MEUCIQCkr8A6RBt0udhBabHhIRbpcxyiS/LVOVFKVjc+AhWCZgIgbHdi4AlxzOy8+NO0J5BQeeYelvl+kRCzANpk+K670i0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":50978},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"2e967d2bbe40a3a9a846a287d97f60fcd6641faa","scripts":{"lint":"make lint","test":"make test","prepublishOnly":"make"},"_npmUser":{"name":"borisovg","email":"git@gir.me.uk"},"prettier":{"tabWidth":2,"singleQuote":true},"repository":{"url":"git+https://github.com/borisovg/node-service-core.git","type":"git"},"_npmVersion":"10.5.0","description":"Micro-framework for Node.js services","directories":{},"_nodeVersion":"20.11.0","eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["eslint:recommended","plugin:@typescript-eslint/recommended","prettier"],"plugins":["@typescript-eslint"]},"_hasShrinkwrap":false,"packageManager":"pnpm@9.0.4+sha512.c374b52de3de88c58fd8333df664a737279cdb0e1344ba4054d3b1fffa9a1a3670854f755dca4f16adea3f14be9896a7fcaf167409fe0c1ad60475271dafe81a","devDependencies":{"c8":"^9.1.0","mocha":"^10.4.0","sinon":"^17.0.1","eslint":"^8.57.0","prettier":"^3.2.5","ts-mocha":"^10.0.0","typescript":"^5.4.5","@types/node":"^20.12.7","@types/mocha":"^10.0.6","@types/sinon":"^17.0.3","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^9.1.0","@typescript-eslint/parser":"^7.7.1","@typescript-eslint/eslint-plugin":"^7.7.1"},"_npmOperationalInternal":{"tmp":"tmp/service-core_2.2.0_1714380549441_0.297664551021519","host":"s3://npm-registry-packages"}},"2.3.0":{"name":"@borisovg/service-core","version":"2.3.0","license":"Apache-2.0","_id":"@borisovg/service-core@2.3.0","maintainers":[{"name":"borisovg","email":"git@gir.me.uk"}],"homepage":"https://github.com/borisovg/node-service-core#readme","bugs":{"url":"https://github.com/borisovg/node-service-core/issues"},"dist":{"shasum":"078c2d04aa16e5e31fc10dcb2a33588e1a2cc133","tarball":"https://registry.npmjs.org/@borisovg/service-core/-/service-core-2.3.0.tgz","fileCount":43,"integrity":"sha512-DB7O/BkHWn1xuNLdX/3WqFceFAtBUU/2DySXJdg+TPyVfuRVjVrtpijmGP2WLqoTuf1ZQx+1XjOYhBML56qelQ==","signatures":[{"sig":"MEYCIQCnBNfJfDcrvM9cjUzqtvnH1IaMzp9pYs0+RKMANdJAlAIhALV6RlvaRaSvSu6Fmvnz9584hoCUBFecguUp1s6nBnGO","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":50027},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"2259df9196cdc05e71e50e712dff782ed437ce2a","scripts":{"lint":"make lint","test":"make test","prepublishOnly":"make"},"_npmUser":{"name":"borisovg","email":"git@gir.me.uk"},"prettier":{"tabWidth":2,"singleQuote":true},"repository":{"url":"git+https://github.com/borisovg/node-service-core.git","type":"git"},"_npmVersion":"10.7.0","description":"Micro-framework for Node.js services","directories":{},"_nodeVersion":"20.11.1","eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["eslint:recommended","plugin:@typescript-eslint/recommended","prettier"],"plugins":["@typescript-eslint"]},"_hasShrinkwrap":false,"devDependencies":{"c8":"^9.1.0","mocha":"^10.4.0","sinon":"^17.0.2","eslint":"^8.57.0","prettier":"^3.2.5","ts-mocha":"^10.0.0","typescript":"^5.4.5","@types/node":"^20.12.11","@types/mocha":"^10.0.6","@types/sinon":"^17.0.3","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^9.1.0","@typescript-eslint/parser":"^7.8.0","@typescript-eslint/eslint-plugin":"^7.8.0"},"_npmOperationalInternal":{"tmp":"tmp/service-core_2.3.0_1715364519843_0.1692462001398558","host":"s3://npm-registry-packages"}},"2.4.0":{"name":"@borisovg/service-core","version":"2.4.0","license":"Apache-2.0","_id":"@borisovg/service-core@2.4.0","maintainers":[{"name":"borisovg","email":"git@gir.me.uk"}],"homepage":"https://github.com/borisovg/node-service-core#readme","bugs":{"url":"https://github.com/borisovg/node-service-core/issues"},"dist":{"shasum":"fe01babfa9f3494723b9030ae83d705040d873a8","tarball":"https://registry.npmjs.org/@borisovg/service-core/-/service-core-2.4.0.tgz","fileCount":44,"integrity":"sha512-0UVZxzvZ65JLv1wdteBTQ3DSFUZ04r7472vkITlNJ/9VFSVQsnClBKwLEMNwknJ4VF8rKeeujCjS3c0LrtkGsg==","signatures":[{"sig":"MEQCIGvb4MH0tShGI5JTOWUjaA+6xk27dxOvVT/l2VoapSp4AiBlgXFBDAaojXcBocFjW1D+k7mLdZpYtsLtH7NMxwNVXQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49986},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"3bb77b0340c4badc1c61a27019b047484f60e421","scripts":{"lint":"make lint","test":"make test","prepublishOnly":"make"},"_npmUser":{"name":"borisovg","email":"git@gir.me.uk"},"repository":{"url":"git+https://github.com/borisovg/node-service-core.git","type":"git"},"_npmVersion":"11.8.0","description":"Micro-framework for Node.js services","directories":{},"_nodeVersion":"24.13.1","_hasShrinkwrap":false,"devDependencies":{"nyc":"^17","mocha":"^11","sinon":"^21","ts-mocha":"^11","typescript":"^5","@types/node":"^24","@types/mocha":"^10","@types/sinon":"^17","@biomejs/biome":"^2"},"_npmOperationalInternal":{"tmp":"tmp/service-core_2.4.0_1774187347665_0.04407232007949613","host":"s3://npm-registry-packages-npm-production"}},"2.4.1":{"name":"@borisovg/service-core","version":"2.4.1","description":"Micro-framework for Node.js services","license":"Apache-2.0","main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"lint":"make lint","prepublishOnly":"make","test":"make test"},"engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"devDependencies":{"@biomejs/biome":"^2","@types/mocha":"^10","@types/node":"^25","@types/sinon":"^21","mocha":"^11","nyc":"^18","sinon":"^21","ts-mocha":"^11","typescript":"^6"},"repository":{"type":"git","url":"git+https://github.com/borisovg/node-service-core.git"},"gitHead":"8580b60e17236c1ffb1b75b604dd486bf4ee22f4","_id":"@borisovg/service-core@2.4.1","bugs":{"url":"https://github.com/borisovg/node-service-core/issues"},"homepage":"https://github.com/borisovg/node-service-core#readme","_nodeVersion":"24.13.1","_npmVersion":"11.8.0","dist":{"integrity":"sha512-BbFPGYhMgyx+hgvR2fKlxxM9ZocZ2jGNXiMN3LgJGdSQ7C5NgP7BAV0che/BeL6Bx3KqHAIQOPJSD8EYhxL9iw==","shasum":"eb1ab3b79cea072fffefe0eb286bb2d662f75089","tarball":"https://registry.npmjs.org/@borisovg/service-core/-/service-core-2.4.1.tgz","fileCount":45,"unpackedSize":50249,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIC//+y7a3h/YwQWfKEccobSCUZpMiC9tpMY3O2Qmfc28AiBSBA+tgy0ef9Q5Djsoxl7EVSm/82aOh+3QlJsFHa4gCA=="}]},"_npmUser":{"name":"borisovg","email":"git@gir.me.uk"},"directories":{},"maintainers":[{"name":"borisovg","email":"git@gir.me.uk"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/service-core_2.4.1_1776199015084_0.6479157019989368"},"_hasShrinkwrap":false}},"time":{"created":"2023-12-04T12:32:34.871Z","modified":"2026-04-14T20:36:55.362Z","1.0.0":"2023-12-04T12:32:35.223Z","1.1.0":"2024-02-09T17:13:17.925Z","1.2.0":"2024-02-09T18:28:14.971Z","1.2.1":"2024-02-09T22:20:34.204Z","1.3.0":"2024-02-21T23:38:15.854Z","2.0.0":"2024-04-01T16:45:12.397Z","2.0.1":"2024-04-01T18:09:41.795Z","2.1.0":"2024-04-19T11:25:14.697Z","2.1.1":"2024-04-19T11:28:40.484Z","2.1.2":"2024-04-19T14:47:15.473Z","2.1.3":"2024-04-21T17:52:30.036Z","2.2.0":"2024-04-29T08:49:09.645Z","2.3.0":"2024-05-10T18:08:39.990Z","2.4.0":"2026-03-22T13:49:07.814Z","2.4.1":"2026-04-14T20:36:55.241Z"},"bugs":{"url":"https://github.com/borisovg/node-service-core/issues"},"license":"Apache-2.0","homepage":"https://github.com/borisovg/node-service-core#readme","repository":{"type":"git","url":"git+https://github.com/borisovg/node-service-core.git"},"description":"Micro-framework for Node.js services","maintainers":[{"name":"borisovg","email":"git@gir.me.uk"}],"readme":"# node-service-core\n\nThis is a micro-framework for building Node.js services.\n\n## Usage example\n\n```bash\nnpm install @borisovg/service-core pino\n```\n\n```ts\nimport { load, setLogger } from '@borisovg/service-core';\nimport { pino } from 'pino';\n\nsetLogger(pino());\nvoid load(`${__dirname}/modules`);\n```\n\n## Plugin pattern\n\nThe basic idea behind the framework is the ability to (recursively) auto-load program files from a given directory without having explicitly know about the existence of individual files.\nThis allows for rapid development of autonomous or loosely-coupled components.\nAn example of where this might be immediately useful is a collection of HTTP API handlers, that can be split into individual files, each housed in a domain-specific sub-directory - something that normally would require tedious boilerplate to load at startup.\n\nIn addition to auto-loading, each file can optionally export some hook methods:\n\n- `$onBind(sr: ServiceRegistry, name: string) => Promise<void>` which are run first, blocking start-up until they complete\n- `$onLoad(sr: ServiceRegistry, name: string) => Promise<void>` which are run after, blocking start-up until they complete\n- `$onRun(sr: ServiceRegistry, name:string) => Promise<void>` which are run after, blocking start-up until they complete\n- `$onShutdown(sr: ServiceRegistry, name: string) => Promise<void>` which are run at shutdown, blocking exit until they complete\n\nAs an contrived example, we can add the following under `modules/loop.ts`:\n\n```ts\nimport { getLogger } from '@borisovg/service-core';\n\nconst log = getLogger();\nlet timeout: NodeJS.Timeout;\n\nexport function $onLoad() {\n  timeout = setInterval(() => {\n    log.info({ message: 'TICK' });\n  }, 1000);\n}\n\nexport function $onShutdown() {\n  clearInterval(timeout);\n}\n```\n\nThis module will start logging messages on startup and will clear the timeout before exiting.\nAdding `$onShutdown()` hooks is particularly useful for stopping various event loops during testing, as these may otherwise prevent the test runner from exiting.\n\n## Service Registry\n\nThe module hook methods will be called with a service registry object.\nModules can add new methods and call methods defined by other modules.\nDuring testing this also makes it easy to mock these methods as required.\n\nAs a contrived example our `modules/foo.ts` will add a method to the service registry and re-implement the loop from the example above using built-in loops module:\n\n```ts\nimport type { CoreServiceRegistry } from '@borisovg/service-core';\n\n// defined this in top-level \"types.ts\" file to include all methods your application adds\nexport type ServiceRegistry = CoreServiceRegistry & {\n  hello: {\n    greet: (name: string) => void;\n  };\n};\n\n// only use \"$onBind\" to add methods to the registry\nexport function $onBind(sr: ServiceRegistry) {\n  sr.hello = {\n    greet(name) {\n      console.log(`Hello ${name}!`);\n    },\n  };\n}\n\nexport function $onRun(sr: ServiceRegistry, name: string) {\n  sr.core.loops.add(name, 1000, () => {\n    sr.hello.greet('World');\n  });\n}\n```\n","readmeFilename":"README.md"}