@derivesome/server 1.0.14 → 1.0.16

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.
Files changed (50) hide show
  1. package/dist/cjs/app.d.ts +3 -0
  2. package/dist/cjs/app.d.ts.map +1 -1
  3. package/dist/cjs/app.js +30 -13
  4. package/dist/cjs/app.js.map +1 -1
  5. package/dist/cjs/index.d.ts +2 -0
  6. package/dist/cjs/index.d.ts.map +1 -1
  7. package/dist/cjs/index.js +2 -0
  8. package/dist/cjs/index.js.map +1 -1
  9. package/dist/cjs/middleware.d.ts +8 -0
  10. package/dist/cjs/middleware.d.ts.map +1 -0
  11. package/dist/cjs/middleware.js +3 -0
  12. package/dist/cjs/middleware.js.map +1 -0
  13. package/dist/cjs/middlewares/cors.d.ts +12 -0
  14. package/dist/cjs/middlewares/cors.d.ts.map +1 -0
  15. package/dist/cjs/middlewares/cors.js +56 -0
  16. package/dist/cjs/middlewares/cors.js.map +1 -0
  17. package/dist/cjs/middlewares/index.d.ts +2 -0
  18. package/dist/cjs/middlewares/index.d.ts.map +1 -0
  19. package/dist/cjs/middlewares/index.js +18 -0
  20. package/dist/cjs/middlewares/index.js.map +1 -0
  21. package/dist/esm/app.d.ts +3 -0
  22. package/dist/esm/app.d.ts.map +1 -1
  23. package/dist/esm/app.js +30 -13
  24. package/dist/esm/app.js.map +1 -1
  25. package/dist/esm/index.d.ts +2 -0
  26. package/dist/esm/index.d.ts.map +1 -1
  27. package/dist/esm/index.js +2 -0
  28. package/dist/esm/index.js.map +1 -1
  29. package/dist/esm/middleware.d.ts +8 -0
  30. package/dist/esm/middleware.d.ts.map +1 -0
  31. package/dist/esm/middleware.js +3 -0
  32. package/dist/esm/middleware.js.map +1 -0
  33. package/dist/esm/middlewares/cors.d.ts +12 -0
  34. package/dist/esm/middlewares/cors.d.ts.map +1 -0
  35. package/dist/esm/middlewares/cors.js +56 -0
  36. package/dist/esm/middlewares/cors.js.map +1 -0
  37. package/dist/esm/middlewares/index.d.ts +2 -0
  38. package/dist/esm/middlewares/index.d.ts.map +1 -0
  39. package/dist/esm/middlewares/index.js +18 -0
  40. package/dist/esm/middlewares/index.js.map +1 -0
  41. package/package.json +2 -2
  42. package/src/.app.ts.~undo-tree~ +3 -7
  43. package/src/app.ts +34 -14
  44. package/src/app.ts~ +33 -14
  45. package/src/index.ts +2 -0
  46. package/src/middleware.ts +13 -0
  47. package/src/middlewares/.cors.ts.~undo-tree~ +30 -0
  48. package/src/middlewares/cors.ts +73 -0
  49. package/src/middlewares/cors.ts~ +26 -0
  50. package/src/middlewares/index.ts +1 -0
package/dist/cjs/app.d.ts CHANGED
@@ -5,12 +5,15 @@ import { RequestMethod } from "./request-method";
5
5
  import { Route, RouteWithoutArgs } from "./route";
6
6
  import { RouteHandler } from "./route-handler";
7
7
  import http from "node:http";
