@platforma-sdk/bootstrap 1.19.3

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 (61) hide show
  1. package/assets/compose-fs.yaml +68 -0
  2. package/assets/compose-minio.yaml +25 -0
  3. package/assets/compose-s3.yaml +95 -0
  4. package/assets/users.htpasswd +3 -0
  5. package/bin/run.cmd +3 -0
  6. package/bin/run.js +7 -0
  7. package/dist/block.d.ts +19 -0
  8. package/dist/block.js +89 -0
  9. package/dist/block.js.map +1 -0
  10. package/dist/cmd-opts.d.ts +64 -0
  11. package/dist/cmd-opts.js +121 -0
  12. package/dist/cmd-opts.js.map +1 -0
  13. package/dist/commands/create-block.d.ts +9 -0
  14. package/dist/commands/create-block.js +43 -0
  15. package/dist/commands/create-block.js.map +1 -0
  16. package/dist/commands/reset.d.ts +9 -0
  17. package/dist/commands/reset.js +47 -0
  18. package/dist/commands/reset.js.map +1 -0
  19. package/dist/commands/start/docker/fs.d.ts +19 -0
  20. package/dist/commands/start/docker/fs.js +71 -0
  21. package/dist/commands/start/docker/fs.js.map +1 -0
  22. package/dist/commands/start/docker/s3.d.ts +19 -0
  23. package/dist/commands/start/docker/s3.js +69 -0
  24. package/dist/commands/start/docker/s3.js.map +1 -0
  25. package/dist/commands/start/local/fs.d.ts +24 -0
  26. package/dist/commands/start/local/fs.js +98 -0
  27. package/dist/commands/start/local/fs.js.map +1 -0
  28. package/dist/commands/start/local/s3.d.ts +25 -0
  29. package/dist/commands/start/local/s3.js +100 -0
  30. package/dist/commands/start/local/s3.js.map +1 -0
  31. package/dist/commands/start.d.ts +9 -0
  32. package/dist/commands/start.js +47 -0
  33. package/dist/commands/start.js.map +1 -0
  34. package/dist/commands/stop.d.ts +9 -0
  35. package/dist/commands/stop.js +47 -0
  36. package/dist/commands/stop.js.map +1 -0
  37. package/dist/core.d.ts +70 -0
  38. package/dist/core.js +523 -0
  39. package/dist/core.js.map +1 -0
  40. package/dist/package.d.ts +11 -0
  41. package/dist/package.js +52 -0
  42. package/dist/package.js.map +1 -0
  43. package/dist/platforma.d.ts +23 -0
  44. package/dist/platforma.js +172 -0
  45. package/dist/platforma.js.map +1 -0
  46. package/dist/run.d.ts +6 -0
  47. package/dist/run.js +88 -0
  48. package/dist/run.js.map +1 -0
  49. package/dist/state.d.ts +38 -0
  50. package/dist/state.js +86 -0
  51. package/dist/state.js.map +1 -0
  52. package/dist/templates/pl-config.d.ts +5 -0
  53. package/dist/templates/pl-config.js +239 -0
  54. package/dist/templates/pl-config.js.map +1 -0
  55. package/dist/templates/types.d.ts +128 -0
  56. package/dist/templates/types.js +30 -0
  57. package/dist/templates/types.js.map +1 -0
  58. package/dist/util.d.ts +6 -0
  59. package/dist/util.js +54 -0
  60. package/dist/util.js.map +1 -0
  61. package/package.json +50 -0
