{"_id":"@node-in-layers/rest-api","_rev":"28-cc2a67a1d7bf04c0e19589bf2f53aa5f","name":"@node-in-layers/rest-api","dist-tags":{"init":"1.0.0","latest":"1.3.4"},"versions":{"1.0.1":{"name":"@node-in-layers/rest-api","version":"1.0.1","author":"","license":"ISC","_id":"@node-in-layers/rest-api@1.0.1","maintainers":[{"name":"macornwell","email":"michael.a.cornwell@gmail.com"}],"dist":{"shasum":"3ccf30998a2c2e15ef0661733a6a190c95cbd322","tarball":"https://registry.npmjs.org/@node-in-layers/rest-api/-/rest-api-1.0.1.tgz","fileCount":23,"integrity":"sha512-FaP7Koo/zrro01EQJhVCmaiqA2bnuToAVHdJ+sIadN9veHsIh9i2df6fqhyCG1SmU2CZ4LVlda2QMznUhiQQ4Q==","signatures":[{"sig":"MEYCIQC/zhuAPfYZIO7H2acQ05YiG9o0FOMptVFtXOeBxe7NXgIhAIn3n+KykLAnJCEyKWmi795Hn/OZTKXxUMp9GhPuckNu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40474},"main":"index.js","type":"module","types":"./index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"36099efb72126b036c0594918e3a8aa1c42e3f0a","scripts":{"dist":"npm run build && cd dist && npm publish","test":"export TS_NODE_TRANSPILE_ONLY=true && export TS_NODE_PROJECT='./tsconfig.test.json' && mocha -r ts-node/register 'test/**/*.test.ts'","build":"rm -Rf ./dist && tsc -p ./tsconfig.json && cp package.json ./dist && cp README.md ./dist","commit":"cz","eslint":"eslint .","prettier":"prettier --write .","build:watch":"nodemon -e '*' --watch ./src --exec \"npm run build || exit 1\"","feature-tests":"cucumber-js -p default","test:coverage":"nyc --all --reporter cobertura --reporter text --reporter lcov --reporter html npm run test"},"_npmUser":{"name":"macornwell","email":"michael.a.cornwell@gmail.com"},"_npmVersion":"11.1.0","description":"A Rest API implementation with a Node In Layers system.","directories":{},"_nodeVersion":"20.18.2","dependencies":{"cors":"^2.8.5","lodash":"^4.17.21","express":"^4.21.2","body-parser":"^1.20.3","express-session":"^1.18.1","http-compression":"^1.1.1","functional-models":"^3.0.12","http-status-codes":"^2.3.0","@node-in-layers/core":"^1.2.0","@node-in-layers/data":"^1.0.6"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","chai":"^4.2.0","mocha":"^11.0.1","sinon":"^19.0.2","eslint":"9.14.0","globals":"^15.12.0","js-yaml":"^4.1.0","nodemon":"^3.1.7","ts-node":"^10.4.0","argparse":"^2.0.1","prettier":"^3.3.3","@eslint/js":"^9.12.0","handlebars":"^4.7.8","proxyquire":"^2.1.3","sinon-chai":"^3.5.0","typescript":"5.3.3","@types/node":"^22.9.0","@types/mocha":"^9.1.1","@types/sinon":"^17.0.3","@types/lodash":"^4.17.13","@eslint/compat":"^1.2.0","@eslint/eslintrc":"^3.1.0","chai-as-promised":"^7.1.1","@types/proxyquire":"^1.3.31","@cucumber/cucumber":"11.0.1","source-map-support":"^0.5.21","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^9.1.0","@types/chai-as-promised":"^8.0.1","eslint-plugin-functional":"~7.1.0","@typescript-eslint/parser":"8.13.0","cz-conventional-changelog":"^3.3.0","@types/json-stringify-safe":"^5.0.3","@typescript-eslint/eslint-plugin":"8.13.0","@istanbuljs/nyc-config-typescript":"^1.0.2","eslint-import-resolver-typescript":"^3.6.3"},"_npmOperationalInternal":{"tmp":"tmp/rest-api_1.0.1_1741719441013_0.3709859835024645","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@node-in-layers/rest-api","version":"1.0.2","author":"","license":"ISC","_id":"@node-in-layers/rest-api@1.0.2","maintainers":[{"name":"macornwell","email":"michael.a.cornwell@gmail.com"}],"dist":{"shasum":"b64fd62a1b6d8a2b7b7dbb21844f1d9761eb71a6","tarball":"https://registry.npmjs.org/@node-in-layers/rest-api/-/rest-api-1.0.2.tgz","fileCount":23,"integrity":"sha512-u8HA/yrmqdiLQJK83otU63ar2AtcciytNXWpbZS3tk4t2HDQZZlUGJ0m4l/3kGjtKuXn+Ly2ooa/BmkDzW0Ghg==","signatures":[{"sig":"MEQCIHi/HqMWOR8MXWyu3BxQVSySSx7jIM8oZYjFkYhR8S2JAiA1OLugHaZ98ir0/H4C5AHcBXN9R9tVB/dNJR1WI7/7QQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40474},"main":"index.js","type":"module","types":"./index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"2e3d62e0bc57f869f22d0aea47d4b757a42da7fb","scripts":{"dist":"npm run build && cd dist && npm publish","test":"export TS_NODE_TRANSPILE_ONLY=true && export TS_NODE_PROJECT='./tsconfig.test.json' && mocha -r ts-node/register 'test/**/*.test.ts'","build":"rm -Rf ./dist && tsc -p ./tsconfig.json && cp package.json ./dist && cp README.md ./dist","commit":"cz","eslint":"eslint .","prettier":"prettier --write .","build:watch":"nodemon -e '*' --watch ./src --exec \"npm run build || exit 1\"","feature-tests":"cucumber-js -p default","test:coverage":"nyc --all --reporter cobertura --reporter text --reporter lcov --reporter html npm run test"},"_npmUser":{"name":"macornwell","email":"michael.a.cornwell@gmail.com"},"_npmVersion":"11.1.0","description":"A Rest API implementation with a Node In Layers system.","directories":{},"_nodeVersion":"20.18.2","dependencies":{"cors":"^2.8.5","lodash":"^4.17.21","express":"^4.21.2","body-parser":"^1.20.3","express-session":"^1.18.1","http-compression":"^1.1.1","functional-models":"^3.0.12","http-status-codes":"^2.3.0","@node-in-layers/core":"^1.2.3","@node-in-layers/data":"^1.0.6"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","chai":"^4.2.0","mocha":"^11.0.1","sinon":"^19.0.2","eslint":"9.14.0","globals":"^15.12.0","js-yaml":"^4.1.0","nodemon":"^3.1.7","ts-node":"^10.4.0","argparse":"^2.0.1","prettier":"^3.3.3","@eslint/js":"^9.12.0","handlebars":"^4.7.8","proxyquire":"^2.1.3","sinon-chai":"^3.5.0","typescript":"5.3.3","@types/node":"^22.9.0","@types/mocha":"^9.1.1","@types/sinon":"^17.0.3","@types/lodash":"^4.17.13","@eslint/compat":"^1.2.0","@eslint/eslintrc":"^3.1.0","chai-as-promised":"^7.1.1","@types/proxyquire":"^1.3.31","@cucumber/cucumber":"11.0.1","source-map-support":"^0.5.21","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^9.1.0","@types/chai-as-promised":"^8.0.1","eslint-plugin-functional":"~7.1.0","@typescript-eslint/parser":"8.13.0","cz-conventional-changelog":"^3.3.0","@types/json-stringify-safe":"^5.0.3","@typescript-eslint/eslint-plugin":"8.13.0","@istanbuljs/nyc-config-typescript":"^1.0.2","eslint-import-resolver-typescript":"^3.6.3"},"_npmOperationalInternal":{"tmp":"tmp/rest-api_1.0.2_1741719641024_0.4975167871463828","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@node-in-layers/rest-api","version":"1.0.0","author":"","license":"ISC","_id":"@node-in-layers/rest-api@1.0.0","maintainers":[{"name":"macornwell","email":"michael.a.cornwell@gmail.com"}],"dist":{"shasum":"b0629aeb79be7e47296e75addaf713e0a4dc006c","tarball":"https://registry.npmjs.org/@node-in-layers/rest-api/-/rest-api-1.0.0.tgz","fileCount":23,"integrity":"sha512-UavojvM1oca6V0GJ3FHn1qlTRzEqsryQOnmIzXb18dj1c7H/JDFlE2qlnS9m0RF/SzLz+6WI7Hb0CTg6wPJZ3g==","signatures":[{"sig":"MEQCID/Z4oV6BRYiWU0dIccJeEhc/2CZyqgMdVDl3aI71pMsAiAfrfZfB2BPq5hjaxjbhI6jkpCmVWpmSMfhYGtwvQFsWw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40474},"main":"index.js","type":"module","types":"./index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"2e3d62e0bc57f869f22d0aea47d4b757a42da7fb","scripts":{"dist":"npm run build && cd dist && npm publish","test":"export TS_NODE_TRANSPILE_ONLY=true && export TS_NODE_PROJECT='./tsconfig.test.json' && mocha -r ts-node/register 'test/**/*.test.ts'","build":"rm -Rf ./dist && tsc -p ./tsconfig.json && cp package.json ./dist && cp README.md ./dist","commit":"cz","eslint":"eslint .","prettier":"prettier --write .","build:watch":"nodemon -e '*' --watch ./src --exec \"npm run build || exit 1\"","feature-tests":"cucumber-js -p default","test:coverage":"nyc --all --reporter cobertura --reporter text --reporter lcov --reporter html npm run test"},"_npmUser":{"name":"macornwell","email":"michael.a.cornwell@gmail.com"},"_npmVersion":"11.1.0","description":"A Rest API implementation with a Node In Layers system.","directories":{},"_nodeVersion":"20.18.2","dependencies":{"cors":"^2.8.5","lodash":"^4.17.21","express":"^4.21.2","body-parser":"^1.20.3","express-session":"^1.18.1","http-compression":"^1.1.1","functional-models":"^3.0.12","http-status-codes":"^2.3.0","@node-in-layers/core":"^1.2.3","@node-in-layers/data":"^1.0.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^17.1.0","chai":"^4.2.0","mocha":"^11.0.1","sinon":"^19.0.2","eslint":"9.14.0","globals":"^15.12.0","js-yaml":"^4.1.0","nodemon":"^3.1.7","ts-node":"^10.4.0","argparse":"^2.0.1","prettier":"^3.3.3","@eslint/js":"^9.12.0","handlebars":"^4.7.8","proxyquire":"^2.1.3","sinon-chai":"^3.5.0","typescript":"5.3.3","@types/node":"^22.9.0","@types/mocha":"^9.1.1","@types/sinon":"^17.0.3","@types/lodash":"^4.17.13","@eslint/compat":"^1.2.0","@eslint/eslintrc":"^3.1.0","chai-as-promised":"^7.1.1","@types/proxyquire":"^1.3.31","@cucumber/cucumber":"11.0.1","source-map-support":"^0.5.21","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^9.1.0","@types/chai-as-promised":"^8.0.1","eslint-plugin-functional":"~7.1.0","@typescript-eslint/parser":"8.13.0","cz-conventional-changelog":"^3.3.0","@types/json-stringify-safe":"^5.0.3","@typescript-eslint/eslint-plugin":"8.13.0","@istanbuljs/nyc-config-typescript":"^1.0.2","eslint-import-resolver-typescript":"^3.6.3"},"_npmOperationalInternal":{"tmp":"tmp/rest-api_1.0.0_1741719767751_0.5290016595749911","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@node-in-layers/rest-api","version":"1.0.4","author":"","license":"ISC","_id":"@node-in-layers/rest-api@1.0.4","maintainers":[{"name":"macornwell","email":"michael.a.cornwell@gmail.com"}],"dist":{"shasum":"12da585aefe1746d296c29f78bca429a1cfcf2df","tarball":"https://registry.npmjs.org/@node-in-layers/rest-api/-/rest-api-1.0.4.tgz","fileCount":23,"integrity":"sha512-ALzmi7Myg+w61p6mRwjwCjlDanNSTUbGrTZHB/j1MCiwpBSl5rznBCVXJjP5lQ6NJ3mNY4XagvkqKfMnUkAVsg==","signatures":[{"sig":"MEQCIBZSWgBxRcxert5SRIQNCB7Xp+kqbf3UYBTuNfwYWApdAiAEzyrNZS1IpLPktMVb/RvF3yZPGXVEYblPUL9Z9ZpQ6Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40718},"main":"index.js","type":"module","types":"./index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"9c904a4dd66ffd946ca3af0da2e15f02b6807da7","scripts":{"dist":"npm run build && cd dist && npm publish","test":"export TS_NODE_TRANSPILE_ONLY=true && export TS_NODE_PROJECT='./tsconfig.test.json' && mocha -r ts-node/register 'test/**/*.test.ts'","build":"rm -Rf ./dist && tsc -p ./tsconfig.json && cp package.json ./dist && cp README.md ./dist","commit":"cz","eslint":"eslint .","prettier":"prettier --write .","build:watch":"nodemon -e '*' --watch ./src --exec \"npm run build || exit 1\"","feature-tests":"cucumber-js -p default","test:coverage":"nyc --all --reporter cobertura --reporter text --reporter lcov --reporter html npm run test"},"_npmUser":{"name":"macornwell","email":"michael.a.cornwell@gmail.com"},"_npmVersion":"11.1.0","description":"A Rest API implementation with a Node In Layers system.","directories":{},"_nodeVersion":"20.18.2","dependencies":{"cors":"^2.8.5","lodash":"^4.17.21","express":"^4.21.2","body-parser":"^1.20.3","express-session":"^1.18.1","http-compression":"^1.1.1","functional-models":"^3.0.12","http-status-codes":"^2.3.0","@node-in-layers/core":"^1.2.3","@node-in-layers/data":"^1.0.6"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","chai":"^4.2.0","mocha":"^11.0.1","sinon":"^19.0.2","eslint":"9.14.0","globals":"^15.12.0","js-yaml":"^4.1.0","nodemon":"^3.1.7","ts-node":"^10.4.0","argparse":"^2.0.1","prettier":"^3.3.3","@eslint/js":"^9.12.0","handlebars":"^4.7.8","proxyquire":"^2.1.3","sinon-chai":"^3.5.0","typescript":"5.3.3","@types/node":"^22.9.0","@types/mocha":"^9.1.1","@types/sinon":"^17.0.3","@types/lodash":"^4.17.13","@eslint/compat":"^1.2.0","@eslint/eslintrc":"^3.1.0","chai-as-promised":"^7.1.1","@types/proxyquire":"^1.3.31","@cucumber/cucumber":"11.0.1","source-map-support":"^0.5.21","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^9.1.0","@types/chai-as-promised":"^8.0.1","eslint-plugin-functional":"~7.1.0","@typescript-eslint/parser":"8.13.0","cz-conventional-changelog":"^3.3.0","@types/json-stringify-safe":"^5.0.3","@typescript-eslint/eslint-plugin":"8.13.0","@istanbuljs/nyc-config-typescript":"^1.0.2","eslint-import-resolver-typescript":"^3.6.3"},"_npmOperationalInternal":{"tmp":"tmp/rest-api_1.0.4_1741720226212_0.43867102994928175","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@node-in-layers/rest-api","version":"1.0.6","author":"","license":"ISC","_id":"@node-in-layers/rest-api@1.0.6","maintainers":[{"name":"macornwell","email":"michael.a.cornwell@gmail.com"}],"dist":{"shasum":"c0b08b7739ce085faf04489ae20ea94fe328cbfa","tarball":"https://registry.npmjs.org/@node-in-layers/rest-api/-/rest-api-1.0.6.tgz","fileCount":23,"integrity":"sha512-HXprCU4MSqJ/74E0/zsvcxkqJFAXC6QvZFtjPl+Ipt/tXam0g/rxAeLHFHW3LRVWEzyoi4Y/brPPIqFcwy63CA==","signatures":[{"sig":"MEUCIQCUPCq5RDSsxSFz4wkQOr7fMWH2HKARckSkMp7YtpbDKQIgHJocQ9xs1hWnd5dZ3meDFt5jaO2+gibo1g8AeVfm2pg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41436},"main":"index.js","type":"module","types":"./index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"b91e611b5c788f02bebf601f5842173ec7f8dc07","scripts":{"dist":"npm run build && cd dist && npm publish","test":"export TS_NODE_TRANSPILE_ONLY=true && export TS_NODE_PROJECT='./tsconfig.test.json' && mocha -r ts-node/register 'test/**/*.test.ts'","build":"rm -Rf ./dist && tsc -p ./tsconfig.json && cp package.json ./dist && cp README.md ./dist","commit":"cz","eslint":"eslint .","prettier":"prettier --write .","build:watch":"nodemon -e '*' --watch ./src --exec \"npm run build || exit 1\"","feature-tests":"cucumber-js -p default","test:coverage":"nyc --all --reporter cobertura --reporter text --reporter lcov --reporter html npm run test"},"_npmUser":{"name":"macornwell","email":"michael.a.cornwell@gmail.com"},"_npmVersion":"11.1.0","description":"A Rest API implementation with a Node In Layers system.","directories":{},"_nodeVersion":"20.18.2","dependencies":{"cors":"^2.8.5","lodash":"^4.17.21","express":"^4.21.2","body-parser":"^1.20.3","express-session":"^1.18.1","http-compression":"^1.1.1","functional-models":"^3.0.16","http-status-codes":"^2.3.0","@node-in-layers/core":"^1.4.1","@node-in-layers/data":"^1.0.14"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","chai":"^4.2.0","mocha":"^11.0.1","sinon":"^19.0.2","eslint":"9.14.0","globals":"^15.12.0","js-yaml":"^4.1.0","nodemon":"^3.1.7","ts-node":"^10.4.0","argparse":"^2.0.1","prettier":"^3.3.3","@eslint/js":"^9.12.0","handlebars":"^4.7.8","proxyquire":"^2.1.3","sinon-chai":"^3.5.0","typescript":"5.3.3","@types/node":"^22.9.0","@types/mocha":"^9.1.1","@types/sinon":"^17.0.3","@types/lodash":"^4.17.13","@eslint/compat":"^1.2.0","@eslint/eslintrc":"^3.1.0","chai-as-promised":"^7.1.1","@types/proxyquire":"^1.3.31","@cucumber/cucumber":"11.0.1","source-map-support":"^0.5.21","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^9.1.0","@types/chai-as-promised":"^8.0.1","eslint-plugin-functional":"~7.1.0","@typescript-eslint/parser":"8.13.0","cz-conventional-changelog":"^3.3.0","@types/json-stringify-safe":"^5.0.3","@typescript-eslint/eslint-plugin":"8.13.0","@istanbuljs/nyc-config-typescript":"^1.0.2","eslint-import-resolver-typescript":"^3.6.3"},"_npmOperationalInternal":{"tmp":"tmp/rest-api_1.0.6_1744305735203_0.5503203342967375","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@node-in-layers/rest-api","version":"1.0.7","author":"","license":"ISC","_id":"@node-in-layers/rest-api@1.0.7","maintainers":[{"name":"macornwell","email":"michael.a.cornwell@gmail.com"}],"dist":{"shasum":"4832cc1e33842ca14f7b243227861277df216a47","tarball":"https://registry.npmjs.org/@node-in-layers/rest-api/-/rest-api-1.0.7.tgz","fileCount":23,"integrity":"sha512-Kw3RxBca/xDb5MtzvXJ86OyWA9ETty276/CGerEoFEWXtp9TUQvzLo6OODrLK4OhSMbmCHz+gd4EzhOS3tEFQg==","signatures":[{"sig":"MEUCIQDBpLeFk7oRaiCDx3x+Y9dJLFTJ/Tb4TwXxtAFOWOYM1AIgJCM6ypRCwSf28djZzyLDKuu293TdOk63rG6pSyqm2Rk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41424},"main":"index.js","type":"module","types":"./index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"9416c51472fcb55ad65feaedfed571805e133a6f","scripts":{"dist":"npm run build && cd dist && npm publish","test":"export TS_NODE_TRANSPILE_ONLY=true && export TS_NODE_PROJECT='./tsconfig.test.json' && mocha -r ts-node/register 'test/**/*.test.ts'","build":"rm -Rf ./dist && tsc -p ./tsconfig.json && cp package.json ./dist && cp README.md ./dist","commit":"cz","eslint":"eslint .","prettier":"prettier --write .","build:watch":"nodemon -e '*' --watch ./src --exec \"npm run build || exit 1\"","feature-tests":"cucumber-js -p default","test:coverage":"nyc --all --reporter cobertura --reporter text --reporter lcov --reporter html npm run test"},"_npmUser":{"name":"macornwell","email":"michael.a.cornwell@gmail.com"},"_npmVersion":"11.1.0","description":"A Rest API implementation with a Node In Layers system.","directories":{},"_nodeVersion":"20.18.2","dependencies":{"cors":"^2.8.5","lodash":"^4.17.21","express":"^4.21.2","body-parser":"^1.20.3","express-session":"^1.18.1","http-compression":"^1.1.1","functional-models":"^3.0.16","http-status-codes":"^2.3.0","@node-in-layers/core":"^1.4.1","@node-in-layers/data":"^1.0.14"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","chai":"^4.2.0","mocha":"^11.0.1","sinon":"^19.0.2","eslint":"9.14.0","globals":"^15.12.0","js-yaml":"^4.1.0","nodemon":"^3.1.7","ts-node":"^10.4.0","argparse":"^2.0.1","prettier":"^3.3.3","@eslint/js":"^9.12.0","handlebars":"^4.7.8","proxyquire":"^2.1.3","sinon-chai":"^3.5.0","typescript":"5.3.3","@types/node":"^22.9.0","@types/mocha":"^9.1.1","@types/sinon":"^17.0.3","@types/lodash":"^4.17.13","@eslint/compat":"^1.2.0","@eslint/eslintrc":"^3.1.0","chai-as-promised":"^7.1.1","@types/proxyquire":"^1.3.31","@cucumber/cucumber":"11.0.1","source-map-support":"^0.5.21","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^9.1.0","@types/chai-as-promised":"^8.0.1","eslint-plugin-functional":"~7.1.0","@typescript-eslint/parser":"8.13.0","cz-conventional-changelog":"^3.3.0","@types/json-stringify-safe":"^5.0.3","@typescript-eslint/eslint-plugin":"8.13.0","@istanbuljs/nyc-config-typescript":"^1.0.2","eslint-import-resolver-typescript":"^3.6.3"},"_npmOperationalInternal":{"tmp":"tmp/rest-api_1.0.7_1745239905450_0.49568024061402527","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@node-in-layers/rest-api","version":"1.0.8","author":"","license":"ISC","_id":"@node-in-layers/rest-api@1.0.8","maintainers":[{"name":"macornwell","email":"michael.a.cornwell@gmail.com"}],"dist":{"shasum":"ac524fbf77358e6be047a3908064d06425614ae8","tarball":"https://registry.npmjs.org/@node-in-layers/rest-api/-/rest-api-1.0.8.tgz","fileCount":23,"integrity":"sha512-1P8IagZh6eerhgmz+9CJe+H3Qq6a5hkD19+rh77X+rhNva/zw4V6aa7BxfG+OAptzthrHhy5iQw+JjvII6yzlg==","signatures":[{"sig":"MEUCIFKsHt80jPZxQh2OdS3is2N2dUlBfCxFv8LEoRY6+s8KAiEAiaLerGRip233dYbXmwVs3rRePLDi0IV6J0vlm9a8CtA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41458},"main":"index.js","type":"module","types":"./index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"f77dfee1351e8c995af087db14553b1d1ecbdc48","scripts":{"dist":"npm run build && cd dist && npm publish","test":"export TS_NODE_TRANSPILE_ONLY=true && export TS_NODE_PROJECT='./tsconfig.test.json' && mocha -r ts-node/register 'test/**/*.test.ts'","build":"rm -Rf ./dist && tsc -p ./tsconfig.json && cp package.json ./dist && cp README.md ./dist","commit":"cz","eslint":"eslint .","prettier":"prettier --write .","build:watch":"nodemon -e '*' --watch ./src --exec \"npm run build || exit 1\"","feature-tests":"cucumber-js -p default","test:coverage":"nyc --all --reporter cobertura --reporter text --reporter lcov --reporter html npm run test"},"_npmUser":{"name":"macornwell","email":"michael.a.cornwell@gmail.com"},"_npmVersion":"11.1.0","description":"A Rest API implementation with a Node In Layers system.","directories":{},"_nodeVersion":"20.18.2","dependencies":{"cors":"^2.8.5","lodash":"^4.17.21","express":"^4.21.2","body-parser":"^1.20.3","express-session":"^1.18.1","http-compression":"^1.1.1","functional-models":"^3.0.16","http-status-codes":"^2.3.0","@node-in-layers/core":"^1.4.1","@node-in-layers/data":"^1.0.14"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","chai":"^4.2.0","mocha":"^11.0.1","sinon":"^19.0.2","eslint":"9.14.0","globals":"^15.12.0","js-yaml":"^4.1.0","nodemon":"^3.1.7","ts-node":"^10.4.0","argparse":"^2.0.1","prettier":"^3.3.3","@eslint/js":"^9.12.0","handlebars":"^4.7.8","proxyquire":"^2.1.3","sinon-chai":"^3.5.0","typescript":"5.3.3","@types/node":"^22.9.0","@types/mocha":"^9.1.1","@types/sinon":"^17.0.3","@types/lodash":"^4.17.13","@eslint/compat":"^1.2.0","@eslint/eslintrc":"^3.1.0","chai-as-promised":"^7.1.1","@types/proxyquire":"^1.3.31","@cucumber/cucumber":"11.0.1","source-map-support":"^0.5.21","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^9.1.0","@types/chai-as-promised":"^8.0.1","eslint-plugin-functional":"~7.1.0","@typescript-eslint/parser":"8.13.0","cz-conventional-changelog":"^3.3.0","@types/json-stringify-safe":"^5.0.3","@typescript-eslint/eslint-plugin":"8.13.0","@istanbuljs/nyc-config-typescript":"^1.0.2","eslint-import-resolver-typescript":"^3.6.3"},"_npmOperationalInternal":{"tmp":"tmp/rest-api_1.0.8_1745241024342_0.1282041469680113","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@node-in-layers/rest-api","version":"1.0.9","author":"","license":"ISC","_id":"@node-in-layers/rest-api@1.0.9","maintainers":[{"name":"macornwell","email":"michael.a.cornwell@gmail.com"}],"dist":{"shasum":"44fca976f6859b7e3c49c4690a907c7aa6aac1e1","tarball":"https://registry.npmjs.org/@node-in-layers/rest-api/-/rest-api-1.0.9.tgz","fileCount":23,"integrity":"sha512-XYRE9Igmgx5GOBhu02IPWbPuMyV1bPaaU8/i/aP9Qt6qxYJb9TRhoopnOtOs5kUMF7fkRUfp7/pQPD18WiPBmg==","signatures":[{"sig":"MEQCIET/H3BO7Vz9hAsUo07DG31rGNKMTYXIg5lVCy1bf++pAiAK2TJ8snyZY7+dR+mgpKuheVSJ9WwTbQDOR5fQO4O7SQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41946},"main":"index.js","type":"module","types":"./index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"a1be7bb4d4dd4b52d97786d8d8f20a2fea9b45d9","scripts":{"dist":"npm run build && cd dist && npm publish","test":"export TS_NODE_TRANSPILE_ONLY=true && export TS_NODE_PROJECT='./tsconfig.test.json' && mocha -r ts-node/register 'test/**/*.test.ts'","build":"rm -Rf ./dist && tsc -p ./tsconfig.json && cp package.json ./dist && cp README.md ./dist","commit":"cz","eslint":"eslint .","prettier":"prettier --write .","build:watch":"nodemon -e '*' --watch ./src --exec \"npm run build || exit 1\"","feature-tests":"cucumber-js -p default","test:coverage":"nyc --all --reporter cobertura --reporter text --reporter lcov --reporter html npm run test"},"_npmUser":{"name":"macornwell","email":"michael.a.cornwell@gmail.com"},"_npmVersion":"11.1.0","description":"A Rest API implementation with a Node In Layers system.","directories":{},"_nodeVersion":"20.18.2","dependencies":{"cors":"^2.8.5","lodash":"^4.17.21","express":"^4.21.2","body-parser":"^1.20.3","express-session":"^1.18.1","http-compression":"^1.1.1","functional-models":"^3.0.16","http-status-codes":"^2.3.0","@node-in-layers/core":"^1.4.1","@node-in-layers/data":"^1.0.14"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","chai":"^4.2.0","mocha":"^11.0.1","sinon":"^19.0.2","eslint":"9.14.0","globals":"^15.12.0","js-yaml":"^4.1.0","nodemon":"^3.1.7","ts-node":"^10.4.0","argparse":"^2.0.1","prettier":"^3.3.3","@eslint/js":"^9.12.0","handlebars":"^4.7.8","proxyquire":"^2.1.3","sinon-chai":"^3.5.0","typescript":"5.3.3","@types/node":"^22.9.0","@types/mocha":"^9.1.1","@types/sinon":"^17.0.3","@types/lodash":"^4.17.13","@eslint/compat":"^1.2.0","@eslint/eslintrc":"^3.1.0","chai-as-promised":"^7.1.1","@types/proxyquire":"^1.3.31","@cucumber/cucumber":"11.0.1","source-map-support":"^0.5.21","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^9.1.0","@types/chai-as-promised":"^8.0.1","eslint-plugin-functional":"~7.1.0","@typescript-eslint/parser":"8.13.0","cz-conventional-changelog":"^3.3.0","@types/json-stringify-safe":"^5.0.3","@typescript-eslint/eslint-plugin":"8.13.0","@istanbuljs/nyc-config-typescript":"^1.0.2","eslint-import-resolver-typescript":"^3.6.3"},"_npmOperationalInternal":{"tmp":"tmp/rest-api_1.0.9_1745808655391_0.12968062374053546","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"@node-in-layers/rest-api","version":"1.0.10","author":"","license":"ISC","_id":"@node-in-layers/rest-api@1.0.10","maintainers":[{"name":"macornwell","email":"michael.a.cornwell@gmail.com"}],"dist":{"shasum":"7e225f3c145c7331234d4d30c09ee08db002fbef","tarball":"https://registry.npmjs.org/@node-in-layers/rest-api/-/rest-api-1.0.10.tgz","fileCount":23,"integrity":"sha512-tOXrvt7J2fuBlwd+IlmiOkjPG//QShg4Y0z1qU6sRxXnEmO6gXxJac5bTA9UmVQyqTNqJtM/HEduR2/tlcj3Nw==","signatures":[{"sig":"MEYCIQDOew/e+xj0e1/v7+1GO8QfgNwCagRZOtZXbmMLwmMdnQIhAJUQXtehC6yvHXbL+cvQIppTzoFdrdXz0GzAj4p8Sakw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41958},"main":"index.js","type":"module","types":"./index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"6e826cabac9cac3edb3c9e9eea649895a2cb2937","scripts":{"dist":"npm run build && cd dist && npm publish","test":"export TS_NODE_TRANSPILE_ONLY=true && export TS_NODE_PROJECT='./tsconfig.test.json' && mocha -r ts-node/register 'test/**/*.test.ts'","build":"rm -Rf ./dist && tsc -p ./tsconfig.json && cp package.json ./dist && cp README.md ./dist","commit":"cz","eslint":"eslint .","prettier":"prettier --write .","build:watch":"nodemon -e '*' --watch ./src --exec \"npm run build || exit 1\"","feature-tests":"cucumber-js -p default","test:coverage":"nyc --all --reporter cobertura --reporter text --reporter lcov --reporter html npm run test"},"_npmUser":{"name":"macornwell","email":"michael.a.cornwell@gmail.com"},"_npmVersion":"11.1.0","description":"A Rest API implementation with a Node In Layers system.","directories":{},"_nodeVersion":"20.18.2","dependencies":{"cors":"^2.8.5","lodash":"^4.17.21","express":"^4.21.2","body-parser":"^1.20.3","express-session":"^1.18.1","http-compression":"^1.1.1","functional-models":"^3.0.16","http-status-codes":"^2.3.0","@node-in-layers/core":"^1.4.1","@node-in-layers/data":"^1.0.14"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","chai":"^4.2.0","mocha":"^11.0.1","sinon":"^19.0.2","eslint":"9.14.0","globals":"^15.12.0","js-yaml":"^4.1.0","nodemon":"^3.1.7","ts-node":"^10.4.0","argparse":"^2.0.1","prettier":"^3.3.3","@eslint/js":"^9.12.0","handlebars":"^4.7.8","proxyquire":"^2.1.3","sinon-chai":"^3.5.0","typescript":"5.3.3","@types/node":"^22.9.0","@types/mocha":"^9.1.1","@types/sinon":"^17.0.3","@types/lodash":"^4.17.13","@eslint/compat":"^1.2.0","@eslint/eslintrc":"^3.1.0","chai-as-promised":"^7.1.1","@types/proxyquire":"^1.3.31","@cucumber/cucumber":"11.0.1","source-map-support":"^0.5.21","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^9.1.0","@types/chai-as-promised":"^8.0.1","eslint-plugin-functional":"~7.1.0","@typescript-eslint/parser":"8.13.0","cz-conventional-changelog":"^3.3.0","@types/json-stringify-safe":"^5.0.3","@typescript-eslint/eslint-plugin":"8.13.0","@istanbuljs/nyc-config-typescript":"^1.0.2","eslint-import-resolver-typescript":"^3.6.3"},"_npmOperationalInternal":{"tmp":"tmp/rest-api_1.0.10_1745808814475_0.24048871772780878","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"@node-in-layers/rest-api","version":"1.0.11","author":"","license":"ISC","_id":"@node-in-layers/rest-api@1.0.11","maintainers":[{"name":"macornwell","email":"michael.a.cornwell@gmail.com"}],"dist":{"shasum":"614483503a40faf1bc0bb408ec271f1cfad5b078","tarball":"https://registry.npmjs.org/@node-in-layers/rest-api/-/rest-api-1.0.11.tgz","fileCount":23,"integrity":"sha512-wIGZZC4UuM5WfmKfDESmgjT6h4Yz6AAaFKm/00QN+jadjKXJ9S52DbQ74wtNxYlAM3cBI1MsbVjlvCOdURUBXw==","signatures":[{"sig":"MEYCIQDNttq5jsLCmhM1b5o/tqObW51U8Uhs0GPsPGsbyJOhmwIhAKmUig+58qh3Btp21iIAGXV+wLsYVb9/WEEd6GQD+AKM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42607},"main":"index.js","type":"module","types":"./index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"0f765e7b2e16aa8f95ac2fbb7b84d2d88b70ecdd","scripts":{"dist":"npm run build && cd dist && npm publish","test":"export TS_NODE_TRANSPILE_ONLY=true && export TS_NODE_PROJECT='./tsconfig.test.json' && mocha -r ts-node/register 'test/**/*.test.ts'","build":"rm -Rf ./dist && tsc -p ./tsconfig.json && cp package.json ./dist && cp README.md ./dist","commit":"cz","eslint":"eslint .","prettier":"prettier --write .","build:watch":"nodemon -e '*' --watch ./src --exec \"npm run build || exit 1\"","feature-tests":"cucumber-js -p default","test:coverage":"nyc --all --reporter cobertura --reporter text --reporter lcov --reporter html npm run test"},"_npmUser":{"name":"macornwell","email":"michael.a.cornwell@gmail.com"},"_npmVersion":"11.1.0","description":"A Rest API implementation with a Node In Layers system.","directories":{},"_nodeVersion":"20.18.2","dependencies":{"cors":"^2.8.5","lodash":"^4.17.21","express":"^4.21.2","body-parser":"^1.20.3","express-session":"^1.18.1","http-compression":"^1.1.1","functional-models":"^3.0.16","http-status-codes":"^2.3.0","@node-in-layers/core":"^1.5.1","@node-in-layers/data":"^1.0.14"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","chai":"^4.2.0","mocha":"^11.0.1","sinon":"^19.0.2","eslint":"9.14.0","globals":"^15.12.0","js-yaml":"^4.1.0","nodemon":"^3.1.7","ts-node":"^10.4.0","argparse":"^2.0.1","prettier":"^3.3.3","@eslint/js":"^9.12.0","handlebars":"^4.7.8","proxyquire":"^2.1.3","sinon-chai":"^3.5.0","typescript":"5.3.3","@types/node":"^22.9.0","@types/mocha":"^9.1.1","@types/sinon":"^17.0.3","@types/lodash":"^4.17.13","@eslint/compat":"^1.2.0","@eslint/eslintrc":"^3.1.0","chai-as-promised":"^7.1.1","@types/proxyquire":"^1.3.31","@cucumber/cucumber":"11.0.1","source-map-support":"^0.5.21","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^9.1.0","@types/chai-as-promised":"^8.0.1","eslint-plugin-functional":"~7.1.0","@typescript-eslint/parser":"8.13.0","cz-conventional-changelog":"^3.3.0","@types/json-stringify-safe":"^5.0.3","@typescript-eslint/eslint-plugin":"8.13.0","@istanbuljs/nyc-config-typescript":"^1.0.2","eslint-import-resolver-typescript":"^3.6.3"},"_npmOperationalInternal":{"tmp":"tmp/rest-api_1.0.11_1747009221101_0.15608848597367397","host":"s3://npm-registry-packages-npm-production"}},"1.0.12":{"name":"@node-in-layers/rest-api","version":"1.0.12","author":"","license":"ISC","_id":"@node-in-layers/rest-api@1.0.12","maintainers":[{"name":"macornwell","email":"michael.a.cornwell@gmail.com"}],"dist":{"shasum":"1a6d904285c5020c1be660aac9094fdd1584056f","tarball":"https://registry.npmjs.org/@node-in-layers/rest-api/-/rest-api-1.0.12.tgz","fileCount":23,"integrity":"sha512-K6YzgG7N3XQuwZgVagfIgJXYeGo9vUyz5vYAXqo78B+sdmcHEWpIhvu/p98VmdvsGIg7EijwL1KIW5W4lfB/IA==","signatures":[{"sig":"MEQCIDB9hr3GEm7ldykf5v7SsqMBhbutzRdI2CuYORKl31ojAiAEZOQi1yyPExB9XGVFnVqmA/MEeL9PYqQttiovvl8lhA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42623},"main":"index.js","type":"module","types":"./index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"4f0518463ed5d906d9809a87cc2c8f86fe81a8a1","scripts":{"dist":"npm run build && cd dist && npm publish","test":"export TS_NODE_TRANSPILE_ONLY=true && export TS_NODE_PROJECT='./tsconfig.test.json' && mocha -r ts-node/register 'test/**/*.test.ts'","build":"rm -Rf ./dist && tsc -p ./tsconfig.json && cp package.json ./dist && cp README.md ./dist","commit":"cz","eslint":"eslint .","prettier":"prettier --write .","build:watch":"nodemon -e '*' --watch ./src --exec \"npm run build || exit 1\"","feature-tests":"cucumber-js -p default","test:coverage":"nyc --all --reporter cobertura --reporter text --reporter lcov --reporter html npm run test"},"_npmUser":{"name":"macornwell","email":"michael.a.cornwell@gmail.com"},"_npmVersion":"11.1.0","description":"A Rest API implementation with a Node In Layers system.","directories":{},"_nodeVersion":"20.18.2","dependencies":{"cors":"^2.8.5","lodash":"^4.17.21","express":"^4.21.2","body-parser":"^1.20.3","express-session":"^1.18.1","http-compression":"^1.1.1","functional-models":"^3.0.16","http-status-codes":"^2.3.0","@node-in-layers/core":"^1.5.1","@node-in-layers/data":"^1.0.14"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","chai":"^4.2.0","mocha":"^11.0.1","sinon":"^19.0.2","eslint":"9.14.0","globals":"^15.12.0","js-yaml":"^4.1.0","nodemon":"^3.1.7","ts-node":"^10.4.0","argparse":"^2.0.1","prettier":"^3.3.3","@eslint/js":"^9.12.0","handlebars":"^4.7.8","proxyquire":"^2.1.3","sinon-chai":"^3.5.0","typescript":"5.3.3","@types/node":"^22.9.0","@types/mocha":"^9.1.1","@types/sinon":"^17.0.3","@types/lodash":"^4.17.13","@eslint/compat":"^1.2.0","@eslint/eslintrc":"^3.1.0","chai-as-promised":"^7.1.1","@types/proxyquire":"^1.3.31","@cucumber/cucumber":"11.0.1","source-map-support":"^0.5.21","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^9.1.0","@types/chai-as-promised":"^8.0.1","eslint-plugin-functional":"~7.1.0","@typescript-eslint/parser":"8.13.0","cz-conventional-changelog":"^3.3.0","@types/json-stringify-safe":"^5.0.3","@typescript-eslint/eslint-plugin":"8.13.0","@istanbuljs/nyc-config-typescript":"^1.0.2","eslint-import-resolver-typescript":"^3.6.3"},"_npmOperationalInternal":{"tmp":"tmp/rest-api_1.0.12_1747075178644_0.5279061357090635","host":"s3://npm-registry-packages-npm-production"}},"1.0.13":{"name":"@node-in-layers/rest-api","version":"1.0.13","author":"","license":"ISC","_id":"@node-in-layers/rest-api@1.0.13","maintainers":[{"name":"macornwell","email":"michael.a.cornwell@gmail.com"}],"dist":{"shasum":"b0ea7013a9a651709626d3999f78b3519819db8d","tarball":"https://registry.npmjs.org/@node-in-layers/rest-api/-/rest-api-1.0.13.tgz","fileCount":23,"integrity":"sha512-V5XIP/QnUq7+0itCuk77krokHMXLOf8pvAIQ5mjgoizA5BrpbazEjgOqXKD/kiYXsDTho+0s8N4a0s9Ez+cPyA==","signatures":[{"sig":"MEUCIEtpLptkFIFCl/IBBiyzN86o4FiRkReq+fboEHECRTI4AiEA3EYyFBbMw/kuTNKTZvf7gt0A6Mt/wMAasUrZRXBkjB0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43934},"main":"index.js","type":"module","types":"./index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"122b728ba583b986b1ea124cbeeaeab5620f9beb","scripts":{"dist":"npm run build && cd dist && npm publish","test":"export TS_NODE_TRANSPILE_ONLY=true && export TS_NODE_PROJECT='./tsconfig.test.json' && mocha -r ts-node/register 'test/**/*.test.ts'","build":"rm -Rf ./dist && tsc -p ./tsconfig.json && cp package.json ./dist && cp README.md ./dist","commit":"cz","eslint":"eslint .","prettier":"prettier --write .","build:watch":"nodemon -e '*' --watch ./src --exec \"npm run build || exit 1\"","feature-tests":"cucumber-js -p default","test:coverage":"nyc --all --reporter cobertura --reporter text --reporter lcov --reporter html npm run test"},"_npmUser":{"name":"macornwell","email":"michael.a.cornwell@gmail.com"},"_npmVersion":"11.1.0","description":"A Rest API implementation with a Node In Layers system.","directories":{},"_nodeVersion":"20.18.2","dependencies":{"cors":"^2.8.5","lodash":"^4.17.21","express":"^4.21.2","body-parser":"^1.20.3","express-session":"^1.18.1","http-compression":"^1.1.1","functional-models":"^3.0.16","http-status-codes":"^2.3.0","@node-in-layers/core":"^1.5.1","@node-in-layers/data":"^1.0.14"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","chai":"^4.2.0","mocha":"^11.0.1","sinon":"^19.0.2","eslint":"9.14.0","globals":"^15.12.0","js-yaml":"^4.1.0","nodemon":"^3.1.7","ts-node":"^10.4.0","argparse":"^2.0.1","prettier":"^3.3.3","@eslint/js":"^9.12.0","handlebars":"^4.7.8","proxyquire":"^2.1.3","sinon-chai":"^3.5.0","typescript":"5.3.3","@types/node":"^22.9.0","@types/mocha":"^9.1.1","@types/sinon":"^17.0.3","@types/lodash":"^4.17.13","@eslint/compat":"^1.2.0","@eslint/eslintrc":"^3.1.0","chai-as-promised":"^7.1.1","@types/proxyquire":"^1.3.31","@cucumber/cucumber":"11.0.1","source-map-support":"^0.5.21","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^9.1.0","@types/chai-as-promised":"^8.0.1","eslint-plugin-functional":"~7.1.0","@typescript-eslint/parser":"8.13.0","cz-conventional-changelog":"^3.3.0","@types/json-stringify-safe":"^5.0.3","@typescript-eslint/eslint-plugin":"8.13.0","@istanbuljs/nyc-config-typescript":"^1.0.2","eslint-import-resolver-typescript":"^3.6.3"},"_npmOperationalInternal":{"tmp":"tmp/rest-api_1.0.13_1747077826185_0.051607335714503044","host":"s3://npm-registry-packages-npm-production"}},"1.0.14":{"name":"@node-in-layers/rest-api","version":"1.0.14","author":"","license":"ISC","_id":"@node-in-layers/rest-api@1.0.14","maintainers":[{"name":"macornwell","email":"michael.a.cornwell@gmail.com"}],"dist":{"shasum":"cd2c7d3b65d7fe2a5f3bf21d4bd153b5ee4f73d7","tarball":"https://registry.npmjs.org/@node-in-layers/rest-api/-/rest-api-1.0.14.tgz","fileCount":23,"integrity":"sha512-pxT7D3UobksPRpJfXWZA880NcpgiK81loUKVpfLfQWybxsb4f8fA+A581SC/Qip5k00wSoUj0QJTBOvPFKKfeA==","signatures":[{"sig":"MEQCIE4YPACDQKovBrt8q3I0eGrQxXZmY7xcZtqncFiXouGJAiBQJ8dIQEiK35YblZM6alzgFkyBtsHmumjGeIW+syH4zQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44282},"main":"index.js","type":"module","types":"./index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"14da1bce57272207aeb1ef898edbe505a8d7285d","scripts":{"dist":"npm run build && cd dist && npm publish","test":"export TS_NODE_TRANSPILE_ONLY=true && export TS_NODE_PROJECT='./tsconfig.test.json' && mocha -r ts-node/register 'test/**/*.test.ts'","build":"rm -Rf ./dist && tsc -p ./tsconfig.json && cp package.json ./dist && cp README.md ./dist","commit":"cz","eslint":"eslint .","prettier":"prettier --write .","build:watch":"nodemon -e '*' --watch ./src --exec \"npm run build || exit 1\"","feature-tests":"cucumber-js -p default","test:coverage":"nyc --all --reporter cobertura --reporter text --reporter lcov --reporter html npm run test"},"_npmUser":{"name":"macornwell","email":"michael.a.cornwell@gmail.com"},"_npmVersion":"11.1.0","description":"A Rest API implementation with a Node In Layers system.","directories":{},"_nodeVersion":"20.18.2","dependencies":{"cors":"^2.8.5","lodash":"^4.17.21","express":"^4.21.2","body-parser":"^1.20.3","express-session":"^1.18.1","http-compression":"^1.1.1","functional-models":"^3.0.16","http-status-codes":"^2.3.0","@node-in-layers/core":"^1.5.1","@node-in-layers/data":"^1.0.14"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","chai":"^4.2.0","mocha":"^11.0.1","sinon":"^19.0.2","eslint":"9.14.0","globals":"^15.12.0","js-yaml":"^4.1.0","nodemon":"^3.1.7","ts-node":"^10.4.0","argparse":"^2.0.1","prettier":"^3.3.3","@eslint/js":"^9.12.0","handlebars":"^4.7.8","proxyquire":"^2.1.3","sinon-chai":"^3.5.0","typescript":"5.3.3","@types/node":"^22.9.0","@types/mocha":"^9.1.1","@types/sinon":"^17.0.3","@types/lodash":"^4.17.13","@eslint/compat":"^1.2.0","@eslint/eslintrc":"^3.1.0","chai-as-promised":"^7.1.1","@types/proxyquire":"^1.3.31","@cucumber/cucumber":"11.0.1","source-map-support":"^0.5.21","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^9.1.0","@types/chai-as-promised":"^8.0.1","eslint-plugin-functional":"~7.1.0","@typescript-eslint/parser":"8.13.0","cz-conventional-changelog":"^3.3.0","@types/json-stringify-safe":"^5.0.3","@typescript-eslint/eslint-plugin":"8.13.0","@istanbuljs/nyc-config-typescript":"^1.0.2","eslint-import-resolver-typescript":"^3.6.3"},"_npmOperationalInternal":{"tmp":"tmp/rest-api_1.0.14_1747078999314_0.9012325339260057","host":"s3://npm-registry-packages-npm-production"}},"1.0.15":{"name":"@node-in-layers/rest-api","version":"1.0.15","author":"","license":"ISC","_id":"@node-in-layers/rest-api@1.0.15","maintainers":[{"name":"macornwell","email":"michael.a.cornwell@gmail.com"}],"dist":{"shasum":"412965845cb10e24eccb0d37d18c1bf0f182c010","tarball":"https://registry.npmjs.org/@node-in-layers/rest-api/-/rest-api-1.0.15.tgz","fileCount":23,"integrity":"sha512-bBT/bTboeK7sSJG8RivdUNBq8dKhZTe/DvK19qshZCOLLf2HvdZmUcBBlkF9guT/6ytztT6AwcnvFNjfaS45fA==","signatures":[{"sig":"MEQCIFCm5vHU1d4qQRGulYaqxgArd3Z29x1Mv9hFIuzpsg0bAiAD/B6QhTuCQNSiHceEnJH+yTnMOj9ApSKsZMuVrr8gbg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47904},"main":"index.js","type":"module","types":"./index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"68a16d52dd2bc789fcdab70b1645ddddf9b1c5d7","scripts":{"dist":"npm run build && cd dist && npm publish","test":"export TS_NODE_TRANSPILE_ONLY=true && export TS_NODE_PROJECT='./tsconfig.test.json' && mocha -r ts-node/register 'test/**/*.test.ts'","build":"rm -Rf ./dist && tsc -p ./tsconfig.json && cp package.json ./dist && cp README.md ./dist","commit":"cz","eslint":"eslint .","prettier":"prettier --write .","build:watch":"nodemon -e '*' --watch ./src --exec \"npm run build || exit 1\"","feature-tests":"cucumber-js -p default","test:coverage":"nyc --all --reporter cobertura --reporter text --reporter lcov --reporter html npm run test"},"_npmUser":{"name":"macornwell","email":"michael.a.cornwell@gmail.com"},"_npmVersion":"11.1.0","description":"A Rest API implementation with a Node In Layers system.","directories":{},"_nodeVersion":"20.18.2","dependencies":{"cors":"^2.8.5","lodash":"^4.17.21","express":"^4.21.2","body-parser":"^1.20.3","express-session":"^1.18.1","http-compression":"^1.1.1","functional-models":"^3.0.16","http-status-codes":"^2.3.0","@node-in-layers/core":"^1.5.1","@node-in-layers/data":"^1.0.14"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","chai":"^4.2.0","mocha":"^11.0.1","sinon":"^19.0.2","eslint":"9.14.0","globals":"^15.12.0","js-yaml":"^4.1.0","nodemon":"^3.1.7","ts-node":"^10.4.0","argparse":"^2.0.1","prettier":"^3.3.3","@eslint/js":"^9.12.0","handlebars":"^4.7.8","proxyquire":"^2.1.3","sinon-chai":"^3.5.0","typescript":"5.3.3","@types/node":"^22.9.0","@types/mocha":"^9.1.1","@types/sinon":"^17.0.3","@types/lodash":"^4.17.13","@eslint/compat":"^1.2.0","@eslint/eslintrc":"^3.1.0","chai-as-promised":"^7.1.1","@types/proxyquire":"^1.3.31","@cucumber/cucumber":"11.0.1","source-map-support":"^0.5.21","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^9.1.0","@types/chai-as-promised":"^8.0.1","eslint-plugin-functional":"~7.1.0","@typescript-eslint/parser":"8.13.0","cz-conventional-changelog":"^3.3.0","@types/json-stringify-safe":"^5.0.3","@typescript-eslint/eslint-plugin":"8.13.0","@istanbuljs/nyc-config-typescript":"^1.0.2","eslint-import-resolver-typescript":"^3.6.3"},"_npmOperationalInternal":{"tmp":"tmp/rest-api_1.0.15_1747080470393_0.08226194894726868","host":"s3://npm-registry-packages-npm-production"}},"1.0.16":{"name":"@node-in-layers/rest-api","version":"1.0.16","author":"","license":"ISC","_id":"@node-in-layers/rest-api@1.0.16","maintainers":[{"name":"macornwell","email":"michael.a.cornwell@gmail.com"}],"dist":{"shasum":"15db9599f4955b636c00a5b77023e905ef00acf2","tarball":"https://registry.npmjs.org/@node-in-layers/rest-api/-/rest-api-1.0.16.tgz","fileCount":23,"integrity":"sha512-NoAM582Z9lywB2mE0AqebKy1Zb++GZfx5jXkzoZXZBCM28crRs8cK5Su7bp6i6QkTYlKIPx1oexVOwefhVoj/g==","signatures":[{"sig":"MEUCIQCAOuYzVBW5bX5FAXnzbqFt84poMmGL7EaNuYDlMUutEwIgWXlqdGZGiaib5spaIOfPPgxaA1vU8axgnoqlwerGlAU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47505},"main":"index.js","type":"module","types":"./index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"b2d0d6a6eda96ce877b797c0f284de9adae18c2b","scripts":{"dist":"npm run build && cd dist && npm publish","test":"export TS_NODE_TRANSPILE_ONLY=true && export TS_NODE_PROJECT='./tsconfig.test.json' && mocha -r ts-node/register 'test/**/*.test.ts'","build":"rm -Rf ./dist && tsc -p ./tsconfig.json && cp package.json ./dist && cp README.md ./dist","commit":"cz","eslint":"eslint .","prettier":"prettier --write .","build:watch":"nodemon -e '*' --watch ./src --exec \"npm run build || exit 1\"","feature-tests":"cucumber-js -p default","test:coverage":"nyc --all --reporter cobertura --reporter text --reporter lcov --reporter html npm run test"},"_npmUser":{"name":"macornwell","email":"michael.a.cornwell@gmail.com"},"_npmVersion":"11.1.0","description":"A Rest API implementation with a Node In Layers system.","directories":{},"_nodeVersion":"20.18.2","dependencies":{"cors":"^2.8.5","lodash":"^4.17.21","express":"^4.21.2","body-parser":"^1.20.3","express-session":"^1.18.1","http-compression":"^1.1.1","functional-models":"^3.0.16","http-status-codes":"^2.3.0","@node-in-layers/core":"^1.5.1","@node-in-layers/data":"^1.0.14"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","chai":"^4.2.0","mocha":"^11.0.1","sinon":"^19.0.2","eslint":"9.14.0","globals":"^15.12.0","js-yaml":"^4.1.0","nodemon":"^3.1.7","ts-node":"^10.4.0","argparse":"^2.0.1","prettier":"^3.3.3","@eslint/js":"^9.12.0","handlebars":"^4.7.8","proxyquire":"^2.1.3","sinon-chai":"^3.5.0","typescript":"5.3.3","@types/node":"^22.9.0","@types/mocha":"^9.1.1","@types/sinon":"^17.0.3","@types/lodash":"^4.17.13","@eslint/compat":"^1.2.0","@eslint/eslintrc":"^3.1.0","chai-as-promised":"^7.1.1","@types/proxyquire":"^1.3.31","@cucumber/cucumber":"11.0.1","source-map-support":"^0.5.21","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^9.1.0","@types/chai-as-promised":"^8.0.1","eslint-plugin-functional":"~7.1.0","@typescript-eslint/parser":"8.13.0","cz-conventional-changelog":"^3.3.0","@types/json-stringify-safe":"^5.0.3","@typescript-eslint/eslint-plugin":"8.13.0","@istanbuljs/nyc-config-typescript":"^1.0.2","eslint-import-resolver-typescript":"^3.6.3"},"_npmOperationalInternal":{"tmp":"tmp/rest-api_1.0.16_1747080880901_0.9340945603841886","host":"s3://npm-registry-packages-npm-production"}},"1.0.17":{"name":"@node-in-layers/rest-api","version":"1.0.17","author":"","license":"ISC","_id":"@node-in-layers/rest-api@1.0.17","maintainers":[{"name":"macornwell","email":"michael.a.cornwell@gmail.com"}],"dist":{"shasum":"73fcedd7852cfc89f9c96a277b6325912e716725","tarball":"https://registry.npmjs.org/@node-in-layers/rest-api/-/rest-api-1.0.17.tgz","fileCount":23,"integrity":"sha512-55sluE1O1BMEjEsgcGCdl8TX6S2WUIUYlIaof4LIu+NT1j96wgP7bSa67OkEAhpMu+wtzJCtX5Giu3JTuM9WcQ==","signatures":[{"sig":"MEQCIBIoZFXhwz9B0td6oluRQgpRNtpPnOHfkuKWJwzMvz2YAiADQAKbP8v3XsXAEXaWJlB+iTNPNtQluTaNJ2dKar+fIw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46971},"main":"index.js","type":"module","types":"./index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"9e171a33c4f256e84dae61d6362478aef341701b","scripts":{"dist":"npm run build && cd dist && npm publish","test":"export TS_NODE_TRANSPILE_ONLY=true && export TS_NODE_PROJECT='./tsconfig.test.json' && mocha -r ts-node/register 'test/**/*.test.ts'","build":"rm -Rf ./dist && tsc -p ./tsconfig.json && cp package.json ./dist && cp README.md ./dist","commit":"cz","eslint":"eslint .","prettier":"prettier --write .","build:watch":"nodemon -e '*' --watch ./src --exec \"npm run build || exit 1\"","feature-tests":"cucumber-js -p default","test:coverage":"nyc --all --reporter cobertura --reporter text --reporter lcov --reporter html npm run test"},"_npmUser":{"name":"macornwell","email":"michael.a.cornwell@gmail.com"},"_npmVersion":"11.1.0","description":"A Rest API implementation with a Node In Layers system.","directories":{},"_nodeVersion":"20.18.2","dependencies":{"cors":"^2.8.5","lodash":"^4.17.21","express":"^4.21.2","body-parser":"^1.20.3","express-session":"^1.18.1","http-compression":"^1.1.1","functional-models":"^3.0.16","http-status-codes":"^2.3.0","@node-in-layers/core":"^1.5.1","@node-in-layers/data":"^1.0.14"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","chai":"^4.2.0","mocha":"^11.0.1","sinon":"^19.0.2","eslint":"9.14.0","globals":"^15.12.0","js-yaml":"^4.1.0","nodemon":"^3.1.7","ts-node":"^10.4.0","argparse":"^2.0.1","prettier":"^3.3.3","@eslint/js":"^9.12.0","handlebars":"^4.7.8","proxyquire":"^2.1.3","sinon-chai":"^3.5.0","typescript":"5.3.3","@types/node":"^22.9.0","@types/mocha":"^9.1.1","@types/sinon":"^17.0.3","@types/lodash":"^4.17.13","@eslint/compat":"^1.2.0","@eslint/eslintrc":"^3.1.0","chai-as-promised":"^7.1.1","@types/proxyquire":"^1.3.31","@cucumber/cucumber":"11.0.1","source-map-support":"^0.5.21","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^9.1.0","@types/chai-as-promised":"^8.0.1","eslint-plugin-functional":"~7.1.0","@typescript-eslint/parser":"8.13.0","cz-conventional-changelog":"^3.3.0","@types/json-stringify-safe":"^5.0.3","@typescript-eslint/eslint-plugin":"8.13.0","@istanbuljs/nyc-config-typescript":"^1.0.2","eslint-import-resolver-typescript":"^3.6.3"},"_npmOperationalInternal":{"tmp":"tmp/rest-api_1.0.17_1747080969825_0.24773568397527868","host":"s3://npm-registry-packages-npm-production"}},"1.0.18":{"name":"@node-in-layers/rest-api","version":"1.0.18","author":"","license":"ISC","_id":"@node-in-layers/rest-api@1.0.18","maintainers":[{"name":"macornwell","email":"michael.a.cornwell@gmail.com"}],"dist":{"shasum":"556cc148a0a28678960ac8ffd12225dffbe44c9c","tarball":"https://registry.npmjs.org/@node-in-layers/rest-api/-/rest-api-1.0.18.tgz","fileCount":23,"integrity":"sha512-k2Rtr6l4Hdx3iI4baAFsxeq7THMeO4H/J430ecjLdIpjG4PRflgswFO4o/LDj/Y+ycU/gaxeKbTy0J+yyX8+CA==","signatures":[{"sig":"MEUCIQCo9DQQ2sVv+zYsh/88fEatyXE/xOKsFsJxNmKbiUuaPQIgHrjNw5ws8q3ea1agwPgTJUvzOxWEpzOxKpRNSlAXy7M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47042},"main":"index.js","type":"module","types":"./index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"22334681b1821acf1eb7b55afe67ffdcf6d6045c","scripts":{"dist":"npm run build && cd dist && npm publish","test":"export TS_NODE_TRANSPILE_ONLY=true && export TS_NODE_PROJECT='./tsconfig.test.json' && mocha -r ts-node/register 'test/**/*.test.ts'","build":"rm -Rf ./dist && tsc -p ./tsconfig.json && cp package.json ./dist && cp README.md ./dist","commit":"cz","eslint":"eslint .","prettier":"prettier --write .","build:watch":"nodemon -e '*' --watch ./src --exec \"npm run build || exit 1\"","feature-tests":"cucumber-js -p default","test:coverage":"nyc --all --reporter cobertura --reporter text --reporter lcov --reporter html npm run test"},"_npmUser":{"name":"macornwell","email":"michael.a.cornwell@gmail.com"},"_npmVersion":"11.1.0","description":"A Rest API implementation with a Node In Layers system.","directories":{},"_nodeVersion":"20.18.2","dependencies":{"cors":"^2.8.5","lodash":"^4.17.21","express":"^4.21.2","body-parser":"^1.20.3","express-session":"^1.18.1","http-compression":"^1.1.1","functional-models":"^3.0.16","http-status-codes":"^2.3.0","@node-in-layers/core":"^1.5.1","@node-in-layers/data":"^1.0.14"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","chai":"^4.2.0","mocha":"^11.0.1","sinon":"^19.0.2","eslint":"9.14.0","globals":"^15.12.0","js-yaml":"^4.1.0","nodemon":"^3.1.7","ts-node":"^10.4.0","argparse":"^2.0.1","prettier":"^3.3.3","@eslint/js":"^9.12.0","handlebars":"^4.7.8","proxyquire":"^2.1.3","sinon-chai":"^3.5.0","typescript":"5.3.3","@types/node":"^22.9.0","@types/mocha":"^9.1.1","@types/sinon":"^17.0.3","@types/lodash":"^4.17.13","@eslint/compat":"^1.2.0","@eslint/eslintrc":"^3.1.0","chai-as-promised":"^7.1.1","@types/proxyquire":"^1.3.31","@cucumber/cucumber":"11.0.1","source-map-support":"^0.5.21","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^9.1.0","@types/chai-as-promised":"^8.0.1","eslint-plugin-functional":"~7.1.0","@typescript-eslint/parser":"8.13.0","cz-conventional-changelog":"^3.3.0","@types/json-stringify-safe":"^5.0.3","@typescript-eslint/eslint-plugin":"8.13.0","@istanbuljs/nyc-config-typescript":"^1.0.2","eslint-import-resolver-typescript":"^3.6.3"},"_npmOperationalInternal":{"tmp":"tmp/rest-api_1.0.18_1747081052868_0.13280315214793736","host":"s3://npm-registry-packages-npm-production"}},"1.0.19":{"name":"@node-in-layers/rest-api","version":"1.0.19","author":"","license":"ISC","_id":"@node-in-layers/rest-api@1.0.19","maintainers":[{"name":"macornwell","email":"michael.a.cornwell@gmail.com"}],"dist":{"shasum":"7fabb8e96f7a1a1518244701fd81824eb40ad9f4","tarball":"https://registry.npmjs.org/@node-in-layers/rest-api/-/rest-api-1.0.19.tgz","fileCount":23,"integrity":"sha512-+AMeOEb3oJZgYYomVmdoMuoIfsmWUboChnxbuLW6M5qBs7Wd5SrOIrGJ8a0e1xZf3thQ20RAy5uf6jZIDnrAIA==","signatures":[{"sig":"MEYCIQDk2KmKTqxaN/QHXIyN4yGvE2ZawSf6i3tcMfjOvG2LUwIhAOf3BB10IVIeuZM5/fH7DQoSCOz+syQspkj2dhJFKjgu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47141},"main":"index.js","type":"module","types":"./index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"c8544c56763321aa7685b65ba89b874c0356aaa0","scripts":{"dist":"npm run build && cd dist && npm publish","test":"export TS_NODE_TRANSPILE_ONLY=true && export TS_NODE_PROJECT='./tsconfig.test.json' && mocha -r ts-node/register 'test/**/*.test.ts'","build":"rm -Rf ./dist && tsc -p ./tsconfig.json && cp package.json ./dist && cp README.md ./dist","commit":"cz","eslint":"eslint .","prettier":"prettier --write .","build:watch":"nodemon -e '*' --watch ./src --exec \"npm run build || exit 1\"","feature-tests":"cucumber-js -p default","test:coverage":"nyc --all --reporter cobertura --reporter text --reporter lcov --reporter html npm run test"},"_npmUser":{"name":"macornwell","email":"michael.a.cornwell@gmail.com"},"_npmVersion":"11.1.0","description":"A Rest API implementation with a Node In Layers system.","directories":{},"_nodeVersion":"20.18.2","dependencies":{"cors":"^2.8.5","lodash":"^4.17.21","express":"^4.21.2","body-parser":"^1.20.3","express-session":"^1.18.1","http-compression":"^1.1.1","functional-models":"^3.0.16","http-status-codes":"^2.3.0","@node-in-layers/core":"^1.5.1","@node-in-layers/data":"^1.0.14"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","chai":"^4.2.0","mocha":"^11.0.1","sinon":"^19.0.2","eslint":"9.14.0","globals":"^15.12.0","js-yaml":"^4.1.0","nodemon":"^3.1.7","ts-node":"^10.4.0","argparse":"^2.0.1","prettier":"^3.3.3","@eslint/js":"^9.12.0","handlebars":"^4.7.8","proxyquire":"^2.1.3","sinon-chai":"^3.5.0","typescript":"5.3.3","@types/node":"^22.9.0","@types/mocha":"^9.1.1","@types/sinon":"^17.0.3","@types/lodash":"^4.17.13","@eslint/compat":"^1.2.0","@eslint/eslintrc":"^3.1.0","chai-as-promised":"^7.1.1","@types/proxyquire":"^1.3.31","@cucumber/cucumber":"11.0.1","source-map-support":"^0.5.21","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^9.1.0","@types/chai-as-promised":"^8.0.1","eslint-plugin-functional":"~7.1.0","@typescript-eslint/parser":"8.13.0","cz-conventional-changelog":"^3.3.0","@types/json-stringify-safe":"^5.0.3","@typescript-eslint/eslint-plugin":"8.13.0","@istanbuljs/nyc-config-typescript":"^1.0.2","eslint-import-resolver-typescript":"^3.6.3"},"_npmOperationalInternal":{"tmp":"tmp/rest-api_1.0.19_1747081296061_0.3238200305827341","host":"s3://npm-registry-packages-npm-production"}},"1.0.20":{"name":"@node-in-layers/rest-api","version":"1.0.20","author":"","license":"ISC","_id":"@node-in-layers/rest-api@1.0.20","maintainers":[{"name":"macornwell","email":"michael.a.cornwell@gmail.com"}],"dist":{"shasum":"81e48c583af94663363737da7b10af2ba64268b1","tarball":"https://registry.npmjs.org/@node-in-layers/rest-api/-/rest-api-1.0.20.tgz","fileCount":23,"integrity":"sha512-uo5USXiVXMfYOXBAJsmhSgLljklR/tk6BLpAl9Z3oRsoycePTASP4WWwP9HXqSQOz5LhvYY2/GMdtQktUmbL8A==","signatures":[{"sig":"MEQCIE909SDPK8WRSY0xHrww8YwRvH47BbNdflwHHJJ4ewAUAiBcU1icRqHuze3VKxf5Wb6zbarPnHc3BCRBsl5sv6r40A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47317},"main":"index.js","type":"module","types":"./index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"217b74acab125d1a70ba4891da64dc75b10ca49c","scripts":{"dist":"npm run build && cd dist && npm publish","test":"export TS_NODE_TRANSPILE_ONLY=true && export TS_NODE_PROJECT='./tsconfig.test.json' && mocha -r ts-node/register 'test/**/*.test.ts'","build":"rm -Rf ./dist && tsc -p ./tsconfig.json && cp package.json ./dist && cp README.md ./dist","commit":"cz","eslint":"eslint .","prettier":"prettier --write .","build:watch":"nodemon -e '*' --watch ./src --exec \"npm run build || exit 1\"","feature-tests":"cucumber-js -p default","test:coverage":"nyc --all --reporter cobertura --reporter text --reporter lcov --reporter html npm run test"},"_npmUser":{"name":"macornwell","email":"michael.a.cornwell@gmail.com"},"_npmVersion":"11.1.0","description":"A Rest API implementation with a Node In Layers system.","directories":{},"_nodeVersion":"20.18.2","dependencies":{"cors":"^2.8.5","lodash":"^4.17.21","express":"^4.21.2","body-parser":"^1.20.3","express-session":"^1.18.1","http-compression":"^1.1.1","functional-models":"^3.0.16","http-status-codes":"^2.3.0","@node-in-layers/core":"^1.5.1","@node-in-layers/data":"^1.0.14"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","chai":"^4.2.0","mocha":"^11.0.1","sinon":"^19.0.2","eslint":"9.14.0","globals":"^15.12.0","js-yaml":"^4.1.0","nodemon":"^3.1.7","ts-node":"^10.4.0","argparse":"^2.0.1","prettier":"^3.3.3","@eslint/js":"^9.12.0","handlebars":"^4.7.8","proxyquire":"^2.1.3","sinon-chai":"^3.5.0","typescript":"5.3.3","@types/node":"^22.9.0","@types/mocha":"^9.1.1","@types/sinon":"^17.0.3","@types/lodash":"^4.17.13","@eslint/compat":"^1.2.0","@eslint/eslintrc":"^3.1.0","chai-as-promised":"^7.1.1","@types/proxyquire":"^1.3.31","@cucumber/cucumber":"11.0.1","source-map-support":"^0.5.21","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^9.1.0","@types/chai-as-promised":"^8.0.1","eslint-plugin-functional":"~7.1.0","@typescript-eslint/parser":"8.13.0","cz-conventional-changelog":"^3.3.0","@types/json-stringify-safe":"^5.0.3","@typescript-eslint/eslint-plugin":"8.13.0","@istanbuljs/nyc-config-typescript":"^1.0.2","eslint-import-resolver-typescript":"^3.6.3"},"_npmOperationalInternal":{"tmp":"tmp/rest-api_1.0.20_1747081378112_0.8767697324914037","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@node-in-layers/rest-api","version":"1.1.0","author":"","license":"ISC","_id":"@node-in-layers/rest-api@1.1.0","maintainers":[{"name":"macornwell","email":"michael.a.cornwell@gmail.com"}],"dist":{"shasum":"fcb2206bba28ecff0e3450d007efb706938aa9dc","tarball":"https://registry.npmjs.org/@node-in-layers/rest-api/-/rest-api-1.1.0.tgz","fileCount":23,"integrity":"sha512-6g0kFE7yOlmLcUQBOprmW9zhCjOTFJmVq5GCJruggRsLBl3FIUn1O64b0gN6K1Nfuzq1O/zqobQk+C7TkJ7WVw==","signatures":[{"sig":"MEQCIGC1nPdhCDYg6BihvtCManYaMo3GyJtkMxfIN6Dr5EhzAiAxk6co0TugHFcxLDXqRYTvPhxvm5Xcf4WSz5RwpZQGuA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47322},"main":"index.js","type":"module","types":"./index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"616a825cf86d4aac38850331b2adbeb15e2a6661","scripts":{"dist":"npm run build && cd dist && npm publish","test":"export TS_NODE_TRANSPILE_ONLY=true && export TS_NODE_PROJECT='./tsconfig.test.json' && mocha -r ts-node/register 'test/**/*.test.ts'","build":"rm -Rf ./dist && tsc -p ./tsconfig.json && cp package.json ./dist && cp README.md ./dist","commit":"cz","eslint":"eslint .","prettier":"prettier --write .","build:watch":"nodemon -e '*' --watch ./src --exec \"npm run build || exit 1\"","feature-tests":"cucumber-js -p default","test:coverage":"nyc --all --reporter cobertura --reporter text --reporter lcov --reporter html npm run test"},"_npmUser":{"name":"macornwell","email":"michael.a.cornwell@gmail.com"},"_npmVersion":"11.1.0","description":"A Rest API implementation with a Node In Layers system.","directories":{},"_nodeVersion":"20.18.2","dependencies":{"cors":"^2.8.5","lodash":"^4.17.21","express":"^4.21.2","body-parser":"^1.20.3","express-session":"^1.18.1","http-compression":"^1.1.1","functional-models":"^3.0.16","http-status-codes":"^2.3.0","@node-in-layers/core":"^1.5.1","@node-in-layers/data":"^1.0.14"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","chai":"^4.2.0","mocha":"^11.0.1","sinon":"^19.0.2","eslint":"9.14.0","globals":"^15.12.0","js-yaml":"^4.1.0","nodemon":"^3.1.7","ts-node":"^10.4.0","argparse":"^2.0.1","prettier":"^3.3.3","@eslint/js":"^9.12.0","handlebars":"^4.7.8","proxyquire":"^2.1.3","sinon-chai":"^3.5.0","typescript":"5.3.3","@types/node":"^22.9.0","@types/mocha":"^9.1.1","@types/sinon":"^17.0.3","@types/lodash":"^4.17.13","@eslint/compat":"^1.2.0","@eslint/eslintrc":"^3.1.0","chai-as-promised":"^7.1.1","@types/proxyquire":"^1.3.31","@cucumber/cucumber":"11.0.1","source-map-support":"^0.5.21","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^9.1.0","@types/chai-as-promised":"^8.0.1","eslint-plugin-functional":"~7.1.0","@typescript-eslint/parser":"8.13.0","cz-conventional-changelog":"^3.3.0","@types/json-stringify-safe":"^5.0.3","@typescript-eslint/eslint-plugin":"8.13.0","@istanbuljs/nyc-config-typescript":"^1.0.2","eslint-import-resolver-typescript":"^3.6.3"},"_npmOperationalInternal":{"tmp":"tmp/rest-api_1.1.0_1747081495539_0.21222438791947096","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@node-in-layers/rest-api","version":"1.1.1","author":"","license":"ISC","_id":"@node-in-layers/rest-api@1.1.1","maintainers":[{"name":"macornwell","email":"michael.a.cornwell@gmail.com"}],"dist":{"shasum":"4ed2a3154a92a0533231211570f7eb19ce6011e3","tarball":"https://registry.npmjs.org/@node-in-layers/rest-api/-/rest-api-1.1.1.tgz","fileCount":23,"integrity":"sha512-Qcxj6zZxSKNP4+Y//8kw9mIX5GTLWzo0Vz0i9VJ9R5hqfOJT326dCu46/qdobDvu+JL8Ow8phpR2eaJZiuNG6Q==","signatures":[{"sig":"MEYCIQD+ZmNRBOVSH7Lb+ylTlCKQW6qtQcbg2zLzIcO4+3XtrQIhAKAL+cH3TFgrdG+zz8OwSD9gpLO2YCwppt2X3pdQDZEa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47322},"main":"index.js","type":"module","types":"./index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"2e6253b9c1d7f4fbdac4fd02713953873cd8c8f4","scripts":{"dist":"npm run build && cd dist && npm publish","test":"export TS_NODE_TRANSPILE_ONLY=true && export TS_NODE_PROJECT='./tsconfig.test.json' && mocha -r ts-node/register 'test/**/*.test.ts'","build":"rm -Rf ./dist && tsc -p ./tsconfig.json && cp package.json ./dist && cp README.md ./dist","commit":"cz","eslint":"eslint .","prettier":"prettier --write .","build:watch":"nodemon -e '*' --watch ./src --exec \"npm run build || exit 1\"","feature-tests":"cucumber-js -p default","test:coverage":"nyc --all --reporter cobertura --reporter text --reporter lcov --reporter html npm run test"},"_npmUser":{"name":"macornwell","email":"michael.a.cornwell@gmail.com"},"_npmVersion":"11.1.0","description":"A Rest API implementation with a Node In Layers system.","directories":{},"_nodeVersion":"20.18.2","dependencies":{"cors":"^2.8.5","lodash":"^4.17.21","express":"^4.21.2","body-parser":"^1.20.3","express-session":"^1.18.1","http-compression":"^1.1.1","functional-models":"^3.0.16","http-status-codes":"^2.3.0","@node-in-layers/core":"^1.5.3","@node-in-layers/data":"^1.0.14"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","chai":"^4.2.0","mocha":"^11.0.1","sinon":"^19.0.2","eslint":"9.14.0","globals":"^15.12.0","js-yaml":"^4.1.0","nodemon":"^3.1.7","ts-node":"^10.4.0","argparse":"^2.0.1","prettier":"^3.3.3","@eslint/js":"^9.12.0","handlebars":"^4.7.8","proxyquire":"^2.1.3","sinon-chai":"^3.5.0","typescript":"5.3.3","@types/node":"^22.9.0","@types/mocha":"^9.1.1","@types/sinon":"^17.0.3","@types/lodash":"^4.17.13","@eslint/compat":"^1.2.0","@eslint/eslintrc":"^3.1.0","chai-as-promised":"^7.1.1","@types/proxyquire":"^1.3.31","@cucumber/cucumber":"11.0.1","source-map-support":"^0.5.21","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^9.1.0","@types/chai-as-promised":"^8.0.1","eslint-plugin-functional":"~7.1.0","@typescript-eslint/parser":"8.13.0","cz-conventional-changelog":"^3.3.0","@types/json-stringify-safe":"^5.0.3","@typescript-eslint/eslint-plugin":"8.13.0","@istanbuljs/nyc-config-typescript":"^1.0.2","eslint-import-resolver-typescript":"^3.6.3"},"_npmOperationalInternal":{"tmp":"tmp/rest-api_1.1.1_1747082194337_0.18159040489032274","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@node-in-layers/rest-api","version":"1.1.2","author":"","license":"ISC","_id":"@node-in-layers/rest-api@1.1.2","maintainers":[{"name":"macornwell","email":"michael.a.cornwell@gmail.com"}],"dist":{"shasum":"dd4cde36d2ac9b5494a9aabb23f883eeef97a2e1","tarball":"https://registry.npmjs.org/@node-in-layers/rest-api/-/rest-api-1.1.2.tgz","fileCount":23,"integrity":"sha512-yNskhqSyxG8CLYNBXgusotktF4OBlbIB17XPL0EQjn7Vq2UrzFTJgKSeZM3Bc2LDNpyk4oPdhuphgLeIiQgS8A==","signatures":[{"sig":"MEUCIQDL7HAR5Z4wivUb4RvUGJlYpzbyu8UPhLoK8XU/urWl1QIgVeTMlIUW3tvEC52+pqT5e3ZF86GA2HIgtr0zMJfFnqM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48926},"main":"index.js","type":"module","types":"./index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"04ab643ea8f557fdb6ca474c4a16443e5a53d020","scripts":{"dist":"npm run build && cd dist && npm publish","test":"export TS_NODE_TRANSPILE_ONLY=true && export TS_NODE_PROJECT='./tsconfig.test.json' && mocha -r ts-node/register 'test/**/*.test.ts'","build":"rm -Rf ./dist && tsc -p ./tsconfig.json && cp package.json ./dist && cp README.md ./dist","commit":"cz","eslint":"eslint .","prettier":"prettier --write .","build:watch":"nodemon -e '*' --watch ./src --exec \"npm run build || exit 1\"","feature-tests":"cucumber-js -p default","test:coverage":"nyc --all --reporter cobertura --reporter text --reporter lcov --reporter html npm run test"},"_npmUser":{"name":"macornwell","email":"michael.a.cornwell@gmail.com"},"_npmVersion":"10.8.2","description":"A Rest API implementation with a Node In Layers system.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"cors":"^2.8.5","lodash":"^4.17.21","express":"^4.21.2","body-parser":"^1.20.3","modern-async":"^2.0.4","express-session":"^1.18.1","http-compression":"^1.1.1","functional-models":"^3.0.16","http-status-codes":"^2.3.0","@node-in-layers/core":"^1.5.5","@node-in-layers/data":"^1.2.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","chai":"^4.2.0","mocha":"^11.0.1","sinon":"^19.0.2","eslint":"9.14.0","globals":"^15.12.0","js-yaml":"^4.1.0","nodemon":"^3.1.7","ts-node":"^10.4.0","argparse":"^2.0.1","prettier":"^3.3.3","@eslint/js":"^9.12.0","handlebars":"^4.7.8","proxyquire":"^2.1.3","sinon-chai":"^3.5.0","typescript":"5.3.3","@types/node":"^22.9.0","@types/mocha":"^9.1.1","@types/sinon":"^17.0.3","@types/lodash":"^4.17.13","@eslint/compat":"^1.2.0","@eslint/eslintrc":"^3.1.0","chai-as-promised":"^7.1.1","@types/proxyquire":"^1.3.31","@cucumber/cucumber":"11.0.1","source-map-support":"^0.5.21","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^9.1.0","@types/chai-as-promised":"^8.0.1","eslint-plugin-functional":"~7.1.0","@typescript-eslint/parser":"8.13.0","cz-conventional-changelog":"^3.3.0","@types/json-stringify-safe":"^5.0.3","@typescript-eslint/eslint-plugin":"8.13.0","@istanbuljs/nyc-config-typescript":"^1.0.2","eslint-import-resolver-typescript":"^3.6.3"},"_npmOperationalInternal":{"tmp":"tmp/rest-api_1.1.2_1747531740792_0.6794497398930817","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@node-in-layers/rest-api","version":"1.2.2","author":"","license":"ISC","_id":"@node-in-layers/rest-api@1.2.2","maintainers":[{"name":"macornwell","email":"michael.a.cornwell@gmail.com"}],"dist":{"shasum":"32b85b2da69e5a6082e7f95c1b164ab445ceb675","tarball":"https://registry.npmjs.org/@node-in-layers/rest-api/-/rest-api-1.2.2.tgz","fileCount":35,"integrity":"sha512-iaEQ/k/+BQkmNu8tIp9mN4ojCw855/pVwdxyJ4uSRUtiSC8hnuLO77tjj0Tn2NmuwVEdprdXCxcRR5FwhJJ2hQ==","signatures":[{"sig":"MEQCIENCPVwlO+/F49terke03nly31UTSUmfKJCyY2SaXrTHAiAFSlnwFTNGe6QxNMO6Ojxf9XNMG8VM4Hwm738YtPuLsQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77358},"main":"index.js","type":"module","types":"./index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"84de51df34cf6bebb3c8f739dd495b9c9660c96d","scripts":{"dist":"npm run build && cd dist && npm publish","test":"export TS_NODE_TRANSPILE_ONLY=true && export TS_NODE_PROJECT='./tsconfig.test.json' && export TS_NODE_EXPERIMENTAL_RESOLVER=true && node --loader ts-node/esm ./node_modules/mocha/bin/mocha 'test/**/*.test.ts'","build":"rm -Rf ./dist && tsc -p ./tsconfig.json && cp package.json ./dist && cp README.md ./dist","commit":"cz","eslint":"eslint .","prettier":"prettier --write .","build:watch":"nodemon -e '*' --watch ./src --exec \"npm run build || exit 1\"","feature-tests":"cucumber-js -p default","test:coverage":"nyc --all --reporter cobertura --reporter text --reporter lcov --reporter html npm run test"},"_npmUser":{"name":"macornwell","email":"michael.a.cornwell@gmail.com"},"_npmVersion":"10.9.4","description":"A Rest API implementation with a Node In Layers system.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"cors":"^2.8.6","lodash":"^4.18.1","express":"^5.2.1","body-parser":"^2.2.2","modern-async":"^2.0.4","express-session":"^1.19.0","http-compression":"^1.1.3","functional-models":"^3.9.5","http-status-codes":"^2.3.0","@node-in-layers/core":"^1.17.0","@node-in-layers/data":"^1.3.7","@node-in-layers/rest-client":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","chai":"^4.2.0","mocha":"^11.0.1","sinon":"^19.0.2","eslint":"9.14.0","globals":"^15.12.0","js-yaml":"^4.1.0","nodemon":"^3.1.7","ts-node":"^10.4.0","argparse":"^2.0.1","prettier":"^3.3.3","@eslint/js":"^9.12.0","handlebars":"^4.7.8","proxyquire":"^2.1.3","sinon-chai":"^3.5.0","typescript":"5.3.3","@types/node":"^22.9.0","@types/mocha":"^9.1.1","@types/sinon":"^17.0.3","@types/lodash":"^4.17.13","@eslint/compat":"^1.2.0","@eslint/eslintrc":"^3.1.0","chai-as-promised":"^7.1.1","@types/proxyquire":"^1.3.31","@cucumber/cucumber":"11.0.1","source-map-support":"^0.5.21","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^9.1.0","@types/chai-as-promised":"^8.0.1","eslint-plugin-functional":"~7.1.0","@typescript-eslint/parser":"8.13.0","cz-conventional-changelog":"^3.3.0","@types/json-stringify-safe":"^5.0.3","@typescript-eslint/eslint-plugin":"8.13.0","@istanbuljs/nyc-config-typescript":"^1.0.2","eslint-import-resolver-typescript":"^3.6.3"},"_npmOperationalInternal":{"tmp":"tmp/rest-api_1.2.2_1789148906816_0.23850131577720357","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@node-in-layers/rest-api","version":"1.3.0","author":"","license":"ISC","_id":"@node-in-layers/rest-api@1.3.0","maintainers":[{"name":"macornwell","email":"michael.a.cornwell@gmail.com"}],"dist":{"shasum":"f6c01bdf2ecd281f5e4e52feafa229a25c078721","tarball":"https://registry.npmjs.org/@node-in-layers/rest-api/-/rest-api-1.3.0.tgz","fileCount":35,"integrity":"sha512-H+z969g+eForZiDvAQgi435Rh1soWnqpu5J54dA28vOtA5WMWTJQx6BJQx2CfVu83cmcp0pWl7wm/lbU7pBiQw==","signatures":[{"sig":"MEYCIQCc8Ba579PnNo8HrweMuVCPz1vDHmMwxTyiUWfAmRYCSQIhAOV5R06prz7imA8OWNFAbXRpQWnM/T474lbatb6LtiDv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82392},"main":"index.js","type":"module","types":"./index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"efc536e79559254ef015405d15e1f843b1e7ace1","scripts":{"dist":"npm run build && cd dist && npm publish","test":"export TS_NODE_TRANSPILE_ONLY=true && export TS_NODE_PROJECT='./tsconfig.test.json' && export TS_NODE_EXPERIMENTAL_RESOLVER=true && node --loader ts-node/esm ./node_modules/mocha/bin/mocha 'test/**/*.test.ts'","build":"rm -Rf ./dist && tsc -p ./tsconfig.json && cp package.json ./dist && cp README.md ./dist","commit":"cz","eslint":"eslint .","prettier":"prettier --write .","build:watch":"nodemon -e '*' --watch ./src --exec \"npm run build || exit 1\"","feature-tests":"cucumber-js -p default","test:coverage":"nyc --all --reporter cobertura --reporter text --reporter lcov --reporter html npm run test"},"_npmUser":{"name":"macornwell","email":"michael.a.cornwell@gmail.com"},"_npmVersion":"10.9.4","description":"A Rest API implementation with a Node In Layers system.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"cors":"^2.8.6","lodash":"^4.18.1","express":"^5.2.1","body-parser":"^2.2.2","modern-async":"^2.0.4","express-session":"^1.19.0","http-compression":"^1.1.3","functional-models":"^3.9.5","http-status-codes":"^2.3.0","@node-in-layers/core":"^1.17.0","@node-in-layers/data":"^1.3.7","@node-in-layers/rest-client":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","chai":"^4.2.0","mocha":"^11.0.1","sinon":"^19.0.2","eslint":"9.14.0","globals":"^15.12.0","js-yaml":"^4.1.0","nodemon":"^3.1.7","ts-node":"^10.4.0","argparse":"^2.0.1","prettier":"^3.3.3","@eslint/js":"^9.12.0","handlebars":"^4.7.8","proxyquire":"^2.1.3","sinon-chai":"^3.5.0","typescript":"5.3.3","@types/node":"^22.9.0","@types/mocha":"^9.1.1","@types/sinon":"^17.0.3","@types/lodash":"^4.17.13","@eslint/compat":"^1.2.0","@eslint/eslintrc":"^3.1.0","chai-as-promised":"^7.1.1","@types/proxyquire":"^1.3.31","@cucumber/cucumber":"11.0.1","source-map-support":"^0.5.21","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^9.1.0","@types/chai-as-promised":"^8.0.1","eslint-plugin-functional":"~7.1.0","@typescript-eslint/parser":"8.13.0","cz-conventional-changelog":"^3.3.0","@types/json-stringify-safe":"^5.0.3","@typescript-eslint/eslint-plugin":"8.13.0","@istanbuljs/nyc-config-typescript":"^1.0.2","eslint-import-resolver-typescript":"^3.6.3"},"_npmOperationalInternal":{"tmp":"tmp/rest-api_1.3.0_1789150023562_0.014596123229391855","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@node-in-layers/rest-api","version":"1.3.1","author":"","license":"ISC","_id":"@node-in-layers/rest-api@1.3.1","maintainers":[{"name":"macornwell","email":"michael.a.cornwell@gmail.com"}],"dist":{"shasum":"13be1721e1df642bc848e7702c6fea407ed84eb6","tarball":"https://registry.npmjs.org/@node-in-layers/rest-api/-/rest-api-1.3.1.tgz","fileCount":35,"integrity":"sha512-mMAtoxlzR4qY6Wg3OYDnVxRd1Nzs2N5G4aRkbWnoBt1IHdbX0h2CKQxsUByrT8B06zw8vV48UBgCsZvsZRvcTA==","signatures":[{"sig":"MEQCIGxIp5DjXc4QSYFB16tp9tAcsk3PUHA9Sh997TwsL5PdAiBRdGROx+7Pz4FwnXabWYRNsHcn+9jLadPs0e9sMUb6iQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIAqhgKbdtpCYSwdzqlaahCOElePmCCfSSFA5aFJVyO4mAiBZh4srz+hXiVUPovGBuGCCmT+lfzja6oPWA2rzPNJjbg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":86820},"main":"index.js","type":"module","types":"./index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"7e95a939a084d385ec87f0893435207c72ea966a","scripts":{"dist":"npm run build && cd dist && npm publish","test":"export TS_NODE_TRANSPILE_ONLY=true && export TS_NODE_PROJECT='./tsconfig.test.json' && export TS_NODE_EXPERIMENTAL_RESOLVER=true && node --loader ts-node/esm ./node_modules/mocha/bin/mocha 'test/**/*.test.ts'","build":"rm -Rf ./dist && tsc -p ./tsconfig.json && cp package.json ./dist && cp README.md ./dist","commit":"cz","eslint":"eslint .","prettier":"prettier --write .","build:watch":"nodemon -e '*' --watch ./src --exec \"npm run build || exit 1\"","feature-tests":"cucumber-js -p default","test:coverage":"nyc --all --reporter cobertura --reporter text --reporter lcov --reporter html npm run test"},"_npmUser":{"name":"macornwell","email":"michael.a.cornwell@gmail.com"},"_npmVersion":"10.9.4","description":"A Rest API implementation with a Node In Layers system.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"cors":"^2.8.6","lodash":"^4.18.1","express":"^5.2.1","body-parser":"^2.2.2","modern-async":"^2.0.4","express-session":"^1.19.0","http-compression":"^1.1.3","functional-models":"^3.9.5","http-status-codes":"^2.3.0","@node-in-layers/core":"^1.17.0","@node-in-layers/data":"^1.3.7","@node-in-layers/rest-client":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","chai":"^4.2.0","mocha":"^11.0.1","sinon":"^19.0.2","eslint":"9.14.0","globals":"^15.12.0","js-yaml":"^4.1.0","nodemon":"^3.1.7","ts-node":"^10.4.0","argparse":"^2.0.1","prettier":"^3.3.3","@eslint/js":"^9.12.0","handlebars":"^4.7.8","proxyquire":"^2.1.3","sinon-chai":"^3.5.0","typescript":"5.3.3","@types/node":"^22.9.0","@types/mocha":"^9.1.1","@types/sinon":"^17.0.3","@types/lodash":"^4.17.13","@eslint/compat":"^1.2.0","@eslint/eslintrc":"^3.1.0","chai-as-promised":"^7.1.1","@types/proxyquire":"^1.3.31","@cucumber/cucumber":"11.0.1","source-map-support":"^0.5.21","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^9.1.0","@types/chai-as-promised":"^8.0.1","eslint-plugin-functional":"~7.1.0","@typescript-eslint/parser":"8.13.0","cz-conventional-changelog":"^3.3.0","@types/json-stringify-safe":"^5.0.3","@typescript-eslint/eslint-plugin":"8.13.0","@istanbuljs/nyc-config-typescript":"^1.0.2","eslint-import-resolver-typescript":"^3.6.3"},"_npmOperationalInternal":{"tmp":"tmp/rest-api_1.3.1_1789659669246_0.5649913291302162","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"@node-in-layers/rest-api","version":"1.3.2","author":"","license":"ISC","_id":"@node-in-layers/rest-api@1.3.2","maintainers":[{"name":"macornwell","email":"michael.a.cornwell@gmail.com"}],"dist":{"shasum":"acabdee9e2877baf0164639e77b681dc1fd70f85","tarball":"https://registry.npmjs.org/@node-in-layers/rest-api/-/rest-api-1.3.2.tgz","fileCount":35,"integrity":"sha512-uwsYN/KKlV0RMms1oxo9V8rE/z5YnYKS6uHfaN5FIcMvynMBMsGAbp5e/zSeNgzOQ02KE/vtP24CdU4BpqTIXQ==","signatures":[{"sig":"MEQCIAh8XXo1/JfnFszIjIEY2rM6okl4veSHpZ0FWTCMk1n1AiARryenQO7DrLGWRh9vrkQArQV1D43x0Xcd2xcBhDAXSQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIHeA0XjOmvrZPX54Ub4R7cUNw5+YVfGPaJV9YhLAc2bjAiEApIJuHUbMyN3eiGDushMr7fgq3GNYmM1uB+R+2DLiBjY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":94270},"main":"index.js","type":"module","types":"./index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"c2b07901ddba2e0d34619ccb77e1a21e251a35c0","scripts":{"dist":"npm run build && cd dist && npm publish","test":"export TS_NODE_TRANSPILE_ONLY=true && export TS_NODE_PROJECT='./tsconfig.test.json' && export TS_NODE_EXPERIMENTAL_RESOLVER=true && node --loader ts-node/esm ./node_modules/mocha/bin/mocha 'test/**/*.test.ts'","build":"rm -Rf ./dist && tsc -p ./tsconfig.json && cp package.json ./dist && cp README.md ./dist","commit":"cz","eslint":"eslint .","prettier":"prettier --write .","build:watch":"nodemon -e '*' --watch ./src --exec \"npm run build || exit 1\"","feature-tests":"cucumber-js -p default","test:coverage":"nyc --all --reporter cobertura --reporter text --reporter lcov --reporter html npm run test"},"_npmUser":{"name":"macornwell","email":"michael.a.cornwell@gmail.com"},"_npmVersion":"10.9.4","description":"A Rest API implementation with a Node In Layers system.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"cors":"^2.8.6","lodash":"^4.18.1","express":"^5.2.1","body-parser":"^2.2.2","modern-async":"^2.0.4","express-session":"^1.19.0","http-compression":"^1.1.3","functional-models":"^3.9.5","http-status-codes":"^2.3.0","@node-in-layers/core":"^1.17.0","@node-in-layers/data":"^1.3.7","@node-in-layers/rest-client":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","chai":"^4.2.0","mocha":"^11.0.1","sinon":"^19.0.2","eslint":"9.14.0","globals":"^15.12.0","js-yaml":"^4.1.0","nodemon":"^3.1.7","ts-node":"^10.4.0","argparse":"^2.0.1","prettier":"^3.3.3","@eslint/js":"^9.12.0","handlebars":"^4.7.8","proxyquire":"^2.1.3","sinon-chai":"^3.5.0","typescript":"5.3.3","@types/node":"^22.9.0","@types/mocha":"^9.1.1","@types/sinon":"^17.0.3","@types/lodash":"^4.17.13","@eslint/compat":"^1.2.0","@eslint/eslintrc":"^3.1.0","chai-as-promised":"^7.1.1","@types/proxyquire":"^1.3.31","@cucumber/cucumber":"11.0.1","source-map-support":"^0.5.21","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^9.1.0","@types/chai-as-promised":"^8.0.1","eslint-plugin-functional":"~7.1.0","@typescript-eslint/parser":"8.13.0","cz-conventional-changelog":"^3.3.0","@types/json-stringify-safe":"^5.0.3","@typescript-eslint/eslint-plugin":"8.13.0","@istanbuljs/nyc-config-typescript":"^1.0.2","eslint-import-resolver-typescript":"^3.6.3"},"_npmOperationalInternal":{"tmp":"tmp/rest-api_1.3.2_1789660582293_0.1870925273487083","host":"s3://npm-registry-packages-npm-production"}},"1.3.3":{"name":"@node-in-layers/rest-api","version":"1.3.3","author":"","license":"ISC","_id":"@node-in-layers/rest-api@1.3.3","maintainers":[{"name":"macornwell","email":"michael.a.cornwell@gmail.com"}],"dist":{"shasum":"04aa0dbe2e190146bad6cee59631ca13897a7e62","tarball":"https://registry.npmjs.org/@node-in-layers/rest-api/-/rest-api-1.3.3.tgz","fileCount":35,"integrity":"sha512-fCNP46s32iUKJqPGmwsV9IUVEdTM4nqhx0Qcn4R00LptM3ZJDKILK1/SwkZdDbwPfxj++jmhnwlhhncqwBZG6w==","signatures":[{"sig":"MEUCIAOIMctWgoR8jgf2GKEC+yTW8zldt7KcWN6w5gsS3bsUAiEAxxM8p/j2KPKcsv5T1Hktb2d4SeLW5E1BdezYVl+7O3U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGba3/XDmp5KkLFAtADTiVovMFuGDvVqIsge4ZBxHvpsAiBoOt9ZbQLKWcmKdk2AFJA9DmzA5/T8bbb+F8a1jbA0xQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":94415},"main":"index.js","type":"module","types":"./index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"cfd9a882e56e61033d52f6a57122cbc97db8e55d","scripts":{"dist":"npm run build && cd dist && npm publish","test":"export TS_NODE_TRANSPILE_ONLY=true && export TS_NODE_PROJECT='./tsconfig.test.json' && export TS_NODE_EXPERIMENTAL_RESOLVER=true && node --loader ts-node/esm ./node_modules/mocha/bin/mocha 'test/**/*.test.ts'","build":"rm -Rf ./dist && tsc -p ./tsconfig.json && cp package.json ./dist && cp README.md ./dist","commit":"cz","eslint":"eslint .","prettier":"prettier --write .","build:watch":"nodemon -e '*' --watch ./src --exec \"npm run build || exit 1\"","feature-tests":"cucumber-js -p default","test:coverage":"nyc --all --reporter cobertura --reporter text --reporter lcov --reporter html npm run test"},"_npmUser":{"name":"macornwell","email":"michael.a.cornwell@gmail.com"},"_npmVersion":"10.9.4","description":"A Rest API implementation with a Node In Layers system.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"cors":"^2.8.6","lodash":"^4.18.1","express":"^5.2.1","body-parser":"^2.2.2","modern-async":"^2.0.4","express-session":"^1.19.0","http-compression":"^1.1.3","functional-models":"^3.9.5","http-status-codes":"^2.3.0","@node-in-layers/core":"^1.17.0","@node-in-layers/data":"^1.3.7","@node-in-layers/rest-client":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","chai":"^4.2.0","mocha":"^11.0.1","sinon":"^19.0.2","eslint":"9.14.0","globals":"^15.12.0","js-yaml":"^4.1.0","nodemon":"^3.1.7","ts-node":"^10.4.0","argparse":"^2.0.1","prettier":"^3.3.3","@eslint/js":"^9.12.0","handlebars":"^4.7.8","proxyquire":"^2.1.3","sinon-chai":"^3.5.0","typescript":"5.3.3","@types/node":"^22.9.0","@types/mocha":"^9.1.1","@types/sinon":"^17.0.3","@types/lodash":"^4.17.13","@eslint/compat":"^1.2.0","@eslint/eslintrc":"^3.1.0","chai-as-promised":"^7.1.1","@types/proxyquire":"^1.3.31","@cucumber/cucumber":"11.0.1","source-map-support":"^0.5.21","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^9.1.0","@types/chai-as-promised":"^8.0.1","eslint-plugin-functional":"~7.1.0","@typescript-eslint/parser":"8.13.0","cz-conventional-changelog":"^3.3.0","@types/json-stringify-safe":"^5.0.3","@typescript-eslint/eslint-plugin":"8.13.0","@istanbuljs/nyc-config-typescript":"^1.0.2","eslint-import-resolver-typescript":"^3.6.3"},"_npmOperationalInternal":{"tmp":"tmp/rest-api_1.3.3_1789661724862_0.45418678896055376","host":"s3://npm-registry-packages-npm-production"}},"1.3.4":{"_id":"@node-in-layers/rest-api@1.3.4","dist":{"shasum":"e03a634b22d96e81b78b0484d6aa2b39280b0d55","tarball":"https://registry.npmjs.org/@node-in-layers/rest-api/-/rest-api-1.3.4.tgz","fileCount":35,"integrity":"sha512-/2P3HaqXgr4eeSFdYB46WbyZTwl15zk+dO27uIQcb+RYUZ2UH6g2gfdCW9onH5OXu98YKrLDJIOcx/M/CCiR8A==","signatures":[{"sig":"MEUCIFrqG5DeBwfN4nMDfWJqrEFKOE/SThHP8SWiylpnQ7RlAiEA1ICYOVsjpG6QAVUnBMZk8g6gViBQAAQdd5cxOnXgbFE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBLnOe9ZYAxm21VYafGCYQQhKhL2MGyj/XBxZ8EZhs+VAiBmrSSk6nNRnIak4QZxB+UGjoJMOx+FjEr0mlRNZq6dZg=="}],"unpackedSize":92149},"main":"index.js","name":"@node-in-layers/rest-api","type":"module","types":"./index.d.ts","author":"","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"bc670383f4c6d88bfe34fb92fb1052d303a0692c","license":"ISC","scripts":{"dist":"npm run build && cd dist && npm publish","test":"export TS_NODE_TRANSPILE_ONLY=true && export TS_NODE_PROJECT='./tsconfig.test.json' && export TS_NODE_EXPERIMENTAL_RESOLVER=true && node --loader ts-node/esm ./node_modules/mocha/bin/mocha 'test/**/*.test.ts'","build":"rm -Rf ./dist && tsc -p ./tsconfig.json && cp package.json ./dist && cp README.md ./dist","commit":"cz","eslint":"eslint .","prettier":"prettier --write .","build:watch":"nodemon -e '*' --watch ./src --exec \"npm run build || exit 1\"","feature-tests":"cucumber-js -p default","test:coverage":"nyc --all --reporter cobertura --reporter text --reporter lcov --reporter html npm run test"},"version":"1.3.4","_npmUser":{"name":"macornwell","email":"michael.a.cornwell@gmail.com"},"_npmVersion":"10.9.4","description":"A Rest API implementation with a Node In Layers system.","directories":{},"maintainers":[{"name":"macornwell","email":"michael.a.cornwell@gmail.com"}],"_nodeVersion":"22.21.1","dependencies":{"cors":"^2.8.6","lodash":"^4.18.1","express":"^5.2.1","body-parser":"^2.2.2","modern-async":"^2.0.4","express-session":"^1.19.0","http-compression":"^1.1.3","functional-models":"^3.9.5","http-status-codes":"^2.3.0","@node-in-layers/core":"^1.17.0","@node-in-layers/data":"^1.3.7","@node-in-layers/rest-client":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","chai":"^4.2.0","mocha":"^11.0.1","sinon":"^19.0.2","eslint":"9.14.0","globals":"^15.12.0","js-yaml":"^4.1.0","nodemon":"^3.1.7","ts-node":"^10.4.0","argparse":"^2.0.1","prettier":"^3.3.3","@eslint/js":"^9.12.0","handlebars":"^4.7.8","proxyquire":"^2.1.3","sinon-chai":"^3.5.0","typescript":"5.3.3","@types/node":"^22.9.0","@types/mocha":"^9.1.1","@types/sinon":"^17.0.3","@types/lodash":"^4.17.13","@eslint/compat":"^1.2.0","@eslint/eslintrc":"^3.1.0","chai-as-promised":"^7.1.1","@types/proxyquire":"^1.3.31","@cucumber/cucumber":"11.0.1","source-map-support":"^0.5.21","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^9.1.0","@types/chai-as-promised":"^8.0.1","eslint-plugin-functional":"~7.1.0","@typescript-eslint/parser":"8.13.0","cz-conventional-changelog":"^3.3.0","@types/json-stringify-safe":"^5.0.3","@typescript-eslint/eslint-plugin":"8.13.0","@istanbuljs/nyc-config-typescript":"^1.0.2","eslint-import-resolver-typescript":"^3.6.3"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rest-api_1.3.4_1789738491550_0.838974341107172"}}},"time":{"created":"2025-03-11T18:57:20.859Z","modified":"2026-09-18T13:34:51.828Z","1.0.1":"2025-03-11T18:57:21.203Z","1.0.2":"2025-03-11T19:00:41.168Z","1.0.0":"2025-03-11T19:02:47.982Z","1.0.4":"2025-03-11T19:10:26.384Z","1.0.6":"2025-04-10T17:22:15.451Z","1.0.7":"2025-04-21T12:51:45.659Z","1.0.8":"2025-04-21T13:10:24.548Z","1.0.9":"2025-04-28T02:50:55.561Z","1.0.10":"2025-04-28T02:53:34.680Z","1.0.11":"2025-05-12T00:20:21.269Z","1.0.12":"2025-05-12T18:39:38.819Z","1.0.13":"2025-05-12T19:23:46.444Z","1.0.14":"2025-05-12T19:43:19.535Z","1.0.15":"2025-05-12T20:07:50.605Z","1.0.16":"2025-05-12T20:14:41.119Z","1.0.17":"2025-05-12T20:16:10.041Z","1.0.18":"2025-05-12T20:17:33.089Z","1.0.19":"2025-05-12T20:21:36.258Z","1.0.20":"2025-05-12T20:22:58.308Z","1.1.0":"2025-05-12T20:24:55.749Z","1.1.1":"2025-05-12T20:36:34.520Z","1.1.2":"2025-05-18T01:29:00.988Z","1.2.2":"2026-09-11T17:48:26.957Z","1.3.0":"2026-09-11T18:07:03.693Z","1.3.1":"2026-09-17T15:41:09.373Z","1.3.2":"2026-09-17T15:56:22.379Z","1.3.3":"2026-09-17T16:15:24.942Z","1.3.4":"2026-09-18T13:34:51.647Z"},"license":"ISC","description":"A Rest API implementation with a Node In Layers system.","maintainers":[{"name":"macornwell","email":"michael.a.cornwell@gmail.com"}],"readme":"# REST API - A Node In Layers Package\n\nThis package contains useful out-of-the-box tools for building REST APIS rapidly.\n\nIt includes boilerplate code for starting a modern production JSON REST API Express server, as well as code for making model based apis, with minimal boilerplate.\n\n## How to Install\n\n`npm install @node-in-layers/rest-api@latest`\n\n### How To Use\n\nThere are three main components of this express package.\n\n- Model Based Express Controller\n- Model Based Router Controller\n- Custom Layer - `express`\n\n## Model Based Express Controller\n\nA model based express controller is an express controller that can wrap around a model from the [functional-models](https://github.com/monolithst/functional-models) model system. It connects to the CRUDS functionality inside [@node-in-layers/db](https://github.com/node-in-layers/data) for you (create, retrieve, update, delete, search). This pairs very well with the model based express router, although is not required.\n\n## Model Based Express Router\n\nThe model based express router is an express router that provides routing to a CRUDS controller. This handles all the pathing and takes this format:\n\n#### Create:\n\n`PUT: /namespace/my-model-name`\n\n#### Retrieve:\n\n`GET: /namespace/my-model-name/:id`\n\n#### Update:\n\n`PUT: /namespace/my-model-name/:id`\n\n#### Delete:\n\n`DELETE: /namespace/my-model-name/:id`\n\n#### Search:\n\n`POST: /namespace/my-model-name`\n\n### A Quick note on search\n\nThe search endpoint is a POST instead of a GET because it uses a JSON body for the search. The JSON body is a JSONified version of the OrmSearch object from `functional-models`.\n\n### Url Prefix\n\nYou can append a prefix to the url by adding it as an argument to the router. This can be useful for adding a service level name before all of your models.\n\n## Custom Layer - \"express\"\n\nThis package adds a custom layer called \"express\". This layer is intended to be a composite layer with the `entries` layer. This is for systems that use express as the final top layer. One example would be a REST API Backend. This custom layer adds functions for setting up an express server, such as setting routes, adding middleware, building the app with `getApp(systemContext)`, and starting the server with `listen(systemContext)`.\n\nTo add your own routes and middleware you need to create a `express` layer (such as a file named `express.ts` that has a `create()` function in it).\n\n### How To Use\n\nIn order to use the express layer, you need to add it as a composite layer inside the configuration file, as well as this app itself.\n\n```javascript\n// Example config.dev.mjs\nimport { CoreNamespace } from '@node-in-layers/core/index.js'\nimport * as nilData from '@node-in-layers/data'\nimport { DataNamespace } from '@node-in-layers/data/index.js'\nimport { RestApiNamespace } from '@node-in-layers/rest-api/index.js'\nimport * as nilRest from '@node-in-layers/rest-api'\n\nconst core = {\n  domains: [\n    nilData,\n    // Import here\n    nilRest,\n  ],\n  // NOTE: The composite layer with entries.\n  layerOrder: ['services', 'features', ['entries', 'express']],\n  logging: {\n    logLevel: 'debug',\n    logFormat: 'full',\n  },\n  modelFactory: '@node-in-layers/data',\n  modelCruds: true,\n}\n\nconst data = {\n  databases: {\n    default: {\n      datastoreType: 'memory',\n    },\n  },\n}\n\nconst express = {\n  port: 8000,\n  urlPrefix: '/my-service/',\n  logging: {\n    requestLogLevel: 'info',\n    responseLogLevel: 'info',\n    ignoreEndpointPatterns: ['/health', /^\\/metrics$/],\n  },\n}\n\nexport default () => ({\n  environment: 'dev-low',\n  systemName: 'my-system',\n  [CoreNamespace.root]: core,\n  [DataNamespace.root]: data,\n  [RestApiNamespace.express]: express,\n  [RestApiNamespace.features]: {\n    // Optional: only when true will getApp(systemContext) auto-register\n    // NIL-annotated features as REST endpoints.\n    enabled: true,\n  },\n})\n```\n\n`logging.ignoreEndpointPatterns` skips both request and response logs for matching endpoints. String values match by path prefix, and `RegExp` values are tested against the request path without query parameters.\n\nYou can also control request and response log payload omission on a per-route basis. Both `addRoute()` and `addLoggedRoute()` accept an optional fourth argument for route options:\n\n```typescript\nimport { shouldOmitLoggingData } from '@node-in-layers/rest-api'\n\nsystem.express[RestApiNamespace.express].addRoute(\n  'post',\n  '/auth/login',\n  async (req, res, crossLayerProps) => {\n    res.status(200).json({ ok: true })\n  },\n  shouldOmitLoggingData(true, true)\n)\n```\n\n`shouldOmitLoggingData(request, response)` returns the route logging options object for you:\n\n- `request = true` omits the request body from the request log message and adds `logging.overrides.omitData` to the route's request `crossLayerProps`\n- `response = true` omits the response payload from the response log message\n\nIf you prefer, you can pass the object directly:\n\n```typescript\nsystem.express[RestApiNamespace.express].addLoggedRoute(\n  'post',\n  '/auth/login',\n  async (log, req, res, crossLayerProps) => {\n    res.status(200).json({ ok: true })\n  },\n  {\n    logging: {\n      request: { omitData: true },\n      response: { omitData: true },\n    },\n  }\n)\n```\n\n### Starting or building the app\n\nThe express host now requires the full system object when you build or start the app:\n\n```typescript\nimport { loadSystem } from '@node-in-layers/core'\nimport { RestApiNamespace } from '@node-in-layers/rest-api'\n\nconst system = await loadSystem({ environment: 'dev' })\n\nsystem.express[RestApiNamespace.express].getApp(system)\nsystem.express[RestApiNamespace.express].listen(system)\n```\n\n### Annotated feature auto-registration\n\nWhen `config[RestApiNamespace.features].enabled === true`, `getApp(systemContext)` will automatically register routes one time before the Express app is built:\n\n- NIL-annotated feature functions as REST endpoints\n- model CRUD interfaces discovered on `systemContext.features[domain].cruds`\n\nIf that config is omitted or not explicitly `true`, neither annotated features nor model CRUD routes are auto-registered.\n\n### Model CRUDS\n\nIn order to CRUDS functionality to the REST interface you need to create this express layer in your app, and use the express functions provided by this library. A useful function called `expressModels` can be used that automatically adds all model CRUDS from your namespace.\n\n### Example Use\n\nWe want to create a model and provide CRUDS routes to it. The easiest way to do this is to create our\nThere are two helpers that make this easy:\n\n- `expressModels('your-namespace')` to auto-wire all CRUD models from a namespace\n- `addModelCrudsInterface()` on the express host when you want to register a specific CRUD interface manually\n\n```typescript\n// /src/your-app/express.ts\nimport { FeaturesContext } from '@node-in-layers/core/index.js'\nimport {\n  ExpressContext,\n  expressModels,\n} from '@node-in-layers/rest-api/index.js'\n\nconst express = {\n  create: (context: ExpressContext & FeaturesContext) => {\n    // Automatically adds all cruds models feature functions to express.\n    expressModels('your-namespace')(context)\n  },\n}\n\nexport { express }\n```\n\n### Troubleshooting\n\n#### Model endpoints aren't working\n\nMake sure that your app has the following layers (even if they are only an empty create):\n\n1. Services - Can be empty\n1. Features - Can be empty\n1. Express - See above\n1. modelCruds is set to true - See core configurations.\n","readmeFilename":"README.md"}