@squidcloud/local-backend 1.0.328 → 1.0.330
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/dist/internal-common/src/types/bundle-data.types.d.ts +2 -0
- package/dist/internal-common/src/utils/tsoa-utils.d.ts +9 -0
- package/dist/internal-common/src/utils/tsoa-utils.js +174 -0
- package/dist/internal-common/src/utils/tsoa-utils.js.map +1 -0
- package/dist/local-backend/src/local-backend-socket.service.d.ts +0 -1
- package/dist/local-backend/src/local-backend-socket.service.js +27 -90
- package/dist/local-backend/src/local-backend-socket.service.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -31,6 +31,7 @@ export interface ApplicationBundleData {
|
|
|
31
31
|
clientConnectionStateChangeHandlers?: Array<ServiceFunctionName>;
|
|
32
32
|
aiFunctions?: Record<FunctionName, AiFunctionMetadata>;
|
|
33
33
|
openApiControllers?: Array<OpenApiController>;
|
|
34
|
+
openApiControllersMap?: Record<string, Array<OpenApiController>>;
|
|
34
35
|
queues?: Record<IntegrationId, QueueMetadata>;
|
|
35
36
|
metrics?: MetricsApplicationBundleData;
|
|
36
37
|
limits?: Record<ServiceFunctionName, LimiterOptions>;
|
|
@@ -38,6 +39,7 @@ export interface ApplicationBundleData {
|
|
|
38
39
|
export interface LocalBackendData {
|
|
39
40
|
applicationBundleData: ApplicationBundleData;
|
|
40
41
|
openApiSpecStr?: string;
|
|
42
|
+
openApiSpecsMap?: Record<string, string>;
|
|
41
43
|
}
|
|
42
44
|
export interface AiFunctionMetadata {
|
|
43
45
|
serviceFunction: ServiceFunctionName;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface OpenApiSpecAndControllers {
|
|
2
|
+
openApiControllersMap: Record<string, string>;
|
|
3
|
+
openApiSpecsMap: Record<string, string>;
|
|
4
|
+
}
|
|
5
|
+
export declare class TsoaUtils {
|
|
6
|
+
constructor();
|
|
7
|
+
static generateAllSpecs(verbose?: boolean): Promise<OpenApiSpecAndControllers>;
|
|
8
|
+
private static extractTsoaName;
|
|
9
|
+
}
|
|
@@ -0,0 +1,174 @@
|
|
|
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.TsoaUtils = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const fsPromises = __importStar(require("fs/promises"));
|
|
39
|
+
const path = __importStar(require("path"));
|
|
40
|
+
const resolve_1 = require("./resolve");
|
|
41
|
+
const shell_runner_1 = require("../../../local-backend/src/utils/shell-runner");
|
|
42
|
+
class TsoaUtils {
|
|
43
|
+
constructor() { }
|
|
44
|
+
static async generateAllSpecs(verbose = false) {
|
|
45
|
+
const specsMap = {};
|
|
46
|
+
let files = await fsPromises.readdir(process.cwd());
|
|
47
|
+
files = files.filter(file => /^tsoa.*\.json$/.test(file));
|
|
48
|
+
if (!files.includes('tsoa.json')) {
|
|
49
|
+
const localBackendModule = await (0, resolve_1.findModulePath)('@squidcloud/local-backend');
|
|
50
|
+
if (localBackendModule) {
|
|
51
|
+
const fallback = path.relative(process.cwd(), path.resolve(localBackendModule, '../../tsoa.json'));
|
|
52
|
+
if (verbose) {
|
|
53
|
+
console.log(`"tsoa.json" not found in current directory. Using fallback: ${fallback}`);
|
|
54
|
+
}
|
|
55
|
+
files.push(fallback);
|
|
56
|
+
}
|
|
57
|
+
else if (verbose) {
|
|
58
|
+
console.log(`"tsoa.json" not found and no local-backend module found.`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (verbose) {
|
|
62
|
+
console.log(`Found TSOA config file(s):`, files);
|
|
63
|
+
}
|
|
64
|
+
for (const file of files) {
|
|
65
|
+
const baseName = path.basename(file);
|
|
66
|
+
const specName = TsoaUtils.extractTsoaName(baseName);
|
|
67
|
+
const outputDir = path.join('dist', specName);
|
|
68
|
+
if (!fs.existsSync(outputDir)) {
|
|
69
|
+
fs.mkdirSync(outputDir, { recursive: true });
|
|
70
|
+
}
|
|
71
|
+
let configContent;
|
|
72
|
+
try {
|
|
73
|
+
configContent = await fsPromises.readFile(file, { encoding: 'utf8' });
|
|
74
|
+
}
|
|
75
|
+
catch (e) {
|
|
76
|
+
if (verbose) {
|
|
77
|
+
console.error(`Error reading config file ${file}:`, e);
|
|
78
|
+
}
|
|
79
|
+
throw e;
|
|
80
|
+
}
|
|
81
|
+
let config;
|
|
82
|
+
try {
|
|
83
|
+
config = JSON.parse(configContent);
|
|
84
|
+
}
|
|
85
|
+
catch (e) {
|
|
86
|
+
if (verbose) {
|
|
87
|
+
console.error(`Error parsing JSON from ${file}:`, e);
|
|
88
|
+
}
|
|
89
|
+
throw e;
|
|
90
|
+
}
|
|
91
|
+
config.spec = config.spec || {};
|
|
92
|
+
config.routes = config.routes || {};
|
|
93
|
+
config.spec.outputDirectory = outputDir;
|
|
94
|
+
config.routes.routesDir = outputDir;
|
|
95
|
+
const tempConfigPath = `temp-tsoa-config-${specName}.json`;
|
|
96
|
+
try {
|
|
97
|
+
await fsPromises.writeFile(tempConfigPath, JSON.stringify(config, null, 2), { encoding: 'utf8' });
|
|
98
|
+
}
|
|
99
|
+
catch (e) {
|
|
100
|
+
if (verbose) {
|
|
101
|
+
console.error(`Error writing temporary config file ${tempConfigPath}:`, e);
|
|
102
|
+
}
|
|
103
|
+
throw e;
|
|
104
|
+
}
|
|
105
|
+
const specCmd = `npx tsoa spec -c ${tempConfigPath}`;
|
|
106
|
+
const routesCmd = `npx tsoa routes -c ${tempConfigPath}`;
|
|
107
|
+
if (verbose) {
|
|
108
|
+
console.log(`Processing ${file} as "${specName}" with temporary config ${tempConfigPath}`);
|
|
109
|
+
console.log(`Running: ${specCmd}`);
|
|
110
|
+
console.log(`Running: ${routesCmd}`);
|
|
111
|
+
}
|
|
112
|
+
try {
|
|
113
|
+
await Promise.all([(0, shell_runner_1.runInShell)(specCmd, process.cwd()), (0, shell_runner_1.runInShell)(routesCmd, process.cwd())]);
|
|
114
|
+
}
|
|
115
|
+
catch (e) {
|
|
116
|
+
const errorMessage = e?.stderr || e;
|
|
117
|
+
if (typeof errorMessage === 'string' && errorMessage.includes('no controllers found')) {
|
|
118
|
+
if (verbose) {
|
|
119
|
+
console.log(`No controllers found for ${file}, skipping...`);
|
|
120
|
+
}
|
|
121
|
+
await fsPromises.unlink(tempConfigPath);
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
if (verbose) {
|
|
125
|
+
console.error(`Error processing ${file}:\n`, errorMessage);
|
|
126
|
+
}
|
|
127
|
+
await fsPromises.unlink(tempConfigPath);
|
|
128
|
+
throw new Error(`Failed to process ${file}`);
|
|
129
|
+
}
|
|
130
|
+
const swaggerOutput = path.join(outputDir, 'swagger.json');
|
|
131
|
+
const routesOutput = path.join(outputDir, 'routes.ts');
|
|
132
|
+
try {
|
|
133
|
+
const swaggerContent = await fsPromises.readFile(swaggerOutput, { encoding: 'utf8' });
|
|
134
|
+
const routesContent = await fsPromises.readFile(routesOutput, { encoding: 'utf8' });
|
|
135
|
+
specsMap[specName] = {
|
|
136
|
+
openApiSpecStr: swaggerContent,
|
|
137
|
+
openApiControllersStr: routesContent,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
catch (e) {
|
|
141
|
+
if (verbose) {
|
|
142
|
+
console.error(`Error reading generated files for ${file}:`, e);
|
|
143
|
+
}
|
|
144
|
+
await fsPromises.unlink(tempConfigPath);
|
|
145
|
+
throw e;
|
|
146
|
+
}
|
|
147
|
+
await fsPromises.unlink(tempConfigPath);
|
|
148
|
+
}
|
|
149
|
+
const openApiControllersMap = {};
|
|
150
|
+
const openApiSpecsMap = {};
|
|
151
|
+
for (const [key, specAndController] of Object.entries(specsMap)) {
|
|
152
|
+
openApiControllersMap[key] = specAndController.openApiControllersStr;
|
|
153
|
+
openApiSpecsMap[key] = specAndController.openApiSpecStr;
|
|
154
|
+
}
|
|
155
|
+
return { openApiControllersMap, openApiSpecsMap };
|
|
156
|
+
}
|
|
157
|
+
static extractTsoaName(filename) {
|
|
158
|
+
const basename = path.basename(filename, '.json');
|
|
159
|
+
if (basename === 'tsoa') {
|
|
160
|
+
return 'default';
|
|
161
|
+
}
|
|
162
|
+
const dashIndex = basename.indexOf('-');
|
|
163
|
+
if (dashIndex !== -1) {
|
|
164
|
+
const namePart = basename.substring(dashIndex + 1);
|
|
165
|
+
return namePart || 'default';
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
const namePart = basename.substring('tsoa'.length);
|
|
169
|
+
return namePart || 'default';
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
exports.TsoaUtils = TsoaUtils;
|
|
174
|
+
//# sourceMappingURL=tsoa-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tsoa-utils.js","sourceRoot":"","sources":["../../../../../internal-common/src/utils/tsoa-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,58 +1,19 @@
|
|
|
1
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
2
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
3
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
4
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
5
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
22
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
7
|
};
|
|
24
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
-
var ownKeys = function(o) {
|
|
26
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
-
var ar = [];
|
|
28
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
-
return ar;
|
|
30
|
-
};
|
|
31
|
-
return ownKeys(o);
|
|
32
|
-
};
|
|
33
|
-
return function (mod) {
|
|
34
|
-
if (mod && mod.__esModule) return mod;
|
|
35
|
-
var result = {};
|
|
36
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
-
__setModuleDefault(result, mod);
|
|
38
|
-
return result;
|
|
39
|
-
};
|
|
40
|
-
})();
|
|
41
8
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
42
9
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
43
10
|
};
|
|
44
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
45
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
46
|
-
};
|
|
47
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
12
|
exports.LocalBackendSocketService = void 0;
|
|
49
13
|
const common_1 = require("@nestjs/common");
|
|
50
14
|
const local_backend_service_1 = require("./local-backend.service");
|
|
51
15
|
const rxjs_1 = require("rxjs");
|
|
52
16
|
const assertic_1 = require("assertic");
|
|
53
|
-
const shell_runner_1 = require("./utils/shell-runner");
|
|
54
|
-
const fs = __importStar(require("fs/promises"));
|
|
55
|
-
const fsSync = __importStar(require("fs"));
|
|
56
17
|
const local_dev_types_1 = require("../../internal-common/src/local-dev.types");
|
|
57
18
|
const http_1 = require("../../internal-common/src/utils/http");
|
|
58
19
|
const websocket_impl_1 = require("../../internal-common/src/websocket.impl");
|
|
@@ -60,8 +21,7 @@ const global_utils_1 = require("../../internal-common/src/utils/global.utils");
|
|
|
60
21
|
const serialization_1 = require("../../internal-common/src/utils/serialization");
|
|
61
22
|
const communication_types_1 = require("../../internal-common/src/types/communication.types");
|
|
62
23
|
const logger_types_1 = require("../../internal-common/src/types/logger.types");
|
|
63
|
-
const
|
|
64
|
-
const path_1 = __importDefault(require("path"));
|
|
24
|
+
const tsoa_utils_1 = require("../../internal-common/src/utils/tsoa-utils");
|
|
65
25
|
let LocalBackendSocketService = class LocalBackendSocketService {
|
|
66
26
|
constructor(localBackendService) {
|
|
67
27
|
this.localBackendService = localBackendService;
|
|
@@ -75,7 +35,7 @@ let LocalBackendSocketService = class LocalBackendSocketService {
|
|
|
75
35
|
this.logTypes = new Set();
|
|
76
36
|
this.readLogTypes();
|
|
77
37
|
if (this.squidDeveloperId === 'prod') {
|
|
78
|
-
console.error('The local backend can only be run using the "dev" environment. Please follow the instructions in: https://docs.getsquid.ai/docs/
|
|
38
|
+
console.error('The local backend can only be run using the "dev" environment. Please follow the instructions in: https://docs.getsquid.ai/docs/backend/local-dev-cli');
|
|
79
39
|
process.exit(1);
|
|
80
40
|
}
|
|
81
41
|
this.socketEndpoint = (0, http_1.getApplicationUrl)(this.region, this.fullAppId, 'ws/localdev')
|
|
@@ -109,13 +69,15 @@ let LocalBackendSocketService = class LocalBackendSocketService {
|
|
|
109
69
|
case 'localBackendData': {
|
|
110
70
|
this.connectionReady.next(true);
|
|
111
71
|
const bundleData = await this.localBackendService.initializeAndGetBackendData(message.payload.secrets, this.appId);
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
|
|
72
|
+
const openApiSpecAndControllersMap = await tsoa_utils_1.TsoaUtils.generateAllSpecs(false);
|
|
73
|
+
const openApiControllersMap = {};
|
|
74
|
+
for (const [controllerName, controllerStr] of Object.entries(openApiSpecAndControllersMap.openApiControllersMap)) {
|
|
75
|
+
openApiControllersMap[controllerName] = (0, serialization_1.deserializeObj)(controllerStr);
|
|
115
76
|
}
|
|
77
|
+
bundleData.openApiControllersMap = openApiControllersMap;
|
|
116
78
|
const payload = {
|
|
117
79
|
applicationBundleData: bundleData,
|
|
118
|
-
|
|
80
|
+
openApiSpecsMap: openApiSpecAndControllersMap.openApiSpecsMap,
|
|
119
81
|
};
|
|
120
82
|
const bundleDataMessage = {
|
|
121
83
|
type: 'bundleData',
|
|
@@ -179,24 +141,34 @@ let LocalBackendSocketService = class LocalBackendSocketService {
|
|
|
179
141
|
printInfoAboutBundleData(bundleData) {
|
|
180
142
|
const webhooks = Object.entries(bundleData.webhooks || {}).sort(([id1], [id2]) => id1.localeCompare(id2));
|
|
181
143
|
if (webhooks.length) {
|
|
182
|
-
let message = '
|
|
144
|
+
let message = 'Webhooks:';
|
|
183
145
|
for (const [id] of webhooks) {
|
|
184
146
|
message += `\n * ${id}: ${(0, http_1.getApplicationUrl)(this.region, this.fullAppId, `webhooks/${id}`)}`;
|
|
185
147
|
}
|
|
186
148
|
console.log('\n\n' + message);
|
|
187
149
|
}
|
|
188
|
-
const
|
|
189
|
-
if (
|
|
190
|
-
|
|
191
|
-
let
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
150
|
+
const openApiControllersMap = bundleData.openApiControllersMap || {};
|
|
151
|
+
if (Object.keys(openApiControllersMap).length) {
|
|
152
|
+
let message = `OpenAPI controllers:`;
|
|
153
|
+
for (let [name, openApiControllers] of Object.entries(openApiControllersMap)) {
|
|
154
|
+
if (!openApiControllers.length)
|
|
155
|
+
continue;
|
|
156
|
+
openApiControllers = openApiControllers.sort((c1, c2) => c1.path.localeCompare(c2.path));
|
|
157
|
+
const baseUrl = (0, http_1.getApplicationUrl)(this.region, this.fullAppId, `openapi`);
|
|
158
|
+
message += `\n Spec file: ${baseUrl}/spec${name !== 'default' ? '-' + name : ''}.json):`;
|
|
159
|
+
for (const controller of openApiControllers) {
|
|
160
|
+
message += `\n Controller ${controller.path}:`;
|
|
161
|
+
for (const action of controller.actions.sort((a1, a2) => a1.fullPath.localeCompare(a2.fullPath))) {
|
|
162
|
+
message += `\n * ${action.method.toUpperCase().padEnd(6)} ${baseUrl}${action.fullPath}`;
|
|
163
|
+
}
|
|
196
164
|
}
|
|
165
|
+
message += '\n\n';
|
|
197
166
|
}
|
|
198
167
|
console.log('\n\n' + message);
|
|
199
168
|
}
|
|
169
|
+
else {
|
|
170
|
+
console.log('\n');
|
|
171
|
+
}
|
|
200
172
|
}
|
|
201
173
|
readLogTypes() {
|
|
202
174
|
const logTypes = process.env['SQUID_LOG_TYPES'];
|
|
@@ -215,41 +187,6 @@ Expected one of: ${supportedTypes.join(', ')}.`);
|
|
|
215
187
|
}
|
|
216
188
|
}
|
|
217
189
|
}
|
|
218
|
-
async generateOpenApiSpecAndControllers() {
|
|
219
|
-
let tsoaJsonLocation = 'tsoa.json';
|
|
220
|
-
if (!fsSync.existsSync('tsoa.json')) {
|
|
221
|
-
const localBackendModule = await (0, resolve_1.findModulePath)('@squidcloud/local-backend');
|
|
222
|
-
if (localBackendModule) {
|
|
223
|
-
tsoaJsonLocation = path_1.default.relative(process.cwd(), path_1.default.resolve(localBackendModule, '../../tsoa.json'));
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
try {
|
|
227
|
-
await Promise.all([
|
|
228
|
-
(0, shell_runner_1.runInShell)(`npx tsoa spec -c ${tsoaJsonLocation}`, process.cwd()),
|
|
229
|
-
(0, shell_runner_1.runInShell)(`npx tsoa routes -c ${tsoaJsonLocation}`, process.cwd()),
|
|
230
|
-
]);
|
|
231
|
-
}
|
|
232
|
-
catch (e) {
|
|
233
|
-
const errMessage = e?.stderr || e;
|
|
234
|
-
if (typeof errMessage === 'string' && errMessage.includes('no controllers found')) {
|
|
235
|
-
return undefined;
|
|
236
|
-
}
|
|
237
|
-
console.error('Error generating tsoa spec and routes\n', errMessage);
|
|
238
|
-
throw e;
|
|
239
|
-
}
|
|
240
|
-
try {
|
|
241
|
-
const swaggerData = await fs.readFile('./dist/swagger.json', { encoding: 'utf8' });
|
|
242
|
-
const routesData = await fs.readFile('./dist/routes.ts', { encoding: 'utf8' });
|
|
243
|
-
return {
|
|
244
|
-
openApiSpecStr: swaggerData,
|
|
245
|
-
openApiControllersStr: routesData,
|
|
246
|
-
};
|
|
247
|
-
}
|
|
248
|
-
catch (e) {
|
|
249
|
-
console.error('Unable to deploy OpenAPI spec and controllers', e);
|
|
250
|
-
}
|
|
251
|
-
return undefined;
|
|
252
|
-
}
|
|
253
190
|
};
|
|
254
191
|
exports.LocalBackendSocketService = LocalBackendSocketService;
|
|
255
192
|
exports.LocalBackendSocketService = LocalBackendSocketService = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-backend-socket.service.js","sourceRoot":"","sources":["../../../src/local-backend-socket.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"local-backend-socket.service.js","sourceRoot":"","sources":["../../../src/local-backend-socket.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,mEAA8D;AAC9D,+BAA+D;AAC/D,uCAAkC;AAClC,+EAQmD;AACnD,+DAAyE;AACzE,6EAAoG;AACpG,+EAA2E;AAC3E,iFAA6F;AAC7F,6FAAqG;AAErG,+EAAwE;AAMxE,2EAAuE;AAKhE,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IAkBpC,YAA6B,mBAAwC;QAAxC,wBAAmB,GAAnB,mBAAmB,CAAqB;QAfpD,UAAK,GAAG,IAAA,iBAAM,EAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,+BAA+B,CAAU,CAAC;QACtF,WAAM,GAAG,IAAA,iBAAM,EAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,+BAA+B,CAAC,CAAC;QAC9E,WAAM,GAAG,IAAA,iBAAM,EAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,gCAAgC,CAAC,CAAC;QAEhF,kBAAa,GAAG,IAAA,iBAAM,EACrC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,EACnC,uCAAuC,CACvB,CAAC;QACF,qBAAgB,GAAG,IAAA,iBAAM,EACxC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,EACjC,qCAAqC,CAClB,CAAC;QACL,oBAAe,GAAG,IAAI,sBAAe,CAAC,KAAK,CAAC,CAAC;QAC7C,cAAS,GAAG,IAAA,oDAA8B,EAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAGjH,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAW,CAAC;QACnC,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,gBAAgB,KAAK,MAAM,EAAE,CAAC;YACrC,OAAO,CAAC,KAAK,CACX,uJAAuJ,CACxJ,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,IAAA,wBAAiB,EAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC;aAChF,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC;aACvB,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAGzB,MAAM,KAAK,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QACtC,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;aACtC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;aACxC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEb,IAAI,CAAC,MAAM,GAAG,IAAA,uCAAsB,EAAC,GAAG,IAAI,CAAC,cAAc,IAAI,WAAW,EAAE,EAAE;YAC5E,aAAa,EAAE,IAAI;YACnB,SAAS,EAAE,CAAC,CAAe,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;YACtD,MAAM,EAAE,GAAS,EAAE;gBACjB,0BAAW,CAAC,KAAK,CAAC,+CAA+C,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;YAC1F,CAAC;YACD,WAAW,EAAE,GAAS,EAAE;gBACtB,0BAAW,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;gBACzD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,CAAC;YACD,OAAO,EAAE,GAAS,EAAE;gBAClB,0BAAW,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;gBACvD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,CAAC;YACD,OAAO,EAAE,CAAC,CAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC;SAC5D,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,UAAkB;QACxC,MAAM,OAAO,GAAuB,IAAA,8BAAc,EAAC,UAAU,CAAC,CAAC;QAC/D,0BAAW,CAAC,KAAK,CAAC,gCAAgC,EAAE,UAAU,CAAC,CAAC;QAEhE,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,kBAAkB,CAAC,CAAC,CAAC;gBACxB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,2BAA2B,CAC3E,OAAO,CAAC,OAAO,CAAC,OAAO,EACvB,IAAI,CAAC,KAAK,CACX,CAAC;gBAEF,MAAM,4BAA4B,GAAG,MAAM,sBAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;gBAC7E,MAAM,qBAAqB,GAA6C,EAAE,CAAC;gBAC3E,KAAK,MAAM,CAAC,cAAc,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAC1D,4BAA4B,CAAC,qBAAqB,CACnD,EAAE,CAAC;oBACF,qBAAqB,CAAC,cAAc,CAAC,GAAG,IAAA,8BAAc,EAAC,aAAa,CAAC,CAAC;gBACxE,CAAC;gBACD,UAAU,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;gBACzD,MAAM,OAAO,GAAqB;oBAChC,qBAAqB,EAAE,UAAU;oBACjC,eAAe,EAAE,4BAA4B,CAAC,eAAe;iBAC9D,CAAC;gBAEF,MAAM,iBAAiB,GAAmC;oBACxD,IAAI,EAAE,YAAY;oBAClB,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,OAAO;iBACR,CAAC;gBACF,MAAM,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,CAAC;gBACvD,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;gBAC1C,MAAM;YACR,CAAC;YACD,KAAK,iBAAiB;gBACpB,MAAM,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC;gBACjD,MAAM;YACR,KAAK,YAAY;gBACf,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;gBACrC,MAAM;YACR;gBACE,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAG,OAA8B,CAAC,IAAI,CAAC,CAAC;gBAClF,MAAM;QACV,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,4BAA4B,CAAC,OAA0C;QACnF,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACrF,MAAM,QAAQ,GAAiC;YAC7C,IAAI,EAAE,UAAU;YAChB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,OAAO,EAAE,SAAS;SACnB,CAAC;QACF,MAAM,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,OAA8B;QAC3D,IACE,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,yBAAO,CAAC,KAAK;YACtC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,yBAAO,CAAC,GAAG,CAAC;YAC/B,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAe,CAAC,EACnD,CAAC;YACD,OAAO;QACT,CAAC;QACD,MAAM,aAAa,GAAG,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,iBACzE,OAAO,CAAC,OAAO,CAAC,KAClB,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACxD,QAAQ,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC9B,KAAK,uBAAQ,CAAC,KAAK;gBACjB,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;gBAC7B,MAAM;YACR,KAAK,uBAAQ,CAAC,IAAI;gBAChB,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC5B,MAAM;YACR,KAAK,uBAAQ,CAAC,KAAK;gBACjB,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;gBAC7B,MAAM;YACR,KAAK,uBAAQ,CAAC,KAAK;gBACjB,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;gBAC7B,MAAM;YACR,KAAK,uBAAQ,CAAC,IAAI,CAAC;YACnB;gBACE,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,wBAAwB,CAAC,OAA6B;QAClE,0BAAW,CAAC,KAAK,CAAC,yCAAyC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACtF,MAAM,IAAA,qBAAc,EAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAA,aAAM,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAA,4BAAY,EAAC,OAAO,CAAC,CAAC,CAAC;IAC1C,CAAC;IAEO,wBAAwB,CAAC,UAAiC;QAChE,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;QAE1G,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpB,IAAI,OAAO,GAAG,WAAW,CAAC;YAC1B,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC;gBAC5B,OAAO,IAAI,SAAS,EAAE,KAAK,IAAA,wBAAiB,EAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC;YAChG,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,qBAAqB,GAAG,UAAU,CAAC,qBAAqB,IAAI,EAAE,CAAC;QACrE,IAAI,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,MAAM,EAAE,CAAC;YAC9C,IAAI,OAAO,GAAG,sBAAsB,CAAC;YACrC,KAAK,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,CAAC;gBAC7E,IAAI,CAAC,kBAAkB,CAAC,MAAM;oBAAE,SAAS;gBACzC,kBAAkB,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;gBACzF,MAAM,OAAO,GAAG,IAAA,wBAAiB,EAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;gBAC1E,OAAO,IAAI,kBAAkB,OAAO,QAAQ,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;gBAC1F,KAAK,MAAM,UAAU,IAAI,kBAAkB,EAAE,CAAC;oBAC5C,OAAO,IAAI,oBAAoB,UAAU,CAAC,IAAI,GAAG,CAAC;oBAClD,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;wBACjG,OAAO,IAAI,aAAa,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,OAAO,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;oBAC/F,CAAC;gBACH,CAAC;gBACD,OAAO,IAAI,MAAM,CAAC;YACpB,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAEO,YAAY;QAClB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAChD,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,yBAAO,CAAC,CAAC;YAC9C,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrC,KAAK,IAAI,IAAI,IAAI,QAAQ,EAAE,CAAC;gBAC1B,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBACnB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAe,CAAC,EAAE,CAAC;oBAC9C,OAAO,CAAC,KAAK,CAAC,oBAAoB,IAAI;;mBAE7B,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAe,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;IACH,CAAC;CACF,CAAA;AArMY,8DAAyB;oCAAzB,yBAAyB;IADrC,IAAA,mBAAU,GAAE;qCAmBuC,2CAAmB;GAlB1D,yBAAyB,CAqMrC"}
|