@datacapy/server 0.1.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.
Files changed (112) hide show
  1. package/LICENSE +29 -0
  2. package/README.md +485 -0
  3. package/dist/acl/role-assessor/all.d.ts +7 -0
  4. package/dist/acl/role-assessor/all.d.ts.map +1 -0
  5. package/dist/acl/role-assessor/all.js +18 -0
  6. package/dist/acl/role-assessor/all.js.map +1 -0
  7. package/dist/acl/role-assessor/index.d.ts +4 -0
  8. package/dist/acl/role-assessor/index.d.ts.map +1 -0
  9. package/dist/acl/role-assessor/index.js +7 -0
  10. package/dist/acl/role-assessor/index.js.map +1 -0
  11. package/dist/acl/role-assessor.d.ts +13 -0
  12. package/dist/acl/role-assessor.d.ts.map +1 -0
  13. package/dist/acl/role-assessor.js +20 -0
  14. package/dist/acl/role-assessor.js.map +1 -0
  15. package/dist/acl.d.ts +41 -0
  16. package/dist/acl.d.ts.map +1 -0
  17. package/dist/acl.js +116 -0
  18. package/dist/acl.js.map +1 -0
  19. package/dist/api-config.d.ts +92 -0
  20. package/dist/api-config.d.ts.map +1 -0
  21. package/dist/api-config.js +3 -0
  22. package/dist/api-config.js.map +1 -0
  23. package/dist/error.d.ts +30 -0
  24. package/dist/error.d.ts.map +1 -0
  25. package/dist/error.js +72 -0
  26. package/dist/error.js.map +1 -0
  27. package/dist/index.d.ts +9 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +28 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/remote-object/body-parser-configurer.d.ts +28 -0
  32. package/dist/remote-object/body-parser-configurer.d.ts.map +1 -0
  33. package/dist/remote-object/body-parser-configurer.js +103 -0
  34. package/dist/remote-object/body-parser-configurer.js.map +1 -0
  35. package/dist/remote-object/endpoint-resolver.d.ts +12 -0
  36. package/dist/remote-object/endpoint-resolver.d.ts.map +1 -0
  37. package/dist/remote-object/endpoint-resolver.js +58 -0
  38. package/dist/remote-object/endpoint-resolver.js.map +1 -0
  39. package/dist/remote-object/error-handler.d.ts +16 -0
  40. package/dist/remote-object/error-handler.d.ts.map +1 -0
  41. package/dist/remote-object/error-handler.js +149 -0
  42. package/dist/remote-object/error-handler.js.map +1 -0
  43. package/dist/remote-object/index.d.ts +8 -0
  44. package/dist/remote-object/index.d.ts.map +1 -0
  45. package/dist/remote-object/index.js +24 -0
  46. package/dist/remote-object/index.js.map +1 -0
  47. package/dist/remote-object/interfaces.d.ts +42 -0
  48. package/dist/remote-object/interfaces.d.ts.map +1 -0
  49. package/dist/remote-object/interfaces.js +3 -0
  50. package/dist/remote-object/interfaces.js.map +1 -0
  51. package/dist/remote-object/middleware-factory.d.ts +14 -0
  52. package/dist/remote-object/middleware-factory.d.ts.map +1 -0
  53. package/dist/remote-object/middleware-factory.js +66 -0
  54. package/dist/remote-object/middleware-factory.js.map +1 -0
  55. package/dist/remote-object/request-data-parser.d.ts +18 -0
  56. package/dist/remote-object/request-data-parser.d.ts.map +1 -0
  57. package/dist/remote-object/request-data-parser.js +75 -0
  58. package/dist/remote-object/request-data-parser.js.map +1 -0
  59. package/dist/remote-object/response-handler.d.ts +6 -0
  60. package/dist/remote-object/response-handler.d.ts.map +1 -0
  61. package/dist/remote-object/response-handler.js +20 -0
  62. package/dist/remote-object/response-handler.js.map +1 -0
  63. package/dist/remote-object.d.ts +50 -0
  64. package/dist/remote-object.d.ts.map +1 -0
  65. package/dist/remote-object.js +102 -0
  66. package/dist/remote-object.js.map +1 -0
  67. package/dist/server/acl-registry.d.ts +12 -0
  68. package/dist/server/acl-registry.d.ts.map +1 -0
  69. package/dist/server/acl-registry.js +21 -0
  70. package/dist/server/acl-registry.js.map +1 -0
  71. package/dist/server/api-config-registry.d.ts +10 -0
  72. package/dist/server/api-config-registry.d.ts.map +1 -0
  73. package/dist/server/api-config-registry.js +19 -0
  74. package/dist/server/api-config-registry.js.map +1 -0
  75. package/dist/server/configuration-manager.d.ts +12 -0
  76. package/dist/server/configuration-manager.d.ts.map +1 -0
  77. package/dist/server/configuration-manager.js +62 -0
  78. package/dist/server/configuration-manager.js.map +1 -0
  79. package/dist/server/endpoint-registrar.d.ts +13 -0
  80. package/dist/server/endpoint-registrar.d.ts.map +1 -0
  81. package/dist/server/endpoint-registrar.js +92 -0
  82. package/dist/server/endpoint-registrar.js.map +1 -0
  83. package/dist/server/express-app-manager.d.ts +14 -0
  84. package/dist/server/express-app-manager.d.ts.map +1 -0
  85. package/dist/server/express-app-manager.js +33 -0
  86. package/dist/server/express-app-manager.js.map +1 -0
  87. package/dist/server/http-server-manager.d.ts +16 -0
  88. package/dist/server/http-server-manager.d.ts.map +1 -0
  89. package/dist/server/http-server-manager.js +40 -0
  90. package/dist/server/http-server-manager.js.map +1 -0
  91. package/dist/server/index.d.ts +9 -0
  92. package/dist/server/index.d.ts.map +1 -0
  93. package/dist/server/index.js +33 -0
  94. package/dist/server/index.js.map +1 -0
  95. package/dist/server/interfaces.d.ts +70 -0
  96. package/dist/server/interfaces.d.ts.map +1 -0
  97. package/dist/server/interfaces.js +3 -0
  98. package/dist/server/interfaces.js.map +1 -0
  99. package/dist/server/lifecycle-manager.d.ts +19 -0
  100. package/dist/server/lifecycle-manager.d.ts.map +1 -0
  101. package/dist/server/lifecycle-manager.js +60 -0
  102. package/dist/server/lifecycle-manager.js.map +1 -0
  103. package/dist/server-config.d.ts +10 -0
  104. package/dist/server-config.d.ts.map +1 -0
  105. package/dist/server-config.js +3 -0
  106. package/dist/server-config.js.map +1 -0
  107. package/dist/server.d.ts +53 -0
  108. package/dist/server.d.ts.map +1 -0
  109. package/dist/server.js +115 -0
  110. package/dist/server.js.map +1 -0
  111. package/package.json +66 -0
  112. package/tsconfig.json +27 -0
