@pipeline-builder/pipeline-manager 3.4.70 → 3.4.72
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 +43 -2
- package/dist/agent/ai.d.ts +55 -0
- package/dist/agent/ai.d.ts.map +1 -0
- package/dist/agent/ai.js +130 -0
- package/dist/agent/bootstrap.d.ts +54 -0
- package/dist/agent/bootstrap.d.ts.map +1 -0
- package/dist/agent/bootstrap.js +76 -0
- package/dist/agent/executor.d.ts +27 -0
- package/dist/agent/executor.d.ts.map +1 -0
- package/dist/agent/executor.js +57 -0
- package/dist/agent/health.d.ts +22 -0
- package/dist/agent/health.d.ts.map +1 -0
- package/dist/agent/health.js +55 -0
- package/dist/agent/post-steps.d.ts +55 -0
- package/dist/agent/post-steps.d.ts.map +1 -0
- package/dist/agent/post-steps.js +73 -0
- package/dist/agent/prereqs.d.ts +25 -0
- package/dist/agent/prereqs.d.ts.map +1 -0
- package/dist/agent/prereqs.js +100 -0
- package/dist/agent/targets.d.ts +122 -0
- package/dist/agent/targets.d.ts.map +1 -0
- package/dist/agent/targets.js +180 -0
- package/dist/agent/troubleshoot.d.ts +30 -0
- package/dist/agent/troubleshoot.d.ts.map +1 -0
- package/dist/agent/troubleshoot.js +87 -0
- package/dist/boilerplate.js +8 -13
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +123 -118
- package/dist/commands/audit-stacks.js +22 -24
- package/dist/commands/audit-tokens.js +25 -27
- package/dist/commands/bootstrap.js +29 -37
- package/dist/commands/create-pipeline.js +55 -92
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +58 -62
- package/dist/commands/get-pipeline.js +24 -28
- package/dist/commands/get-plugin.js +24 -28
- package/dist/commands/list-pipelines.js +30 -31
- package/dist/commands/list-plugins.js +32 -33
- package/dist/commands/login.js +44 -49
- package/dist/commands/org-export.js +22 -60
- package/dist/commands/provision.d.ts +13 -0
- package/dist/commands/provision.d.ts.map +1 -0
- package/dist/commands/provision.js +489 -0
- package/dist/commands/register.js +29 -30
- package/dist/commands/setup-events.d.ts.map +1 -1
- package/dist/commands/setup-events.js +42 -77
- package/dist/commands/status.js +20 -25
- package/dist/commands/store-token.js +44 -82
- package/dist/commands/synth.d.ts.map +1 -1
- package/dist/commands/synth.js +36 -35
- package/dist/commands/upload-plugin.js +59 -96
- package/dist/commands/validate-templates.d.ts.map +1 -1
- package/dist/commands/validate-templates.js +23 -29
- package/dist/commands/version.js +42 -47
- package/dist/config/cli.constants.d.ts.map +1 -1
- package/dist/config/cli.constants.js +24 -31
- package/dist/types/config.js +2 -3
- package/dist/types/error.js +3 -7
- package/dist/types/index.d.ts +4 -4
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +5 -21
- package/dist/types/pipeline.js +2 -3
- package/dist/types/plugin.js +2 -3
- package/dist/utils/api-client.d.ts +1 -1
- package/dist/utils/api-client.d.ts.map +1 -1
- package/dist/utils/api-client.js +23 -28
- package/dist/utils/audit-log.js +16 -22
- package/dist/utils/auth-guard.js +2 -5
- package/dist/utils/aws-secrets.js +17 -23
- package/dist/utils/banner.js +16 -23
- package/dist/utils/cdk-utils.js +14 -24
- package/dist/utils/command-utils.d.ts +1 -1
- package/dist/utils/command-utils.d.ts.map +1 -1
- package/dist/utils/command-utils.js +32 -44
- package/dist/utils/config-loader.d.ts +1 -1
- package/dist/utils/config-loader.d.ts.map +1 -1
- package/dist/utils/config-loader.js +24 -58
- package/dist/utils/error-handler.d.ts +1 -1
- package/dist/utils/error-handler.d.ts.map +1 -1
- package/dist/utils/error-handler.js +16 -24
- package/dist/utils/list-command-utils.js +15 -20
- package/dist/utils/output-utils.d.ts +1 -1
- package/dist/utils/output-utils.d.ts.map +1 -1
- package/dist/utils/output-utils.js +35 -55
- package/dist/utils/plugin-resolver.d.ts +1 -1
- package/dist/utils/plugin-resolver.d.ts.map +1 -1
- package/dist/utils/plugin-resolver.js +6 -8
- package/dist/utils/rate-limiter.js +11 -19
- package/dist/utils/registry.js +16 -22
- package/package.json +26 -17
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// Copyright 2026 Pipeline Builder Contributors
|
|
3
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
3
|
+
import { Command } from 'commander';
|
|
4
|
+
import {} from '../types/index.js';
|
|
5
|
+
import { createAuthenticatedClient, printCommandHeader, printSslWarning } from '../utils/command-utils.js';
|
|
6
|
+
import { ERROR_CODES, handleError } from '../utils/error-handler.js';
|
|
7
|
+
import { extractSingleResponse, printError, printInfo, printKeyValue, printSection, printSuccess, printWarning } from '../utils/output-utils.js';
|
|
8
|
+
import { buildRegistryPayload, clearPendingIntent, readPendingIntents, writePendingIntent, } from '../utils/registry.js';
|
|
10
9
|
/**
|
|
11
10
|
* Registers the `register` command with the CLI program.
|
|
12
11
|
*
|
|
@@ -42,7 +41,7 @@ const registry_1 = require("../utils/registry");
|
|
|
42
41
|
* pipeline-manager register
|
|
43
42
|
* ```
|
|
44
43
|
*/
|
|
45
|
-
function register(program) {
|
|
44
|
+
export function register(program) {
|
|
46
45
|
program
|
|
47
46
|
.command('register')
|
|
48
47
|
.description('Register a deployed pipeline ARN with the platform (retry path for failed registrations)')
|
|
@@ -52,12 +51,12 @@ function register(program) {
|
|
|
52
51
|
.option('--verify-ssl', 'Enable SSL certificate verification')
|
|
53
52
|
.option('--no-verify-ssl', 'Disable SSL certificate verification')
|
|
54
53
|
.action(async (options) => {
|
|
55
|
-
const executionId =
|
|
56
|
-
|
|
54
|
+
const executionId = printCommandHeader('Register Pipeline');
|
|
55
|
+
printSslWarning(options.verifySsl);
|
|
57
56
|
let anyFailed = false;
|
|
58
57
|
let registeredCount = 0;
|
|
59
58
|
try {
|
|
60
|
-
const client =
|
|
59
|
+
const client = createAuthenticatedClient(options);
|
|
61
60
|
const pipelineUrl = client.getConfig().api.pipelineUrl;
|
|
62
61
|
// ── Drain pending intents first ──
|
|
63
62
|
// We drain before the explicit registration so a queued failure for
|
|
@@ -65,10 +64,10 @@ function register(program) {
|
|
|
65
64
|
// payload below.
|
|
66
65
|
const drained = new Set();
|
|
67
66
|
if (options.drain !== false) {
|
|
68
|
-
const intents = await
|
|
67
|
+
const intents = await readPendingIntents();
|
|
69
68
|
if (intents.length > 0) {
|
|
70
|
-
|
|
71
|
-
|
|
69
|
+
printSection('Draining pending intents');
|
|
70
|
+
printInfo('Found pending registrations from prior failed deploys', {
|
|
72
71
|
count: String(intents.length),
|
|
73
72
|
});
|
|
74
73
|
for (const intent of intents) {
|
|
@@ -77,7 +76,7 @@ function register(program) {
|
|
|
77
76
|
continue;
|
|
78
77
|
const ok = await postRegistration(client, pipelineUrl, intent, intent.pipelineId);
|
|
79
78
|
if (ok) {
|
|
80
|
-
await
|
|
79
|
+
await clearPendingIntent(intent.pipelineId);
|
|
81
80
|
drained.add(intent.pipelineId);
|
|
82
81
|
registeredCount++;
|
|
83
82
|
}
|
|
@@ -89,18 +88,18 @@ function register(program) {
|
|
|
89
88
|
}
|
|
90
89
|
// ── Explicit registration ──
|
|
91
90
|
if (options.id) {
|
|
92
|
-
|
|
91
|
+
printSection('Re-registering pipeline');
|
|
93
92
|
const pipelineRes = await client.get(`${pipelineUrl}/${options.id}`);
|
|
94
|
-
const pipeline =
|
|
93
|
+
const pipeline = extractSingleResponse(pipelineRes, 'pipeline', 'id');
|
|
95
94
|
if (!pipeline) {
|
|
96
|
-
|
|
95
|
+
printError('Pipeline not found in platform');
|
|
97
96
|
throw new Error(`No pipeline returned for id ${options.id}`);
|
|
98
97
|
}
|
|
99
98
|
if (!pipeline.orgId) {
|
|
100
|
-
|
|
99
|
+
printError('Pipeline has no orgId — cannot register');
|
|
101
100
|
throw new Error(`Pipeline ${pipeline.id} is missing orgId`);
|
|
102
101
|
}
|
|
103
|
-
const payload = await
|
|
102
|
+
const payload = await buildRegistryPayload({
|
|
104
103
|
id: pipeline.id,
|
|
105
104
|
orgId: pipeline.orgId,
|
|
106
105
|
pipelineName: pipeline.pipelineName,
|
|
@@ -109,22 +108,22 @@ function register(program) {
|
|
|
109
108
|
}, options.region);
|
|
110
109
|
// Clear any stale intent for this pipelineId before retrying so we
|
|
111
110
|
// don't leave a duplicate file behind on success.
|
|
112
|
-
await
|
|
111
|
+
await clearPendingIntent(payload.pipelineId);
|
|
113
112
|
const ok = await postRegistration(client, pipelineUrl, payload, payload.pipelineId);
|
|
114
113
|
if (ok) {
|
|
115
114
|
registeredCount++;
|
|
116
|
-
|
|
115
|
+
printSuccess('Pipeline registered for event reporting', {
|
|
117
116
|
pipelineId: payload.pipelineId,
|
|
118
117
|
});
|
|
119
118
|
}
|
|
120
119
|
else {
|
|
121
120
|
anyFailed = true;
|
|
122
|
-
const path = await
|
|
123
|
-
|
|
121
|
+
const path = await writePendingIntent(payload);
|
|
122
|
+
printWarning('Registration failed; intent saved for retry', { intent: path });
|
|
124
123
|
}
|
|
125
124
|
}
|
|
126
|
-
|
|
127
|
-
|
|
125
|
+
printSection('Summary');
|
|
126
|
+
printKeyValue({
|
|
128
127
|
'Registered': String(registeredCount),
|
|
129
128
|
'Drained from queue': String(drained.size),
|
|
130
129
|
'Status': anyFailed ? 'Some registrations still pending' : 'All clear',
|
|
@@ -133,7 +132,7 @@ function register(program) {
|
|
|
133
132
|
process.exit(anyFailed ? 1 : 0);
|
|
134
133
|
}
|
|
135
134
|
catch (error) {
|
|
136
|
-
|
|
135
|
+
handleError(error, ERROR_CODES.API_REQUEST, {
|
|
137
136
|
debug: program.opts().debug,
|
|
138
137
|
exit: false,
|
|
139
138
|
context: { command: 'register', executionId, pipelineId: options.id },
|
|
@@ -149,15 +148,15 @@ function register(program) {
|
|
|
149
148
|
async function postRegistration(client, pipelineUrl, payload, pipelineId) {
|
|
150
149
|
try {
|
|
151
150
|
await client.post(`${pipelineUrl}/registry`, payload);
|
|
152
|
-
|
|
151
|
+
printInfo('Registered', { pipelineId });
|
|
153
152
|
return true;
|
|
154
153
|
}
|
|
155
154
|
catch (err) {
|
|
156
|
-
|
|
155
|
+
printWarning('Registration failed', {
|
|
157
156
|
pipelineId,
|
|
158
157
|
error: err instanceof Error ? err.message : String(err),
|
|
159
158
|
});
|
|
160
159
|
return false;
|
|
161
160
|
}
|
|
162
161
|
}
|
|
163
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvcmVnaXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7O0FBa0R0Qyw0QkEyR0M7QUF6SkQsMERBQXdHO0FBQ3hHLDBEQUFrRTtBQUNsRSx3REFBOEk7QUFDOUksZ0RBTTJCO0FBRTNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0NHO0FBQ0gsU0FBZ0IsUUFBUSxDQUFDLE9BQWdCO0lBQ3ZDLE9BQU87U0FDSixPQUFPLENBQUMsVUFBVSxDQUFDO1NBQ25CLFdBQVcsQ0FBQywwRkFBMEYsQ0FBQztTQUN2RyxNQUFNLENBQUMsZUFBZSxFQUFFLG1EQUFtRCxDQUFDO1NBQzVFLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSx5Q0FBeUMsQ0FBQztTQUN0RSxNQUFNLENBQUMsWUFBWSxFQUFFLHlEQUF5RCxDQUFDO1NBQy9FLE1BQU0sQ0FBQyxjQUFjLEVBQUUscUNBQXFDLENBQUM7U0FDN0QsTUFBTSxDQUFDLGlCQUFpQixFQUFFLHNDQUFzQyxDQUFDO1NBQ2pFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDeEIsTUFBTSxXQUFXLEdBQUcsSUFBQSxrQ0FBa0IsRUFBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzVELElBQUEsK0JBQWUsRUFBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFbkMsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksZUFBZSxHQUFHLENBQUMsQ0FBQztRQUV4QixJQUFJLENBQUM7WUFDSCxNQUFNLE1BQU0sR0FBRyxJQUFBLHlDQUF5QixFQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2xELE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDO1lBRXZELG9DQUFvQztZQUNwQyxv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Q0FBQyxDQUFDO1lBQ0gsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQixDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsS0FBSyxVQUFVLGdCQUFnQixDQUM3QixNQUFvRCxFQUNwRCxXQUFtQixFQUNuQixPQUF3QixFQUN4QixVQUFrQjtJQUVsQixJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxXQUFXLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN0RCxJQUFBLHdCQUFTLEVBQUMsWUFBWSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUN4QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBQSwyQkFBWSxFQUFDLHFCQUFxQixFQUFFO1lBQ2xDLFVBQVU7WUFDVixLQUFLLEVBQUUsR0FBRyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztTQUN4RCxDQUFDLENBQUM7UUFDSCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHsgUGlwZWxpbmUsIFBpcGVsaW5lUmVzcG9uc2UgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50LCBwcmludENvbW1hbmRIZWFkZXIsIHByaW50U3NsV2FybmluZyB9IGZyb20gJy4uL3V0aWxzL2NvbW1hbmQtdXRpbHMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vdXRpbHMvZXJyb3ItaGFuZGxlcic7XG5pbXBvcnQgeyBleHRyYWN0U2luZ2xlUmVzcG9uc2UsIHByaW50RXJyb3IsIHByaW50SW5mbywgcHJpbnRLZXlWYWx1ZSwgcHJpbnRTZWN0aW9uLCBwcmludFN1Y2Nlc3MsIHByaW50V2FybmluZyB9IGZyb20gJy4uL3V0aWxzL291dHB1dC11dGlscyc7XG5pbXBvcnQge1xuICBidWlsZFJlZ2lzdHJ5UGF5bG9hZCxcbiAgY2xlYXJQZW5kaW5nSW50ZW50LFxuICByZWFkUGVuZGluZ0ludGVudHMsXG4gIHdyaXRlUGVuZGluZ0ludGVudCxcbiAgdHlwZSBSZWdpc3RyeVBheWxvYWQsXG59IGZyb20gJy4uL3V0aWxzL3JlZ2lzdHJ5JztcblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIGByZWdpc3RlcmAgY29tbWFuZCB3aXRoIHRoZSBDTEkgcHJvZ3JhbS5cbiAqXG4gKiBUd28gcHVycG9zZXMg4oCUIGJvdGggdGFyZ2V0ZWQgYXQgcmVjb3ZlcmluZyBmcm9tIGEgZGVwbG95IHdob3NlIHJlZ2lzdHJhdGlvblxuICogc3RlcCBkaWRuJ3QgbGFuZDpcbiAqXG4gKiAgIDEuIEV4cGxpY2l0IHJlLXJlZ2lzdGVyIChgLS1pZCA8cGlwZWxpbmVJZD5gKSDigJQgcmVjb21wdXRlcyB0aGUgQVJOIGZyb21cbiAqICAgICAgU1RTICsgcmVnaW9uIGFuZCBQT1NUcyBpdCB0byB0aGUgcGxhdGZvcm0uIFVzZWZ1bCB3aGVuIHRoZSBwbGF0Zm9ybVxuICogICAgICB3YXMgdW5yZWFjaGFibGUgZHVyaW5nIGBkZXBsb3lgLCB3aGVuIHRoZSByZWdpc3RyeSByb3cgd2FzIGRlbGV0ZWQgYnlcbiAqICAgICAgbWlzdGFrZSwgb3IgZm9yIGFueSBvdGhlciByZWFzb24gYSBkZXBsb3llZCBzdGFjayBoYXMgbm8gcmVnaXN0cnkgcm93LlxuICpcbiAqICAgMi4gRHJhaW4gcGVuZGluZyBpbnRlbnRzIChldmVyeSBpbnZvY2F0aW9uKSDigJQgYGRlcGxveWAgd3JpdGVzIGEgbG9jYWxcbiAqICAgICAgZmlsZSB1bmRlciBgfi8ucGlwZWxpbmUtbWFuYWdlci9wZW5kaW5nLXJlZ2lzdHJhdGlvbnMvYCB3aGVuZXZlciBpdHNcbiAqICAgICAgcmVnaXN0cmF0aW9uIFBPU1QgZmFpbHMuIEVhY2ggYHJlZ2lzdGVyYCBpbnZvY2F0aW9uIHRyaWVzIHRvIGRyYWluXG4gKiAgICAgIGV2ZXJ5IHN1Y2ggZmlsZS4gT24gc3VjY2VzcyB0aGUgZmlsZSBpcyBkZWxldGVkOyBvbiBmYWlsdXJlIGl0IHN0YXlzXG4gKiAgICAgIGFuZCBzdXJmYWNlcyBhcyBhIHdhcm5pbmcuXG4gKlxuICogRmxhZ3M6XG4gKiAgIC0gYC0taWQgPHBpcGVsaW5lSWQ+YCDigJQgcmUtcmVnaXN0ZXIgYSBzcGVjaWZpYyBwaXBlbGluZSBieSBJRFxuICogICAtIGAtLXJlZ2lvbiA8cmVnaW9uPmAg4oCUIEFXUyByZWdpb24gKGRlZmF1bHQ6IEFXU19SRUdJT04gZW52IC8gdXMtZWFzdC0xKVxuICogICAtIGAtLW5vLWRyYWluYCDigJQgc2tpcCBkcmFpbmluZyBwZW5kaW5nIGludGVudHNcbiAqXG4gKiBFeGl0IGNvZGVzOlxuICogICAtIDA6IHJlcXVlc3RlZCByZWdpc3RyYXRpb24gc3VjY2VlZGVkIEFORCBubyBwZW5kaW5nIGludGVudHMgcmVtYWluXG4gKiAgIC0gMTogYXQgbGVhc3Qgb25lIHJlZ2lzdHJhdGlvbiAoZXhwbGljaXQgb3IgcGVuZGluZykgc3RpbGwgZmFpbGVkXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGJhc2hcbiAqICMgUmV0cnkgYSByZWdpc3RyYXRpb24gdGhhdCBmYWlsZWQgZHVyaW5nIGRlcGxveVxuICogcGlwZWxpbmUtbWFuYWdlciByZWdpc3RlciAtLWlkIHBpcGUtMTIzXG4gKlxuICogIyBKdXN0IGRyYWluIHBlbmRpbmcgaW50ZW50cyBmcm9tIGRpc2ssIG5vIHNwZWNpZmljIHJlZ2lzdHJhdGlvblxuICogcGlwZWxpbmUtbWFuYWdlciByZWdpc3RlclxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3Rlcihwcm9ncmFtOiBDb21tYW5kKTogdm9pZCB7XG4gIHByb2dyYW1cbiAgICAuY29tbWFuZCgncmVnaXN0ZXInKVxuICAgIC5kZXNjcmlwdGlvbignUmVnaXN0ZXIgYSBkZXBsb3llZCBwaXBlbGluZSBBUk4gd2l0aCB0aGUgcGxhdGZvcm0gKHJldHJ5IHBhdGggZm9yIGZhaWxlZCByZWdpc3RyYXRpb25zKScpXG4gICAgLm9wdGlvbignLWksIC0taWQgPGlkPicsICdQaXBlbGluZSBJRCB0byByZWdpc3RlciAocmUtZGVyaXZlcyBBUk4gZnJvbSBTVFMpJylcbiAgICAub3B0aW9uKCctLXJlZ2lvbiA8cmVnaW9uPicsICdBV1MgcmVnaW9uIChkZWZhdWx0cyB0byBBV1NfUkVHSU9OIGVudiknKVxuICAgIC5vcHRpb24oJy0tbm8tZHJhaW4nLCAnU2tpcCBkcmFpbmluZyBwZW5kaW5nIGludGVudHMgZnJvbSBwcmlvciBmYWlsZWQgZGVwbG95cycpXG4gICAgLm9wdGlvbignLS12ZXJpZnktc3NsJywgJ0VuYWJsZSBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uJylcbiAgICAub3B0aW9uKCctLW5vLXZlcmlmeS1zc2wnLCAnRGlzYWJsZSBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uJylcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IHByaW50Q29tbWFuZEhlYWRlcignUmVnaXN0ZXIgUGlwZWxpbmUnKTtcbiAgICAgIHByaW50U3NsV2FybmluZyhvcHRpb25zLnZlcmlmeVNzbCk7XG5cbiAgICAgIGxldCBhbnlGYWlsZWQgPSBmYWxzZTtcbiAgICAgIGxldCByZWdpc3RlcmVkQ291bnQgPSAwO1xuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBjbGllbnQgPSBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50KG9wdGlvbnMpO1xuICAgICAgICBjb25zdCBwaXBlbGluZVVybCA9IGNsaWVudC5nZXRDb25maWcoKS5hcGkucGlwZWxpbmVVcmw7XG5cbiAgICAgICAgLy8g4pSA4pSAIERyYWluIHBlbmRpbmcgaW50ZW50cyBmaXJzdCDilIDilIBcbiAgICAgICAgLy8gV2UgZHJhaW4gYmVmb3JlIHRoZSBleHBsaWNpdCByZWdpc3RyYXRpb24gc28gYSBxdWV1ZWQgZmFpbHVyZSBmb3JcbiAgICAgICAgLy8gdGhlIHNhbWUgcGlwZWxpbmVJZCBpcyByZXBsYWNlZCAobm90IGRvdWJsZS1hcHBsaWVkKSBieSB0aGUgZnJlc2hcbiAgICAgICAgLy8gcGF5bG9hZCBiZWxvdy5cbiAgICAgICAgY29uc3QgZHJhaW5lZCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICBpZiAob3B0aW9ucy5kcmFpbiAhPT0gZmFsc2UpIHtcbiAgICAgICAgICBjb25zdCBpbnRlbnRzID0gYXdhaXQgcmVhZFBlbmRpbmdJbnRlbnRzKCk7XG4gICAgICAgICAgaWYgKGludGVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcHJpbnRTZWN0aW9uKCdEcmFpbmluZyBwZW5kaW5nIGludGVudHMnKTtcbiAgICAgICAgICAgIHByaW50SW5mbygnRm91bmQgcGVuZGluZyByZWdpc3RyYXRpb25zIGZyb20gcHJpb3IgZmFpbGVkIGRlcGxveXMnLCB7XG4gICAgICAgICAgICAgIGNvdW50OiBTdHJpbmcoaW50ZW50cy5sZW5ndGgpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGludGVudCBvZiBpbnRlbnRzKSB7XG4gICAgICAgICAgICAgIC8vIFNraXAgdGhlIGV4cGxpY2l0IHBpcGVsaW5lIOKAlCB3ZSdsbCByZS1idWlsZCBhIGZyZXNoIHBheWxvYWQgYmVsb3cuXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLmlkICYmIGludGVudC5waXBlbGluZUlkID09PSBvcHRpb25zLmlkKSBjb250aW51ZTtcbiAgICAgICAgICAgICAgY29uc3Qgb2sgPSBhd2FpdCBwb3N0UmVnaXN0cmF0aW9uKGNsaWVudCwgcGlwZWxpbmVVcmwsIGludGVudCwgaW50ZW50LnBpcGVsaW5lSWQpO1xuICAgICAgICAgICAgICBpZiAob2spIHtcbiAgICAgICAgICAgICAgICBhd2FpdCBjbGVhclBlbmRpbmdJbnRlbnQoaW50ZW50LnBpcGVsaW5lSWQpO1xuICAgICAgICAgICAgICAgIGRyYWluZWQuYWRkKGludGVudC5waXBlbGluZUlkKTtcbiAgICAgICAgICAgICAgICByZWdpc3RlcmVkQ291bnQrKztcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhbnlGYWlsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8g4pSA4pSAIEV4cGxpY2l0IHJlZ2lzdHJhdGlvbiDilIDilIBcbiAgICAgICAgaWYgKG9wdGlvbnMuaWQpIHtcbiAgICAgICAgICBwcmludFNlY3Rpb24oJ1JlLXJlZ2lzdGVyaW5nIHBpcGVsaW5lJyk7XG4gICAgICAgICAgY29uc3QgcGlwZWxpbmVSZXMgPSBhd2FpdCBjbGllbnQuZ2V0PFBpcGVsaW5lUmVzcG9uc2U+KGAke3BpcGVsaW5lVXJsfS8ke29wdGlvbnMuaWR9YCk7XG4gICAgICAgICAgY29uc3QgcGlwZWxpbmUgPSBleHRyYWN0U2luZ2xlUmVzcG9uc2U8UGlwZWxpbmU+KHBpcGVsaW5lUmVzLCAncGlwZWxpbmUnLCAnaWQnKTtcbiAgICAgICAgICBpZiAoIXBpcGVsaW5lKSB7XG4gICAgICAgICAgICBwcmludEVycm9yKCdQaXBlbGluZSBub3QgZm91bmQgaW4gcGxhdGZvcm0nKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gcGlwZWxpbmUgcmV0dXJuZWQgZm9yIGlkICR7b3B0aW9ucy5pZH1gKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIXBpcGVsaW5lLm9yZ0lkKSB7XG4gICAgICAgICAgICBwcmludEVycm9yKCdQaXBlbGluZSBoYXMgbm8gb3JnSWQg4oCUIGNhbm5vdCByZWdpc3RlcicpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQaXBlbGluZSAke3BpcGVsaW5lLmlkfSBpcyBtaXNzaW5nIG9yZ0lkYCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSBhd2FpdCBidWlsZFJlZ2lzdHJ5UGF5bG9hZChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWQ6IHBpcGVsaW5lLmlkLFxuICAgICAgICAgICAgICBvcmdJZDogcGlwZWxpbmUub3JnSWQsXG4gICAgICAgICAgICAgIHBpcGVsaW5lTmFtZTogcGlwZWxpbmUucGlwZWxpbmVOYW1lLFxuICAgICAgICAgICAgICBwcm9qZWN0OiBwaXBlbGluZS5wcm9qZWN0LFxuICAgICAgICAgICAgICBvcmdhbml6YXRpb246IHBpcGVsaW5lLm9yZ2FuaXphdGlvbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvcHRpb25zLnJlZ2lvbixcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgLy8gQ2xlYXIgYW55IHN0YWxlIGludGVudCBmb3IgdGhpcyBwaXBlbGluZUlkIGJlZm9yZSByZXRyeWluZyBzbyB3ZVxuICAgICAgICAgIC8vIGRvbid0IGxlYXZlIGEgZHVwbGljYXRlIGZpbGUgYmVoaW5kIG9uIHN1Y2Nlc3MuXG4gICAgICAgICAgYXdhaXQgY2xlYXJQZW5kaW5nSW50ZW50KHBheWxvYWQucGlwZWxpbmVJZCk7XG5cbiAgICAgICAgICBjb25zdCBvayA9IGF3YWl0IHBvc3RSZWdpc3RyYXRpb24oY2xpZW50LCBwaXBlbGluZVVybCwgcGF5bG9hZCwgcGF5bG9hZC5waXBlbGluZUlkKTtcbiAgICAgICAgICBpZiAob2spIHtcbiAgICAgICAgICAgIHJlZ2lzdGVyZWRDb3VudCsrO1xuICAgICAgICAgICAgcHJpbnRTdWNjZXNzKCdQaXBlbGluZSByZWdpc3RlcmVkIGZvciBldmVudCByZXBvcnRpbmcnLCB7XG4gICAgICAgICAgICAgIHBpcGVsaW5lSWQ6IHBheWxvYWQucGlwZWxpbmVJZCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhbnlGYWlsZWQgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgcGF0aCA9IGF3YWl0IHdyaXRlUGVuZGluZ0ludGVudChwYXlsb2FkKTtcbiAgICAgICAgICAgIHByaW50V2FybmluZygnUmVnaXN0cmF0aW9uIGZhaWxlZDsgaW50ZW50IHNhdmVkIGZvciByZXRyeScsIHsgaW50ZW50OiBwYXRoIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHByaW50U2VjdGlvbignU3VtbWFyeScpO1xuICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAnUmVnaXN0ZXJlZCc6IFN0cmluZyhyZWdpc3RlcmVkQ291bnQpLFxuICAgICAgICAgICdEcmFpbmVkIGZyb20gcXVldWUnOiBTdHJpbmcoZHJhaW5lZC5zaXplKSxcbiAgICAgICAgICAnU3RhdHVzJzogYW55RmFpbGVkID8gJ1NvbWUgcmVnaXN0cmF0aW9ucyBzdGlsbCBwZW5kaW5nJyA6ICdBbGwgY2xlYXInLFxuICAgICAgICAgICdFeGVjdXRpb24gSUQnOiBleGVjdXRpb25JZCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcHJvY2Vzcy5leGl0KGFueUZhaWxlZCA/IDEgOiAwKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5BUElfUkVRVUVTVCwge1xuICAgICAgICAgIGRlYnVnOiBwcm9ncmFtLm9wdHMoKS5kZWJ1ZyxcbiAgICAgICAgICBleGl0OiBmYWxzZSxcbiAgICAgICAgICBjb250ZXh0OiB7IGNvbW1hbmQ6ICdyZWdpc3RlcicsIGV4ZWN1dGlvbklkLCBwaXBlbGluZUlkOiBvcHRpb25zLmlkIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICB9XG4gICAgfSk7XG59XG5cbi8qKlxuICogUE9TVCBhIHJlZ2lzdHJhdGlvbiBwYXlsb2FkIHRvIHRoZSBwbGF0Zm9ybS4gT24gZmFpbHVyZSwgdGhlIGNhbGxlciBkZWNpZGVzXG4gKiB3aGV0aGVyIHRvIHdyaXRlL3ByZXNlcnZlIGEgcGVuZGluZyBpbnRlbnQg4oCUIHRoaXMgaGVscGVyIGp1c3QgcmVwb3J0cy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcG9zdFJlZ2lzdHJhdGlvbihcbiAgY2xpZW50OiBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50PixcbiAgcGlwZWxpbmVVcmw6IHN0cmluZyxcbiAgcGF5bG9hZDogUmVnaXN0cnlQYXlsb2FkLFxuICBwaXBlbGluZUlkOiBzdHJpbmcsXG4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgdHJ5IHtcbiAgICBhd2FpdCBjbGllbnQucG9zdChgJHtwaXBlbGluZVVybH0vcmVnaXN0cnlgLCBwYXlsb2FkKTtcbiAgICBwcmludEluZm8oJ1JlZ2lzdGVyZWQnLCB7IHBpcGVsaW5lSWQgfSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHByaW50V2FybmluZygnUmVnaXN0cmF0aW9uIGZhaWxlZCcsIHtcbiAgICAgIHBpcGVsaW5lSWQsXG4gICAgICBlcnJvcjogZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IFN0cmluZyhlcnIpLFxuICAgIH0pO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19
|
|
162
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvcmVnaXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBd0MsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0csT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNqSixPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsa0JBQWtCLEdBRW5CLE1BQU0sc0JBQXNCLENBQUM7QUFFOUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQ0c7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUFDLE9BQWdCO0lBQ3ZDLE9BQU87U0FDSixPQUFPLENBQUMsVUFBVSxDQUFDO1NBQ25CLFdBQVcsQ0FBQywwRkFBMEYsQ0FBQztTQUN2RyxNQUFNLENBQUMsZUFBZSxFQUFFLG1EQUFtRCxDQUFDO1NBQzVFLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSx5Q0FBeUMsQ0FBQztTQUN0RSxNQUFNLENBQUMsWUFBWSxFQUFFLHlEQUF5RCxDQUFDO1NBQy9FLE1BQU0sQ0FBQyxjQUFjLEVBQUUscUNBQXFDLENBQUM7U0FDN0QsTUFBTSxDQUFDLGlCQUFpQixFQUFFLHNDQUFzQyxDQUFDO1NBQ2pFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVB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QUssRUFBRSxDQUFDO1lBQ2YsV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsV0FBVyxFQUFFO2dCQUMxQyxLQUFLLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUs7Z0JBQzNCLElBQUksRUFBRSxLQUFLO2dCQUNYLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFO2FBQ3RFLENBQUMsQ0FBQztZQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVEOzs7R0FHRztBQUNILEtBQUssVUFBVSxnQkFBZ0IsQ0FDN0IsTUFBb0QsRUFDcEQsV0FBbUIsRUFDbkIsT0FBd0IsRUFDeEIsVUFBa0I7SUFFbEIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsV0FBVyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdEQsU0FBUyxDQUFDLFlBQVksRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDeEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLFlBQVksQ0FBQyxxQkFBcUIsRUFBRTtZQUNsQyxVQUFVO1lBQ1YsS0FBSyxFQUFFLEdBQUcsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7U0FDeEQsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCB7IHR5cGUgUGlwZWxpbmUsIHR5cGUgUGlwZWxpbmVSZXNwb25zZSB9IGZyb20gJy4uL3R5cGVzL2luZGV4LmpzJztcbmltcG9ydCB7IGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnQsIHByaW50Q29tbWFuZEhlYWRlciwgcHJpbnRTc2xXYXJuaW5nIH0gZnJvbSAnLi4vdXRpbHMvY29tbWFuZC11dGlscy5qcyc7XG5pbXBvcnQgeyBFUlJPUl9DT0RFUywgaGFuZGxlRXJyb3IgfSBmcm9tICcuLi91dGlscy9lcnJvci1oYW5kbGVyLmpzJztcbmltcG9ydCB7IGV4dHJhY3RTaW5nbGVSZXNwb25zZSwgcHJpbnRFcnJvciwgcHJpbnRJbmZvLCBwcmludEtleVZhbHVlLCBwcmludFNlY3Rpb24sIHByaW50U3VjY2VzcywgcHJpbnRXYXJuaW5nIH0gZnJvbSAnLi4vdXRpbHMvb3V0cHV0LXV0aWxzLmpzJztcbmltcG9ydCB7XG4gIGJ1aWxkUmVnaXN0cnlQYXlsb2FkLFxuICBjbGVhclBlbmRpbmdJbnRlbnQsXG4gIHJlYWRQZW5kaW5nSW50ZW50cyxcbiAgd3JpdGVQZW5kaW5nSW50ZW50LFxuICB0eXBlIFJlZ2lzdHJ5UGF5bG9hZCxcbn0gZnJvbSAnLi4vdXRpbHMvcmVnaXN0cnkuanMnO1xuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgYHJlZ2lzdGVyYCBjb21tYW5kIHdpdGggdGhlIENMSSBwcm9ncmFtLlxuICpcbiAqIFR3byBwdXJwb3NlcyDigJQgYm90aCB0YXJnZXRlZCBhdCByZWNvdmVyaW5nIGZyb20gYSBkZXBsb3kgd2hvc2UgcmVnaXN0cmF0aW9uXG4gKiBzdGVwIGRpZG4ndCBsYW5kOlxuICpcbiAqICAgMS4gRXhwbGljaXQgcmUtcmVnaXN0ZXIgKGAtLWlkIDxwaXBlbGluZUlkPmApIOKAlCByZWNvbXB1dGVzIHRoZSBBUk4gZnJvbVxuICogICAgICBTVFMgKyByZWdpb24gYW5kIFBPU1RzIGl0IHRvIHRoZSBwbGF0Zm9ybS4gVXNlZnVsIHdoZW4gdGhlIHBsYXRmb3JtXG4gKiAgICAgIHdhcyB1bnJlYWNoYWJsZSBkdXJpbmcgYGRlcGxveWAsIHdoZW4gdGhlIHJlZ2lzdHJ5IHJvdyB3YXMgZGVsZXRlZCBieVxuICogICAgICBtaXN0YWtlLCBvciBmb3IgYW55IG90aGVyIHJlYXNvbiBhIGRlcGxveWVkIHN0YWNrIGhhcyBubyByZWdpc3RyeSByb3cuXG4gKlxuICogICAyLiBEcmFpbiBwZW5kaW5nIGludGVudHMgKGV2ZXJ5IGludm9jYXRpb24pIOKAlCBgZGVwbG95YCB3cml0ZXMgYSBsb2NhbFxuICogICAgICBmaWxlIHVuZGVyIGB+Ly5waXBlbGluZS1tYW5hZ2VyL3BlbmRpbmctcmVnaXN0cmF0aW9ucy9gIHdoZW5ldmVyIGl0c1xuICogICAgICByZWdpc3RyYXRpb24gUE9TVCBmYWlscy4gRWFjaCBgcmVnaXN0ZXJgIGludm9jYXRpb24gdHJpZXMgdG8gZHJhaW5cbiAqICAgICAgZXZlcnkgc3VjaCBmaWxlLiBPbiBzdWNjZXNzIHRoZSBmaWxlIGlzIGRlbGV0ZWQ7IG9uIGZhaWx1cmUgaXQgc3RheXNcbiAqICAgICAgYW5kIHN1cmZhY2VzIGFzIGEgd2FybmluZy5cbiAqXG4gKiBGbGFnczpcbiAqICAgLSBgLS1pZCA8cGlwZWxpbmVJZD5gIOKAlCByZS1yZWdpc3RlciBhIHNwZWNpZmljIHBpcGVsaW5lIGJ5IElEXG4gKiAgIC0gYC0tcmVnaW9uIDxyZWdpb24+YCDigJQgQVdTIHJlZ2lvbiAoZGVmYXVsdDogQVdTX1JFR0lPTiBlbnYgLyB1cy1lYXN0LTEpXG4gKiAgIC0gYC0tbm8tZHJhaW5gIOKAlCBza2lwIGRyYWluaW5nIHBlbmRpbmcgaW50ZW50c1xuICpcbiAqIEV4aXQgY29kZXM6XG4gKiAgIC0gMDogcmVxdWVzdGVkIHJlZ2lzdHJhdGlvbiBzdWNjZWVkZWQgQU5EIG5vIHBlbmRpbmcgaW50ZW50cyByZW1haW5cbiAqICAgLSAxOiBhdCBsZWFzdCBvbmUgcmVnaXN0cmF0aW9uIChleHBsaWNpdCBvciBwZW5kaW5nKSBzdGlsbCBmYWlsZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgYmFzaFxuICogIyBSZXRyeSBhIHJlZ2lzdHJhdGlvbiB0aGF0IGZhaWxlZCBkdXJpbmcgZGVwbG95XG4gKiBwaXBlbGluZS1tYW5hZ2VyIHJlZ2lzdGVyIC0taWQgcGlwZS0xMjNcbiAqXG4gKiAjIEp1c3QgZHJhaW4gcGVuZGluZyBpbnRlbnRzIGZyb20gZGlzaywgbm8gc3BlY2lmaWMgcmVnaXN0cmF0aW9uXG4gKiBwaXBlbGluZS1tYW5hZ2VyIHJlZ2lzdGVyXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyKHByb2dyYW06IENvbW1hbmQpOiB2b2lkIHtcbiAgcHJvZ3JhbVxuICAgIC5jb21tYW5kKCdyZWdpc3RlcicpXG4gICAgLmRlc2NyaXB0aW9uKCdSZWdpc3RlciBhIGRlcGxveWVkIHBpcGVsaW5lIEFSTiB3aXRoIHRoZSBwbGF0Zm9ybSAocmV0cnkgcGF0aCBmb3IgZmFpbGVkIHJlZ2lzdHJhdGlvbnMpJylcbiAgICAub3B0aW9uKCctaSwgLS1pZCA8aWQ+JywgJ1BpcGVsaW5lIElEIHRvIHJlZ2lzdGVyIChyZS1kZXJpdmVzIEFSTiBmcm9tIFNUUyknKVxuICAgIC5vcHRpb24oJy0tcmVnaW9uIDxyZWdpb24+JywgJ0FXUyByZWdpb24gKGRlZmF1bHRzIHRvIEFXU19SRUdJT04gZW52KScpXG4gICAgLm9wdGlvbignLS1uby1kcmFpbicsICdTa2lwIGRyYWluaW5nIHBlbmRpbmcgaW50ZW50cyBmcm9tIHByaW9yIGZhaWxlZCBkZXBsb3lzJylcbiAgICAub3B0aW9uKCctLXZlcmlmeS1zc2wnLCAnRW5hYmxlIFNTTCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24nKVxuICAgIC5vcHRpb24oJy0tbm8tdmVyaWZ5LXNzbCcsICdEaXNhYmxlIFNTTCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24nKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IGV4ZWN1dGlvbklkID0gcHJpbnRDb21tYW5kSGVhZGVyKCdSZWdpc3RlciBQaXBlbGluZScpO1xuICAgICAgcHJpbnRTc2xXYXJuaW5nKG9wdGlvbnMudmVyaWZ5U3NsKTtcblxuICAgICAgbGV0IGFueUZhaWxlZCA9IGZhbHNlO1xuICAgICAgbGV0IHJlZ2lzdGVyZWRDb3VudCA9IDA7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNsaWVudCA9IGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnQob3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IHBpcGVsaW5lVXJsID0gY2xpZW50LmdldENvbmZpZygpLmFwaS5waXBlbGluZVVybDtcblxuICAgICAgICAvLyDilIDilIAgRHJhaW4gcGVuZGluZyBpbnRlbnRzIGZpcnN0IOKUgOKUgFxuICAgICAgICAvLyBXZSBkcmFpbiBiZWZvcmUgdGhlIGV4cGxpY2l0IHJlZ2lzdHJhdGlvbiBzbyBhIHF1ZXVlZCBmYWlsdXJlIGZvclxuICAgICAgICAvLyB0aGUgc2FtZSBwaXBlbGluZUlkIGlzIHJlcGxhY2VkIChub3QgZG91YmxlLWFwcGxpZWQpIGJ5IHRoZSBmcmVzaFxuICAgICAgICAvLyBwYXlsb2FkIGJlbG93LlxuICAgICAgICBjb25zdCBkcmFpbmVkID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgIGlmIChvcHRpb25zLmRyYWluICE9PSBmYWxzZSkge1xuICAgICAgICAgIGNvbnN0IGludGVudHMgPSBhd2FpdCByZWFkUGVuZGluZ0ludGVudHMoKTtcbiAgICAgICAgICBpZiAoaW50ZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBwcmludFNlY3Rpb24oJ0RyYWluaW5nIHBlbmRpbmcgaW50ZW50cycpO1xuICAgICAgICAgICAgcHJpbnRJbmZvKCdGb3VuZCBwZW5kaW5nIHJlZ2lzdHJhdGlvbnMgZnJvbSBwcmlvciBmYWlsZWQgZGVwbG95cycsIHtcbiAgICAgICAgICAgICAgY291bnQ6IFN0cmluZyhpbnRlbnRzLmxlbmd0aCksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaW50ZW50IG9mIGludGVudHMpIHtcbiAgICAgICAgICAgICAgLy8gU2tpcCB0aGUgZXhwbGljaXQgcGlwZWxpbmUg4oCUIHdlJ2xsIHJlLWJ1aWxkIGEgZnJlc2ggcGF5bG9hZCBiZWxvdy5cbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuaWQgJiYgaW50ZW50LnBpcGVsaW5lSWQgPT09IG9wdGlvbnMuaWQpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICBjb25zdCBvayA9IGF3YWl0IHBvc3RSZWdpc3RyYXRpb24oY2xpZW50LCBwaXBlbGluZVVybCwgaW50ZW50LCBpbnRlbnQucGlwZWxpbmVJZCk7XG4gICAgICAgICAgICAgIGlmIChvaykge1xuICAgICAgICAgICAgICAgIGF3YWl0IGNsZWFyUGVuZGluZ0ludGVudChpbnRlbnQucGlwZWxpbmVJZCk7XG4gICAgICAgICAgICAgICAgZHJhaW5lZC5hZGQoaW50ZW50LnBpcGVsaW5lSWQpO1xuICAgICAgICAgICAgICAgIHJlZ2lzdGVyZWRDb3VudCsrO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGFueUZhaWxlZCA9IHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyDilIDilIAgRXhwbGljaXQgcmVnaXN0cmF0aW9uIOKUgOKUgFxuICAgICAgICBpZiAob3B0aW9ucy5pZCkge1xuICAgICAgICAgIHByaW50U2VjdGlvbignUmUtcmVnaXN0ZXJpbmcgcGlwZWxpbmUnKTtcbiAgICAgICAgICBjb25zdCBwaXBlbGluZVJlcyA9IGF3YWl0IGNsaWVudC5nZXQ8UGlwZWxpbmVSZXNwb25zZT4oYCR7cGlwZWxpbmVVcmx9LyR7b3B0aW9ucy5pZH1gKTtcbiAgICAgICAgICBjb25zdCBwaXBlbGluZSA9IGV4dHJhY3RTaW5nbGVSZXNwb25zZTxQaXBlbGluZT4ocGlwZWxpbmVSZXMsICdwaXBlbGluZScsICdpZCcpO1xuICAgICAgICAgIGlmICghcGlwZWxpbmUpIHtcbiAgICAgICAgICAgIHByaW50RXJyb3IoJ1BpcGVsaW5lIG5vdCBmb3VuZCBpbiBwbGF0Zm9ybScpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBwaXBlbGluZSByZXR1cm5lZCBmb3IgaWQgJHtvcHRpb25zLmlkfWApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghcGlwZWxpbmUub3JnSWQpIHtcbiAgICAgICAgICAgIHByaW50RXJyb3IoJ1BpcGVsaW5lIGhhcyBubyBvcmdJZCDigJQgY2Fubm90IHJlZ2lzdGVyJyk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFBpcGVsaW5lICR7cGlwZWxpbmUuaWR9IGlzIG1pc3Npbmcgb3JnSWRgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgcGF5bG9hZCA9IGF3YWl0IGJ1aWxkUmVnaXN0cnlQYXlsb2FkKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogcGlwZWxpbmUuaWQsXG4gICAgICAgICAgICAgIG9yZ0lkOiBwaXBlbGluZS5vcmdJZCxcbiAgICAgICAgICAgICAgcGlwZWxpbmVOYW1lOiBwaXBlbGluZS5waXBlbGluZU5hbWUsXG4gICAgICAgICAgICAgIHByb2plY3Q6IHBpcGVsaW5lLnByb2plY3QsXG4gICAgICAgICAgICAgIG9yZ2FuaXphdGlvbjogcGlwZWxpbmUub3JnYW5pemF0aW9uLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9wdGlvbnMucmVnaW9uLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICAvLyBDbGVhciBhbnkgc3RhbGUgaW50ZW50IGZvciB0aGlzIHBpcGVsaW5lSWQgYmVmb3JlIHJldHJ5aW5nIHNvIHdlXG4gICAgICAgICAgLy8gZG9uJ3QgbGVhdmUgYSBkdXBsaWNhdGUgZmlsZSBiZWhpbmQgb24gc3VjY2Vzcy5cbiAgICAgICAgICBhd2FpdCBjbGVhclBlbmRpbmdJbnRlbnQocGF5bG9hZC5waXBlbGluZUlkKTtcblxuICAgICAgICAgIGNvbnN0IG9rID0gYXdhaXQgcG9zdFJlZ2lzdHJhdGlvbihjbGllbnQsIHBpcGVsaW5lVXJsLCBwYXlsb2FkLCBwYXlsb2FkLnBpcGVsaW5lSWQpO1xuICAgICAgICAgIGlmIChvaykge1xuICAgICAgICAgICAgcmVnaXN0ZXJlZENvdW50Kys7XG4gICAgICAgICAgICBwcmludFN1Y2Nlc3MoJ1BpcGVsaW5lIHJlZ2lzdGVyZWQgZm9yIGV2ZW50IHJlcG9ydGluZycsIHtcbiAgICAgICAgICAgICAgcGlwZWxpbmVJZDogcGF5bG9hZC5waXBlbGluZUlkLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFueUZhaWxlZCA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBwYXRoID0gYXdhaXQgd3JpdGVQZW5kaW5nSW50ZW50KHBheWxvYWQpO1xuICAgICAgICAgICAgcHJpbnRXYXJuaW5nKCdSZWdpc3RyYXRpb24gZmFpbGVkOyBpbnRlbnQgc2F2ZWQgZm9yIHJldHJ5JywgeyBpbnRlbnQ6IHBhdGggfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcHJpbnRTZWN0aW9uKCdTdW1tYXJ5Jyk7XG4gICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICdSZWdpc3RlcmVkJzogU3RyaW5nKHJlZ2lzdGVyZWRDb3VudCksXG4gICAgICAgICAgJ0RyYWluZWQgZnJvbSBxdWV1ZSc6IFN0cmluZyhkcmFpbmVkLnNpemUpLFxuICAgICAgICAgICdTdGF0dXMnOiBhbnlGYWlsZWQgPyAnU29tZSByZWdpc3RyYXRpb25zIHN0aWxsIHBlbmRpbmcnIDogJ0FsbCBjbGVhcicsXG4gICAgICAgICAgJ0V4ZWN1dGlvbiBJRCc6IGV4ZWN1dGlvbklkLFxuICAgICAgICB9KTtcblxuICAgICAgICBwcm9jZXNzLmV4aXQoYW55RmFpbGVkID8gMSA6IDApO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkFQSV9SRVFVRVNULCB7XG4gICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgIGV4aXQ6IGZhbHNlLFxuICAgICAgICAgIGNvbnRleHQ6IHsgY29tbWFuZDogJ3JlZ2lzdGVyJywgZXhlY3V0aW9uSWQsIHBpcGVsaW5lSWQ6IG9wdGlvbnMuaWQgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgIH1cbiAgICB9KTtcbn1cblxuLyoqXG4gKiBQT1NUIGEgcmVnaXN0cmF0aW9uIHBheWxvYWQgdG8gdGhlIHBsYXRmb3JtLiBPbiBmYWlsdXJlLCB0aGUgY2FsbGVyIGRlY2lkZXNcbiAqIHdoZXRoZXIgdG8gd3JpdGUvcHJlc2VydmUgYSBwZW5kaW5nIGludGVudCDigJQgdGhpcyBoZWxwZXIganVzdCByZXBvcnRzLlxuICovXG5hc3luYyBmdW5jdGlvbiBwb3N0UmVnaXN0cmF0aW9uKFxuICBjbGllbnQ6IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnQ+LFxuICBwaXBlbGluZVVybDogc3RyaW5nLFxuICBwYXlsb2FkOiBSZWdpc3RyeVBheWxvYWQsXG4gIHBpcGVsaW5lSWQ6IHN0cmluZyxcbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICB0cnkge1xuICAgIGF3YWl0IGNsaWVudC5wb3N0KGAke3BpcGVsaW5lVXJsfS9yZWdpc3RyeWAsIHBheWxvYWQpO1xuICAgIHByaW50SW5mbygnUmVnaXN0ZXJlZCcsIHsgcGlwZWxpbmVJZCB9KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcHJpbnRXYXJuaW5nKCdSZWdpc3RyYXRpb24gZmFpbGVkJywge1xuICAgICAgcGlwZWxpbmVJZCxcbiAgICAgIGVycm9yOiBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogU3RyaW5nKGVyciksXG4gICAgfSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-events.d.ts","sourceRoot":"","sources":["../../src/commands/setup-events.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"setup-events.d.ts","sourceRoot":"","sources":["../../src/commands/setup-events.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmIlD"}
|
|
@@ -1,53 +1,18 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// Copyright 2026 Pipeline Builder Contributors
|
|
3
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}) : function(o, v) {
|
|
18
|
-
o["default"] = v;
|
|
19
|
-
});
|
|
20
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
21
|
-
var ownKeys = function(o) {
|
|
22
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
23
|
-
var ar = [];
|
|
24
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
25
|
-
return ar;
|
|
26
|
-
};
|
|
27
|
-
return ownKeys(o);
|
|
28
|
-
};
|
|
29
|
-
return function (mod) {
|
|
30
|
-
if (mod && mod.__esModule) return mod;
|
|
31
|
-
var result = {};
|
|
32
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
33
|
-
__setModuleDefault(result, mod);
|
|
34
|
-
return result;
|
|
35
|
-
};
|
|
36
|
-
})();
|
|
37
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
38
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
39
|
-
};
|
|
40
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
-
exports.setupEvents = setupEvents;
|
|
42
|
-
const child_process_1 = require("child_process");
|
|
43
|
-
const fs = __importStar(require("fs"));
|
|
44
|
-
const os = __importStar(require("os"));
|
|
45
|
-
const path_1 = __importDefault(require("path"));
|
|
46
|
-
const client_cloudformation_1 = require("@aws-sdk/client-cloudformation");
|
|
47
|
-
const client_lambda_1 = require("@aws-sdk/client-lambda");
|
|
48
|
-
const command_utils_1 = require("../utils/command-utils");
|
|
49
|
-
const error_handler_1 = require("../utils/error-handler");
|
|
50
|
-
const output_utils_1 = require("../utils/output-utils");
|
|
3
|
+
import { execFileSync } from 'child_process';
|
|
4
|
+
import * as fs from 'fs';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
6
|
+
import * as os from 'os';
|
|
7
|
+
import path from 'path';
|
|
8
|
+
import { CloudFormationClient, DescribeStacksCommand } from '@aws-sdk/client-cloudformation';
|
|
9
|
+
import { LambdaClient, UpdateFunctionCodeCommand } from '@aws-sdk/client-lambda';
|
|
10
|
+
import { Command } from 'commander';
|
|
11
|
+
import { printCommandHeader } from '../utils/command-utils.js';
|
|
12
|
+
import { ERROR_CODES, handleError } from '../utils/error-handler.js';
|
|
13
|
+
import { printError, printInfo, printKeyValue, printSection, printSuccess } from '../utils/output-utils.js';
|
|
14
|
+
// ESM has no __dirname; derive it from this module's URL.
|
|
15
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
51
16
|
const STACK_NAME = 'pipeline-builder-events';
|
|
52
17
|
// Existing CFN-managed Lambda function name — do NOT rename without a migration plan
|
|
53
18
|
const LAMBDA_NAME = 'pipeline-builder-event-ingestion';
|
|
@@ -64,7 +29,7 @@ const PACKAGE_NAME = '@pipeline-builder/pipeline-events';
|
|
|
64
29
|
* Uses PLATFORM_BASE_URL from environment (same as all other commands).
|
|
65
30
|
* Idempotent — running again updates the stack and code.
|
|
66
31
|
*/
|
|
67
|
-
function setupEvents(program) {
|
|
32
|
+
export function setupEvents(program) {
|
|
68
33
|
program
|
|
69
34
|
.command('setup-events')
|
|
70
35
|
.description('Deploy EventBridge event ingestion infrastructure for pipeline reporting')
|
|
@@ -73,24 +38,24 @@ function setupEvents(program) {
|
|
|
73
38
|
.option('--region <region>', 'AWS region')
|
|
74
39
|
.option('--profile <profile>', 'AWS CLI profile', 'default')
|
|
75
40
|
.action(async (options) => {
|
|
76
|
-
const executionId =
|
|
41
|
+
const executionId = printCommandHeader('Setup Event Ingestion');
|
|
77
42
|
try {
|
|
78
43
|
const region = options.region || process.env.AWS_REGION || process.env.CDK_DEFAULT_REGION;
|
|
79
44
|
if (!region) {
|
|
80
|
-
|
|
45
|
+
printError('AWS region is required');
|
|
81
46
|
throw new Error('AWS region not provided');
|
|
82
47
|
}
|
|
83
48
|
const platformUrl = process.env.PLATFORM_BASE_URL;
|
|
84
49
|
if (!platformUrl) {
|
|
85
|
-
|
|
50
|
+
printError('PLATFORM_BASE_URL environment variable is required');
|
|
86
51
|
throw new Error('PLATFORM_BASE_URL not set');
|
|
87
52
|
}
|
|
88
53
|
const secretName = options.secretName || process.env.PLATFORM_SECRET_NAME;
|
|
89
54
|
if (!secretName) {
|
|
90
|
-
|
|
55
|
+
printError('--secret-name or PLATFORM_SECRET_NAME env var is required');
|
|
91
56
|
throw new Error('Platform secret name not provided');
|
|
92
57
|
}
|
|
93
|
-
|
|
58
|
+
printInfo('Parameters', {
|
|
94
59
|
stack: STACK_NAME,
|
|
95
60
|
region,
|
|
96
61
|
platformUrl,
|
|
@@ -98,8 +63,8 @@ function setupEvents(program) {
|
|
|
98
63
|
packageVersion: options.packageVersion || 'latest',
|
|
99
64
|
});
|
|
100
65
|
// Step 1: Deploy CloudFormation (infra only — Lambda gets placeholder code)
|
|
101
|
-
|
|
102
|
-
const templatePath =
|
|
66
|
+
printSection('Deploy Infrastructure');
|
|
67
|
+
const templatePath = path.join(__dirname, '../templates/events-stack.json');
|
|
103
68
|
const cfnArgs = [
|
|
104
69
|
'cloudformation', 'deploy',
|
|
105
70
|
'--stack-name', STACK_NAME,
|
|
@@ -113,46 +78,46 @@ function setupEvents(program) {
|
|
|
113
78
|
];
|
|
114
79
|
if (options.profile)
|
|
115
80
|
cfnArgs.push('--profile', options.profile);
|
|
116
|
-
|
|
117
|
-
|
|
81
|
+
execFileSync('aws', cfnArgs, { stdio: 'inherit' });
|
|
82
|
+
printSuccess('Infrastructure deployed');
|
|
118
83
|
// Step 2: Download handler from registry and upload to Lambda
|
|
119
|
-
|
|
120
|
-
const tmpDir = fs.mkdtempSync(
|
|
84
|
+
printSection('Deploy Lambda Code');
|
|
85
|
+
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'event-ingestion-'));
|
|
121
86
|
try {
|
|
122
87
|
const versionSpec = options.packageVersion ? `${PACKAGE_NAME}@${options.packageVersion}` : PACKAGE_NAME;
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
const handlerSrc =
|
|
88
|
+
printInfo('Installing from registry', { package: versionSpec });
|
|
89
|
+
execFileSync('npm', ['install', '--prefix', tmpDir, versionSpec], { stdio: 'pipe' });
|
|
90
|
+
const handlerSrc = path.join(tmpDir, 'node_modules', PACKAGE_NAME, 'lib', 'index.js');
|
|
126
91
|
if (!fs.existsSync(handlerSrc)) {
|
|
127
92
|
throw new Error(`Handler not found at ${handlerSrc}. Ensure the package is published.`);
|
|
128
93
|
}
|
|
129
94
|
// Get version from installed package
|
|
130
|
-
const pkgJsonPath =
|
|
95
|
+
const pkgJsonPath = path.join(tmpDir, 'node_modules', PACKAGE_NAME, 'package.json');
|
|
131
96
|
const pkgJson = JSON.parse(fs.readFileSync(pkgJsonPath, 'utf-8'));
|
|
132
97
|
const version = pkgJson.version || 'unknown';
|
|
133
98
|
// ZIP the handler
|
|
134
|
-
const zipPath =
|
|
135
|
-
|
|
99
|
+
const zipPath = path.join(tmpDir, 'index.zip');
|
|
100
|
+
execFileSync('zip', ['-j', zipPath, 'index.js'], { cwd: path.dirname(handlerSrc), stdio: 'pipe' });
|
|
136
101
|
// Upload directly to Lambda via SDK (no S3 needed)
|
|
137
|
-
|
|
138
|
-
const lambdaClient = new
|
|
139
|
-
await lambdaClient.send(new
|
|
102
|
+
printInfo('Uploading code to Lambda', { function: LAMBDA_NAME, version });
|
|
103
|
+
const lambdaClient = new LambdaClient({ region });
|
|
104
|
+
await lambdaClient.send(new UpdateFunctionCodeCommand({
|
|
140
105
|
FunctionName: LAMBDA_NAME,
|
|
141
106
|
ZipFile: fs.readFileSync(zipPath),
|
|
142
107
|
}));
|
|
143
|
-
|
|
108
|
+
printSuccess(`Lambda code deployed (${PACKAGE_NAME}@${version})`);
|
|
144
109
|
}
|
|
145
110
|
finally {
|
|
146
111
|
fs.rmSync(tmpDir, { recursive: true, force: true });
|
|
147
112
|
}
|
|
148
113
|
// Step 3: Show outputs via SDK
|
|
149
|
-
const cfnClient = new
|
|
150
|
-
const describeResult = await cfnClient.send(new
|
|
114
|
+
const cfnClient = new CloudFormationClient({ region });
|
|
115
|
+
const describeResult = await cfnClient.send(new DescribeStacksCommand({ StackName: STACK_NAME }));
|
|
151
116
|
const outputs = describeResult.Stacks?.[0]?.Outputs ?? [];
|
|
152
117
|
const outputMap = Object.fromEntries(outputs.map(o => [o.OutputKey ?? '', o.OutputValue ?? '']));
|
|
153
118
|
console.log('');
|
|
154
|
-
|
|
155
|
-
|
|
119
|
+
printSection('Event Ingestion Ready');
|
|
120
|
+
printKeyValue({
|
|
156
121
|
'Stack': STACK_NAME,
|
|
157
122
|
'Region': region,
|
|
158
123
|
'Platform URL': platformUrl,
|
|
@@ -163,10 +128,10 @@ function setupEvents(program) {
|
|
|
163
128
|
'Status': '✓ Deployed',
|
|
164
129
|
});
|
|
165
130
|
console.log('');
|
|
166
|
-
|
|
131
|
+
printSuccess('EventBridge event ingestion is active.');
|
|
167
132
|
}
|
|
168
133
|
catch (error) {
|
|
169
|
-
|
|
134
|
+
handleError(error, ERROR_CODES.API_REQUEST, {
|
|
170
135
|
debug: program.opts().debug,
|
|
171
136
|
exit: true,
|
|
172
137
|
context: { command: 'setup-events', executionId, stack: STACK_NAME },
|
|
@@ -174,4 +139,4 @@ function setupEvents(program) {
|
|
|
174
139
|
}
|
|
175
140
|
});
|
|
176
141
|
}
|
|
177
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXAtZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL3NldHVwLWV2ZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0NBQStDO0FBQy9DLHNDQUFzQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE4QnRDLGtDQW1JQztBQS9KRCxpREFBNkM7QUFDN0MsdUNBQXlCO0FBQ3pCLHVDQUF5QjtBQUN6QixnREFBd0I7QUFDeEIsMEVBQTZGO0FBQzdGLDBEQUFpRjtBQUVqRiwwREFBNEQ7QUFDNUQsMERBQWtFO0FBQ2xFLHdEQUF5RztBQUV6RyxNQUFNLFVBQVUsR0FBRyx5QkFBeUIsQ0FBQztBQUM3QyxxRkFBcUY7QUFDckYsTUFBTSxXQUFXLEdBQUcsa0NBQWtDLENBQUM7QUFDdkQsTUFBTSxZQUFZLEdBQUcsbUNBQW1DLENBQUM7QUFFekQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxTQUFnQixXQUFXLENBQUMsT0FBZ0I7SUFDMUMsT0FBTztTQUNKLE9BQU8sQ0FBQyxjQUFjLENBQUM7U0FDdkIsV0FBVyxDQUFDLDBFQUEwRSxDQUFDO1NBQ3ZGLE1BQU0sQ0FBQyw2QkFBNkIsRUFBRSxtREFBbUQsQ0FBQztTQUMxRixNQUFNLENBQUMsc0JBQXNCLEVBQUUsK0RBQStELENBQUM7U0FDL0YsTUFBTSxDQUFDLG1CQUFtQixFQUFFLFlBQVksQ0FBQztTQUN6QyxNQUFNLENBQUMscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxDQUFDO1NBQzNELE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDeEIsTUFBTSxXQUFXLEdBQUcsSUFBQSxrQ0FBa0IsRUFBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBRWhFLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksT0FBTyxD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RSxrQkFBa0IsRUFBRSxTQUFTLENBQUMsYUFBYSxJQUFJLG1CQUFtQjtnQkFDbEUsUUFBUSxFQUFFLFlBQVk7YUFDdkIsQ0FBQyxDQUFDO1lBRUgsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoQixJQUFBLDJCQUFZLEVBQUMsd0NBQXdDLENBQUMsQ0FBQztRQUV6RCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUEsMkJBQVcsRUFBQyxLQUFLLEVBQUUsMkJBQVcsQ0FBQyxXQUFXLEVBQUU7Z0JBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSztnQkFDM0IsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRTthQUNyRSxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IGV4ZWNGaWxlU3luYyB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgb3MgZnJvbSAnb3MnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBDbG91ZEZvcm1hdGlvbkNsaWVudCwgRGVzY3JpYmVTdGFja3NDb21tYW5kIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWNsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB7IExhbWJkYUNsaWVudCwgVXBkYXRlRnVuY3Rpb25Db2RlQ29tbWFuZCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1sYW1iZGEnO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgeyBwcmludENvbW1hbmRIZWFkZXIgfSBmcm9tICcuLi91dGlscy9jb21tYW5kLXV0aWxzJztcbmltcG9ydCB7IEVSUk9SX0NPREVTLCBoYW5kbGVFcnJvciB9IGZyb20gJy4uL3V0aWxzL2Vycm9yLWhhbmRsZXInO1xuaW1wb3J0IHsgcHJpbnRFcnJvciwgcHJpbnRJbmZvLCBwcmludEtleVZhbHVlLCBwcmludFNlY3Rpb24sIHByaW50U3VjY2VzcyB9IGZyb20gJy4uL3V0aWxzL291dHB1dC11dGlscyc7XG5cbmNvbnN0IFNUQUNLX05BTUUgPSAncGlwZWxpbmUtYnVpbGRlci1ldmVudHMnO1xuLy8gRXhpc3RpbmcgQ0ZOLW1hbmFnZWQgTGFtYmRhIGZ1bmN0aW9uIG5hbWUg4oCUIGRvIE5PVCByZW5hbWUgd2l0aG91dCBhIG1pZ3JhdGlvbiBwbGFuXG5jb25zdCBMQU1CREFfTkFNRSA9ICdwaXBlbGluZS1idWlsZGVyLWV2ZW50LWluZ2VzdGlvbic7XG5jb25zdCBQQUNLQUdFX05BTUUgPSAnQHBpcGVsaW5lLWJ1aWxkZXIvcGlwZWxpbmUtZXZlbnRzJztcblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIGBzZXR1cC1ldmVudHNgIGNvbW1hbmQgd2l0aCB0aGUgQ0xJIHByb2dyYW0uXG4gKlxuICogRGVwbG95cyBFdmVudEJyaWRnZSDihpIgU1FTIOKGkiBMYW1iZGEgaW5mcmFzdHJ1Y3R1cmUgZm9yIHBpcGVsaW5lIHJlcG9ydGluZy5cbiAqXG4gKiAxLiBEZXBsb3lzIENsb3VkRm9ybWF0aW9uIHN0YWNrIChydWxlICsgcXVldWUgKyBMYW1iZGEgc2hlbGwgKyBJQU0pXG4gKiAyLiBEb3dubG9hZHMgQHBpcGVsaW5lLWJ1aWxkZXIvcGlwZWxpbmUtZXZlbnRzIGZyb20gbnBtIHJlZ2lzdHJ5XG4gKiAzLiBVcGxvYWRzIGhhbmRsZXIgY29kZSBkaXJlY3RseSB0byBMYW1iZGEgKG5vIFMzIG5lZWRlZClcbiAqXG4gKiBVc2VzIFBMQVRGT1JNX0JBU0VfVVJMIGZyb20gZW52aXJvbm1lbnQgKHNhbWUgYXMgYWxsIG90aGVyIGNvbW1hbmRzKS5cbiAqIElkZW1wb3RlbnQg4oCUIHJ1bm5pbmcgYWdhaW4gdXBkYXRlcyB0aGUgc3RhY2sgYW5kIGNvZGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXR1cEV2ZW50cyhwcm9ncmFtOiBDb21tYW5kKTogdm9pZCB7XG4gIHByb2dyYW1cbiAgICAuY29tbWFuZCgnc2V0dXAtZXZlbnRzJylcbiAgICAuZGVzY3JpcHRpb24oJ0RlcGxveSBFdmVudEJyaWRnZSBldmVudCBpbmdlc3Rpb24gaW5mcmFzdHJ1Y3R1cmUgZm9yIHBpcGVsaW5lIHJlcG9ydGluZycpXG4gICAgLm9wdGlvbignLS1wYWNrYWdlLXZlcnNpb24gPHZlcnNpb24+JywgJ3BpcGVsaW5lLWV2ZW50cyBwYWNrYWdlIHZlcnNpb24gKGRlZmF1bHQ6IGxhdGVzdCknKVxuICAgIC5vcHRpb24oJy0tc2VjcmV0LW5hbWUgPG5hbWU+JywgJ1BsYXRmb3JtIHNlY3JldCBuYW1lIChlLmcuIHBpcGVsaW5lLWJ1aWxkZXIve29yZ0lkfS9wbGF0Zm9ybSknKVxuICAgIC5vcHRpb24oJy0tcmVnaW9uIDxyZWdpb24+JywgJ0FXUyByZWdpb24nKVxuICAgIC5vcHRpb24oJy0tcHJvZmlsZSA8cHJvZmlsZT4nLCAnQVdTIENMSSBwcm9maWxlJywgJ2RlZmF1bHQnKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IGV4ZWN1dGlvbklkID0gcHJpbnRDb21tYW5kSGVhZGVyKCdTZXR1cCBFdmVudCBJbmdlc3Rpb24nKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVnaW9uID0gb3B0aW9ucy5yZWdpb24gfHwgcHJvY2Vzcy5lbnYuQVdTX1JFR0lPTiB8fCBwcm9jZXNzLmVudi5DREtfREVGQVVMVF9SRUdJT047XG4gICAgICAgIGlmICghcmVnaW9uKSB7XG4gICAgICAgICAgcHJpbnRFcnJvcignQVdTIHJlZ2lvbiBpcyByZXF1aXJlZCcpO1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQVdTIHJlZ2lvbiBub3QgcHJvdmlkZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBsYXRmb3JtVXJsID0gcHJvY2Vzcy5lbnYuUExBVEZPUk1fQkFTRV9VUkw7XG4gICAgICAgIGlmICghcGxhdGZvcm1VcmwpIHtcbiAgICAgICAgICBwcmludEVycm9yKCdQTEFURk9STV9CQVNFX1VSTCBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyByZXF1aXJlZCcpO1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUExBVEZPUk1fQkFTRV9VUkwgbm90IHNldCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2VjcmV0TmFtZSA9IG9wdGlvbnMuc2VjcmV0TmFtZSB8fCBwcm9jZXNzLmVudi5QTEFURk9STV9TRUNSRVRfTkFNRTtcbiAgICAgICAgaWYgKCFzZWNyZXROYW1lKSB7XG4gICAgICAgICAgcHJpbnRFcnJvcignLS1zZWNyZXQtbmFtZSBvciBQTEFURk9STV9TRUNSRVRfTkFNRSBlbnYgdmFyIGlzIHJlcXVpcmVkJyk7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQbGF0Zm9ybSBzZWNyZXQgbmFtZSBub3QgcHJvdmlkZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByaW50SW5mbygnUGFyYW1ldGVycycsIHtcbiAgICAgICAgICBzdGFjazogU1RBQ0tfTkFNRSxcbiAgICAgICAgICByZWdpb24sXG4gICAgICAgICAgcGxhdGZvcm1VcmwsXG4gICAgICAgICAgc2VjcmV0TmFtZSxcbiAgICAgICAgICBwYWNrYWdlVmVyc2lvbjogb3B0aW9ucy5wYWNrYWdlVmVyc2lvbiB8fCAnbGF0ZXN0JyxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU3RlcCAxOiBEZXBsb3kgQ2xvdWRGb3JtYXRpb24gKGluZnJhIG9ubHkg4oCUIExhbWJkYSBnZXRzIHBsYWNlaG9sZGVyIGNvZGUpXG4gICAgICAgIHByaW50U2VjdGlvbignRGVwbG95IEluZnJhc3RydWN0dXJlJyk7XG5cbiAgICAgICAgY29uc3QgdGVtcGxhdGVQYXRoID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uL3RlbXBsYXRlcy9ldmVudHMtc3RhY2suanNvbicpO1xuXG4gICAgICAgIGNvbnN0IGNmbkFyZ3MgPSBbXG4gICAgICAgICAgJ2Nsb3VkZm9ybWF0aW9uJywgJ2RlcGxveScsXG4gICAgICAgICAgJy0tc3RhY2stbmFtZScsIFNUQUNLX05BTUUsXG4gICAgICAgICAgJy0tdGVtcGxhdGUtZmlsZScsIHRlbXBsYXRlUGF0aCxcbiAgICAgICAgICAnLS1wYXJhbWV0ZXItb3ZlcnJpZGVzJyxcbiAgICAgICAgICBgUGxhdGZvcm1CYXNlVXJsPSR7cGxhdGZvcm1Vcmx9YCxcbiAgICAgICAgICBgUGxhdGZvcm1TZWNyZXROYW1lPSR7c2VjcmV0TmFtZX1gLFxuICAgICAgICAgICctLWNhcGFiaWxpdGllcycsICdDQVBBQklMSVRZX05BTUVEX0lBTScsXG4gICAgICAgICAgJy0tbm8tZmFpbC1vbi1lbXB0eS1jaGFuZ2VzZXQnLFxuICAgICAgICAgICctLXJlZ2lvbicsIHJlZ2lvbixcbiAgICAgICAgXTtcbiAgICAgICAgaWYgKG9wdGlvbnMucHJvZmlsZSkgY2ZuQXJncy5wdXNoKCctLXByb2ZpbGUnLCBvcHRpb25zLnByb2ZpbGUpO1xuXG4gICAgICAgIGV4ZWNGaWxlU3luYygnYXdzJywgY2ZuQXJncywgeyBzdGRpbzogJ2luaGVyaXQnIH0pO1xuXG4gICAgICAgIHByaW50U3VjY2VzcygnSW5mcmFzdHJ1Y3R1cmUgZGVwbG95ZWQnKTtcblxuICAgICAgICAvLyBTdGVwIDI6IERvd25sb2FkIGhhbmRsZXIgZnJvbSByZWdpc3RyeSBhbmQgdXBsb2FkIHRvIExhbWJkYVxuICAgICAgICBwcmludFNlY3Rpb24oJ0RlcGxveSBMYW1iZGEgQ29kZScpO1xuXG4gICAgICAgIGNvbnN0IHRtcERpciA9IGZzLm1rZHRlbXBTeW5jKHBhdGguam9pbihvcy50bXBkaXIoKSwgJ2V2ZW50LWluZ2VzdGlvbi0nKSk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCB2ZXJzaW9uU3BlYyA9IG9wdGlvbnMucGFja2FnZVZlcnNpb24gPyBgJHtQQUNLQUdFX05BTUV9QCR7b3B0aW9ucy5wYWNrYWdlVmVyc2lvbn1gIDogUEFDS0FHRV9OQU1FO1xuICAgICAgICAgIHByaW50SW5mbygnSW5zdGFsbGluZyBmcm9tIHJlZ2lzdHJ5JywgeyBwYWNrYWdlOiB2ZXJzaW9uU3BlYyB9KTtcblxuICAgICAgICAgIGV4ZWNGaWxlU3luYygnbnBtJywgWydpbnN0YWxsJywgJy0tcHJlZml4JywgdG1wRGlyLCB2ZXJzaW9uU3BlY10sIHsgc3RkaW86ICdwaXBlJyB9KTtcblxuICAgICAgICAgIGNvbnN0IGhhbmRsZXJTcmMgPSBwYXRoLmpvaW4odG1wRGlyLCAnbm9kZV9tb2R1bGVzJywgUEFDS0FHRV9OQU1FLCAnbGliJywgJ2luZGV4LmpzJyk7XG4gICAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKGhhbmRsZXJTcmMpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEhhbmRsZXIgbm90IGZvdW5kIGF0ICR7aGFuZGxlclNyY30uIEVuc3VyZSB0aGUgcGFja2FnZSBpcyBwdWJsaXNoZWQuYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gR2V0IHZlcnNpb24gZnJvbSBpbnN0YWxsZWQgcGFja2FnZVxuICAgICAgICAgIGNvbnN0IHBrZ0pzb25QYXRoID0gcGF0aC5qb2luKHRtcERpciwgJ25vZGVfbW9kdWxlcycsIFBBQ0tBR0VfTkFNRSwgJ3BhY2thZ2UuanNvbicpO1xuICAgICAgICAgIGNvbnN0IHBrZ0pzb24gPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhwa2dKc29uUGF0aCwgJ3V0Zi04JykpO1xuICAgICAgICAgIGNvbnN0IHZlcnNpb24gPSBwa2dKc29uLnZlcnNpb24gfHwgJ3Vua25vd24nO1xuXG4gICAgICAgICAgLy8gWklQIHRoZSBoYW5kbGVyXG4gICAgICAgICAgY29uc3QgemlwUGF0aCA9IHBhdGguam9pbih0bXBEaXIsICdpbmRleC56aXAnKTtcbiAgICAgICAgICBleGVjRmlsZVN5bmMoJ3ppcCcsIFsnLWonLCB6aXBQYXRoLCAnaW5kZXguanMnXSwgeyBjd2Q6IHBhdGguZGlybmFtZShoYW5kbGVyU3JjKSwgc3RkaW86ICdwaXBlJyB9KTtcblxuICAgICAgICAgIC8vIFVwbG9hZCBkaXJlY3RseSB0byBMYW1iZGEgdmlhIFNESyAobm8gUzMgbmVlZGVkKVxuICAgICAgICAgIHByaW50SW5mbygnVXBsb2FkaW5nIGNvZGUgdG8gTGFtYmRhJywgeyBmdW5jdGlvbjogTEFNQkRBX05BTUUsIHZlcnNpb24gfSk7XG5cbiAgICAgICAgICBjb25zdCBsYW1iZGFDbGllbnQgPSBuZXcgTGFtYmRhQ2xpZW50KHsgcmVnaW9uIH0pO1xuICAgICAgICAgIGF3YWl0IGxhbWJkYUNsaWVudC5zZW5kKG5ldyBVcGRhdGVGdW5jdGlvbkNvZGVDb21tYW5kKHtcbiAgICAgICAgICAgIEZ1bmN0aW9uTmFtZTogTEFNQkRBX05BTUUsXG4gICAgICAgICAgICBaaXBGaWxlOiBmcy5yZWFkRmlsZVN5bmMoemlwUGF0aCksXG4gICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgcHJpbnRTdWNjZXNzKGBMYW1iZGEgY29kZSBkZXBsb3llZCAoJHtQQUNLQUdFX05BTUV9QCR7dmVyc2lvbn0pYCk7XG5cbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBmcy5ybVN5bmModG1wRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTdGVwIDM6IFNob3cgb3V0cHV0cyB2aWEgU0RLXG4gICAgICAgIGNvbnN0IGNmbkNsaWVudCA9IG5ldyBDbG91ZEZvcm1hdGlvbkNsaWVudCh7IHJlZ2lvbiB9KTtcbiAgICAgICAgY29uc3QgZGVzY3JpYmVSZXN1bHQgPSBhd2FpdCBjZm5DbGllbnQuc2VuZChuZXcgRGVzY3JpYmVTdGFja3NDb21tYW5kKHsgU3RhY2tOYW1lOiBTVEFDS19OQU1FIH0pKTtcbiAgICAgICAgY29uc3Qgb3V0cHV0cyA9IGRlc2NyaWJlUmVzdWx0LlN0YWNrcz8uWzBdPy5PdXRwdXRzID8/IFtdO1xuICAgICAgICBjb25zdCBvdXRwdXRNYXAgPSBPYmplY3QuZnJvbUVudHJpZXMob3V0cHV0cy5tYXAobyA9PiBbby5PdXRwdXRLZXkgPz8gJycsIG8uT3V0cHV0VmFsdWUgPz8gJyddKSk7XG5cbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBwcmludFNlY3Rpb24oJ0V2ZW50IEluZ2VzdGlvbiBSZWFkeScpO1xuXG4gICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICdTdGFjayc6IFNUQUNLX05BTUUsXG4gICAgICAgICAgJ1JlZ2lvbic6IHJlZ2lvbixcbiAgICAgICAgICAnUGxhdGZvcm0gVVJMJzogcGxhdGZvcm1VcmwsXG4gICAgICAgICAgJ0xhbWJkYSc6IG91dHB1dE1hcC5MYW1iZGFGdW5jdGlvbkFybiB8fCBMQU1CREFfTkFNRSxcbiAgICAgICAgICAnRXZlbnQgUXVldWUnOiBvdXRwdXRNYXAuRXZlbnRRdWV1ZVVybCB8fCAnKHNlZSBBV1MgY29uc29sZSknLFxuICAgICAgICAgICdEZWFkIExldHRlciBRdWV1ZSc6IG91dHB1dE1hcC5EZWFkTGV0dGVyUXVldWVVcmwgfHwgJyhzZWUgQVdTIGNvbnNvbGUpJyxcbiAgICAgICAgICAnRXZlbnRCcmlkZ2UgUnVsZSc6IG91dHB1dE1hcC5FdmVudFJ1bGVOYW1lIHx8ICcoc2VlIEFXUyBjb25zb2xlKScsXG4gICAgICAgICAgJ1N0YXR1cyc6ICfinJMgRGVwbG95ZWQnLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50U3VjY2VzcygnRXZlbnRCcmlkZ2UgZXZlbnQgaW5nZXN0aW9uIGlzIGFjdGl2ZS4nKTtcblxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkFQSV9SRVFVRVNULCB7XG4gICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgIGV4aXQ6IHRydWUsXG4gICAgICAgICAgY29udGV4dDogeyBjb21tYW5kOiAnc2V0dXAtZXZlbnRzJywgZXhlY3V0aW9uSWQsIHN0YWNrOiBTVEFDS19OQU1FIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xufVxuIl19
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXAtZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL3NldHVwLWV2ZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN6QyxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0YsT0FBTyxFQUFFLFlBQVksRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTVHLDBEQUEwRDtBQUMxRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFFL0QsTUFBTSxVQUFVLEdBQUcseUJBQXlCLENBQUM7QUFDN0MscUZBQXFGO0FBQ3JGLE1BQU0sV0FBVyxHQUFHLGtDQUFrQyxDQUFDO0FBQ3ZELE1BQU0sWUFBWSxHQUFHLG1DQUFtQyxDQUFDO0FBRXpEOzs7Ozs7Ozs7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LFNBQVMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFakcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoQixZQUFZLENBQUMsdUJBQXVCLENBQUMsQ0FBQztZQUV0QyxhQUFhLENBQUM7Z0JBQ1osT0FBTyxFQUFFLFVBQVU7Z0JBQ25CLFFBQVEsRUFBRSxNQUFNO2dCQUNoQixjQUFjLEVBQUUsV0FBVztnQkFDM0IsUUFBUSxFQUFFLFNBQVMsQ0FBQyxpQkFBaUIsSUFBSSxXQUFXO2dCQUNwRCxhQUFhLEVBQUUsU0FBUyxDQUFDLGFBQWEsSUFBSSxtQkFBbUI7Z0JBQzdELG1CQUFtQixFQUFFLFNBQVMsQ0FBQyxrQkFBa0IsSUFBSSxtQkFBbUI7Z0JBQ3hFLGtCQUFrQixFQUFFLFNBQVMsQ0FBQyxhQUFhLElBQUksbUJBQW1CO2dCQUNsRSxRQUFRLEVBQUUsWUFBWTthQUN2QixDQUFDLENBQUM7WUFFSCxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hCLFlBQVksQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1FBRXpELENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsV0FBVyxFQUFFO2dCQUMxQyxLQUFLLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUs7Z0JBQzNCLElBQUksRUFBRSxJQUFJO2dCQUNWLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7YUFDckUsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBleGVjRmlsZVN5bmMgfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tICdub2RlOnVybCc7XG5pbXBvcnQgKiBhcyBvcyBmcm9tICdvcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IENsb3VkRm9ybWF0aW9uQ2xpZW50LCBEZXNjcmliZVN0YWNrc0NvbW1hbmQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHsgTGFtYmRhQ2xpZW50LCBVcGRhdGVGdW5jdGlvbkNvZGVDb21tYW5kIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWxhbWJkYSc7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCB7IHByaW50Q29tbWFuZEhlYWRlciB9IGZyb20gJy4uL3V0aWxzL2NvbW1hbmQtdXRpbHMuanMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vdXRpbHMvZXJyb3ItaGFuZGxlci5qcyc7XG5pbXBvcnQgeyBwcmludEVycm9yLCBwcmludEluZm8sIHByaW50S2V5VmFsdWUsIHByaW50U2VjdGlvbiwgcHJpbnRTdWNjZXNzIH0gZnJvbSAnLi4vdXRpbHMvb3V0cHV0LXV0aWxzLmpzJztcblxuLy8gRVNNIGhhcyBubyBfX2Rpcm5hbWU7IGRlcml2ZSBpdCBmcm9tIHRoaXMgbW9kdWxlJ3MgVVJMLlxuY29uc3QgX19kaXJuYW1lID0gcGF0aC5kaXJuYW1lKGZpbGVVUkxUb1BhdGgoaW1wb3J0Lm1ldGEudXJsKSk7XG5cbmNvbnN0IFNUQUNLX05BTUUgPSAncGlwZWxpbmUtYnVpbGRlci1ldmVudHMnO1xuLy8gRXhpc3RpbmcgQ0ZOLW1hbmFnZWQgTGFtYmRhIGZ1bmN0aW9uIG5hbWUg4oCUIGRvIE5PVCByZW5hbWUgd2l0aG91dCBhIG1pZ3JhdGlvbiBwbGFuXG5jb25zdCBMQU1CREFfTkFNRSA9ICdwaXBlbGluZS1idWlsZGVyLWV2ZW50LWluZ2VzdGlvbic7XG5jb25zdCBQQUNLQUdFX05BTUUgPSAnQHBpcGVsaW5lLWJ1aWxkZXIvcGlwZWxpbmUtZXZlbnRzJztcblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIGBzZXR1cC1ldmVudHNgIGNvbW1hbmQgd2l0aCB0aGUgQ0xJIHByb2dyYW0uXG4gKlxuICogRGVwbG95cyBFdmVudEJyaWRnZSDihpIgU1FTIOKGkiBMYW1iZGEgaW5mcmFzdHJ1Y3R1cmUgZm9yIHBpcGVsaW5lIHJlcG9ydGluZy5cbiAqXG4gKiAxLiBEZXBsb3lzIENsb3VkRm9ybWF0aW9uIHN0YWNrIChydWxlICsgcXVldWUgKyBMYW1iZGEgc2hlbGwgKyBJQU0pXG4gKiAyLiBEb3dubG9hZHMgQHBpcGVsaW5lLWJ1aWxkZXIvcGlwZWxpbmUtZXZlbnRzIGZyb20gbnBtIHJlZ2lzdHJ5XG4gKiAzLiBVcGxvYWRzIGhhbmRsZXIgY29kZSBkaXJlY3RseSB0byBMYW1iZGEgKG5vIFMzIG5lZWRlZClcbiAqXG4gKiBVc2VzIFBMQVRGT1JNX0JBU0VfVVJMIGZyb20gZW52aXJvbm1lbnQgKHNhbWUgYXMgYWxsIG90aGVyIGNvbW1hbmRzKS5cbiAqIElkZW1wb3RlbnQg4oCUIHJ1bm5pbmcgYWdhaW4gdXBkYXRlcyB0aGUgc3RhY2sgYW5kIGNvZGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXR1cEV2ZW50cyhwcm9ncmFtOiBDb21tYW5kKTogdm9pZCB7XG4gIHByb2dyYW1cbiAgICAuY29tbWFuZCgnc2V0dXAtZXZlbnRzJylcbiAgICAuZGVzY3JpcHRpb24oJ0RlcGxveSBFdmVudEJyaWRnZSBldmVudCBpbmdlc3Rpb24gaW5mcmFzdHJ1Y3R1cmUgZm9yIHBpcGVsaW5lIHJlcG9ydGluZycpXG4gICAgLm9wdGlvbignLS1wYWNrYWdlLXZlcnNpb24gPHZlcnNpb24+JywgJ3BpcGVsaW5lLWV2ZW50cyBwYWNrYWdlIHZlcnNpb24gKGRlZmF1bHQ6IGxhdGVzdCknKVxuICAgIC5vcHRpb24oJy0tc2VjcmV0LW5hbWUgPG5hbWU+JywgJ1BsYXRmb3JtIHNlY3JldCBuYW1lIChlLmcuIHBpcGVsaW5lLWJ1aWxkZXIve29yZ0lkfS9wbGF0Zm9ybSknKVxuICAgIC5vcHRpb24oJy0tcmVnaW9uIDxyZWdpb24+JywgJ0FXUyByZWdpb24nKVxuICAgIC5vcHRpb24oJy0tcHJvZmlsZSA8cHJvZmlsZT4nLCAnQVdTIENMSSBwcm9maWxlJywgJ2RlZmF1bHQnKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IGV4ZWN1dGlvbklkID0gcHJpbnRDb21tYW5kSGVhZGVyKCdTZXR1cCBFdmVudCBJbmdlc3Rpb24nKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVnaW9uID0gb3B0aW9ucy5yZWdpb24gfHwgcHJvY2Vzcy5lbnYuQVdTX1JFR0lPTiB8fCBwcm9jZXNzLmVudi5DREtfREVGQVVMVF9SRUdJT047XG4gICAgICAgIGlmICghcmVnaW9uKSB7XG4gICAgICAgICAgcHJpbnRFcnJvcignQVdTIHJlZ2lvbiBpcyByZXF1aXJlZCcpO1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQVdTIHJlZ2lvbiBub3QgcHJvdmlkZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBsYXRmb3JtVXJsID0gcHJvY2Vzcy5lbnYuUExBVEZPUk1fQkFTRV9VUkw7XG4gICAgICAgIGlmICghcGxhdGZvcm1VcmwpIHtcbiAgICAgICAgICBwcmludEVycm9yKCdQTEFURk9STV9CQVNFX1VSTCBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyByZXF1aXJlZCcpO1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUExBVEZPUk1fQkFTRV9VUkwgbm90IHNldCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2VjcmV0TmFtZSA9IG9wdGlvbnMuc2VjcmV0TmFtZSB8fCBwcm9jZXNzLmVudi5QTEFURk9STV9TRUNSRVRfTkFNRTtcbiAgICAgICAgaWYgKCFzZWNyZXROYW1lKSB7XG4gICAgICAgICAgcHJpbnRFcnJvcignLS1zZWNyZXQtbmFtZSBvciBQTEFURk9STV9TRUNSRVRfTkFNRSBlbnYgdmFyIGlzIHJlcXVpcmVkJyk7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQbGF0Zm9ybSBzZWNyZXQgbmFtZSBub3QgcHJvdmlkZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByaW50SW5mbygnUGFyYW1ldGVycycsIHtcbiAgICAgICAgICBzdGFjazogU1RBQ0tfTkFNRSxcbiAgICAgICAgICByZWdpb24sXG4gICAgICAgICAgcGxhdGZvcm1VcmwsXG4gICAgICAgICAgc2VjcmV0TmFtZSxcbiAgICAgICAgICBwYWNrYWdlVmVyc2lvbjogb3B0aW9ucy5wYWNrYWdlVmVyc2lvbiB8fCAnbGF0ZXN0JyxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU3RlcCAxOiBEZXBsb3kgQ2xvdWRGb3JtYXRpb24gKGluZnJhIG9ubHkg4oCUIExhbWJkYSBnZXRzIHBsYWNlaG9sZGVyIGNvZGUpXG4gICAgICAgIHByaW50U2VjdGlvbignRGVwbG95IEluZnJhc3RydWN0dXJlJyk7XG5cbiAgICAgICAgY29uc3QgdGVtcGxhdGVQYXRoID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uL3RlbXBsYXRlcy9ldmVudHMtc3RhY2suanNvbicpO1xuXG4gICAgICAgIGNvbnN0IGNmbkFyZ3MgPSBbXG4gICAgICAgICAgJ2Nsb3VkZm9ybWF0aW9uJywgJ2RlcGxveScsXG4gICAgICAgICAgJy0tc3RhY2stbmFtZScsIFNUQUNLX05BTUUsXG4gICAgICAgICAgJy0tdGVtcGxhdGUtZmlsZScsIHRlbXBsYXRlUGF0aCxcbiAgICAgICAgICAnLS1wYXJhbWV0ZXItb3ZlcnJpZGVzJyxcbiAgICAgICAgICBgUGxhdGZvcm1CYXNlVXJsPSR7cGxhdGZvcm1Vcmx9YCxcbiAgICAgICAgICBgUGxhdGZvcm1TZWNyZXROYW1lPSR7c2VjcmV0TmFtZX1gLFxuICAgICAgICAgICctLWNhcGFiaWxpdGllcycsICdDQVBBQklMSVRZX05BTUVEX0lBTScsXG4gICAgICAgICAgJy0tbm8tZmFpbC1vbi1lbXB0eS1jaGFuZ2VzZXQnLFxuICAgICAgICAgICctLXJlZ2lvbicsIHJlZ2lvbixcbiAgICAgICAgXTtcbiAgICAgICAgaWYgKG9wdGlvbnMucHJvZmlsZSkgY2ZuQXJncy5wdXNoKCctLXByb2ZpbGUnLCBvcHRpb25zLnByb2ZpbGUpO1xuXG4gICAgICAgIGV4ZWNGaWxlU3luYygnYXdzJywgY2ZuQXJncywgeyBzdGRpbzogJ2luaGVyaXQnIH0pO1xuXG4gICAgICAgIHByaW50U3VjY2VzcygnSW5mcmFzdHJ1Y3R1cmUgZGVwbG95ZWQnKTtcblxuICAgICAgICAvLyBTdGVwIDI6IERvd25sb2FkIGhhbmRsZXIgZnJvbSByZWdpc3RyeSBhbmQgdXBsb2FkIHRvIExhbWJkYVxuICAgICAgICBwcmludFNlY3Rpb24oJ0RlcGxveSBMYW1iZGEgQ29kZScpO1xuXG4gICAgICAgIGNvbnN0IHRtcERpciA9IGZzLm1rZHRlbXBTeW5jKHBhdGguam9pbihvcy50bXBkaXIoKSwgJ2V2ZW50LWluZ2VzdGlvbi0nKSk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCB2ZXJzaW9uU3BlYyA9IG9wdGlvbnMucGFja2FnZVZlcnNpb24gPyBgJHtQQUNLQUdFX05BTUV9QCR7b3B0aW9ucy5wYWNrYWdlVmVyc2lvbn1gIDogUEFDS0FHRV9OQU1FO1xuICAgICAgICAgIHByaW50SW5mbygnSW5zdGFsbGluZyBmcm9tIHJlZ2lzdHJ5JywgeyBwYWNrYWdlOiB2ZXJzaW9uU3BlYyB9KTtcblxuICAgICAgICAgIGV4ZWNGaWxlU3luYygnbnBtJywgWydpbnN0YWxsJywgJy0tcHJlZml4JywgdG1wRGlyLCB2ZXJzaW9uU3BlY10sIHsgc3RkaW86ICdwaXBlJyB9KTtcblxuICAgICAgICAgIGNvbnN0IGhhbmRsZXJTcmMgPSBwYXRoLmpvaW4odG1wRGlyLCAnbm9kZV9tb2R1bGVzJywgUEFDS0FHRV9OQU1FLCAnbGliJywgJ2luZGV4LmpzJyk7XG4gICAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKGhhbmRsZXJTcmMpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEhhbmRsZXIgbm90IGZvdW5kIGF0ICR7aGFuZGxlclNyY30uIEVuc3VyZSB0aGUgcGFja2FnZSBpcyBwdWJsaXNoZWQuYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gR2V0IHZlcnNpb24gZnJvbSBpbnN0YWxsZWQgcGFja2FnZVxuICAgICAgICAgIGNvbnN0IHBrZ0pzb25QYXRoID0gcGF0aC5qb2luKHRtcERpciwgJ25vZGVfbW9kdWxlcycsIFBBQ0tBR0VfTkFNRSwgJ3BhY2thZ2UuanNvbicpO1xuICAgICAgICAgIGNvbnN0IHBrZ0pzb24gPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhwa2dKc29uUGF0aCwgJ3V0Zi04JykpO1xuICAgICAgICAgIGNvbnN0IHZlcnNpb24gPSBwa2dKc29uLnZlcnNpb24gfHwgJ3Vua25vd24nO1xuXG4gICAgICAgICAgLy8gWklQIHRoZSBoYW5kbGVyXG4gICAgICAgICAgY29uc3QgemlwUGF0aCA9IHBhdGguam9pbih0bXBEaXIsICdpbmRleC56aXAnKTtcbiAgICAgICAgICBleGVjRmlsZVN5bmMoJ3ppcCcsIFsnLWonLCB6aXBQYXRoLCAnaW5kZXguanMnXSwgeyBjd2Q6IHBhdGguZGlybmFtZShoYW5kbGVyU3JjKSwgc3RkaW86ICdwaXBlJyB9KTtcblxuICAgICAgICAgIC8vIFVwbG9hZCBkaXJlY3RseSB0byBMYW1iZGEgdmlhIFNESyAobm8gUzMgbmVlZGVkKVxuICAgICAgICAgIHByaW50SW5mbygnVXBsb2FkaW5nIGNvZGUgdG8gTGFtYmRhJywgeyBmdW5jdGlvbjogTEFNQkRBX05BTUUsIHZlcnNpb24gfSk7XG5cbiAgICAgICAgICBjb25zdCBsYW1iZGFDbGllbnQgPSBuZXcgTGFtYmRhQ2xpZW50KHsgcmVnaW9uIH0pO1xuICAgICAgICAgIGF3YWl0IGxhbWJkYUNsaWVudC5zZW5kKG5ldyBVcGRhdGVGdW5jdGlvbkNvZGVDb21tYW5kKHtcbiAgICAgICAgICAgIEZ1bmN0aW9uTmFtZTogTEFNQkRBX05BTUUsXG4gICAgICAgICAgICBaaXBGaWxlOiBmcy5yZWFkRmlsZVN5bmMoemlwUGF0aCksXG4gICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgcHJpbnRTdWNjZXNzKGBMYW1iZGEgY29kZSBkZXBsb3llZCAoJHtQQUNLQUdFX05BTUV9QCR7dmVyc2lvbn0pYCk7XG5cbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBmcy5ybVN5bmModG1wRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTdGVwIDM6IFNob3cgb3V0cHV0cyB2aWEgU0RLXG4gICAgICAgIGNvbnN0IGNmbkNsaWVudCA9IG5ldyBDbG91ZEZvcm1hdGlvbkNsaWVudCh7IHJlZ2lvbiB9KTtcbiAgICAgICAgY29uc3QgZGVzY3JpYmVSZXN1bHQgPSBhd2FpdCBjZm5DbGllbnQuc2VuZChuZXcgRGVzY3JpYmVTdGFja3NDb21tYW5kKHsgU3RhY2tOYW1lOiBTVEFDS19OQU1FIH0pKTtcbiAgICAgICAgY29uc3Qgb3V0cHV0cyA9IGRlc2NyaWJlUmVzdWx0LlN0YWNrcz8uWzBdPy5PdXRwdXRzID8/IFtdO1xuICAgICAgICBjb25zdCBvdXRwdXRNYXAgPSBPYmplY3QuZnJvbUVudHJpZXMob3V0cHV0cy5tYXAobyA9PiBbby5PdXRwdXRLZXkgPz8gJycsIG8uT3V0cHV0VmFsdWUgPz8gJyddKSk7XG5cbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBwcmludFNlY3Rpb24oJ0V2ZW50IEluZ2VzdGlvbiBSZWFkeScpO1xuXG4gICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICdTdGFjayc6IFNUQUNLX05BTUUsXG4gICAgICAgICAgJ1JlZ2lvbic6IHJlZ2lvbixcbiAgICAgICAgICAnUGxhdGZvcm0gVVJMJzogcGxhdGZvcm1VcmwsXG4gICAgICAgICAgJ0xhbWJkYSc6IG91dHB1dE1hcC5MYW1iZGFGdW5jdGlvbkFybiB8fCBMQU1CREFfTkFNRSxcbiAgICAgICAgICAnRXZlbnQgUXVldWUnOiBvdXRwdXRNYXAuRXZlbnRRdWV1ZVVybCB8fCAnKHNlZSBBV1MgY29uc29sZSknLFxuICAgICAgICAgICdEZWFkIExldHRlciBRdWV1ZSc6IG91dHB1dE1hcC5EZWFkTGV0dGVyUXVldWVVcmwgfHwgJyhzZWUgQVdTIGNvbnNvbGUpJyxcbiAgICAgICAgICAnRXZlbnRCcmlkZ2UgUnVsZSc6IG91dHB1dE1hcC5FdmVudFJ1bGVOYW1lIHx8ICcoc2VlIEFXUyBjb25zb2xlKScsXG4gICAgICAgICAgJ1N0YXR1cyc6ICfinJMgRGVwbG95ZWQnLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50U3VjY2VzcygnRXZlbnRCcmlkZ2UgZXZlbnQgaW5nZXN0aW9uIGlzIGFjdGl2ZS4nKTtcblxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkFQSV9SRVFVRVNULCB7XG4gICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgIGV4aXQ6IHRydWUsXG4gICAgICAgICAgY29udGV4dDogeyBjb21tYW5kOiAnc2V0dXAtZXZlbnRzJywgZXhlY3V0aW9uSWQsIHN0YWNrOiBTVEFDS19OQU1FIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xufVxuIl19
|
package/dist/commands/status.js
CHANGED
|
@@ -1,18 +1,13 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// Copyright 2026 Pipeline Builder Contributors
|
|
3
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
};
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const cdk_utils_1 = require("../utils/cdk-utils");
|
|
13
|
-
const command_utils_1 = require("../utils/command-utils");
|
|
14
|
-
const error_handler_1 = require("../utils/error-handler");
|
|
15
|
-
const output_utils_1 = require("../utils/output-utils");
|
|
3
|
+
import https from 'https';
|
|
4
|
+
import axios from 'axios';
|
|
5
|
+
import { Command } from 'commander';
|
|
6
|
+
import { ENV_VARS, TIMEOUTS } from '../config/cli.constants.js';
|
|
7
|
+
import { checkCdkAvailable } from '../utils/cdk-utils.js';
|
|
8
|
+
import { printCommandHeader } from '../utils/command-utils.js';
|
|
9
|
+
import { ERROR_CODES, handleError } from '../utils/error-handler.js';
|
|
10
|
+
import { printKeyValue, printSection } from '../utils/output-utils.js';
|
|
16
11
|
/**
|
|
17
12
|
* Registers the `status` command with the CLI program.
|
|
18
13
|
*
|
|
@@ -21,30 +16,30 @@ const output_utils_1 = require("../utils/output-utils");
|
|
|
21
16
|
*
|
|
22
17
|
* @param program - The root Commander program instance to attach the command to.
|
|
23
18
|
*/
|
|
24
|
-
function status(program) {
|
|
19
|
+
export function status(program) {
|
|
25
20
|
program
|
|
26
21
|
.command('status')
|
|
27
22
|
.description('Show environment and connectivity status')
|
|
28
23
|
.option('--json', 'Output result as JSON', false)
|
|
29
24
|
.action(async (options) => {
|
|
30
|
-
const executionId =
|
|
25
|
+
const executionId = printCommandHeader('Status');
|
|
31
26
|
try {
|
|
32
27
|
const results = {};
|
|
33
28
|
// 1. Check PLATFORM_TOKEN
|
|
34
|
-
const token = process.env[
|
|
29
|
+
const token = process.env[ENV_VARS.PLATFORM_TOKEN];
|
|
35
30
|
results.PLATFORM_TOKEN = token ? 'set' : 'not set';
|
|
36
31
|
// 2. Check PLATFORM_SECRET_NAME
|
|
37
32
|
const secretName = process.env.PLATFORM_SECRET_NAME;
|
|
38
33
|
results.PLATFORM_SECRET_NAME = secretName || 'not set';
|
|
39
34
|
// 3. Check CDK availability
|
|
40
|
-
results['CDK Available'] =
|
|
35
|
+
results['CDK Available'] = checkCdkAvailable() ? 'yes' : 'no';
|
|
41
36
|
// 4. Check platform health
|
|
42
|
-
const baseUrl = process.env[
|
|
37
|
+
const baseUrl = process.env[ENV_VARS.PLATFORM_BASE_URL] || 'https://localhost:8443';
|
|
43
38
|
results.PLATFORM_BASE_URL = baseUrl;
|
|
44
39
|
try {
|
|
45
|
-
const httpsAgent = new
|
|
46
|
-
await
|
|
47
|
-
timeout:
|
|
40
|
+
const httpsAgent = new https.Agent({ rejectUnauthorized: false });
|
|
41
|
+
await axios.get(`${baseUrl}/health`, {
|
|
42
|
+
timeout: TIMEOUTS.HEALTH_CHECK,
|
|
48
43
|
httpsAgent,
|
|
49
44
|
});
|
|
50
45
|
results['Platform Health'] = 'reachable';
|
|
@@ -73,12 +68,12 @@ function status(program) {
|
|
|
73
68
|
console.log(JSON.stringify({ success: true, executionId, ...results }, null, 2));
|
|
74
69
|
}
|
|
75
70
|
else {
|
|
76
|
-
|
|
77
|
-
|
|
71
|
+
printSection('Environment Status');
|
|
72
|
+
printKeyValue(results);
|
|
78
73
|
}
|
|
79
74
|
}
|
|
80
75
|
catch (error) {
|
|
81
|
-
|
|
76
|
+
handleError(error, ERROR_CODES.GENERAL, {
|
|
82
77
|
debug: program.opts().debug,
|
|
83
78
|
exit: true,
|
|
84
79
|
context: { command: 'status', executionId },
|
|
@@ -86,4 +81,4 @@ function status(program) {
|
|
|
86
81
|
}
|
|
87
82
|
});
|
|
88
83
|
}
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL3N0YXR1cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV2RTs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLE1BQU0sQ0FBQyxPQUFnQjtJQUNyQyxPQUFPO1NBQ0osT0FBTyxDQUFDLFFBQVEsQ0FBQztTQUNqQixXQUFXLENBQUMsMENBQTBDLENBQUM7U0FDdkQsTUFBTSxDQUFDLFFBQVEsRUFBRSx1QkFBdUIsRUFBRSxLQUFLLENBQUM7U0FDaEQsTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUN4QixNQUFNLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVqRCxJQUFJLENBQUM7WUFDSCxNQUFNLE9BQU8sR0FBMkIsRUFBRSxDQUFDO1lBRTNDLDBCQUEwQjtZQUMxQixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNuRCxPQUFPLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FB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Z0JBQ3RDLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSztnQkFDM0IsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUU7YUFDNUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgaHR0cHMgZnJvbSAnaHR0cHMnO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHsgRU5WX1ZBUlMsIFRJTUVPVVRTIH0gZnJvbSAnLi4vY29uZmlnL2NsaS5jb25zdGFudHMuanMnO1xuaW1wb3J0IHsgY2hlY2tDZGtBdmFpbGFibGUgfSBmcm9tICcuLi91dGlscy9jZGstdXRpbHMuanMnO1xuaW1wb3J0IHsgcHJpbnRDb21tYW5kSGVhZGVyIH0gZnJvbSAnLi4vdXRpbHMvY29tbWFuZC11dGlscy5qcyc7XG5pbXBvcnQgeyBFUlJPUl9DT0RFUywgaGFuZGxlRXJyb3IgfSBmcm9tICcuLi91dGlscy9lcnJvci1oYW5kbGVyLmpzJztcbmltcG9ydCB7IHByaW50S2V5VmFsdWUsIHByaW50U2VjdGlvbiB9IGZyb20gJy4uL3V0aWxzL291dHB1dC11dGlscy5qcyc7XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSBgc3RhdHVzYCBjb21tYW5kIHdpdGggdGhlIENMSSBwcm9ncmFtLlxuICpcbiAqIENoZWNrcyBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIENESyBhdmFpbGFiaWxpdHksIHBsYXRmb3JtIGNvbm5lY3Rpdml0eSxcbiAqIGFuZCB0b2tlbiBleHBpcnkgdG8gZ2l2ZSBhIHF1aWNrIG92ZXJ2aWV3IG9mIHRoZSBjdXJyZW50IHNldHVwLlxuICpcbiAqIEBwYXJhbSBwcm9ncmFtIC0gVGhlIHJvb3QgQ29tbWFuZGVyIHByb2dyYW0gaW5zdGFuY2UgdG8gYXR0YWNoIHRoZSBjb21tYW5kIHRvLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RhdHVzKHByb2dyYW06IENvbW1hbmQpOiB2b2lkIHtcbiAgcHJvZ3JhbVxuICAgIC5jb21tYW5kKCdzdGF0dXMnKVxuICAgIC5kZXNjcmlwdGlvbignU2hvdyBlbnZpcm9ubWVudCBhbmQgY29ubmVjdGl2aXR5IHN0YXR1cycpXG4gICAgLm9wdGlvbignLS1qc29uJywgJ091dHB1dCByZXN1bHQgYXMgSlNPTicsIGZhbHNlKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IGV4ZWN1dGlvbklkID0gcHJpbnRDb21tYW5kSGVhZGVyKCdTdGF0dXMnKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzdWx0czogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG4gICAgICAgIC8vIDEuIENoZWNrIFBMQVRGT1JNX1RPS0VOXG4gICAgICAgIGNvbnN0IHRva2VuID0gcHJvY2Vzcy5lbnZbRU5WX1ZBUlMuUExBVEZPUk1fVE9LRU5dO1xuICAgICAgICByZXN1bHRzLlBMQVRGT1JNX1RPS0VOID0gdG9rZW4gPyAnc2V0JyA6ICdub3Qgc2V0JztcblxuICAgICAgICAvLyAyLiBDaGVjayBQTEFURk9STV9TRUNSRVRfTkFNRVxuICAgICAgICBjb25zdCBzZWNyZXROYW1lID0gcHJvY2Vzcy5lbnYuUExBVEZPUk1fU0VDUkVUX05BTUU7XG4gICAgICAgIHJlc3VsdHMuUExBVEZPUk1fU0VDUkVUX05BTUUgPSBzZWNyZXROYW1lIHx8ICdub3Qgc2V0JztcblxuICAgICAgICAvLyAzLiBDaGVjayBDREsgYXZhaWxhYmlsaXR5XG4gICAgICAgIHJlc3VsdHNbJ0NESyBBdmFpbGFibGUnXSA9IGNoZWNrQ2RrQXZhaWxhYmxlKCkgPyAneWVzJyA6ICdubyc7XG5cbiAgICAgICAgLy8gNC4gQ2hlY2sgcGxhdGZvcm0gaGVhbHRoXG4gICAgICAgIGNvbnN0IGJhc2VVcmwgPSBwcm9jZXNzLmVudltFTlZfVkFSUy5QTEFURk9STV9CQVNFX1VSTF0gfHwgJ2h0dHBzOi8vbG9jYWxob3N0Ojg0NDMnO1xuICAgICAgICByZXN1bHRzLlBMQVRGT1JNX0JBU0VfVVJMID0gYmFzZVVybDtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGh0dHBzQWdlbnQgPSBuZXcgaHR0cHMuQWdlbnQoeyByZWplY3RVbmF1dGhvcml6ZWQ6IGZhbHNlIH0pO1xuICAgICAgICAgIGF3YWl0IGF4aW9zLmdldChgJHtiYXNlVXJsfS9oZWFsdGhgLCB7XG4gICAgICAgICAgICB0aW1lb3V0OiBUSU1FT1VUUy5IRUFMVEhfQ0hFQ0ssXG4gICAgICAgICAgICBodHRwc0FnZW50LFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJlc3VsdHNbJ1BsYXRmb3JtIEhlYWx0aCddID0gJ3JlYWNoYWJsZSc7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIHJlc3VsdHNbJ1BsYXRmb3JtIEhlYWx0aCddID0gJ3VucmVhY2hhYmxlJztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDUuIERlY29kZSB0b2tlbiBleHBpcnlcbiAgICAgICAgaWYgKHRva2VuKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnRzID0gdG9rZW4uc3BsaXQoJy4nKTtcbiAgICAgICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPT09IDMgJiYgcGFydHNbMV0pIHtcbiAgICAgICAgICAgICAgY29uc3QgcGF5bG9hZCA9IEpTT04ucGFyc2UoQnVmZmVyLmZyb20ocGFydHNbMV0sICdiYXNlNjR1cmwnKS50b1N0cmluZygndXRmLTgnKSkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgcGF5bG9hZC5leHAgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwaXJlc0F0ID0gbmV3IERhdGUocGF5bG9hZC5leHAgKiAxMDAwKTtcbiAgICAgICAgICAgICAgICByZXN1bHRzWydUb2tlbiBFeHBpcmVzJ10gPSBleHBpcmVzQXQudG9JU09TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICByZXN1bHRzWydUb2tlbiBFeHBpcmVkJ10gPSBleHBpcmVzQXQuZ2V0VGltZSgpIDwgRGF0ZS5ub3coKSA/ICd5ZXMnIDogJ25vJztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgcmVzdWx0c1snVG9rZW4gRXhwaXJlcyddID0gJ3VuYWJsZSB0byBkZWNvZGUnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLmpzb24pIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeSh7IHN1Y2Nlc3M6IHRydWUsIGV4ZWN1dGlvbklkLCAuLi5yZXN1bHRzIH0sIG51bGwsIDIpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcmludFNlY3Rpb24oJ0Vudmlyb25tZW50IFN0YXR1cycpO1xuICAgICAgICAgIHByaW50S2V5VmFsdWUocmVzdWx0cyk7XG4gICAgICAgIH1cblxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkdFTkVSQUwsIHtcbiAgICAgICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgICAgICBjb250ZXh0OiB7IGNvbW1hbmQ6ICdzdGF0dXMnLCBleGVjdXRpb25JZCB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbn1cbiJdfQ==
|