@quatrain/api-server-express 1.1.9 → 1.1.11

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ExpressAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/ExpressAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAE,aAAa,EAAE,UAAU,EAA2B,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAEnI,qBAAa,cAAe,YAAW,aAAa;IAE9C,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,MAAM;gBADN,WAAW,GAAE,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,MAAkB,EAC7D,MAAM,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO;IAkB9C,OAAO,CAAC,WAAW;IAuCnB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI;IAI5C,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI;IAI7C,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI;IAI5C,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI;IAI/C,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,IAAI;IAI1B,aAAa,CAAC,UAAU,EAAE,aAAa,GAAG,IAAI;IA2C9C,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;IAMzC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI;IAQhD,iBAAiB,IAAI,GAAG;IAYxB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,GAAE,MAAe,GAAG,IAAI;IAUjE,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,IAAI;CAUlG"}
1
+ {"version":3,"file":"ExpressAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/ExpressAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAE,aAAa,EAAE,UAAU,EAA2B,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAMnI,qBAAa,cAAe,YAAW,aAAa;IAE9C,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,MAAM;gBADN,WAAW,GAAE,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,MAAkB,EAC7D,MAAM,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO;IAkB9C,OAAO,CAAC,WAAW;IA2CnB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI;IAU5C,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI;IAU7C,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI;IAU5C,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI;IAS/C,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,IAAI;IAS1B,aAAa,CAAC,UAAU,EAAE,aAAa,GAAG,IAAI;IA+C9C,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;IAYzC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI;IAahD,iBAAiB,IAAI,GAAG;IAYxB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,GAAE,MAAe,GAAG,IAAI;IAiBjE,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,IAAI;CAUlG"}
@@ -26,8 +26,8 @@ class ExpressAdapter {
26
26
  }
27
27
  }
