@antelopejs/api 0.2.0 → 1.0.0

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.
@@ -0,0 +1,19 @@
1
+ import { type RouteHandler } from "@antelopejs/interface-api";
2
+ import type { Class } from "@antelopejs/interface-core/decorators";
3
+ import { type RequestContext } from "../../server";
4
+ export declare function GetControllerInstance(controllerClass: Class<unknown>, context: RequestContext): Promise<unknown>;
5
+ export declare function Listen(): Promise<void>;
6
+ interface RouteInfo {
7
+ id: string;
8
+ uri: string;
9
+ method: string;
10
+ mode: "prefix" | "postfix" | "handler" | "monitor" | "websocket";
11
+ priority?: number;
12
+ callbackName: string;
13
+ }
14
+ export declare const routesProxy: {
15
+ register: (id: string, handler: RouteHandler) => void;
16
+ unregister: (id: string) => void;
17
+ getRoutes: () => RouteInfo[];
18
+ };
19
+ export {};
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.routesProxy = void 0;
4
+ exports.GetControllerInstance = GetControllerInstance;
5
+ exports.Listen = Listen;
6
+ const interface_api_1 = require("@antelopejs/interface-api");
7
+ const interface_core_1 = require("@antelopejs/interface-core");
8
+ const index_1 = require("../../index");
9
+ const server_1 = require("../../server");
10
+ const classCacheSymbol = Symbol();
11
+ const registeredRoutes = new Map();
12
+ function getControllerCache(context) {
13
+ if (!context[classCacheSymbol]) {
14
+ context[classCacheSymbol] = new Map();
15
+ }
16
+ return context[classCacheSymbol];
17
+ }
18
+ async function applyComputedProperties(controllerInstance, controllerMetadata, context) {
19
+ await Promise.all(Object.entries(controllerMetadata.computed_props).map(async ([propertyKey, parameter]) => {
20
+ const computedValue = await (0, interface_api_1.computeParameter)(context, parameter, controllerInstance);
21
+ controllerInstance[propertyKey] = computedValue;
22
+ }));
23
+ }
24
+ async function GetControllerInstance(controllerClass, context) {
25
+ const controllerCache = getControllerCache(context);
26
+ const cacheKey = controllerClass.prototype;
27
+ const cachedController = controllerCache.get(cacheKey);
28
+ if (cachedController) {
29
+ return cachedController;
30
+ }
31
+ const typedControllerClass = controllerClass;
32
+ const controllerInstance = new typedControllerClass();
33
+ const controllerMetadata = (0, interface_core_1.GetMetadata)(typedControllerClass, interface_api_1.ControllerMeta);
34
+ await applyComputedProperties(controllerInstance, controllerMetadata, context);
35
+ controllerCache.set(cacheKey, controllerInstance);
36
+ return controllerInstance;
37
+ }
38
+ async function Listen() {
39
+ await (0, index_1.listenServers)();
40
+ }
41
+ async function invokeHandler(handler, context) {
42
+ const controllerClass = handler.proto.constructor;
43
+ const controllerInstance = await GetControllerInstance(controllerClass, context);
44
+ const resolvedParameters = await Promise.all(handler.parameters.map((parameter) => (0, interface_api_1.computeParameter)(context, parameter, controllerInstance)));
45
+ return handler.callback.apply(controllerInstance, resolvedParameters);
46
+ }
47
+ exports.routesProxy = {
48
+ register: (id, handler) => {
49
+ registeredRoutes.set(id, handler);
50
+ (0, server_1.registerHandler)(`dev/${id}`, handler.mode, handler.method, handler.location, async (context) => invokeHandler(handler, context), handler.priority);
51
+ },
52
+ unregister: (id) => {
53
+ registeredRoutes.delete(id);
54
+ (0, server_1.unregisterHandler)(`dev/${id}`);
55
+ },
56
+ getRoutes: () => {
57
+ const routes = [];
58
+ registeredRoutes.forEach((handler, id) => {
59
+ routes.push({
60
+ id,
61
+ uri: handler.location,
62
+ method: handler.method,
63
+ mode: handler.mode,
64
+ priority: handler.priority,
65
+ callbackName: handler.callback.name || "anonymous",
66
+ });
67
+ });
68
+ return routes;
69
+ },
70
+ };
71
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/implementations/api/index.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,26 +1,31 @@
1
- import * as http from 'http';
2
- import * as https from 'https';
3
- import './middlewares/cors';
4
- interface HTTPConfig extends http.ServerOptions {
5
- protocol: 'http';
1
+ import * as http from "node:http";
2
+ import * as https from "node:https";
3
+ import "./middlewares/cors";
4
+ interface ServerNetworkConfig {
6
5
  host?: string;
7
6
  port?: number;
8
7
  }
9
- interface HTTPSConfig extends https.ServerOptions {
10
- protocol: 'https';
11
- host?: string;
12
- port?: number;
8
+ interface HTTPConfig extends http.ServerOptions, ServerNetworkConfig {
9
+ protocol: "http";
10
+ }
11
+ interface HTTPSConfig extends https.ServerOptions, ServerNetworkConfig {
12
+ protocol: "https";
13
+ }
14
+ type ServerConfig = HTTPConfig | HTTPSConfig;
15
+ type AllowedOrigin = string | RegExp | Array<string | RegExp>;
16
+ interface CorsConfig {
17
+ allowedOrigins?: AllowedOrigin;
18
+ allowedMethods?: string[];
13
19
  }
14
20
  interface Config {
15
- servers?: (HTTPConfig | HTTPSConfig)[];
16
- cors?: {
17
- allowedOrigins?: string | RegExp | (string | RegExp)[];
18
- allowedMethods?: string[];
19
- };
21
+ servers?: ServerConfig[];
22
+ cors?: CorsConfig;
23
+ autoListen?: boolean;
20
24
  }
21
25
  export declare function getConfig(): Config;
22
26
  export declare function construct(config: Config): Promise<void>;
23
27
  export declare function destroy(): void;
24
28
  export declare function start(): void;
29
+ export declare function listenServers(): Promise<void>;
25
30
  export declare function stop(): void;
26
31
  export {};
package/dist/index.js CHANGED
@@ -37,49 +37,115 @@ exports.getConfig = getConfig;
37
37
  exports.construct = construct;
38
38
  exports.destroy = destroy;
39
39
  exports.start = start;
40
+ exports.listenServers = listenServers;
40
41
  exports.stop = stop;
41
- const http = __importStar(require("http"));
42
- const https = __importStar(require("https"));
43
- const beta_1 = require("@ajs/core/beta");
42
+ const http = __importStar(require("node:http"));
43
+ const https = __importStar(require("node:https"));
44
+ const interface_core_1 = require("@antelopejs/interface-core");
44
45
  const server_1 = require("./server");
45
46
  require("./middlewares/cors");
46
- const beta_2 = require("@ajs/logging/beta");
47
- let conf;
48
- let servers;
47
+ const logging_1 = require("@antelopejs/interface-core/logging");
48
+ const DEFAULT_HTTP_PORT = 80;
49
+ const DEFAULT_HOST = "localhost";
50
+ const DEFAULT_SERVER_CONFIG = {
51
+ protocol: "http",
52
+ port: DEFAULT_HTTP_PORT,
53
+ };
54
+ const SERVER_FACTORY_BY_PROTOCOL = {
55
+ http: (config) => createHTTPServer(config),
56
+ https: (config) => createHTTPSServer(config),
57
+ };
58
+ let conf = {
59
+ servers: [],
60
+ };
61
+ let servers = [];
62
+ let listening = false;
63
+ function createHTTPServer(config) {
64
+ const server = http.createServer(config);
65
+ attachServerListeners(server, "http", "ws");
66
+ return server;
67
+ }
68
+ function createHTTPSServer(config) {
69
+ const server = https.createServer(config);
70
+ attachServerListeners(server, "https", "wss");
71
+ return server;
72
+ }
73
+ function attachServerListeners(server, protocol, socketProtocol) {
74
+ server.on("request", (req, res) => void (0, server_1.requestListener)(req, res, protocol));
75
+ server.on("upgrade", (req, socket, head) => void (0, server_1.upgradeListener)(req, socket, head, socketProtocol));
76
+ }
77
+ function resolveServers(config) {
78
+ if (config.servers && config.servers.length > 0) {
79
+ return config.servers;
80
+ }
81
+ return [DEFAULT_SERVER_CONFIG];
82
+ }
83
+ function createConfiguredServer(config) {
84
+ const serverFactory = SERVER_FACTORY_BY_PROTOCOL[config.protocol];
85
+ return serverFactory(config);
86
+ }
87
+ function listenServer(server, config) {
88
+ if (server.listening) {
89
+ return Promise.resolve();
90
+ }
91
+ return new Promise((resolve, reject) => {
92
+ const onListening = () => {
93
+ cleanup();
94
+ logging_1.Logging.Info(`Server started, listening on ${config.protocol}://${config.host ?? DEFAULT_HOST}:${config.port}`);
95
+ resolve();
96
+ };
97
+ const onError = (error) => {
98
+ cleanup();
99
+ reject(error);
100
+ };
101
+ const cleanup = () => {
102
+ server.off("listening", onListening);
103
+ server.off("error", onError);
104
+ };
105
+ server.once("listening", onListening);
106
+ server.once("error", onError);
107
+ server.listen(config.port, config.host);
108
+ });
109
+ }
49
110
  function getConfig() {
50
111
  return conf;
51
112
  }
52
113
  async function construct(config) {
53
- conf = config;
54
- conf.servers = conf.servers || [];
55
- if (conf.servers.length === 0) {
56
- conf.servers.push({ protocol: 'http', port: 80 });
57
- }
58
- await (0, beta_1.ImplementInterface)(Promise.resolve().then(() => __importStar(require('@ajs.local/api/beta'))), Promise.resolve().then(() => __importStar(require('./implementations/api/beta'))));
114
+ conf = {
115
+ ...config,
116
+ servers: resolveServers(config),
117
+ };
118
+ void (0, interface_core_1.ImplementInterface)(await Promise.resolve().then(() => __importStar(require("@antelopejs/interface-api"))), await Promise.resolve().then(() => __importStar(require("./implementations/api"))));
59
119
  }
60
120
  function destroy() { }
61
121
  function start() {
62
- servers = conf.servers.map((config) => {
63
- let server;
64
- switch (config.protocol) {
65
- case 'http':
66
- server = http.createServer(config);
67
- server.on('request', (req, res) => void (0, server_1.requestListener)(req, res, 'http'));
68
- server.on('upgrade', (req, sock, head) => void (0, server_1.upgradeListener)(req, sock, head, 'ws'));
69
- break;
70
- case 'https':
71
- server = https.createServer(config);
72
- server.on('request', (req, res) => void (0, server_1.requestListener)(req, res, 'https'));
73
- server.on('upgrade', (req, sock, head) => void (0, server_1.upgradeListener)(req, sock, head, 'wss'));
74
- break;
75
- }
76
- const server_listener = server.listen(config.port, config.host);
77
- beta_2.Logging.Info(`Server started, listening on ${config.protocol}://${config.host || 'localhost'}:${config.port}`);
78
- return server_listener;
79
- });
122
+ servers = (conf.servers ?? []).map((serverConfig) => createConfiguredServer(serverConfig));
123
+ listening = false;
124
+ if (conf.autoListen !== false) {
125
+ void listenServers().catch((error) => {
126
+ const message = error instanceof Error ? error.message : String(error);
127
+ logging_1.Logging.Info(`Unable to start listening servers: ${message}`);
128
+ });
129
+ }
130
+ }
131
+ async function listenServers() {
132
+ if (listening || servers.length === 0) {
133
+ return;
134
+ }
135
+ listening = true;
136
+ try {
137
+ await Promise.all((conf.servers ?? []).map((serverConfig, index) => listenServer(servers[index], serverConfig)));
138
+ }
139
+ catch (error) {
140
+ listening = false;
141
+ throw error;
142
+ }
80
143
  }
81
144
  function stop() {
82
- servers.forEach((server) => server.close());
145
+ for (const server of servers) {
146
+ server.close();
147
+ }
83
148
  servers = [];
149
+ listening = false;
84
150
  }
85
151
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCA,8BAEC;AAED,8BAQC;AAED,0BAAkC;AAElC,sBAgCC;AAED,oBAGC;AArFD,2CAA6B;AAC7B,6CAA+B;AAG/B,yCAAoD;AACpD,qCAA4D;AAC5D,8BAA4B;AAC5B,4CAA4C;AAsB5C,IAAI,IAAY,CAAC;AACjB,IAAI,OAAqB,CAAC;AAE1B,SAAgB,SAAS;IACvB,OAAO,IAAI,CAAC;AACd,CAAC;AAEM,KAAK,UAAU,SAAS,CAAC,MAAc;IAC5C,IAAI,GAAG,MAAM,CAAC;IACd,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;IAClC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,IAAA,yBAAkB,oDAAQ,qBAAqB,uDAAU,4BAA4B,IAAE,CAAC;AAChG,CAAC;AAED,SAAgB,OAAO,KAAU,CAAC;AAElC,SAAgB,KAAK;IACnB,OAAO,GAAG,IAAI,CAAC,OAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACrC,IAAI,MAAkB,CAAC;QACvB,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;YACxB,KAAK,MAAM;gBACT,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBACnC,MAAM,CAAC,EAAE,CACP,SAAS,EACT,CAAC,GAAyB,EAAE,GAAwB,EAAE,EAAE,CAAC,KAAK,IAAA,wBAAe,EAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAChG,CAAC;gBACF,MAAM,CAAC,EAAE,CACP,SAAS,EACT,CAAC,GAAyB,EAAE,IAAmB,EAAE,IAAY,EAAE,EAAE,CAAC,KAAK,IAAA,wBAAe,EAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAC9G,CAAC;gBACF,MAAM;YACR,KAAK,OAAO;gBACV,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBACpC,MAAM,CAAC,EAAE,CACP,SAAS,EACT,CAAC,GAAyB,EAAE,GAAwB,EAAE,EAAE,CAAC,KAAK,IAAA,wBAAe,EAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CACjG,CAAC;gBACF,MAAM,CAAC,EAAE,CACP,SAAS,EACT,CAAC,GAAyB,EAAE,IAAmB,EAAE,IAAY,EAAE,EAAE,CAC/D,KAAK,IAAA,wBAAe,EAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAC/C,CAAC;gBACF,MAAM;QACV,CAAC;QACD,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAChE,cAAO,CAAC,IAAI,CAAC,gCAAgC,MAAM,CAAC,QAAQ,MAAM,MAAM,CAAC,IAAI,IAAI,WAAW,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/G,OAAO,eAAe,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,IAAI;IAClB,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAC5C,OAAO,GAAG,EAAE,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { HTTPResult, RequestContext } from '@ajs.local/api/beta';
2
- declare const Cors_base: import("@ajs.local/api/beta").ControllerClass<object>;
1
+ import { HTTPResult, type RequestContext } from "@antelopejs/interface-api";
2
+ declare const Cors_base: import("@antelopejs/interface-api").ControllerClass<object>;
3
3
  export declare class Cors extends Cors_base {
4
- cors(ctx: RequestContext): HTTPResult | undefined;
4
+ cors(requestContext: RequestContext): HTTPResult | undefined;
5
5
  }
6
6
  export {};
@@ -13,62 +13,76 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.Cors = void 0;
16
- const beta_1 = require("@ajs.local/api/beta");
16
+ const interface_api_1 = require("@antelopejs/interface-api");
17
17
  const __1 = require("..");
18
- function isString(s) {
19
- return typeof s === 'string' || s instanceof String;
18
+ const DEFAULT_ALLOWED_METHODS = "GET,HEAD,PUT,PATCH,POST,DELETE";
19
+ const FALSE_ORIGIN = "false";
20
+ const TRUE_CREDENTIALS = "true";
21
+ const NO_BODY_LENGTH = "0";
22
+ function isString(value) {
23
+ return typeof value === "string" || value instanceof String;
24
+ }
25
+ function toHeaderValue(value) {
26
+ if (Array.isArray(value)) {
27
+ return value.join(",");
28
+ }
29
+ return value ?? "";
20
30
  }
21
31
  function isOriginAllowed(origin, allowedOrigin) {
22
32
  if (Array.isArray(allowedOrigin)) {
23
- for (let i = 0; i < allowedOrigin.length; ++i) {
24
- if (isOriginAllowed(origin, allowedOrigin[i])) {
25
- return true;
26
- }
27
- }
28
- return false;
33
+ return allowedOrigin.some((item) => isOriginAllowed(origin, item));
29
34
  }
30
- else if (isString(allowedOrigin)) {
35
+ if (isString(allowedOrigin)) {
31
36
  return origin === allowedOrigin;
32
37
  }
33
- else if (allowedOrigin instanceof RegExp) {
38
+ if (allowedOrigin instanceof RegExp) {
34
39
  return allowedOrigin.test(origin);
35
40
  }
36
- else {
37
- return !!allowedOrigin;
38
- }
41
+ return Boolean(allowedOrigin);
39
42
  }
40
- class Cors extends (0, beta_1.Controller)('') {
41
- cors(ctx) {
43
+ function addPreflightHeaders(response, requestContext, allowedOriginHeader) {
44
+ const config = (0, __1.getConfig)();
45
+ const allowedMethods = config.cors?.allowedMethods?.join(",") ?? DEFAULT_ALLOWED_METHODS;
46
+ const requestedHeaders = toHeaderValue(requestContext.rawRequest.headers["access-control-request-headers"]);
47
+ response.addHeader("Access-Control-Allow-Origin", allowedOriginHeader);
48
+ response.addHeader("Vary", "Origin");
49
+ response.addHeader("Access-Control-Allow-Methods", allowedMethods);
50
+ response.addHeader("Access-Control-Allow-Credentials", TRUE_CREDENTIALS);
51
+ response.addHeader("Access-Control-Allow-Headers", requestedHeaders);
52
+ response.addHeader("Vary", "Access-Control-Request-Headers");
53
+ response.addHeader("Content-Length", NO_BODY_LENGTH);
54
+ }
55
+ function addStandardCorsHeaders(requestContext, allowedOriginHeader) {
56
+ requestContext.response.addHeader("Access-Control-Allow-Origin", allowedOriginHeader);
57
+ requestContext.response.addHeader("Vary", "Origin");
58
+ requestContext.response.addHeader("Access-Control-Allow-Credentials", TRUE_CREDENTIALS);
59
+ }
60
+ class Cors extends (0, interface_api_1.Controller)("") {
61
+ cors(requestContext) {
42
62
  const config = (0, __1.getConfig)();
43
63
  if (!config.cors) {
44
- return;
64
+ return undefined;
45
65
  }
46
- const requestOrigin = ctx.rawRequest.headers.origin;
47
- const isAllowed = isOriginAllowed(requestOrigin, config.cors?.allowedOrigins);
48
- if (ctx.rawRequest.method === 'OPTIONS') {
49
- const response = new beta_1.HTTPResult(204, null);
50
- response.addHeader('Access-Control-Allow-Origin', isAllowed ? requestOrigin : 'false');
51
- response.addHeader('Vary', 'Origin');
52
- response.addHeader('Access-Control-Allow-Methods', config.cors?.allowedMethods ? config.cors?.allowedMethods.join(',') : 'GET,HEAD,PUT,PATCH,POST,DELETE');
53
- response.addHeader('Access-Control-Allow-Credentials', 'true');
54
- response.addHeader('Access-Control-Allow-Headers', ctx.rawRequest.headers['access-control-request-headers']);
55
- response.addHeader('Vary', 'Access-Control-Request-Headers');
56
- response.addHeader('Content-Length', '0');
66
+ const requestOrigin = requestContext.rawRequest.headers.origin;
67
+ const isAllowed = requestOrigin
68
+ ? isOriginAllowed(requestOrigin, config.cors.allowedOrigins)
69
+ : false;
70
+ const allowedOriginHeader = isAllowed && requestOrigin ? requestOrigin : FALSE_ORIGIN;
71
+ if (requestContext.rawRequest.method === "OPTIONS") {
72
+ const response = new interface_api_1.HTTPResult(204, null);
73
+ addPreflightHeaders(response, requestContext, allowedOriginHeader);
57
74
  return response;
58
75
  }
59
- else {
60
- ctx.response?.addHeader('Access-Control-Allow-Origin', isAllowed ? requestOrigin : 'false');
61
- ctx.response?.addHeader('Vary', 'Origin');
62
- ctx.response?.addHeader('Access-Control-Allow-Credentials', 'true');
63
- }
76
+ addStandardCorsHeaders(requestContext, allowedOriginHeader);
77
+ return undefined;
64
78
  }
65
79
  }
66
80
  exports.Cors = Cors;
67
81
  __decorate([
68
- (0, beta_1.Prefix)('any', '/', beta_1.HandlerPriority.HIGHEST),
69
- __param(0, (0, beta_1.Context)()),
82
+ (0, interface_api_1.Prefix)("any", "/", interface_api_1.HandlerPriority.HIGHEST),
83
+ __param(0, (0, interface_api_1.Context)()),
70
84
  __metadata("design:type", Function),
71
85
  __metadata("design:paramtypes", [Object]),
72
- __metadata("design:returntype", void 0)
86
+ __metadata("design:returntype", Object)
73
87
  ], Cors.prototype, "cors", null);
74
88
  //# sourceMappingURL=cors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cors.js","sourceRoot":"","sources":["../../src/middlewares/cors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cors.js","sourceRoot":"","sources":["../../src/middlewares/cors.ts"],"names":[],"mappings":"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"}
package/dist/server.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { HTTPResult, HandlerPriority } from '@ajs.local/api/beta';
2
- import { IncomingMessage, ServerResponse } from 'http';
3
- import stream from 'stream';
4
- export type RouteCallback = (context: RequestContext) => any;
1
+ import { type IncomingMessage, ServerResponse } from "node:http";
2
+ import type stream from "node:stream";
3
+ import { HandlerPriority, HTTPResult } from "@antelopejs/interface-api";
4
+ export type RouteCallback = (context: RequestContext) => unknown;
5
5
  export interface IdentifiableRouteCallback {
6
6
  id: string;
7
7
  callback: RouteCallback;
@@ -13,9 +13,10 @@ export interface RequestContext {
13
13
  url: URL;
14
14
  routeParameters: Record<string, string>;
15
15
  response: HTTPResult;
16
+ error?: unknown;
16
17
  connection?: unknown;
17
18
  }
18
- export declare function registerHandler(id: string, mode: 'prefix' | 'postfix' | 'handler' | 'websocket', method: string | undefined, location: string, handler: RouteCallback, priority?: HandlerPriority): void;
19
+ export declare function registerHandler(id: string, mode: "prefix" | "postfix" | "handler" | "monitor" | "websocket", method: string | undefined, location: string, handler: RouteCallback, priority?: HandlerPriority): void;
19
20
  export declare function unregisterHandler(id: string): void;
20
- export declare function requestListener(req: IncomingMessage, res: ServerResponse, protocol: 'http' | 'https'): Promise<void>;
21
- export declare function upgradeListener(req: IncomingMessage, socket: stream.Duplex, head: Buffer, protocol: 'ws' | 'wss'): Promise<void>;
21
+ export declare function requestListener(req: IncomingMessage, res: ServerResponse, protocol: "http" | "https"): Promise<void>;
22
+ export declare function upgradeListener(req: IncomingMessage, socket: stream.Duplex, head: Buffer, protocol: "ws" | "wss"): Promise<void>;