8
+ import { Middleware } from "./middleware";
8
9
  export declare class App<Meta extends UnknownRecord = UnknownRecord> {
9
10
  private _meta;
10
11
  private _metaProviders;
12
+ private _middlewares;
11
13
  private _routes;
12
14
  private _responseMaker;
13
15
  constructor(meta: Meta);
16
+ use(middleware: Middleware): this;
14
17
  metaProvider<NextMeta extends UnknownRecord>(provider: MetaProvider<NextMeta, Meta>): App<Meta & NextMeta>;
15
18
  route<Method extends RequestMethod, Path extends string>(route: RouteWithoutArgs<Meta, Method, Path>): this;
16
19
  route<Args extends ShapeMapping<any>, Method extends RequestMethod, Path extends string>(route: Route<Meta, Args, Method, Path>): this;
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAoB,MAAM,UAAU,CAAC;AAC1D,OAAO,EAA8B,aAAa,EAAE,MAAM,UAAU,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EACL,YAAY,EAGb,MAAM,iBAAiB,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAkE7B,qBAAa,GAAG,CAAC,IAAI,SAAS,aAAa,GAAG,aAAa;IACzD,OAAO,CAAC,KAAK,CAAO;IACpB,OAAO,CAAC,cAAc,CAAqD;IAC3E,OAAO,CAAC,OAAO,CAAkD;IACjE,OAAO,CAAC,cAAc,CAAsC;gBAEhD,IAAI,EAAE,IAAI;IAItB,YAAY,CAAC,QAAQ,SAAS,aAAa,EACzC,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,GACrC,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC;IAOvB,KAAK,CAAC,MAAM,SAAS,aAAa,EAAE,IAAI,SAAS,MAAM,EACrD,KAAK,EAAE,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,GAC1C,IAAI;IACP,KAAK,CACH,IAAI,SAAS,YAAY,CAAC,GAAG,CAAC,EAC9B,MAAM,SAAS,aAAa,EAC5B,IAAI,SAAS,MAAM,EACnB,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI;IAU/C,GAAG,CACD,IAAI,SAAS,MAAM,EACnB,IAAI,SAAS,YAAY,CAAC,GAAG,CAAC,EAC9B,OAAO,SAAS,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,EACxC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,SAAS,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IASpE,OAAO,CAAC,OAAO;YAmBD,UAAU;YAqDV,QAAQ;YAqBR,WAAW;IAiCzB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM;CAcrE;AAED,wBAAgB,SAAS,IAAI,GAAG,CAAC,aAAa,CAAC,CAE9C"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAY,MAAM,UAAU,CAAC;AAClD,OAAO,EAA8B,aAAa,EAAE,MAAM,UAAU,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EACL,YAAY,EAGb,MAAM,iBAAiB,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAI7B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AA+D1C,qBAAa,GAAG,CAAC,IAAI,SAAS,aAAa,GAAG,aAAa;IACzD,OAAO,CAAC,KAAK,CAAO;IACpB,OAAO,CAAC,cAAc,CAAqD;IAC3E,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,OAAO,CAAkD;IACjE,OAAO,CAAC,cAAc,CAAsC;gBAEhD,IAAI,EAAE,IAAI;IAItB,GAAG,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAKjC,YAAY,CAAC,QAAQ,SAAS,aAAa,EACzC,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,GACrC,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC;IAQvB,KAAK,CAAC,MAAM,SAAS,aAAa,EAAE,IAAI,SAAS,MAAM,EACrD,KAAK,EAAE,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,GAC1C,IAAI;IACP,KAAK,CACH,IAAI,SAAS,YAAY,CAAC,GAAG,CAAC,EAC9B,MAAM,SAAS,aAAa,EAC5B,IAAI,SAAS,MAAM,EACnB,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI;IAU/C,GAAG,CACD,IAAI,SAAS,MAAM,EACnB,IAAI,SAAS,YAAY,CAAC,GAAG,CAAC,EAC9B,OAAO,SAAS,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,EACxC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,SAAS,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IASpE,OAAO,CAAC,OAAO;YAmBD,UAAU;YAqDV,QAAQ;YAqBR,WAAW;IA6CzB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM;CAcrE;AAED,wBAAgB,SAAS,IAAI,GAAG,CAAC,aAAa,CAAC,CAE9C"}
package/dist/cjs/app.js CHANGED
@@ -66,13 +66,19 @@ function compilePath(path) {
66
66
  class App {
67
67
  _meta;
68
68
  _metaProviders = [];
69
+ _middlewares = [];
69
70
  _routes = new Map();
70
71
  _responseMaker = new response_1.ResponseMaker();
71
72
  constructor(meta) {
72
73
  this._meta = meta;
73
74
  }
75
+ use(middleware) {
76
+ this._middlewares.push(middleware);
77
+ return this;
78
+ }
74
79
  metaProvider(provider) {
75
80
  const app = new App(this._meta);
81
+ app._middlewares.push(...this._middlewares);
76
82
  app._metaProviders.push(...this._metaProviders);
77
83
  app._metaProviders.push(provider);
78
84
  return app;
@@ -187,19 +193,30 @@ class App {
187
193
  params: {},
188
194
  R: this._responseMaker,
189
195
  };
190
- for (const metaProvider of this._metaProviders) {
191
- const output = await metaProvider(ctx);
192
- Object.assign(ctx.meta, output);
193
- }
194
- const pathname = path.split("?")[0];
195
- const resolved = this.resolve(method, pathname);
196
- if (!resolved) {
197
- res.writeHead(404, { "Content-Type": "application/json" });
198
- res.end(JSON.stringify({ error: "Not Found" }));
199
- return;
200
- }
201
- ctx.params = resolved.params;
202
- await this.runRoute(ctx, resolved.route);
196
+ const runCore = async () => {
197
+ for (const metaProvider of this._metaProviders) {
198
+ const output = await metaProvider(ctx);
199
+ Object.assign(ctx.meta, output);
200
+ }
201
+ const pathname = path.split("?")[0];
202
+ const resolved = this.resolve(method, pathname);
203
+ if (!resolved) {
204
+ res.writeHead(404, { "Content-Type": "application/json" });
205
+ res.end(JSON.stringify({ error: "Not Found" }));
206
+ return;
207
+ }
208
+ ctx.params = resolved.params;
209
+ await this.runRoute(ctx, resolved.route);
210
+ };
211
+ const dispatch = async (i) => {
212
+ if (i < this._middlewares.length) {
213
+ await this._middlewares[i]({ req, res }, () => dispatch(i + 1));
214
+ }
215
+ else {
216
+ await runCore();
217
+ }
218
+ };
219
+ await dispatch(0);
203
220
  }
204
221
  listen(port, hostname, cb) {
205
222
  const server = node_http_1.default.createServer(async (req, res) => {
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/app.ts"],"names":[],"mappings":"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"}
@@ -5,5 +5,7 @@ export * from "./request-response";
5
5
  export * from "./route-handler";
6
6
  export * from "./route";
7
7
  export * from "./meta-provider";
8
+ export * from "./middleware";
9
+ export * from "./middlewares";
8
10
  export * from "./app";
9
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,OAAO,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,OAAO,CAAC"}
package/dist/cjs/index.js CHANGED
@@ -21,5 +21,7 @@ __exportStar(require("./request-response"), exports);
21
21
  __exportStar(require("./route-handler"), exports);
22
22
  __exportStar(require("./route"), exports);
23
23
  __exportStar(require("./meta-provider"), exports);
24
+ __exportStar(require("./middleware"), exports);
25
+ __exportStar(require("./middlewares"), exports);
24
26
  __exportStar(require("./app"), exports);
25
27
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,mDAAiC;AACjC,6CAA2B;AAC3B,qDAAmC;AACnC,kDAAgC;AAChC,0CAAwB;AACxB,kDAAgC;AAChC,wCAAsB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,mDAAiC;AACjC,6CAA2B;AAC3B,qDAAmC;AACnC,kDAAgC;AAChC,0CAAwB;AACxB,kDAAgC;AAChC,+CAA6B;AAC7B,gDAA8B;AAC9B,wCAAsB"}
@@ -0,0 +1,8 @@
1
+ import { Request, Response } from "./request-response";
2
+ export type MiddlewareContext = {
3
+ req: Request;
4
+ res: Response;
5
+ };
6
+ export type MiddlewareNext = () => Promise<void>;
7
+ export type Middleware = (ctx: MiddlewareContext, next: MiddlewareNext) => Promise<void> | void;
8
+ //# sourceMappingURL=middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,EAAE,OAAO,CAAC;IACb,GAAG,EAAE,QAAQ,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AAEjD,MAAM,MAAM,UAAU,GAAG,CACvB,GAAG,EAAE,iBAAiB,EACtB,IAAI,EAAE,cAAc,KACjB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/middleware.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ import { RequestMethod } from "../request-method";
2
+ import { Middleware } from "../middleware";
3
+ export interface CorsOptions {
4
+ origin?: string | string[] | ((origin: string) => boolean);
5
+ methods?: RequestMethod[];
6
+ allowedHeaders?: string[];
7
+ exposedHeaders?: string[];
8
+ credentials?: boolean;
9
+ maxAge?: number;
10
+ }
11
+ export declare const cors: (options?: CorsOptions) => Middleware;
12
+ //# sourceMappingURL=cors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cors.d.ts","sourceRoot":"","sources":["../../../src/middlewares/cors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC;IAC3D,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAQD,eAAO,MAAM,IAAI,GAAI,UAAS,WAAgB,KAAG,UAsDhD,CAAC"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cors = void 0;
4
+ const defaults = {
5
+ origin: "*",
6
+ methods: ["GET", "POST", "PUT", "DELETE", "PATCH"],
7
+ allowedHeaders: ["Content-Type", "Authorization"],
8
+ };
9
+ const cors = (options = {}) => {
10
+ const config = { ...defaults, ...options };
11
+ return async (ctx, next) => {
12
+ const origin = ctx.req.headers["origin"];
13
+ let allowedOrigin = false;
14
+ if (!origin) {
15
+ allowedOrigin = "*";
16
+ }
17
+ else if (config.origin === "*") {
18
+ allowedOrigin = "*";
19
+ }
20
+ else if (typeof config.origin === "string") {
21
+ allowedOrigin = origin === config.origin ? origin : false;
22
+ }
23
+ else if (Array.isArray(config.origin)) {
24
+ allowedOrigin = config.origin.includes(origin) ? origin : false;
25
+ }
26
+ else if (typeof config.origin === "function") {
27
+ allowedOrigin = config.origin(origin) ? origin : false;
28
+ }
29
+ if (allowedOrigin) {
30
+ ctx.res.setHeader("Access-Control-Allow-Origin", allowedOrigin);
31
+ }
32
+ if (config.methods) {
33
+ ctx.res.setHeader("Access-Control-Allow-Methods", config.methods.join(", "));
34
+ }
35
+ if (config.allowedHeaders) {
36
+ ctx.res.setHeader("Access-Control-Allow-Headers", config.allowedHeaders.join(", "));
37
+ }
38
+ if (config.exposedHeaders) {
39
+ ctx.res.setHeader("Access-Control-Expose-Headers", config.exposedHeaders.join(", "));
40
+ }
41
+ if (config.credentials) {
42
+ ctx.res.setHeader("Access-Control-Allow-Credentials", "true");
43
+ }
44
+ if (config.maxAge != null) {
45
+ ctx.res.setHeader("Access-Control-Max-Age", String(config.maxAge));
46
+ }
47
+ if (ctx.req.method === "OPTIONS") {
48
+ ctx.res.writeHead(204);
49
+ ctx.res.end();
50
+ return;
51
+ }
52
+ await next();
53
+ };
54
+ };
55
+ exports.cors = cors;
56
+ //# sourceMappingURL=cors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cors.js","sourceRoot":"","sources":["../../../src/middlewares/cors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from "./cors";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/middlewares/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./cors"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/middlewares/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB"}
package/dist/esm/app.d.ts CHANGED
@@ -5,12 +5,15 @@ import { RequestMethod } from "./request-method";
5
5
  import { Route, RouteWithoutArgs } from "./route";
6
6
  import { RouteHandler } from "./route-handler";
7
7
  import http from "node:http";
8
+ import { Middleware } from "./middleware";
8
9
  export declare class App<Meta extends UnknownRecord = UnknownRecord> {
9
10
  private _meta;
10
11
  private _metaProviders;
12
+ private _middlewares;
11
13
  private _routes;
12
14
  private _responseMaker;
13
15
  constructor(meta: Meta);
16
+ use(middleware: Middleware): this;
14
17
  metaProvider<NextMeta extends UnknownRecord>(provider: MetaProvider<NextMeta, Meta>): App<Meta & NextMeta>;
15
18
  route<Method extends RequestMethod, Path extends string>(route: RouteWithoutArgs<Meta, Method, Path>): this;
16
19
  route<Args extends ShapeMapping<any>, Method extends RequestMethod, Path extends string>(route: Route<Meta, Args, Method, Path>): this;
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAoB,MAAM,UAAU,CAAC;AAC1D,OAAO,EAA8B,aAAa,EAAE,MAAM,UAAU,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EACL,YAAY,EAGb,MAAM,iBAAiB,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAkE7B,qBAAa,GAAG,CAAC,IAAI,SAAS,aAAa,GAAG,aAAa;IACzD,OAAO,CAAC,KAAK,CAAO;IACpB,OAAO,CAAC,cAAc,CAAqD;IAC3E,OAAO,CAAC,OAAO,CAAkD;IACjE,OAAO,CAAC,cAAc,CAAsC;gBAEhD,IAAI,EAAE,IAAI;IAItB,YAAY,CAAC,QAAQ,SAAS,aAAa,EACzC,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,GACrC,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC;IAOvB,KAAK,CAAC,MAAM,SAAS,aAAa,EAAE,IAAI,SAAS,MAAM,EACrD,KAAK,EAAE,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,GAC1C,IAAI;IACP,KAAK,CACH,IAAI,SAAS,YAAY,CAAC,GAAG,CAAC,EAC9B,MAAM,SAAS,aAAa,EAC5B,IAAI,SAAS,MAAM,EACnB,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI;IAU/C,GAAG,CACD,IAAI,SAAS,MAAM,EACnB,IAAI,SAAS,YAAY,CAAC,GAAG,CAAC,EAC9B,OAAO,SAAS,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,EACxC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,SAAS,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IASpE,OAAO,CAAC,OAAO;YAmBD,UAAU;YAqDV,QAAQ;YAqBR,WAAW;IAiCzB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM;CAcrE;AAED,wBAAgB,SAAS,IAAI,GAAG,CAAC,aAAa,CAAC,CAE9C"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAY,MAAM,UAAU,CAAC;AAClD,OAAO,EAA8B,aAAa,EAAE,MAAM,UAAU,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EACL,YAAY,EAGb,MAAM,iBAAiB,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAI7B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AA+D1C,qBAAa,GAAG,CAAC,IAAI,SAAS,aAAa,GAAG,aAAa;IACzD,OAAO,CAAC,KAAK,CAAO;IACpB,OAAO,CAAC,cAAc,CAAqD;IAC3E,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,OAAO,CAAkD;IACjE,OAAO,CAAC,cAAc,CAAsC;gBAEhD,IAAI,EAAE,IAAI;IAItB,GAAG,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAKjC,YAAY,CAAC,QAAQ,SAAS,aAAa,EACzC,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,GACrC,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC;IAQvB,KAAK,CAAC,MAAM,SAAS,aAAa,EAAE,IAAI,SAAS,MAAM,EACrD,KAAK,EAAE,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,GAC1C,IAAI;IACP,KAAK,CACH,IAAI,SAAS,YAAY,CAAC,GAAG,CAAC,EAC9B,MAAM,SAAS,aAAa,EAC5B,IAAI,SAAS,MAAM,EACnB,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI;IAU/C,GAAG,CACD,IAAI,SAAS,MAAM,EACnB,IAAI,SAAS,YAAY,CAAC,GAAG,CAAC,EAC9B,OAAO,SAAS,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,EACxC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,SAAS,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IASpE,OAAO,CAAC,OAAO;YAmBD,UAAU;YAqDV,QAAQ;YAqBR,WAAW;IA6CzB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM;CAcrE;AAED,wBAAgB,SAAS,IAAI,GAAG,CAAC,aAAa,CAAC,CAE9C"}
package/dist/esm/app.js CHANGED
@@ -66,13 +66,19 @@ function compilePath(path) {
66
66
  class App {
67
67
  _meta;
68
68
  _metaProviders = [];
69
+ _middlewares = [];
69
70
  _routes = new Map();
70
71
  _responseMaker = new response_1.ResponseMaker();
71
72
  constructor(meta) {
72
73
  this._meta = meta;
73
74
  }
75
+ use(middleware) {
76
+ this._middlewares.push(middleware);
77
+ return this;
78
+ }
74
79
  metaProvider(provider) {
75
80
  const app = new App(this._meta);
81
+ app._middlewares.push(...this._middlewares);
76
82
  app._metaProviders.push(...this._metaProviders);
77
83
  app._metaProviders.push(provider);
78
84
  return app;
@@ -187,19 +193,30 @@ class App {
187
193
  params: {},
188
194
  R: this._responseMaker,
189
195
  };
190
- for (const metaProvider of this._metaProviders) {
191
- const output = await metaProvider(ctx);
192
- Object.assign(ctx.meta, output);
193
- }
194
- const pathname = path.split("?")[0];
195
- const resolved = this.resolve(method, pathname);
196
- if (!resolved) {
197
- res.writeHead(404, { "Content-Type": "application/json" });
198
- res.end(JSON.stringify({ error: "Not Found" }));
199
- return;
200
- }
201
- ctx.params = resolved.params;
202
- await this.runRoute(ctx, resolved.route);
196
+ const runCore = async () => {
197
+ for (const metaProvider of this._metaProviders) {
198
+ const output = await metaProvider(ctx);
199
+ Object.assign(ctx.meta, output);
200
+ }
201
+ const pathname = path.split("?")[0];
202
+ const resolved = this.resolve(method, pathname);
203
+ if (!resolved) {
204
+ res.writeHead(404, { "Content-Type": "application/json" });
205
+ res.end(JSON.stringify({ error: "Not Found" }));
206
+ return;
207
+ }
208
+ ctx.params = resolved.params;
209
+ await this.runRoute(ctx, resolved.route);
210
+ };
211
+ const dispatch = async (i) => {
212
+ if (i < this._middlewares.length) {
213
+ await this._middlewares[i]({ req, res }, () => dispatch(i + 1));
214
+ }
215
+ else {
216
+ await runCore();
217
+ }
218
+ };
219
+ await dispatch(0);
203
220
  }
204
221
  listen(port, hostname, cb) {
205
222
  const server = node_http_1.default.createServer(async (req, res) => {
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/app.ts"],"names":[],"mappings":"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"}
@@ -5,5 +5,7 @@ export * from "./request-response";
5
5
  export * from "./route-handler";
6
6
  export * from "./route";
7
7
  export * from "./meta-provider";
8
+ export * from "./middleware";
9
+ export * from "./middlewares";
8
10
  export * from "./app";
9
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,OAAO,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,OAAO,CAAC"}
package/dist/esm/index.js CHANGED
@@ -21,5 +21,7 @@ __exportStar(require("./request-response"), exports);
21
21
  __exportStar(require("./route-handler"), exports);
22
22
  __exportStar(require("./route"), exports);
23
23
  __exportStar(require("./meta-provider"), exports);
24
+ __exportStar(require("./middleware"), exports);
25
+ __exportStar(require("./middlewares"), exports);
24
26
  __exportStar(require("./app"), exports);
25
27
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,mDAAiC;AACjC,6CAA2B;AAC3B,qDAAmC;AACnC,kDAAgC;AAChC,0CAAwB;AACxB,kDAAgC;AAChC,wCAAsB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,mDAAiC;AACjC,6CAA2B;AAC3B,qDAAmC;AACnC,kDAAgC;AAChC,0CAAwB;AACxB,kDAAgC;AAChC,+CAA6B;AAC7B,gDAA8B;AAC9B,wCAAsB"}
@@ -0,0 +1,8 @@
1
+ import { Request, Response } from "./request-response";
2
+ export type MiddlewareContext = {
3
+ req: Request;
4
+ res: Response;
5
+ };
6
+ export type MiddlewareNext = () => Promise<void>;
7
+ export type Middleware = (ctx: MiddlewareContext, next: MiddlewareNext) => Promise<void> | void;
8
+ //# sourceMappingURL=middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,EAAE,OAAO,CAAC;IACb,GAAG,EAAE,QAAQ,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AAEjD,MAAM,MAAM,UAAU,GAAG,CACvB,GAAG,EAAE,iBAAiB,EACtB,IAAI,EAAE,cAAc,KACjB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/middleware.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ import { RequestMethod } from "../request-method";
2
+ import { Middleware } from "../middleware";
3
+ export interface CorsOptions {
4
+ origin?: string | string[] | ((origin: string) => boolean);
5
+ methods?: RequestMethod[];
6
+ allowedHeaders?: string[];
7
+ exposedHeaders?: string[];
8
+ credentials?: boolean;
9
+ maxAge?: number;
10
+ }
11
+ export declare const cors: (options?: CorsOptions) => Middleware;
12
+ //# sourceMappingURL=cors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cors.d.ts","sourceRoot":"","sources":["../../../src/middlewares/cors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC;IAC3D,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAQD,eAAO,MAAM,IAAI,GAAI,UAAS,WAAgB,KAAG,UAsDhD,CAAC"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cors = void 0;
4
+ const defaults = {
5
+ origin: "*",
6
+ methods: ["GET", "POST", "PUT", "DELETE", "PATCH"],
7
+ allowedHeaders: ["Content-Type", "Authorization"],
8
+ };
9
+ const cors = (options = {}) => {
10
+ const config = { ...defaults, ...options };
11
+ return async (ctx, next) => {
12
+ const origin = ctx.req.headers["origin"];
13
+ let allowedOrigin = false;
14
+ if (!origin) {
15
+ allowedOrigin = "*";
16
+ }
17
+ else if (config.origin === "*") {
18
+ allowedOrigin = "*";
19
+ }
20
+ else if (typeof config.origin === "string") {
21
+ allowedOrigin = origin === config.origin ? origin : false;
22
+ }
23
+ else if (Array.isArray(config.origin)) {
24
+ allowedOrigin = config.origin.includes(origin) ? origin : false;
25
+ }
26
+ else if (typeof config.origin === "function") {
27
+ allowedOrigin = config.origin(origin) ? origin : false;
28
+ }
29
+ if (allowedOrigin) {
30
+ ctx.res.setHeader("Access-Control-Allow-Origin", allowedOrigin);
31
+ }
32
+ if (config.methods) {
33
+ ctx.res.setHeader("Access-Control-Allow-Methods", config.methods.join(", "));
34
+ }
35
+ if (config.allowedHeaders) {
36
+ ctx.res.setHeader("Access-Control-Allow-Headers", config.allowedHeaders.join(", "));
37
+ }
38
+ if (config.exposedHeaders) {
39
+ ctx.res.setHeader("Access-Control-Expose-Headers", config.exposedHeaders.join(", "));
40
+ }
41
+ if (config.credentials) {
42
+ ctx.res.setHeader("Access-Control-Allow-Credentials", "true");
43
+ }
44
+ if (config.maxAge != null) {
45
+ ctx.res.setHeader("Access-Control-Max-Age", String(config.maxAge));
46
+ }
47
+ if (ctx.req.method === "OPTIONS") {
48
+ ctx.res.writeHead(204);
49
+ ctx.res.end();
50
+ return;
51
+ }
52
+ await next();
53
+ };
54
+ };
55
+ exports.cors = cors;
56
+ //# sourceMappingURL=cors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cors.js","sourceRoot":"","sources":["../../../src/middlewares/cors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from "./cors";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/middlewares/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./cors"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/middlewares/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@derivesome/server",
3
- "version": "1.0.14",
3
+ "version": "1.0.16",
4
4
  "description": "",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "types": "./dist/cjs/index.d.ts",
@@ -14,7 +14,7 @@
14
14
  ],
15
15
  "dependencies": {
16
16
  "shapedef": "^1.0.28",
17
- "@derivesome/core": "1.0.19"
17
+ "@derivesome/core": "1.0.21"
18
18
  },
19
19
  "devDependencies": {
20
20
  "@types/node": "^25.2.1",
@@ -1,9 +1,5 @@
1
1
  (undo-tree-save-format-version . 1)
2
- "5fe9b8a46c4a3737382dbadb2226a13f936f246a"
3
- [nil nil nil nil (27048 36545 940145 891000) 0 nil]
4
- ([nil nil ((7921 . 7936) (7917 . 7921) (#(" " 0 4 (part-side typescript)) . 7916) (7916 . 7920) (7916 . 7917) (t 27048 36316 862502 412000)) nil (27048 36545 940145 475000) 0 nil])
5
- ([nil nil ((#(" server.listen()
6
- " 0 11 (part-side typescript) 11 17 (face web-mode-function-call-face part-side typescript) 17 19 (part-side typescript) 19 20 (part-side typescript)) . 7917) (undo-tree-id0 . -11) (undo-tree-id1 . -17) (undo-tree-id2 . -17) (undo-tree-id3 . 1) (undo-tree-id4 . -18) (undo-tree-id5 . 2) (undo-tree-id6 . -17) (undo-tree-id7 . -17) (undo-tree-id8 . -19) 7934) nil (27048 36545 940144 668000) 0 nil])
7
- ([nil nil ((7557 . 7575)) nil (27048 36545 940126 104000) 0 nil])
8
- ([nil current ((7957 . 7967)) nil (27048 36545 940123 615000) 0 nil])
2
+ "e2fa87600f88b8febfacf4d46eaaf7184a0b13cc"
3
+ [nil nil nil nil (27052 15623 582674 312000) 0 nil]
4
+ ([nil current ((#("shapes, " 0 8 (part-side typescript)) . 24) (undo-tree-id0 . -8) (undo-tree-id1 . -8) (undo-tree-id2 . -8) (undo-tree-id3 . -8) (undo-tree-id4 . -8) (undo-tree-id5 . -8) (undo-tree-id6 . -8) (undo-tree-id7 . -8) (undo-tree-id8 . -8) (undo-tree-id9 . -8) (undo-tree-id10 . -8) (undo-tree-id11 . -8) (undo-tree-id12 . -8) (undo-tree-id13 . -8) (undo-tree-id14 . -8) (undo-tree-id15 . -7) (undo-tree-id16 . -7) (undo-tree-id17 . -7) (undo-tree-id18 . -7) (undo-tree-id19 . -7) (undo-tree-id20 . -7) (undo-tree-id21 . -7) (undo-tree-id22 . -7) (undo-tree-id23 . -7) (undo-tree-id24 . -7) (undo-tree-id25 . -7) (undo-tree-id26 . -7) (undo-tree-id27 . -7) (undo-tree-id28 . -7) (undo-tree-id29 . -7) (undo-tree-id30 . -7) (undo-tree-id31 . -7) (undo-tree-id32 . -7) (undo-tree-id33 . -7) (undo-tree-id34 . -7) (undo-tree-id35 . -7) (undo-tree-id36 . -7) (undo-tree-id37 . -7) (undo-tree-id38 . -7) (undo-tree-id39 . -7) (undo-tree-id40 . -7) (undo-tree-id41 . -7) (undo-tree-id42 . -7) (undo-tree-id43 . -7) (undo-tree-id44 . -7) (undo-tree-id45 . -7) (undo-tree-id46 . -7) (undo-tree-id47 . -7) (undo-tree-id48 . -7) (undo-tree-id49 . -7) (undo-tree-id50 . -7) (undo-tree-id51 . -7) (undo-tree-id52 . -7) (undo-tree-id53 . -7) (undo-tree-id54 . -7) (undo-tree-id55 . -7) (undo-tree-id56 . -7) (undo-tree-id57 . -7) (undo-tree-id58 . -7) (undo-tree-id59 . -7) (undo-tree-id60 . -7) (undo-tree-id61 . -8) (undo-tree-id62 . -8) (undo-tree-id63 . -7) (t 27052 15542 350095 8000)) nil (27052 15623 582670 735000) 0 nil])
9
5
  nil
package/src/app.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ShapeMapping, shapes, validate } from "shapedef";
1
+ import { ShapeMapping, validate } from "shapedef";
2
2
  import { isPlainObject, LooseRecord, UnknownRecord } from "./common";
3
3
  import { MetaProvider } from "./meta-provider";
4
4
  import { RequestMethod } from "./request-method";
@@ -13,6 +13,7 @@ import http from "node:http";
13
13
  import fs from "node:fs";
14
14
  import path from "node:path";
15
15
  import { ResponseBuilder, ResponseMaker, ResponseFile } from "./response";
16
+ import { Middleware } from "./middleware";
16
17
 
17
18
  const MIME_TYPES: Record<string, string> = {
18
19
  ".html": "text/html",
@@ -78,6 +79,7 @@ function compilePath(path: string): { pattern: RegExp; paramNames: string[] } {
78
79
  export class App<Meta extends UnknownRecord = UnknownRecord> {
79
80
  private _meta: Meta;
80
81
  private _metaProviders: Array<MetaProvider<LooseRecord, LooseRecord>> = [];
82
+ private _middlewares: Middleware[] = [];
81
83
  private _routes: Map<RequestMethod, CompiledRoute[]> = new Map();
82
84
  private _responseMaker: ResponseMaker = new ResponseMaker();
83
85
 
@@ -85,10 +87,16 @@ export class App<Meta extends UnknownRecord = UnknownRecord> {
85
87
  this._meta = meta;
86
88
  }
87
89
 
90
+ use(middleware: Middleware): this {
91
+ this._middlewares.push(middleware);
92
+ return this;
93
+ }
94
+
88
95
  metaProvider<NextMeta extends UnknownRecord>(
89
96
  provider: MetaProvider<NextMeta, Meta>,
90
97
  ): App<Meta & NextMeta> {
91
98
  const app = new App<Meta & NextMeta>(this._meta as Meta & NextMeta);
99
+ app._middlewares.push(...this._middlewares);
92
100
  app._metaProviders.push(...this._metaProviders);
93
101
  app._metaProviders.push(provider as MetaProvider<LooseRecord, LooseRecord>);
94
102
  return app;
@@ -232,22 +240,34 @@ export class App<Meta extends UnknownRecord = UnknownRecord> {
232
240
  R: this._responseMaker,
233
241
  };
234
242
 
235
- for (const metaProvider of this._metaProviders) {
236
- const output = await metaProvider(ctx);
237
- Object.assign(ctx.meta, output);
238
- }
243
+ const runCore = async () => {
244
+ for (const metaProvider of this._metaProviders) {
245
+ const output = await metaProvider(ctx);
246
+ Object.assign(ctx.meta, output);
247
+ }
239
248
 
240
- const pathname = path.split("?")[0]!;
241
- const resolved = this.resolve(method, pathname);
249
+ const pathname = path.split("?")[0]!;
250
+ const resolved = this.resolve(method, pathname);
242
251
 
243
- if (!resolved) {
244
- res.writeHead(404, { "Content-Type": "application/json" });
245
- res.end(JSON.stringify({ error: "Not Found" }));
246
- return;
247
- }
252
+ if (!resolved) {
253
+ res.writeHead(404, { "Content-Type": "application/json" });
254
+ res.end(JSON.stringify({ error: "Not Found" }));
255
+ return;
256
+ }
257
+
258
+ ctx.params = resolved.params;
259
+ await this.runRoute(ctx, resolved.route);
260
+ };
261
+
262
+ const dispatch = async (i: number): Promise<void> => {
263
+ if (i < this._middlewares.length) {
264
+ await this._middlewares[i]!({ req, res }, () => dispatch(i + 1));
265
+ } else {
266
+ await runCore();
267
+ }
268
+ };
248
269
 
249
- ctx.params = resolved.params;
250
- await this.runRoute(ctx, resolved.route);
270
+ await dispatch(0);
251
271
  }
252
272
 
253
273
  listen(port: number, hostname: string, cb?: () => void): http.Server {
package/src/app.ts~ CHANGED
@@ -13,6 +13,7 @@ import http from "node:http";
13
13
  import fs from "node:fs";
14
14
  import path from "node:path";
15
15
  import { ResponseBuilder, ResponseMaker, ResponseFile } from "./response";
16
+ import { Middleware } from "./middleware";
16
17
 
17
18
  const MIME_TYPES: Record<string, string> = {
18
19
  ".html": "text/html",
@@ -78,6 +79,7 @@ function compilePath(path: string): { pattern: RegExp; paramNames: string[] } {
78
79
  export class App<Meta extends UnknownRecord = UnknownRecord> {
79
80
  private _meta: Meta;
80
81
  private _metaProviders: Array<MetaProvider<LooseRecord, LooseRecord>> = [];
82
+ private _middlewares: Middleware[] = [];
81
83
  private _routes: Map<RequestMethod, CompiledRoute[]> = new Map();
82
84
  private _responseMaker: ResponseMaker = new ResponseMaker();
83
85
 
@@ -85,10 +87,16 @@ export class App<Meta extends UnknownRecord = UnknownRecord> {
85
87
  this._meta = meta;
86
88
  }
87
89
 
90
+ use(middleware: Middleware): this {
91
+ this._middlewares.push(middleware);
92
+ return this;
93
+ }
94
+
88
95
  metaProvider<NextMeta extends UnknownRecord>(
89
96
  provider: MetaProvider<NextMeta, Meta>,
90
97
  ): App<Meta & NextMeta> {
91
98
  const app = new App<Meta & NextMeta>(this._meta as Meta & NextMeta);
99
+ app._middlewares.push(...this._middlewares);
92
100
  app._metaProviders.push(...this._metaProviders);
93
101
  app._metaProviders.push(provider as MetaProvider<LooseRecord, LooseRecord>);
94
102
  return app;
@@ -223,7 +231,6 @@ export class App<Meta extends UnknownRecord = UnknownRecord> {
223
231
  method: RequestMethod,
224
232
  path: string,
225
233
  ) {
226
- console.log(method, path);
227
234
  const ctx: RouteHandlerContext<Request, Response, any, any, any> = {
228
235
  req,
229
236
  res,
@@ -233,22 +240,34 @@ export class App<Meta extends UnknownRecord = UnknownRecord> {
233
240
  R: this._responseMaker,
234
241
  };
235
242
 
236
- for (const metaProvider of this._metaProviders) {
237
- const output = await metaProvider(ctx);
238
- Object.assign(ctx.meta, output);
239
- }
243
+ const runCore = async () => {
244
+ for (const metaProvider of this._metaProviders) {
245
+ const output = await metaProvider(ctx);
246
+ Object.assign(ctx.meta, output);
247
+ }
240
248
 
241
- const pathname = path.split("?")[0]!;
242
- const resolved = this.resolve(method, pathname);
249
+ const pathname = path.split("?")[0]!;
250
+ const resolved = this.resolve(method, pathname);
243
251
 
244
- if (!resolved) {
245
- res.writeHead(404, { "Content-Type": "application/json" });
246
- res.end(JSON.stringify({ error: "Not Found" }));
247
- return;
248
- }
252
+ if (!resolved) {
253
+ res.writeHead(404, { "Content-Type": "application/json" });
254
+ res.end(JSON.stringify({ error: "Not Found" }));
255
+ return;
256
+ }
257
+
258
+ ctx.params = resolved.params;
259
+ await this.runRoute(ctx, resolved.route);
260
+ };
261
+
262
+ const dispatch = async (i: number): Promise<void> => {
263
+ if (i < this._middlewares.length) {
264
+ await this._middlewares[i]!({ req, res }, () => dispatch(i + 1));
265
+ } else {
266
+ await runCore();
267
+ }
268
+ };
249
269
 
250
- ctx.params = resolved.params;
251
- await this.runRoute(ctx, resolved.route);
270
+ await dispatch(0);
252
271
  }
253
272
 
254
273
  listen(port: number, hostname: string, cb?: () => void): http.Server {
package/src/index.ts CHANGED
@@ -5,4 +5,6 @@ export * from "./request-response";
5
5
  export * from "./route-handler";
6
6
  export * from "./route";
7
7
  export * from "./meta-provider";
8
+ export * from "./middleware";
9
+ export * from "./middlewares";
8
10
  export * from "./app";
@@ -0,0 +1,13 @@
1
+ import { Request, Response } from "./request-response";
2
+
3
+ export type MiddlewareContext = {
4
+ req: Request;
5
+ res: Response;
6
+ };
7
+
8
+ export type MiddlewareNext = () => Promise<void>;
9
+
10
+ export type Middleware = (
11
+ ctx: MiddlewareContext,
12
+ next: MiddlewareNext,
13
+ ) => Promise<void> | void;
@@ -0,0 +1,30 @@
1
+ (undo-tree-save-format-version . 1)
2
+ "0995dbd8520ffdcbdfcc1c4f910996c2f0ef5064"
3
+ [nil nil nil nil (27052 15238 907697 888000) 0 nil]
4
+ ([nil nil ((73 . 74) (74 . 86) (#("M" 0 1 (part-side typescript)) . 74) (74 . 75) (#("MetaProvider" 0 12 (part-side typescript)) . -74) (74 . 86) (#("Meta" 0 4 (part-side typescript)) . -74) (undo-tree-id203 . -4) (undo-tree-id204 . -4) (undo-tree-id205 . -4) (undo-tree-id206 . -4) 78 (74 . 78) (73 . 75) (#("}" 0 1 (part-side typescript)) . -78) (78 . 79) (#("}" 0 1 (part-side typescript)) . -78) (78 . 79) (73 . 79) (#(")" 0 1 (part-side typescript)) . -72) (72 . 73) (#(")" 0 1 (part-side typescript)) . -72) (72 . 73) (71 . 73) (68 . 71) (#(":" 0 1 (part-side typescript)) . -68) (undo-tree-id207 . -1) (undo-tree-id208 . -1) (undo-tree-id209 . -1) (undo-tree-id210 . -1) (undo-tree-id211 . -1) (#(" " 0 1 (part-side typescript)) . -69) (undo-tree-id212 . -1) (undo-tree-id213 . -1) (undo-tree-id214 . -1) (undo-tree-id215 . -1) (undo-tree-id216 . -1) (#("M" 0 1 (part-side typescript)) . -70) (undo-tree-id217 . -1) (undo-tree-id218 . -1) (#("e" 0 1 (part-side typescript)) . -71) (undo-tree-id219 . -1) (undo-tree-id220 . -1) (#("t" 0 1 (part-side typescript)) . -72) (undo-tree-id221 . -1) (undo-tree-id222 . -1) (#("a" 0 1 (part-side typescript)) . -73) (undo-tree-id223 . -1) (undo-tree-id224 . -1) (#("P" 0 1 (part-side typescript)) . -74) (undo-tree-id225 . -1) (undo-tree-id226 . -1) (#("r" 0 1 (part-side typescript)) . -75) (undo-tree-id227 . -1) (undo-tree-id228 . -1) (#("o" 0 1 (part-side typescript)) . -76) (undo-tree-id229 . -1) (undo-tree-id230 . -1) (#("v" 0 1 (part-side typescript)) . -77) (undo-tree-id231 . -1) (undo-tree-id232 . -1) (#("i" 0 1 (part-side typescript)) . -78) (undo-tree-id233 . -1) (undo-tree-id234 . -1) (#("d" 0 1 (part-side typescript)) . -79) (undo-tree-id235 . -1) (undo-tree-id236 . -1) (#("e" 0 1 (part-side typescript)) . -80) (undo-tree-id237 . -1) (undo-tree-id238 . -1) (#("r" 0 1 (part-side typescript)) . -81) (undo-tree-id239 . -1) (undo-tree-id240 . -1) 82 (1 . 51) (20 . 20) (20 . 32) (#("Meta" 0 4 (part-side typescript)) . 20) (20 . 24) (#("MetaProvider" 0 12 (part-side typescript)) . -20) (20 . 32) (#("MetaP" 0 5 (part-side typescript)) . -20) (undo-tree-id241 . -5) (undo-tree-id242 . -5) (undo-tree-id243 . -5) (undo-tree-id244 . -5) 25 (22 . 25) (1 . 22) (t 27052 15011 195524 861000)) nil (27052 15238 907696 111000) 0 nil])
5
+ ([nil nil ((71 . 73)) nil (27052 15238 907684 429000) 0 nil])
6
+ ([nil nil ((nil rear-nonsticky nil 167 . 168) (nil part-side typescript 152 . 168) (nil part-side typescript 139 . 152) (nil face web-mode-type-face 139 . 152) (nil part-side typescript 138 . 139) (nil part-side typescript 131 . 138) (nil face web-mode-keyword-face 131 . 138) (nil part-side typescript 102 . 131) (nil part-side typescript 89 . 102) (nil face web-mode-type-face 89 . 102) (nil part-side typescript 88 . 89) (nil part-side typescript 81 . 88) (nil face web-mode-keyword-face 81 . 88) (nil part-side typescript 72 . 81) (72 . 168) 71) nil (27052 15238 907684 60000) 0 nil])
7
+ ([nil nil ((#("NextMeta extends UnknownRecord = UnknownRecord" 0 9 (part-side typescript) 9 16 (face web-mode-keyword-face part-side typescript) 16 17 (part-side typescript) 17 30 (face web-mode-type-face part-side typescript) 30 46 (part-side typescript)) . 72) (undo-tree-id199 . -45) (undo-tree-id200 . -45) (undo-tree-id201 . -45) (undo-tree-id202 . -45) 117) nil (27052 15238 907683 217000) 0 nil])
8
+ ([nil nil ((#("<" 0 1 (part-side typescript)) . -149) (undo-tree-id174 . -1) 150 (#(">" 0 1 (part-side typescript)) . -162) (undo-tree-id175 . -1) 163 (1 . 44) (89 . 89) (89 . 102) (#("UnknownRecord" 0 13 (face web-mode-type-face part-side typescript)) . 89) (89 . 102) (#("UnknownRecord" 0 13 (face web-mode-type-face part-side typescript)) . -89) (undo-tree-id176 . -13) 102 (#(" " 0 1 (part-side typescript)) . -102) (undo-tree-id177 . -1) (#("=" 0 1 (part-side typescript)) . -103) (undo-tree-id178 . -1) (#(" " 0 1 (part-side typescript)) . -104) (undo-tree-id179 . -1) (#("U" 0 1 (part-side typescript)) . -105) (undo-tree-id180 . -1) (#("n" 0 1 (part-side typescript)) . -106) (undo-tree-id181 . -1) (#("k" 0 1 (part-side typescript)) . -107) (undo-tree-id182 . -1) (#("n" 0 1 (part-side typescript)) . -108) (undo-tree-id183 . -1) (#("o" 0 1 (part-side typescript)) . -109) (undo-tree-id184 . -1) (#("w" 0 1 (part-side typescript)) . -110) (undo-tree-id185 . -1) (#("n" 0 1 (part-side typescript)) . -111) (undo-tree-id186 . -1) (#("R" 0 1 (part-side typescript)) . -112) (undo-tree-id187 . -1) (#("e" 0 1 (part-side typescript)) . -113) (undo-tree-id188 . -1) (#("c" 0 1 (part-side typescript)) . -114) (undo-tree-id189 . -1) (#("o" 0 1 (part-side typescript)) . -115) (undo-tree-id190 . -1) (#("r" 0 1 (part-side typescript)) . -116) (undo-tree-id191 . -1) (#("d" 0 1 (part-side typescript rear-nonsticky t)) . -117) (undo-tree-id192 . -1) 118 (#("
9
+ " 0 1 (part-side typescript)) . -72) (undo-tree-id193 . 1) (undo-tree-id194 . -1) (#(" " 0 1 (part-side typescript)) . -73) (undo-tree-id195 . -1) (#(" " 0 1 (part-side typescript)) . -74) (undo-tree-id196 . -1) 75 (#("," 0 1 (part-side typescript)) . -72) (undo-tree-id197 . 1) (undo-tree-id198 . -1) 73) nil (27052 15238 907681 222000) 0 nil])
10
+ ([nil nil ((225 . 226) (213 . 224) (#("}" 0 1 (part-side typescript)) . -213) (213 . 214) (#("}" 0 1 (part-side typescript)) . -213) (213 . 214) (212 . 214) (#("," 0 1 (part-side typescript)) . -194) (undo-tree-id166 . -1) (undo-tree-id167 . -1) (undo-tree-id168 . -1) 195 (194 . 195) (193 . 194) (191 . 193) (190 . 192) (#("(" 0 1 (part-side typescript)) . -190) (undo-tree-id169 . -1) (#(")" 0 1 (part-side typescript)) . 191) (#("i" 0 1 (part-side typescript)) . -209) (undo-tree-id170 . -1) 210 (202 . 210) (198 . 202) (199 . 201) (#(" " 0 4 (part-side typescript)) . 198) (198 . 202) (197 . 199) (#("}" 0 1 (part-side typescript)) . -197) (197 . 198) (#("}" 0 1 (part-side typescript)) . -197) (197 . 198) (192 . 198) (#(")" 0 1 (part-side typescript)) . -191) (191 . 192) (#(")" 0 1 (part-side typescript)) . -191) (191 . 192) (183 . 192) (181 . 183) (#(" " 0 2 (part-side typescript)) . 181) (181 . 183) (180 . 182) (164 . 174) (#("}" 0 1 (part-side typescript)) . -163) (163 . 164) (#("}" 0 1 (part-side typescript)) . -163) (163 . 164) (162 . 164) (#("P" 0 1 (face web-mode-type-face part-side typescript)) . -162) (undo-tree-id171 . -1) (#("{" 0 1 (part-side typescript)) . -163) (undo-tree-id172 . -1) (#("}" 0 1 (part-side typescript)) . -164) (undo-tree-id173 . -1) 165 (#("}" 0 1 (part-side typescript)) . -164) (164 . 165) (#("}" 0 1 (part-side typescript)) . -164) (164 . 165) (162 . 165) (161 . 163)) nil (27052 15238 907672 218000) 0 nil])
11
+ ([nil nil ((#("a" 0 1 (face web-mode-function-call-face part-side typescript)) . -190) (undo-tree-id145 . -1) (undo-tree-id146 . -1) (undo-tree-id147 . -1) (undo-tree-id148 . -1) (#("s" 0 1 (face web-mode-keyword-face part-side typescript)) . -191) (undo-tree-id149 . -1) (undo-tree-id150 . -1) (undo-tree-id151 . -1) (undo-tree-id152 . -1) (#("y" 0 1 (face web-mode-function-call-face part-side typescript)) . -192) (undo-tree-id153 . -1) (undo-tree-id154 . -1) (undo-tree-id155 . -1) (undo-tree-id156 . -1) (#("n" 0 1 (face web-mode-function-call-face part-side typescript)) . -193) (undo-tree-id157 . -1) (undo-tree-id158 . -1) (undo-tree-id159 . -1) (undo-tree-id160 . -1) (#("c" 0 1 (face web-mode-keyword-face part-side typescript)) . -194) (undo-tree-id161 . -1) (undo-tree-id162 . -1) (undo-tree-id163 . -1) (undo-tree-id164 . -1) (#(" " 0 1 (part-side typescript)) . -195) (undo-tree-id165 . -1) 196 (190 . 196)) nil (27052 15238 907668 528000) 0 nil])
12
+ ([nil nil ((205 . 225) (#("c" 0 1 (part-side typescript)) . -205) (undo-tree-id97 . -1) (undo-tree-id98 . -1) (undo-tree-id99 . -1) (undo-tree-id100 . -1) (undo-tree-id101 . -1) (#("t" 0 1 (part-side typescript)) . -206) (undo-tree-id102 . -1) (undo-tree-id103 . -1) (undo-tree-id104 . -1) (undo-tree-id105 . -1) (undo-tree-id106 . -1) (#("x" 0 1 (part-side typescript)) . -207) (undo-tree-id107 . -1) (undo-tree-id108 . -1) (undo-tree-id109 . -1) (undo-tree-id110 . -1) (undo-tree-id111 . -1) (#("." 0 1 (part-side typescript)) . -208) (undo-tree-id112 . -1) (undo-tree-id113 . -1) (undo-tree-id114 . -1) (undo-tree-id115 . -1) (undo-tree-id116 . -1) (#("r" 0 1 (part-side typescript)) . -209) (undo-tree-id117 . -1) (undo-tree-id118 . -1) (undo-tree-id119 . -1) (undo-tree-id120 . -1) (undo-tree-id121 . -1) (#("e" 0 1 (part-side typescript)) . -210) (undo-tree-id122 . -1) (undo-tree-id123 . -1) (undo-tree-id124 . -1) (undo-tree-id125 . -1) (undo-tree-id126 . -1) (#("s" 0 1 (part-side typescript)) . -211) (undo-tree-id127 . -1) (undo-tree-id128 . -1) (undo-tree-id129 . -1) (undo-tree-id130 . -1) (undo-tree-id131 . -1) (#("." 0 1 (part-side typescript)) . -212) (undo-tree-id132 . -1) (undo-tree-id133 . -1) (undo-tree-id134 . -1) (undo-tree-id135 . -1) (undo-tree-id136 . -1) (#("s" 0 1 (part-side typescript)) . -213) (undo-tree-id137 . -1) (undo-tree-id138 . -1) (undo-tree-id139 . -1) (undo-tree-id140 . -1) (#("e" 0 1 (part-side typescript)) . -214) (undo-tree-id141 . -1) (undo-tree-id142 . -1) (undo-tree-id143 . -1) (undo-tree-id144 . -1) 215 (213 . 215) (205 . 213) (200 . 205)) nil (27052 15238 907662 417000) 0 nil])
13
+ ([nil nil ((94 . 101) (93 . 95)) nil (27052 15238 907649 490000) 0 nil])
14
+ ([nil nil ((nil rear-nonsticky nil 312 . 313) (nil part-side typescript 164 . 313) (nil part-side typescript 158 . 164) (nil face web-mode-variable-name-face 158 . 164) (nil part-side typescript 110 . 158) (nil part-side typescript 101 . 110) (nil face web-mode-keyword-face 101 . 110) (101 . 313) 100) nil (27052 15238 907649 175000) 0 nil])
15
+ ([nil nil ((312 . 313)) nil (27052 15238 907648 232000) 0 nil])
16
+ ([nil nil ((#("Method" 0 6 (part-side typescript)) . 199) (undo-tree-id94 . -5) (undo-tree-id95 . -5) (undo-tree-id96 . -5)) nil (27052 15238 907647 853000) 0 nil])
17
+ ([nil nil ((93 . 144) (199 . 199) (199 . 212) (#("Req" 0 3 (part-side typescript)) . 199) (199 . 202) (#("RequestMethod" 0 13 (part-side typescript)) . -199) (199 . 212) (#("RequestM" 0 8 (part-side typescript)) . -199) (undo-tree-id90 . -8) (undo-tree-id91 . -8) (undo-tree-id92 . -8) (undo-tree-id93 . -8) 207 (199 . 207)) nil (27052 15238 907507 119000) 0 nil])
18
+ ([nil nil ((372 . 373)) nil (27052 15238 907505 805000) 0 nil])
19
+ ([nil nil ((nil rear-nonsticky nil 528 . 529) (nil part-side typescript 524 . 529) (nil part-side typescript 523 . 524) (nil part-token string 523 . 524) (nil syntax-table (15) 523 . 524) (nil font-lock-face web-mode-part-string-face 523 . 524) (nil part-side typescript 510 . 523) (nil part-token string 510 . 523) (nil font-lock-face web-mode-part-string-face 510 . 523) (nil part-side typescript 509 . 510) (nil part-token string 509 . 510) (nil syntax-table (15) 509 . 510) (nil font-lock-face web-mode-part-string-face 509 . 510) (nil part-side typescript 507 . 509) (nil part-side typescript 506 . 507) (nil part-token string 506 . 507) (nil syntax-table (15) 506 . 507) (nil font-lock-face web-mode-part-string-face 506 . 507) (nil part-side typescript 494 . 506) (nil part-token string 494 . 506) (nil font-lock-face web-mode-part-string-face 494 . 506) (nil part-side typescript 493 . 494) (nil part-token string 493 . 494) (nil syntax-table (15) 493 . 494) (nil font-lock-face web-mode-part-string-face 493 . 494) (nil part-side typescript 490 . 493) (nil part-side typescript 476 . 490) (nil face web-mode-variable-name-face 476 . 490) (nil part-side typescript 471 . 476) (nil part-side typescript 470 . 471) (nil part-token string 470 . 471) (nil syntax-table (15) 470 . 471) (nil font-lock-face web-mode-part-string-face 470 . 471) (nil part-side typescript 465 . 470) (nil part-token string 465 . 470) (nil font-lock-face web-mode-part-string-face 465 . 470) (nil part-side typescript 464 . 465) (nil part-token string 464 . 465) (nil syntax-table (15) 464 . 465) (nil font-lock-face web-mode-part-string-face 464 . 465) (nil part-side typescript 462 . 464) (nil part-side typescript 461 . 462) (nil part-token string 461 . 462) (nil syntax-table (15) 461 . 462) (nil font-lock-face web-mode-part-string-face 461 . 462) (nil part-side typescript 455 . 461) (nil part-token string 455 . 461) (nil font-lock-face web-mode-part-string-face 455 . 461) (nil part-side typescript 454 . 455) (nil part-token string 454 . 455) (nil syntax-table (15) 454 . 455) (nil font-lock-face web-mode-part-string-face 454 . 455) (nil part-side typescript 452 . 454) (nil part-side typescript 451 . 452) (nil part-token string 451 . 452) (nil syntax-table (15) 451 . 452) (nil font-lock-face web-mode-part-string-face 451 . 452) (nil part-side typescript 448 . 451) (nil part-token string 448 . 451) (nil font-lock-face web-mode-part-string-face 448 . 451) (nil part-side typescript 447 . 448) (nil part-token string 447 . 448) (nil syntax-table (15) 447 . 448) (nil font-lock-face web-mode-part-string-face 447 . 448) (nil part-side typescript 445 . 447) (nil part-side typescript 444 . 445) (nil part-token string 444 . 445) (nil syntax-table (15) 444 . 445) (nil font-lock-face web-mode-part-string-face 444 . 445) (nil part-side typescript 440 . 444) (nil part-token string 440 . 444) (nil font-lock-face web-mode-part-string-face 440 . 444) (nil part-side typescript 439 . 440) (nil part-token string 439 . 440) (nil syntax-table (15) 439 . 440) (nil font-lock-face web-mode-part-string-face 439 . 440) (nil part-side typescript 437 . 439) (nil part-side typescript 436 . 437) (nil part-token string 436 . 437) (nil syntax-table (15) 436 . 437) (nil font-lock-face web-mode-part-string-face 436 . 437) (nil part-side typescript 433 . 436) (nil part-token string 433 . 436) (nil font-lock-face web-mode-part-string-face 433 . 436) (nil part-side typescript 432 . 433) (nil part-token string 432 . 433) (nil syntax-table (15) 432 . 433) (nil font-lock-face web-mode-part-string-face 432 . 433) (nil part-side typescript 429 . 432) (nil part-side typescript 422 . 429) (nil face web-mode-variable-name-face 422 . 429) (nil part-side typescript 418 . 422) (nil part-side typescript 417 . 418) (nil part-token string 417 . 418) (nil syntax-table (15) 417 . 418) (nil font-lock-face web-mode-part-string-face 417 . 418) (nil part-side typescript 416 . 417) (nil part-token string 416 . 417) (nil font-lock-face web-mode-part-string-face 416 . 417) (nil part-side typescript 415 . 416) (nil part-token string 415 . 416) (nil syntax-table (15) 415 . 416) (nil font-lock-face web-mode-part-string-face 415 . 416) (nil part-side typescript 413 . 415) (nil part-side typescript 407 . 413) (nil face web-mode-variable-name-face 407 . 413) (nil part-side typescript 387 . 407) (nil part-side typescript 379 . 387) (nil face web-mode-variable-name-face 379 . 387) (nil part-side typescript 378 . 379) (nil part-side typescript 373 . 378) (nil face web-mode-keyword-face 373 . 378) (373 . 529)) nil (27052 15238 907504 555000) 0 nil])
20
+ ([nil nil ((#("}" 0 1 (part-side typescript)) . -608) (608 . 609) (#("}" 0 1 (part-side typescript)) . -608) (608 . 609) (604 . 609) (593 . 604) (#("Cors" 0 4 (part-side typescript)) . 593) (593 . 597) (#("CorsOptions" 0 11 (part-side typescript)) . -593) (593 . 604) (#("CorsO" 0 5 (part-side typescript)) . -593) (undo-tree-id86 . -5) (undo-tree-id87 . -5) (undo-tree-id88 . -5) (undo-tree-id89 . -5) 598 (584 . 598)) nil (27052 15238 907500 900000) 0 nil])
21
+ ([nil nil ((642 . 645)) nil (27052 15238 907499 466000) 0 nil])
22
+ ([nil nil ((nil rear-nonsticky nil 684 . 685) (nil part-side typescript 657 . 685) (nil part-side typescript 651 . 657) (nil face web-mode-variable-name-face 651 . 657) (nil part-side typescript 650 . 651) (nil part-side typescript 645 . 650) (nil face web-mode-keyword-face 645 . 650) (645 . 685) 644) nil (27052 15238 907499 223000) 0 nil])
23
+ ([nil nil ((680 . 685) (#("t" 0 1 (part-side typescript)) . -680) (undo-tree-id84 . -1) (#("s" 0 1 (part-side typescript)) . -681) (undo-tree-id85 . -1) 682) nil (27052 15238 907498 684000) 0 nil])
24
+ ([nil nil ((#("<PrevMeta extends UnknownRecord>" 0 1 (part-side typescript) 1 10 (part-side typescript) 10 17 (face web-mode-keyword-face part-side typescript) 17 18 (part-side typescript) 18 31 (face web-mode-type-face part-side typescript) 31 32 (part-side typescript)) . 551) (undo-tree-id77 . -31) (undo-tree-id78 . -1) (undo-tree-id79 . -31) (undo-tree-id80 . -31) (undo-tree-id81 . -18) (undo-tree-id82 . -1) (undo-tree-id83 . -31) 582) nil (27052 15238 907497 807000) 0 nil])
25
+ ([nil nil ((#(":MetaProvider<{}, PrevMeta>" 0 1 (part-side typescript) 1 14 (part-side typescript) 14 15 (part-side typescript) 15 26 (part-side typescript) 26 27 (part-side typescript)) . 578) (undo-tree-id0 . -26) (undo-tree-id1 . -3) (undo-tree-id2 . -3) (undo-tree-id3 . -3) (undo-tree-id4 . -3) (undo-tree-id5 . -3) (undo-tree-id6 . -26) (undo-tree-id7 . -26) (undo-tree-id8 . -12) (undo-tree-id9 . -12) (undo-tree-id10 . -12) (undo-tree-id11 . -12) (undo-tree-id12 . -24) (undo-tree-id13 . -24) (undo-tree-id14 . -24) (undo-tree-id15 . -24) (undo-tree-id16 . -24) (undo-tree-id17 . -24) (undo-tree-id18 . -24) (undo-tree-id19 . -24) (undo-tree-id20 . -25) (undo-tree-id21 . -25) (undo-tree-id22 . -25) (undo-tree-id23 . -25) (undo-tree-id24 . -25) (undo-tree-id25 . -25) (undo-tree-id26 . -25) (undo-tree-id27 . -25) (undo-tree-id28 . -25) (undo-tree-id29 . -25) (undo-tree-id30 . -25) (undo-tree-id31 . -25) (undo-tree-id32 . -25) (undo-tree-id33 . -25) (undo-tree-id34 . -25) (undo-tree-id35 . -25) (undo-tree-id36 . -25) (undo-tree-id37 . -25) (undo-tree-id38 . -25) (undo-tree-id39 . -25) (undo-tree-id40 . -25) (undo-tree-id41 . -25) (undo-tree-id42 . -25) (undo-tree-id43 . -25) (undo-tree-id44 . -25) (undo-tree-id45 . -25) (undo-tree-id46 . -25) (undo-tree-id47 . -25) (undo-tree-id48 . -25) (undo-tree-id49 . -25) (undo-tree-id50 . -25) (undo-tree-id51 . -25) (undo-tree-id52 . -25) (undo-tree-id53 . -25) (undo-tree-id54 . -25) (undo-tree-id55 . -25) (undo-tree-id56 . -25) (undo-tree-id57 . -25) (undo-tree-id58 . -25) (undo-tree-id59 . -25) (undo-tree-id60 . -25) (undo-tree-id61 . -26) (undo-tree-id62 . -26) (undo-tree-id63 . -26) (undo-tree-id64 . -26) (undo-tree-id65 . -26) (undo-tree-id66 . -26) (undo-tree-id67 . -26) (undo-tree-id68 . -26) (undo-tree-id69 . -26) (undo-tree-id70 . -26) (undo-tree-id71 . -26) (undo-tree-id72 . -26) (undo-tree-id73 . -26) (undo-tree-id74 . -26) (undo-tree-id75 . -27) (undo-tree-id76 . -27) 604) nil (27052 15238 907494 347000) 0 nil])
26
+ ([nil nil ((apply -8 584 714 undo--wrap-and-run-primitive-undo 584 714 ((711 . 712) nil (710 . 711) nil (683 . 684) nil (682 . 683) nil (656 . 657) nil (655 . 656) nil (634 . 635) nil (633 . 634))) (585 . 587)) nil (27052 15238 907355 98000) 0 nil])
27
+ ([nil nil ((716 . 717)) nil (27052 15238 907352 415000) 0 nil])
28
+ ([nil current ((#("import { MetaProvider } from \"../meta-provider\";
29
+ " 0 6 (face web-mode-keyword-face part-side typescript) 6 24 (part-side typescript) 24 28 (face web-mode-keyword-face part-side typescript) 28 29 (part-side typescript) 29 30 (font-lock-face web-mode-part-string-face syntax-table (15) part-token string part-side typescript) 30 46 (font-lock-face web-mode-part-string-face part-token string part-side typescript) 46 47 (font-lock-face web-mode-part-string-face syntax-table (15) part-token string part-side typescript) 47 49 (part-side typescript)) . 44) (undo-tree-id0 . -48) (undo-tree-id1 . -49) (undo-tree-id2 . -49) (undo-tree-id3 . -49) (undo-tree-id4 . -49) (undo-tree-id5 . -49) (undo-tree-id6 . -49) (undo-tree-id7 . -49) (undo-tree-id8 . -49) (undo-tree-id9 . -49) (undo-tree-id10 . -49) (undo-tree-id11 . -49) (t 27052 15249 393093 409000)) nil (27052 15318 170355 948000) 0 nil])
30
+ nil
@@ -0,0 +1,73 @@
1
+ import { RequestMethod } from "../request-method";
2
+ import { Middleware } from "../middleware";
3
+
4
+ export interface CorsOptions {
5
+ origin?: string | string[] | ((origin: string) => boolean);
6
+ methods?: RequestMethod[];
7
+ allowedHeaders?: string[];
8
+ exposedHeaders?: string[];
9
+ credentials?: boolean;
10
+ maxAge?: number;
11
+ }
12
+
13
+ const defaults: CorsOptions = {
14
+ origin: "*",
15
+ methods: ["GET", "POST", "PUT", "DELETE", "PATCH"],
16
+ allowedHeaders: ["Content-Type", "Authorization"],
17
+ };
18
+
19
+ export const cors = (options: CorsOptions = {}): Middleware => {
20
+ const config = { ...defaults, ...options };
21
+ return async (ctx, next) => {
22
+ const origin = ctx.req.headers["origin"] as string | undefined;
23
+
24
+ let allowedOrigin: string | false = false;
25
+ if (!origin) {
26
+ allowedOrigin = "*";
27
+ } else if (config.origin === "*") {
28
+ allowedOrigin = "*";
29
+ } else if (typeof config.origin === "string") {
30
+ allowedOrigin = origin === config.origin ? origin : false;
31
+ } else if (Array.isArray(config.origin)) {
32
+ allowedOrigin = config.origin.includes(origin) ? origin : false;
33
+ } else if (typeof config.origin === "function") {
34
+ allowedOrigin = config.origin(origin) ? origin : false;
35
+ }
36
+
37
+ if (allowedOrigin) {
38
+ ctx.res.setHeader("Access-Control-Allow-Origin", allowedOrigin);
39
+ }
40
+ if (config.methods) {
41
+ ctx.res.setHeader(
42
+ "Access-Control-Allow-Methods",
43
+ config.methods.join(", "),
44
+ );
45
+ }
46
+ if (config.allowedHeaders) {
47
+ ctx.res.setHeader(
48
+ "Access-Control-Allow-Headers",
49
+ config.allowedHeaders.join(", "),
50
+ );
51
+ }
52
+ if (config.exposedHeaders) {
53
+ ctx.res.setHeader(
54
+ "Access-Control-Expose-Headers",
55
+ config.exposedHeaders.join(", "),
56
+ );
57
+ }
58
+ if (config.credentials) {
59
+ ctx.res.setHeader("Access-Control-Allow-Credentials", "true");
60
+ }
61
+ if (config.maxAge != null) {
62
+ ctx.res.setHeader("Access-Control-Max-Age", String(config.maxAge));
63
+ }
64
+
65
+ if (ctx.req.method === "OPTIONS") {
66
+ ctx.res.writeHead(204);
67
+ ctx.res.end();
68
+ return;
69
+ }
70
+
71
+ await next();
72
+ };
73
+ };
@@ -0,0 +1,26 @@
1
+ import { UnknownRecord } from "../common";
2
+ import { MetaProvider } from "../meta-provider";
3
+ import { RequestMethod } from "../request-method";
4
+
5
+ export interface CorsOptions {
6
+ origin?: string | string[] | ((origin: string) => boolean);
7
+ methods?: RequestMethod[];
8
+ allowedHeaders?: string[];
9
+ exposedHeaders?: string[];
10
+ credentials?: boolean;
11
+ maxAge?: number;
12
+ };
13
+
14
+ const defaults: CorsOptions = {
15
+ origin: "*",
16
+ methods: ["GET", "POST", "PUT", "DELETE", "PATCH"],
17
+ allowedHeaders: ["Content-Type", "Authorization"],
18
+ };
19
+
20
+ export const cors = (options: CorsOptions = {}) => {
21
+ // const config = { ...defaults, ...options };
22
+ // return (ctx) => {
23
+ // const res = ctx.res;
24
+ // return {...ctx.meta};
25
+ // }
26
+ }
@@ -0,0 +1 @@
1
+ export * from "./cors";