{"_id":"@aspirejo/express-route-generator","_rev":"8-fc4b7aa2e5078de87c8e086f8110a144","time":{"0.1.0":"2018-04-17T13:39:18.700Z","created":"2018-04-17T13:41:14.641Z","0.1.1":"2018-04-17T13:41:14.780Z","modified":"2022-04-04T15:49:11.691Z","0.1.2":"2018-04-17T13:48:08.984Z","0.1.3":"2018-04-18T09:54:49.819Z"},"name":"@aspirejo/express-route-generator","dist-tags":{"latest":"0.1.3"},"versions":{"0.1.1":{"name":"@aspirejo/express-route-generator","version":"0.1.1","description":"Route generator for express app","main":"dist/index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"rimraf dist/ && babel ./ --out-dir dist/ --ignore ./node_modules,./.babelrc,./package.json,./npm-debug.log --copy-files","start":"npm run build && node dist/index.js"},"repository":{"type":"git","url":"git+https://github.com/AspireJo/express-route-generator.git"},"keywords":["Aspire","route","express","generator"],"author":{"name":"AspireJo"},"license":"MIT","bugs":{"url":"https://github.com/AspireJo/express-route-generator/issues"},"homepage":"https://github.com/AspireJo/express-route-generator#readme","devDependencies":{"babel-cli":"^6.26.0","babel-preset-es2015":"^6.24.1","rimraf":"^2.6.2"},"dependencies":{"bluebird":"^3.5.1","express-promise-router":"^3.0.2","glob-promise":"^3.4.0","lodash":"^4.17.5","string-format":"^1.0.0"},"gitHead":"7cfe82d550b69c9db94887bb53cc723113d1960d","_id":"@aspirejo/express-route-generator@0.1.1","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"yzakarneh","email":"yzakarneh@aspire-services.net"},"dist":{"integrity":"sha512-nnlCCagdIjuGtfYZspXKH7OgwcXsOKhQNEMs3vKMs2uK0kCGJtT2J7lwu3FbkCwbXTmB4i3MZ4jKy8ZFl0J1Cg==","shasum":"6ee062147508710306fd7feb1b337b887dff25a1","tarball":"https://registry.npmjs.org/@aspirejo/express-route-generator/-/express-route-generator-0.1.1.tgz","fileCount":12,"unpackedSize":26314,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa1fl7CRA9TVsSAnZWagAAq8MP/3S/M2KvJU9+ooySiWXf\nZGlzIEICM9+t5zvD42/fQWf6hdFIkNkWbW21UfFNfwv/vneUOsaDvuOS/xln\nj2q7ZrlcrMED6LdwXCeJ/AR14HkB1Kd6rxvIR0aLzzPnS1VVD7NexsA7cpqF\ncdQwlEMhITw2lXs0/5lTN248y50TG+7URIaKs7lqKVUWULA8Mf4HSwM3mYOx\nByDdJyqVAcCM/CwDYgp9sfUbNWR/XsJW3pD2EnzwglmrjXulEwIYayI1dBfR\n88z95/4Hg90KF3zV83BPe50FGOU5QlT6R7Yyu8TWnc51WTeHSQwo+12OEZjR\n0MovV0jPgUBua+zPAh3ltXPPKKESBrsg4jjWOAIXySLRCyhP46/y0LQU3Sww\nG1KbUcwxTwGjR03EO/ZC63GQ6XPpZFNsdPQIPhDZpFuduTAQm0o3LCrjssYb\nYM/NvJhbEQLemdfZnEIyYQ83rtm050M1m4tL0O4qLkUrdGYoxPrFz1iy2r3Q\nWZQy9dSRYDrNdzDpZzsaApZ1DVaWmcdPCdE6N9Xx73QiJV8hwq0xhgp1t8Cs\neZdhn8+b5sjiE2sZJjIhYqCrY507WODxyPSqQElD/Yyqp841braTQDP7ZNF2\n8HSjr3FQJI99v+e5vsseohiEZ72dugLR+4h4l+sKzkUlEVdzuLk787SSFfAB\n9nXv\r\n=+A82\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDmFC7QHnR2lyUsUjF2qIIFRvi6ycdyRbmdF8wpnh+YTAIgUzzVzuX4fCismE5Nt8S3HtQKjI8NXPksKGt3iikSaC0="}]},"maintainers":[{"name":"yzakarneh","email":"yzakarneh@aspire-services.net"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/express-route-generator_0.1.1_1523972474720_0.2863336747981198"},"_hasShrinkwrap":false},"0.1.2":{"name":"@aspirejo/express-route-generator","version":"0.1.2","description":"Route generator for express app","main":"dist/index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"rimraf dist/ && babel ./ --out-dir dist/ --ignore ./node_modules,./.babelrc,./package.json,./npm-debug.log --copy-files","start":"npm run build && node dist/index.js"},"repository":{"type":"git","url":"git+https://github.com/AspireJo/express-route-generator.git"},"keywords":["Aspire","route","express","generator"],"author":{"name":"AspireJo"},"license":"MIT","bugs":{"url":"https://github.com/AspireJo/express-route-generator/issues"},"homepage":"https://github.com/AspireJo/express-route-generator#readme","devDependencies":{"babel-cli":"^6.26.0","babel-preset-es2015":"^6.24.1","rimraf":"^2.6.2"},"dependencies":{"bluebird":"^3.5.1","express-promise-router":"^3.0.2","glob-promise":"^3.4.0","lodash":"^4.17.5","string-format":"^1.0.0"},"gitHead":"7cfe82d550b69c9db94887bb53cc723113d1960d","_id":"@aspirejo/express-route-generator@0.1.2","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"yzakarneh","email":"yzakarneh@aspire-services.net"},"dist":{"integrity":"sha512-v5vbWjA6iDEjNveCySBl3TOwG+aBEjre+nWjWB+mj+rcmcvLe5CHm8WPwHw4gcdP3tA169ghGnD83bFUCc+AnQ==","shasum":"a3e329ecadbf82bb70a47c5485e139c77ee7f54b","tarball":"https://registry.npmjs.org/@aspirejo/express-route-generator/-/express-route-generator-0.1.2.tgz","fileCount":12,"unpackedSize":26311,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa1fsZCRA9TVsSAnZWagAAuCQP/A47td02vf5PpTQR9WeU\nRDY+9d/O9uLE/hiPwsUn2ajoTYOWOSdLXxLKdiAwtOEa9yXDIV3G30MOoTJh\ncaeNjBFA+9oHErMVlp5Z5KrUR4d6NRR9I4u6W8q0VoPOvzC4YF/UhLesCu8Z\ncKPyk7LpWfEg0EO884e941JOi27wB4UqRHUHDyw83XnlJUOQBw7bpQKsf9pt\nLr5165KRGqUsWhPQCbYKVfeUiNGqpeCP5VXywM9CQI58ANxzTO9mf2oTSLHn\n6M0xMC1E5wAzEZGtePddIq8yVdSKs0fi5cOHf70H2H+BQP6aceQHkGm/MFp3\nCv2t/FEjxFM5sbGuYRuExF43h0qNmth8KzSXStTD3AYe8oI6B3B87gT2cEGz\n2H0kX+ELOW9fX83Aq8PNhveNZ+BV0nXVsph5ak9pGgLXnEkZ6AG4DjK5XoGD\nFqzsOyaYpLx40d2JZ62+ukCwkZmHHFNqual0PYYG1pclRTvBaVZeCIy7eyZq\n6wFPabrBGB2xyuBqr1auFcBPTfCTbMT/LeOtEy7Ysm7ym7+/QOujUmpqs2HP\nTwaNMZf65bhj9dQD4gc11pidYiPXTncvsiWZTm6JL4rckpD1shiFNQ8J5OdH\nlbss9xBII+N064X/RxbCuY6oYVqBOvvg+eDt+tjXqRT09EE5LB2WnJZ0Ekpt\nkehT\r\n=OWRU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEQjin8XQnxAvtim/bbce4zLpyOFlpnXDPGxd8MgFRZGAiEAsKd+U4MpCBtQGYH39D5rYIEK9b2nCGqPTPs3uywrmxc="}]},"maintainers":[{"email":"yzakarneh@aspire-services.net","name":"yzakarneh"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/express-route-generator_0.1.2_1523972888896_0.6651489565583195"},"_hasShrinkwrap":false},"0.1.3":{"name":"@aspirejo/express-route-generator","version":"0.1.3","description":"Route generator for express app","main":"dist/index.js","scripts":{"test":"mocha --compilers js:babel-core/register \"./test/**/*.spec.js*\"","build":"rimraf dist/ && babel ./ --out-dir dist/ --ignore ./node_modules,./.babelrc,./package.json,./npm-debug.log --copy-files","start":"npm run build && node dist/index.js","cover":"istanbul cover ./node_modules/.bin/_mocha test/*.js -- --require babel-register"},"repository":{"type":"git","url":"git+https://github.com/AspireJo/express-route-generator.git"},"keywords":["Aspire","route","express","generator"],"author":{"name":"AspireJo"},"license":"MIT","bugs":{"url":"https://github.com/AspireJo/express-route-generator/issues"},"homepage":"https://github.com/AspireJo/express-route-generator#readme","devDependencies":{"babel-cli":"^6.26.0","babel-preset-es2015":"^6.24.1","chai":"^4.1.2","express":"^4.16.3","istanbul":"^1.1.0-alpha.1","mocha":"^5.1.0","rimraf":"^2.6.2"},"dependencies":{"bluebird":"^3.5.1","express-promise-router":"^3.0.2","glob-promise":"^3.4.0","lodash":"^4.17.5","string-format":"^1.0.0"},"gitHead":"ec40670212dd2e61192f5bfd5b7c9bad1f74eaf0","_id":"@aspirejo/express-route-generator@0.1.3","_npmVersion":"5.8.0","_nodeVersion":"8.11.1","_npmUser":{"name":"yzakarneh","email":"yzakarneh@aspire-services.net"},"dist":{"integrity":"sha512-/DHUEZQsGV1utGtVo9FSDhzw4LFoFi2SAMlgUIz2aiciLR3G2sVgu5aoPcKit68NYUEsTr0x2q1ZgPImhHbInA==","shasum":"a783211f0e00188a60e65045c6d731010b1ac59e","tarball":"https://registry.npmjs.org/@aspirejo/express-route-generator/-/express-route-generator-0.1.3.tgz","fileCount":24,"unpackedSize":33104,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa1xXqCRA9TVsSAnZWagAAWkgP/jBC/opAWFlU69H/I3bU\nsHLLtArrZen6hQ7Ra1Mm1+fMMEW9CICn1cKBVK80ybA3wrHFvcmOs07UjDnK\nlhv+dDp246DF5zTdeJsvLRKgsV46DcDPqie8r2lAn44gZL10PBVNnng+k86k\n5WFuTiZ3jaiLxNAug+i6H9yie3T0nj5ri9/nCe3Iq4lZMPBAswWP1ppyCbLo\nM6HHXFpipFeexF8qFvfS2R0KqjgTQ9yVr5T9PFwHytaW7E1QaMwmej1Ung5L\nXJUssg7PRuZmGgr08ib3d1AL5ULGPGZH0cKjNheUuOLXZfEBBKE+K7Wj86gG\nFC39GHcN9kjwjwKr9GW2F5qEn3A/hPOGZoYKsKwFNSlNnKdBE98TiAuVbO7D\nqpshd3Myp6jIXMQ6hSPfnIsDMEIcHYi1afGy4v6Tzxy15vjuHWWW+kKJSCKc\nttorQl51KklmN37zp6mse8nmqFaZifY0IoUxg2iF1PdQuN1N9ATiuUNLhGGA\n2J7tcovjMbrdKJNTw7Xcv+hLgWqXjOALSwuF2BboRLiKtepv1qzBCcXh6iez\nIFxDqLEN/s60qQghVm/PNuHh/sytzMb0+GWDwueNA4aPdmUB60V6tr9u8Kkd\n/DReDkWMBrdmkrfx//XYS/e3Wos/yBJ9vDM/sPan3fianfPVw8zA/9zeTcoK\nGi3u\r\n=pWmb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHnMU1S7vui1q2RIeEGia/dJJ1s2b5AImMvW9OogkOT+AiEA5nHJRIos3sOmn2/qDotWXj5pIVW60mu5wqJjJZ/zgeo="}]},"maintainers":[{"email":"yzakarneh@aspire-services.net","name":"yzakarneh"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/express-route-generator_0.1.3_1524045289633_0.48121842040487417"},"_hasShrinkwrap":false}},"maintainers":[{"email":"yzakarneh@aspire-services.net","name":"yzakarneh"}],"description":"Route generator for express app","homepage":"https://github.com/AspireJo/express-route-generator#readme","keywords":["Aspire","route","express","generator"],"repository":{"type":"git","url":"git+https://github.com/AspireJo/express-route-generator.git"},"author":{"name":"AspireJo"},"bugs":{"url":"https://github.com/AspireJo/express-route-generator/issues"},"license":"MIT","readme":"# express-route-generator\nAuto generate routes for express app. This library uses a defined pattern to glob the routes handlers files and dynamically add them to the express app.\n\n## Version\n\n> 0.1.2\n\n## Usage\n\n``` javascript\nimport routeGen from '@aspirejo/express-route-generator';\nimport express from 'express';\n\nconst app = express();\nconst config = {\n  pattern: `${path.resolve(__dirname, '../..')}/**/controllers/**/_*.js`,\n};\nrouteGen(app, config);\n\napp.listen(3000, () => { console.log('listening to port 3000!'); });\n```\n\nOr\n``` javascript\nconst routeGen = require('@aspirejo/express-route-generator');\nconst express = require('express');\n\nconst app = express();\nconst config = {\n  pattern: `${path.resolve(__dirname, '../..')}/**/controllers/**/_*.js`,\n};\n\nrouteGen.generate(app, config);\napp.listen(3000, () => { console.log('listening to port 3000!'); });\n\n```\n\n### Config\n\n``` json\n{\n  \"pattern\": ...,\n  \"logger\": ...,\n  \"routingMethodsRegex\": ...,\n  \"globalMiddlewares\": [...],\n  \"baseUrl\": ...,\n  \"versioning\": {\n    ...\n  }\n}\n```\n\n| Property | Type | Usage |\n| ------------- | ------------- | ------------- | \n| `pattern` | `string` | files globbing pattern (**required**) |\n| `logger` | `object` | object to be used in logging |\n| `baseUrl` | `string` | used to construct routes, uses a formatted string |\n| `routingMethodsRegex` | `regex` | used to match the targeted files from the globbed list |\n| `globalMiddlewares` | `array<function>` | to register global middlewares for all routes |\n| `versioning` | `object` |used for versioning settings |\n\n#### `pattern`\n> Default value : `undefined`\n\nUsed to glob all files that matches that pattern using [glob](https://www.npmjs.com/package/glob). This property must be provided.\n\n#### `logger`\n> Default value: `console`\n\nBy default `console` is used to log actions. You can use any custom logger as long as it contains a `debug` function.\n\n#### `baseUrl`\n> Default value: `/api/{0}` \n\nA string format that will be used to generate the router handlers prefixes; each found version will has its own router handler with a prefix generated using this format.\n\n#### `routingMethodsRegex`\n> Default value: /_(delete|get|post|put|patch)\\.(v\\d+)(\\.\\S+)*\\.js$/\n\nUsed to filter the globbed files by matching against this regular expression.\n\nRouter handlers are promisified using [`express-promise-router`](https://www.npmjs.com/package/express-promise-router) package\n\n#### `globalMiddlewares`\n> Default value: `undefined`\n\nContains an array of express middlewares that will be applied on all generated routes.\n\n#### `versioning`\n> Default value: `undefined`\n\nVersioning settings, the expected structure as follows\n\n``` json\n{\n  \"versioning\":{\n    #VERSION_NAME# :{\n      \"middlewares\" : [#MIDDLEWARE#],\n      \"paramsMiddlewares\" : [\n        {\n          #PARAM_NAME# : #MIDDLEWARE#\n        }\n      ]\n    }\n  }\n}\n```\n- _#VERSION_NAME#_ : version name, eg: v1, v2\n- _#MIDDLEWARE#_ : express middleware handler(s)\n- _#PARAM_NAME#_ : router parameter name\n\neg: \n``` javascript\nversioning: {\n  v1: {\n    middlewares: [(req, res, next) => { console.log('v1 middleware'); next(); }],\n    paramsMiddlewares: [{ id: ((req, res, next) => { console.log('id parameter middleware'); next(); }) }]\n  }\n}\n```\n\n``` \n../api/v1/users/{id}/\n[1]----↑         ↑\n[2]--------------↑\n```\nin the above example\n  - for all `v1` routes `v1.middlewares` will be applied.\n  - for all `v1` routes with `id` path parameter `v1.paramsMiddlewares[id]` will be applied.\n\n#### Default config\n``` javascript\n{\n  logger: console,\n  pattern: undefined,\n  routingMethodsRegex: /_(delete|get|post|put|patch)\\.(v\\d+)(\\.\\S+)*\\.js$/,\n  baseUrl: '/api/{0}',\n  globalMiddlewares: [],\n  versioning: { }\n};\n```\n\n### Constraints\nAll routes handlers must:\n- Exits under a folder that matches the provided `pattern`\n- Name must match the `routingMethodsRegex`, for the default config the name must contain at the following parts seperated by dot `'.'`\n  - http method name prefixed with `_`; eg: `_get`\n  - version name; eg: `v1`\n  - a descriptive part to distinct multiple methods within the same folder (optional)\n  - extension, this should be `js`\n- The handler file must export:\n  - `route` : a string representing the route that will be registered\n  - `controller` : a function to execute\n  - `middlewares` : an express middlewares array that will be executed for a specific route (optional)\n  - `aliases` : a string array that represent aliases for the same route (optional)\n\n### Test\nRun  \n\n> ``` bash\n> npm run test\n> ```\n\n### Code coverage\nRun  \n\n> ``` bash\n> npm run cover\n> ```\n\n### Example\nA sample project can be found [here](https://github.com/AspireJo/express-dynamic-routes-boilerplate).","readmeFilename":"README.md"}