tnp-helpers 18.0.14 → 18.0.15
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/assets/shared/shared_folder_info.txt +1 -1
- package/browser/esm2022/lib/base/base-cli-worker-config.mjs +33 -0
- package/browser/esm2022/lib/base/base-cli-worker-controller.mjs +87 -0
- package/browser/esm2022/lib/base/base-cli-worker.mjs +303 -0
- package/browser/esm2022/lib/base/base-db.mjs +2 -1
- package/browser/esm2022/lib/base/base-project-resolver.mjs +9 -6
- package/browser/esm2022/lib/base/base-project.mjs +2 -2
- package/browser/esm2022/lib/base/base-quick-fixes.mjs +1 -1
- package/browser/esm2022/lib/base/base-release-process.mjs +1 -1
- package/browser/esm2022/lib/base/core-project.mjs +1 -1
- package/browser/esm2022/lib/base/ports-worker.mjs +107 -0
- package/browser/esm2022/lib/models.mjs +1 -1
- package/browser/fesm2022/tnp-helpers.mjs +523 -7
- package/browser/fesm2022/tnp-helpers.mjs.map +1 -1
- package/browser/lib/base/base-cli-worker-config.d.ts +24 -0
- package/browser/lib/base/base-cli-worker-controller.d.ts +14 -0
- package/browser/lib/base/base-cli-worker.d.ts +47 -0
- package/browser/lib/base/base-project-resolver.d.ts +5 -6
- package/browser/lib/base/base-project.d.ts +7 -7
- package/browser/lib/base/base-quick-fixes.d.ts +1 -1
- package/browser/lib/base/base-release-process.d.ts +1 -1
- package/browser/lib/base/core-project.d.ts +2 -2
- package/browser/lib/base/ports-worker.d.ts +11 -0
- package/client/esm2022/lib/base/base-cli-worker-config.mjs +33 -0
- package/client/esm2022/lib/base/base-cli-worker-controller.mjs +87 -0
- package/client/esm2022/lib/base/base-cli-worker.mjs +303 -0
- package/client/esm2022/lib/base/base-db.mjs +2 -1
- package/client/esm2022/lib/base/base-project-resolver.mjs +9 -6
- package/client/esm2022/lib/base/base-project.mjs +2 -2
- package/client/esm2022/lib/base/base-quick-fixes.mjs +1 -1
- package/client/esm2022/lib/base/base-release-process.mjs +1 -1
- package/client/esm2022/lib/base/core-project.mjs +1 -1
- package/client/esm2022/lib/base/ports-worker.mjs +107 -0
- package/client/esm2022/lib/models.mjs +1 -1
- package/client/fesm2022/tnp-helpers.mjs +523 -7
- package/client/fesm2022/tnp-helpers.mjs.map +1 -1
- package/client/lib/base/base-cli-worker-config.d.ts +24 -0
- package/client/lib/base/base-cli-worker-controller.d.ts +14 -0
- package/client/lib/base/base-cli-worker.d.ts +47 -0
- package/client/lib/base/base-project-resolver.d.ts +5 -6
- package/client/lib/base/base-project.d.ts +7 -7
- package/client/lib/base/base-quick-fixes.d.ts +1 -1
- package/client/lib/base/base-release-process.d.ts +1 -1
- package/client/lib/base/core-project.d.ts +2 -2
- package/client/lib/base/ports-worker.d.ts +11 -0
- package/lib/base/base-cli-worker-config.d.ts +23 -0
- package/lib/base/base-cli-worker-config.js +45 -0
- package/lib/base/base-cli-worker-config.js.map +1 -0
- package/lib/base/base-cli-worker-controller.d.ts +13 -0
- package/lib/base/base-cli-worker-controller.js +114 -0
- package/lib/base/base-cli-worker-controller.js.map +1 -0
- package/lib/base/base-cli-worker.d.ts +46 -0
- package/lib/base/base-cli-worker.js +437 -0
- package/lib/base/base-cli-worker.js.map +1 -0
- package/lib/base/base-command-line.backend.d.ts +2 -0
- package/lib/base/base-command-line.backend.js +39 -0
- package/lib/base/base-command-line.backend.js.map +1 -1
- package/lib/base/base-db.d.ts +1 -1
- package/lib/base/base-db.js +2 -2
- package/lib/base/base-db.js.map +1 -1
- package/lib/base/base-git.js +2 -2
- package/lib/base/base-git.js.map +1 -1
- package/lib/base/base-linked-projects.js +1 -1
- package/lib/base/base-linked-projects.js.map +1 -1
- package/lib/base/base-project-resolver.d.ts +5 -6
- package/lib/base/base-project-resolver.js +14 -5
- package/lib/base/base-project-resolver.js.map +1 -1
- package/lib/base/base-project.d.ts +7 -7
- package/lib/base/base-project.js +1 -1
- package/lib/base/base-project.js.map +1 -1
- package/lib/base/base-quick-fixes.d.ts +1 -1
- package/lib/base/base-release-process.d.ts +1 -1
- package/lib/base/config-database.js +2 -2
- package/lib/base/config-database.js.map +1 -1
- package/lib/base/core-project.d.ts +2 -2
- package/lib/base/ports-worker.d.ts +10 -0
- package/lib/base/ports-worker.js +185 -0
- package/lib/base/ports-worker.js.map +1 -0
- package/lib/base/project-database.js +1 -1
- package/lib/base/project-database.js.map +1 -1
- package/lib/helpers/for-backend/helpers-cli-tool.backend.js +0 -1
- package/lib/helpers/for-backend/helpers-cli-tool.backend.js.map +1 -1
- package/lib/helpers/for-backend/helpers-file-folders.backend.js +1 -1
- package/lib/helpers/for-backend/helpers-file-folders.backend.js.map +1 -1
- package/lib/helpers/for-backend/helpers-process.backend.d.ts +3 -2
- package/lib/helpers/for-backend/helpers-process.backend.js +19 -10
- package/lib/helpers/for-backend/helpers-process.backend.js.map +1 -1
- package/lib/helpers/for-browser/angular.helper.js +2 -2
- package/lib/old/base-component.js +2 -2
- package/lib/old/base-formly-component.js +2 -2
- package/lib/old/dual-component-ctrl.js +2 -2
- package/package.json +5 -5
- package/tmp-environment.json +36 -31
- package/websql/esm2022/lib/base/base-cli-worker-config.mjs +33 -0
- package/websql/esm2022/lib/base/base-cli-worker-controller.mjs +87 -0
- package/websql/esm2022/lib/base/base-cli-worker.mjs +303 -0
- package/websql/esm2022/lib/base/base-db.mjs +2 -1
- package/websql/esm2022/lib/base/base-project-resolver.mjs +9 -6
- package/websql/esm2022/lib/base/base-project.mjs +2 -2
- package/websql/esm2022/lib/base/base-quick-fixes.mjs +1 -1
- package/websql/esm2022/lib/base/base-release-process.mjs +1 -1
- package/websql/esm2022/lib/base/core-project.mjs +1 -1
- package/websql/esm2022/lib/base/ports-worker.mjs +114 -0
- package/websql/esm2022/lib/models.mjs +1 -1
- package/websql/fesm2022/tnp-helpers.mjs +530 -7
- package/websql/fesm2022/tnp-helpers.mjs.map +1 -1
- package/websql/lib/base/base-cli-worker-config.d.ts +24 -0
- package/websql/lib/base/base-cli-worker-controller.d.ts +14 -0
- package/websql/lib/base/base-cli-worker.d.ts +47 -0
- package/websql/lib/base/base-project-resolver.d.ts +5 -6
- package/websql/lib/base/base-project.d.ts +7 -7
- package/websql/lib/base/base-quick-fixes.d.ts +1 -1
- package/websql/lib/base/base-release-process.d.ts +1 -1
- package/websql/lib/base/core-project.d.ts +2 -2
- package/websql/lib/base/ports-worker.d.ts +11 -0
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
import { chalk, } from 'tnp-core/websql'; /* */
|
|
2
|
+
import { Helpers, UtilsTerminal } from '../index';
|
|
3
|
+
const WORKER_INIT_START_TIME_LIMIT = 15; // 15 seconds max to start worker
|
|
4
|
+
const START_PORT_FOR_SERVICES = 3600;
|
|
5
|
+
export class BaseCliWorker {
|
|
6
|
+
constructor(
|
|
7
|
+
/**
|
|
8
|
+
* unique id for service
|
|
9
|
+
*/
|
|
10
|
+
serviceID,
|
|
11
|
+
/**
|
|
12
|
+
* external command that will start service
|
|
13
|
+
*/
|
|
14
|
+
startCommand) {
|
|
15
|
+
this.serviceID = serviceID;
|
|
16
|
+
this.startCommand = startCommand;
|
|
17
|
+
}
|
|
18
|
+
get pathToProcessLocalInfoJson() {
|
|
19
|
+
/* */
|
|
20
|
+
/* */
|
|
21
|
+
/* */
|
|
22
|
+
/* */
|
|
23
|
+
/* */
|
|
24
|
+
/* */
|
|
25
|
+
/* */
|
|
26
|
+
/* */
|
|
27
|
+
return (void 0);
|
|
28
|
+
}
|
|
29
|
+
get processLocalInfoObj() {
|
|
30
|
+
/* */
|
|
31
|
+
/* */
|
|
32
|
+
/* */
|
|
33
|
+
/* */
|
|
34
|
+
/* */
|
|
35
|
+
/* */
|
|
36
|
+
return (void 0);
|
|
37
|
+
}
|
|
38
|
+
async startDetachedIfNeedsToBeStarted() {
|
|
39
|
+
/* */
|
|
40
|
+
/* */
|
|
41
|
+
/* */
|
|
42
|
+
/* */
|
|
43
|
+
/* */
|
|
44
|
+
/* */
|
|
45
|
+
/* */
|
|
46
|
+
/* */
|
|
47
|
+
/* */
|
|
48
|
+
/* */
|
|
49
|
+
/* */
|
|
50
|
+
/* */
|
|
51
|
+
/* */
|
|
52
|
+
/* */
|
|
53
|
+
return (void 0);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* stop if started
|
|
57
|
+
*/
|
|
58
|
+
async kill() {
|
|
59
|
+
Helpers.log(`Killing service "${this.serviceID}"...`);
|
|
60
|
+
if (this.processLocalInfoObj.isEmpty) {
|
|
61
|
+
Helpers.log(`Service "${this.serviceID}" not started - nothing to kill...`);
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
const ctrl = await this.getControllerForRemoteConnection();
|
|
65
|
+
try {
|
|
66
|
+
Helpers.removeFileIfExists(this.pathToProcessLocalInfoJson);
|
|
67
|
+
await ctrl.baseCLiWorkerCommand_kill().received;
|
|
68
|
+
Helpers.log(`Service "${this.serviceID}" killed...`);
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
Helpers.log(error);
|
|
72
|
+
Helpers.log(`Service "${this.serviceID}" not killed... `);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* kill detached process and start again
|
|
77
|
+
*/
|
|
78
|
+
async restart() {
|
|
79
|
+
await this.kill();
|
|
80
|
+
await this.startDetached();
|
|
81
|
+
}
|
|
82
|
+
async isServiceHealthy(options) {
|
|
83
|
+
/* */
|
|
84
|
+
/* */
|
|
85
|
+
/* */
|
|
86
|
+
/* */
|
|
87
|
+
/* */
|
|
88
|
+
/* */
|
|
89
|
+
/* */
|
|
90
|
+
/* */
|
|
91
|
+
/* */
|
|
92
|
+
/* */
|
|
93
|
+
/* */
|
|
94
|
+
/* */
|
|
95
|
+
/* */
|
|
96
|
+
/* */
|
|
97
|
+
/* */
|
|
98
|
+
/* */
|
|
99
|
+
/* */
|
|
100
|
+
/* */
|
|
101
|
+
/* */
|
|
102
|
+
/* */
|
|
103
|
+
/* */
|
|
104
|
+
/* */
|
|
105
|
+
/* */
|
|
106
|
+
/* */
|
|
107
|
+
/* */
|
|
108
|
+
/* */
|
|
109
|
+
/* */
|
|
110
|
+
/* */
|
|
111
|
+
/* */
|
|
112
|
+
/* */
|
|
113
|
+
/* */
|
|
114
|
+
/* */
|
|
115
|
+
/* */
|
|
116
|
+
/* */
|
|
117
|
+
/* */
|
|
118
|
+
/* */
|
|
119
|
+
/* */
|
|
120
|
+
/* */
|
|
121
|
+
/* */
|
|
122
|
+
/* */
|
|
123
|
+
/* */
|
|
124
|
+
/* */
|
|
125
|
+
/* */
|
|
126
|
+
/* */
|
|
127
|
+
/* */
|
|
128
|
+
/* */
|
|
129
|
+
/* */
|
|
130
|
+
/* */
|
|
131
|
+
/* */
|
|
132
|
+
/* */
|
|
133
|
+
/* */
|
|
134
|
+
/* */
|
|
135
|
+
/* */
|
|
136
|
+
/* */
|
|
137
|
+
/* */
|
|
138
|
+
/* */
|
|
139
|
+
/* */
|
|
140
|
+
/* */
|
|
141
|
+
/* */
|
|
142
|
+
/* */
|
|
143
|
+
/* */
|
|
144
|
+
/* */
|
|
145
|
+
return (void 0);
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* start if not started detached process
|
|
149
|
+
*/
|
|
150
|
+
async startDetached() {
|
|
151
|
+
/* */
|
|
152
|
+
/* */
|
|
153
|
+
/* */
|
|
154
|
+
/* */
|
|
155
|
+
/* */
|
|
156
|
+
/* */
|
|
157
|
+
/* */
|
|
158
|
+
/* */
|
|
159
|
+
/* */
|
|
160
|
+
/* */
|
|
161
|
+
/* */
|
|
162
|
+
/* */
|
|
163
|
+
/* */
|
|
164
|
+
/* */
|
|
165
|
+
/* */
|
|
166
|
+
/* */
|
|
167
|
+
/* */
|
|
168
|
+
/* */
|
|
169
|
+
return (void 0);
|
|
170
|
+
}
|
|
171
|
+
async _infoScreen() {
|
|
172
|
+
while (true) {
|
|
173
|
+
Helpers.clearConsole();
|
|
174
|
+
const cfonts = require('cfonts');
|
|
175
|
+
const output = cfonts.render(`TAON.DEV`, {
|
|
176
|
+
font: 'block',
|
|
177
|
+
align: 'left',
|
|
178
|
+
colors: ['system'],
|
|
179
|
+
background: 'transparent',
|
|
180
|
+
letterSpacing: 1,
|
|
181
|
+
lineHeight: 1,
|
|
182
|
+
space: true,
|
|
183
|
+
maxLength: '0',
|
|
184
|
+
gradient: false,
|
|
185
|
+
independentGradient: false,
|
|
186
|
+
transitionGradient: false,
|
|
187
|
+
env: 'node',
|
|
188
|
+
});
|
|
189
|
+
console.log(output.string);
|
|
190
|
+
Helpers.info(`
|
|
191
|
+
|
|
192
|
+
Service ${chalk.bold.red(this.serviceID)} started..
|
|
193
|
+
Check info here http://localhost:${chalk.bold(this.processLocalInfoObj?.port?.toString())}/${'info'}
|
|
194
|
+
|
|
195
|
+
`);
|
|
196
|
+
const choices = {
|
|
197
|
+
openBrowser: {
|
|
198
|
+
name: 'Open browser with service info',
|
|
199
|
+
},
|
|
200
|
+
exit: {
|
|
201
|
+
name: `Shut down service`,
|
|
202
|
+
},
|
|
203
|
+
};
|
|
204
|
+
const choice = await UtilsTerminal.select({
|
|
205
|
+
choices,
|
|
206
|
+
question: 'Choose action',
|
|
207
|
+
});
|
|
208
|
+
if (choice === 'openBrowser') {
|
|
209
|
+
const openInBrowser = require('open');
|
|
210
|
+
openInBrowser(`http://localhost:${this.processLocalInfoObj.port}/info`);
|
|
211
|
+
}
|
|
212
|
+
if (choice === 'exit') {
|
|
213
|
+
process.exit(0);
|
|
214
|
+
}
|
|
215
|
+
switch (choice) {
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
saveProcessInfo(processConfig) {
|
|
220
|
+
/* */
|
|
221
|
+
/* */
|
|
222
|
+
/* */
|
|
223
|
+
/* */
|
|
224
|
+
/* */
|
|
225
|
+
/* */
|
|
226
|
+
/* */
|
|
227
|
+
/* */
|
|
228
|
+
/* */
|
|
229
|
+
/* */
|
|
230
|
+
/* */
|
|
231
|
+
/* */
|
|
232
|
+
/* */
|
|
233
|
+
/* */
|
|
234
|
+
/* */
|
|
235
|
+
return (void 0);
|
|
236
|
+
}
|
|
237
|
+
async initializeWorkerMetadata() {
|
|
238
|
+
/* */
|
|
239
|
+
/* */
|
|
240
|
+
/* */
|
|
241
|
+
/* */
|
|
242
|
+
/* */
|
|
243
|
+
/* */
|
|
244
|
+
/* */
|
|
245
|
+
/* */
|
|
246
|
+
/* */
|
|
247
|
+
/* */
|
|
248
|
+
/* */
|
|
249
|
+
/* */
|
|
250
|
+
/* */
|
|
251
|
+
/* */
|
|
252
|
+
/* */
|
|
253
|
+
/* */
|
|
254
|
+
/* */
|
|
255
|
+
/* */
|
|
256
|
+
/* */
|
|
257
|
+
/* */
|
|
258
|
+
return (void 0);
|
|
259
|
+
}
|
|
260
|
+
async waitForProcessPortSavedToDisk() {
|
|
261
|
+
/* */
|
|
262
|
+
/* */
|
|
263
|
+
/* */
|
|
264
|
+
/* */
|
|
265
|
+
/* */
|
|
266
|
+
/* */
|
|
267
|
+
/* */
|
|
268
|
+
/* */
|
|
269
|
+
/* */
|
|
270
|
+
/* */
|
|
271
|
+
/* */
|
|
272
|
+
/* */
|
|
273
|
+
/* */
|
|
274
|
+
/* */
|
|
275
|
+
/* */
|
|
276
|
+
/* */
|
|
277
|
+
/* */
|
|
278
|
+
/* */
|
|
279
|
+
/* */
|
|
280
|
+
/* */
|
|
281
|
+
/* */
|
|
282
|
+
/* */
|
|
283
|
+
return (void 0);
|
|
284
|
+
}
|
|
285
|
+
async getServicePort() {
|
|
286
|
+
/* */
|
|
287
|
+
/* */
|
|
288
|
+
/* */
|
|
289
|
+
/* */
|
|
290
|
+
/* */
|
|
291
|
+
/* */
|
|
292
|
+
/* */
|
|
293
|
+
/* */
|
|
294
|
+
/* */
|
|
295
|
+
/* */
|
|
296
|
+
/* */
|
|
297
|
+
/* */
|
|
298
|
+
return (void 0);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
;
|
|
302
|
+
({}); // @--end-of-file-for-module=tnp-helpers lib/base/base-cli-worker.ts
|
|
303
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jbGktd29ya2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3Qtd2Vic3FsL3RucC1oZWxwZXJzL3Byb2plY3RzL3RucC1oZWxwZXJzL3NyYy9saWIvYmFzZS9iYXNlLWNsaS13b3JrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFJLEtBQUssR0FBd0QsTUFBTSxpQkFBaUIsQ0FBQyxDQUFBLEtBQUs7QUFXckcsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFNbEQsTUFBTSw0QkFBNEIsR0FBRyxFQUFFLENBQUMsQ0FBQyxpQ0FBaUM7QUFDMUUsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLENBQUM7QUFHckMsTUFBTSxPQUFnQixhQUFhO0lBRWpDO0lBQ0U7O09BRUc7SUFDZ0IsU0FBaUI7SUFDcEM7O09BRUc7SUFDZ0IsWUFBb0I7UUFKcEIsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUlqQixpQkFBWSxHQUFaLFlBQVksQ0FBUTtJQUN0QyxDQUFDO0lBYUosSUFBWSwwQkFBMEI7UUFDeEMsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBSUQsSUFBYyxtQkFBbUI7UUFDbkMsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQVFNLEtBQUssQ0FBQywrQkFBK0I7UUFDOUMsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBSUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsSUFBSTtRQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLElBQUksQ0FBQyxTQUFTLE1BQU0sQ0FBQyxDQUFDO1FBQ3RELElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3JDLE9BQU8sQ0FBQyxHQUFHLENBQ1QsWUFBWSxJQUFJLENBQUMsU0FBUyxvQ0FBb0MsQ0FDL0QsQ0FBQztZQUNGLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQztRQUMzRCxJQUFJLENBQUM7WUFDSCxPQUFPLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUM7WUFDNUQsTUFBTSxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxRQUFRLENBQUM7WUFDaEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLElBQUksQ0FBQyxTQUFTLGFBQWEsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuQixPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksSUFBSSxDQUFDLFNBQVMsb0JBQW9CLENBQUMsQ0FBQztRQUM5RCxDQUFDO0lBQ0gsQ0FBQztJQUlEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLE9BQU87UUFDWCxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQixNQUFNLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBUVMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLE9BRWhDO1FBQ0gsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBSUQ7O09BRUc7SUFDTyxLQUFLLENBQUMsYUFBYTtRQUMvQixLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBSVMsS0FBSyxDQUFDLFdB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QUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBSUQsS0FBSyxDQUFDLGNBQWM7UUFDdEIsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztDQUlGO0FBRUEsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxvRUFBb0UiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuXG5pbXBvcnQgeyAgIGNoYWxrLCAgIGNyb3NzUGxhdGZvcm1QYXRoLCAgIF8sIC8qICovIC8qICovIC8qICovIC8qICovICAgIH0gZnJvbSAndG5wLWNvcmUvd2Vic3FsJzsvKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG5cbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gJ3RucC1jb25maWcvd2Vic3FsJztcbmltcG9ydCB7IEhlbHBlcnMsIFV0aWxzVGVybWluYWwgfSBmcm9tICcuLi9pbmRleCc7XG5pbXBvcnQgdHlwZSB7IEJhc2VDbGlXb3JrZXJDb250cm9sbGVyIH0gZnJvbSAnLi9iYXNlLWNsaS13b3JrZXItY29udHJvbGxlcic7XG5pbXBvcnQgeyBCYXNlQ2xpV29ya2VyQ29uZmlnIH0gZnJvbSAnLi9iYXNlLWNsaS13b3JrZXItY29uZmlnJztcblxuXG5cbmNvbnN0IFdPUktFUl9JTklUX1NUQVJUX1RJTUVfTElNSVQgPSAxNTsgLy8gMTUgc2Vjb25kcyBtYXggdG8gc3RhcnQgd29ya2VyXG5jb25zdCBTVEFSVF9QT1JUX0ZPUl9TRVJWSUNFUyA9IDM2MDA7XG5cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VDbGlXb3JrZXIge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIC8qKlxuICAgICAqIHVuaXF1ZSBpZCBmb3Igc2VydmljZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBzZXJ2aWNlSUQ6IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBleHRlcm5hbCBjb21tYW5kIHRoYXQgd2lsbCBzdGFydCBzZXJ2aWNlXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0YXJ0Q29tbWFuZDogc3RyaW5nLFxuICApIHt9XG5cblxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzdGFydE5vcm1hbGx5SW5DdXJyZW50UHJvY2VzcygpO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0Q29udHJvbGxlckZvclJlbW90ZUNvbm5lY3Rpb24oKTogUHJvbWlzZTxcbiAgICBCYXNlQ2xpV29ya2VyQ29udHJvbGxlcjxhbnk+XG4gID47XG5cblxuXG5cblxuICBwcml2YXRlIGdldCBwYXRoVG9Qcm9jZXNzTG9jYWxJbmZvSnNvbigpOiBzdHJpbmcge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIHByb3RlY3RlZCBnZXQgcHJvY2Vzc0xvY2FsSW5mb09iaigpOiBCYXNlQ2xpV29ya2VyQ29uZmlnIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cblxuXG5cblxuICBwdWJsaWMgYXN5bmMgc3RhcnREZXRhY2hlZElmTmVlZHNUb0JlU3RhcnRlZCgpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogc3RvcCBpZiBzdGFydGVkXG4gICAqL1xuICBhc3luYyBraWxsKCkge1xuICAgIEhlbHBlcnMubG9nKGBLaWxsaW5nIHNlcnZpY2UgXCIke3RoaXMuc2VydmljZUlEfVwiLi4uYCk7XG4gICAgaWYgKHRoaXMucHJvY2Vzc0xvY2FsSW5mb09iai5pc0VtcHR5KSB7XG4gICAgICBIZWxwZXJzLmxvZyhcbiAgICAgICAgYFNlcnZpY2UgXCIke3RoaXMuc2VydmljZUlEfVwiIG5vdCBzdGFydGVkIC0gbm90aGluZyB0byBraWxsLi4uYCxcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGN0cmwgPSBhd2FpdCB0aGlzLmdldENvbnRyb2xsZXJGb3JSZW1vdGVDb25uZWN0aW9uKCk7XG4gICAgdHJ5IHtcbiAgICAgIEhlbHBlcnMucmVtb3ZlRmlsZUlmRXhpc3RzKHRoaXMucGF0aFRvUHJvY2Vzc0xvY2FsSW5mb0pzb24pO1xuICAgICAgYXdhaXQgY3RybC5iYXNlQ0xpV29ya2VyQ29tbWFuZF9raWxsKCkucmVjZWl2ZWQ7XG4gICAgICBIZWxwZXJzLmxvZyhgU2VydmljZSBcIiR7dGhpcy5zZXJ2aWNlSUR9XCIga2lsbGVkLi4uYCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIEhlbHBlcnMubG9nKGVycm9yKTtcbiAgICAgIEhlbHBlcnMubG9nKGBTZXJ2aWNlIFwiJHt0aGlzLnNlcnZpY2VJRH1cIiBub3Qga2lsbGVkLi4uICAgYCk7XG4gICAgfVxuICB9XG5cblxuXG4gIC8qKlxuICAgKiBraWxsIGRldGFjaGVkIHByb2Nlc3MgYW5kIHN0YXJ0IGFnYWluXG4gICAqL1xuICBhc3luYyByZXN0YXJ0KCkge1xuICAgIGF3YWl0IHRoaXMua2lsbCgpO1xuICAgIGF3YWl0IHRoaXMuc3RhcnREZXRhY2hlZCgpO1xuICB9XG5cblxuXG5cblxuXG5cbiAgcHJvdGVjdGVkIGFzeW5jIGlzU2VydmljZUhlYWx0aHkob3B0aW9ucz86IHtcbiAgICBoZWFsdGhDaGVja1JlcXVlc3RUcnlzPzogbnVtYmVyO1xuICB9KTogUHJvbWlzZTxib29sZWFuPiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIHN0YXJ0IGlmIG5vdCBzdGFydGVkIGRldGFjaGVkIHByb2Nlc3NcbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBzdGFydERldGFjaGVkKCkge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICBwcm90ZWN0ZWQgYXN5bmMgX2luZm9TY3JlZW4oKSB7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIEhlbHBlcnMuY2xlYXJDb25zb2xlKCk7XG4gICAgICBjb25zdCBjZm9udHMgPSByZXF1aXJlKCdjZm9udHMnKTtcbiAgICAgIGNvbnN0IG91dHB1dCA9IGNmb250cy5yZW5kZXIoYFRBT04uREVWYCwge1xuICAgICAgICBmb250OiAnYmxvY2snLFxuICAgICAgICBhbGlnbjogJ2xlZnQnLFxuICAgICAgICBjb2xvcnM6IFsnc3lzdGVtJ10sXG4gICAgICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIGxldHRlclNwYWNpbmc6IDEsXG4gICAgICAgIGxpbmVIZWlnaHQ6IDEsXG4gICAgICAgIHNwYWNlOiB0cnVlLFxuICAgICAgICBtYXhMZW5ndGg6ICcwJyxcbiAgICAgICAgZ3JhZGllbnQ6IGZhbHNlLFxuICAgICAgICBpbmRlcGVuZGVudEdyYWRpZW50OiBmYWxzZSxcbiAgICAgICAgdHJhbnNpdGlvbkdyYWRpZW50OiBmYWxzZSxcbiAgICAgICAgZW52OiAnbm9kZScsXG4gICAgICB9KTtcbiAgICAgIGNvbnNvbGUubG9nKG91dHB1dC5zdHJpbmcpO1xuXG4gICAgICBIZWxwZXJzLmluZm8oYFxuXG4gICAgICAgIFNlcnZpY2UgJHtjaGFsay5ib2xkLnJlZCh0aGlzLnNlcnZpY2VJRCl9IHN0YXJ0ZWQuLlxuICAgICAgICBDaGVjayBpbmZvIGhlcmUgaHR0cDovL2xvY2FsaG9zdDoke2NoYWxrLmJvbGQoXG4gICAgICAgICAgdGhpcy5wcm9jZXNzTG9jYWxJbmZvT2JqPy5wb3J0Py50b1N0cmluZygpLFxuICAgICAgICApfS8keydpbmZvJyBhcyBrZXlvZiBCYXNlQ2xpV29ya2VyQ29udHJvbGxlcjxhbnk+fVxuXG4gICAgICAgICAgYCk7XG4gICAgICBjb25zdCBjaG9pY2VzID0ge1xuICAgICAgICBvcGVuQnJvd3Nlcjoge1xuICAgICAgICAgIG5hbWU6ICdPcGVuIGJyb3dzZXIgd2l0aCBzZXJ2aWNlIGluZm8nLFxuICAgICAgICB9LFxuXG5cblxuXG5cblxuICAgICAgICBleGl0OiB7XG4gICAgICAgICAgbmFtZTogYFNodXQgZG93biBzZXJ2aWNlYCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgICBjb25zdCBjaG9pY2UgPSBhd2FpdCBVdGlsc1Rlcm1pbmFsLnNlbGVjdDxrZXlvZiB0eXBlb2YgY2hvaWNlcz4oe1xuICAgICAgICBjaG9pY2VzLFxuICAgICAgICBxdWVzdGlvbjogJ0Nob29zZSBhY3Rpb24nLFxuICAgICAgfSk7XG4gICAgICBpZiAoY2hvaWNlID09PSAnb3BlbkJyb3dzZXInKSB7XG4gICAgICAgIGNvbnN0IG9wZW5JbkJyb3dzZXIgPSByZXF1aXJlKCdvcGVuJyk7XG4gICAgICAgIG9wZW5JbkJyb3dzZXIoYGh0dHA6Ly9sb2NhbGhvc3Q6JHt0aGlzLnByb2Nlc3NMb2NhbEluZm9PYmoucG9ydH0vaW5mb2ApO1xuICAgICAgfVxuICAgICAgaWYgKGNob2ljZSA9PT0gJ2V4aXQnKSB7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICAgIH1cbiAgICAgIHN3aXRjaCAoY2hvaWNlKSB7XG4gICAgICB9XG4gICAgfVxuICB9XG5cblxuXG4gIHByaXZhdGUgc2F2ZVByb2Nlc3NJbmZvKHByb2Nlc3NDb25maWc6IFBhcnRpYWw8QmFzZUNsaVdvcmtlckNvbmZpZz4pIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgcHJvdGVjdGVkIGFzeW5jIGluaXRpYWxpemVXb3JrZXJNZXRhZGF0YSgpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICBwcm90ZWN0ZWQgYXN5bmMgd2FpdEZvclByb2Nlc3NQb3J0U2F2ZWRUb0Rpc2soKTogUHJvbWlzZTx2b2lkPiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICBhc3luYyBnZXRTZXJ2aWNlUG9ydCgpOiBQcm9taXNlPG51bWJlcj4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxufVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dG5wLWhlbHBlcnMgbGliL2Jhc2UvYmFzZS1jbGktd29ya2VyLnRzIl19
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
/* */
|
|
3
3
|
/* */
|
|
4
4
|
/* */
|
|
5
|
+
/* */
|
|
5
6
|
export class BaseDb {
|
|
6
7
|
constructor(ins, dbName, defaultDb) {
|
|
7
8
|
this.ins = ins;
|
|
@@ -27,4 +28,4 @@ export class BaseDb {
|
|
|
27
28
|
}
|
|
28
29
|
;
|
|
29
30
|
({}); // @--end-of-file-for-module=tnp-helpers lib/base/base-db.ts
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1kYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0LXdlYnNxbC90bnAtaGVscGVycy9wcm9qZWN0cy90bnAtaGVscGVycy9zcmMvbGliL2Jhc2UvYmFzZS1kYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUlMLE1BQU0sT0FBTyxNQUFNO0lBRWpCLFlBQ1UsR0FBd0IsRUFDeEIsTUFBYyxFQUNkLFNBQWE7UUFGYixRQUFHLEdBQUgsR0FBRyxDQUFxQjtRQUN4QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsY0FBUyxHQUFULFNBQVMsQ0FBSTtJQUd2QixDQUFDO0lBQ0gsS0FBSztJQUNMLEtBQUs7SUFHSCxJQUFXLFNBQVM7UUFDdEIsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDeEIsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztDQXVCRjtBQUVBLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsNERBQTREIiwic291cmNlc0NvbnRlbnQiOlsiXG5cblxuaW1wb3J0IHsgSGVscGVycywgY3Jvc3NQbGF0Zm9ybVBhdGggfSBmcm9tIFwidG5wLWNvcmUvd2Vic3FsXCI7XG5cbmltcG9ydCB0eXBlIHsgQmFzZVByb2plY3RSZXNvbHZlciB9IGZyb20gXCIuL2Jhc2UtcHJvamVjdC1yZXNvbHZlclwiO1xuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuZXhwb3J0IGNsYXNzIEJhc2VEYjxEQiBleHRlbmRzIG9iamVjdD4ge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaW5zOiBCYXNlUHJvamVjdFJlc29sdmVyLFxuICAgIHByaXZhdGUgZGJOYW1lOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBkZWZhdWx0RGI6IERCLFxuICApIHtcblxuICB9XG4vKiAqL1xuLyogKi9cbiAgXG5cbiAgcHVibGljIGdldCBpc1VzaW5nREIoKTogYm9vbGVhbiB7XG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuICBnZXQgcHJvamVjdHNEYkxvY2F0aW9uKCkge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxufVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dG5wLWhlbHBlcnMgbGliL2Jhc2UvYmFzZS1kYi50cyJdfQ==
|
|
@@ -7,18 +7,16 @@ import { path, crossPlatformPath } from 'tnp-core/websql';
|
|
|
7
7
|
import { _ } from 'tnp-core/websql';
|
|
8
8
|
import { ConfigDatabase } from './config-database';
|
|
9
9
|
import { ProjectDatabase } from './project-database';
|
|
10
|
+
import { PortsWorker } from './ports-worker';
|
|
10
11
|
/* */
|
|
11
12
|
/* */
|
|
12
13
|
/* */
|
|
13
14
|
/* */
|
|
14
15
|
/* */
|
|
15
16
|
export class BaseProjectResolver {
|
|
16
|
-
constructor(classFn) {
|
|
17
|
+
constructor(classFn, cliToolName) {
|
|
17
18
|
this.classFn = classFn;
|
|
18
|
-
|
|
19
|
-
* general name for project company
|
|
20
|
-
*/
|
|
21
|
-
this.orgName = 'taon';
|
|
19
|
+
this.cliToolName = cliToolName;
|
|
22
20
|
this.configDb = new ConfigDatabase(this);
|
|
23
21
|
this.projectsDb = new ProjectDatabase(this);
|
|
24
22
|
this.NPM_PROJECT_KEY = 'npm';
|
|
@@ -28,6 +26,11 @@ export class BaseProjectResolver {
|
|
|
28
26
|
* This may break things that are creating new projects
|
|
29
27
|
*/
|
|
30
28
|
this.emptyLocations = [];
|
|
29
|
+
this.cliToolName = cliToolName;
|
|
30
|
+
if (!this.cliToolName) {
|
|
31
|
+
Helpers.throw(`cliToolName is not provided`);
|
|
32
|
+
}
|
|
33
|
+
this.portsWorker = new PortsWorker('ports-worker', `${this.cliToolName} startCliServicePortsWorker --skipCoreCheck`);
|
|
31
34
|
}
|
|
32
35
|
get allowedTypes() {
|
|
33
36
|
return [this.NPM_PROJECT_KEY];
|
|
@@ -274,4 +277,4 @@ export class BaseProjectResolver {
|
|
|
274
277
|
}
|
|
275
278
|
;
|
|
276
279
|
({}); // @--end-of-file-for-module=tnp-helpers lib/base/base-project-resolver.ts
|
|
277
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1wcm9qZWN0LXJlc29sdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3Qtd2Vic3FsL3RucC1oZWxwZXJzL3Byb2plY3RzL3RucC1oZWxwZXJzL3NyYy9saWIvYmFzZS9iYXNlLXByb2plY3QtcmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUVMLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbkMsT0FBTyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTFELE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUdwQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBSUwsTUFBTSxPQUFPLG1CQUFtQjtJQW1COUIsWUFBc0IsT0FBWTtRQUFaLFlBQU8sR0FBUCxPQUFPLENBQUs7UUFsQmxDOztXQUVHO1FBQ0ksWUFBTyxHQUFXLE1BQU0sQ0FBQztRQUNoQyxhQUFRLEdBQW1CLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BELGVBQVUsR0FBb0IsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFHckMsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDakMsYUFBUSxHQUFjLEVBQUUsQ0FBQztRQUNuQzs7O1dBR0c7UUFDTyxtQkFBYyxHQUFhLEVBQUUsQ0FBQztJQUlILENBQUM7SUFJdEMsSUFBSSxZQUFZO1FBRWQsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUdoQyxDQUFDO0lBSUQ7O09B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QUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO2dCQUMzQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7Z0JBRXpDLE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDOUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtvQkFDaEMsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO3dCQUV6QyxPQUFPLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxLQUFLLFVBQVUsQ0FBQztvQkFDN0MsQ0FBQyxDQUFDLENBQUM7b0JBQ0gsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO3dCQUNyQixLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztvQkFDMUIsQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQztnQkFFSCxLQUFLLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7Z0JBQzFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdkIsQ0FBQztRQUNILENBQUMsQ0FBQztRQUVGLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUM1QyxPQUFPLE1BQU0sQ0FBQztJQUVoQixDQUFDO0NBRUY7QUFFQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLDBFQUEwRSIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5cbmltcG9ydCB7IC8qICovIC8qICovIC8qICovICAgIH0gZnJvbSAndG5wLWNvcmUvd2Vic3FsJzsvKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cblxuaW1wb3J0IHsgSGVscGVycyB9IGZyb20gJy4uL2luZGV4JztcbmltcG9ydCB7IHBhdGgsIGNyb3NzUGxhdGZvcm1QYXRoIH0gZnJvbSAndG5wLWNvcmUvd2Vic3FsJztcbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gJ3RucC1jb25maWcvd2Vic3FsJztcbmltcG9ydCB7IF8gfSBmcm9tICd0bnAtY29yZS93ZWJzcWwnO1xuaW1wb3J0IHR5cGUgeyBCYXNlUHJvamVjdCB9IGZyb20gJy4vYmFzZS1wcm9qZWN0JztcbmltcG9ydCB7IExvdyB9IGZyb20gJ2xvd2RiJztcbmltcG9ydCB7IENvbmZpZ0RhdGFiYXNlIH0gZnJvbSAnLi9jb25maWctZGF0YWJhc2UnO1xuaW1wb3J0IHsgUHJvamVjdERhdGFiYXNlIH0gZnJvbSAnLi9wcm9qZWN0LWRhdGFiYXNlJztcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5leHBvcnQgY2xhc3MgQmFzZVByb2plY3RSZXNvbHZlcjxQUk9KRUNUIGV4dGVuZHMgUGFydGlhbDxCYXNlUHJvamVjdD4gPSBhbnk+IHtcbiAgLyoqXG4gICAqIGdlbmVyYWwgbmFtZSBmb3IgcHJvamVjdCBjb21wYW55XG4gICAqL1xuICBwdWJsaWMgb3JnTmFtZTogc3RyaW5nID0gJ3Rhb24nO1xuICBjb25maWdEYjogQ29uZmlnRGF0YWJhc2UgPSBuZXcgQ29uZmlnRGF0YWJhc2UodGhpcyk7XG4gIHByb2plY3RzRGI6IFByb2plY3REYXRhYmFzZSA9IG5ldyBQcm9qZWN0RGF0YWJhc2UodGhpcyk7XG5cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgTlBNX1BST0pFQ1RfS0VZID0gJ25wbSc7XG4gIHByb3RlY3RlZCBwcm9qZWN0czogUFJPSkVDVFtdID0gW107XG4gIC8qKlxuICAgKiBUbyBzcGVlZCB1cCBjaGVja2luZyBmb2xkZXIgSSBhbSBrZWVwaW5nIHBhdGhlcyBmb3IgYWx0ZXJkeSBjaGVja2VkIGZvbGRlclxuICAgKiBUaGlzIG1heSBicmVhayB0aGluZ3MgdGhhdCBhcmUgY3JlYXRpbmcgbmV3IHByb2plY3RzXG4gICAqL1xuICBwcm90ZWN0ZWQgZW1wdHlMb2NhdGlvbnM6IHN0cmluZ1tdID0gW107XG5cblxuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBjbGFzc0ZuOiBhbnkpIHt9XG5cblxuXG4gIGdldCBhbGxvd2VkVHlwZXMoKTogc3RyaW5nW10ge1xuXG4gICAgcmV0dXJuIFt0aGlzLk5QTV9QUk9KRUNUX0tFWV07XG5cblxuICB9XG5cblxuXG4gIC8qKlxuICAgKiBwcm9qZWN0IGZyb20gcHJvY2Vzcy5jd2QoKVxuICAgKi9cbiAgZ2V0IEN1cnJlbnQoKTogUFJPSkVDVCB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogb3ZlcnJpZGUgdGhpc1xuICAgKi9cbiAgdHlwZUZyb20obG9jYXRpb246IHN0cmluZywgcmVjcnVzaXZlQ2FsbCA9IGZhbHNlKTogc3RyaW5nIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICBGcm9tKGxvY2F0aW9uT2ZQcm9qZWN0OiBzdHJpbmcgfCBzdHJpbmdbXSwgb3B0aW9ucz86IGFueSk6IFBST0pFQ1Qge1xuXG5cblxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkobG9jYXRpb25PZlByb2plY3QpKSB7XG4gICAgICBsb2NhdGlvbk9mUHJvamVjdCA9IGxvY2F0aW9uT2ZQcm9qZWN0LmpvaW4oJy8nKTtcbiAgICB9XG4gICAgbGV0IGxvY2F0aW9uID0gY3Jvc3NQbGF0Zm9ybVBhdGgobG9jYXRpb25PZlByb2plY3QucmVwbGFjZSgvXFwvXFwvL2csICcvJykpO1xuXG4gICAgaWYgKCFfLmlzU3RyaW5nKGxvY2F0aW9uKSkge1xuICAgICAgSGVscGVycy53YXJuKGBbcHJvamVjdC5mcm9tXSBsb2NhdGlvbiBpcyBub3QgYSBzdHJpbmdgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHBhdGguYmFzZW5hbWUobG9jYXRpb24pID09PSAnZGlzdCcpIHtcbiAgICAgIGxvY2F0aW9uID0gcGF0aC5kaXJuYW1lKGxvY2F0aW9uKTtcbiAgICB9XG4gICAgbG9jYXRpb24gPSBjcm9zc1BsYXRmb3JtUGF0aChwYXRoLnJlc29sdmUobG9jYXRpb24pKTtcblxuICAgIGNvbnN0IGFscmVhZHlFeGlzdCA9IHRoaXMucHJvamVjdHMuZmluZChcbiAgICAgIGwgPT4gbC5sb2NhdGlvbi50cmltKCkgPT09IGxvY2F0aW9uLnRyaW0oKSxcbiAgICApO1xuICAgIGlmIChhbHJlYWR5RXhpc3QpIHtcbiAgICAgIHJldHVybiBhbHJlYWR5RXhpc3QgYXMgYW55O1xuICAgIH1cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG5cbiAgfVxuXG5cblxuICBuZWFyZXN0VG8oXG4gICAgYWJzb2x1dGVMb2NhdGlvbjogc3RyaW5nIHwgc3RyaW5nW10sXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIHR5cGU/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgICAgIGZpbmRHaXRSb290PzogYm9vbGVhbjtcbiAgICAgIG9ubHlPdXRTaWRlTm9kZU1vZHVsZXM/OiBib29sZWFuO1xuICAgIH0sXG4gICk6IFBST0pFQ1Qge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIHVubG9hZChwcm9qZWN0T3JMb2NhdGlvbk9mUHJvamVjdDogUFJPSkVDVCB8IHN0cmluZykge1xuICAgIGNvbnN0IGxvY2F0aW9uID0gXy5pc1N0cmluZyhwcm9qZWN0T3JMb2NhdGlvbk9mUHJvamVjdClcbiAgICAgID8gcHJvamVjdE9yTG9jYXRpb25PZlByb2plY3RcbiAgICAgIDogcHJvamVjdE9yTG9jYXRpb25PZlByb2plY3Q/LmxvY2F0aW9uO1xuXG4gICAgdGhpcy5wcm9qZWN0cyA9IHRoaXMucHJvamVjdHMuZmlsdGVyKGYgPT4gZi5sb2NhdGlvbiAhPT0gbG9jYXRpb24pO1xuICAgIHRoaXMuZW1wdHlMb2NhdGlvbnMgPSB0aGlzLmVtcHR5TG9jYXRpb25zLmZpbHRlcihmID0+IGYgIT09IGxvY2F0aW9uKTtcbiAgfVxuXG5cblxuICByZW1vdmUocHJvamVjdDogUFJPSkVDVCkge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gIH1cblxuXG5cbiAgYWRkKHByb2plY3Q6IFBST0pFQ1QpIHtcbi8qICovXG4vKiAqL1xuICBcbiAgfVxuXG5cblxuXG4gIGFsbFByb2plY3RGcm9tKGFic29sdXRlTG9jYXRpb246IHN0cmluZywgc3RvcE9uQ3dkOiBzdHJpbmcgPSAnLycpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cbiAgYWxsUHJvamVjdHNGcm9tRm9sZGVyKGZvbGRlckxvY2F0aW9uOiBzdHJpbmcpOiBQUk9KRUNUW10ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgcHVibGljIHNvcnRHcm91cE9mUHJvamVjdDxUIGV4dGVuZHMgQmFzZVByb2plY3QgPSBCYXNlUHJvamVjdD4oXG4gICAgcHJvamVjdHM6IFRbXSxcbiAgICByZXNvdmVEZXBzQXJyYXk6IChwcm9qOiBUKSA9PiBzdHJpbmdbXSxcbiAgICBwcm9qTmFtZVRvQ29tcGFyZTogKHByb2o6IFQpID0+IHN0cmluZyxcbiAgKTogVFtdIHtcbiAgICBjb25zdCB2aXNpdGVkOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSA9IHt9O1xuICAgIGNvbnN0IHN0YWNrOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSA9IHt9O1xuICAgIGNvbnN0IHJlc3VsdDogVFtdID0gW107XG5cbiAgICBjb25zdCB2aXNpdCA9IChwcm9qZWN0OiBUKSA9PiB7XG4gICAgICBpZiAoc3RhY2tbcHJvak5hbWVUb0NvbXBhcmUocHJvamVjdCldKSB7XG5cbiAgICAgICAgSGVscGVycy5lcnJvcihcbiAgICAgICAgICBgQ2lyY3VsYXIgZGVwZW5kZW5jeSBkZXRlY3RlZCBpbnZvbHZpbmcgcHJvamVjdDogJHtwcm9qTmFtZVRvQ29tcGFyZShwcm9qZWN0KX1gLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXZpc2l0ZWRbcHJvak5hbWVUb0NvbXBhcmUocHJvamVjdCldKSB7XG4gICAgICAgIHZpc2l0ZWRbcHJvak5hbWVUb0NvbXBhcmUocHJvamVjdCldID0gdHJ1ZTtcbiAgICAgICAgc3RhY2tbcHJvak5hbWVUb0NvbXBhcmUocHJvamVjdCldID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBkZXBzUmVzb2x2ZWQgPSByZXNvdmVEZXBzQXJyYXkocHJvamVjdCk7XG4gICAgICAgIGRlcHNSZXNvbHZlZC5mb3JFYWNoKGRlcGVuZGVuY3kgPT4ge1xuICAgICAgICAgIGNvbnN0IGRlcGVuZGVudFByb2plY3QgPSBwcm9qZWN0cy5maW5kKHAgPT4ge1xuXG4gICAgICAgICAgICByZXR1cm4gcHJvak5hbWVUb0NvbXBhcmUocCkgPT09IGRlcGVuZGVuY3k7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKGRlcGVuZGVudFByb2plY3QpIHtcbiAgICAgICAgICAgIHZpc2l0KGRlcGVuZGVudFByb2plY3QpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgc3RhY2tbcHJvak5hbWVUb0NvbXBhcmUocHJvamVjdCldID0gZmFsc2U7XG4gICAgICAgIHJlc3VsdC5wdXNoKHByb2plY3QpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBwcm9qZWN0cy5mb3JFYWNoKHByb2plY3QgPT4gdmlzaXQocHJvamVjdCkpO1xuICAgIHJldHVybiByZXN1bHQ7XG5cbiAgfVxuXG59XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10bnAtaGVscGVycyBsaWIvYmFzZS9iYXNlLXByb2plY3QtcmVzb2x2ZXIudHMiXX0=
|
|
280
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1wcm9qZWN0LXJlc29sdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3Qtd2Vic3FsL3RucC1oZWxwZXJzL3Byb2plY3RzL3RucC1oZWxwZXJzL3NyYy9saWIvYmFzZS9iYXNlLXByb2plY3QtcmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUVMLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbkMsT0FBTyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTFELE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVwQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXJELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUlMLE1BQU0sT0FBTyxtQkFBbUI7SUFnQjlCLFlBQ1ksT0FBWSxFQUNmLFdBQW1CO1FBRGhCLFlBQU8sR0FBUCxPQUFPLENBQUs7UUFDZixnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQWpCNUIsYUFBUSxHQUFtQixJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwRCxlQUFVLEdBQW9CLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBSXJDLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ2pDLGFBQVEsR0FBYyxFQUFFLENBQUM7UUFDbkM7OztXQUdHO1FBQ08sbUJBQWMsR0FBYSxFQUFFLENBQUM7UUFRdEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFFL0Is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Q0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBSUQsTUFBTSxDQUFDLDBCQUE0QztRQUNqRCxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLDBCQUEwQixDQUFDO1lBQ3JELENBQUMsQ0FBQywwQkFBMEI7WUFDNUIsQ0FBQyxDQUFDLDBCQUEwQixFQUFFLFFBQVEsQ0FBQztRQUV6QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFR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QztDQUVGO0FBRUEsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQywwRUFBMEUiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuXG5pbXBvcnQgeyAvKiAqLyAvKiAqLyAvKiAqLyAgICB9IGZyb20gJ3RucC1jb3JlL3dlYnNxbCc7LyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG5cbmltcG9ydCB7IEhlbHBlcnMgfSBmcm9tICcuLi9pbmRleCc7XG5pbXBvcnQgeyBwYXRoLCBjcm9zc1BsYXRmb3JtUGF0aCB9IGZyb20gJ3RucC1jb3JlL3dlYnNxbCc7XG5pbXBvcnQgeyBjb25maWcgfSBmcm9tICd0bnAtY29uZmlnL3dlYnNxbCc7XG5pbXBvcnQgeyBfIH0gZnJvbSAndG5wLWNvcmUvd2Vic3FsJztcblxuaW1wb3J0IHsgQ29uZmlnRGF0YWJhc2UgfSBmcm9tICcuL2NvbmZpZy1kYXRhYmFzZSc7XG5pbXBvcnQgeyBQcm9qZWN0RGF0YWJhc2UgfSBmcm9tICcuL3Byb2plY3QtZGF0YWJhc2UnO1xuaW1wb3J0IHsgQmFzZVByb2plY3QgfSBmcm9tICcuL2Jhc2UtcHJvamVjdCc7XG5pbXBvcnQgeyBQb3J0c1dvcmtlciB9IGZyb20gJy4vcG9ydHMtd29ya2VyJztcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5leHBvcnQgY2xhc3MgQmFzZVByb2plY3RSZXNvbHZlcjxQUk9KRUNUIGV4dGVuZHMgUGFydGlhbDxCYXNlUHJvamVjdD4gPSBhbnk+IHtcbiAgY29uZmlnRGI6IENvbmZpZ0RhdGFiYXNlID0gbmV3IENvbmZpZ0RhdGFiYXNlKHRoaXMpO1xuICBwcm9qZWN0c0RiOiBQcm9qZWN0RGF0YWJhc2UgPSBuZXcgUHJvamVjdERhdGFiYXNlKHRoaXMpO1xuICByZWFkb25seSBwb3J0c1dvcmtlcjogUG9ydHNXb3JrZXI7XG5cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgTlBNX1BST0pFQ1RfS0VZID0gJ25wbSc7XG4gIHByb3RlY3RlZCBwcm9qZWN0czogUFJPSkVDVFtdID0gW107XG4gIC8qKlxuICAgKiBUbyBzcGVlZCB1cCBjaGVja2luZyBmb2xkZXIgSSBhbSBrZWVwaW5nIHBhdGhlcyBmb3IgYWx0ZXJkeSBjaGVja2VkIGZvbGRlclxuICAgKiBUaGlzIG1heSBicmVhayB0aGluZ3MgdGhhdCBhcmUgY3JlYXRpbmcgbmV3IHByb2plY3RzXG4gICAqL1xuICBwcm90ZWN0ZWQgZW1wdHlMb2NhdGlvbnM6IHN0cmluZ1tdID0gW107XG5cblxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBjbGFzc0ZuOiBhbnksXG4gICAgcHVibGljIGNsaVRvb2xOYW1lOiBzdHJpbmcsXG4gICkge1xuICAgIHRoaXMuY2xpVG9vbE5hbWUgPSBjbGlUb29sTmFtZTtcblxuICAgIGlmKCF0aGlzLmNsaVRvb2xOYW1lKSB7XG4gICAgICBIZWxwZXJzLnRocm93KGBjbGlUb29sTmFtZSBpcyBub3QgcHJvdmlkZWRgKVxuICAgIH1cbiAgICB0aGlzLnBvcnRzV29ya2VyID0gbmV3IFBvcnRzV29ya2VyKFxuICAgICAgJ3BvcnRzLXdvcmtlcicsXG4gICAgICBgJHt0aGlzLmNsaVRvb2xOYW1lfSBzdGFydENsaVNlcnZpY2VQb3J0c1dvcmtlciAtLXNraXBDb3JlQ2hlY2tgLFxuICAgICk7XG4gIH1cblxuXG5cbiAgZ2V0IGFsbG93ZWRUeXBlcygpOiBzdHJpbmdbXSB7XG5cbiAgICByZXR1cm4gW3RoaXMuTlBNX1BST0pFQ1RfS0VZXTtcblxuXG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIHByb2plY3QgZnJvbSBwcm9jZXNzLmN3ZCgpXG4gICAqL1xuICBnZXQgQ3VycmVudCgpOiBQUk9KRUNUIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBvdmVycmlkZSB0aGlzXG4gICAqL1xuICB0eXBlRnJvbShsb2NhdGlvbjogc3RyaW5nLCByZWNydXNpdmVDYWxsID0gZmFsc2UpOiBzdHJpbmcge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIEZyb20obG9jYXRpb25PZlByb2plY3Q6IHN0cmluZyB8IHN0cmluZ1tdLCBvcHRpb25zPzogYW55KTogUFJPSkVDVCB7XG5cblxuXG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShsb2NhdGlvbk9mUHJvamVjdCkpIHtcbiAgICAgIGxvY2F0aW9uT2ZQcm9qZWN0ID0gbG9jYXRpb25PZlByb2plY3Quam9pbignLycpO1xuICAgIH1cbiAgICBsZXQgbG9jYXRpb24gPSBjcm9zc1BsYXRmb3JtUGF0aChsb2NhdGlvbk9mUHJvamVjdC5yZXBsYWNlKC9cXC9cXC8vZywgJy8nKSk7XG5cbiAgICBpZiAoIV8uaXNTdHJpbmcobG9jYXRpb24pKSB7XG4gICAgICBIZWxwZXJzLndhcm4oYFtwcm9qZWN0LmZyb21dIGxvY2F0aW9uIGlzIG5vdCBhIHN0cmluZ2ApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocGF0aC5iYXNlbmFtZShsb2NhdGlvbikgPT09ICdkaXN0Jykge1xuICAgICAgbG9jYXRpb24gPSBwYXRoLmRpcm5hbWUobG9jYXRpb24pO1xuICAgIH1cbiAgICBsb2NhdGlvbiA9IGNyb3NzUGxhdGZvcm1QYXRoKHBhdGgucmVzb2x2ZShsb2NhdGlvbikpO1xuXG4gICAgY29uc3QgYWxyZWFkeUV4aXN0ID0gdGhpcy5wcm9qZWN0cy5maW5kKFxuICAgICAgbCA9PiBsLmxvY2F0aW9uLnRyaW0oKSA9PT0gbG9jYXRpb24udHJpbSgpLFxuICAgICk7XG4gICAgaWYgKGFscmVhZHlFeGlzdCkge1xuICAgICAgcmV0dXJuIGFscmVhZHlFeGlzdCBhcyBhbnk7XG4gICAgfVxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuICB9XG5cblxuXG4gIG5lYXJlc3RUbyhcbiAgICBhYnNvbHV0ZUxvY2F0aW9uOiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgICBvcHRpb25zPzoge1xuICAgICAgdHlwZT86IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgICAgZmluZEdpdFJvb3Q/OiBib29sZWFuO1xuICAgICAgb25seU91dFNpZGVOb2RlTW9kdWxlcz86IGJvb2xlYW47XG4gICAgfSxcbiAgKTogUFJPSkVDVCB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgdW5sb2FkKHByb2plY3RPckxvY2F0aW9uT2ZQcm9qZWN0OiBQUk9KRUNUIHwgc3RyaW5nKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSBfLmlzU3RyaW5nKHByb2plY3RPckxvY2F0aW9uT2ZQcm9qZWN0KVxuICAgICAgPyBwcm9qZWN0T3JMb2NhdGlvbk9mUHJvamVjdFxuICAgICAgOiBwcm9qZWN0T3JMb2NhdGlvbk9mUHJvamVjdD8ubG9jYXRpb247XG5cbiAgICB0aGlzLnByb2plY3RzID0gdGhpcy5wcm9qZWN0cy5maWx0ZXIoZiA9PiBmLmxvY2F0aW9uICE9PSBsb2NhdGlvbik7XG4gICAgdGhpcy5lbXB0eUxvY2F0aW9ucyA9IHRoaXMuZW1wdHlMb2NhdGlvbnMuZmlsdGVyKGYgPT4gZiAhPT0gbG9jYXRpb24pO1xuICB9XG5cblxuXG4gIHJlbW92ZShwcm9qZWN0OiBQUk9KRUNUKSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgfVxuXG5cblxuICBhZGQocHJvamVjdDogUFJPSkVDVCkge1xuLyogKi9cbi8qICovXG4gIFxuICB9XG5cblxuXG5cbiAgYWxsUHJvamVjdEZyb20oYWJzb2x1dGVMb2NhdGlvbjogc3RyaW5nLCBzdG9wT25Dd2Q6IHN0cmluZyA9ICcvJykge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuICBhbGxQcm9qZWN0c0Zyb21Gb2xkZXIoZm9sZGVyTG9jYXRpb246IHN0cmluZyk6IFBST0pFQ1RbXSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICBwdWJsaWMgc29ydEdyb3VwT2ZQcm9qZWN0PFQgZXh0ZW5kcyBCYXNlUHJvamVjdCA9IEJhc2VQcm9qZWN0PihcbiAgICBwcm9qZWN0czogVFtdLFxuICAgIHJlc292ZURlcHNBcnJheTogKHByb2o6IFQpID0+IHN0cmluZ1tdLFxuICAgIHByb2pOYW1lVG9Db21wYXJlOiAocHJvajogVCkgPT4gc3RyaW5nLFxuICApOiBUW10ge1xuICAgIGNvbnN0IHZpc2l0ZWQ6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XG4gICAgY29uc3Qgc3RhY2s6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XG4gICAgY29uc3QgcmVzdWx0OiBUW10gPSBbXTtcblxuICAgIGNvbnN0IHZpc2l0ID0gKHByb2plY3Q6IFQpID0+IHtcbiAgICAgIGlmIChzdGFja1twcm9qTmFtZVRvQ29tcGFyZShwcm9qZWN0KV0pIHtcblxuICAgICAgICBIZWxwZXJzLmVycm9yKFxuICAgICAgICAgIGBDaXJjdWxhciBkZXBlbmRlbmN5IGRldGVjdGVkIGludm9sdmluZyBwcm9qZWN0OiAke3Byb2pOYW1lVG9Db21wYXJlKHByb2plY3QpfWAsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmICghdmlzaXRlZFtwcm9qTmFtZVRvQ29tcGFyZShwcm9qZWN0KV0pIHtcbiAgICAgICAgdmlzaXRlZFtwcm9qTmFtZVRvQ29tcGFyZShwcm9qZWN0KV0gPSB0cnVlO1xuICAgICAgICBzdGFja1twcm9qTmFtZVRvQ29tcGFyZShwcm9qZWN0KV0gPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IGRlcHNSZXNvbHZlZCA9IHJlc292ZURlcHNBcnJheShwcm9qZWN0KTtcbiAgICAgICAgZGVwc1Jlc29sdmVkLmZvckVhY2goZGVwZW5kZW5jeSA9PiB7XG4gICAgICAgICAgY29uc3QgZGVwZW5kZW50UHJvamVjdCA9IHByb2plY3RzLmZpbmQocCA9PiB7XG5cbiAgICAgICAgICAgIHJldHVybiBwcm9qTmFtZVRvQ29tcGFyZShwKSA9PT0gZGVwZW5kZW5jeTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAoZGVwZW5kZW50UHJvamVjdCkge1xuICAgICAgICAgICAgdmlzaXQoZGVwZW5kZW50UHJvamVjdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBzdGFja1twcm9qTmFtZVRvQ29tcGFyZShwcm9qZWN0KV0gPSBmYWxzZTtcbiAgICAgICAgcmVzdWx0LnB1c2gocHJvamVjdCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHByb2plY3RzLmZvckVhY2gocHJvamVjdCA9PiB2aXNpdChwcm9qZWN0KSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcblxuICB9XG5cbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRucC1oZWxwZXJzIGxpYi9iYXNlL2Jhc2UtcHJvamVjdC1yZXNvbHZlci50cyJdfQ==
|