@ido_kawaz/server-framework 2.2.0 → 3.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.
- package/README.md +7 -5
- package/dist/__tests__/index.test.d.ts +2 -0
- package/dist/__tests__/index.test.d.ts.map +1 -0
- package/dist/__tests__/index.test.js +66 -0
- package/dist/__tests__/index.test.js.map +1 -0
- package/dist/__tests__/server.test.d.ts +2 -0
- package/dist/__tests__/server.test.d.ts.map +1 -0
- package/dist/__tests__/server.test.js +95 -0
- package/dist/__tests__/server.test.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts +5 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +20 -16
- package/dist/server.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -10,11 +10,11 @@ npm i @ido_kawaz/server-framework
|
|
|
10
10
|
|
|
11
11
|
## Exports
|
|
12
12
|
|
|
13
|
-
- `
|
|
13
|
+
- `createServer`
|
|
14
14
|
- `createServerConfig`
|
|
15
15
|
- `ServerConfig`
|
|
16
16
|
- `createRequestHandlerDecorator`
|
|
17
|
-
- `
|
|
17
|
+
- `default` (`multer`)
|
|
18
18
|
- `RequestFile`
|
|
19
19
|
- Error classes:
|
|
20
20
|
- `ApiError`
|
|
@@ -41,7 +41,7 @@ import express from "express";
|
|
|
41
41
|
import {
|
|
42
42
|
createRequestHandlerDecorator,
|
|
43
43
|
createServerConfig,
|
|
44
|
-
|
|
44
|
+
createServer,
|
|
45
45
|
BadRequestError,
|
|
46
46
|
Request,
|
|
47
47
|
Response
|
|
@@ -70,9 +70,9 @@ const registerRoutes = () => (app: express.Express) => {
|
|
|
70
70
|
|
|
71
71
|
return app;
|
|
72
72
|
};
|
|
73
|
-
|
|
74
73
|
const config = createServerConfig();
|
|
75
|
-
|
|
74
|
+
const server = await createServer(config, registerRoutes);
|
|
75
|
+
await server.start();
|
|
76
76
|
```
|
|
77
77
|
|
|
78
78
|
## Development Scripts
|
|
@@ -94,3 +94,5 @@ Current test coverage includes:
|
|
|
94
94
|
- API error classes and status-code mapping.
|
|
95
95
|
- Request handler decorator success/error behavior.
|
|
96
96
|
- Centralized request error handler responses.
|
|
97
|
+
- Server startup behavior (`http` vs `https`) and startup error propagation.
|
|
98
|
+
- Public export surface validation.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/index.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,66 @@
|
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const multer_1 = __importDefault(require("multer"));
|
|
40
|
+
const index_1 = require("../index");
|
|
41
|
+
describe("index exports", () => {
|
|
42
|
+
it("exports core functions", () => {
|
|
43
|
+
expect(typeof index_1.createServer).toBe("function");
|
|
44
|
+
expect(typeof index_1.createServerConfig).toBe("function");
|
|
45
|
+
expect(typeof index_1.createRequestHandlerDecorator).toBe("function");
|
|
46
|
+
});
|
|
47
|
+
it("re-exports multer as default export", async () => {
|
|
48
|
+
const module = await Promise.resolve().then(() => __importStar(require("../index")));
|
|
49
|
+
expect(module.default).toBe(multer_1.default);
|
|
50
|
+
});
|
|
51
|
+
it("exports error classes", () => {
|
|
52
|
+
expect(index_1.ApiError).toBeDefined();
|
|
53
|
+
expect(index_1.BadRequestError).toBeDefined();
|
|
54
|
+
expect(index_1.UnauthorizedError).toBeDefined();
|
|
55
|
+
expect(index_1.NotFoundError).toBeDefined();
|
|
56
|
+
expect(index_1.InternalServerError).toBeDefined();
|
|
57
|
+
});
|
|
58
|
+
it("exports RequestFile type", () => {
|
|
59
|
+
const typedFile = {
|
|
60
|
+
fieldname: "file",
|
|
61
|
+
originalname: "demo.txt"
|
|
62
|
+
};
|
|
63
|
+
expect(typedFile.originalname).toBe("demo.txt");
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
//# sourceMappingURL=index.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/__tests__/index.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAA4B;AAC5B,oCAUkB;AAElB,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAC9B,MAAM,CAAC,OAAO,oBAAY,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7C,MAAM,CAAC,OAAO,0BAAkB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnD,MAAM,CAAC,OAAO,qCAA6B,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,MAAM,GAAG,wDAAa,UAAU,GAAC,CAAC;QACxC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAM,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC7B,MAAM,CAAC,gBAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QAC/B,MAAM,CAAC,uBAAe,CAAC,CAAC,WAAW,EAAE,CAAC;QACtC,MAAM,CAAC,yBAAiB,CAAC,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,CAAC,qBAAa,CAAC,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,CAAC,2BAAmB,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAChC,MAAM,SAAS,GAAG;YACd,SAAS,EAAE,MAAM;YACjB,YAAY,EAAE,UAAU;SACZ,CAAC;QAEjB,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/server.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const express_1 = __importDefault(require("express"));
|
|
7
|
+
const http_1 = __importDefault(require("http"));
|
|
8
|
+
const https_1 = __importDefault(require("https"));
|
|
9
|
+
const server_1 = require("../server");
|
|
10
|
+
const registerMiddlewaresMock = jest.fn((app) => app);
|
|
11
|
+
const registerErrorHandlingMock = jest.fn((app) => app);
|
|
12
|
+
jest.mock("../utils", () => ({
|
|
13
|
+
registerMiddlewares: (app) => registerMiddlewaresMock(app),
|
|
14
|
+
registerErrorHandling: (app) => registerErrorHandlingMock(app)
|
|
15
|
+
}));
|
|
16
|
+
jest.mock("ramda", () => ({
|
|
17
|
+
pipe: (...functions) => (input) => functions.reduce((value, fn) => fn(value), input)
|
|
18
|
+
}));
|
|
19
|
+
jest.mock("express", () => ({
|
|
20
|
+
__esModule: true,
|
|
21
|
+
default: jest.fn()
|
|
22
|
+
}));
|
|
23
|
+
jest.mock("http", () => ({
|
|
24
|
+
__esModule: true,
|
|
25
|
+
default: {
|
|
26
|
+
createServer: jest.fn()
|
|
27
|
+
}
|
|
28
|
+
}));
|
|
29
|
+
jest.mock("https", () => ({
|
|
30
|
+
__esModule: true,
|
|
31
|
+
default: {
|
|
32
|
+
createServer: jest.fn()
|
|
33
|
+
}
|
|
34
|
+
}));
|
|
35
|
+
describe("createServer", () => {
|
|
36
|
+
beforeEach(() => {
|
|
37
|
+
jest.clearAllMocks();
|
|
38
|
+
});
|
|
39
|
+
it("uses HTTP server when secured is false", async () => {
|
|
40
|
+
const expressApp = { name: "express-app" };
|
|
41
|
+
const serviceApp = { name: "service-app" };
|
|
42
|
+
const onMock = jest.fn();
|
|
43
|
+
const listenMock = jest.fn((_, callback) => {
|
|
44
|
+
callback();
|
|
45
|
+
return { on: onMock };
|
|
46
|
+
});
|
|
47
|
+
const expressMock = express_1.default;
|
|
48
|
+
expressMock.mockReturnValue(expressApp);
|
|
49
|
+
http_1.default.createServer.mockReturnValue({ listen: listenMock });
|
|
50
|
+
const routeHandler = jest.fn(() => serviceApp);
|
|
51
|
+
const registerRoutes = jest.fn(() => routeHandler);
|
|
52
|
+
const server = await (0, server_1.createServer)({ port: 3000, secured: false }, registerRoutes);
|
|
53
|
+
await expect(server.start()).resolves.toBeUndefined();
|
|
54
|
+
expect(registerMiddlewaresMock).toHaveBeenCalledWith(expressApp);
|
|
55
|
+
expect(registerErrorHandlingMock).toHaveBeenCalledWith(serviceApp);
|
|
56
|
+
expect(http_1.default.createServer).toHaveBeenCalledWith(serviceApp);
|
|
57
|
+
expect(https_1.default.createServer).not.toHaveBeenCalled();
|
|
58
|
+
expect(listenMock).toHaveBeenCalledWith(3000, expect.any(Function));
|
|
59
|
+
expect(onMock).toHaveBeenCalledWith("error", expect.any(Function));
|
|
60
|
+
});
|
|
61
|
+
it("uses HTTPS server when secured is true", async () => {
|
|
62
|
+
const expressApp = { name: "express-app" };
|
|
63
|
+
const onMock = jest.fn();
|
|
64
|
+
const listenMock = jest.fn((_, callback) => {
|
|
65
|
+
callback();
|
|
66
|
+
return { on: onMock };
|
|
67
|
+
});
|
|
68
|
+
const expressMock = express_1.default;
|
|
69
|
+
expressMock.mockReturnValue(expressApp);
|
|
70
|
+
https_1.default.createServer.mockReturnValue({ listen: listenMock });
|
|
71
|
+
const registerRoutes = () => (app) => app;
|
|
72
|
+
const server = await (0, server_1.createServer)({ port: 3443, secured: true }, registerRoutes);
|
|
73
|
+
await expect(server.start()).resolves.toBeUndefined();
|
|
74
|
+
expect(https_1.default.createServer).toHaveBeenCalledTimes(1);
|
|
75
|
+
expect(http_1.default.createServer).not.toHaveBeenCalled();
|
|
76
|
+
});
|
|
77
|
+
it("rejects when underlying server emits error", async () => {
|
|
78
|
+
const expressApp = { name: "express-app" };
|
|
79
|
+
const startupError = new Error("listen failed");
|
|
80
|
+
const onMock = jest.fn((event, handler) => {
|
|
81
|
+
if (event === "error") {
|
|
82
|
+
handler(startupError);
|
|
83
|
+
}
|
|
84
|
+
return undefined;
|
|
85
|
+
});
|
|
86
|
+
const listenMock = jest.fn(() => ({ on: onMock }));
|
|
87
|
+
const expressMock = express_1.default;
|
|
88
|
+
expressMock.mockReturnValue(expressApp);
|
|
89
|
+
http_1.default.createServer.mockReturnValue({ listen: listenMock });
|
|
90
|
+
const registerRoutes = () => (app) => app;
|
|
91
|
+
const server = await (0, server_1.createServer)({ port: 3001, secured: false }, registerRoutes);
|
|
92
|
+
await expect(server.start()).rejects.toThrow("listen failed");
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
//# sourceMappingURL=server.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.test.js","sourceRoot":"","sources":["../../src/__tests__/server.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { Express as Application, Router, Request, Response, NextFunction } from "express";
|
|
2
|
-
export { default
|
|
3
|
-
export {
|
|
2
|
+
export { default } from "multer";
|
|
3
|
+
export { createServer, Server } from "./server";
|
|
4
4
|
export { createServerConfig, ServerConfig } from "./config";
|
|
5
5
|
export { createRequestHandlerDecorator } from "./decorators";
|
|
6
6
|
export { RequestFile } from "./types";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC1F,OAAO,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC1F,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,cAAc,UAAU,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -17,13 +17,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
17
17
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.createRequestHandlerDecorator = exports.createServerConfig = exports.
|
|
20
|
+
exports.createRequestHandlerDecorator = exports.createServerConfig = exports.createServer = exports.default = exports.Router = void 0;
|
|
21
21
|
var express_1 = require("express");
|
|
22
22
|
Object.defineProperty(exports, "Router", { enumerable: true, get: function () { return express_1.Router; } });
|
|
23
23
|
var multer_1 = require("multer");
|
|
24
|
-
Object.defineProperty(exports, "
|
|
24
|
+
Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(multer_1).default; } });
|
|
25
25
|
var server_1 = require("./server");
|
|
26
|
-
Object.defineProperty(exports, "
|
|
26
|
+
Object.defineProperty(exports, "createServer", { enumerable: true, get: function () { return server_1.createServer; } });
|
|
27
27
|
var config_1 = require("./config");
|
|
28
28
|
Object.defineProperty(exports, "createServerConfig", { enumerable: true, get: function () { return config_1.createServerConfig; } });
|
|
29
29
|
var decorators_1 = require("./decorators");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,mCAA0F;AAAzD,iGAAA,MAAM,OAAA;AACvC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,mCAA0F;AAAzD,iGAAA,MAAM,OAAA;AACvC,iCAAiC;AAAxB,kHAAA,OAAO,OAAA;AAChB,mCAAgD;AAAvC,sGAAA,YAAY,OAAA;AACrB,mCAA4D;AAAnD,4GAAA,kBAAkB,OAAA;AAC3B,2CAA6D;AAApD,2HAAA,6BAA6B,OAAA;AAEtC,2CAAyB"}
|
package/dist/server.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Express } from "express";
|
|
2
2
|
import { ServerConfig } from "./config";
|
|
3
|
-
export declare const
|
|
3
|
+
export declare const createServer: <Args extends any[]>(config: ServerConfig, registerRoutes: (...args: Args) => (app: Express) => Express) => Promise<{
|
|
4
|
+
start: (...args: Args) => Promise<void>;
|
|
5
|
+
}>;
|
|
6
|
+
export type Server = ReturnType<typeof createServer>;
|
|
4
7
|
//# sourceMappingURL=server.d.ts.map
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAG3C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAKxC,eAAO,MAAM,YAAY,GAAS,IAAI,SAAS,GAAG,EAAE,EAChD,QAAQ,YAAY,EACpB,gBAAgB,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO;qBAGjC,IAAI;EAgBlC,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC"}
|
package/dist/server.js
CHANGED
|
@@ -3,26 +3,30 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.createServer = void 0;
|
|
7
7
|
const express_1 = __importDefault(require("express"));
|
|
8
8
|
const http_1 = __importDefault(require("http"));
|
|
9
9
|
const https_1 = __importDefault(require("https"));
|
|
10
10
|
const utils_1 = require("./utils");
|
|
11
11
|
const ramda_1 = require("ramda");
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
12
|
+
const createServer = async (config, registerRoutes) => {
|
|
13
|
+
return {
|
|
14
|
+
start: async (...args) => {
|
|
15
|
+
const expressApp = (0, express_1.default)();
|
|
16
|
+
const serviceApp = (0, ramda_1.pipe)(utils_1.registerMiddlewares, registerRoutes(...args), utils_1.registerErrorHandling)(expressApp);
|
|
17
|
+
const { port, secured } = config;
|
|
18
|
+
const server = secured ? https_1.default.createServer(serviceApp) : http_1.default.createServer(serviceApp);
|
|
19
|
+
return new Promise((resolve, reject) => {
|
|
20
|
+
server.listen(port, () => {
|
|
21
|
+
console.log(`Server is running on port ${port}`);
|
|
22
|
+
resolve();
|
|
23
|
+
}).on("error", (error) => {
|
|
24
|
+
console.error("Error starting the server:", error);
|
|
25
|
+
reject(error);
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
};
|
|
26
30
|
};
|
|
27
|
-
exports.
|
|
31
|
+
exports.createServer = createServer;
|
|
28
32
|
//# sourceMappingURL=server.js.map
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA2C;AAC3C,gDAAwB;AACxB,kDAA0B;AAE1B,mCAAqE;AACrE,iCAA6B;AAGtB,MAAM,YAAY,GAAG,KAAK,EAC7B,MAAoB,EACpB,cAA4D,EAC9D,EAAE;IACA,OAAO;QACH,KAAK,EAAE,KAAK,EAAE,GAAG,IAAU,EAAE,EAAE;YAC3B,MAAM,UAAU,GAAG,IAAA,iBAAO,GAAE,CAAC;YAC7B,MAAM,UAAU,GAAG,IAAA,YAAI,EAAC,2BAAmB,EAAE,cAAc,CAAC,GAAG,IAAI,CAAC,EAAE,6BAAqB,CAAC,CAAC,UAAU,CAAC,CAAC;YACzG,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;YACjC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,eAAK,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,cAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YACxF,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACzC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;oBACrB,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,EAAE,CAAC,CAAC;oBACjD,OAAO,EAAE,CAAC;gBACd,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;oBACrB,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;oBACnD,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC;KACJ,CAAC;AACN,CAAC,CAAC;AArBW,QAAA,YAAY,gBAqBvB"}
|