{"_id":"@synanetics/settings-resolver","_rev":"35-812ae315ad0ff2364e5ed7f16c2813a5","name":"@synanetics/settings-resolver","dist-tags":{"latest":"2.0.0"},"versions":{"0.0.0":{"name":"@synanetics/settings-resolver","version":"0.0.0","author":{"name":"David Tolman","email":"david.tolman@synanetics.com"},"license":"MIT","_id":"@synanetics/settings-resolver@0.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-resolver#readme","bugs":{"url":"https://bitbucket.org/synanetics/synanetics-common/issues"},"dist":{"shasum":"f0c907a0547624186f4ad8251779ad5bdb3c5b54","tarball":"https://registry.npmjs.org/@synanetics/settings-resolver/-/settings-resolver-0.0.0.tgz","fileCount":16,"integrity":"sha512-99MoW0aNMd5C/ANQ8nEpwQA2NnF8LA6wvQ8MtrxpPC5bcthaPym/OcrEb9Yjvk3sGx5j6hT5nlIVa8KUjeYUyg==","signatures":[{"sig":"MEQCIAXJSs01aq+jmC8t9pNdFosV8FeQpG6R289a9au2DrRdAiBMO3XC6qFD2DgRuIFZamGGQdatD6l5ktugZ9+hjYWeCQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19744},"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":"9a51473eb7991dddd61a6d4539d5510e02269be7","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":"Settings mixin for MoleculerJS","directories":{"lib":"lib","test":"tests"},"_nodeVersion":"18.16.0","dependencies":{"lodash.set":"^4.3.2","fastest-validator":"^1.17.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/lodash.set":"^4.3.7"},"_npmOperationalInternal":{"tmp":"tmp/settings-resolver_0.0.0_1698773274289_0.7441503878733724","host":"s3://npm-registry-packages"}},"1.0.0":{"name":"@synanetics/settings-resolver","version":"1.0.0","author":{"name":"David Tolman","email":"david.tolman@synanetics.com"},"license":"MIT","_id":"@synanetics/settings-resolver@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-resolver#readme","bugs":{"url":"https://bitbucket.org/synanetics/synanetics-common/issues"},"dist":{"shasum":"f849a81fab4c194030d205e98f4febcaee24826b","tarball":"https://registry.npmjs.org/@synanetics/settings-resolver/-/settings-resolver-1.0.0.tgz","fileCount":16,"integrity":"sha512-hoAvcNQ9fLk0QO15xSte4gkDhpYCXj2m6j/N6Sqen6gkDB6MoMle17DIXtZh5H3YEDl3wo7nI/pn3csgvtLadw==","signatures":[{"sig":"MEYCIQDdRX06v0BFGjN4HD1g+6YT0SiUAP1ZY8t2znl7yvwI4QIhAPfBE8+IJtgDuQPpChMR9Vu40lGBNV8+GHsglIFsA7C6","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20317},"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":"0569520ea39c61c70ecdd967f59b62764def000f","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":"Settings mixin for MoleculerJS","directories":{"lib":"lib","test":"tests"},"_nodeVersion":"18.16.0","dependencies":{"lodash.set":"^4.3.2","fastest-validator":"^1.17.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/lodash.set":"^4.3.7"},"_npmOperationalInternal":{"tmp":"tmp/settings-resolver_1.0.0_1698777863101_0.7485543291925498","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@synanetics/settings-resolver","version":"1.0.1","author":{"name":"David Tolman","email":"david.tolman@synanetics.com"},"license":"MIT","_id":"@synanetics/settings-resolver@1.0.1","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-resolver#readme","bugs":{"url":"https://bitbucket.org/synanetics/synanetics-common/issues"},"dist":{"shasum":"e384650a2b3e405952d74fd5327b29186ea95255","tarball":"https://registry.npmjs.org/@synanetics/settings-resolver/-/settings-resolver-1.0.1.tgz","fileCount":16,"integrity":"sha512-nJlYtdISopgxnaMoxUdzZsqfNdneyFL3LYNzxudbtjKCz6myWGSYs8koFWGOeb0IBwk53EIQPCUd2cMERpDIAA==","signatures":[{"sig":"MEYCIQC3n+6ryeAj9poOob52osZi8zWMnEilQng0oNdTJuoqRAIhAM4is1uHBVri4CB9s6qsqprVx/3oL4BC38hqu8hI0BXI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20317},"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":"60d6485eaaeef8f27b2623e971c6d29d259b2fe2","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":"Settings mixin for MoleculerJS","directories":{"lib":"lib","test":"tests"},"_nodeVersion":"18.16.0","dependencies":{"lodash.set":"^4.3.2","fastest-validator":"^1.17.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/lodash.set":"^4.3.7"},"_npmOperationalInternal":{"tmp":"tmp/settings-resolver_1.0.1_1698780238898_0.38327533424408","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"@synanetics/settings-resolver","version":"1.0.2","author":{"name":"David Tolman","email":"david.tolman@synanetics.com"},"license":"MIT","_id":"@synanetics/settings-resolver@1.0.2","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-resolver#readme","bugs":{"url":"https://bitbucket.org/synanetics/synanetics-common/issues"},"dist":{"shasum":"356a56c3f98019add66ba636b4965114dcf8fd94","tarball":"https://registry.npmjs.org/@synanetics/settings-resolver/-/settings-resolver-1.0.2.tgz","fileCount":16,"integrity":"sha512-U0mm6BpjyRBXGSbnmSFus7Exk8HlYDVqBpVfM/v9Pt9RZEpdbK9f7p/M9faDt8X8lE1b09o8ym73K3trQ4Rxhg==","signatures":[{"sig":"MEUCIQDrQpD8GsAxZ/6PhFgx34IxRplVmZkeTuxKmZNTCJoJ5gIgPVFmR+39JoEva5U7ogaEc/dTAZPocsi2HkNgyqDkEUg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20288},"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":"c70ccd3f2a0a5bba309a35af7b8e6bda61ae6989","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":"Settings mixin for MoleculerJS","directories":{"lib":"lib","test":"tests"},"_nodeVersion":"18.16.0","dependencies":{"lodash.set":"^4.3.2","fastest-validator":"^1.17.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/lodash.set":"^4.3.7"},"_npmOperationalInternal":{"tmp":"tmp/settings-resolver_1.0.2_1698780821187_0.23804158788056418","host":"s3://npm-registry-packages"}},"1.0.3":{"name":"@synanetics/settings-resolver","version":"1.0.3","author":{"name":"David Tolman","email":"david.tolman@synanetics.com"},"license":"MIT","_id":"@synanetics/settings-resolver@1.0.3","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-resolver#readme","bugs":{"url":"https://bitbucket.org/synanetics/synanetics-common/issues"},"dist":{"shasum":"4d1dde44ae7df3b851ad6c1158b11e55bbb34168","tarball":"https://registry.npmjs.org/@synanetics/settings-resolver/-/settings-resolver-1.0.3.tgz","fileCount":22,"integrity":"sha512-tLUKBdzFlndCla0zq4gkVBxJlJdQclh/IORP7aB5PL1WJ8WzbpojtMiRDnaN/9Rj0FkajE8CPOhBV1TOYXJcnw==","signatures":[{"sig":"MEYCIQCoeFW8vAMKBix+qSwMhDSDkwb0M6b04Lfm7aylsEK6fgIhAJmvtmTB2tPufiSWBCt7B9O8EXhCNjQF+/v51+osmj0E","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":21267},"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":"73f7d2b184b4d0862be772ee6fa339eb710cb2e4","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":"Settings mixin for MoleculerJS","directories":{"lib":"lib","test":"tests"},"_nodeVersion":"18.16.0","dependencies":{"lodash.set":"^4.3.2","fastest-validator":"^1.17.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/lodash.set":"^4.3.7"},"_npmOperationalInternal":{"tmp":"tmp/settings-resolver_1.0.3_1698837726603_0.27755198896251887","host":"s3://npm-registry-packages"}},"1.0.4":{"name":"@synanetics/settings-resolver","version":"1.0.4","author":{"name":"David Tolman","email":"david.tolman@synanetics.com"},"license":"MIT","_id":"@synanetics/settings-resolver@1.0.4","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-resolver#readme","bugs":{"url":"https://bitbucket.org/synanetics/synanetics-common/issues"},"dist":{"shasum":"70eef23772014aa3fc21f9bbda43b298afaa92a0","tarball":"https://registry.npmjs.org/@synanetics/settings-resolver/-/settings-resolver-1.0.4.tgz","fileCount":28,"integrity":"sha512-PsBy31fGvVx3KQiCPqGlVfKfnzDwDuwTPgC4VbsrKW3VTXrtWAlShQADou0j6j6rGcP8PNqhlEYG+9tIlmyMOw==","signatures":[{"sig":"MEYCIQDLzNNGqF02a5aQphHI3gcBjvheS/ybTw4bbHIXdozxxAIhAI75Hg1NMHqEmjBAKxkC2sM2wjxmj0v+ANZh5etmp3BN","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":30862},"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":"c3dfd73f6883ed14ae9504f4164a9797799262ee","scripts":{"test":"vitest run","prepare":"tshy"},"_npmUser":{"name":"davidtolman","email":"david.tolman@synanetics.com"},"deprecated":"should have been a major revision, use 1.0.3 for non-breaking version","repository":{"url":"git+ssh://git@bitbucket.org/synanetics/synanetics-common.git","type":"git"},"_npmVersion":"10.8.2","description":"Settings mixin for MoleculerJS","directories":{},"_nodeVersion":"22.5.1","dependencies":{"lodash.set":"^4.3.2","fastest-validator":"^1.19.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/lodash.set":"^4.3.7"},"_npmOperationalInternal":{"tmp":"tmp/settings-resolver_1.0.4_1723550884359_0.4626373218876829","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@synanetics/settings-resolver","version":"2.0.0","author":{"name":"David Tolman","email":"david.tolman@synanetics.com"},"license":"MIT","_id":"@synanetics/settings-resolver@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-resolver#readme","bugs":{"url":"https://bitbucket.org/synanetics/synanetics-common/issues"},"dist":{"shasum":"e00267c1f6836ce505db3a144b8ab335b8eb49e4","tarball":"https://registry.npmjs.org/@synanetics/settings-resolver/-/settings-resolver-2.0.0.tgz","fileCount":28,"integrity":"sha512-880Cc079pUjARJCULDXndQJxCMzArZF+QaKRyBWSzKqt5VCfVQ2bUmdL4jRkYmmQWKcAkZ/UoH8ppJ8Eql5lqQ==","signatures":[{"sig":"MEYCIQDRFNcPkkXHFTYnp44UjJ/BqcNDeHOeSO609SJjLHjDngIhAPqYVnMRgr50dthqJV6aVG9Xo1fCMyfBEhhGTrwbBu6U","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":30862},"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":"f623df4a036587e4c918364f530f1c51b4b5680d","scripts":{"test":"vitest run","prepare":"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":"Settings mixin for MoleculerJS","directories":{},"_nodeVersion":"18.20.2","dependencies":{"lodash.set":"^4.3.2","fastest-validator":"^1.19.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/lodash.set":"^4.3.7"},"_npmOperationalInternal":{"tmp":"tmp/settings-resolver_2.0.0_1723808210580_0.05052366702307198","host":"s3://npm-registry-packages"}}},"time":{"created":"2023-10-31T17:27:54.178Z","modified":"2026-08-07T14:13:39.094Z","0.0.0":"2023-10-31T17:27:54.588Z","1.0.0":"2023-10-31T18:44:23.477Z","1.0.1":"2023-10-31T19:23:59.171Z","1.0.2":"2023-10-31T19:33:41.367Z","1.0.3":"2023-11-01T11:22:06.857Z","1.0.4":"2024-08-13T12:08:04.504Z","2.0.0":"2024-08-16T11:36:50.733Z"},"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-resolver#readme","repository":{"url":"git+ssh://git@bitbucket.org/synanetics/synanetics-common.git","type":"git"},"description":"Settings mixin for MoleculerJS","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-resolver`\n\nA utility function to resolve settings from a structured default settings JSON file. It can optionally accept overrides using a path to a JSON file, JSON string or object with a matching structure. It can also optionally apply a schema for validation of the resulting object.\n\n## Usage\n\n```javascript\nconst settingsResolver = require('@synanetics/settings-resolver');\n// or\nimport settingsResolver from '@synanetics/settings-resolver';\n```\n\n### Setting Validation\n\nIt should be noted that both default and override settings are validated against a common schema:\n\n- key is required and must be a string\n- value is required and must be a boolean, number or string\n- description is optional but must be a string if present\n  - this property is for humans only and is ignored when building the output object\n\n### Loading Defaults Only\n\nAt a minimum it requires the full path to a valid default JSON file.\n\ndefault.json\n\n```json\n[\n    {\n        \"key\": \"example\",\n        \"value\": \"example value\",\n        \"description\": \"Optional\"\n    }\n]\n```\n\ncode\n\n```javascript\nconst settings = settingsResolver(path.resolve('./default.json'));\n\n/* settings would be\n * { example: 'example value' }\n */\n```\n\n### Applying Overrides\n\nOverrides can be in the form of a file, a string or an object.\n\nAny override **could** extend the default structure but it would be more descriptive to maintain it as a default.\n\n#### By File\n\nOverride file paths must be prefixed with `file://`\n\ndefault.json\n\n```json\n[\n    {\n        \"key\": \"example\",\n        \"value\": \"example value\"\n    }\n]\n```\n\noverride.json\n\n```json\n[\n    {\n        \"key\": \"example\",\n        \"value\": \"overriding value\"\n    }\n]\n```\n\ncode\n\n```javascript\nconst settings = settingsResolver(\n    path.resolve('./default.json'),\n    `file://${path.resolve('./override.json')}`,\n);\n\n/* settings would be\n * { example: 'overriding value' }\n */\n```\n\n#### By String\n\nA string must be valid JSON\n\ndefault.json\n\n```json\n[\n    {\n        \"key\": \"example\",\n        \"value\": \"example value\"\n    }\n]\n```\n\noverride\n\n```javascript\nprocess.env.OVERRIDE = \"[{\\\"key\\\":\\\"example\\\",\\\"value\\\":\\\"overriding value\\\"}]\"\n```\n\ncode\n\n```javascript\nconst settings = settingsResolver(\n    path.resolve('./default.json'),\n    process.env.OVERRIDE,\n);\n\n/* settings would be\n * { example: 'overriding value' }\n */\n```\n\n#### By Object\n\nSimply provide a valid object\n\ndefault.json\n\n```json\n[\n    {\n        \"key\": \"example\",\n        \"value\": \"example value\"\n    }\n]\n```\n\noverride\n\n```javascript\nconst override = [\n    {\n        key: 'example',\n        value: 'overriding value',\n    }\n];\n```\n\ncode\n\n```javascript\nconst settings = settingsResolver(\n    path.resolve('./default.json'),\n    override,\n);\n\n/* settings would be\n * { example: 'overriding value' }\n */\n```\n\n### Validating the Resulting Object\n\nYou can optionally supply a schema object by which the resulting object should be validated against. It uses the [fastest-validator](https://www.npmjs.com/package/fastest-validator) to do this (also used by Moleculer JS for param validation).\n\ndefault.json\n\n```json\n[\n    {\n        \"key\": \"example\",\n        \"value\": 1\n    }\n]\n```\n\noverride\n\n```javascript\nconst override = [\n    {\n        key: 'example',\n        value: 'not a number',\n    }\n];\n```\n\nvalidation schema\n\n```javascript\nconst validationSchema = {\n    example: { type: 'number', optional: false, empty: false }\n};\n```\n\ncode\n\n```javascript\nconst settings = settingsResolver(\n    path.resolve('./default.json'),\n    override,\n    validationSchema,\n);\n\n// above would throw SettingsValidationError as override sets an expected number value to a string\n```\n\n### Errors Handling\n\n`settingsResolver` does nothing to prevent errors being raised by underlying operations (think a filesystem read error or invalid JSON syntax being provided).\n\nWhen it fails to validate values (input settings, or validating output against a provided schema) it will raise a `SettingsValidationError` which is also exported by this package to assist in error handling.\n\n`SettingsValidationError` has a `data` property which contains the array of validation errors encountered.\n","readmeFilename":"README.md"}