@prairielearn/express-list-endpoints 1.0.2 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @prairielearn/express-list-endpoints
2
2
 
3
+ ## 1.0.4
4
+
5
+ ### Patch Changes
6
+
7
+ - 4a8b376: Upgrade all JavaScript dependencies
8
+
9
+ ## 1.0.3
10
+
11
+ ### Patch Changes
12
+
13
+ - 9d7d790: Upgrade all JavaScript dependencies
14
+
3
15
  ## 1.0.2
4
16
 
5
17
  ### Patch Changes
@@ -1,6 +1,6 @@
1
1
  import { assert } from 'chai';
2
2
  import express from 'express';
3
- import listEndpoints from '../src/index.js';
3
+ import listEndpoints, {} from '../src/index.js';
4
4
  function assertResult(endpoints) {
5
5
  assert.isArray(endpoints);
6
6
  assert.lengthOf(endpoints, 2);
@@ -1 +1 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { assert } from 'chai';\nimport express from 'express';\n\nimport listEndpoints, { type Endpoint } from '../src/index.js';\n\nfunction assertResult(endpoints: Endpoint[]) {\n assert.isArray(endpoints);\n assert.lengthOf(endpoints, 2);\n\n endpoints.forEach((endpoint) => {\n assert.typeOf(endpoint, 'object');\n\n assert.typeOf(endpoint.path, 'string');\n assert.include(endpoint.path, '/');\n\n assert.isArray(endpoint.methods);\n endpoint.methods.forEach((method) => {\n assert.typeOf(method, 'string');\n assert.equal(method, method.toUpperCase());\n assert.notEqual(method, '_ALL');\n });\n\n assert.isArray(endpoint.middlewares);\n endpoint.middlewares.forEach((middleware) => {\n assert.typeOf(middleware, 'string');\n });\n });\n}\n\ndescribe('listEndpoints', () => {\n describe('when called with non configured app', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const app = express();\n\n endpoints = listEndpoints(app);\n });\n\n it('should return an empty array', () => {\n assert.isArray(endpoints);\n assert.lengthOf(endpoints, 0);\n });\n });\n\n describe('when called over an app', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const app = express();\n\n app\n .route('/')\n .get((_req, res) => {\n res.end();\n })\n .all((_req, res) => {\n res.end();\n })\n .post((_req, res) => {\n res.end();\n });\n\n app\n .route('/testing')\n .all((_req, res) => {\n res.end();\n })\n .delete((_req, res) => {\n res.end();\n });\n\n endpoints = listEndpoints(app);\n });\n\n it('should return an array of well formed objects', () => {\n assertResult(endpoints);\n });\n });\n\n describe('when called over a router', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const router = express.Router();\n\n router\n .route('/')\n .get((_req, res) => {\n res.end();\n })\n .all((_req, res) => {\n res.end();\n })\n .post((_req, res) => {\n res.end();\n });\n\n router\n .route('/testing')\n .all((_req, res) => {\n res.end();\n })\n .delete((_req, res) => {\n res.end();\n });\n\n endpoints = listEndpoints(router);\n });\n\n it('should return an array of well formed objects', () => {\n assertResult(endpoints);\n });\n });\n\n describe('when called over an app with mounted routers', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const app = express();\n const router = express.Router();\n\n app\n .route('/testing')\n .all((_req, res) => {\n res.end();\n })\n .delete((_req, res) => {\n res.end();\n });\n\n router\n .route('/')\n .get((_req, res) => {\n res.end();\n })\n .all((_req, res) => {\n res.end();\n })\n .post((_req, res) => {\n res.end();\n });\n\n app.use('/router', router);\n\n endpoints = listEndpoints(app);\n });\n\n it('should return an array of well formed objects', () => {\n assertResult(endpoints);\n });\n\n describe('and some of the routers has the option `mergeParams`', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const app = express();\n const router = express.Router({ mergeParams: true });\n\n router.get('/:id/friends', (_req, res) => {\n res.end();\n });\n\n app.use('/router', router);\n\n endpoints = listEndpoints(app);\n });\n\n it('should parse the endpoints correctly', () => {\n assert.lengthOf(endpoints, 1);\n assert.equal(endpoints[0].path, '/router/:id/friends');\n });\n\n describe('and also has a sub-router on the router', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const app = express();\n const router = express.Router({ mergeParams: true });\n const subRouter = express.Router();\n\n subRouter.get('/', (_req, res) => {\n res.end();\n });\n\n app.use('/router', router);\n\n router.use('/:postId/sub-router', subRouter);\n\n endpoints = listEndpoints(app);\n });\n\n it('should parse the endpoints correctly', () => {\n assert.lengthOf(endpoints, 1);\n assert.equal(endpoints[0].path, '/router/:postId/sub-router');\n });\n });\n });\n });\n\n describe('when the defined routes', () => {\n describe('contains underscores', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const router = express.Router();\n\n router.get('/some_route', (_req, res) => {\n res.end();\n });\n\n router.get('/some_other_router', (_req, res) => {\n res.end();\n });\n\n router.get('/__last_route__', (_req, res) => {\n res.end();\n });\n\n endpoints = listEndpoints(router);\n });\n\n it('should parse the endpoint correctly', () => {\n assert.lengthOf(endpoints, 3);\n assert.equal(endpoints[0].path, '/some_route');\n assert.equal(endpoints[1].path, '/some_other_router');\n assert.equal(endpoints[2].path, '/__last_route__');\n });\n });\n\n describe('contains hyphens', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const router = express.Router();\n\n router.get('/some-route', (_req, res) => {\n res.end();\n });\n\n router.get('/some-other-router', (_req, res) => {\n res.end();\n });\n\n router.get('/--last-route--', (_req, res) => {\n res.end();\n });\n\n endpoints = listEndpoints(router);\n });\n\n it('should parse the endpoint correctly', () => {\n assert.lengthOf(endpoints, 3);\n assert.equal(endpoints[0].path, '/some-route');\n assert.equal(endpoints[1].path, '/some-other-router');\n assert.equal(endpoints[2].path, '/--last-route--');\n });\n });\n\n describe('contains dots', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const router = express.Router();\n\n router.get('/some.route', (_req, res) => {\n res.end();\n });\n\n router.get('/some.other.router', (_req, res) => {\n res.end();\n });\n\n router.get('/..last.route..', (_req, res) => {\n res.end();\n });\n\n endpoints = listEndpoints(router);\n });\n\n it('should parse the endpoint correctly', () => {\n assert.lengthOf(endpoints, 3);\n assert.equal(endpoints[0].path, '/some.route');\n assert.equal(endpoints[1].path, '/some.other.router');\n assert.equal(endpoints[2].path, '/..last.route..');\n });\n });\n\n describe('contains multiple different chars', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const router = express.Router();\n\n router.get('/s0m3_r.oute', (_req, res) => {\n res.end();\n });\n\n router.get('/v1.0.0', (_req, res) => {\n res.end();\n });\n\n router.get('/not_sure.what-1m.d01ng', (_req, res) => {\n res.end();\n });\n\n endpoints = listEndpoints(router);\n });\n\n it('should parse the endpoint correctly', () => {\n assert.lengthOf(endpoints, 3);\n assert.equal(endpoints[0].path, '/s0m3_r.oute');\n assert.equal(endpoints[1].path, '/v1.0.0');\n assert.equal(endpoints[2].path, '/not_sure.what-1m.d01ng');\n });\n });\n });\n\n describe('when called over a mounted router with only root path', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const app = express();\n const router = express.Router();\n\n router.get('/', (_req, res) => {\n res.end();\n });\n\n app.use('/', router);\n\n endpoints = listEndpoints(app);\n });\n\n it('should retrieve the list of endpoints and its methods', () => {\n assert.lengthOf(endpoints, 1);\n assert.equal(endpoints[0].path, '/');\n assert.lengthOf(endpoints[0].methods, 1);\n assert.equal(endpoints[0].methods[0], 'GET');\n });\n });\n\n describe('when called over a multi-level base route', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const app = express();\n const router = express.Router();\n\n router.get('/my/path', (_req, res) => {\n res.end();\n });\n\n app.use('/multi/level', router);\n app.use('/super/duper/multi/level', router);\n\n endpoints = listEndpoints(app);\n });\n\n it('should retrieve the correct built path', () => {\n assert.lengthOf(endpoints, 2);\n assert.equal(endpoints[0].path, '/multi/level/my/path');\n assert.equal(endpoints[1].path, '/super/duper/multi/level/my/path');\n });\n\n describe('with params', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const app = express();\n const router = express.Router();\n\n router.get('/users/:id', (_req, res) => {\n res.end();\n });\n\n router.get('/super/users/:id', (_req, res) => {\n res.end();\n });\n\n app.use('/multi/:multiId/level/:levelId', router);\n\n endpoints = listEndpoints(app);\n });\n\n it('should retrieve the correct built path', () => {\n assert.lengthOf(endpoints, 2);\n assert.equal(endpoints[0].path, '/multi/:multiId/level/:levelId/users/:id');\n assert.equal(endpoints[1].path, '/multi/:multiId/level/:levelId/super/users/:id');\n });\n });\n\n describe('with params in middle of the pattern', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const app = express();\n const router = express.Router();\n\n router.get('/super/users/:id/friends', (_req, res) => {\n res.end();\n });\n\n app.use('/multi/level', router);\n\n endpoints = listEndpoints(app);\n });\n\n it('should retrieve the correct built path', () => {\n assert.lengthOf(endpoints, 1);\n assert.equal(endpoints[0].path, '/multi/level/super/users/:id/friends');\n });\n });\n });\n\n describe('when called over a route with params', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const app = express();\n\n app.get('/users/:id', (_req, res) => {\n res.end();\n });\n\n endpoints = listEndpoints(app);\n });\n\n it('should retrieve the correct built path', () => {\n assert.lengthOf(endpoints, 1);\n assert.equal(endpoints[0].path, '/users/:id');\n });\n });\n\n describe('when called over a route with params in middle of the pattern', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const app = express();\n\n app.get('/users/:id/friends', (_req, res) => {\n res.end();\n });\n\n endpoints = listEndpoints(app);\n });\n\n it('should retrieve the correct built path', () => {\n assert.lengthOf(endpoints, 1);\n assert.equal(endpoints[0].path, '/users/:id/friends');\n });\n });\n\n describe('when called over a route with multiple methods with \"/\" path defined', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const router = express.Router();\n\n router\n .post('/test', (_req, res) => {\n res.end();\n })\n .delete('/test', (_req, res) => {\n res.end();\n });\n\n endpoints = listEndpoints(router);\n });\n\n it('should retrieve the correct built path', () => {\n assert.lengthOf(endpoints, 1);\n assert.equal(endpoints[0].path, '/test');\n });\n\n it('should retrieve the correct built methods', () => {\n assert.lengthOf(endpoints[0].methods, 2);\n assert.equal(endpoints[0].methods[0], 'POST');\n assert.equal(endpoints[0].methods[1], 'DELETE');\n });\n });\n\n describe('when called with middlewares', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const router = express.Router();\n\n const exampleMiddleware = () => {};\n\n router.post('/test', [\n exampleMiddleware,\n () => {}, // Anonymous middleware\n ]);\n\n endpoints = listEndpoints(router);\n });\n\n it('should retrieve the correct built path', () => {\n assert.lengthOf(endpoints, 1);\n assert.equal(endpoints[0].path, '/test');\n assert.lengthOf(endpoints[0].methods, 1);\n assert.equal(endpoints[0].methods[0], 'POST');\n });\n\n it('should retrieve the correct middlewares', () => {\n assert.lengthOf(endpoints[0].middlewares, 2);\n assert.equal(endpoints[0].middlewares[0], 'exampleMiddleware');\n assert.equal(endpoints[0].middlewares[1], 'anonymous');\n });\n });\n\n describe('when called with an array of paths', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const app = express();\n const router = express.Router();\n\n app.get(['/one', '/two'], (_req, res) => {\n res.end();\n });\n\n router.get(['/one', '/two'], (_req, res) => {\n res.end();\n });\n\n app.use(['/router', '/sub-path'], router);\n\n endpoints = listEndpoints(app);\n });\n\n it('should list routes correctly', () => {\n assert.lengthOf(endpoints, 4);\n assert.equal(endpoints[0].path, '/one');\n assert.equal(endpoints[0].methods[0], 'GET');\n assert.equal(endpoints[1].path, '/two');\n assert.equal(endpoints[1].methods[0], 'GET');\n });\n });\n\n describe('when called with an app with a mounted sub-app', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const app = express();\n const subApp = express();\n\n app.get('/', (_req, res) => {\n res.end();\n });\n\n subApp.get('/', (_req, res) => {\n res.end();\n });\n\n app.use('/sub-app', subApp);\n\n endpoints = listEndpoints(app);\n });\n\n it('should list routes correctly', () => {\n assert.lengthOf(endpoints, 2);\n assert.equal(endpoints[0].path, '/');\n assert.equal(endpoints[0].methods[0], 'GET');\n assert.equal(endpoints[0].middlewares[0], 'anonymous');\n assert.equal(endpoints[1].path, '/sub-app');\n assert.lengthOf(endpoints[1].methods, 0);\n assert.lengthOf(endpoints[1].middlewares, 0);\n });\n });\n\n describe('when called with route params with regexp', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const app = express();\n\n app.get('/foo/:item_id(\\\\d+)/bar', (_req, res) => {\n res.end();\n });\n\n endpoints = listEndpoints(app);\n });\n\n it('should list routes correctly', () => {\n assert.lengthOf(endpoints, 1);\n assert.equal(endpoints[0].path, '/foo/:item_id/bar');\n assert.equal(endpoints[0].methods[0], 'GET');\n assert.equal(endpoints[0].middlewares[0], 'anonymous');\n });\n });\n\n describe('when called with a route with multiple params with regexp', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const app = express();\n\n app.get('/foo/bar/:baz_id(\\\\d+)/:biz_id(\\\\d+)', (_req, res) => {\n res.end();\n });\n\n endpoints = listEndpoints(app);\n });\n\n it('should list routes correctly', () => {\n assert.lengthOf(endpoints, 1);\n assert.equal(endpoints[0].path, '/foo/bar/:baz_id/:biz_id');\n assert.equal(endpoints[0].methods[0], 'GET');\n assert.equal(endpoints[0].middlewares[0], 'anonymous');\n });\n });\n\n describe('supports regexp validators for params in subapp', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const app = express();\n const subApp = express.Router();\n\n subApp.get('/baz/:biz_id(\\\\d+)', (_req, res) => {\n res.end();\n });\n\n app.use('/foo/bar', subApp);\n\n endpoints = listEndpoints(app);\n });\n\n it('should list routes correctly', () => {\n assert.lengthOf(endpoints, 1);\n assert.equal(endpoints[0].path, '/foo/bar/baz/:biz_id');\n assert.equal(endpoints[0].methods[0], 'GET');\n assert.equal(endpoints[0].middlewares[0], 'anonymous');\n });\n });\n});\n"]}
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { assert } from 'chai';\nimport express from 'express';\n\nimport listEndpoints, { type Endpoint } from '../src/index.js';\n\nfunction assertResult(endpoints: Endpoint[]) {\n assert.isArray(endpoints);\n assert.lengthOf(endpoints, 2);\n\n endpoints.forEach((endpoint) => {\n assert.typeOf(endpoint, 'object');\n\n assert.typeOf(endpoint.path, 'string');\n assert.include(endpoint.path, '/');\n\n assert.isArray(endpoint.methods);\n endpoint.methods.forEach((method) => {\n assert.typeOf(method, 'string');\n assert.equal(method, method.toUpperCase());\n assert.notEqual(method, '_ALL');\n });\n\n assert.isArray(endpoint.middlewares);\n endpoint.middlewares.forEach((middleware) => {\n assert.typeOf(middleware, 'string');\n });\n });\n}\n\ndescribe('listEndpoints', () => {\n describe('when called with non configured app', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const app = express();\n\n endpoints = listEndpoints(app);\n });\n\n it('should return an empty array', () => {\n assert.isArray(endpoints);\n assert.lengthOf(endpoints, 0);\n });\n });\n\n describe('when called over an app', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const app = express();\n\n app\n .route('/')\n .get((_req, res) => {\n res.end();\n })\n .all((_req, res) => {\n res.end();\n })\n .post((_req, res) => {\n res.end();\n });\n\n app\n .route('/testing')\n .all((_req, res) => {\n res.end();\n })\n .delete((_req, res) => {\n res.end();\n });\n\n endpoints = listEndpoints(app);\n });\n\n it('should return an array of well formed objects', () => {\n assertResult(endpoints);\n });\n });\n\n describe('when called over a router', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const router = express.Router();\n\n router\n .route('/')\n .get((_req, res) => {\n res.end();\n })\n .all((_req, res) => {\n res.end();\n })\n .post((_req, res) => {\n res.end();\n });\n\n router\n .route('/testing')\n .all((_req, res) => {\n res.end();\n })\n .delete((_req, res) => {\n res.end();\n });\n\n endpoints = listEndpoints(router);\n });\n\n it('should return an array of well formed objects', () => {\n assertResult(endpoints);\n });\n });\n\n describe('when called over an app with mounted routers', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const app = express();\n const router = express.Router();\n\n app\n .route('/testing')\n .all((_req, res) => {\n res.end();\n })\n .delete((_req, res) => {\n res.end();\n });\n\n router\n .route('/')\n .get((_req, res) => {\n res.end();\n })\n .all((_req, res) => {\n res.end();\n })\n .post((_req, res) => {\n res.end();\n });\n\n app.use('/router', router);\n\n endpoints = listEndpoints(app);\n });\n\n it('should return an array of well formed objects', () => {\n assertResult(endpoints);\n });\n\n describe('and some of the routers has the option `mergeParams`', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const app = express();\n const router = express.Router({ mergeParams: true });\n\n router.get('/:id/friends', (_req, res) => {\n res.end();\n });\n\n app.use('/router', router);\n\n endpoints = listEndpoints(app);\n });\n\n it('should parse the endpoints correctly', () => {\n assert.lengthOf(endpoints, 1);\n assert.equal(endpoints[0].path, '/router/:id/friends');\n });\n\n describe('and also has a sub-router on the router', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const app = express();\n const router = express.Router({ mergeParams: true });\n const subRouter = express.Router();\n\n subRouter.get('/', (_req, res) => {\n res.end();\n });\n\n app.use('/router', router);\n\n router.use('/:postId/sub-router', subRouter);\n\n endpoints = listEndpoints(app);\n });\n\n it('should parse the endpoints correctly', () => {\n assert.lengthOf(endpoints, 1);\n assert.equal(endpoints[0].path, '/router/:postId/sub-router');\n });\n });\n });\n });\n\n describe('when the defined routes', () => {\n describe('contains underscores', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const router = express.Router();\n\n router.get('/some_route', (_req, res) => {\n res.end();\n });\n\n router.get('/some_other_router', (_req, res) => {\n res.end();\n });\n\n router.get('/__last_route__', (_req, res) => {\n res.end();\n });\n\n endpoints = listEndpoints(router);\n });\n\n it('should parse the endpoint correctly', () => {\n assert.lengthOf(endpoints, 3);\n assert.equal(endpoints[0].path, '/some_route');\n assert.equal(endpoints[1].path, '/some_other_router');\n assert.equal(endpoints[2].path, '/__last_route__');\n });\n });\n\n describe('contains hyphens', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const router = express.Router();\n\n router.get('/some-route', (_req, res) => {\n res.end();\n });\n\n router.get('/some-other-router', (_req, res) => {\n res.end();\n });\n\n router.get('/--last-route--', (_req, res) => {\n res.end();\n });\n\n endpoints = listEndpoints(router);\n });\n\n it('should parse the endpoint correctly', () => {\n assert.lengthOf(endpoints, 3);\n assert.equal(endpoints[0].path, '/some-route');\n assert.equal(endpoints[1].path, '/some-other-router');\n assert.equal(endpoints[2].path, '/--last-route--');\n });\n });\n\n describe('contains dots', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const router = express.Router();\n\n router.get('/some.route', (_req, res) => {\n res.end();\n });\n\n router.get('/some.other.router', (_req, res) => {\n res.end();\n });\n\n router.get('/..last.route..', (_req, res) => {\n res.end();\n });\n\n endpoints = listEndpoints(router);\n });\n\n it('should parse the endpoint correctly', () => {\n assert.lengthOf(endpoints, 3);\n assert.equal(endpoints[0].path, '/some.route');\n assert.equal(endpoints[1].path, '/some.other.router');\n assert.equal(endpoints[2].path, '/..last.route..');\n });\n });\n\n describe('contains multiple different chars', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const router = express.Router();\n\n router.get('/s0m3_r.oute', (_req, res) => {\n res.end();\n });\n\n router.get('/v1.0.0', (_req, res) => {\n res.end();\n });\n\n router.get('/not_sure.what-1m.d01ng', (_req, res) => {\n res.end();\n });\n\n endpoints = listEndpoints(router);\n });\n\n it('should parse the endpoint correctly', () => {\n assert.lengthOf(endpoints, 3);\n assert.equal(endpoints[0].path, '/s0m3_r.oute');\n assert.equal(endpoints[1].path, '/v1.0.0');\n assert.equal(endpoints[2].path, '/not_sure.what-1m.d01ng');\n });\n });\n });\n\n describe('when called over a mounted router with only root path', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const app = express();\n const router = express.Router();\n\n router.get('/', (_req, res) => {\n res.end();\n });\n\n app.use('/', router);\n\n endpoints = listEndpoints(app);\n });\n\n it('should retrieve the list of endpoints and its methods', () => {\n assert.lengthOf(endpoints, 1);\n assert.equal(endpoints[0].path, '/');\n assert.lengthOf(endpoints[0].methods, 1);\n assert.equal(endpoints[0].methods[0], 'GET');\n });\n });\n\n describe('when called over a multi-level base route', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const app = express();\n const router = express.Router();\n\n router.get('/my/path', (_req, res) => {\n res.end();\n });\n\n app.use('/multi/level', router);\n app.use('/super/duper/multi/level', router);\n\n endpoints = listEndpoints(app);\n });\n\n it('should retrieve the correct built path', () => {\n assert.lengthOf(endpoints, 2);\n assert.equal(endpoints[0].path, '/multi/level/my/path');\n assert.equal(endpoints[1].path, '/super/duper/multi/level/my/path');\n });\n\n describe('with params', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const app = express();\n const router = express.Router();\n\n router.get('/users/:id', (_req, res) => {\n res.end();\n });\n\n router.get('/super/users/:id', (_req, res) => {\n res.end();\n });\n\n app.use('/multi/:multiId/level/:levelId', router);\n\n endpoints = listEndpoints(app);\n });\n\n it('should retrieve the correct built path', () => {\n assert.lengthOf(endpoints, 2);\n assert.equal(endpoints[0].path, '/multi/:multiId/level/:levelId/users/:id');\n assert.equal(endpoints[1].path, '/multi/:multiId/level/:levelId/super/users/:id');\n });\n });\n\n describe('with params in middle of the pattern', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const app = express();\n const router = express.Router();\n\n router.get('/super/users/:id/friends', (_req, res) => {\n res.end();\n });\n\n app.use('/multi/level', router);\n\n endpoints = listEndpoints(app);\n });\n\n it('should retrieve the correct built path', () => {\n assert.lengthOf(endpoints, 1);\n assert.equal(endpoints[0].path, '/multi/level/super/users/:id/friends');\n });\n });\n });\n\n describe('when called over a route with params', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const app = express();\n\n app.get('/users/:id', (_req, res) => {\n res.end();\n });\n\n endpoints = listEndpoints(app);\n });\n\n it('should retrieve the correct built path', () => {\n assert.lengthOf(endpoints, 1);\n assert.equal(endpoints[0].path, '/users/:id');\n });\n });\n\n describe('when called over a route with params in middle of the pattern', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const app = express();\n\n app.get('/users/:id/friends', (_req, res) => {\n res.end();\n });\n\n endpoints = listEndpoints(app);\n });\n\n it('should retrieve the correct built path', () => {\n assert.lengthOf(endpoints, 1);\n assert.equal(endpoints[0].path, '/users/:id/friends');\n });\n });\n\n describe('when called over a route with multiple methods with \"/\" path defined', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const router = express.Router();\n\n router\n .post('/test', (_req, res) => {\n res.end();\n })\n .delete('/test', (_req, res) => {\n res.end();\n });\n\n endpoints = listEndpoints(router);\n });\n\n it('should retrieve the correct built path', () => {\n assert.lengthOf(endpoints, 1);\n assert.equal(endpoints[0].path, '/test');\n });\n\n it('should retrieve the correct built methods', () => {\n assert.lengthOf(endpoints[0].methods, 2);\n assert.equal(endpoints[0].methods[0], 'POST');\n assert.equal(endpoints[0].methods[1], 'DELETE');\n });\n });\n\n describe('when called with middlewares', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const router = express.Router();\n\n const exampleMiddleware = () => {};\n\n router.post('/test', [\n exampleMiddleware,\n () => {}, // Anonymous middleware\n ]);\n\n endpoints = listEndpoints(router);\n });\n\n it('should retrieve the correct built path', () => {\n assert.lengthOf(endpoints, 1);\n assert.equal(endpoints[0].path, '/test');\n assert.lengthOf(endpoints[0].methods, 1);\n assert.equal(endpoints[0].methods[0], 'POST');\n });\n\n it('should retrieve the correct middlewares', () => {\n assert.lengthOf(endpoints[0].middlewares, 2);\n assert.equal(endpoints[0].middlewares[0], 'exampleMiddleware');\n assert.equal(endpoints[0].middlewares[1], 'anonymous');\n });\n });\n\n describe('when called with an array of paths', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const app = express();\n const router = express.Router();\n\n app.get(['/one', '/two'], (_req, res) => {\n res.end();\n });\n\n router.get(['/one', '/two'], (_req, res) => {\n res.end();\n });\n\n app.use(['/router', '/sub-path'], router);\n\n endpoints = listEndpoints(app);\n });\n\n it('should list routes correctly', () => {\n assert.lengthOf(endpoints, 4);\n assert.equal(endpoints[0].path, '/one');\n assert.equal(endpoints[0].methods[0], 'GET');\n assert.equal(endpoints[1].path, '/two');\n assert.equal(endpoints[1].methods[0], 'GET');\n });\n });\n\n describe('when called with an app with a mounted sub-app', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const app = express();\n const subApp = express();\n\n app.get('/', (_req, res) => {\n res.end();\n });\n\n subApp.get('/', (_req, res) => {\n res.end();\n });\n\n app.use('/sub-app', subApp);\n\n endpoints = listEndpoints(app);\n });\n\n it('should list routes correctly', () => {\n assert.lengthOf(endpoints, 2);\n assert.equal(endpoints[0].path, '/');\n assert.equal(endpoints[0].methods[0], 'GET');\n assert.equal(endpoints[0].middlewares[0], 'anonymous');\n assert.equal(endpoints[1].path, '/sub-app');\n assert.lengthOf(endpoints[1].methods, 0);\n assert.lengthOf(endpoints[1].middlewares, 0);\n });\n });\n\n describe('when called with route params with regexp', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const app = express();\n\n app.get('/foo/:item_id(\\\\d+)/bar', (_req, res) => {\n res.end();\n });\n\n endpoints = listEndpoints(app);\n });\n\n it('should list routes correctly', () => {\n assert.lengthOf(endpoints, 1);\n assert.equal(endpoints[0].path, '/foo/:item_id/bar');\n assert.equal(endpoints[0].methods[0], 'GET');\n assert.equal(endpoints[0].middlewares[0], 'anonymous');\n });\n });\n\n describe('when called with a route with multiple params with regexp', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const app = express();\n\n app.get('/foo/bar/:baz_id(\\\\d+)/:biz_id(\\\\d+)', (_req, res) => {\n res.end();\n });\n\n endpoints = listEndpoints(app);\n });\n\n it('should list routes correctly', () => {\n assert.lengthOf(endpoints, 1);\n assert.equal(endpoints[0].path, '/foo/bar/:baz_id/:biz_id');\n assert.equal(endpoints[0].methods[0], 'GET');\n assert.equal(endpoints[0].middlewares[0], 'anonymous');\n });\n });\n\n describe('supports regexp validators for params in subapp', () => {\n let endpoints: Endpoint[];\n\n before(() => {\n const app = express();\n const subApp = express.Router();\n\n subApp.get('/baz/:biz_id(\\\\d+)', (_req, res) => {\n res.end();\n });\n\n app.use('/foo/bar', subApp);\n\n endpoints = listEndpoints(app);\n });\n\n it('should list routes correctly', () => {\n assert.lengthOf(endpoints, 1);\n assert.equal(endpoints[0].path, '/foo/bar/baz/:biz_id');\n assert.equal(endpoints[0].methods[0], 'GET');\n assert.equal(endpoints[0].middlewares[0], 'anonymous');\n });\n });\n});\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prairielearn/express-list-endpoints",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -16,13 +16,13 @@
16
16
  },
17
17
  "devDependencies": {
18
18
  "@prairielearn/tsconfig": "^0.0.0",
19
- "@types/node": "^20.17.9",
20
- "c8": "^10.1.2",
19
+ "@types/node": "^20.17.16",
20
+ "c8": "^10.1.3",
21
21
  "chai": "^5.1.2",
22
- "express": "^4.21.1",
22
+ "express": "^4.21.2",
23
23
  "mocha": "^10.8.2",
24
24
  "tsx": "^4.19.2",
25
- "typescript": "^5.7.2"
25
+ "typescript": "^5.7.3"
26
26
  },
27
27
  "c8": {
28
28
  "reporter": [