28
28
  wrapHandler(handler) {
29
- return async (req, res, next) => {
30
- try {
29
+ return (req, res, next) => {
30
+ void (async () => {
31
31
  const apiReq = {
32
32
  body: req.body,
33
33
  params: req.params,
@@ -56,10 +56,7 @@ class ExpressAdapter {
56
56
  }
57
57
  };
58
58
  await handler(apiReq, apiRes);
59
- }
60
- catch (err) {
61
- next(err);
62
- }
59
+ })().catch(next);
63
60
  };
64
61
  }
65
62
  get(path, handler) {
@@ -78,43 +75,40 @@ class ExpressAdapter {
78
75
  this.appOrRouter.use(middleware);
79
76
  }
80
77
  addMiddleware(middleware) {
81
- const expressMiddleware = async (req, res, next) => {
82
- const apiReq = {
83
- body: req.body,
84
- params: req.params,
85
- query: req.query,
86
- headers: req.headers
87
- };
88
- const apiRes = {
89
- status: (code) => {
90
- res.status(code);
91
- return apiRes;
92
- },
93
- json: (data) => {
94
- res.json(data);
95
- },
96
- send: (data) => {
97
- res.send(data);
98
- },
99
- setHeader: (name, value) => {
100
- res.setHeader(name, value);
101
- },
102
- write: (data) => {
103
- res.write(data);
104
- },
105
- end: () => {
106
- res.end();
107
- }
108
- };
109
- try {
78
+ const expressMiddleware = (req, res, next) => {
79
+ void (async () => {
80
+ const apiReq = {
81
+ body: req.body,
82
+ params: req.params,
83
+ query: req.query,
84
+ headers: req.headers
85
+ };
86
+ const apiRes = {
87
+ status: (code) => {
88
+ res.status(code);
89
+ return apiRes;
90
+ },
91
+ json: (data) => {
92
+ res.json(data);
93
+ },
94
+ send: (data) => {
95
+ res.send(data);
96
+ },
97
+ setHeader: (name, value) => {
98
+ res.setHeader(name, value);
99
+ },
100
+ write: (data) => {
101
+ res.write(data);
102
+ },
103
+ end: () => {
104
+ res.end();
105
+ }
106
+ };
110
107
  const shouldContinue = await middleware(apiReq, apiRes);
111
108
  if (shouldContinue) {
112
109
  next();
113
110
  }
114
- }
115
- catch (err) {
116
- next(err);
117
- }
111
+ })().catch(next);
118
112
  };
119
113
  this.appOrRouter.use(expressMiddleware);
120
114
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ExpressAdapter.js","sourceRoot":"","sources":["../../src/adapters/ExpressAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ExpressAdapter.js","sourceRoot":"","sources":["../../src/adapters/ExpressAdapter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quatrain/api-server-express",
3
- "version": "1.1.9",
3
+ "version": "1.1.11",
4
4
  "description": "Express Adapter for Quatrain API Server",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -29,7 +29,7 @@
29
29
  "typescript": "^5.2.2"
30
30
  },
31
31
  "dependencies": {
32
- "@quatrain/api": "^1.1.4",
32
+ "@quatrain/api": "^1.1.5",
33
33
  "@quatrain/api-server": "^1.1.9",
34
34
  "express": "^4.19.2"
35
35
  },
@@ -1,6 +1,10 @@
1
1
  import express from 'express'
2
2
  import { ServerAdapter, ApiHandler, ApiRequest, ApiResponse, EndpointHandler, EndpointOptions, ApiMiddleware } from '@quatrain/api'
3
3
 
4
+ /**
5
+ * Api Server adapter wrapping the `express` framework.
6
+ * Maps Quatrain's standardized `ServerAdapter` interfaces to native Express mechanisms.
7
+ */
4
8
  export class ExpressAdapter implements ServerAdapter {
5
9
  constructor(
6
10
  private appOrRouter: express.Application | express.Router = express(),
@@ -23,8 +27,8 @@ export class ExpressAdapter implements ServerAdapter {
23
27
  }
24
28
 
25
29
  private wrapHandler(handler: ApiHandler): express.RequestHandler {
26
- return async (req: express.Request, res: express.Response, next: express.NextFunction) => {
27
- try {
30
+ return (req: express.Request, res: express.Response, next: express.NextFunction): void => {
31
+ void (async () => {
28
32
  const apiReq: ApiRequest = {
29
33
  body: req.body,
30
34
  params: req.params,
@@ -55,81 +59,123 @@ export class ExpressAdapter implements ServerAdapter {
55
59
  }
56
60
 
57
61
  await handler(apiReq, apiRes)
58
- } catch (err) {
59
- next(err)
60
- }
62
+ })().catch(next)
61
63
  }
62
64
  }
63
65
 
66
+ /**
67
+ * Registers a GET endpoint.
68
+ *
69
+ * @param path - The URI path.
70
+ * @param handler - The standard Quatrain ApiHandler.
71
+ */
64
72
  get(path: string, handler: ApiHandler): void {
65
73
  (this.appOrRouter as express.Router).get(path, this.wrapHandler(handler))
66
74
  }
67
75
 
76
+ /**
77
+ * Registers a POST endpoint.
78
+ *
79
+ * @param path - The URI path.
80
+ * @param handler - The standard Quatrain ApiHandler.
81
+ */
68
82
  post(path: string, handler: ApiHandler): void {
69
83
  (this.appOrRouter as express.Router).post(path, this.wrapHandler(handler))
70
84
  }
71
85
 
86
+ /**
87
+ * Registers a PUT endpoint.
88
+ *
89
+ * @param path - The URI path.
90
+ * @param handler - The standard Quatrain ApiHandler.
91
+ */
72
92
  put(path: string, handler: ApiHandler): void {
73
93
  (this.appOrRouter as express.Router).put(path, this.wrapHandler(handler))
74
94
  }
75
95
 
96
+ /**
97
+ * Registers a DELETE endpoint.
98
+ *
99
+ * @param path - The URI path.
100
+ * @param handler - The standard Quatrain ApiHandler.
101
+ */
76
102
  delete(path: string, handler: ApiHandler): void {
77
103
  (this.appOrRouter as express.Router).delete(path, this.wrapHandler(handler))
78
104
  }
79
105
 
106
+ /**
107
+ * Attaches a native Express middleware or sub-router.
108
+ *
109
+ * @param middleware - The Express RequestHandler or Router.
110
+ */
80
111
  use(middleware: any): void {
81
112
  (this.appOrRouter as express.Router).use(middleware)
82
113
  }
83
114
 
115
+ /**
116
+ * Injects a Quatrain-compatible API middleware into the flow.
117
+ *
118
+ * @param middleware - The Quatrain ApiMiddleware function.
119
+ */
84
120
  addMiddleware(middleware: ApiMiddleware): void {
85
- const expressMiddleware = async (req: express.Request, res: express.Response, next: express.NextFunction) => {
86
- const apiReq: ApiRequest = {
87
- body: req.body,
88
- params: req.params,
89
- query: req.query,
90
- headers: req.headers as Record<string, string | string[] | undefined>
91
- }
92
-
93
- const apiRes: ApiResponse = {
94
- status: (code: number) => {
95
- res.status(code)
96
- return apiRes
97
- },
98
- json: (data: any) => {
99
- res.json(data)
100
- },
101
- send: (data: string) => {
102
- res.send(data)
103
- },
104
- setHeader: (name: string, value: string) => {
105
- res.setHeader(name, value)
106
- },
107
- write: (data: string) => {
108
- res.write(data)
109
- },
110
- end: () => {
111
- res.end()
121
+ const expressMiddleware = (req: express.Request, res: express.Response, next: express.NextFunction): void => {
122
+ void (async () => {
123
+ const apiReq: ApiRequest = {
124
+ body: req.body,
125
+ params: req.params,
126
+ query: req.query,
127
+ headers: req.headers as Record<string, string | string[] | undefined>
128
+ }
129
+
130
+ const apiRes: ApiResponse = {
131
+ status: (code: number) => {
132
+ res.status(code)
133
+ return apiRes
134
+ },
135
+ json: (data: any) => {
136
+ res.json(data)
137
+ },
138
+ send: (data: string) => {
139
+ res.send(data)
140
+ },
141
+ setHeader: (name: string, value: string) => {
142
+ res.setHeader(name, value)
143
+ },
144
+ write: (data: string) => {
145
+ res.write(data)
146
+ },
147
+ end: () => {
148
+ res.end()
149
+ }
112
150
  }
113
- }
114
151
 
115
- try {
116
152
  const shouldContinue = await middleware(apiReq, apiRes)
117
153
  if (shouldContinue) {
118
154
  next()
119
155
  }
120
- } catch (err) {
121
- next(err)
122
- }
156
+ })().catch(next)
123
157
  }
124
158
  (this.appOrRouter as express.Router).use(expressMiddleware)
125
159
  }
126
160
 
161
+ /**
162
+ * Spawns an isolated routing scope (sub-router).
163
+ *
164
+ * @param path - The prefix path for the router.
165
+ * @returns A new ExpressAdapter instance controlling the sub-router.
166
+ */
127
167
  createRouter(path: string): ServerAdapter {
128
168
  const router = express.Router()
129
169
  ;(this.appOrRouter as express.Router).use(path, router)
130
170
  return new ExpressAdapter(router)
131
171
  }
132
172
 
173
+ /**
174
+ * Binds the server to the network and starts listening.
175
+ *
176
+ * @param port - The network port.
177
+ * @param callback - Optional completion callback.
178
+ */
133
179
  start(port: number, callback?: () => void): void {
134
180
  if ('listen' in this.appOrRouter && typeof this.appOrRouter.listen === 'function') {
135
181
  this.appOrRouter.listen(port, callback)
@@ -138,6 +184,11 @@ export class ExpressAdapter implements ServerAdapter {
138
184
  }
139
185
  }
140
186
 
187
+ /**
188
+ * Retrieves the underlying native framework instance.
189
+ *
190
+ * @returns The raw Express Application or Router instance.
191
+ */
141
192
  getNativeInstance(): any {
142
193
  return this.appOrRouter
143
194
  }
@@ -160,6 +211,13 @@ export class ExpressAdapter implements ServerAdapter {
160
211
  })
161
212
  }
162
213
 
214
+ /**
215
+ * Composes and mounts a full EndpointHandler block at a specific root.
216
+ *
217
+ * @param handler - The endpoint initialization logic.
218
+ * @param endpointRoot - The base URI.
219
+ * @param options - Middlewares and operational options.
220
+ */
163
221
  addEndpoint(handler: EndpointHandler, endpointRoot: string, options: EndpointOptions = {}): void {
164
222
  const fullPath = this.config.apiPrefix ? `${this.config.apiPrefix}${endpointRoot}` : endpointRoot
165
223
  const router = this.createRouter(fullPath)