{"_id":"@synanetics/settings-mixin","_rev":"31-0a82c5823a409b551b579ad0550bc275","name":"@synanetics/settings-mixin","dist-tags":{"latest":"2.0.0"},"versions":{"1.0.0":{"name":"@synanetics/settings-mixin","version":"1.0.0","author":{"name":"David Tolman","email":"david.tolman@synanetics.com"},"license":" MIT","_id":"@synanetics/settings-mixin@1.0.0","maintainers":[{"name":"joseph-alton","email":"joseph.alton@synanetics.com"},{"name":"leecampbellsynanetics","email":"lee.campbell@synanetics.com"},{"name":"davidtolman","email":"david.tolman@synanetics.com"},{"name":"synsteve","email":"steve@synanetics.com"},{"name":"roborgan","email":"rob.organ@synanetics.com"}],"homepage":"https://bitbucket.org/synanetics/synanetics-common/packages/settings-mixin#readme","bugs":{"url":"https://bitbucket.org/synanetics/synanetics-common/issues"},"dist":{"shasum":"03e09792277b37c53ee0839a4100902913975635","tarball":"https://registry.npmjs.org/@synanetics/settings-mixin/-/settings-mixin-1.0.0.tgz","fileCount":16,"integrity":"sha512-OAnnUprdsMe+EihBeQtmTJtIAtKiOGk/fVxJDbpoB8b9Uw6g2ZdBFc7ZJj88qIrYUvbPqKv3kIdgVe7AOcbzWQ==","signatures":[{"sig":"MEUCIB2kwtVdiu4cRuatgHpuqMSS/WXHUaWoD75CoKNc7sEcAiEAvzgSHkS0emceTrYMU+TrrL2MdZiE29dMmQqW+IMWy74=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11923},"main":"./lib/cjs/index.js","type":"module","types":"./lib/cjs/index.d.ts","exports":{"import":"./lib/esm/index.js","require":"./lib/cjs/index.js"},"gitHead":"428561a046561537f1dc8f10e2d584509cee9db5","scripts":{"tsc":"tsc -b ./tsconfig.cjs.json ./tsconfig.esm.json","test":"NODE_OPTIONS='--experimental-vm-modules  --no-warnings' jest","pretsc":"rm -rf lib/*","posttsc":"echo '{\"type\":\"module\"}' > ./lib/esm/package.json && echo '{\"type\":\"commonjs\"}' > ./lib/cjs/package.json","tsc:watch":"tsc -b ./tsconfig.cjs.json ./tsconfig.esm.json --watch"},"_npmUser":{"name":"davidtolman","email":"david.tolman@synanetics.com"},"repository":{"url":"git+ssh://git@bitbucket.org/synanetics/synanetics-common.git","type":"git"},"_npmVersion":"9.8.0","description":"Mixin for Moleculer JS service to apply JSON settings resolved by file pattern","directories":{"lib":"lib"},"_nodeVersion":"18.16.0","dependencies":{"moleculer":"^0.14.31","deepmerge-ts":"^5.1.0","@synanetics/settings-resolver":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/settings-mixin_1.0.0_1699885249648_0.8550472506445881","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@synanetics/settings-mixin","version":"2.0.0","author":{"name":"David Tolman","email":"david.tolman@synanetics.com"},"license":" MIT","_id":"@synanetics/settings-mixin@2.0.0","maintainers":[{"name":"whay-syn","email":"warren.hayes@synanetics.com"},{"name":"sarah-gibson","email":"sarah.gibson@synanetics.com"},{"name":"lewis-synanetics","email":"lewis.donley@synanetics.com"},{"name":"oliverm-wethey","email":"oliver.musgrove-wethey@synanetics.com"},{"name":"synrichardbrown","email":"richard.brown@synanetics.com"},{"name":"gregsynanetics","email":"gergo.kekesi@synanetics.com"},{"name":"tom-synanetics","email":"tom.fletcher@synanetics.com"},{"name":"danielpeterbayley","email":"daniel.bayley@synanetics.com"},{"name":"leecampbellsynanetics","email":"lee.campbell@synanetics.com"},{"name":"davidtolman","email":"david.tolman@synanetics.com"},{"name":"synsteve","email":"steve@synanetics.com"}],"homepage":"https://bitbucket.org/synanetics/synanetics-common/packages/settings-mixin#readme","bugs":{"url":"https://bitbucket.org/synanetics/synanetics-common/issues"},"dist":{"shasum":"531a3229fcfe45fef7e29d9fb789d8095d5871eb","tarball":"https://registry.npmjs.org/@synanetics/settings-mixin/-/settings-mixin-2.0.0.tgz","fileCount":20,"integrity":"sha512-v/buNxikUCt8h9lt4x8xfZRd8toDSgjXy5YXKHnqIaBrK8v71Pz8Gfd2zYPA8xPxkK4gslvYYoG2dGqkfLSmdw==","signatures":[{"sig":"MEQCID0sfNORNhldSaqLZMfiwQH4rZNEaQZEW2mAvImmTZ1XAiAePrH9qaN1L0M/uMj7/lhH72pZMyK1OxL0dQBy0wSuLw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17555},"main":"./dist/commonjs/index.js","tshy":{"exports":{".":"./src/index.ts","./package.json":"./package.json"}},"type":"module","types":"./dist/commonjs/index.d.ts","module":"./dist/esm/index.js","exports":{".":{"import":{"types":"./dist/esm/index.d.ts","default":"./dist/esm/index.js"},"require":{"types":"./dist/commonjs/index.d.ts","default":"./dist/commonjs/index.js"}},"./package.json":"./package.json"},"gitHead":"179e7efa1d61aa3e8e1921f4971e84b77cf529e6","scripts":{"test":"jest","prepare":"tshy","pretest":"tshy"},"_npmUser":{"name":"davidtolman","email":"david.tolman@synanetics.com"},"repository":{"url":"git+ssh://git@bitbucket.org/synanetics/synanetics-common.git","type":"git"},"_npmVersion":"10.5.0","description":"Mixin for Moleculer JS service to apply JSON settings resolved by file pattern","directories":{},"_nodeVersion":"18.20.2","dependencies":{"moleculer":"^0.14.31","deepmerge-ts":"^5.1.0","@synanetics/settings-resolver":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/settings-mixin_2.0.0_1723809699659_0.07352000177422724","host":"s3://npm-registry-packages"}}},"time":{"created":"2023-11-13T14:20:49.529Z","modified":"2026-08-07T14:13:38.424Z","1.0.0":"2023-11-13T14:20:49.865Z","1.0.1":"2024-08-13T12:09:20.322Z","2.0.0":"2024-08-16T12:01:39.880Z"},"bugs":{"url":"https://bitbucket.org/synanetics/synanetics-common/issues"},"author":{"name":"David Tolman","email":"david.tolman@synanetics.com"},"license":" MIT","homepage":"https://bitbucket.org/synanetics/synanetics-common/packages/settings-mixin#readme","repository":{"url":"git+ssh://git@bitbucket.org/synanetics/synanetics-common.git","type":"git"},"description":"Mixin for Moleculer JS service to apply JSON settings resolved by file pattern","maintainers":[{"email":"warren.hayes@synanetics.com","name":"whay-syn"},{"email":"james.young@synanetics.com","name":"synjy"},{"email":"steve@synanetics.com","name":"synsteve"},{"email":"daniel.bayley@synanetics.com","name":"danielpeterbayley"},{"email":"tom.fletcher@synanetics.com","name":"tom-synanetics"},{"email":"richard.brown@synanetics.com","name":"synrichardbrown"},{"email":"lee.campbell@synanetics.com","name":"leecampbellsynanetics"},{"email":"edward.greatrex@synanetics.com","name":"edward-synanetics"},{"email":"anna.weaver@synanetics.com","name":"aviwsynanetics"},{"email":"alex@alexwhitman.com","name":"alexwhitman"}],"readme":"# `@synanetics/settings-mixin`\n\nSettings Mixin for Moleculer JS services. The mixin will attempt to resolve a local (default) settings file named after your service. Resolve environment configured overrides. Merge setting values into the service settings.\n\nIt will validate that default and override settings are structured correctly. It will also optionally look at the services existing `settings.schema` property and apply this validation schema to the resolved values.\n\n## Usage\n\n```javascript\nconst { settingsMixinSchema } = require('@synanetics/settings-mixin');\n// or\nimport { settingsMixinSchema } from '@synanetics/settings-mixin';\n\n...\n\nconst someService: ServiceSchema {\n  name: 'some',\n  mixins: [settingsMixinSchema],\n}\n```\n\n### Defaults\n\nFor this mixin to work you must provide a default settings file co-located with your service. Assume you have a service like above:\n\nsome.service.ts\n\n```javascript\nconst someService: ServiceSchema {\n  name: 'some',\n  mixins: [settingsMixinSchema],\n}\n\n```\n\nthen a corresponding file named `some.settings.json` must exist. For the structure of the contents please follow this guidance on [settings-resolver defaults](https://www.npmjs.com/package/@synanetics/settings-resolver#loading-defaults-only).\n\n### Overrides\n\nThe mixin will look for an environment variable following the name of the service. For example `some.service.ts` with `name: 'some'` would attempt to check `process.env.SOME_SETTINGS`. Please follow the guidance on [settings-resolver overrides](https://www.npmjs.com/package/@synanetics/settings-resolver#applying-overrides) to see what this value can be.\n\nIf the service specific environment variable cannot be found, the mixin will fallback to checking `process.env.SETTINGS`. If both are undefined just the default file values will be set on the service `settings`.\n\n### Value Validation\n\nYou can optionally supply additional validation schema to apply to the resolved settings to ensure that your values conform as expected. This is done by setting the service `settings.schema` to the desired validation schema. There is additional guidance on [settings-resolver additional validation](https://www.npmjs.com/package/@synanetics/settings-resolver#validating-the-resulting-object) but you would look to define a [fastest-validator](https://www.npmjs.com/package/fastest-validator) compliant schema.\n\nsome.service.ts\n\n```javascript\nconst someService: ServiceSchema {\n  name: 'some',\n  settings: {\n    schema: { ...your validation schema },\n  },\n  mixins: [settingsMixinSchema],\n}\n\n```\n\n### Errors\n\nAny errors encountered are raised as Moleculer JS specific `MoleculerError` or `ValidationError`.\n","readmeFilename":"README.md"}