@@ -0,0 +1,239 @@
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 (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.storageSettingsFromURL = storageSettingsFromURL;
30
+ exports.loadDefaults = loadDefaults;
31
+ exports.render = render;
32
+ const types = __importStar(require("./types"));
33
+ const util_1 = require("../util");
34
+ const state_1 = __importDefault(require("../state"));
35
+ function storageSettingsFromURL(storageURL, baseDir) {
36
+ storageURL = (0, util_1.resolveTilde)(storageURL);
37
+ const url = new URL(storageURL, `file:${baseDir}`);
38
+ switch (url.protocol) {
39
+ case 's3:':
40
+ var bucketName = url.hostname;
41
+ var region = url.searchParams.get('region');
42
+ return {
43
+ type: 'S3',
44
+ bucketName,
45
+ region
46
+ };
47
+ case 's3e:':
48
+ return {
49
+ type: 'S3',
50
+ endpoint: `http://${url.host}/`,
51
+ bucketName: url.pathname.split('/')[1], // '/bucket/key' -> ['', 'bucket', 'key']. Leading slash causes '' to be first element
52
+ region: url.searchParams.get('region'),
53
+ key: url.username ? `static:${url.username}` : '',
54
+ secret: url.password ? `static:${url.password}` : ''
55
+ };
56
+ case 's3es:':
57
+ return {
58
+ type: 'S3',
59
+ endpoint: `https://${url.host}/`,
60
+ bucketName: url.pathname.split('/')[1], // '/bucket/key' -> ['', 'bucket', 'key']. Leading slash causes '' to be first element
61
+ region: url.searchParams.get('region'),
62
+ key: url.username ? `static:${url.username}` : '',
63
+ secret: url.password ? `static:${url.password}` : ''
64
+ };
65
+ case 'file:':
66
+ return {
67
+ type: 'FS',
68
+ rootPath: url.pathname
69
+ };
70
+ default:
71
+ throw new Error(`storage protocol '${url.protocol}' is not supported`);
72
+ }
73
+ }
74
+ function loadDefaults(jwtKey, options) {
75
+ const localRoot = options?.localRoot ?? state_1.default.path('local-pl');
76
+ const log = {
77
+ level: options?.log?.level ?? 'info',
78
+ path: options?.log?.path ?? `${localRoot}/platforma.log`
79
+ };
80
+ const grpc = {
81
+ listen: options?.grpc?.listen ?? 'localhost:6345',
82
+ tls: {
83
+ enable: defaultBool(options?.grpc?.tls?.enable, false),
84
+ clientAuthMode: options?.grpc?.tls?.clientAuthMode ?? 'NoAuth',
85
+ certFile: options?.grpc?.tls?.certFile ?? `${localRoot}/certs/server-cert.pem`,
86
+ keyFile: options?.grpc?.tls?.keyFile ?? `${localRoot}/certs/server-key.pem`,
87
+ ...options?.grpc?.tls
88
+ }
89
+ };
90
+ const core = {
91
+ auth: {
92
+ enabled: options?.core?.auth?.enabled ?? false,
93
+ drivers: options?.core?.auth?.drivers ?? [
94
+ { driver: 'jwt', key: jwtKey },
95
+ { driver: 'htpasswd', path: `${localRoot}/users.htpasswd` }
96
+ ]
97
+ }
98
+ };
99
+ const primary = defaultStorageSettings('main', `${localRoot}/storages/main`, 'main-bucket', options?.storages?.primary);
100
+ var work;
101
+ const wType = options?.storages?.work?.type;
102
+ switch (wType) {
103
+ case undefined:
104
+ case 'FS':
105
+ work = types.emptyFSSettings('work');
106
+ work.rootPath = options?.storages?.work?.rootPath ?? `${localRoot}/storages/work`;
107
+ work.indexCachePeriod = options?.storages?.work?.indexCachePeriod ?? '1m';
108
+ break;
109
+ default:
110
+ throw new Error("work storage MUST have 'FS' type as it is used for working directories management");
111
+ }
112
+ const library = defaultStorageSettings('library', `${localRoot}/storages/library`, 'library-bucket', options?.storages?.library);
113
+ const monitoring = {
114
+ enabled: defaultBool(options?.monitoring?.enabled, true),
115
+ listen: options?.monitoring?.listen ?? '127.0.0.1:9090'
116
+ };
117
+ const debug = {
118
+ enabled: defaultBool(options?.debug?.enabled, true),
119
+ listen: options?.debug?.listen ?? '127.0.0.1:9091'
120
+ };
121
+ const license = {
122
+ value: options?.license?.value ?? '',
123
+ file: options?.license?.file ?? ''
124
+ };
125
+ return {
126
+ localRoot,
127
+ license,
128
+ log,
129
+ grpc,
130
+ core,
131
+ monitoring,
132
+ debug,
133
+ storages: { primary, work, library },
134
+ hacks: { libraryDownloadable: true }
135
+ };
136
+ }
137
+ function defaultStorageSettings(storageID, defaultLocation, defaultBucket, options) {
138
+ var storage;
139
+ const pType = options?.type;
140
+ switch (pType) {
141
+ case undefined:
142
+ case 'FS':
143
+ storage = types.emptyFSSettings(storageID);
144
+ storage.rootPath = options?.rootPath ?? defaultLocation;
145
+ break;
146
+ case 'S3':
147
+ storage = types.emptyS3Settings(storageID);
148
+ storage.endpoint = options?.endpoint ?? 'http://localhost:9000';
149
+ storage.presignEndpoint = options?.presignEndpoint ?? 'http://localhost:9000';
150
+ storage.bucketName = options?.bucketName ?? defaultBucket;
151
+ storage.createBucket = defaultBool(options?.createBucket, true);
152
+ storage.forcePathStyle = defaultBool(options?.forcePathStyle, true);
153
+ storage.key = options?.key ?? '';
154
+ storage.secret = options?.secret ?? '';
155
+ storage.accessPrefixes = options?.accessPrefixes ?? [''];
156
+ storage.uploadKeyPrefix = options?.uploadKeyPrefix ?? '';
157
+ break;
158
+ default:
159
+ (0, util_1.assertNever)(pType);
160
+ throw new Error('unknown storage type'); // calm down TS type analyzer
161
+ }
162
+ return storage;
163
+ }
164
+ function render(options) {
165
+ const disableMon = options.monitoring.enabled ? '' : ' disabled';
166
+ const disableDbg = options.debug.enabled ? '' : ' disabled';
167
+ const disableTLS = options.grpc.tls.enable ? '' : ' disabled';
168
+ const libraryDownloadable = options.hacks.libraryDownloadable ? 'true' : 'false';
169
+ return `
170
+ license:
171
+ value: '${options.license.value}'
172
+ file: '${options.license.file}'
173
+
174
+ logging:
175
+ level: '${options.log.level}'
176
+ destinations:
177
+ - path: '${options.log.path}'
178
+
179
+ monitoring${disableMon}:
180
+ listen: '${options.monitoring.listen}'
181
+
182
+ debug${disableDbg}:
183
+ listen: '${options.debug.listen}'
184
+
185
+ core:
186
+ logging:
187
+ extendedInfo: true
188
+ dumpResourceData: true
189
+
190
+ grpc:
191
+ listen: '${options.grpc.listen}'
192
+
193
+ tls${disableTLS}:
194
+ clientAuthMode: '${options.grpc.tls.clientAuthMode}'
195
+ certificates:
196
+ - certFile: '${options.grpc.tls.certFile}'
197
+ keyFile: '${options.grpc.tls.keyFile}'
198
+
199
+
200
+ authEnabled: ${JSON.stringify(options.core.auth.enabled)}
201
+ auth: ${JSON.stringify(options.core.auth.drivers)}
202
+ db:
203
+ path: '${options.localRoot}/db'
204
+
205
+ controllers:
206
+ data:
207
+ main:
208
+ storages:
209
+ main:
210
+ mode: primary
211
+ downloadable: true
212
+
213
+ library:
214
+ mode: passive
215
+ downloadable: ${libraryDownloadable}
216
+
217
+ work:
218
+ mode: active
219
+ downloadable: false
220
+
221
+ storages:
222
+ - ${JSON.stringify(options.storages.primary)}
223
+ - ${JSON.stringify(options.storages.library)}
224
+ - ${JSON.stringify(options.storages.work)}
225
+
226
+ runner:
227
+ type: local
228
+ storageRoot: '${options.storages.work.rootPath}'
229
+
230
+ packageLoader:
231
+ packagesRoot: '${options.localRoot}/packages'
232
+
233
+ workflows: {}
234
+ `;
235
+ }
236
+ function defaultBool(v, def) {
237
+ return v === undefined ? def : v;
238
+ }
239
+ //# sourceMappingURL=pl-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pl-config.js","sourceRoot":"","sources":["../../src/templates/pl-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,128 @@
1
+ export type plSettings = {
2
+ localRoot: string;
3
+ license: licenseSettings;
4
+ log: logSettings;
5
+ grpc: grpcSettings;
6
+ core: coreSettings;
7
+ storages: storagesSettings;
8
+ monitoring: monitoringSettings;
9
+ debug: debugSettings;
10
+ hacks: {
11
+ libraryDownloadable: boolean;
12
+ };
13
+ };
14
+ export type plOptions = {
15
+ localRoot?: string;
16
+ license?: licenseOptions;
17
+ log?: logOptions;
18
+ grpc?: grpcOptions;
19
+ core?: coreOptions;
20
+ storages?: storagesOptions;
21
+ monitoring?: monitoringOptions;
22
+ debug?: debugOptions;
23
+ };
24
+ export type licenseSettings = {
25
+ value: string;
26
+ file: string;
27
+ };
28
+ export type licenseOptions = DeepPartial<licenseSettings>;
29
+ export type logSettings = {
30
+ level: string;
31
+ path: string;
32
+ };
33
+ export type logOptions = DeepPartial<logSettings>;
34
+ export type coreSettings = {
35
+ auth: authSettings;
36
+ };
37
+ export type coreOptions = {
38
+ auth?: authOptions;
39
+ };
40
+ export type authSettings = {
41
+ enabled: boolean;
42
+ drivers: authDriver[];
43
+ };
44
+ export type authOptions = Partial<authSettings>;
45
+ export type authDriver = {
46
+ driver: 'ldap';
47
+ serverUrl: string;
48
+ defaultDN: string;
49
+ } | {
50
+ driver: 'jwt';
51
+ key: string;
52
+ } | {
53
+ driver: 'htpasswd';
54
+ path: string;
55
+ };
56
+ export type grpcSettings = {
57
+ listen: string;
58
+ tls: tlsSettings;
59
+ };
60
+ export type grpcOptions = Partial<grpcSettings>;
61
+ export type tlsSettings = {
62
+ enable: boolean;
63
+ clientAuthMode: tlsAuthMode;
64
+ certFile: string;
65
+ keyFile: string;
66
+ };
67
+ export type tlsOptions = Partial<tlsSettings>;
68
+ export type tlsAuthMode = 'NoAuth' | 'RequestAnyCert' | 'RequireAnyCert' | 'RequestValidCert' | 'RequireValidCert';
69
+ export type storagesSettings = {
70
+ primary: storageSettings;
71
+ work: storageSettings;
72
+ library: storageSettings;
73
+ };
74
+ export type storagesOptions = {
75
+ primary?: storageOptions;
76
+ work?: storageOptions;
77
+ library?: storageOptions;
78
+ };
79
+ export type storageSettings = s3StorageSettings | fsStorageSettings;
80
+ export type storageOptions = s3StorageOptions | fsStorageOptions;
81
+ type storageID = {
82
+ id: string;
83
+ };
84
+ type commonStorageSettings = {
85
+ indexCachePeriod: string;
86
+ };
87
+ export type s3StorageSettings = storageID & s3StorageType & commonStorageSettings & s3StorageTypeSettings;
88
+ export type s3StorageOptions = s3StorageType & Partial<commonStorageSettings> & Partial<s3StorageTypeSettings>;
89
+ export declare function emptyS3Settings(id: string): s3StorageSettings;
90
+ type s3StorageType = {
91
+ type: 'S3';
92
+ };
93
+ type s3StorageTypeSettings = {
94
+ endpoint: string;
95
+ presignEndpoint: string;
96
+ region: string;
97
+ bucketName: string;
98
+ createBucket: boolean;
99
+ forcePathStyle: boolean;
100
+ key: string;
101
+ secret: string;
102
+ accessPrefixes: string[];
103
+ uploadKeyPrefix: string;
104
+ };
105
+ export type fsStorageSettings = storageID & fsStorageType & commonStorageSettings & fsStorageTypeSettings;
106
+ export type fsStorageOptions = fsStorageType & Partial<commonStorageSettings> & Partial<fsStorageTypeSettings>;
107
+ export declare function emptyFSSettings(id: string): fsStorageSettings;
108
+ type fsStorageType = {
109
+ type: 'FS';
110
+ };
111
+ type fsStorageTypeSettings = {
112
+ rootPath: string;
113
+ };
114
+ export type monitoringSettings = {
115
+ enabled: boolean;
116
+ listen: string;
117
+ };
118
+ export type monitoringOptions = Partial<monitoringSettings>;
119
+ export type debugSettings = {
120
+ enabled: boolean;
121
+ listen: string;
122
+ };
123
+ export type debugOptions = Partial<debugSettings>;
124
+ /** Makes all keys and keys in sub-objects optional. */
125
+ type DeepPartial<T> = {
126
+ [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];
127
+ };
128
+ export {};
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.emptyS3Settings = emptyS3Settings;
4
+ exports.emptyFSSettings = emptyFSSettings;
5
+ function emptyS3Settings(id) {
6
+ return {
7
+ id: id,
8
+ type: 'S3',
9
+ indexCachePeriod: '0s',
10
+ endpoint: '',
11
+ region: '',
12
+ presignEndpoint: '',
13
+ bucketName: '',
14
+ createBucket: false,
15
+ forcePathStyle: false,
16
+ key: '',
17
+ secret: '',
18
+ accessPrefixes: [],
19
+ uploadKeyPrefix: ''
20
+ };
21
+ }
22
+ function emptyFSSettings(id) {
23
+ return {
24
+ id: id,
25
+ type: 'FS',
26
+ indexCachePeriod: '0s',
27
+ rootPath: ''
28
+ };
29
+ }
30
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/templates/types.ts"],"names":[],"mappings":";;AA0GA,0CAgBC;AAkBD,0CAOC;AAzCD,SAAgB,eAAe,CAAC,EAAU;IACxC,OAAO;QACL,EAAE,EAAE,EAAE;QACN,IAAI,EAAE,IAAI;QACV,gBAAgB,EAAE,IAAI;QACtB,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,EAAE;QACV,eAAe,EAAE,EAAE;QACnB,UAAU,EAAE,EAAE;QACd,YAAY,EAAE,KAAK;QACnB,cAAc,EAAE,KAAK;QACrB,GAAG,EAAE,EAAE;QACP,MAAM,EAAE,EAAE;QACV,cAAc,EAAE,EAAE;QAClB,eAAe,EAAE,EAAE;KACpB,CAAC;AACJ,CAAC;AAkBD,SAAgB,eAAe,CAAC,EAAU;IACxC,OAAO;QACL,EAAE,EAAE,EAAE;QACN,IAAI,EAAE,IAAI;QACV,gBAAgB,EAAE,IAAI;QACtB,QAAQ,EAAE,EAAE;KACb,CAAC;AACJ,CAAC"}
package/dist/util.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ import winston from 'winston';
2
+ export declare function askYN(prompt: string): boolean;
3
+ export declare function assertNever(n: never): void;
4
+ export declare function createLogger(level?: string): winston.Logger;
5
+ export declare function randomStr(len: number): string;
6
+ export declare function resolveTilde(p: string): string;
package/dist/util.js ADDED
@@ -0,0 +1,54 @@
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.askYN = askYN;
7
+ exports.assertNever = assertNever;
8
+ exports.createLogger = createLogger;
9
+ exports.randomStr = randomStr;
10
+ exports.resolveTilde = resolveTilde;
11
+ const os_1 = __importDefault(require("os"));
12
+ const path_1 = __importDefault(require("path"));
13
+ const winston_1 = __importDefault(require("winston"));
14
+ const crypto_1 = require("crypto");
15
+ const readline_sync_1 = __importDefault(require("readline-sync"));
16
+ function askYN(prompt) {
17
+ const answer = readline_sync_1.default.question(`${prompt} [y/N] `);
18
+ return answer.toLowerCase() === 'y';
19
+ }
20
+ function assertNever(n) {
21
+ throw new Error('this should never happen');
22
+ }
23
+ function createLogger(level = 'debug') {
24
+ return winston_1.default.createLogger({
25
+ level: level,
26
+ format: winston_1.default.format.combine(winston_1.default.format.printf(({ level, message }) => {
27
+ const indent = ' '.repeat(level.length + 2); // For ': ' after the level
28
+ const indentedMessage = message
29
+ .split('\n')
30
+ .map((line, index) => (index === 0 ? line : indent + line))
31
+ .join('\n');
32
+ const colorize = (l) => winston_1.default.format.colorize().colorize(l, l);
33
+ return `${colorize(level)}: ${indentedMessage}`;
34
+ })),
35
+ transports: [
36
+ new winston_1.default.transports.Console({
37
+ stderrLevels: ['error', 'warn', 'info', 'debug'],
38
+ handleExceptions: true
39
+ })
40
+ ]
41
+ });
42
+ }
43
+ function randomStr(len) {
44
+ return (0, crypto_1.randomBytes)(Math.ceil(len / 2))
45
+ .toString('hex')
46
+ .slice(0, len);
47
+ }
48
+ function resolveTilde(p) {
49
+ if (p.startsWith('~')) {
50
+ return path_1.default.join(os_1.default.homedir(), p.slice(1));
51
+ }
52
+ return p;
53
+ }
54
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";;;;;AAOA,sBAGC;AAED,kCAEC;AAED,oCAyBC;AAED,8BAIC;AAED,oCAKC;AAtDD,4CAAoB;AACpB,gDAAwB;AAExB,sDAA8B;AAC9B,mCAAqC;AACrC,kEAAyC;AAEzC,SAAgB,KAAK,CAAC,MAAc;IAClC,MAAM,MAAM,GAAG,uBAAY,CAAC,QAAQ,CAAC,GAAG,MAAM,SAAS,CAAC,CAAC;IACzD,OAAO,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC;AACtC,CAAC;AAED,SAAgB,WAAW,CAAC,CAAQ;IAClC,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;AAC9C,CAAC;AAED,SAAgB,YAAY,CAAC,QAAgB,OAAO;IAClD,OAAO,iBAAO,CAAC,YAAY,CAAC;QAC1B,KAAK,EAAE,KAAK;QAEZ,MAAM,EAAE,iBAAO,CAAC,MAAM,CAAC,OAAO,CAC5B,iBAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;YAC3C,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,2BAA2B;YACxE,MAAM,eAAe,GAAG,OAAO;iBAC5B,KAAK,CAAC,IAAI,CAAC;iBACX,GAAG,CAAC,CAAC,IAAY,EAAE,KAAa,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;iBAC1E,IAAI,CAAC,IAAI,CAAC,CAAC;YAEd,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,iBAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAEzE,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,eAAe,EAAE,CAAC;QAClD,CAAC,CAAC,CACH;QAED,UAAU,EAAE;YACV,IAAI,iBAAO,CAAC,UAAU,CAAC,OAAO,CAAC;gBAC7B,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;gBAChD,gBAAgB,EAAE,IAAI;aACvB,CAAC;SACH;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,SAAS,CAAC,GAAW;IACnC,OAAO,IAAA,oBAAW,EAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;SACnC,QAAQ,CAAC,KAAK,CAAC;SACf,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACnB,CAAC;AAED,SAAgB,YAAY,CAAC,CAAS;IACpC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
package/package.json ADDED
@@ -0,0 +1,50 @@
1
+ {
2
+ "name": "@platforma-sdk/bootstrap",
3
+ "version": "1.19.3",
4
+ "pl-version": "1.11.0",
5
+ "description": "MiLaboratories Platforma Backend bootstrap code: configuration generators, service run wrappers and so on",
6
+ "scripts": {
7
+ "build": "rm -rf ./dist/ && tsc",
8
+ "test": "jest",
9
+ "prettier-format": "prettier --config .prettierrc 'src/**/*.ts' --write"
10
+ },
11
+ "bin": {
12
+ "pl-service": "./bin/run.js"
13
+ },
14
+ "files": [
15
+ "bin/run.cmd",
16
+ "bin/run.js",
17
+ "dist",
18
+ "assets",
19
+ "postinstall.js"
20
+ ],
21
+ "keywords": [],
22
+ "license": "UNLICENSED",
23
+ "devDependencies": {
24
+ "@types/decompress": "^4.2.7",
25
+ "@types/jest": "^29.5.12",
26
+ "@types/node": "^20.14.10",
27
+ "@types/readline-sync": "^1.4.8",
28
+ "prettier": "^3.3.3",
29
+ "ts-jest": "^29.1.5",
30
+ "ts-node": "^10.9.2",
31
+ "tsconfig-paths": "^4.2.0",
32
+ "typescript": "^5.5.3"
33
+ },
34
+ "dependencies": {
35
+ "@oclif/core": "^3.26.6",
36
+ "canonicalize": "^2.0.0",
37
+ "decompress": "^4.2.1",
38
+ "readline-sync": "^1.4.10",
39
+ "tar": "^7.4.3",
40
+ "winston": "^3.13.0",
41
+ "yaml": "^2.5.0",
42
+ "zod": "^3.23.8"
43
+ },
44
+ "oclif": {
45
+ "bin": "pl-service",
46
+ "commands": "./dist/commands",
47
+ "dirname": "pl-service",
48
+ "topicSeparator": " "
49
+ }
50
+ }