@@ -0,0 +1,102 @@
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
+ exports.ServerRemoteObject = void 0;
7
+ const acl_1 = __importDefault(require("./acl"));
8
+ const error_1 = require("./error");
9
+ const request_data_parser_1 = require("./remote-object/request-data-parser");
10
+ const body_parser_configurer_1 = require("./remote-object/body-parser-configurer");
11
+ const response_handler_1 = require("./remote-object/response-handler");
12
+ const error_handler_1 = require("./remote-object/error-handler");
13
+ const endpoint_resolver_1 = require("./remote-object/endpoint-resolver");
14
+ const middleware_factory_1 = require("./remote-object/middleware-factory");
15
+ class ServerRemoteObject {
16
+ constructor(object, config, modelManager) {
17
+ var _a;
18
+ this.config = config ? config : {};
19
+ this.config.path = this.config.path ? this.config.path : '';
20
+ this.config.endpoints = this.config.endpoints ? this.config.endpoints : {};
21
+ this.config.acl = this.config.acl ? this.config.acl : {};
22
+ this.config.acl.rules = this.config.acl.rules ? this.config.acl.rules : [];
23
+ this.config.server = this.config.server ? this.config.server : { path: '' };
24
+ this.object = object;
25
+ this.modelManager = modelManager;
26
+ this.acl = new acl_1.default({
27
+ rules: this.config.acl.rules,
28
+ endpoints: this.config.endpoints,
29
+ });
30
+ this.requestDataParser = new request_data_parser_1.RequestDataParser(this.config.server);
31
+ this.bodyParserConfigurer = new body_parser_configurer_1.BodyParserConfigurer();
32
+ this.responseHandler = new response_handler_1.ResponseHandler();
33
+ this.errorHandler = new error_handler_1.ErrorHandler(console, !!((_a = this.config.server) === null || _a === void 0 ? void 0 : _a.exposeErrorDetails));
34
+ this.endpointResolver = new endpoint_resolver_1.EndpointResolver(this.object, this.modelManager);
35
+ this.middlewareFactory = new middleware_factory_1.MiddlewareFactory(this.requestDataParser, this.responseHandler, this.errorHandler, this);
36
+ }
37
+ setLogger(logger) {
38
+ this.errorHandler.setLogger(logger);
39
+ return this;
40
+ }
41
+ setErrorTranslator(errorTranslator) {
42
+ if (errorTranslator) {
43
+ this.errorHandler.setErrorTranslator(errorTranslator);
44
+ }
45
+ return this;
46
+ }
47
+ initRouter(router) {
48
+ const middlewareConfigs = this.getMiddlewareConfig();
49
+ middlewareConfigs.forEach((middlewareConfig) => {
50
+ const bodyParserMiddleware = this.bodyParserConfigurer.getMiddleware(middlewareConfig.bodyParserConfig);
51
+ router[middlewareConfig.verb].apply(router, [
52
+ middlewareConfig.path,
53
+ ...bodyParserMiddleware,
54
+ middlewareConfig.callback,
55
+ ]);
56
+ });
57
+ }
58
+ setAcl(acl) {
59
+ this.acl = acl;
60
+ }
61
+ getMiddlewareConfig() {
62
+ const middleware = [];
63
+ for (const endpointName in this.config.endpoints) {
64
+ const endpointConfig = this.config.endpoints[endpointName];
65
+ const verbs = endpointConfig.verbs ? endpointConfig.verbs : ['get'];
66
+ const method = endpointConfig.method ? endpointConfig.method : '';
67
+ const endpointObject = this.endpointResolver.resolveEndpointObject(endpointConfig);
68
+ const path = this.endpointResolver.resolveEndpointPath(endpointConfig, method);
69
+ const bodyParserConfigInit = endpointConfig.bodyParser
70
+ ? endpointConfig.bodyParser
71
+ : {};
72
+ const bodyParserConfig = this.bodyParserConfigurer.normalizeConfig(bodyParserConfigInit);
73
+ const requestDataConfig = endpointConfig.data ? endpointConfig.data : {};
74
+ const priority = endpointConfig.priority != undefined ? endpointConfig.priority : 0;
75
+ const response = endpointConfig.response ? endpointConfig.response : {};
76
+ const responseSuccess = response.success ? response.success : {};
77
+ const responseErrorConfig = response.error
78
+ ? {
79
+ ...response.error,
80
+ ...error_1.serverErrorApiEndpointResponseConfig,
81
+ }
82
+ : error_1.serverErrorApiEndpointResponseConfig;
83
+ verbs.forEach((verb) => {
84
+ const middlewareCallback = this.middlewareFactory.createMiddlewareCallback(endpointName, endpointConfig, endpointObject, method, requestDataConfig, responseSuccess, responseErrorConfig);
85
+ const fullPath = this.config.path + path;
86
+ middleware.push({
87
+ endpointName: endpointName,
88
+ method: method,
89
+ verb: verb,
90
+ path: fullPath,
91
+ callback: middlewareCallback,
92
+ priority: priority,
93
+ bodyParserConfig,
94
+ });
95
+ });
96
+ }
97
+ return middleware.sort((a, b) => b.priority - a.priority);
98
+ }
99
+ }
100
+ exports.ServerRemoteObject = ServerRemoteObject;
101
+ exports.default = ServerRemoteObject;
102
+ //# sourceMappingURL=remote-object.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-object.js","sourceRoot":"","sources":["../src/remote-object.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import ServerAclRoleAssessor from '../acl/role-assessor';
2
+ import { AclRegistryInterface } from './interfaces';
3
+ export declare class AclRegistry implements AclRegistryInterface {
4
+ private aclRoleAssessors;
5
+ constructor();
6
+ addRoleAssessor(roleAssessor: ServerAclRoleAssessor): void;
7
+ addRoleAssessors(roleAssessors: ServerAclRoleAssessor[]): void;
8
+ getRoleAssessors(): {
9
+ [key: string]: any;
10
+ };
11
+ }
12
+ //# sourceMappingURL=acl-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acl-registry.d.ts","sourceRoot":"","sources":["../../src/server/acl-registry.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAMnD,qBAAa,WAAY,YAAW,oBAAoB;IACtD,OAAO,CAAC,gBAAgB,CAAwB;;IAMhD,eAAe,CAAC,YAAY,EAAE,qBAAqB,GAAG,IAAI;IAI1D,gBAAgB,CAAC,aAAa,EAAE,qBAAqB,EAAE,GAAG,IAAI;IAM9D,gBAAgB,IAAI;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE;CAG3C"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AclRegistry = void 0;
4
+ class AclRegistry {
5
+ constructor() {
6
+ this.aclRoleAssessors = {};
7
+ }
8
+ addRoleAssessor(roleAssessor) {
9
+ this.aclRoleAssessors[roleAssessor.role] = roleAssessor;
10
+ }
11
+ addRoleAssessors(roleAssessors) {
12
+ roleAssessors.forEach((roleAssessor) => {
13
+ this.addRoleAssessor(roleAssessor);
14
+ });
15
+ }
16
+ getRoleAssessors() {
17
+ return this.aclRoleAssessors;
18
+ }
19
+ }
20
+ exports.AclRegistry = AclRegistry;
21
+ //# sourceMappingURL=acl-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acl-registry.js","sourceRoot":"","sources":["../../src/server/acl-registry.ts"],"names":[],"mappings":";;;AAOA,MAAa,WAAW;IAGtB;QACE,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAA;IAC5B,CAAC;IAED,eAAe,CAAC,YAAmC;QACjD,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,YAAY,CAAA;IACzD,CAAC;IAED,gBAAgB,CAAC,aAAsC;QACrD,aAAa,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE;YACrC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAA;QACpC,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,gBAAgB,CAAA;IAC9B,CAAC;CACF;AApBD,kCAoBC"}
@@ -0,0 +1,10 @@
1
+ import { ServerApiConfig } from '../api-config';
2
+ import { ApiConfigRegistryInterface } from './interfaces';
3
+ export declare class ApiConfigRegistry implements ApiConfigRegistryInterface {
4
+ private apiConfigs;
5
+ constructor();
6
+ addApiConfig(config: ServerApiConfig): void;
7
+ addApiConfigs(configs: Array<ServerApiConfig>): void;
8
+ getApiConfigs(): ServerApiConfig[];
9
+ }
10
+ //# sourceMappingURL=api-config-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-config-registry.d.ts","sourceRoot":"","sources":["../../src/server/api-config-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAA;AAMzD,qBAAa,iBAAkB,YAAW,0BAA0B;IAClE,OAAO,CAAC,UAAU,CAAwB;;IAM1C,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IAI3C,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,eAAe,CAAC,GAAG,IAAI;IAIpD,aAAa,IAAI,eAAe,EAAE;CAGnC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApiConfigRegistry = void 0;
4
+ class ApiConfigRegistry {
5
+ constructor() {
6
+ this.apiConfigs = [];
7
+ }
8
+ addApiConfig(config) {
9
+ this.apiConfigs.push(config);
10
+ }
11
+ addApiConfigs(configs) {
12
+ this.apiConfigs = this.apiConfigs.concat(configs);
13
+ }
14
+ getApiConfigs() {
15
+ return this.apiConfigs;
16
+ }
17
+ }
18
+ exports.ApiConfigRegistry = ApiConfigRegistry;
19
+ //# sourceMappingURL=api-config-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-config-registry.js","sourceRoot":"","sources":["../../src/server/api-config-registry.ts"],"names":[],"mappings":";;;AAOA,MAAa,iBAAiB;IAG5B;QACE,IAAI,CAAC,UAAU,GAAG,EAAE,CAAA;IACtB,CAAC;IAED,YAAY,CAAC,MAAuB;QAClC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC9B,CAAC;IAED,aAAa,CAAC,OAA+B;QAC3C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACnD,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAA;IACxB,CAAC;CACF;AAlBD,8CAkBC"}
@@ -0,0 +1,12 @@
1
+ import { ModelManager } from '@datacapy/om';
2
+ import { ServerConfig } from '../server-config';
3
+ import { ConfigurationManagerInterface, LoggerInterface, ModelManagerInterface } from './interfaces';
4
+ export declare class ConfigurationManager implements ConfigurationManagerInterface {
5
+ private config;
6
+ private modelManager;
7
+ constructor(options?: ServerConfig, modelManager?: ModelManager);
8
+ getConfig(): ServerConfig;
9
+ getModelManager(): ModelManagerInterface;
10
+ setLogger(logger: LoggerInterface): void;
11
+ }
12
+ //# sourceMappingURL=configuration-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configuration-manager.d.ts","sourceRoot":"","sources":["../../src/server/configuration-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE3C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EACL,6BAA6B,EAC7B,eAAe,EACf,qBAAqB,EACtB,MAAM,cAAc,CAAA;AAOrB,qBAAa,oBAAqB,YAAW,6BAA6B;IACxE,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,YAAY,CAAuB;gBAE/B,OAAO,CAAC,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,YAAY;IAgB/D,SAAS,IAAI,YAAY;IAIzB,eAAe,IAAI,qBAAqB;IAIxC,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;CAGzC"}
@@ -0,0 +1,62 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.ConfigurationManager = void 0;
37
+ const om_1 = require("@datacapy/om");
38
+ const path = __importStar(require("path"));
39
+ class ConfigurationManager {
40
+ constructor(options, modelManager) {
41
+ this.config = options ? options : { path: '' };
42
+ this.config.path = this.config.path ? this.config.path : '/api';
43
+ this.config.port = this.config.port ? this.config.port : 3838;
44
+ this.config.appDir = this.config.appDir
45
+ ? path.resolve(this.config.appDir)
46
+ : '';
47
+ this.modelManager = modelManager
48
+ ? modelManager
49
+ : new om_1.ModelManager(this.config.model ? this.config.model : undefined);
50
+ }
51
+ getConfig() {
52
+ return this.config;
53
+ }
54
+ getModelManager() {
55
+ return this.modelManager;
56
+ }
57
+ setLogger(logger) {
58
+ this.modelManager.setLogger(logger);
59
+ }
60
+ }
61
+ exports.ConfigurationManager = ConfigurationManager;
62
+ //# sourceMappingURL=configuration-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configuration-manager.js","sourceRoot":"","sources":["../../src/server/configuration-manager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAA2C;AAQ3C,2CAA4B;AAM5B,MAAa,oBAAoB;IAI/B,YAAY,OAAsB,EAAE,YAA2B;QAE7D,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAA;QAC9C,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAA;QAC/D,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;QAE7D,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;YACrC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YAClC,CAAC,CAAC,EAAE,CAAA;QAGN,IAAI,CAAC,YAAY,GAAG,YAAY;YAC9B,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,IAAI,iBAAY,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IACzE,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAA;IAC1B,CAAC;IAED,SAAS,CAAC,MAAuB;QAC/B,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IACrC,CAAC;CACF;AA/BD,oDA+BC"}
@@ -0,0 +1,13 @@
1
+ import { ConfigurationManagerInterface, ExpressAppManagerInterface, AclRegistryInterface, ApiConfigRegistryInterface, EndpointRegistrarInterface, LoggerInterface } from './interfaces';
2
+ export declare class EndpointRegistrar implements EndpointRegistrarInterface {
3
+ private configurationManager;
4
+ private expressAppManager;
5
+ private aclRegistry;
6
+ private apiConfigRegistry;
7
+ private logger;
8
+ private errorTranslator?;
9
+ constructor(configurationManager: ConfigurationManagerInterface, expressAppManager: ExpressAppManagerInterface, aclRegistry: AclRegistryInterface, apiConfigRegistry: ApiConfigRegistryInterface, logger: LoggerInterface);
10
+ registerEndpoints(): void;
11
+ private registerEndpointsConfig;
12
+ }
13
+ //# sourceMappingURL=endpoint-registrar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-registrar.d.ts","sourceRoot":"","sources":["../../src/server/endpoint-registrar.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,6BAA6B,EAC7B,0BAA0B,EAC1B,oBAAoB,EACpB,0BAA0B,EAC1B,0BAA0B,EAC1B,eAAe,EAChB,MAAM,cAAc,CAAA;AAkBrB,qBAAa,iBAAkB,YAAW,0BAA0B;IAClE,OAAO,CAAC,oBAAoB,CAA+B;IAC3D,OAAO,CAAC,iBAAiB,CAA4B;IACrD,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,iBAAiB,CAA4B;IACrD,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,eAAe,CAAC,CAAiB;gBAGvC,oBAAoB,EAAE,6BAA6B,EACnD,iBAAiB,EAAE,0BAA0B,EAC7C,WAAW,EAAE,oBAAoB,EACjC,iBAAiB,EAAE,0BAA0B,EAC7C,MAAM,EAAE,eAAe;IASzB,iBAAiB,IAAI,IAAI;IASzB,OAAO,CAAC,uBAAuB;CAyEhC"}
@@ -0,0 +1,92 @@
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
+ exports.EndpointRegistrar = void 0;
7
+ const acl_1 = __importDefault(require("../acl"));
8
+ const remote_object_1 = require("../remote-object");
9
+ function camelToKebab(input) {
10
+ return input ? input.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase() : '';
11
+ }
12
+ class EndpointRegistrar {
13
+ constructor(configurationManager, expressAppManager, aclRegistry, apiConfigRegistry, logger) {
14
+ this.configurationManager = configurationManager;
15
+ this.expressAppManager = expressAppManager;
16
+ this.aclRegistry = aclRegistry;
17
+ this.apiConfigRegistry = apiConfigRegistry;
18
+ this.logger = logger;
19
+ }
20
+ registerEndpoints() {
21
+ const apiConfigs = this.apiConfigRegistry.getApiConfigs();
22
+ if (apiConfigs) {
23
+ for (const apiConfig of apiConfigs) {
24
+ this.registerEndpointsConfig(apiConfig);
25
+ }
26
+ }
27
+ }
28
+ registerEndpointsConfig(config) {
29
+ let remoteObjectName = null;
30
+ let remoteObject = null;
31
+ const modelManager = this.configurationManager.getModelManager();
32
+ if (config.object) {
33
+ remoteObject = config.object;
34
+ }
35
+ else if (config.service) {
36
+ remoteObjectName = config.service;
37
+ remoteObject = modelManager.services[remoteObjectName];
38
+ }
39
+ else if (config.repo) {
40
+ remoteObjectName = config.repo;
41
+ remoteObject = modelManager.repos[remoteObjectName];
42
+ }
43
+ const path = config.path != null ? config.path : '/' + camelToKebab(remoteObjectName);
44
+ const aclConfig = config.acl ? config.acl : {};
45
+ const endpointsDisable = config.disable ? config.disable : {};
46
+ const endpointDisableGroup = config.disableGroup ? config.disableGroup : {};
47
+ const endpoints = config.endpoints ? config.endpoints : {};
48
+ if (config.enable === false)
49
+ return;
50
+ for (const endpointName in endpoints) {
51
+ const groups = endpoints[endpointName].groups;
52
+ if (Array.isArray(groups)) {
53
+ groups.forEach(function (group) {
54
+ if (endpoints[endpointName] && endpointDisableGroup[group] == true) {
55
+ delete endpoints[endpointName];
56
+ }
57
+ });
58
+ }
59
+ if (endpoints[endpointName] && endpointsDisable[endpointName] == true) {
60
+ delete endpoints[endpointName];
61
+ }
62
+ if (endpoints[endpointName] && endpoints[endpointName].enable === false) {
63
+ delete endpoints[endpointName];
64
+ }
65
+ }
66
+ if (Object.keys(endpoints).length == 0)
67
+ return;
68
+ const acl = new acl_1.default({
69
+ rules: aclConfig.rules,
70
+ endpoints,
71
+ });
72
+ acl.loadDefaultRoleAssessors();
73
+ acl.setRepos(modelManager.repos);
74
+ const aclRoleAssessors = this.aclRegistry.getRoleAssessors();
75
+ for (const role in aclRoleAssessors) {
76
+ acl.addRoleAssessor(aclRoleAssessors[role]);
77
+ }
78
+ const serverConfig = this.configurationManager.getConfig();
79
+ const remote = new remote_object_1.ServerRemoteObject(remoteObject, {
80
+ path,
81
+ endpoints,
82
+ server: serverConfig,
83
+ remoteObjectName,
84
+ }, modelManager);
85
+ remote.setLogger(this.logger);
86
+ remote.setErrorTranslator(this.errorTranslator);
87
+ remote.setAcl(acl);
88
+ remote.initRouter(this.expressAppManager.getRouter());
89
+ }
90
+ }
91
+ exports.EndpointRegistrar = EndpointRegistrar;
92
+ //# sourceMappingURL=endpoint-registrar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-registrar.js","sourceRoot":"","sources":["../../src/server/endpoint-registrar.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import express from 'express';
2
+ import { ExpressAppManagerInterface, LoggerInterface } from './interfaces';
3
+ import { ServerConfig } from '../server-config';
4
+ export declare class ExpressAppManager implements ExpressAppManagerInterface {
5
+ private app;
6
+ private router;
7
+ private logger;
8
+ constructor(config: ServerConfig, logger: LoggerInterface);
9
+ getApp(): express.Application;
10
+ getRouter(): express.Router;
11
+ mountRouter(path: string): void;
12
+ setupErrorHandler(logger: LoggerInterface): void;
13
+ }
14
+ //# sourceMappingURL=express-app-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"express-app-manager.d.ts","sourceRoot":"","sources":["../../src/server/express-app-manager.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAA;AAE7B,OAAO,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAM/C,qBAAa,iBAAkB,YAAW,0BAA0B;IAClE,OAAO,CAAC,GAAG,CAAqB;IAChC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAiB;gBAEnB,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe;IAMzD,MAAM,IAAI,OAAO,CAAC,WAAW;IAI7B,SAAS,IAAI,OAAO,CAAC,MAAM;IAI3B,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI/B,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;CAQjD"}
@@ -0,0 +1,33 @@
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
+ exports.ExpressAppManager = void 0;
7
+ const express_1 = __importDefault(require("express"));
8
+ class ExpressAppManager {
9
+ constructor(config, logger) {
10
+ this.app = (0, express_1.default)();
11
+ this.router = express_1.default.Router();
12
+ this.logger = logger;
13
+ }
14
+ getApp() {
15
+ return this.app;
16
+ }
17
+ getRouter() {
18
+ return this.router;
19
+ }
20
+ mountRouter(path) {
21
+ this.app.use(path, this.router);
22
+ }
23
+ setupErrorHandler(logger) {
24
+ this.logger = logger;
25
+ this.app.use((err, req, res, next) => {
26
+ this.logger.error({ err, req, res });
27
+ res.status(500).send('Something broke!');
28
+ next();
29
+ });
30
+ }
31
+ }
32
+ exports.ExpressAppManager = ExpressAppManager;
33
+ //# sourceMappingURL=express-app-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"express-app-manager.js","sourceRoot":"","sources":["../../src/server/express-app-manager.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA6B;AAS7B,MAAa,iBAAiB;IAK5B,YAAY,MAAoB,EAAE,MAAuB;QACvD,IAAI,CAAC,GAAG,GAAG,IAAA,iBAAO,GAAE,CAAA;QACpB,IAAI,CAAC,MAAM,GAAG,iBAAO,CAAC,MAAM,EAAE,CAAA;QAC9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,GAAG,CAAA;IACjB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,WAAW,CAAC,IAAY;QACtB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACjC,CAAC;IAED,iBAAiB,CAAC,MAAuB;QACvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;YACpC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;YACxC,IAAI,EAAE,CAAA;QACR,CAAC,CAAC,CAAA;IACJ,CAAC;CACF;AA/BD,8CA+BC"}
@@ -0,0 +1,16 @@
1
+ import * as _Http from 'http';
2
+ import express from 'express';
3
+ import { HttpServerManagerInterface, LoggerInterface } from './interfaces';
4
+ import { ServerConfig } from '../server-config';
5
+ export declare class HttpServerManager implements HttpServerManagerInterface {
6
+ private server;
7
+ private app;
8
+ private config;
9
+ private logger;
10
+ private onShutdown;
11
+ constructor(app: express.Application, config: ServerConfig, logger: LoggerInterface, onShutdown: () => Promise<void>);
12
+ start(): Promise<void>;
13
+ shutdown(): Promise<any>;
14
+ getServer(): _Http.Server | null;
15
+ }
16
+ //# sourceMappingURL=http-server-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-server-manager.d.ts","sourceRoot":"","sources":["../../src/server/http-server-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,CAAA;AAC7B,OAAO,OAAO,MAAM,SAAS,CAAA;AAE7B,OAAO,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAM/C,qBAAa,iBAAkB,YAAW,0BAA0B;IAClE,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,GAAG,CAAqB;IAChC,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,UAAU,CAAqB;gBAGrC,GAAG,EAAE,OAAO,CAAC,WAAW,EACxB,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,eAAe,EACvB,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC;IAS3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBtB,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC;IAK9B,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI;CAGjC"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HttpServerManager = void 0;
4
+ class HttpServerManager {
5
+ constructor(app, config, logger, onShutdown) {
6
+ this.app = app;
7
+ this.config = config;
8
+ this.logger = logger;
9
+ this.onShutdown = onShutdown;
10
+ this.server = null;
11
+ }
12
+ async start() {
13
+ this.server = this.app.listen(this.config.port, () => {
14
+ this.logger.info('Listening on port ' + this.config.port);
15
+ });
16
+ process.on('SIGINT', () => {
17
+ this.onShutdown().then(() => {
18
+ setTimeout(function () {
19
+ process.exit(0);
20
+ }, 5000);
21
+ });
22
+ });
23
+ process.on('SIGTERM', () => {
24
+ this.onShutdown().then(() => {
25
+ setTimeout(function () {
26
+ process.exit(0);
27
+ }, 5000);
28
+ });
29
+ });
30
+ }
31
+ async shutdown() {
32
+ this.logger.info('Shutting down');
33
+ return this.server ? this.server.close() : undefined;
34
+ }
35
+ getServer() {
36
+ return this.server;
37
+ }
38
+ }
39
+ exports.HttpServerManager = HttpServerManager;
40
+ //# sourceMappingURL=http-server-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-server-manager.js","sourceRoot":"","sources":["../../src/server/http-server-manager.ts"],"names":[],"mappings":";;;AAUA,MAAa,iBAAiB;IAO5B,YACE,GAAwB,EACxB,MAAoB,EACpB,MAAuB,EACvB,UAA+B;QAE/B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;IACpB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;YACnD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC3D,CAAC,CAAC,CAAA;QAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YACxB,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC1B,UAAU,CAAC;oBACT,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACjB,CAAC,EAAE,IAAI,CAAC,CAAA;YACV,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YACzB,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC1B,UAAU,CAAC;oBACT,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACjB,CAAC,EAAE,IAAI,CAAC,CAAA;YACV,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QACjC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;IACtD,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;CACF;AAlDD,8CAkDC"}
@@ -0,0 +1,9 @@
1
+ export * from './interfaces';
2
+ export { ConfigurationManager } from './configuration-manager';
3
+ export { LifecycleManager } from './lifecycle-manager';
4
+ export { ExpressAppManager } from './express-app-manager';
5
+ export { HttpServerManager } from './http-server-manager';
6
+ export { AclRegistry } from './acl-registry';
7
+ export { ApiConfigRegistry } from './api-config-registry';
8
+ export { EndpointRegistrar } from './endpoint-registrar';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA"}
@@ -0,0 +1,33 @@
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
+ exports.EndpointRegistrar = exports.ApiConfigRegistry = exports.AclRegistry = exports.HttpServerManager = exports.ExpressAppManager = exports.LifecycleManager = exports.ConfigurationManager = void 0;
18
+ __exportStar(require("./interfaces"), exports);
19
+ var configuration_manager_1 = require("./configuration-manager");
20
+ Object.defineProperty(exports, "ConfigurationManager", { enumerable: true, get: function () { return configuration_manager_1.ConfigurationManager; } });
21
+ var lifecycle_manager_1 = require("./lifecycle-manager");
22
+ Object.defineProperty(exports, "LifecycleManager", { enumerable: true, get: function () { return lifecycle_manager_1.LifecycleManager; } });
23
+ var express_app_manager_1 = require("./express-app-manager");
24
+ Object.defineProperty(exports, "ExpressAppManager", { enumerable: true, get: function () { return express_app_manager_1.ExpressAppManager; } });
25
+ var http_server_manager_1 = require("./http-server-manager");
26
+ Object.defineProperty(exports, "HttpServerManager", { enumerable: true, get: function () { return http_server_manager_1.HttpServerManager; } });
27
+ var acl_registry_1 = require("./acl-registry");
28
+ Object.defineProperty(exports, "AclRegistry", { enumerable: true, get: function () { return acl_registry_1.AclRegistry; } });
29
+ var api_config_registry_1 = require("./api-config-registry");
30
+ Object.defineProperty(exports, "ApiConfigRegistry", { enumerable: true, get: function () { return api_config_registry_1.ApiConfigRegistry; } });
31
+ var endpoint_registrar_1 = require("./endpoint-registrar");
32
+ Object.defineProperty(exports, "EndpointRegistrar", { enumerable: true, get: function () { return endpoint_registrar_1.EndpointRegistrar; } });
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,+CAA4B;AAC5B,iEAA8D;AAArD,6HAAA,oBAAoB,OAAA;AAC7B,yDAAsD;AAA7C,qHAAA,gBAAgB,OAAA;AACzB,6DAAyD;AAAhD,wHAAA,iBAAiB,OAAA;AAC1B,6DAAyD;AAAhD,wHAAA,iBAAiB,OAAA;AAC1B,+CAA4C;AAAnC,2GAAA,WAAW,OAAA;AACpB,6DAAyD;AAAhD,wHAAA,iBAAiB,OAAA;AAC1B,2DAAwD;AAA/C,uHAAA,iBAAiB,OAAA"}