@sw-tsdk/plugin-connector 3.13.1 → 3.13.2-next.3dfd44a
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -18
- package/lib/commands/connector/build.js +168 -44
- package/lib/commands/connector/build.js.map +1 -1
- package/lib/commands/connector/sign.js +108 -12
- package/lib/commands/connector/sign.js.map +1 -1
- package/lib/commands/connector/validate.js +110 -10
- package/lib/commands/connector/validate.js.map +1 -1
- package/lib/commands/migrator/convert.d.ts +3 -0
- package/lib/commands/migrator/convert.js +201 -20
- package/lib/commands/migrator/convert.js.map +1 -1
- package/lib/templates/migrator-runners/plugin_override.txt +76 -4
- package/lib/templates/migrator-runners/runner_override.txt +30 -0
- package/lib/templates/migrator-runners/script_override.txt +77 -5
- package/lib/templates/swimlane/__init__.py +18 -0
- package/lib/templates/swimlane/core/__init__.py +0 -0
- package/lib/templates/swimlane/core/adapters/__init__.py +10 -0
- package/lib/templates/swimlane/core/adapters/app.py +59 -0
- package/lib/templates/swimlane/core/adapters/app_revision.py +49 -0
- package/lib/templates/swimlane/core/adapters/helper.py +84 -0
- package/lib/templates/swimlane/core/adapters/record.py +468 -0
- package/lib/templates/swimlane/core/adapters/record_revision.py +43 -0
- package/lib/templates/swimlane/core/adapters/report.py +65 -0
- package/lib/templates/swimlane/core/adapters/task.py +58 -0
- package/lib/templates/swimlane/core/adapters/usergroup.py +183 -0
- package/lib/templates/swimlane/core/bulk.py +48 -0
- package/lib/templates/swimlane/core/cache.py +165 -0
- package/lib/templates/swimlane/core/client.py +466 -0
- package/lib/templates/swimlane/core/cursor.py +100 -0
- package/lib/templates/swimlane/core/fields/__init__.py +46 -0
- package/lib/templates/swimlane/core/fields/attachment.py +82 -0
- package/lib/templates/swimlane/core/fields/base/__init__.py +15 -0
- package/lib/templates/swimlane/core/fields/base/cursor.py +90 -0
- package/lib/templates/swimlane/core/fields/base/field.py +149 -0
- package/lib/templates/swimlane/core/fields/base/multiselect.py +116 -0
- package/lib/templates/swimlane/core/fields/comment.py +48 -0
- package/lib/templates/swimlane/core/fields/datetime.py +112 -0
- package/lib/templates/swimlane/core/fields/history.py +28 -0
- package/lib/templates/swimlane/core/fields/list.py +266 -0
- package/lib/templates/swimlane/core/fields/number.py +38 -0
- package/lib/templates/swimlane/core/fields/reference.py +169 -0
- package/lib/templates/swimlane/core/fields/text.py +30 -0
- package/lib/templates/swimlane/core/fields/tracking.py +10 -0
- package/lib/templates/swimlane/core/fields/usergroup.py +137 -0
- package/lib/templates/swimlane/core/fields/valueslist.py +70 -0
- package/lib/templates/swimlane/core/resolver.py +46 -0
- package/lib/templates/swimlane/core/resources/__init__.py +0 -0
- package/lib/templates/swimlane/core/resources/app.py +136 -0
- package/lib/templates/swimlane/core/resources/app_revision.py +43 -0
- package/lib/templates/swimlane/core/resources/attachment.py +64 -0
- package/lib/templates/swimlane/core/resources/base.py +55 -0
- package/lib/templates/swimlane/core/resources/comment.py +33 -0
- package/lib/templates/swimlane/core/resources/record.py +499 -0
- package/lib/templates/swimlane/core/resources/record_revision.py +44 -0
- package/lib/templates/swimlane/core/resources/report.py +259 -0
- package/lib/templates/swimlane/core/resources/revision_base.py +69 -0
- package/lib/templates/swimlane/core/resources/task.py +16 -0
- package/lib/templates/swimlane/core/resources/usergroup.py +166 -0
- package/lib/templates/swimlane/core/search.py +31 -0
- package/lib/templates/swimlane/core/wrappedsession.py +12 -0
- package/lib/templates/swimlane/exceptions.py +191 -0
- package/lib/templates/swimlane/utils/__init__.py +132 -0
- package/lib/templates/swimlane/utils/date_validator.py +4 -0
- package/lib/templates/swimlane/utils/list_validator.py +7 -0
- package/lib/templates/swimlane/utils/str_validator.py +10 -0
- package/lib/templates/swimlane/utils/version.py +101 -0
- package/lib/transformers/base-transformer.js +61 -14
- package/lib/transformers/base-transformer.js.map +1 -1
- package/lib/transformers/connector-generator.d.ts +104 -2
- package/lib/transformers/connector-generator.js +1234 -51
- package/lib/transformers/connector-generator.js.map +1 -1
- package/lib/types/migrator-types.d.ts +22 -0
- package/lib/types/migrator-types.js.map +1 -1
- package/oclif.manifest.json +1 -1
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -16,7 +16,7 @@ $ npm install -g @sw-tsdk/plugin-connector
|
|
|
16
16
|
$ sw-tsdk-connector COMMAND
|
|
17
17
|
running command...
|
|
18
18
|
$ sw-tsdk-connector (--version)
|
|
19
|
-
@sw-tsdk/plugin-connector/3.13.
|
|
19
|
+
@sw-tsdk/plugin-connector/3.13.2-next.3dfd44a linux-x64 node-v20.19.0
|
|
20
20
|
$ sw-tsdk-connector --help [COMMAND]
|
|
21
21
|
USAGE
|
|
22
22
|
$ sw-tsdk-connector COMMAND
|
|
@@ -61,7 +61,7 @@ DESCRIPTION
|
|
|
61
61
|
Update a connector action.
|
|
62
62
|
```
|
|
63
63
|
|
|
64
|
-
_See code: [lib/commands/action/add.js](https://github.com/swimlane/turbine-sdk/blob/v3.13.
|
|
64
|
+
_See code: [lib/commands/action/add.js](https://github.com/swimlane/turbine-sdk/blob/v3.13.2-next.3dfd44a/lib/commands/action/add.js)_
|
|
65
65
|
|
|
66
66
|
## `sw-tsdk-connector action:generate:data`
|
|
67
67
|
|
|
@@ -86,7 +86,7 @@ DESCRIPTION
|
|
|
86
86
|
Use to test a task in an integration
|
|
87
87
|
```
|
|
88
88
|
|
|
89
|
-
_See code: [lib/commands/action/generate/data.js](https://github.com/swimlane/turbine-sdk/blob/v3.13.
|
|
89
|
+
_See code: [lib/commands/action/generate/data.js](https://github.com/swimlane/turbine-sdk/blob/v3.13.2-next.3dfd44a/lib/commands/action/generate/data.js)_
|
|
90
90
|
|
|
91
91
|
## `sw-tsdk-connector action:generate:input`
|
|
92
92
|
|
|
@@ -111,7 +111,7 @@ DESCRIPTION
|
|
|
111
111
|
Update action input schema.
|
|
112
112
|
```
|
|
113
113
|
|
|
114
|
-
_See code: [lib/commands/action/generate/input.js](https://github.com/swimlane/turbine-sdk/blob/v3.13.
|
|
114
|
+
_See code: [lib/commands/action/generate/input.js](https://github.com/swimlane/turbine-sdk/blob/v3.13.2-next.3dfd44a/lib/commands/action/generate/input.js)_
|
|
115
115
|
|
|
116
116
|
## `sw-tsdk-connector action:generate:output`
|
|
117
117
|
|
|
@@ -135,7 +135,7 @@ DESCRIPTION
|
|
|
135
135
|
Update a connector action.
|
|
136
136
|
```
|
|
137
137
|
|
|
138
|
-
_See code: [lib/commands/action/generate/output.js](https://github.com/swimlane/turbine-sdk/blob/v3.13.
|
|
138
|
+
_See code: [lib/commands/action/generate/output.js](https://github.com/swimlane/turbine-sdk/blob/v3.13.2-next.3dfd44a/lib/commands/action/generate/output.js)_
|
|
139
139
|
|
|
140
140
|
## `sw-tsdk-connector action:run:local`
|
|
141
141
|
|
|
@@ -164,7 +164,7 @@ DESCRIPTION
|
|
|
164
164
|
Runs a connector action. (Defaults to current image version in local repository).
|
|
165
165
|
```
|
|
166
166
|
|
|
167
|
-
_See code: [lib/commands/action/run/local.js](https://github.com/swimlane/turbine-sdk/blob/v3.13.
|
|
167
|
+
_See code: [lib/commands/action/run/local.js](https://github.com/swimlane/turbine-sdk/blob/v3.13.2-next.3dfd44a/lib/commands/action/run/local.js)_
|
|
168
168
|
|
|
169
169
|
## `sw-tsdk-connector asset:add`
|
|
170
170
|
|
|
@@ -185,7 +185,7 @@ DESCRIPTION
|
|
|
185
185
|
Update a connector action.
|
|
186
186
|
```
|
|
187
187
|
|
|
188
|
-
_See code: [lib/commands/asset/add.js](https://github.com/swimlane/turbine-sdk/blob/v3.13.
|
|
188
|
+
_See code: [lib/commands/asset/add.js](https://github.com/swimlane/turbine-sdk/blob/v3.13.2-next.3dfd44a/lib/commands/asset/add.js)_
|
|
189
189
|
|
|
190
190
|
## `sw-tsdk-connector connector:build`
|
|
191
191
|
|
|
@@ -215,7 +215,7 @@ DESCRIPTION
|
|
|
215
215
|
Builds a local docker image of the connector.
|
|
216
216
|
```
|
|
217
217
|
|
|
218
|
-
_See code: [lib/commands/connector/build.js](https://github.com/swimlane/turbine-sdk/blob/v3.13.
|
|
218
|
+
_See code: [lib/commands/connector/build.js](https://github.com/swimlane/turbine-sdk/blob/v3.13.2-next.3dfd44a/lib/commands/connector/build.js)_
|
|
219
219
|
|
|
220
220
|
## `sw-tsdk-connector connector:create`
|
|
221
221
|
|
|
@@ -249,7 +249,7 @@ DESCRIPTION
|
|
|
249
249
|
Scaffold a new connector
|
|
250
250
|
```
|
|
251
251
|
|
|
252
|
-
_See code: [lib/commands/connector/create.js](https://github.com/swimlane/turbine-sdk/blob/v3.13.
|
|
252
|
+
_See code: [lib/commands/connector/create.js](https://github.com/swimlane/turbine-sdk/blob/v3.13.2-next.3dfd44a/lib/commands/connector/create.js)_
|
|
253
253
|
|
|
254
254
|
## `sw-tsdk-connector connector:create:openapi`
|
|
255
255
|
|
|
@@ -278,7 +278,7 @@ DESCRIPTION
|
|
|
278
278
|
Scaffold a new connector
|
|
279
279
|
```
|
|
280
280
|
|
|
281
|
-
_See code: [lib/commands/connector/create/openapi.js](https://github.com/swimlane/turbine-sdk/blob/v3.13.
|
|
281
|
+
_See code: [lib/commands/connector/create/openapi.js](https://github.com/swimlane/turbine-sdk/blob/v3.13.2-next.3dfd44a/lib/commands/connector/create/openapi.js)_
|
|
282
282
|
|
|
283
283
|
## `sw-tsdk-connector connector:create:source`
|
|
284
284
|
|
|
@@ -296,7 +296,7 @@ DESCRIPTION
|
|
|
296
296
|
Generates 11x source from 10x
|
|
297
297
|
```
|
|
298
298
|
|
|
299
|
-
_See code: [lib/commands/connector/create/source.js](https://github.com/swimlane/turbine-sdk/blob/v3.13.
|
|
299
|
+
_See code: [lib/commands/connector/create/source.js](https://github.com/swimlane/turbine-sdk/blob/v3.13.2-next.3dfd44a/lib/commands/connector/create/source.js)_
|
|
300
300
|
|
|
301
301
|
## `sw-tsdk-connector connector:lint`
|
|
302
302
|
|
|
@@ -319,7 +319,7 @@ DESCRIPTION
|
|
|
319
319
|
Use to lint the connector
|
|
320
320
|
```
|
|
321
321
|
|
|
322
|
-
_See code: [lib/commands/connector/lint.js](https://github.com/swimlane/turbine-sdk/blob/v3.13.
|
|
322
|
+
_See code: [lib/commands/connector/lint.js](https://github.com/swimlane/turbine-sdk/blob/v3.13.2-next.3dfd44a/lib/commands/connector/lint.js)_
|
|
323
323
|
|
|
324
324
|
## `sw-tsdk-connector connector:logo`
|
|
325
325
|
|
|
@@ -338,7 +338,7 @@ DESCRIPTION
|
|
|
338
338
|
Update a connector.
|
|
339
339
|
```
|
|
340
340
|
|
|
341
|
-
_See code: [lib/commands/connector/logo.js](https://github.com/swimlane/turbine-sdk/blob/v3.13.
|
|
341
|
+
_See code: [lib/commands/connector/logo.js](https://github.com/swimlane/turbine-sdk/blob/v3.13.2-next.3dfd44a/lib/commands/connector/logo.js)_
|
|
342
342
|
|
|
343
343
|
## `sw-tsdk-connector connector:sign`
|
|
344
344
|
|
|
@@ -363,7 +363,7 @@ DESCRIPTION
|
|
|
363
363
|
Builds a local docker image of the connector.
|
|
364
364
|
```
|
|
365
365
|
|
|
366
|
-
_See code: [lib/commands/connector/sign.js](https://github.com/swimlane/turbine-sdk/blob/v3.13.
|
|
366
|
+
_See code: [lib/commands/connector/sign.js](https://github.com/swimlane/turbine-sdk/blob/v3.13.2-next.3dfd44a/lib/commands/connector/sign.js)_
|
|
367
367
|
|
|
368
368
|
## `sw-tsdk-connector connector:update`
|
|
369
369
|
|
|
@@ -383,7 +383,7 @@ DESCRIPTION
|
|
|
383
383
|
Update a connector.
|
|
384
384
|
```
|
|
385
385
|
|
|
386
|
-
_See code: [lib/commands/connector/update.js](https://github.com/swimlane/turbine-sdk/blob/v3.13.
|
|
386
|
+
_See code: [lib/commands/connector/update.js](https://github.com/swimlane/turbine-sdk/blob/v3.13.2-next.3dfd44a/lib/commands/connector/update.js)_
|
|
387
387
|
|
|
388
388
|
## `sw-tsdk-connector connector:validate`
|
|
389
389
|
|
|
@@ -406,7 +406,7 @@ DESCRIPTION
|
|
|
406
406
|
Use to validate an integration
|
|
407
407
|
```
|
|
408
408
|
|
|
409
|
-
_See code: [lib/commands/connector/validate.js](https://github.com/swimlane/turbine-sdk/blob/v3.13.
|
|
409
|
+
_See code: [lib/commands/connector/validate.js](https://github.com/swimlane/turbine-sdk/blob/v3.13.2-next.3dfd44a/lib/commands/connector/validate.js)_
|
|
410
410
|
|
|
411
411
|
## `sw-tsdk-connector migrator:convert`
|
|
412
412
|
|
|
@@ -432,7 +432,7 @@ DESCRIPTION
|
|
|
432
432
|
Convert scripts and forked plugins from Swimlane V10x to connectors.
|
|
433
433
|
```
|
|
434
434
|
|
|
435
|
-
_See code: [lib/commands/migrator/convert.js](https://github.com/swimlane/turbine-sdk/blob/v3.13.
|
|
435
|
+
_See code: [lib/commands/migrator/convert.js](https://github.com/swimlane/turbine-sdk/blob/v3.13.2-next.3dfd44a/lib/commands/migrator/convert.js)_
|
|
436
436
|
|
|
437
437
|
## `sw-tsdk-connector migrator:export`
|
|
438
438
|
|
|
@@ -453,5 +453,5 @@ DESCRIPTION
|
|
|
453
453
|
Use to export python scripts from a Swimlane instance
|
|
454
454
|
```
|
|
455
455
|
|
|
456
|
-
_See code: [lib/commands/migrator/export.js](https://github.com/swimlane/turbine-sdk/blob/v3.13.
|
|
456
|
+
_See code: [lib/commands/migrator/export.js](https://github.com/swimlane/turbine-sdk/blob/v3.13.2-next.3dfd44a/lib/commands/migrator/export.js)_
|
|
457
457
|
<!-- commandsstop -->
|
|
@@ -22,66 +22,190 @@ class Build extends core_2.Base {
|
|
|
22
22
|
let { 'signing-password': signingPassword, 'key-name': keyName, } = flags;
|
|
23
23
|
directory = (0, node_path_1.resolve)(directory || process.cwd());
|
|
24
24
|
if (save) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
25
|
+
try {
|
|
26
|
+
const answers = await (0, inquirer_1.prompt)([await this.buildKeyQuestion(keyName), {
|
|
27
|
+
type: 'password',
|
|
28
|
+
name: 'signingPassword',
|
|
29
|
+
message: 'Enter a signing password',
|
|
30
|
+
when: () => (!signingPassword || signingPassword.length === 0),
|
|
31
|
+
}]);
|
|
32
|
+
signingPassword = signingPassword || answers.signingPassword;
|
|
33
|
+
keyName = keyName || answers.keyName;
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
37
|
+
core_1.ux.error('Failed to prompt for signing credentials.', { exit: false });
|
|
38
|
+
if (errorMessage) {
|
|
39
|
+
core_1.ux.log('');
|
|
40
|
+
core_1.ux.log('Error details:');
|
|
41
|
+
core_1.ux.log(` ${errorMessage}`);
|
|
42
|
+
}
|
|
43
|
+
core_1.ux.log('');
|
|
44
|
+
core_1.ux.log('Troubleshooting steps:');
|
|
45
|
+
core_1.ux.log(' 1. Ensure you have a terminal that supports interactive prompts');
|
|
46
|
+
core_1.ux.log(' 2. Try providing --signing-password and --key-name as command flags');
|
|
47
|
+
core_1.ux.log(' 3. Verify keys are available: tsdk turbine connector keys list local');
|
|
48
|
+
throw error;
|
|
49
|
+
}
|
|
33
50
|
}
|
|
34
51
|
try {
|
|
35
52
|
await node_fs_1.promises.access(directory);
|
|
36
53
|
}
|
|
37
|
-
catch {
|
|
38
|
-
|
|
54
|
+
catch (error) {
|
|
55
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
56
|
+
core_1.ux.error(`Could not access directory: ${directory}`, { exit: false });
|
|
57
|
+
core_1.ux.log('');
|
|
58
|
+
core_1.ux.log('Error details:');
|
|
59
|
+
core_1.ux.log(` ${errorMessage}`);
|
|
60
|
+
core_1.ux.log('');
|
|
61
|
+
core_1.ux.log('Please verify:');
|
|
62
|
+
core_1.ux.log(` 1. The directory path is correct: ${directory}`);
|
|
63
|
+
core_1.ux.log(' 2. The directory exists');
|
|
64
|
+
core_1.ux.log(' 3. You have proper permissions to access the directory');
|
|
65
|
+
this.error('Directory access failed');
|
|
39
66
|
}
|
|
40
67
|
const docker = new docker_1.Docker();
|
|
41
68
|
core_1.ux.action.start('Checking for docker...');
|
|
42
|
-
|
|
43
|
-
|
|
69
|
+
try {
|
|
70
|
+
await docker.ping();
|
|
71
|
+
core_1.ux.action.stop();
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
core_1.ux.action.stop();
|
|
75
|
+
// docker.ping() already handles error display, but we should still throw
|
|
76
|
+
throw error;
|
|
77
|
+
}
|
|
44
78
|
const dockerFileDir = `${directory}/Dockerfile`;
|
|
45
79
|
if ((0, node_fs_1.existsSync)(dockerFileDir)) {
|
|
46
|
-
|
|
80
|
+
try {
|
|
81
|
+
await node_fs_1.promises.rm(dockerFileDir);
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
85
|
+
core_1.ux.warn(`Could not remove existing Dockerfile: ${errorMessage}`);
|
|
86
|
+
// Continue anyway, as this is not critical
|
|
87
|
+
}
|
|
47
88
|
}
|
|
48
89
|
const connector = new connector_1.BuildConnector();
|
|
49
|
-
|
|
90
|
+
let result;
|
|
91
|
+
try {
|
|
92
|
+
result = await connector.build({ directory, template, compileOverride, runnerOverride, runtimeOverride, nocache, platform, squash, registry });
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
96
|
+
const errorStack = error instanceof Error ? error.stack : undefined;
|
|
97
|
+
core_1.ux.error('Failed to build connector image.', { exit: false });
|
|
98
|
+
if (errorMessage) {
|
|
99
|
+
core_1.ux.log('');
|
|
100
|
+
core_1.ux.log('Error details:');
|
|
101
|
+
core_1.ux.log(` ${errorMessage}`);
|
|
102
|
+
}
|
|
103
|
+
if (errorStack && core_1.ux.config.outputLevel === 'debug') {
|
|
104
|
+
core_1.ux.log('');
|
|
105
|
+
core_1.ux.log('Stack trace:');
|
|
106
|
+
core_1.ux.log(errorStack);
|
|
107
|
+
}
|
|
108
|
+
core_1.ux.log('');
|
|
109
|
+
core_1.ux.log('Troubleshooting steps:');
|
|
110
|
+
core_1.ux.log(' 1. Verify the connector directory structure is correct');
|
|
111
|
+
core_1.ux.log(' 2. Check that all required manifest files exist (connector.yaml, actions, assets)');
|
|
112
|
+
core_1.ux.log(' 3. Verify Docker has enough resources (memory, disk space)');
|
|
113
|
+
core_1.ux.log(' 4. Check Docker build logs: docker build --no-cache <image>');
|
|
114
|
+
core_1.ux.log(' 5. Ensure the template specified is valid');
|
|
115
|
+
throw error;
|
|
116
|
+
}
|
|
50
117
|
if (save) {
|
|
51
118
|
const { registry } = flags;
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
'
|
|
56
|
-
result.imageTag
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
119
|
+
try {
|
|
120
|
+
const outputPath = output ? (0, node_path_1.resolve)(output) : directory;
|
|
121
|
+
// Log that we're starting the signing process
|
|
122
|
+
core_1.ux.log('');
|
|
123
|
+
core_1.ux.log(`Starting signing process for image: ${result.imageTag}`);
|
|
124
|
+
core_1.ux.log(`Using key: ${keyName || 'not specified'}`);
|
|
125
|
+
core_1.ux.log(`Registry: ${registry}`);
|
|
126
|
+
core_1.ux.log(`Output directory: ${outputPath}`);
|
|
127
|
+
await sign_1.Sign.run([
|
|
128
|
+
'--directory',
|
|
129
|
+
directory,
|
|
130
|
+
'--image',
|
|
131
|
+
result.imageTag,
|
|
132
|
+
'--key-name',
|
|
133
|
+
keyName || '',
|
|
134
|
+
'--signing-password',
|
|
135
|
+
signingPassword || '',
|
|
136
|
+
'-o',
|
|
137
|
+
outputPath,
|
|
138
|
+
'--save',
|
|
139
|
+
'--registry',
|
|
140
|
+
registry,
|
|
141
|
+
]);
|
|
142
|
+
core_1.ux.log('');
|
|
143
|
+
core_1.ux.log('Signing and saving completed successfully.');
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
147
|
+
const errorStack = error instanceof Error ? error.stack : undefined;
|
|
148
|
+
core_1.ux.log('');
|
|
149
|
+
core_1.ux.error('Failed to sign and save connector image.', { exit: false });
|
|
150
|
+
if (errorMessage) {
|
|
151
|
+
core_1.ux.log('');
|
|
152
|
+
core_1.ux.log('Error details:');
|
|
153
|
+
core_1.ux.log(` ${errorMessage}`);
|
|
154
|
+
}
|
|
155
|
+
if (errorStack) {
|
|
156
|
+
core_1.ux.log('');
|
|
157
|
+
core_1.ux.log('Stack trace:');
|
|
158
|
+
core_1.ux.log(errorStack);
|
|
159
|
+
}
|
|
160
|
+
core_1.ux.log('');
|
|
161
|
+
core_1.ux.log('Troubleshooting steps:');
|
|
162
|
+
core_1.ux.log(' 1. Verify the signing key exists and is accessible');
|
|
163
|
+
core_1.ux.log(' 2. Check that the signing password is correct');
|
|
164
|
+
core_1.ux.log(' 3. Verify Docker registry access: docker push <registry>/<image>');
|
|
165
|
+
core_1.ux.log(' 4. Check Docker daemon logs for registry connection issues');
|
|
166
|
+
core_1.ux.log(' 5. Ensure you have write permissions to the output directory');
|
|
167
|
+
core_1.ux.log(' 6. Try running the sign command separately: tsdk connector sign --image <image> --key-name <key> --save');
|
|
168
|
+
throw error;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
core_1.ux.log('');
|
|
173
|
+
core_1.ux.log('Build completed successfully. Use --save flag to sign and save the image.');
|
|
67
174
|
}
|
|
68
175
|
}
|
|
69
176
|
async buildKeyQuestion(keyName) {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
177
|
+
try {
|
|
178
|
+
const storagePath = (0, node_path_1.join)(this.config.configDir, 'keys');
|
|
179
|
+
await (0, fs_extra_1.ensureDir)(storagePath);
|
|
180
|
+
const directories = await (0, promises_1.readdir)(storagePath, { withFileTypes: true });
|
|
181
|
+
const allKeys = directories
|
|
182
|
+
.filter(x => x.isDirectory() && (0, node_fs_1.readdirSync)((0, node_path_1.join)(storagePath, x.name)).some(y => y.endsWith('.key')))
|
|
183
|
+
.map(x => x.name)
|
|
184
|
+
.sort((a, b) => a < b ? -1 : 1);
|
|
185
|
+
inquirer_1.default.registerPrompt('autocomplete', inquirer_autocomplete_prompt_1.default);
|
|
186
|
+
return ({
|
|
187
|
+
type: 'autocomplete',
|
|
188
|
+
name: 'keyName',
|
|
189
|
+
message: 'Choose a key',
|
|
190
|
+
source: (_, input) => allKeys.filter(r => !input || r.includes(input)).map(r => r),
|
|
191
|
+
when: () => (!keyName || keyName.length === 0),
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
catch (error) {
|
|
195
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
196
|
+
core_1.ux.error('Failed to load signing keys.', { exit: false });
|
|
197
|
+
if (errorMessage) {
|
|
198
|
+
core_1.ux.log('');
|
|
199
|
+
core_1.ux.log('Error details:');
|
|
200
|
+
core_1.ux.log(` ${errorMessage}`);
|
|
201
|
+
}
|
|
202
|
+
core_1.ux.log('');
|
|
203
|
+
core_1.ux.log('Troubleshooting steps:');
|
|
204
|
+
core_1.ux.log(' 1. Verify keys directory is accessible');
|
|
205
|
+
core_1.ux.log(' 2. Generate a key if none exist: tsdk turbine connector keys generate');
|
|
206
|
+
core_1.ux.log(' 3. Provide --key-name flag to skip key selection');
|
|
207
|
+
throw error;
|
|
208
|
+
}
|
|
85
209
|
}
|
|
86
210
|
}
|
|
87
211
|
exports.Build = Build;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/commands/connector/build.ts"],"names":[],"mappings":";;;;AAAA,sCAAqC;AACrC,wCAAkC;AAClC,yCAAuC;AACvC,qCAAyD;AACzD,kDAAiD;AACjD,iCAA2B;AAC3B,4CAAsC;AACtC,6DAAyC;AACzC,uCAAkC;AAClC,+CAAwC;AACxC,wGAA6D;AAE7D,qCAAqC;AACrC,MAAa,KAAM,SAAQ,WAAI;IAiE7B,KAAK,CAAC,GAAG;QACP,MAAM,EAAC,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAEvC,IAAI,EAAC,SAAS,EAAC,GAAG,KAAK,CAAA;QACvB,MAAM,EACJ,IAAI,EACJ,QAAQ,EACR,kBAAkB,EAAE,eAAe,EACnC,iBAAiB,EAAE,cAAc,EACjC,kBAAkB,EAAE,eAAe,EACnC,eAAe,EAAE,OAAO,EACxB,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,MAAM,GAEP,GAAG,KAAK,CAAA;QAET,IAAI,EACF,kBAAkB,EAAE,eAAe,EACnC,UAAU,EAAE,OAAO,GACpB,GAAG,KAAK,CAAA;QAET,SAAS,GAAG,IAAA,mBAAO,EAAC,SAAS,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;QAE/C,IAAI,IAAI,EAAE;YACR,MAAM,OAAO,GAAG,MAAM,IAAA,iBAAM,EAAC,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/commands/connector/build.ts"],"names":[],"mappings":";;;;AAAA,sCAAqC;AACrC,wCAAkC;AAClC,yCAAuC;AACvC,qCAAyD;AACzD,kDAAiD;AACjD,iCAA2B;AAC3B,4CAAsC;AACtC,6DAAyC;AACzC,uCAAkC;AAClC,+CAAwC;AACxC,wGAA6D;AAE7D,qCAAqC;AACrC,MAAa,KAAM,SAAQ,WAAI;IAiE7B,KAAK,CAAC,GAAG;QACP,MAAM,EAAC,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAEvC,IAAI,EAAC,SAAS,EAAC,GAAG,KAAK,CAAA;QACvB,MAAM,EACJ,IAAI,EACJ,QAAQ,EACR,kBAAkB,EAAE,eAAe,EACnC,iBAAiB,EAAE,cAAc,EACjC,kBAAkB,EAAE,eAAe,EACnC,eAAe,EAAE,OAAO,EACxB,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,MAAM,GAEP,GAAG,KAAK,CAAA;QAET,IAAI,EACF,kBAAkB,EAAE,eAAe,EACnC,UAAU,EAAE,OAAO,GACpB,GAAG,KAAK,CAAA;QAET,SAAS,GAAG,IAAA,mBAAO,EAAC,SAAS,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;QAE/C,IAAI,IAAI,EAAE;YACR,IAAI;gBACF,MAAM,OAAO,GAAG,MAAM,IAAA,iBAAM,EAAC,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE;wBAClE,IAAI,EAAE,UAAU;wBAChB,IAAI,EAAE,iBAAiB;wBACvB,OAAO,EAAE,0BAA0B;wBACnC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,eAAe,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,CAAC;qBAC/D,CAAC,CAAC,CAAA;gBAEH,eAAe,GAAG,eAAe,IAAI,OAAO,CAAC,eAAe,CAAA;gBAC5D,OAAO,GAAG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAA;aACrC;YAAC,OAAO,KAAc,EAAE;gBACvB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;gBAC3E,SAAE,CAAC,KAAK,CAAC,2CAA2C,EAAE,EAAC,IAAI,EAAE,KAAK,EAAC,CAAC,CAAA;gBAEpE,IAAI,YAAY,EAAE;oBAChB,SAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;oBACV,SAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;oBACxB,SAAE,CAAC,GAAG,CAAC,KAAK,YAAY,EAAE,CAAC,CAAA;iBAC5B;gBAED,SAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBACV,SAAE,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAA;gBAChC,SAAE,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAA;gBAC3E,SAAE,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAA;gBAC/E,SAAE,CAAC,GAAG,CAAC,wEAAwE,CAAC,CAAA;gBAEhF,MAAM,KAAK,CAAA;aACZ;SACF;QAED,IAAI;YACF,MAAM,kBAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;SACjC;QAAC,OAAO,KAAc,EAAE;YACvB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC3E,SAAE,CAAC,KAAK,CAAC,+BAA+B,SAAS,EAAE,EAAE,EAAC,IAAI,EAAE,KAAK,EAAC,CAAC,CAAA;YACnE,SAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACV,SAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;YACxB,SAAE,CAAC,GAAG,CAAC,KAAK,YAAY,EAAE,CAAC,CAAA;YAC3B,SAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACV,SAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;YACxB,SAAE,CAAC,GAAG,CAAC,uCAAuC,SAAS,EAAE,CAAC,CAAA;YAC1D,SAAE,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAA;YACnC,SAAE,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAA;YAClE,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAA;SACtC;QAED,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAA;QAC3B,SAAE,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAA;QACzC,IAAI;YACF,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;YACnB,SAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;SACjB;QAAC,OAAO,KAAc,EAAE;YACvB,SAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;YAChB,yEAAyE;YACzE,MAAM,KAAK,CAAA;SACZ;QAED,MAAM,aAAa,GAAG,GAAG,SAAS,aAAa,CAAA;QAC/C,IAAI,IAAA,oBAAU,EAAC,aAAa,CAAC,EAAE;YAC7B,IAAI;gBACF,MAAM,kBAAQ,CAAC,EAAE,CAAC,aAAa,CAAC,CAAA;aACjC;YAAC,OAAO,KAAc,EAAE;gBACvB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;gBAC3E,SAAE,CAAC,IAAI,CAAC,yCAAyC,YAAY,EAAE,CAAC,CAAA;gBAChE,2CAA2C;aAC5C;SACF;QAED,MAAM,SAAS,GAAG,IAAI,0BAAc,EAAE,CAAA;QACtC,IAAI,MAAM,CAAA;QACV,IAAI;YACF,MAAM,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,EAAC,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAC,CAAC,CAAA;SAC7I;QAAC,OAAO,KAAc,EAAE;YACvB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC3E,MAAM,UAAU,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;YAEnE,SAAE,CAAC,KAAK,CAAC,kCAAkC,EAAE,EAAC,IAAI,EAAE,KAAK,EAAC,CAAC,CAAA;YAE3D,IAAI,YAAY,EAAE;gBAChB,SAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBACV,SAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;gBACxB,SAAE,CAAC,GAAG,CAAC,KAAK,YAAY,EAAE,CAAC,CAAA;aAC5B;YAED,IAAI,UAAU,IAAI,SAAE,CAAC,MAAM,CAAC,WAAW,KAAK,OAAO,EAAE;gBACnD,SAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBACV,SAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;gBACtB,SAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;aACnB;YAED,SAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACV,SAAE,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAA;YAChC,SAAE,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAA;YAClE,SAAE,CAAC,GAAG,CAAC,qFAAqF,CAAC,CAAA;YAC7F,SAAE,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;YACtE,SAAE,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAA;YACvE,SAAE,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAA;YAErD,MAAM,KAAK,CAAA;SACZ;QAED,IAAI,IAAI,EAAE;YACR,MAAM,EAAC,QAAQ,EAAC,GAAG,KAAK,CAAA;YACxB,IAAI;gBACF,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,IAAA,mBAAO,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;gBAEvD,8CAA8C;gBAC9C,SAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBACV,SAAE,CAAC,GAAG,CAAC,uCAAuC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;gBAChE,SAAE,CAAC,GAAG,CAAC,cAAc,OAAO,IAAI,eAAe,EAAE,CAAC,CAAA;gBAClD,SAAE,CAAC,GAAG,CAAC,aAAa,QAAQ,EAAE,CAAC,CAAA;gBAC/B,SAAE,CAAC,GAAG,CAAC,qBAAqB,UAAU,EAAE,CAAC,CAAA;gBAEzC,MAAM,WAAI,CAAC,GAAG,CAAC;oBACb,aAAa;oBACb,SAAS;oBACT,SAAS;oBACT,MAAM,CAAC,QAAQ;oBACf,YAAY;oBACZ,OAAO,IAAI,EAAE;oBACb,oBAAoB;oBACpB,eAAe,IAAI,EAAE;oBACrB,IAAI;oBACJ,UAAU;oBACV,QAAQ;oBACR,YAAY;oBACZ,QAAQ;iBACT,CAAC,CAAA;gBAEF,SAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBACV,SAAE,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAA;aACrD;YAAC,OAAO,KAAc,EAAE;gBACvB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;gBAC3E,MAAM,UAAU,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;gBAEnE,SAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBACV,SAAE,CAAC,KAAK,CAAC,0CAA0C,EAAE,EAAC,IAAI,EAAE,KAAK,EAAC,CAAC,CAAA;gBAEnE,IAAI,YAAY,EAAE;oBAChB,SAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;oBACV,SAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;oBACxB,SAAE,CAAC,GAAG,CAAC,KAAK,YAAY,EAAE,CAAC,CAAA;iBAC5B;gBAED,IAAI,UAAU,EAAE;oBACd,SAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;oBACV,SAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;oBACtB,SAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;iBACnB;gBAED,SAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBACV,SAAE,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAA;gBAChC,SAAE,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAA;gBAC9D,SAAE,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAA;gBACzD,SAAE,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAA;gBAC5E,SAAE,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;gBACtE,SAAE,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAA;gBACxE,SAAE,CAAC,GAAG,CAAC,2GAA2G,CAAC,CAAA;gBAEnH,MAAM,KAAK,CAAA;aACZ;SACF;aAAM;YACL,SAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACV,SAAE,CAAC,GAAG,CAAC,2EAA2E,CAAC,CAAA;SACpF;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,OAAe;QACpC,IAAI;YACF,MAAM,WAAW,GAAG,IAAA,gBAAI,EAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;YACvD,MAAM,IAAA,oBAAS,EAAC,WAAW,CAAC,CAAA;YAC5B,MAAM,WAAW,GAAG,MAAM,IAAA,kBAAO,EAAC,WAAW,EAAE,EAAC,aAAa,EAAE,IAAI,EAAC,CAAC,CAAA;YAErE,MAAM,OAAO,GAAG,WAAW;iBAC1B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,IAAA,qBAAW,EAAC,IAAA,gBAAI,EAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;iBACpG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;iBAChB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAE/B,kBAAQ,CAAC,cAAc,CAAC,cAAc,EAAE,sCAAkB,CAAC,CAAA;YAE3D,OAAO,CACL;gBACE,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,cAAc;gBACvB,MAAM,EAAE,CAAC,CAAU,EAAE,KAAa,EAAE,EAAE,CACpC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC9D,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;aAC/C,CAAC,CAAA;SACL;QAAC,OAAO,KAAc,EAAE;YACvB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC3E,SAAE,CAAC,KAAK,CAAC,8BAA8B,EAAE,EAAC,IAAI,EAAE,KAAK,EAAC,CAAC,CAAA;YAEvD,IAAI,YAAY,EAAE;gBAChB,SAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBACV,SAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;gBACxB,SAAE,CAAC,GAAG,CAAC,KAAK,YAAY,EAAE,CAAC,CAAA;aAC5B;YAED,SAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACV,SAAE,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAA;YAChC,SAAE,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAA;YAClD,SAAE,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAA;YACjF,SAAE,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAA;YAE5D,MAAM,KAAK,CAAA;SACZ;IACH,CAAC;;AA1SH,sBA2SC;AA1SQ,iBAAW,GAAG,+CAA+C,CAAA;AAE7D,WAAK,GAAG;IACb,GAAG,WAAI,CAAC,KAAK;IACb,QAAQ,EAAE,YAAK,CAAC,MAAM,CAAC;QACrB,WAAW,EAAE,oBAAoB;QACjC,OAAO,EAAE,CAAC,oBAAoB,EAAE,SAAS,EAAE,SAAS,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,sBAAsB,CAAC;QACrM,QAAQ,EAAE,KAAK;KAChB,CAAC;IACF,kBAAkB,EAAE,YAAK,CAAC,MAAM,CAAC;QAC/B,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,oBAAoB;KAC9B,CAAC;IACF,iBAAiB,EAAE,YAAK,CAAC,MAAM,CAAC;QAC9B,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,mBAAmB;KAC7B,CAAC;IACF,kBAAkB,EAAE,YAAK,CAAC,MAAM,CAAC;QAC/B,MAAM,EAAE,IAAI;KACb,CAAC;IACF,SAAS,EAAE,YAAK,CAAC,MAAM,CAAC;QACtB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,mCAAmC;QAChD,OAAO,EAAE,IAAI;KACd,CAAC;IACF,IAAI,EAAE,YAAK,CAAC,OAAO,CAAC;QAClB,WAAW,EAAE,wDAAwD;KACtE,CAAC;IACF,MAAM,EAAE,YAAK,CAAC,OAAO,CAAC;QACpB,WAAW,EAAE,6BAA6B;QAC1C,MAAM,EAAE,IAAI;KACb,CAAC;IACF,eAAe,EAAE,YAAK,CAAC,OAAO,CAAC;QAC7B,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,mCAAmC;KACjD,CAAC;IACF,QAAQ,EAAE,YAAK,CAAC,MAAM,CAAC;QACrB,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,aAAa;KACvB,CAAC;IACF,kBAAkB,EAAE,YAAK,CAAC,MAAM,CAAC;QAC/B,WAAW,EAAE,mEAAmE;QAChF,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,0BAA0B;KAChC,CAAC;IACF,UAAU,EAAE,YAAK,CAAC,MAAM,CAAC;QACvB,WAAW,EAAE,sDAAsD;KACpE,CAAC;IACF,aAAa,EAAE,YAAK,CAAC,OAAO,CAAC;QAC3B,MAAM,EAAE,IAAI;KACb,CAAC;IACF,QAAQ,EAAE,YAAK,CAAC,MAAM,CAAC;QACrB,WAAW,EAAE,6BAA6B;QAC1C,OAAO,EAAE,gBAAgB;KAC1B,CAAC;IACF,MAAM,EAAE,YAAK,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,0CAA0C;KACxD,CAAC;IACF,IAAI,EAAE,YAAK,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,GAAG;KACV,CAAC;CACH,CAAA"}
|
|
@@ -8,6 +8,7 @@ const node_fs_1 = require("node:fs");
|
|
|
8
8
|
const cosign_1 = require("@swimlane/cosign");
|
|
9
9
|
const docker_1 = require("@sw-tsdk/docker");
|
|
10
10
|
const docker_reference_1 = require("@swimlane/docker-reference");
|
|
11
|
+
const fs_extra_1 = require("fs-extra");
|
|
11
12
|
// noinspection JSUnusedGlobalSymbols
|
|
12
13
|
class Sign extends core_2.Base {
|
|
13
14
|
async run() {
|
|
@@ -19,23 +20,118 @@ class Sign extends core_2.Base {
|
|
|
19
20
|
try {
|
|
20
21
|
await node_fs_1.promises.access(privateKeyPath);
|
|
21
22
|
}
|
|
22
|
-
catch {
|
|
23
|
-
|
|
23
|
+
catch (error) {
|
|
24
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
25
|
+
core_1.ux.error(`Could not find key: ${privateKeyPath}`, { exit: false });
|
|
26
|
+
core_1.ux.log('');
|
|
27
|
+
core_1.ux.log('Error details:');
|
|
28
|
+
core_1.ux.log(` ${errorMessage}`);
|
|
29
|
+
core_1.ux.log('');
|
|
30
|
+
core_1.ux.log('Please verify:');
|
|
31
|
+
core_1.ux.log(` 1. The key name is correct: ${keyName}`);
|
|
32
|
+
core_1.ux.log(` 2. The key file exists at: ${privateKeyPath}`);
|
|
33
|
+
core_1.ux.log(' 3. You have proper permissions to access the key file');
|
|
34
|
+
core_1.ux.log(' 4. The key was generated using: tsdk turbine connector keys generate');
|
|
35
|
+
// Throw error instead of calling this.error() to allow proper error handling
|
|
36
|
+
throw new Error(`Key file access failed: ${errorMessage}`);
|
|
24
37
|
}
|
|
25
38
|
const docker = new docker_1.Docker();
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
39
|
+
let taggedImage;
|
|
40
|
+
try {
|
|
41
|
+
core_1.ux.action.start('Pushing image to registry...');
|
|
42
|
+
taggedImage = await docker.pushImage({
|
|
43
|
+
imageReference: imageName,
|
|
44
|
+
domain: registry,
|
|
45
|
+
});
|
|
46
|
+
core_1.ux.action.stop();
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
core_1.ux.action.stop();
|
|
50
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
51
|
+
const errorStack = error instanceof Error ? error.stack : undefined;
|
|
52
|
+
core_1.ux.error(`Failed to push image to registry: ${registry}`, { exit: false });
|
|
53
|
+
if (errorMessage) {
|
|
54
|
+
core_1.ux.log('');
|
|
55
|
+
core_1.ux.log('Error details:');
|
|
56
|
+
core_1.ux.log(` ${errorMessage}`);
|
|
57
|
+
}
|
|
58
|
+
if (errorStack && core_1.ux.config.outputLevel === 'debug') {
|
|
59
|
+
core_1.ux.log('');
|
|
60
|
+
core_1.ux.log('Stack trace:');
|
|
61
|
+
core_1.ux.log(errorStack);
|
|
62
|
+
}
|
|
63
|
+
core_1.ux.log('');
|
|
64
|
+
core_1.ux.log('Troubleshooting steps:');
|
|
65
|
+
core_1.ux.log(` 1. Verify registry is accessible: docker push ${registry}/${imageName}`);
|
|
66
|
+
core_1.ux.log(' 2. Check registry authentication credentials');
|
|
67
|
+
core_1.ux.log(' 3. Verify network connectivity to the registry');
|
|
68
|
+
core_1.ux.log(' 4. Check Docker daemon logs for connection issues');
|
|
69
|
+
throw error;
|
|
70
|
+
}
|
|
30
71
|
core_1.ux.action.start('Signing Image...');
|
|
31
|
-
|
|
32
|
-
|
|
72
|
+
try {
|
|
73
|
+
await (0, cosign_1.signImage)(signingPassword, privateKeyPath, taggedImage, !skipUpload);
|
|
74
|
+
core_1.ux.action.stop();
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
core_1.ux.action.stop();
|
|
78
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
79
|
+
const errorStack = error instanceof Error ? error.stack : undefined;
|
|
80
|
+
core_1.ux.error('Failed to sign image.', { exit: false });
|
|
81
|
+
if (errorMessage) {
|
|
82
|
+
core_1.ux.log('');
|
|
83
|
+
core_1.ux.log('Error details:');
|
|
84
|
+
core_1.ux.log(` ${errorMessage}`);
|
|
85
|
+
}
|
|
86
|
+
if (errorStack && core_1.ux.config.outputLevel === 'debug') {
|
|
87
|
+
core_1.ux.log('');
|
|
88
|
+
core_1.ux.log('Stack trace:');
|
|
89
|
+
core_1.ux.log(errorStack);
|
|
90
|
+
}
|
|
91
|
+
core_1.ux.log('');
|
|
92
|
+
core_1.ux.log('Troubleshooting steps:');
|
|
93
|
+
core_1.ux.log(` 1. Verify the signing key exists: ${privateKeyPath}`);
|
|
94
|
+
core_1.ux.log(' 2. Check that the signing password is correct');
|
|
95
|
+
core_1.ux.log(' 3. Verify the key file is readable and not corrupted');
|
|
96
|
+
core_1.ux.log(' 4. Ensure cosign is properly installed and accessible');
|
|
97
|
+
throw error;
|
|
98
|
+
}
|
|
33
99
|
if (save) {
|
|
34
100
|
core_1.ux.action.start('Saving Image...');
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
101
|
+
try {
|
|
102
|
+
const { repository, tag } = (0, docker_reference_1.parseQualifiedName)(taggedImage);
|
|
103
|
+
const outputDir = output ? (0, node_path_1.resolve)(output) : (0, node_path_1.resolve)(directory);
|
|
104
|
+
const fileName = (0, node_path_1.join)(outputDir, `${(repository ?? '').replace('/', '-')}-${tag}.tar.gz`);
|
|
105
|
+
// Ensure output directory exists
|
|
106
|
+
await (0, fs_extra_1.ensureDir)((0, node_path_1.dirname)(fileName));
|
|
107
|
+
await (0, cosign_1.save)(taggedImage, (0, node_fs_1.createWriteStream)(fileName));
|
|
108
|
+
core_1.ux.action.stop();
|
|
109
|
+
core_1.ux.log('');
|
|
110
|
+
core_1.ux.log(`Image saved successfully to: ${fileName}`);
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
core_1.ux.action.stop();
|
|
114
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
115
|
+
const errorStack = error instanceof Error ? error.stack : undefined;
|
|
116
|
+
core_1.ux.error('Failed to save image.', { exit: false });
|
|
117
|
+
if (errorMessage) {
|
|
118
|
+
core_1.ux.log('');
|
|
119
|
+
core_1.ux.log('Error details:');
|
|
120
|
+
core_1.ux.log(` ${errorMessage}`);
|
|
121
|
+
}
|
|
122
|
+
if (errorStack && core_1.ux.config.outputLevel === 'debug') {
|
|
123
|
+
core_1.ux.log('');
|
|
124
|
+
core_1.ux.log('Stack trace:');
|
|
125
|
+
core_1.ux.log(errorStack);
|
|
126
|
+
}
|
|
127
|
+
core_1.ux.log('');
|
|
128
|
+
core_1.ux.log('Troubleshooting steps:');
|
|
129
|
+
core_1.ux.log(` 1. Verify write permissions to output directory: ${output || directory}`);
|
|
130
|
+
core_1.ux.log(' 2. Check available disk space');
|
|
131
|
+
core_1.ux.log(' 3. Ensure the image exists locally: docker images');
|
|
132
|
+
core_1.ux.log(' 4. Try saving to a different location with --output flag');
|
|
133
|
+
throw error;
|
|
134
|
+
}
|
|
39
135
|
}
|
|
40
136
|
}
|
|
41
137
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sign.js","sourceRoot":"","sources":["../../../src/commands/connector/sign.ts"],"names":[],"mappings":";;;AAAA,sCAAqC;AACrC,wCAAkC;AAClC,
|
|
1
|
+
{"version":3,"file":"sign.js","sourceRoot":"","sources":["../../../src/commands/connector/sign.ts"],"names":[],"mappings":";;;AAAA,sCAAqC;AACrC,wCAAkC;AAClC,yCAAgD;AAChD,qCAAmD;AACnD,6CAA6D;AAC7D,4CAAsC;AACtC,iEAA6D;AAC7D,uCAAkC;AAClC,qCAAqC;AACrC,MAAa,IAAK,SAAQ,WAAI;IAgC5B,KAAK,CAAC,GAAG;QACP,MAAM,EAAC,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAEtC,MAAM,EAAC,SAAS,EAAC,GAAG,KAAK,CAAA;QACzB,MAAM,EACJ,IAAI,EACJ,aAAa,EAAE,UAAU,EACzB,KAAK,EAAE,SAAS,EAChB,kBAAkB,EAAE,eAAe,EACnC,UAAU,EAAE,OAAO,EACnB,QAAQ,EACR,MAAM,GACP,GAAG,KAAK,CAAA;QAET,MAAM,WAAW,GAAG,IAAA,gBAAI,EAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QAChE,MAAM,cAAc,GAAG,IAAA,gBAAI,EAAC,WAAW,EAAE,YAAY,CAAC,CAAA;QAEtD,IAAI;YACF,MAAM,kBAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;SACtC;QAAC,OAAO,KAAc,EAAE;YACvB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC3E,SAAE,CAAC,KAAK,CAAC,uBAAuB,cAAc,EAAE,EAAE,EAAC,IAAI,EAAE,KAAK,EAAC,CAAC,CAAA;YAChE,SAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACV,SAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;YACxB,SAAE,CAAC,GAAG,CAAC,KAAK,YAAY,EAAE,CAAC,CAAA;YAC3B,SAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACV,SAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;YACxB,SAAE,CAAC,GAAG,CAAC,iCAAiC,OAAO,EAAE,CAAC,CAAA;YAClD,SAAE,CAAC,GAAG,CAAC,gCAAgC,cAAc,EAAE,CAAC,CAAA;YACxD,SAAE,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAA;YACjE,SAAE,CAAC,GAAG,CAAC,wEAAwE,CAAC,CAAA;YAChF,6EAA6E;YAC7E,MAAM,IAAI,KAAK,CAAC,2BAA2B,YAAY,EAAE,CAAC,CAAA;SAC3D;QAED,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAA;QAE3B,IAAI,WAAmB,CAAA;QACvB,IAAI;YACF,SAAE,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAA;YAC/C,WAAW,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC;gBACnC,cAAc,EAAE,SAAS;gBACzB,MAAM,EAAE,QAAQ;aACjB,CAAC,CAAA;YACF,SAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;SACjB;QAAC,OAAO,KAAc,EAAE;YACvB,SAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;YAChB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC3E,MAAM,UAAU,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;YAEnE,SAAE,CAAC,KAAK,CAAC,qCAAqC,QAAQ,EAAE,EAAE,EAAC,IAAI,EAAE,KAAK,EAAC,CAAC,CAAA;YAExE,IAAI,YAAY,EAAE;gBAChB,SAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBACV,SAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;gBACxB,SAAE,CAAC,GAAG,CAAC,KAAK,YAAY,EAAE,CAAC,CAAA;aAC5B;YAED,IAAI,UAAU,IAAI,SAAE,CAAC,MAAM,CAAC,WAAW,KAAK,OAAO,EAAE;gBACnD,SAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBACV,SAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;gBACtB,SAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;aACnB;YAED,SAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACV,SAAE,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAA;YAChC,SAAE,CAAC,GAAG,CAAC,mDAAmD,QAAQ,IAAI,SAAS,EAAE,CAAC,CAAA;YAClF,SAAE,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAA;YACxD,SAAE,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAA;YAC1D,SAAE,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAA;YAE7D,MAAM,KAAK,CAAA;SACZ;QAED,SAAE,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;QAEnC,IAAI;YACF,MAAM,IAAA,kBAAS,EAAC,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,UAAU,CAAC,CAAA;YAC1E,SAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;SACjB;QAAC,OAAO,KAAc,EAAE;YACvB,SAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;YAChB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC3E,MAAM,UAAU,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;YAEnE,SAAE,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAC,IAAI,EAAE,KAAK,EAAC,CAAC,CAAA;YAEhD,IAAI,YAAY,EAAE;gBAChB,SAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBACV,SAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;gBACxB,SAAE,CAAC,GAAG,CAAC,KAAK,YAAY,EAAE,CAAC,CAAA;aAC5B;YAED,IAAI,UAAU,IAAI,SAAE,CAAC,MAAM,CAAC,WAAW,KAAK,OAAO,EAAE;gBACnD,SAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBACV,SAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;gBACtB,SAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;aACnB;YAED,SAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACV,SAAE,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAA;YAChC,SAAE,CAAC,GAAG,CAAC,uCAAuC,cAAc,EAAE,CAAC,CAAA;YAC/D,SAAE,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAA;YACzD,SAAE,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAA;YAChE,SAAE,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAA;YAEjE,MAAM,KAAK,CAAA;SACZ;QAED,IAAI,IAAI,EAAE;YACR,SAAE,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;YAElC,IAAI;gBACF,MAAM,EAAC,UAAU,EAAE,GAAG,EAAC,GAAG,IAAA,qCAAkB,EAAC,WAAW,CAAC,CAAA;gBACzD,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,IAAA,mBAAO,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAA,mBAAO,EAAC,SAAS,CAAC,CAAA;gBAC/D,MAAM,QAAQ,GAAG,IAAA,gBAAI,EAAC,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC,CAAA;gBAEzF,iCAAiC;gBACjC,MAAM,IAAA,oBAAS,EAAC,IAAA,mBAAO,EAAC,QAAQ,CAAC,CAAC,CAAA;gBAElC,MAAM,IAAA,aAAS,EAAC,WAAW,EAAE,IAAA,2BAAiB,EAAC,QAAQ,CAAC,CAAC,CAAA;gBACzD,SAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;gBAEhB,SAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBACV,SAAE,CAAC,GAAG,CAAC,gCAAgC,QAAQ,EAAE,CAAC,CAAA;aACnD;YAAC,OAAO,KAAc,EAAE;gBACvB,SAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;gBAChB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;gBAC3E,MAAM,UAAU,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;gBAEnE,SAAE,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAC,IAAI,EAAE,KAAK,EAAC,CAAC,CAAA;gBAEhD,IAAI,YAAY,EAAE;oBAChB,SAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;oBACV,SAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;oBACxB,SAAE,CAAC,GAAG,CAAC,KAAK,YAAY,EAAE,CAAC,CAAA;iBAC5B;gBAED,IAAI,UAAU,IAAI,SAAE,CAAC,MAAM,CAAC,WAAW,KAAK,OAAO,EAAE;oBACnD,SAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;oBACV,SAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;oBACtB,SAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;iBACnB;gBAED,SAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBACV,SAAE,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAA;gBAChC,SAAE,CAAC,GAAG,CAAC,sDAAsD,MAAM,IAAI,SAAS,EAAE,CAAC,CAAA;gBACnF,SAAE,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAA;gBACzC,SAAE,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAA;gBAC7D,SAAE,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAA;gBAEpE,MAAM,KAAK,CAAA;aACZ;SACF;IACH,CAAC;;AAzLH,oBA0LC;AAzLQ,gBAAW,GAAG,+CAA+C,CAAA;AAE7D,UAAK,GAAG;IACb,GAAG,WAAI,CAAC,KAAK;IACb,SAAS,EAAE,YAAK,CAAC,MAAM,CAAC;QACtB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,mCAAmC;QAChD,OAAO,EAAE,IAAI;KACd,CAAC;IACF,KAAK,EAAE,YAAK,CAAC,MAAM,CAAC;QAClB,WAAW,EAAE,oBAAoB;QACjC,QAAQ,EAAE,IAAI;KACf,CAAC;IACF,kBAAkB,EAAE,YAAK,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,mCAAmC,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,0BAA0B,EAAC,CAAC;IAClI,IAAI,EAAE,YAAK,CAAC,OAAO,CAAC;QAClB,WAAW,EAAE,+CAA+C;KAC7D,CAAC;IACF,UAAU,EAAE,YAAK,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,2CAA2C,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;IACpG,aAAa,EAAE,YAAK,CAAC,OAAO,CAAC;QAC3B,MAAM,EAAE,IAAI;KACb,CAAC;IACF,QAAQ,EAAE,YAAK,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,6BAA6B,EAAE,OAAO,EAAE,gBAAgB,EAAC,CAAC;IAC/F,MAAM,EAAE,YAAK,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,0CAA0C;KACxD,CAAC;IACF,IAAI,EAAE,YAAK,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,GAAG;KACV,CAAC;CACH,CAAA"}
|