@pipeline-builder/pipeline-manager 4.5.3 → 4.5.4
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 +61 -37
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +13 -7
- package/dist/commands/audit-stacks.d.ts +42 -1
- package/dist/commands/audit-stacks.d.ts.map +1 -1
- package/dist/commands/audit-stacks.js +104 -23
- package/dist/commands/audit-tokens.d.ts.map +1 -1
- package/dist/commands/audit-tokens.js +3 -4
- package/dist/commands/create-pat.d.ts.map +1 -1
- package/dist/commands/create-pat.js +9 -6
- package/dist/commands/login.d.ts +3 -2
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +19 -10
- package/dist/commands/logout.d.ts +24 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +105 -0
- package/dist/commands/org-export.js +2 -2
- package/dist/commands/pipeline-remove.d.ts +26 -0
- package/dist/commands/pipeline-remove.d.ts.map +1 -0
- package/dist/commands/pipeline-remove.js +84 -0
- package/dist/commands/register.d.ts.map +1 -1
- package/dist/commands/register.js +3 -4
- package/dist/commands/status.d.ts +5 -2
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +65 -25
- package/dist/commands/toolchain.d.ts.map +1 -1
- package/dist/commands/toolchain.js +4 -3
- package/dist/commands/validate-templates.d.ts.map +1 -1
- package/dist/commands/validate-templates.js +4 -5
- package/dist/config/cli.constants.d.ts +8 -0
- package/dist/config/cli.constants.d.ts.map +1 -1
- package/dist/config/cli.constants.js +21 -2
- package/dist/types/plugin.d.ts +0 -6
- package/dist/types/plugin.d.ts.map +1 -1
- package/dist/types/plugin.js +1 -1
- package/dist/utils/command-utils.d.ts +13 -0
- package/dist/utils/command-utils.d.ts.map +1 -1
- package/dist/utils/command-utils.js +31 -17
- package/dist/utils/config-loader.d.ts +2 -1
- package/dist/utils/config-loader.d.ts.map +1 -1
- package/dist/utils/config-loader.js +14 -4
- package/dist/utils/credential-store.d.ts +9 -1
- package/dist/utils/credential-store.d.ts.map +1 -1
- package/dist/utils/credential-store.js +21 -2
- package/dist/utils/error-handler.d.ts +10 -1
- package/dist/utils/error-handler.d.ts.map +1 -1
- package/dist/utils/error-handler.js +20 -8
- package/dist/utils/plugin-resolver.d.ts +0 -2
- package/dist/utils/plugin-resolver.d.ts.map +1 -1
- package/dist/utils/plugin-resolver.js +3 -11
- package/dist/utils/response-utils.d.ts +11 -0
- package/dist/utils/response-utils.d.ts.map +1 -1
- package/dist/utils/response-utils.js +23 -1
- package/dist/utils/toolchain.d.ts +0 -2
- package/dist/utils/toolchain.d.ts.map +1 -1
- package/dist/utils/toolchain.js +4 -5
- package/package.json +4 -4
|
@@ -6,6 +6,7 @@ import pico from 'picocolors';
|
|
|
6
6
|
import { TIMEOUTS } from '../config/cli.constants.js';
|
|
7
7
|
import { assertCredentialTlsAllowed, credentialHttpsAgent, switchOrganization } from '../utils/auth-utils.js';
|
|
8
8
|
import { printCommandHeader, withSslOptions } from '../utils/command-utils.js';
|
|
9
|
+
import { getApiConfig } from '../utils/config-loader.js';
|
|
9
10
|
import { beginDeviceApproval, DeviceAuthError, pollForDeviceToken } from '../utils/device-auth.js';
|
|
10
11
|
import { ERROR_CODES, handleError } from '../utils/error-handler.js';
|
|
11
12
|
import { printDebug, printError, printInfo, printKeyValue, printSuccess } from '../utils/output-utils.js';
|
|
@@ -51,7 +52,7 @@ export function createPat(program) {
|
|
|
51
52
|
.option('--scope <scope>', 'Optional capability scope (least-privilege key)')
|
|
52
53
|
.option('--org <orgId>', 'Bind the key to a specific organization (switches active org)')
|
|
53
54
|
.option('--no-browser', 'Never open a browser — print the verification URL instead')
|
|
54
|
-
.option('--url <url>', 'Platform base URL
|
|
55
|
+
.option('--url <url>', 'Platform base URL (default: PLATFORM_BASE_URL, else the platform you last signed in to, else config.yml)'))
|
|
55
56
|
.option('--quiet', 'Only print the export statement (useful for eval)')
|
|
56
57
|
.action(async (options) => {
|
|
57
58
|
// SECURITY: the poll returns a session AND a step-up token, and the response
|
|
@@ -59,6 +60,8 @@ export function createPat(program) {
|
|
|
59
60
|
// in production. Mirrors the guard in `login`.
|
|
60
61
|
assertCredentialTlsAllowed(options.verifySsl);
|
|
61
62
|
const quiet = options.quiet ?? false;
|
|
63
|
+
// Same base-URL layers as every other command (see `auth login`).
|
|
64
|
+
const url = options.url ?? getApiConfig().api.baseUrl;
|
|
62
65
|
const executionId = printCommandHeader('Create Access Key', 'Create Access Key', { quiet });
|
|
63
66
|
try {
|
|
64
67
|
// Validate name.
|
|
@@ -80,7 +83,7 @@ export function createPat(program) {
|
|
|
80
83
|
const expiresIn = days * 86400;
|
|
81
84
|
const httpsAgent = credentialHttpsAgent(options.verifySsl);
|
|
82
85
|
const timeout = TIMEOUTS.HTTP_REQUEST;
|
|
83
|
-
const transport = { url
|
|
86
|
+
const transport = { url, httpsAgent, timeout };
|
|
84
87
|
// 1) Device sign-in, asking for the step-up the create call needs.
|
|
85
88
|
const code = await beginDeviceApproval(transport, {
|
|
86
89
|
quiet,
|
|
@@ -102,7 +105,7 @@ export function createPat(program) {
|
|
|
102
105
|
if (!quiet)
|
|
103
106
|
printInfo('Switching to organization', { orgId: options.org });
|
|
104
107
|
accessToken = (await switchOrganization({
|
|
105
|
-
url
|
|
108
|
+
url,
|
|
106
109
|
orgId: options.org,
|
|
107
110
|
accessToken,
|
|
108
111
|
httpsAgent,
|
|
@@ -112,7 +115,7 @@ export function createPat(program) {
|
|
|
112
115
|
}
|
|
113
116
|
// 3) Create the access key. The step-up token is short-lived (~60s) and
|
|
114
117
|
// single-use, so it is spent immediately.
|
|
115
|
-
const keyUrl = `${
|
|
118
|
+
const keyUrl = `${url}/api/user/keys`;
|
|
116
119
|
printDebug('POST', { url: keyUrl });
|
|
117
120
|
const keyRes = await axios.post(keyUrl, { name, expiresIn, ...(options.scope ? { scope: options.scope } : {}) }, {
|
|
118
121
|
headers: {
|
|
@@ -170,9 +173,9 @@ export function createPat(program) {
|
|
|
170
173
|
handleError(error, ERROR_CODES.API_REQUEST, {
|
|
171
174
|
debug: program.opts().debug,
|
|
172
175
|
exit: true,
|
|
173
|
-
context: { command: 'create-pat', executionId, url
|
|
176
|
+
context: { command: 'create-pat', executionId, url },
|
|
174
177
|
});
|
|
175
178
|
}
|
|
176
179
|
});
|
|
177
180
|
}
|
|
178
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXBhdC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2NyZWF0ZS1wYXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLElBQUksTUFBTSxZQUFZLENBQUM7QUFDOUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxvQkFBb0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkcsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFHLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXhFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQztBQVlyQyxNQUFNLGdCQUFnQixHQUFHLEdBQUcsQ0FBQztBQUU3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2Qkc7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFDLE9BQWdCO0lBQ3hDLGNBQWMsQ0FBQyxPQUFPO1NBQ25CLE9BQU8sQ0FBQyxLQUFLLENBQUM7U0FDZCxXQUFXLENBQUMsMEVBQTBFLENBQUM7U0FDdkYsY0FBYyxD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QUMsRUFBRSxDQUFDO2lCQUNoQyxDQUFDLENBQUM7Z0JBQ0gsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDM0MsQ0FBQztZQUNELFdBQVcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLFdBQVcsRUFBRTtnQkFDMUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLO2dCQUMzQixJQUFJLEVBQUUsSUFBSTtnQkFDVixPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRTthQUNsRSxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCBwaWNvIGZyb20gJ3BpY29jb2xvcnMnO1xuaW1wb3J0IHsgVElNRU9VVFMgfSBmcm9tICcuLi9jb25maWcvY2xpLmNvbnN0YW50cy5qcyc7XG5pbXBvcnQgeyBhc3NlcnRDcmVkZW50aWFsVGxzQWxsb3dlZCwgY3JlZGVudGlhbEh0dHBzQWdlbnQsIHN3aXRjaE9yZ2FuaXphdGlvbiB9IGZyb20gJy4uL3V0aWxzL2F1dGgtdXRpbHMuanMnO1xuaW1wb3J0IHsgcHJpbnRDb21tYW5kSGVhZGVyLCB3aXRoU3NsT3B0aW9ucyB9IGZyb20gJy4uL3V0aWxzL2NvbW1hbmQtdXRpbHMuanMnO1xuaW1wb3J0IHsgYmVnaW5EZXZpY2VBcHByb3ZhbCwgRGV2aWNlQXV0aEVycm9yLCBwb2xsRm9yRGV2aWNlVG9rZW4gfSBmcm9tICcuLi91dGlscy9kZXZpY2UtYXV0aC5qcyc7XG5pbXBvcnQgeyBFUlJPUl9DT0RFUywgaGFuZGxlRXJyb3IgfSBmcm9tICcuLi91dGlscy9lcnJvci1oYW5kbGVyLmpzJztcbmltcG9ydCB7IHByaW50RGVidWcsIHByaW50RXJyb3IsIHByaW50SW5mbywgcHJpbnRLZXlWYWx1ZSwgcHJpbnRTdWNjZXNzIH0gZnJvbSAnLi4vdXRpbHMvb3V0cHV0LXV0aWxzLmpzJztcbmltcG9ydCB7IHJlcXVlc3RDb3JyZWxhdGlvbkhlYWRlcnMgfSBmcm9tICcuLi91dGlscy9yZXF1ZXN0LWNvbnRleHQuanMnO1xuXG5jb25zdCB7IGJvbGQsIGdyZWVuLCB5ZWxsb3cgfSA9IHBpY287XG5cbi8qKiBDcmVhdGUta2V5IHJlc3BvbnNlIOKAlCB0aGUgcmF3IGtleSBpcyByZXR1cm5lZCBleGFjdGx5IG9uY2UuICovXG5pbnRlcmZhY2UgQ3JlYXRlQWNjZXNzS2V5UmVzcG9uc2Uge1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBkYXRhOiB7XG4gICAgLyoqIFRoZSBvcGFxdWUga2V5IChgcGJfcGF0X+KApmApLiBPbmx5IGl0cyBoYXNoIGlzIHN0b3JlZCBzZXJ2ZXItc2lkZS4gKi9cbiAgICBrZXk6IHN0cmluZztcbiAgICBhY2Nlc3NLZXk6IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nOyBkaXNwbGF5OiBzdHJpbmc7IGV4cGlyZXNBdDogc3RyaW5nOyBzY29wZT86IHN0cmluZyB8IG51bGwgfTtcbiAgfTtcbn1cblxuY29uc3QgTUFYX0VYUElSRVNfREFZUyA9IDM2NTtcblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIGBwYXRgIGNvbW1hbmQgd2l0aCB0aGUgQ0xJIHByb2dyYW0uXG4gKlxuICogTWludHMgYSBuYW1lZCBBQ0NFU1MgS0VZIChgcGJfcGF0X+KApmApIOKAlCBhIGR1cmFibGUsIGluZGl2aWR1YWxseS1yZXZvY2FibGUgQVBJXG4gKiBjcmVkZW50aWFsIOKAlCBmb3IgQ0kvYXV0b21hdGlvbi4gVW5saWtlIGEgc2Vzc2lvbiwgYSBrZXkgaXMgdGhlIHJpZ2h0XG4gKiBsb25nLWxpdmVkIGNyZWRlbnRpYWwgZm9yIHNjcmlwdHMuXG4gKlxuICogVGhlIGtleSBpcyBPUEFRVUU6IGl0IGNhcnJpZXMgbm8gY2xhaW1zLCBhbmQgZWFjaCBzZXJ2aWNlIHRyYWRlcyBpdCBhdFxuICogcGxhdGZvcm0ncyAvYXV0aC90b2tlbi9leGNoYW5nZSBmb3IgYSA1LW1pbnV0ZSB0b2tlbiwgc28gcmV2b2tpbmcgaXQgdGFrZXNcbiAqIGVmZmVjdCBldmVyeXdoZXJlIHdpdGhpbiBmaXZlIG1pbnV0ZXMuXG4gKlxuICogQ3JlYXRpbmcgb25lIGlzIHN0ZXAtdXAgZ2F0ZWQgc2VydmVyLXNpZGUsIHlldCB0aGUgQ0xJIGhvbGRzIG5vIHBhc3N3b3JkOiB0aGVcbiAqIGRldmljZSBmbG93IGFza3MgZm9yIHRoZSBzdGVwLXVwIElOIFRIRSBCUk9XU0VSLCB3aGVyZSB0aGVcbiAqIGFjY291bnQncyByZWFsIGZhY3RvcnMgbGl2ZSwgYW5kIHRoZSBhcHByb3ZlZCBwb2xsIHJldHVybnMgYm90aCB0aGUgc2Vzc2lvblxuICogYW5kIGEgc2hvcnQtbGl2ZWQgc3RlcC11cCB0b2tlbi4gVGhlIGtleSBiaW5kcyB0byB0aGUgdXNlcidzIGFjdGl2ZSBvcmc7IHBhc3NcbiAqIGAtLW9yZ2AgdG8gc3dpdGNoIGZpcnN0ICh3aGljaCBwZXJzaXN0cyBhcyB0aGUgYWN0aXZlIG9yZykuXG4gKlxuICogVGhlIHJhdyBrZXkgaXMgcHJpbnRlZCBPTkNFIOKAlCBvbmx5IGl0cyBoYXNoIGlzIHN0b3JlZCwgc28gaXQgY2FuIG5ldmVyIGJlIHJlYWRcbiAqIGJhY2suIGAtLXF1aWV0YCBwcmludHMgb25seSBgZXhwb3J0IFBMQVRGT1JNX1RPS0VOPeKApmAgc28gaXQgY2FuIGJlIGBldmFsYCdkO1xuICogdGhlIGtleSBpcyBpdHNlbGYgYSB2YWxpZCBCZWFyZXIgY3JlZGVudGlhbC5cbiAqXG4gKiBAcGFyYW0gcHJvZ3JhbSAtIFRoZSByb290IENvbW1hbmRlciBwcm9ncmFtIGluc3RhbmNlIHRvIGF0dGFjaCB0aGUgY29tbWFuZCB0by5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgYmFzaFxuICogcGlwZWxpbmUtbWFuYWdlciBhdXRoIHBhdCAtLW5hbWUgY2ktZGVwbG95XG4gKiBwaXBlbGluZS1tYW5hZ2VyIGF1dGggcGF0IC0tbmFtZSBjaSAtLWV4cGlyZXMtZGF5cyAzMCAtLW9yZyA8b3JnSWQ+XG4gKiBldmFsICQocGlwZWxpbmUtbWFuYWdlciBhdXRoIHBhdCAtLW5hbWUgY2kgLS1xdWlldClcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUGF0KHByb2dyYW06IENvbW1hbmQpOiB2b2lkIHtcbiAgd2l0aFNzbE9wdGlvbnMocHJvZ3JhbVxuICAgIC5jb21tYW5kKCdwYXQnKVxuICAgIC5kZXNjcmlwdGlvbignQ3JlYXRlIGEgbmFtZWQgYWNjZXNzIGtleSAobG9uZy1saXZlZCwgb3BhcXVlIENMSS9hdXRvbWF0aW9uIGNyZWRlbnRpYWwpJylcbiAgICAucmVxdWlyZWRPcHRpb24oJy0tbmFtZSA8bmFtZT4nLCAnSHVtYW4tcmVhZGFibGUga2V5IG5hbWUgKGUuZy4gY2ktZGVwbG95KScpXG4gICAgLm9wdGlvbignLS1leHBpcmVzLWRheXMgPGRheXM+JywgYEtleSBsaWZldGltZSBpbiBkYXlzICgxLSR7TUFYX0VYUElSRVNfREFZU30pYCwgJzkwJylcbiAgICAub3B0aW9uKCctLXNjb3BlIDxzY29wZT4nLCAnT3B0aW9uYWwgY2FwYWJpbGl0eSBzY29wZSAobGVhc3QtcHJpdmlsZWdlIGtleSknKVxuICAgIC5vcHRpb24oJy0tb3JnIDxvcmdJZD4nLCAnQmluZCB0aGUga2V5IHRvIGEgc3BlY2lmaWMgb3JnYW5pemF0aW9uIChzd2l0Y2hlcyBhY3RpdmUgb3JnKScpXG4gICAgLm9wdGlvbignLS1uby1icm93c2VyJywgJ05ldmVyIG9wZW4gYSBicm93c2VyIOKAlCBwcmludCB0aGUgdmVyaWZpY2F0aW9uIFVSTCBpbnN0ZWFkJylcbiAgICAub3B0aW9uKCctLXVybCA8dXJsPicsICdQbGF0Zm9ybSBiYXNlIFVSTCcsIHByb2Nlc3MuZW52LlBMQVRGT1JNX0JBU0VfVVJMIHx8ICdodHRwczovL2xvY2FsaG9zdDo4NDQzJykpXG4gICAgLm9wdGlvbignLS1xdWlldCcsICdPbmx5IHByaW50IHRoZSBleHBvcnQgc3RhdGVtZW50ICh1c2VmdWwgZm9yIGV2YWwpJylcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICAvLyBTRUNVUklUWTogdGhlIHBvbGwgcmV0dXJucyBhIHNlc3Npb24gQU5EIGEgc3RlcC11cCB0b2tlbiwgYW5kIHRoZSByZXNwb25zZVxuICAgICAgLy8gYmVsb3cgY2FycmllcyB0aGUgcmF3IGtleS4gTm9uZSBvZiB0aGF0IG1heSBjcm9zcyBhbiB1bnZlcmlmaWVkIGNvbm5lY3Rpb25cbiAgICAgIC8vIGluIHByb2R1Y3Rpb24uIE1pcnJvcnMgdGhlIGd1YXJkIGluIGBsb2dpbmAuXG4gICAgICBhc3NlcnRDcmVkZW50aWFsVGxzQWxsb3dlZChvcHRpb25zLnZlcmlmeVNzbCk7XG5cbiAgICAgIGNvbnN0IHF1aWV0ID0gb3B0aW9ucy5xdWlldCA/PyBmYWxzZTtcbiAgICAgIGNvbnN0IGV4ZWN1dGlvbklkID0gcHJpbnRDb21tYW5kSGVhZGVyKCdDcmVhdGUgQWNjZXNzIEtleScsICdDcmVhdGUgQWNjZXNzIEtleScsIHsgcXVpZXQgfSk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIFZhbGlkYXRlIG5hbWUuXG4gICAgICAgIGNvbnN0IG5hbWUgPSB0eXBlb2Ygb3B0aW9ucy5uYW1lID09PSAnc3RyaW5nJyA/IG9wdGlvbnMubmFtZS50cmltKCkgOiAnJztcbiAgICAgICAgaWYgKCFuYW1lKSB7XG4gICAgICAgICAgcHJpbnRFcnJvcignS2V5IG5hbWUgaXMgcmVxdWlyZWQgKC0tbmFtZSknKTtcbiAgICAgICAgICBwcm9jZXNzLmV4aXQoRVJST1JfQ09ERVMuVkFMSURBVElPTik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5hbWUubGVuZ3RoID4gMTAwKSB7XG4gICAgICAgICAgcHJpbnRFcnJvcignS2V5IG5hbWUgbXVzdCBiZSAxMDAgY2hhcmFjdGVycyBvciBmZXdlcicpO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdChFUlJPUl9DT0RFUy5WQUxJREFUSU9OKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIGV4cGlyeSDihpIgc2Vjb25kcy5cbiAgICAgICAgY29uc3QgZGF5cyA9IE1hdGguZmxvb3IoTnVtYmVyKG9wdGlvbnMuZXhwaXJlc0RheXMpKTtcbiAgICAgICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUoZGF5cykgfHwgZGF5cyA8IDEgfHwgZGF5cyA+IE1BWF9FWFBJUkVTX0RBWVMpIHtcbiAgICAgICAgICBwcmludEVycm9yKGAtLWV4cGlyZXMtZGF5cyBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAke01BWF9FWFBJUkVTX0RBWVN9YCk7XG4gICAgICAgICAgcHJvY2Vzcy5leGl0KEVSUk9SX0NPREVTLlZBTElEQVRJT04pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGV4cGlyZXNJbiA9IGRheXMgKiA4NjQwMDtcblxuICAgICAgICBjb25zdCBodHRwc0FnZW50ID0gY3JlZGVudGlhbEh0dHBzQWdlbnQob3B0aW9ucy52ZXJpZnlTc2wpO1xuICAgICAgICBjb25zdCB0aW1lb3V0ID0gVElNRU9VVFMuSFRUUF9SRVFVRVNUO1xuICAgICAgICBjb25zdCB0cmFuc3BvcnQgPSB7IHVybDogb3B0aW9ucy51cmwsIGh0dHBzQWdlbnQsIHRpbWVvdXQgfTtcblxuICAgICAgICAvLyAxKSBEZXZpY2Ugc2lnbi1pbiwgYXNraW5nIGZvciB0aGUgc3RlcC11cCB0aGUgY3JlYXRlIGNhbGwgbmVlZHMuXG4gICAgICAgIGNvbnN0IGNvZGUgPSBhd2FpdCBiZWdpbkRldmljZUFwcHJvdmFsKHRyYW5zcG9ydCwge1xuICAgICAgICAgIHF1aWV0LFxuICAgICAgICAgIGJyb3dzZXI6IG9wdGlvbnMuYnJvd3NlcixcbiAgICAgICAgICB2ZXJpZnlTc2w6IG9wdGlvbnMudmVyaWZ5U3NsLFxuICAgICAgICAgIHN0ZXBVcDogdHJ1ZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgc2Vzc2lvbiA9IGF3YWl0IHBvbGxGb3JEZXZpY2VUb2tlbih0cmFuc3BvcnQsIGNvZGUpO1xuICAgICAgICBsZXQgYWNjZXNzVG9rZW4gPSBzZXNzaW9uLmFjY2Vzc190b2tlbjtcbiAgICAgICAgY29uc3Qgc3RlcFVwVG9rZW4gPSBzZXNzaW9uLnN0ZXBfdXBfdG9rZW47XG4gICAgICAgIGlmICghc3RlcFVwVG9rZW4pIHtcbiAgICAgICAgICBwcmludEVycm9yKCdUaGUgYXBwcm92YWwgZGlkIG5vdCByZXR1cm4gYSBzdGVwLXVwIGNvbmZpcm1hdGlvbiDigJQgYXBwcm92ZSB0aGUgY29kZSBwcm9tcHRseSBhbmQgdHJ5IGFnYWluLicpO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdChFUlJPUl9DT0RFUy5BVVRIRU5USUNBVElPTik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAyKSBPcHRpb25hbGx5IGJpbmQgdG8gYSBzcGVjaWZpYyBvcmcgKHBlcnNpc3RzIGFzIHRoZSBhY3RpdmUgb3JnLCB3aGljaFxuICAgICAgICAvLyAgICB0aGUga2V5IGluaGVyaXRzKS4gUm90YXRlcyB0aGUgc2Vzc2lvbiwgYnV0IHRoZSBzdGVwLXVwIHRva2VuIGlzXG4gICAgICAgIC8vICAgIGJvdW5kIHRvIHRoZSB1c2VyLCBub3QgdGhlIHNlc3Npb24sIHNvIGl0IHN1cnZpdmVzIHRoZSBzd2l0Y2guXG4gICAgICAgIGlmIChvcHRpb25zLm9yZykge1xuICAgICAgICAgIGlmICghcXVpZXQpIHByaW50SW5mbygnU3dpdGNoaW5nIHRvIG9yZ2FuaXphdGlvbicsIHsgb3JnSWQ6IG9wdGlvbnMub3JnIH0pO1xuICAgICAgICAgIGFjY2Vzc1Rva2VuID0gKGF3YWl0IHN3aXRjaE9yZ2FuaXphdGlvbih7XG4gICAgICAgICAgICB1cmw6IG9wdGlvbnMudXJsLFxuICAgICAgICAgICAgb3JnSWQ6IG9wdGlvbnMub3JnLFxuICAgICAgICAgICAgYWNjZXNzVG9rZW4sXG4gICAgICAgICAgICBodHRwc0FnZW50LFxuICAgICAgICAgICAgdGltZW91dCxcbiAgICAgICAgICAgIHF1aWV0LFxuICAgICAgICAgIH0pKS5hY2Nlc3NUb2tlbjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDMpIENyZWF0ZSB0aGUgYWNjZXNzIGtleS4gVGhlIHN0ZXAtdXAgdG9rZW4gaXMgc2hvcnQtbGl2ZWQgKH42MHMpIGFuZFxuICAgICAgICAvLyAgICBzaW5nbGUtdXNlLCBzbyBpdCBpcyBzcGVudCBpbW1lZGlhdGVseS5cbiAgICAgICAgY29uc3Qga2V5VXJsID0gYCR7b3B0aW9ucy51cmx9L2FwaS91c2VyL2tleXNgO1xuICAgICAgICBwcmludERlYnVnKCdQT1NUJywgeyB1cmw6IGtleVVybCB9KTtcbiAgICAgICAgY29uc3Qga2V5UmVzID0gYXdhaXQgYXhpb3MucG9zdDxDcmVhdGVBY2Nlc3NLZXlSZXNwb25zZT4oXG4gICAgICAgICAga2V5VXJsLFxuICAgICAgICAgIHsgbmFtZSwgZXhwaXJlc0luLCAuLi4ob3B0aW9ucy5zY29wZSA/IHsgc2NvcGU6IG9wdGlvbnMuc2NvcGUgfSA6IHt9KSB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7YWNjZXNzVG9rZW59YCxcbiAgICAgICAgICAgICAgJ1gtU3RlcC1VcC1Ub2tlbic6IHN0ZXBVcFRva2VuLFxuICAgICAgICAgICAgICAuLi5yZXF1ZXN0Q29ycmVsYXRpb25IZWFkZXJzKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaHR0cHNBZ2VudCxcbiAgICAgICAgICAgIHRpbWVvdXQsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBrZXkgPSBrZXlSZXMuZGF0YT8uZGF0YT8ua2V5O1xuICAgICAgICBjb25zdCBtZXRhID0ga2V5UmVzLmRhdGE/LmRhdGE/LmFjY2Vzc0tleTtcbiAgICAgICAgaWYgKCFrZXkpIHtcbiAgICAgICAgICBwcmludEVycm9yKCdDcmVhdGUga2V5IGZhaWxlZDogbm8ga2V5IGluIHJlc3BvbnNlJyk7XG4gICAgICAgICAgcHJvY2Vzcy5leGl0KEVSUk9SX0NPREVTLkFQSV9SRVFVRVNUKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFF1aWV0IG1vZGU6IGVtaXQgb25seSB0aGUgZXhwb3J0IGxpbmUgKHRoZSBrZXkgaXMgYSB2YWxpZCBCZWFyZXIgY3JlZGVudGlhbCkuXG4gICAgICAgIGlmIChxdWlldCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBleHBvcnQgUExBVEZPUk1fVE9LRU49JHtrZXl9YCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBwcmludFN1Y2Nlc3MoJ0FjY2VzcyBrZXkgY3JlYXRlZCcpO1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICdOYW1lJzogbWV0YT8ubmFtZSA/PyBuYW1lLFxuICAgICAgICAgICdLZXkgSUQnOiBtZXRhPy5pZCA/PyAnKHVua25vd24pJyxcbiAgICAgICAgICAnS2V5JzogbWV0YT8uZGlzcGxheSA/PyAnKHVua25vd24pJyxcbiAgICAgICAgICAnRXhwaXJlcyc6IG1ldGE/LmV4cGlyZXNBdCA/PyBgJHtkYXlzfSBkYXkocylgLFxuICAgICAgICAgIC4uLihtZXRhPy5zY29wZSA/IHsgU2NvcGU6IG1ldGEuc2NvcGUgfSA6IHt9KSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgY29uc29sZS5sb2coeWVsbG93KGJvbGQoJ0NvcHkgeW91ciBrZXkgbm93IOKAlCBvbmx5IGl0cyBoYXNoIGlzIHN0b3JlZCwgc28gaXQgd2lsbCBub3QgYmUgc2hvd24gYWdhaW46JykpKTtcbiAgICAgICAgY29uc29sZS5sb2coZ3JlZW4oa2V5KSk7XG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRJbmZvKCdUaXA6IHVzZSBpdCBhcyBQTEFURk9STV9UT0tFTiBmb3Igc3Vic2VxdWVudCBjb21tYW5kczonKTtcbiAgICAgICAgY29uc29sZS5sb2coZ3JlZW4oJyAgZXhwb3J0IFBMQVRGT1JNX1RPS0VOPTx0b2tlbj4nKSk7XG4gICAgICAgIGNvbnNvbGUubG9nKGdyZWVuKGAgICMgb3I6ICBldmFsICQocGlwZWxpbmUtbWFuYWdlciBhdXRoIHBhdCAtLW5hbWUgJHtuYW1lfSAtLXF1aWV0KWApKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIERldmljZUF1dGhFcnJvcikge1xuICAgICAgICAgIHByaW50RXJyb3IoYENyZWF0ZSBrZXkgZmFpbGVkOiAke2Vycm9yLm1lc3NhZ2V9YCwgeyByZWFzb246IGVycm9yLmNvZGUgfSk7XG4gICAgICAgICAgcHJvY2Vzcy5leGl0KEVSUk9SX0NPREVTLkFVVEhFTlRJQ0FUSU9OKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXhpb3MuaXNBeGlvc0Vycm9yKGVycm9yKSkge1xuICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGVycm9yLnJlc3BvbnNlPy5zdGF0dXM7XG4gICAgICAgICAgY29uc3QgbWVzc2FnZSA9IChlcnJvci5yZXNwb25zZT8uZGF0YSBhcyB7IG1lc3NhZ2U/OiBzdHJpbmcgfSk/Lm1lc3NhZ2U7XG4gICAgICAgICAgcHJpbnRFcnJvcignQ3JlYXRlIGtleSBmYWlsZWQnLCB7XG4gICAgICAgICAgICBzdGF0dXM6IHN0YXR1cyA/PyAnbm8gcmVzcG9uc2UnLFxuICAgICAgICAgICAgLi4uKG1lc3NhZ2UgPyB7IG1lc3NhZ2UgfSA6IHt9KSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBwcm9jZXNzLmV4aXQoRVJST1JfQ09ERVMuQVVUSEVOVElDQVRJT04pO1xuICAgICAgICB9XG4gICAgICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5BUElfUkVRVUVTVCwge1xuICAgICAgICAgIGRlYnVnOiBwcm9ncmFtLm9wdHMoKS5kZWJ1ZyxcbiAgICAgICAgICBleGl0OiB0cnVlLFxuICAgICAgICAgIGNvbnRleHQ6IHsgY29tbWFuZDogJ2NyZWF0ZS1wYXQnLCBleGVjdXRpb25JZCwgdXJsOiBvcHRpb25zLnVybCB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbn1cbiJdfQ==
|
|
181
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXBhdC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2NyZWF0ZS1wYXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLElBQUksTUFBTSxZQUFZLENBQUM7QUFDOUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxvQkFBb0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25HLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUV4RSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFZckMsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLENBQUM7QUFFN0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkJHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQyxPQUFnQjtJQUN4QyxjQUFjLENBQUMsT0FBTztTQUNuQixPQUFPLENBQUMsS0FBSyxD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Q0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztpQkFDaEMsQ0FBQyxDQUFDO2dCQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzNDLENBQUM7WUFDRCxXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxXQUFXLEVBQUU7Z0JBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSztnQkFDM0IsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFO2FBQ3JELENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHBpY28gZnJvbSAncGljb2NvbG9ycyc7XG5pbXBvcnQgeyBUSU1FT1VUUyB9IGZyb20gJy4uL2NvbmZpZy9jbGkuY29uc3RhbnRzLmpzJztcbmltcG9ydCB7IGFzc2VydENyZWRlbnRpYWxUbHNBbGxvd2VkLCBjcmVkZW50aWFsSHR0cHNBZ2VudCwgc3dpdGNoT3JnYW5pemF0aW9uIH0gZnJvbSAnLi4vdXRpbHMvYXV0aC11dGlscy5qcyc7XG5pbXBvcnQgeyBwcmludENvbW1hbmRIZWFkZXIsIHdpdGhTc2xPcHRpb25zIH0gZnJvbSAnLi4vdXRpbHMvY29tbWFuZC11dGlscy5qcyc7XG5pbXBvcnQgeyBnZXRBcGlDb25maWcgfSBmcm9tICcuLi91dGlscy9jb25maWctbG9hZGVyLmpzJztcbmltcG9ydCB7IGJlZ2luRGV2aWNlQXBwcm92YWwsIERldmljZUF1dGhFcnJvciwgcG9sbEZvckRldmljZVRva2VuIH0gZnJvbSAnLi4vdXRpbHMvZGV2aWNlLWF1dGguanMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vdXRpbHMvZXJyb3ItaGFuZGxlci5qcyc7XG5pbXBvcnQgeyBwcmludERlYnVnLCBwcmludEVycm9yLCBwcmludEluZm8sIHByaW50S2V5VmFsdWUsIHByaW50U3VjY2VzcyB9IGZyb20gJy4uL3V0aWxzL291dHB1dC11dGlscy5qcyc7XG5pbXBvcnQgeyByZXF1ZXN0Q29ycmVsYXRpb25IZWFkZXJzIH0gZnJvbSAnLi4vdXRpbHMvcmVxdWVzdC1jb250ZXh0LmpzJztcblxuY29uc3QgeyBib2xkLCBncmVlbiwgeWVsbG93IH0gPSBwaWNvO1xuXG4vKiogQ3JlYXRlLWtleSByZXNwb25zZSDigJQgdGhlIHJhdyBrZXkgaXMgcmV0dXJuZWQgZXhhY3RseSBvbmNlLiAqL1xuaW50ZXJmYWNlIENyZWF0ZUFjY2Vzc0tleVJlc3BvbnNlIHtcbiAgc3VjY2VzczogYm9vbGVhbjtcbiAgZGF0YToge1xuICAgIC8qKiBUaGUgb3BhcXVlIGtleSAoYHBiX3BhdF/igKZgKS4gT25seSBpdHMgaGFzaCBpcyBzdG9yZWQgc2VydmVyLXNpZGUuICovXG4gICAga2V5OiBzdHJpbmc7XG4gICAgYWNjZXNzS2V5OiB7IGlkOiBzdHJpbmc7IG5hbWU6IHN0cmluZzsgZGlzcGxheTogc3RyaW5nOyBleHBpcmVzQXQ6IHN0cmluZzsgc2NvcGU/OiBzdHJpbmcgfCBudWxsIH07XG4gIH07XG59XG5cbmNvbnN0IE1BWF9FWFBJUkVTX0RBWVMgPSAzNjU7XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSBgcGF0YCBjb21tYW5kIHdpdGggdGhlIENMSSBwcm9ncmFtLlxuICpcbiAqIE1pbnRzIGEgbmFtZWQgQUNDRVNTIEtFWSAoYHBiX3BhdF/igKZgKSDigJQgYSBkdXJhYmxlLCBpbmRpdmlkdWFsbHktcmV2b2NhYmxlIEFQSVxuICogY3JlZGVudGlhbCDigJQgZm9yIENJL2F1dG9tYXRpb24uIFVubGlrZSBhIHNlc3Npb24sIGEga2V5IGlzIHRoZSByaWdodFxuICogbG9uZy1saXZlZCBjcmVkZW50aWFsIGZvciBzY3JpcHRzLlxuICpcbiAqIFRoZSBrZXkgaXMgT1BBUVVFOiBpdCBjYXJyaWVzIG5vIGNsYWltcywgYW5kIGVhY2ggc2VydmljZSB0cmFkZXMgaXQgYXRcbiAqIHBsYXRmb3JtJ3MgL2F1dGgvdG9rZW4vZXhjaGFuZ2UgZm9yIGEgNS1taW51dGUgdG9rZW4sIHNvIHJldm9raW5nIGl0IHRha2VzXG4gKiBlZmZlY3QgZXZlcnl3aGVyZSB3aXRoaW4gZml2ZSBtaW51dGVzLlxuICpcbiAqIENyZWF0aW5nIG9uZSBpcyBzdGVwLXVwIGdhdGVkIHNlcnZlci1zaWRlLCB5ZXQgdGhlIENMSSBob2xkcyBubyBwYXNzd29yZDogdGhlXG4gKiBkZXZpY2UgZmxvdyBhc2tzIGZvciB0aGUgc3RlcC11cCBJTiBUSEUgQlJPV1NFUiwgd2hlcmUgdGhlXG4gKiBhY2NvdW50J3MgcmVhbCBmYWN0b3JzIGxpdmUsIGFuZCB0aGUgYXBwcm92ZWQgcG9sbCByZXR1cm5zIGJvdGggdGhlIHNlc3Npb25cbiAqIGFuZCBhIHNob3J0LWxpdmVkIHN0ZXAtdXAgdG9rZW4uIFRoZSBrZXkgYmluZHMgdG8gdGhlIHVzZXIncyBhY3RpdmUgb3JnOyBwYXNzXG4gKiBgLS1vcmdgIHRvIHN3aXRjaCBmaXJzdCAod2hpY2ggcGVyc2lzdHMgYXMgdGhlIGFjdGl2ZSBvcmcpLlxuICpcbiAqIFRoZSByYXcga2V5IGlzIHByaW50ZWQgT05DRSDigJQgb25seSBpdHMgaGFzaCBpcyBzdG9yZWQsIHNvIGl0IGNhbiBuZXZlciBiZSByZWFkXG4gKiBiYWNrLiBgLS1xdWlldGAgcHJpbnRzIG9ubHkgYGV4cG9ydCBQTEFURk9STV9UT0tFTj3igKZgIHNvIGl0IGNhbiBiZSBgZXZhbGAnZDtcbiAqIHRoZSBrZXkgaXMgaXRzZWxmIGEgdmFsaWQgQmVhcmVyIGNyZWRlbnRpYWwuXG4gKlxuICogQHBhcmFtIHByb2dyYW0gLSBUaGUgcm9vdCBDb21tYW5kZXIgcHJvZ3JhbSBpbnN0YW5jZSB0byBhdHRhY2ggdGhlIGNvbW1hbmQgdG8uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGJhc2hcbiAqIHBpcGVsaW5lLW1hbmFnZXIgYXV0aCBwYXQgLS1uYW1lIGNpLWRlcGxveVxuICogcGlwZWxpbmUtbWFuYWdlciBhdXRoIHBhdCAtLW5hbWUgY2kgLS1leHBpcmVzLWRheXMgMzAgLS1vcmcgPG9yZ0lkPlxuICogZXZhbCAkKHBpcGVsaW5lLW1hbmFnZXIgYXV0aCBwYXQgLS1uYW1lIGNpIC0tcXVpZXQpXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBhdChwcm9ncmFtOiBDb21tYW5kKTogdm9pZCB7XG4gIHdpdGhTc2xPcHRpb25zKHByb2dyYW1cbiAgICAuY29tbWFuZCgncGF0JylcbiAgICAuZGVzY3JpcHRpb24oJ0NyZWF0ZSBhIG5hbWVkIGFjY2VzcyBrZXkgKGxvbmctbGl2ZWQsIG9wYXF1ZSBDTEkvYXV0b21hdGlvbiBjcmVkZW50aWFsKScpXG4gICAgLnJlcXVpcmVkT3B0aW9uKCctLW5hbWUgPG5hbWU+JywgJ0h1bWFuLXJlYWRhYmxlIGtleSBuYW1lIChlLmcuIGNpLWRlcGxveSknKVxuICAgIC5vcHRpb24oJy0tZXhwaXJlcy1kYXlzIDxkYXlzPicsIGBLZXkgbGlmZXRpbWUgaW4gZGF5cyAoMS0ke01BWF9FWFBJUkVTX0RBWVN9KWAsICc5MCcpXG4gICAgLm9wdGlvbignLS1zY29wZSA8c2NvcGU+JywgJ09wdGlvbmFsIGNhcGFiaWxpdHkgc2NvcGUgKGxlYXN0LXByaXZpbGVnZSBrZXkpJylcbiAgICAub3B0aW9uKCctLW9yZyA8b3JnSWQ+JywgJ0JpbmQgdGhlIGtleSB0byBhIHNwZWNpZmljIG9yZ2FuaXphdGlvbiAoc3dpdGNoZXMgYWN0aXZlIG9yZyknKVxuICAgIC5vcHRpb24oJy0tbm8tYnJvd3NlcicsICdOZXZlciBvcGVuIGEgYnJvd3NlciDigJQgcHJpbnQgdGhlIHZlcmlmaWNhdGlvbiBVUkwgaW5zdGVhZCcpXG4gICAgLm9wdGlvbignLS11cmwgPHVybD4nLCAnUGxhdGZvcm0gYmFzZSBVUkwgKGRlZmF1bHQ6IFBMQVRGT1JNX0JBU0VfVVJMLCBlbHNlIHRoZSBwbGF0Zm9ybSB5b3UgbGFzdCBzaWduZWQgaW4gdG8sIGVsc2UgY29uZmlnLnltbCknKSlcbiAgICAub3B0aW9uKCctLXF1aWV0JywgJ09ubHkgcHJpbnQgdGhlIGV4cG9ydCBzdGF0ZW1lbnQgKHVzZWZ1bCBmb3IgZXZhbCknKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIC8vIFNFQ1VSSVRZOiB0aGUgcG9sbCByZXR1cm5zIGEgc2Vzc2lvbiBBTkQgYSBzdGVwLXVwIHRva2VuLCBhbmQgdGhlIHJlc3BvbnNlXG4gICAgICAvLyBiZWxvdyBjYXJyaWVzIHRoZSByYXcga2V5LiBOb25lIG9mIHRoYXQgbWF5IGNyb3NzIGFuIHVudmVyaWZpZWQgY29ubmVjdGlvblxuICAgICAgLy8gaW4gcHJvZHVjdGlvbi4gTWlycm9ycyB0aGUgZ3VhcmQgaW4gYGxvZ2luYC5cbiAgICAgIGFzc2VydENyZWRlbnRpYWxUbHNBbGxvd2VkKG9wdGlvbnMudmVyaWZ5U3NsKTtcblxuICAgICAgY29uc3QgcXVpZXQgPSBvcHRpb25zLnF1aWV0ID8/IGZhbHNlO1xuICAgICAgLy8gU2FtZSBiYXNlLVVSTCBsYXllcnMgYXMgZXZlcnkgb3RoZXIgY29tbWFuZCAoc2VlIGBhdXRoIGxvZ2luYCkuXG4gICAgICBjb25zdCB1cmw6IHN0cmluZyA9IG9wdGlvbnMudXJsID8/IGdldEFwaUNvbmZpZygpLmFwaS5iYXNlVXJsO1xuICAgICAgY29uc3QgZXhlY3V0aW9uSWQgPSBwcmludENvbW1hbmRIZWFkZXIoJ0NyZWF0ZSBBY2Nlc3MgS2V5JywgJ0NyZWF0ZSBBY2Nlc3MgS2V5JywgeyBxdWlldCB9KTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gVmFsaWRhdGUgbmFtZS5cbiAgICAgICAgY29uc3QgbmFtZSA9IHR5cGVvZiBvcHRpb25zLm5hbWUgPT09ICdzdHJpbmcnID8gb3B0aW9ucy5uYW1lLnRyaW0oKSA6ICcnO1xuICAgICAgICBpZiAoIW5hbWUpIHtcbiAgICAgICAgICBwcmludEVycm9yKCdLZXkgbmFtZSBpcyByZXF1aXJlZCAoLS1uYW1lKScpO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdChFUlJPUl9DT0RFUy5WQUxJREFUSU9OKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmFtZS5sZW5ndGggPiAxMDApIHtcbiAgICAgICAgICBwcmludEVycm9yKCdLZXkgbmFtZSBtdXN0IGJlIDEwMCBjaGFyYWN0ZXJzIG9yIGZld2VyJyk7XG4gICAgICAgICAgcHJvY2Vzcy5leGl0KEVSUk9SX0NPREVTLlZBTElEQVRJT04pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZXhwaXJ5IOKGkiBzZWNvbmRzLlxuICAgICAgICBjb25zdCBkYXlzID0gTWF0aC5mbG9vcihOdW1iZXIob3B0aW9ucy5leHBpcmVzRGF5cykpO1xuICAgICAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShkYXlzKSB8fCBkYXlzIDwgMSB8fCBkYXlzID4gTUFYX0VYUElSRVNfREFZUykge1xuICAgICAgICAgIHByaW50RXJyb3IoYC0tZXhwaXJlcy1kYXlzIG11c3QgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDEgYW5kICR7TUFYX0VYUElSRVNfREFZU31gKTtcbiAgICAgICAgICBwcm9jZXNzLmV4aXQoRVJST1JfQ09ERVMuVkFMSURBVElPTik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZXhwaXJlc0luID0gZGF5cyAqIDg2NDAwO1xuXG4gICAgICAgIGNvbnN0IGh0dHBzQWdlbnQgPSBjcmVkZW50aWFsSHR0cHNBZ2VudChvcHRpb25zLnZlcmlmeVNzbCk7XG4gICAgICAgIGNvbnN0IHRpbWVvdXQgPSBUSU1FT1VUUy5IVFRQX1JFUVVFU1Q7XG4gICAgICAgIGNvbnN0IHRyYW5zcG9ydCA9IHsgdXJsLCBodHRwc0FnZW50LCB0aW1lb3V0IH07XG5cbiAgICAgICAgLy8gMSkgRGV2aWNlIHNpZ24taW4sIGFza2luZyBmb3IgdGhlIHN0ZXAtdXAgdGhlIGNyZWF0ZSBjYWxsIG5lZWRzLlxuICAgICAgICBjb25zdCBjb2RlID0gYXdhaXQgYmVnaW5EZXZpY2VBcHByb3ZhbCh0cmFuc3BvcnQsIHtcbiAgICAgICAgICBxdWlldCxcbiAgICAgICAgICBicm93c2VyOiBvcHRpb25zLmJyb3dzZXIsXG4gICAgICAgICAgdmVyaWZ5U3NsOiBvcHRpb25zLnZlcmlmeVNzbCxcbiAgICAgICAgICBzdGVwVXA6IHRydWUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHNlc3Npb24gPSBhd2FpdCBwb2xsRm9yRGV2aWNlVG9rZW4odHJhbnNwb3J0LCBjb2RlKTtcbiAgICAgICAgbGV0IGFjY2Vzc1Rva2VuID0gc2Vzc2lvbi5hY2Nlc3NfdG9rZW47XG4gICAgICAgIGNvbnN0IHN0ZXBVcFRva2VuID0gc2Vzc2lvbi5zdGVwX3VwX3Rva2VuO1xuICAgICAgICBpZiAoIXN0ZXBVcFRva2VuKSB7XG4gICAgICAgICAgcHJpbnRFcnJvcignVGhlIGFwcHJvdmFsIGRpZCBub3QgcmV0dXJuIGEgc3RlcC11cCBjb25maXJtYXRpb24g4oCUIGFwcHJvdmUgdGhlIGNvZGUgcHJvbXB0bHkgYW5kIHRyeSBhZ2Fpbi4nKTtcbiAgICAgICAgICBwcm9jZXNzLmV4aXQoRVJST1JfQ09ERVMuQVVUSEVOVElDQVRJT04pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMikgT3B0aW9uYWxseSBiaW5kIHRvIGEgc3BlY2lmaWMgb3JnIChwZXJzaXN0cyBhcyB0aGUgYWN0aXZlIG9yZywgd2hpY2hcbiAgICAgICAgLy8gICAgdGhlIGtleSBpbmhlcml0cykuIFJvdGF0ZXMgdGhlIHNlc3Npb24sIGJ1dCB0aGUgc3RlcC11cCB0b2tlbiBpc1xuICAgICAgICAvLyAgICBib3VuZCB0byB0aGUgdXNlciwgbm90IHRoZSBzZXNzaW9uLCBzbyBpdCBzdXJ2aXZlcyB0aGUgc3dpdGNoLlxuICAgICAgICBpZiAob3B0aW9ucy5vcmcpIHtcbiAgICAgICAgICBpZiAoIXF1aWV0KSBwcmludEluZm8oJ1N3aXRjaGluZyB0byBvcmdhbml6YXRpb24nLCB7IG9yZ0lkOiBvcHRpb25zLm9yZyB9KTtcbiAgICAgICAgICBhY2Nlc3NUb2tlbiA9IChhd2FpdCBzd2l0Y2hPcmdhbml6YXRpb24oe1xuICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgb3JnSWQ6IG9wdGlvbnMub3JnLFxuICAgICAgICAgICAgYWNjZXNzVG9rZW4sXG4gICAgICAgICAgICBodHRwc0FnZW50LFxuICAgICAgICAgICAgdGltZW91dCxcbiAgICAgICAgICAgIHF1aWV0LFxuICAgICAgICAgIH0pKS5hY2Nlc3NUb2tlbjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDMpIENyZWF0ZSB0aGUgYWNjZXNzIGtleS4gVGhlIHN0ZXAtdXAgdG9rZW4gaXMgc2hvcnQtbGl2ZWQgKH42MHMpIGFuZFxuICAgICAgICAvLyAgICBzaW5nbGUtdXNlLCBzbyBpdCBpcyBzcGVudCBpbW1lZGlhdGVseS5cbiAgICAgICAgY29uc3Qga2V5VXJsID0gYCR7dXJsfS9hcGkvdXNlci9rZXlzYDtcbiAgICAgICAgcHJpbnREZWJ1ZygnUE9TVCcsIHsgdXJsOiBrZXlVcmwgfSk7XG4gICAgICAgIGNvbnN0IGtleVJlcyA9IGF3YWl0IGF4aW9zLnBvc3Q8Q3JlYXRlQWNjZXNzS2V5UmVzcG9uc2U+KFxuICAgICAgICAgIGtleVVybCxcbiAgICAgICAgICB7IG5hbWUsIGV4cGlyZXNJbiwgLi4uKG9wdGlvbnMuc2NvcGUgPyB7IHNjb3BlOiBvcHRpb25zLnNjb3BlIH0gOiB7fSkgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogYEJlYXJlciAke2FjY2Vzc1Rva2VufWAsXG4gICAgICAgICAgICAgICdYLVN0ZXAtVXAtVG9rZW4nOiBzdGVwVXBUb2tlbixcbiAgICAgICAgICAgICAgLi4ucmVxdWVzdENvcnJlbGF0aW9uSGVhZGVycygpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGh0dHBzQWdlbnQsXG4gICAgICAgICAgICB0aW1lb3V0LFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3Qga2V5ID0ga2V5UmVzLmRhdGE/LmRhdGE/LmtleTtcbiAgICAgICAgY29uc3QgbWV0YSA9IGtleVJlcy5kYXRhPy5kYXRhPy5hY2Nlc3NLZXk7XG4gICAgICAgIGlmICgha2V5KSB7XG4gICAgICAgICAgcHJpbnRFcnJvcignQ3JlYXRlIGtleSBmYWlsZWQ6IG5vIGtleSBpbiByZXNwb25zZScpO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdChFUlJPUl9DT0RFUy5BUElfUkVRVUVTVCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBRdWlldCBtb2RlOiBlbWl0IG9ubHkgdGhlIGV4cG9ydCBsaW5lICh0aGUga2V5IGlzIGEgdmFsaWQgQmVhcmVyIGNyZWRlbnRpYWwpLlxuICAgICAgICBpZiAocXVpZXQpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgZXhwb3J0IFBMQVRGT1JNX1RPS0VOPSR7a2V5fWApO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRTdWNjZXNzKCdBY2Nlc3Mga2V5IGNyZWF0ZWQnKTtcbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAnTmFtZSc6IG1ldGE/Lm5hbWUgPz8gbmFtZSxcbiAgICAgICAgICAnS2V5IElEJzogbWV0YT8uaWQgPz8gJyh1bmtub3duKScsXG4gICAgICAgICAgJ0tleSc6IG1ldGE/LmRpc3BsYXkgPz8gJyh1bmtub3duKScsXG4gICAgICAgICAgJ0V4cGlyZXMnOiBtZXRhPy5leHBpcmVzQXQgPz8gYCR7ZGF5c30gZGF5KHMpYCxcbiAgICAgICAgICAuLi4obWV0YT8uc2NvcGUgPyB7IFNjb3BlOiBtZXRhLnNjb3BlIH0gOiB7fSksXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIGNvbnNvbGUubG9nKHllbGxvdyhib2xkKCdDb3B5IHlvdXIga2V5IG5vdyDigJQgb25seSBpdHMgaGFzaCBpcyBzdG9yZWQsIHNvIGl0IHdpbGwgbm90IGJlIHNob3duIGFnYWluOicpKSk7XG4gICAgICAgIGNvbnNvbGUubG9nKGdyZWVuKGtleSkpO1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50SW5mbygnVGlwOiB1c2UgaXQgYXMgUExBVEZPUk1fVE9LRU4gZm9yIHN1YnNlcXVlbnQgY29tbWFuZHM6Jyk7XG4gICAgICAgIGNvbnNvbGUubG9nKGdyZWVuKCcgIGV4cG9ydCBQTEFURk9STV9UT0tFTj08dG9rZW4+JykpO1xuICAgICAgICBjb25zb2xlLmxvZyhncmVlbihgICAjIG9yOiAgZXZhbCAkKHBpcGVsaW5lLW1hbmFnZXIgYXV0aCBwYXQgLS1uYW1lICR7bmFtZX0gLS1xdWlldClgKSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBEZXZpY2VBdXRoRXJyb3IpIHtcbiAgICAgICAgICBwcmludEVycm9yKGBDcmVhdGUga2V5IGZhaWxlZDogJHtlcnJvci5tZXNzYWdlfWAsIHsgcmVhc29uOiBlcnJvci5jb2RlIH0pO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdChFUlJPUl9DT0RFUy5BVVRIRU5USUNBVElPTik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGF4aW9zLmlzQXhpb3NFcnJvcihlcnJvcikpIHtcbiAgICAgICAgICBjb25zdCBzdGF0dXMgPSBlcnJvci5yZXNwb25zZT8uc3RhdHVzO1xuICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSAoZXJyb3IucmVzcG9uc2U/LmRhdGEgYXMgeyBtZXNzYWdlPzogc3RyaW5nIH0pPy5tZXNzYWdlO1xuICAgICAgICAgIHByaW50RXJyb3IoJ0NyZWF0ZSBrZXkgZmFpbGVkJywge1xuICAgICAgICAgICAgc3RhdHVzOiBzdGF0dXMgPz8gJ25vIHJlc3BvbnNlJyxcbiAgICAgICAgICAgIC4uLihtZXNzYWdlID8geyBtZXNzYWdlIH0gOiB7fSksXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcHJvY2Vzcy5leGl0KEVSUk9SX0NPREVTLkFVVEhFTlRJQ0FUSU9OKTtcbiAgICAgICAgfVxuICAgICAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuQVBJX1JFUVVFU1QsIHtcbiAgICAgICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgICAgICBjb250ZXh0OiB7IGNvbW1hbmQ6ICdjcmVhdGUtcGF0JywgZXhlY3V0aW9uSWQsIHVybCB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbn1cbiJdfQ==
|
package/dist/commands/login.d.ts
CHANGED
|
@@ -10,8 +10,9 @@ import { Command } from 'commander';
|
|
|
10
10
|
*
|
|
11
11
|
* The session is written to the credential store (`~/.pipeline-manager/
|
|
12
12
|
* credentials.json`, owner-only), so subsequent commands authenticate with no
|
|
13
|
-
* environment variable at all
|
|
14
|
-
*
|
|
13
|
+
* environment variable at all, and the platform is remembered as the active one,
|
|
14
|
+
* so they also talk to the platform the session belongs to. `PLATFORM_TOKEN`
|
|
15
|
+
* still wins when it is set, which is what CI uses — an access key from `auth pat`.
|
|
15
16
|
*
|
|
16
17
|
* @param program - The root Commander program instance to attach the command to.
|
|
17
18
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"login.d.ts","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwH5C"}
|
package/dist/commands/login.js
CHANGED
|
@@ -6,7 +6,8 @@ import pico from 'picocolors';
|
|
|
6
6
|
import { TIMEOUTS } from '../config/cli.constants.js';
|
|
7
7
|
import { assertCredentialTlsAllowed, credentialHttpsAgent, switchOrganization } from '../utils/auth-utils.js';
|
|
8
8
|
import { printCommandHeader, withSslOptions } from '../utils/command-utils.js';
|
|
9
|
-
import {
|
|
9
|
+
import { getApiConfig } from '../utils/config-loader.js';
|
|
10
|
+
import { credentialStorePath, saveSession, setActivePlatform } from '../utils/credential-store.js';
|
|
10
11
|
import { beginDeviceApproval, DeviceAuthError, pollForDeviceToken } from '../utils/device-auth.js';
|
|
11
12
|
import { ERROR_CODES, handleError } from '../utils/error-handler.js';
|
|
12
13
|
import { printError, printInfo, printSuccess } from '../utils/output-utils.js';
|
|
@@ -22,8 +23,9 @@ const { green } = pico;
|
|
|
22
23
|
*
|
|
23
24
|
* The session is written to the credential store (`~/.pipeline-manager/
|
|
24
25
|
* credentials.json`, owner-only), so subsequent commands authenticate with no
|
|
25
|
-
* environment variable at all
|
|
26
|
-
*
|
|
26
|
+
* environment variable at all, and the platform is remembered as the active one,
|
|
27
|
+
* so they also talk to the platform the session belongs to. `PLATFORM_TOKEN`
|
|
28
|
+
* still wins when it is set, which is what CI uses — an access key from `auth pat`.
|
|
27
29
|
*
|
|
28
30
|
* @param program - The root Commander program instance to attach the command to.
|
|
29
31
|
*
|
|
@@ -41,7 +43,7 @@ export function login(program) {
|
|
|
41
43
|
.description('Sign in through your browser and store the session (device authorization)')
|
|
42
44
|
.option('--org <orgId>', 'Switch to a specific organization after signing in')
|
|
43
45
|
.option('--no-browser', 'Never open a browser — print the verification URL instead')
|
|
44
|
-
.option('--url <url>', 'Platform base URL
|
|
46
|
+
.option('--url <url>', 'Platform base URL (default: PLATFORM_BASE_URL, else the platform you last signed in to, else config.yml)'))
|
|
45
47
|
.option('--quiet', 'Only print the export statement (useful for eval)')
|
|
46
48
|
.option('--token', 'Print ONLY the access token, for `export PLATFORM_TOKEN=$(…)`')
|
|
47
49
|
.action(async (options, command) => {
|
|
@@ -62,9 +64,13 @@ export function login(program) {
|
|
|
62
64
|
// SECURITY: the poll returns session tokens — bearer credentials. Never
|
|
63
65
|
// fetch them over an unverified TLS connection in production.
|
|
64
66
|
assertCredentialTlsAllowed(options.verifySsl);
|
|
67
|
+
// Resolved at run time (not as a Commander default, which is evaluated when
|
|
68
|
+
// the command is registered) so it honours the same layers every other
|
|
69
|
+
// command reads: PLATFORM_BASE_URL, the last sign-in, then config.yml.
|
|
70
|
+
const url = options.url ?? getApiConfig().api.baseUrl;
|
|
65
71
|
try {
|
|
66
72
|
const transport = {
|
|
67
|
-
url
|
|
73
|
+
url,
|
|
68
74
|
httpsAgent: credentialHttpsAgent(options.verifySsl),
|
|
69
75
|
timeout: TIMEOUTS.HTTP_REQUEST,
|
|
70
76
|
};
|
|
@@ -83,7 +89,7 @@ export function login(program) {
|
|
|
83
89
|
if (!quiet)
|
|
84
90
|
printInfo('Switching to organization', { orgId: options.org });
|
|
85
91
|
const switched = await switchOrganization({
|
|
86
|
-
url
|
|
92
|
+
url,
|
|
87
93
|
orgId: options.org,
|
|
88
94
|
accessToken,
|
|
89
95
|
httpsAgent: transport.httpsAgent,
|
|
@@ -94,12 +100,15 @@ export function login(program) {
|
|
|
94
100
|
refreshToken = switched.refreshToken ?? refreshToken;
|
|
95
101
|
expiresIn = switched.expiresIn ?? expiresIn;
|
|
96
102
|
}
|
|
97
|
-
saveSession(
|
|
103
|
+
saveSession(url, {
|
|
98
104
|
accessToken,
|
|
99
105
|
...(refreshToken ? { refreshToken } : {}),
|
|
100
106
|
expiresAt: Date.now() + expiresIn * 1000,
|
|
101
107
|
...(options.org ? { organizationId: options.org } : {}),
|
|
102
108
|
});
|
|
109
|
+
// Later commands resolve their base URL from this, so they find the
|
|
110
|
+
// session just stored (see config-loader's layer 4).
|
|
111
|
+
setActivePlatform(url);
|
|
103
112
|
if (tokenOnly) {
|
|
104
113
|
// The token and NOTHING else — the caller writes the export.
|
|
105
114
|
console.log(accessToken);
|
|
@@ -119,7 +128,7 @@ export function login(program) {
|
|
|
119
128
|
printInfo('Tip: to export it into this shell instead:');
|
|
120
129
|
console.log(green(` export PLATFORM_TOKEN=$(pipeline-manager auth login${options.org ? ` --org ${options.org}` : ''} --token)`));
|
|
121
130
|
console.log('');
|
|
122
|
-
printInfo('Sign this device out
|
|
131
|
+
printInfo('Sign this device out with "pipeline-manager auth logout" (or from Settings → Sessions and devices).');
|
|
123
132
|
}
|
|
124
133
|
catch (error) {
|
|
125
134
|
if (error instanceof DeviceAuthError) {
|
|
@@ -135,9 +144,9 @@ export function login(program) {
|
|
|
135
144
|
handleError(error, ERROR_CODES.AUTHENTICATION, {
|
|
136
145
|
debug: program.opts().debug,
|
|
137
146
|
exit: true,
|
|
138
|
-
context: { command: 'login', executionId, url
|
|
147
|
+
context: { command: 'login', executionId, url },
|
|
139
148
|
});
|
|
140
149
|
}
|
|
141
150
|
});
|
|
142
151
|
}
|
|
143
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9sb2dpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sSUFBSSxNQUFNLFlBQVksQ0FBQztBQUM5QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLG9CQUFvQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkcsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUvRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBRXZCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUNILE1BQU0sVUFBVSxLQUFLLENBQUMsT0FBZ0I7SUFDcEMsY0FBYyxDQUFDLE9BQU87U0FDbkIsT0FBTyxDQUFDLE9BQU8sQ0FBQztTQUNoQixXQUFXLENBQUMsMkVBQTJFLENBQUM7U0FDeEYsTUFBTSxDQUFDLGVBQWUsRUFBRSxvREFBb0QsQ0FBQztTQUM3RSxNQUFNLENBQUMsY0FBYyxFQUFFLDJEQUEyRCxDQUFDO1NBQ25GLE1BQU0sQ0FB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ZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHBpY28gZnJvbSAncGljb2NvbG9ycyc7XG5pbXBvcnQgeyBUSU1FT1VUUyB9IGZyb20gJy4uL2NvbmZpZy9jbGkuY29uc3RhbnRzLmpzJztcbmltcG9ydCB7IGFzc2VydENyZWRlbnRpYWxUbHNBbGxvd2VkLCBjcmVkZW50aWFsSHR0cHNBZ2VudCwgc3dpdGNoT3JnYW5pemF0aW9uIH0gZnJvbSAnLi4vdXRpbHMvYXV0aC11dGlscy5qcyc7XG5pbXBvcnQgeyBwcmludENvbW1hbmRIZWFkZXIsIHdpdGhTc2xPcHRpb25zIH0gZnJvbSAnLi4vdXRpbHMvY29tbWFuZC11dGlscy5qcyc7XG5pbXBvcnQgeyBjcmVkZW50aWFsU3RvcmVQYXRoLCBzYXZlU2Vzc2lvbiB9IGZyb20gJy4uL3V0aWxzL2NyZWRlbnRpYWwtc3RvcmUuanMnO1xuaW1wb3J0IHsgYmVnaW5EZXZpY2VBcHByb3ZhbCwgRGV2aWNlQXV0aEVycm9yLCBwb2xsRm9yRGV2aWNlVG9rZW4gfSBmcm9tICcuLi91dGlscy9kZXZpY2UtYXV0aC5qcyc7XG5pbXBvcnQgeyBFUlJPUl9DT0RFUywgaGFuZGxlRXJyb3IgfSBmcm9tICcuLi91dGlscy9lcnJvci1oYW5kbGVyLmpzJztcbmltcG9ydCB7IHByaW50RXJyb3IsIHByaW50SW5mbywgcHJpbnRTdWNjZXNzIH0gZnJvbSAnLi4vdXRpbHMvb3V0cHV0LXV0aWxzLmpzJztcblxuY29uc3QgeyBncmVlbiB9ID0gcGljbztcblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIGBsb2dpbmAgY29tbWFuZCB3aXRoIHRoZSBDTEkgcHJvZ3JhbS5cbiAqXG4gKiBTaWducyBpbiB3aXRoIHRoZSBPQXV0aCAyLjAgZGV2aWNlIGF1dGhvcml6YXRpb24gZ3JhbnQgKFJGQyA4NjI4KTogdGhlIENMSVxuICogc2hvd3MgYSBzaG9ydCBjb2RlLCB0aGUgcGVyc29uIGFwcHJvdmVzIGl0IGluIGEgYnJvd3NlciwgYW5kIHRoZSBDTEkgcmVjZWl2ZXNcbiAqIGFuIG9yZGluYXJ5IHNlc3Npb24uIFRoZXJlIGlzIG5vIHBhc3N3b3JkIGZsYWcgYW5kIG5vIHdheSB0byBoYW5kIHRoZSBDTEkgYVxuICogcmVmcmVzaCB0b2tlbiDigJQgYm90aCBlbmQgdXAgaW4gc2hlbGwgaGlzdG9yeSwgYHBzYCBvdXRwdXQgYW5kIENJIGxvZ3MsIGFuZFxuICogYm90aCBza2lwIHRoZSBTU08gLyBzdGVwLXVwIC8gTUZBIHRoZSBicm93c2VyIGFscmVhZHkgZW5mb3JjZXMuXG4gKlxuICogVGhlIHNlc3Npb24gaXMgd3JpdHRlbiB0byB0aGUgY3JlZGVudGlhbCBzdG9yZSAoYH4vLnBpcGVsaW5lLW1hbmFnZXIvXG4gKiBjcmVkZW50aWFscy5qc29uYCwgb3duZXItb25seSksIHNvIHN1YnNlcXVlbnQgY29tbWFuZHMgYXV0aGVudGljYXRlIHdpdGggbm9cbiAqIGVudmlyb25tZW50IHZhcmlhYmxlIGF0IGFsbC4gYFBMQVRGT1JNX1RPS0VOYCBzdGlsbCB3aW5zIHdoZW4gaXQgaXMgc2V0LCB3aGljaFxuICogaXMgd2hhdCBDSSB1c2VzIOKAlCBhbiBhY2Nlc3Mga2V5IGZyb20gYGF1dGggcGF0YC5cbiAqXG4gKiBAcGFyYW0gcHJvZ3JhbSAtIFRoZSByb290IENvbW1hbmRlciBwcm9ncmFtIGluc3RhbmNlIHRvIGF0dGFjaCB0aGUgY29tbWFuZCB0by5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgYmFzaFxuICogcGlwZWxpbmUtbWFuYWdlciBhdXRoIGxvZ2luXG4gKiBwaXBlbGluZS1tYW5hZ2VyIGF1dGggbG9naW4gLS11cmwgaHR0cHM6Ly9wbGF0Zm9ybS5leGFtcGxlLmNvbSAtLW9yZyA8b3JnSWQ+XG4gKiBwaXBlbGluZS1tYW5hZ2VyIGF1dGggbG9naW4gLS1uby1icm93c2VyICAgICAgIyBwcmludCB0aGUgVVJMIGluc3RlYWQgb2Ygb3BlbmluZyBpdFxuICogZXZhbCAkKHBpcGVsaW5lLW1hbmFnZXIgYXV0aCBsb2dpbiAtLXF1aWV0KSAgICMgYWxzbyBleHBvcnQgUExBVEZPUk1fVE9LRU5cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9naW4ocHJvZ3JhbTogQ29tbWFuZCk6IHZvaWQge1xuICB3aXRoU3NsT3B0aW9ucyhwcm9ncmFtXG4gICAgLmNvbW1hbmQoJ2xvZ2luJylcbiAgICAuZGVzY3JpcHRpb24oJ1NpZ24gaW4gdGhyb3VnaCB5b3VyIGJyb3dzZXIgYW5kIHN0b3JlIHRoZSBzZXNzaW9uIChkZXZpY2UgYXV0aG9yaXphdGlvbiknKVxuICAgIC5vcHRpb24oJy0tb3JnIDxvcmdJZD4nLCAnU3dpdGNoIHRvIGEgc3BlY2lmaWMgb3JnYW5pemF0aW9uIGFmdGVyIHNpZ25pbmcgaW4nKVxuICAgIC5vcHRpb24oJy0tbm8tYnJvd3NlcicsICdOZXZlciBvcGVuIGEgYnJvd3NlciDigJQgcHJpbnQgdGhlIHZlcmlmaWNhdGlvbiBVUkwgaW5zdGVhZCcpXG4gICAgLm9wdGlvbignLS11cmwgPHVybD4nLCAnUGxhdGZvcm0gYmFzZSBVUkwnLCBwcm9jZXNzLmVudi5QTEFURk9STV9CQVNFX1VSTCB8fCAnaHR0cHM6Ly9sb2NhbGhvc3Q6ODQ0MycpKVxuICAgIC5vcHRpb24oJy0tcXVpZXQnLCAnT25seSBwcmludCB0aGUgZXhwb3J0IHN0YXRlbWVudCAodXNlZnVsIGZvciBldmFsKScpXG4gICAgLm9wdGlvbignLS10b2tlbicsICdQcmludCBPTkxZIHRoZSBhY2Nlc3MgdG9rZW4sIGZvciBgZXhwb3J0IFBMQVRGT1JNX1RPS0VOPSQo4oCmKWAnKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMsIGNvbW1hbmQ6IENvbW1hbmQpID0+IHtcbiAgICAgIC8vIGAtLXF1aWV0YCBpcyBBTFNPIGEgcHJvZ3JhbS1sZXZlbCBvcHRpb24sIGFuZCBDb21tYW5kZXIgYmluZHMgYSB0cmFpbGluZ1xuICAgICAgLy8gYC0tcXVpZXRgIHRvIHRoZSBwcm9ncmFtIHJhdGhlciB0aGFuIHRvIHRoaXMgc3ViY29tbWFuZCDigJQgc29cbiAgICAgIC8vIGBvcHRpb25zLnF1aWV0YCBoZXJlIGlzIG5ldmVyIHNldCBhbmQgdGhlIGRvY3VtZW50ZWRcbiAgICAgIC8vIGBldmFsICQocGlwZWxpbmUtbWFuYWdlciBhdXRoIGxvZ2luIC0tcXVpZXQpYCBjb3VsZCBub3Qgd29yay4gUmVhZCB0aGVcbiAgICAgIC8vIHZhbHVlIHRoYXQgYWN0dWFsbHkgbGFuZHM6IHRoaXMgY29tbWFuZCdzIG93biBmbGFnIGlmIENvbW1hbmRlciBldmVyXG4gICAgICAvLyBnaXZlcyBpdCB0byB1cywgZWxzZSB0aGUgcm9vdCBwcm9ncmFtJ3MuXG4gICAgICBjb25zdCByb290UXVpZXQgPSAoY29tbWFuZD8ucGFyZW50Py5wYXJlbnQgYXMgQ29tbWFuZCB8IHVuZGVmaW5lZCk/Lm9wdHM/LigpLnF1aWV0O1xuICAgICAgLy8gYC0tdG9rZW5gIHByaW50cyB0aGUgYmFyZSB0b2tlbiBmb3IgYCQo4oCmKWAgY2FwdHVyZSwgc28gaXQgc2lsZW5jZXMgdGhlXG4gICAgICAvLyBzYW1lIGNocm9tZSBgLS1xdWlldGAgZG9lcy4gUmVhZCBmcm9tIGFyZ3YgYXMgd2VsbDogdGhlIGJhbm5lciBpc1xuICAgICAgLy8gZGVjaWRlZCBmcm9tIGFyZ3YgYmVmb3JlIENvbW1hbmRlciBwYXJzZXMgKHNlZSBjbGkudHMncyBlbnRyeSksIHNvIHRoZVxuICAgICAgLy8gdHdvIGhhdmUgdG8gYWdyZWUgb3IgdGhlIGJhbm5lciBsYW5kcyBvbiBzdGRvdXQgYW5kIHBvaXNvbnMgdGhlIGNhcHR1cmUuXG4gICAgICBjb25zdCB0b2tlbk9ubHkgPSAob3B0aW9ucy50b2tlbiA/PyBwcm9jZXNzLmFyZ3YuaW5jbHVkZXMoJy0tdG9rZW4nKSkgYXMgYm9vbGVhbjtcbiAgICAgIGNvbnN0IHF1aWV0ID0gKG9wdGlvbnMucXVpZXQgPz8gcm9vdFF1aWV0ID8/IGZhbHNlKSBhcyBib29sZWFuIHx8IHRva2VuT25seTtcbiAgICAgIGNvbnN0IGV4ZWN1dGlvbklkID0gcHJpbnRDb21tYW5kSGVhZGVyKCdMb2dpbicsICdQbGF0Zm9ybSBBdXRoZW50aWNhdGlvbicsIHsgcXVpZXQgfSk7XG5cbiAgICAgIC8vIFNFQ1VSSVRZOiB0aGUgcG9sbCByZXR1cm5zIHNlc3Npb24gdG9rZW5zIOKAlCBiZWFyZXIgY3JlZGVudGlhbHMuIE5ldmVyXG4gICAgICAvLyBmZXRjaCB0aGVtIG92ZXIgYW4gdW52ZXJpZmllZCBUTFMgY29ubmVjdGlvbiBpbiBwcm9kdWN0aW9uLlxuICAgICAgYXNzZXJ0Q3JlZGVudGlhbFRsc0FsbG93ZWQob3B0aW9ucy52ZXJpZnlTc2wpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB0cmFuc3BvcnQgPSB7XG4gICAgICAgICAgdXJsOiBvcHRpb25zLnVybCxcbiAgICAgICAgICBodHRwc0FnZW50OiBjcmVkZW50aWFsSHR0cHNBZ2VudChvcHRpb25zLnZlcmlmeVNzbCksXG4gICAgICAgICAgdGltZW91dDogVElNRU9VVFMuSFRUUF9SRVFVRVNULFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGNvZGUgPSBhd2FpdCBiZWdpbkRldmljZUFwcHJvdmFsKHRyYW5zcG9ydCwge1xuICAgICAgICAgIHF1aWV0LFxuICAgICAgICAgIGJyb3dzZXI6IG9wdGlvbnMuYnJvd3NlcixcbiAgICAgICAgICB2ZXJpZnlTc2w6IG9wdGlvbnMudmVyaWZ5U3NsLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBzZXNzaW9uID0gYXdhaXQgcG9sbEZvckRldmljZVRva2VuKHRyYW5zcG9ydCwgY29kZSk7XG5cbiAgICAgICAgbGV0IGFjY2Vzc1Rva2VuID0gc2Vzc2lvbi5hY2Nlc3NfdG9rZW47XG4gICAgICAgIGxldCByZWZyZXNoVG9rZW4gPSBzZXNzaW9uLnJlZnJlc2hfdG9rZW47XG4gICAgICAgIGxldCBleHBpcmVzSW4gPSBzZXNzaW9uLmV4cGlyZXNfaW47XG5cbiAgICAgICAgLy8gU3dpdGNoaW5nIHJlLWlzc3VlcyAoYW5kIHJvdGF0ZXMpIHRoZSBzZXNzaW9uLCBzbyB0aGUgc3RvcmUgaGFzIHRvIHRha2VcbiAgICAgICAgLy8gdGhlIE5FVyBwYWlyIOKAlCBrZWVwaW5nIHRoZSBvbGQgcmVmcmVzaCB0b2tlbiB3b3VsZCBzdHJhbmQgdGhlIHNlc3Npb24uXG4gICAgICAgIGlmIChvcHRpb25zLm9yZykge1xuICAgICAgICAgIGlmICghcXVpZXQpIHByaW50SW5mbygnU3dpdGNoaW5nIHRvIG9yZ2FuaXphdGlvbicsIHsgb3JnSWQ6IG9wdGlvbnMub3JnIH0pO1xuICAgICAgICAgIGNvbnN0IHN3aXRjaGVkID0gYXdhaXQgc3dpdGNoT3JnYW5pemF0aW9uKHtcbiAgICAgICAgICAgIHVybDogb3B0aW9ucy51cmwsXG4gICAgICAgICAgICBvcmdJZDogb3B0aW9ucy5vcmcsXG4gICAgICAgICAgICBhY2Nlc3NUb2tlbixcbiAgICAgICAgICAgIGh0dHBzQWdlbnQ6IHRyYW5zcG9ydC5odHRwc0FnZW50LFxuICAgICAgICAgICAgdGltZW91dDogVElNRU9VVFMuSFRUUF9SRVFVRVNULFxuICAgICAgICAgICAgcXVpZXQsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYWNjZXNzVG9rZW4gPSBzd2l0Y2hlZC5hY2Nlc3NUb2tlbjtcbiAgICAgICAgICByZWZyZXNoVG9rZW4gPSBzd2l0Y2hlZC5yZWZyZXNoVG9rZW4gPz8gcmVmcmVzaFRva2VuO1xuICAgICAgICAgIGV4cGlyZXNJbiA9IHN3aXRjaGVkLmV4cGlyZXNJbiA/PyBleHBpcmVzSW47XG4gICAgICAgIH1cblxuICAgICAgICBzYXZlU2Vzc2lvbihvcHRpb25zLnVybCwge1xuICAgICAgICAgIGFjY2Vzc1Rva2VuLFxuICAgICAgICAgIC4uLihyZWZyZXNoVG9rZW4gPyB7IHJlZnJlc2hUb2tlbiB9IDoge30pLFxuICAgICAgICAgIGV4cGlyZXNBdDogRGF0ZS5ub3coKSArIGV4cGlyZXNJbiAqIDEwMDAsXG4gICAgICAgICAgLi4uKG9wdGlvbnMub3JnID8geyBvcmdhbml6YXRpb25JZDogb3B0aW9ucy5vcmcgfSA6IHt9KSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRva2VuT25seSkge1xuICAgICAgICAgIC8vIFRoZSB0b2tlbiBhbmQgTk9USElORyBlbHNlIOKAlCB0aGUgY2FsbGVyIHdyaXRlcyB0aGUgZXhwb3J0LlxuICAgICAgICAgIGNvbnNvbGUubG9nKGFjY2Vzc1Rva2VuKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHF1aWV0KSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYGV4cG9ydCBQTEFURk9STV9UT0tFTj0ke2FjY2Vzc1Rva2VufWApO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRTdWNjZXNzKCdTaWduZWQgaW4nKTtcbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBwcmludEluZm8oJ1RoZSBzZXNzaW9uIGlzIHN0b3JlZCBmb3IgdGhpcyBwbGF0Zm9ybSDigJQgb3RoZXIgY29tbWFuZHMgcGljayBpdCB1cCBhdXRvbWF0aWNhbGx5LicsIHtcbiAgICAgICAgICBzdG9yZTogY3JlZGVudGlhbFN0b3JlUGF0aCgpLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBwcmludEluZm8oJ1RpcDogdG8gZXhwb3J0IGl0IGludG8gdGhpcyBzaGVsbCBpbnN0ZWFkOicpO1xuICAgICAgICBjb25zb2xlLmxvZyhncmVlbihgICBleHBvcnQgUExBVEZPUk1fVE9LRU49JChwaXBlbGluZS1tYW5hZ2VyIGF1dGggbG9naW4ke29wdGlvbnMub3JnID8gYCAtLW9yZyAke29wdGlvbnMub3JnfWAgOiAnJ30gLS10b2tlbilgKSk7XG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRJbmZvKCdTaWduIHRoaXMgZGV2aWNlIG91dCBhZ2FpbiBmcm9tIFNldHRpbmdzIOKGkiBTZXNzaW9ucyBhbmQgZGV2aWNlcy4nKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIERldmljZUF1dGhFcnJvcikge1xuICAgICAgICAgIHByaW50RXJyb3IoYExvZ2luIGZhaWxlZDogJHtlcnJvci5tZXNzYWdlfWAsIHsgcmVhc29uOiBlcnJvci5jb2RlIH0pO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdChFUlJPUl9DT0RFUy5BVVRIRU5USUNBVElPTik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGF4aW9zLmlzQXhpb3NFcnJvcihlcnJvcikpIHtcbiAgICAgICAgICBjb25zdCBzdGF0dXMgPSBlcnJvci5yZXNwb25zZT8uc3RhdHVzO1xuICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSAoZXJyb3IucmVzcG9uc2U/LmRhdGEgYXMgeyBtZXNzYWdlPzogc3RyaW5nIH0pPy5tZXNzYWdlO1xuICAgICAgICAgIHByaW50RXJyb3IoJ0xvZ2luIGZhaWxlZCcsIHsgc3RhdHVzOiBzdGF0dXMgPz8gJ25vIHJlc3BvbnNlJywgLi4uKG1lc3NhZ2UgPyB7IG1lc3NhZ2UgfSA6IHt9KSB9KTtcbiAgICAgICAgICBwcm9jZXNzLmV4aXQoRVJST1JfQ09ERVMuQVVUSEVOVElDQVRJT04pO1xuICAgICAgICB9XG5cbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkFVVEhFTlRJQ0FUSU9OLCB7XG4gICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgIGV4aXQ6IHRydWUsXG4gICAgICAgICAgY29udGV4dDogeyBjb21tYW5kOiAnbG9naW4nLCBleGVjdXRpb25JZCwgdXJsOiBvcHRpb25zLnVybCB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbn1cbiJdfQ==
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9sb2dpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sSUFBSSxNQUFNLFlBQVksQ0FBQztBQUM5QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLG9CQUFvQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25HLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFL0UsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQztBQUV2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JHO0FBQ0gsTUFBTSxVQUFVLEtBQUssQ0FBQyxPQUFnQjtJQUNwQyxjQUFjLENBQUMsT0FBTztTQUNuQixPQUFPLENBQUMsT0FBTyxDQUFDO1NBQ2hCLFdBQVcsQ0FBQywyRUFBMkUsQ0FBQztTQUN4RixNQUFNLENBQUMsZUFBZSxFQUFFLG9EQUFvRCxD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RSxHQUFHLEVBQUU7YUFDaEQsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgcGljbyBmcm9tICdwaWNvY29sb3JzJztcbmltcG9ydCB7IFRJTUVPVVRTIH0gZnJvbSAnLi4vY29uZmlnL2NsaS5jb25zdGFudHMuanMnO1xuaW1wb3J0IHsgYXNzZXJ0Q3JlZGVudGlhbFRsc0FsbG93ZWQsIGNyZWRlbnRpYWxIdHRwc0FnZW50LCBzd2l0Y2hPcmdhbml6YXRpb24gfSBmcm9tICcuLi91dGlscy9hdXRoLXV0aWxzLmpzJztcbmltcG9ydCB7IHByaW50Q29tbWFuZEhlYWRlciwgd2l0aFNzbE9wdGlvbnMgfSBmcm9tICcuLi91dGlscy9jb21tYW5kLXV0aWxzLmpzJztcbmltcG9ydCB7IGdldEFwaUNvbmZpZyB9IGZyb20gJy4uL3V0aWxzL2NvbmZpZy1sb2FkZXIuanMnO1xuaW1wb3J0IHsgY3JlZGVudGlhbFN0b3JlUGF0aCwgc2F2ZVNlc3Npb24sIHNldEFjdGl2ZVBsYXRmb3JtIH0gZnJvbSAnLi4vdXRpbHMvY3JlZGVudGlhbC1zdG9yZS5qcyc7XG5pbXBvcnQgeyBiZWdpbkRldmljZUFwcHJvdmFsLCBEZXZpY2VBdXRoRXJyb3IsIHBvbGxGb3JEZXZpY2VUb2tlbiB9IGZyb20gJy4uL3V0aWxzL2RldmljZS1hdXRoLmpzJztcbmltcG9ydCB7IEVSUk9SX0NPREVTLCBoYW5kbGVFcnJvciB9IGZyb20gJy4uL3V0aWxzL2Vycm9yLWhhbmRsZXIuanMnO1xuaW1wb3J0IHsgcHJpbnRFcnJvciwgcHJpbnRJbmZvLCBwcmludFN1Y2Nlc3MgfSBmcm9tICcuLi91dGlscy9vdXRwdXQtdXRpbHMuanMnO1xuXG5jb25zdCB7IGdyZWVuIH0gPSBwaWNvO1xuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgYGxvZ2luYCBjb21tYW5kIHdpdGggdGhlIENMSSBwcm9ncmFtLlxuICpcbiAqIFNpZ25zIGluIHdpdGggdGhlIE9BdXRoIDIuMCBkZXZpY2UgYXV0aG9yaXphdGlvbiBncmFudCAoUkZDIDg2MjgpOiB0aGUgQ0xJXG4gKiBzaG93cyBhIHNob3J0IGNvZGUsIHRoZSBwZXJzb24gYXBwcm92ZXMgaXQgaW4gYSBicm93c2VyLCBhbmQgdGhlIENMSSByZWNlaXZlc1xuICogYW4gb3JkaW5hcnkgc2Vzc2lvbi4gVGhlcmUgaXMgbm8gcGFzc3dvcmQgZmxhZyBhbmQgbm8gd2F5IHRvIGhhbmQgdGhlIENMSSBhXG4gKiByZWZyZXNoIHRva2VuIOKAlCBib3RoIGVuZCB1cCBpbiBzaGVsbCBoaXN0b3J5LCBgcHNgIG91dHB1dCBhbmQgQ0kgbG9ncywgYW5kXG4gKiBib3RoIHNraXAgdGhlIFNTTyAvIHN0ZXAtdXAgLyBNRkEgdGhlIGJyb3dzZXIgYWxyZWFkeSBlbmZvcmNlcy5cbiAqXG4gKiBUaGUgc2Vzc2lvbiBpcyB3cml0dGVuIHRvIHRoZSBjcmVkZW50aWFsIHN0b3JlIChgfi8ucGlwZWxpbmUtbWFuYWdlci9cbiAqIGNyZWRlbnRpYWxzLmpzb25gLCBvd25lci1vbmx5KSwgc28gc3Vic2VxdWVudCBjb21tYW5kcyBhdXRoZW50aWNhdGUgd2l0aCBub1xuICogZW52aXJvbm1lbnQgdmFyaWFibGUgYXQgYWxsLCBhbmQgdGhlIHBsYXRmb3JtIGlzIHJlbWVtYmVyZWQgYXMgdGhlIGFjdGl2ZSBvbmUsXG4gKiBzbyB0aGV5IGFsc28gdGFsayB0byB0aGUgcGxhdGZvcm0gdGhlIHNlc3Npb24gYmVsb25ncyB0by4gYFBMQVRGT1JNX1RPS0VOYFxuICogc3RpbGwgd2lucyB3aGVuIGl0IGlzIHNldCwgd2hpY2ggaXMgd2hhdCBDSSB1c2VzIOKAlCBhbiBhY2Nlc3Mga2V5IGZyb20gYGF1dGggcGF0YC5cbiAqXG4gKiBAcGFyYW0gcHJvZ3JhbSAtIFRoZSByb290IENvbW1hbmRlciBwcm9ncmFtIGluc3RhbmNlIHRvIGF0dGFjaCB0aGUgY29tbWFuZCB0by5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgYmFzaFxuICogcGlwZWxpbmUtbWFuYWdlciBhdXRoIGxvZ2luXG4gKiBwaXBlbGluZS1tYW5hZ2VyIGF1dGggbG9naW4gLS11cmwgaHR0cHM6Ly9wbGF0Zm9ybS5leGFtcGxlLmNvbSAtLW9yZyA8b3JnSWQ+XG4gKiBwaXBlbGluZS1tYW5hZ2VyIGF1dGggbG9naW4gLS1uby1icm93c2VyICAgICAgIyBwcmludCB0aGUgVVJMIGluc3RlYWQgb2Ygb3BlbmluZyBpdFxuICogZXZhbCAkKHBpcGVsaW5lLW1hbmFnZXIgYXV0aCBsb2dpbiAtLXF1aWV0KSAgICMgYWxzbyBleHBvcnQgUExBVEZPUk1fVE9LRU5cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9naW4ocHJvZ3JhbTogQ29tbWFuZCk6IHZvaWQge1xuICB3aXRoU3NsT3B0aW9ucyhwcm9ncmFtXG4gICAgLmNvbW1hbmQoJ2xvZ2luJylcbiAgICAuZGVzY3JpcHRpb24oJ1NpZ24gaW4gdGhyb3VnaCB5b3VyIGJyb3dzZXIgYW5kIHN0b3JlIHRoZSBzZXNzaW9uIChkZXZpY2UgYXV0aG9yaXphdGlvbiknKVxuICAgIC5vcHRpb24oJy0tb3JnIDxvcmdJZD4nLCAnU3dpdGNoIHRvIGEgc3BlY2lmaWMgb3JnYW5pemF0aW9uIGFmdGVyIHNpZ25pbmcgaW4nKVxuICAgIC5vcHRpb24oJy0tbm8tYnJvd3NlcicsICdOZXZlciBvcGVuIGEgYnJvd3NlciDigJQgcHJpbnQgdGhlIHZlcmlmaWNhdGlvbiBVUkwgaW5zdGVhZCcpXG4gICAgLm9wdGlvbignLS11cmwgPHVybD4nLCAnUGxhdGZvcm0gYmFzZSBVUkwgKGRlZmF1bHQ6IFBMQVRGT1JNX0JBU0VfVVJMLCBlbHNlIHRoZSBwbGF0Zm9ybSB5b3UgbGFzdCBzaWduZWQgaW4gdG8sIGVsc2UgY29uZmlnLnltbCknKSlcbiAgICAub3B0aW9uKCctLXF1aWV0JywgJ09ubHkgcHJpbnQgdGhlIGV4cG9ydCBzdGF0ZW1lbnQgKHVzZWZ1bCBmb3IgZXZhbCknKVxuICAgIC5vcHRpb24oJy0tdG9rZW4nLCAnUHJpbnQgT05MWSB0aGUgYWNjZXNzIHRva2VuLCBmb3IgYGV4cG9ydCBQTEFURk9STV9UT0tFTj0kKOKApilgJylcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zLCBjb21tYW5kOiBDb21tYW5kKSA9PiB7XG4gICAgICAvLyBgLS1xdWlldGAgaXMgQUxTTyBhIHByb2dyYW0tbGV2ZWwgb3B0aW9uLCBhbmQgQ29tbWFuZGVyIGJpbmRzIGEgdHJhaWxpbmdcbiAgICAgIC8vIGAtLXF1aWV0YCB0byB0aGUgcHJvZ3JhbSByYXRoZXIgdGhhbiB0byB0aGlzIHN1YmNvbW1hbmQg4oCUIHNvXG4gICAgICAvLyBgb3B0aW9ucy5xdWlldGAgaGVyZSBpcyBuZXZlciBzZXQgYW5kIHRoZSBkb2N1bWVudGVkXG4gICAgICAvLyBgZXZhbCAkKHBpcGVsaW5lLW1hbmFnZXIgYXV0aCBsb2dpbiAtLXF1aWV0KWAgY291bGQgbm90IHdvcmsuIFJlYWQgdGhlXG4gICAgICAvLyB2YWx1ZSB0aGF0IGFjdHVhbGx5IGxhbmRzOiB0aGlzIGNvbW1hbmQncyBvd24gZmxhZyBpZiBDb21tYW5kZXIgZXZlclxuICAgICAgLy8gZ2l2ZXMgaXQgdG8gdXMsIGVsc2UgdGhlIHJvb3QgcHJvZ3JhbSdzLlxuICAgICAgY29uc3Qgcm9vdFF1aWV0ID0gKGNvbW1hbmQ/LnBhcmVudD8ucGFyZW50IGFzIENvbW1hbmQgfCB1bmRlZmluZWQpPy5vcHRzPy4oKS5xdWlldDtcbiAgICAgIC8vIGAtLXRva2VuYCBwcmludHMgdGhlIGJhcmUgdG9rZW4gZm9yIGAkKOKApilgIGNhcHR1cmUsIHNvIGl0IHNpbGVuY2VzIHRoZVxuICAgICAgLy8gc2FtZSBjaHJvbWUgYC0tcXVpZXRgIGRvZXMuIFJlYWQgZnJvbSBhcmd2IGFzIHdlbGw6IHRoZSBiYW5uZXIgaXNcbiAgICAgIC8vIGRlY2lkZWQgZnJvbSBhcmd2IGJlZm9yZSBDb21tYW5kZXIgcGFyc2VzIChzZWUgY2xpLnRzJ3MgZW50cnkpLCBzbyB0aGVcbiAgICAgIC8vIHR3byBoYXZlIHRvIGFncmVlIG9yIHRoZSBiYW5uZXIgbGFuZHMgb24gc3Rkb3V0IGFuZCBwb2lzb25zIHRoZSBjYXB0dXJlLlxuICAgICAgY29uc3QgdG9rZW5Pbmx5ID0gKG9wdGlvbnMudG9rZW4gPz8gcHJvY2Vzcy5hcmd2LmluY2x1ZGVzKCctLXRva2VuJykpIGFzIGJvb2xlYW47XG4gICAgICBjb25zdCBxdWlldCA9IChvcHRpb25zLnF1aWV0ID8/IHJvb3RRdWlldCA/PyBmYWxzZSkgYXMgYm9vbGVhbiB8fCB0b2tlbk9ubHk7XG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IHByaW50Q29tbWFuZEhlYWRlcignTG9naW4nLCAnUGxhdGZvcm0gQXV0aGVudGljYXRpb24nLCB7IHF1aWV0IH0pO1xuXG4gICAgICAvLyBTRUNVUklUWTogdGhlIHBvbGwgcmV0dXJucyBzZXNzaW9uIHRva2VucyDigJQgYmVhcmVyIGNyZWRlbnRpYWxzLiBOZXZlclxuICAgICAgLy8gZmV0Y2ggdGhlbSBvdmVyIGFuIHVudmVyaWZpZWQgVExTIGNvbm5lY3Rpb24gaW4gcHJvZHVjdGlvbi5cbiAgICAgIGFzc2VydENyZWRlbnRpYWxUbHNBbGxvd2VkKG9wdGlvbnMudmVyaWZ5U3NsKTtcblxuICAgICAgLy8gUmVzb2x2ZWQgYXQgcnVuIHRpbWUgKG5vdCBhcyBhIENvbW1hbmRlciBkZWZhdWx0LCB3aGljaCBpcyBldmFsdWF0ZWQgd2hlblxuICAgICAgLy8gdGhlIGNvbW1hbmQgaXMgcmVnaXN0ZXJlZCkgc28gaXQgaG9ub3VycyB0aGUgc2FtZSBsYXllcnMgZXZlcnkgb3RoZXJcbiAgICAgIC8vIGNvbW1hbmQgcmVhZHM6IFBMQVRGT1JNX0JBU0VfVVJMLCB0aGUgbGFzdCBzaWduLWluLCB0aGVuIGNvbmZpZy55bWwuXG4gICAgICBjb25zdCB1cmw6IHN0cmluZyA9IG9wdGlvbnMudXJsID8/IGdldEFwaUNvbmZpZygpLmFwaS5iYXNlVXJsO1xuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB0cmFuc3BvcnQgPSB7XG4gICAgICAgICAgdXJsLFxuICAgICAgICAgIGh0dHBzQWdlbnQ6IGNyZWRlbnRpYWxIdHRwc0FnZW50KG9wdGlvbnMudmVyaWZ5U3NsKSxcbiAgICAgICAgICB0aW1lb3V0OiBUSU1FT1VUUy5IVFRQX1JFUVVFU1QsXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgY29kZSA9IGF3YWl0IGJlZ2luRGV2aWNlQXBwcm92YWwodHJhbnNwb3J0LCB7XG4gICAgICAgICAgcXVpZXQsXG4gICAgICAgICAgYnJvd3Nlcjogb3B0aW9ucy5icm93c2VyLFxuICAgICAgICAgIHZlcmlmeVNzbDogb3B0aW9ucy52ZXJpZnlTc2wsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHNlc3Npb24gPSBhd2FpdCBwb2xsRm9yRGV2aWNlVG9rZW4odHJhbnNwb3J0LCBjb2RlKTtcblxuICAgICAgICBsZXQgYWNjZXNzVG9rZW4gPSBzZXNzaW9uLmFjY2Vzc190b2tlbjtcbiAgICAgICAgbGV0IHJlZnJlc2hUb2tlbiA9IHNlc3Npb24ucmVmcmVzaF90b2tlbjtcbiAgICAgICAgbGV0IGV4cGlyZXNJbiA9IHNlc3Npb24uZXhwaXJlc19pbjtcblxuICAgICAgICAvLyBTd2l0Y2hpbmcgcmUtaXNzdWVzIChhbmQgcm90YXRlcykgdGhlIHNlc3Npb24sIHNvIHRoZSBzdG9yZSBoYXMgdG8gdGFrZVxuICAgICAgICAvLyB0aGUgTkVXIHBhaXIg4oCUIGtlZXBpbmcgdGhlIG9sZCByZWZyZXNoIHRva2VuIHdvdWxkIHN0cmFuZCB0aGUgc2Vzc2lvbi5cbiAgICAgICAgaWYgKG9wdGlvbnMub3JnKSB7XG4gICAgICAgICAgaWYgKCFxdWlldCkgcHJpbnRJbmZvKCdTd2l0Y2hpbmcgdG8gb3JnYW5pemF0aW9uJywgeyBvcmdJZDogb3B0aW9ucy5vcmcgfSk7XG4gICAgICAgICAgY29uc3Qgc3dpdGNoZWQgPSBhd2FpdCBzd2l0Y2hPcmdhbml6YXRpb24oe1xuICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgb3JnSWQ6IG9wdGlvbnMub3JnLFxuICAgICAgICAgICAgYWNjZXNzVG9rZW4sXG4gICAgICAgICAgICBodHRwc0FnZW50OiB0cmFuc3BvcnQuaHR0cHNBZ2VudCxcbiAgICAgICAgICAgIHRpbWVvdXQ6IFRJTUVPVVRTLkhUVFBfUkVRVUVTVCxcbiAgICAgICAgICAgIHF1aWV0LFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGFjY2Vzc1Rva2VuID0gc3dpdGNoZWQuYWNjZXNzVG9rZW47XG4gICAgICAgICAgcmVmcmVzaFRva2VuID0gc3dpdGNoZWQucmVmcmVzaFRva2VuID8/IHJlZnJlc2hUb2tlbjtcbiAgICAgICAgICBleHBpcmVzSW4gPSBzd2l0Y2hlZC5leHBpcmVzSW4gPz8gZXhwaXJlc0luO1xuICAgICAgICB9XG5cbiAgICAgICAgc2F2ZVNlc3Npb24odXJsLCB7XG4gICAgICAgICAgYWNjZXNzVG9rZW4sXG4gICAgICAgICAgLi4uKHJlZnJlc2hUb2tlbiA/IHsgcmVmcmVzaFRva2VuIH0gOiB7fSksXG4gICAgICAgICAgZXhwaXJlc0F0OiBEYXRlLm5vdygpICsgZXhwaXJlc0luICogMTAwMCxcbiAgICAgICAgICAuLi4ob3B0aW9ucy5vcmcgPyB7IG9yZ2FuaXphdGlvbklkOiBvcHRpb25zLm9yZyB9IDoge30pLFxuICAgICAgICB9KTtcbiAgICAgICAgLy8gTGF0ZXIgY29tbWFuZHMgcmVzb2x2ZSB0aGVpciBiYXNlIFVSTCBmcm9tIHRoaXMsIHNvIHRoZXkgZmluZCB0aGVcbiAgICAgICAgLy8gc2Vzc2lvbiBqdXN0IHN0b3JlZCAoc2VlIGNvbmZpZy1sb2FkZXIncyBsYXllciA0KS5cbiAgICAgICAgc2V0QWN0aXZlUGxhdGZvcm0odXJsKTtcblxuICAgICAgICBpZiAodG9rZW5Pbmx5KSB7XG4gICAgICAgICAgLy8gVGhlIHRva2VuIGFuZCBOT1RISU5HIGVsc2Ug4oCUIHRoZSBjYWxsZXIgd3JpdGVzIHRoZSBleHBvcnQuXG4gICAgICAgICAgY29uc29sZS5sb2coYWNjZXNzVG9rZW4pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAocXVpZXQpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgZXhwb3J0IFBMQVRGT1JNX1RPS0VOPSR7YWNjZXNzVG9rZW59YCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBwcmludFN1Y2Nlc3MoJ1NpZ25lZCBpbicpO1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50SW5mbygnVGhlIHNlc3Npb24gaXMgc3RvcmVkIGZvciB0aGlzIHBsYXRmb3JtIOKAlCBvdGhlciBjb21tYW5kcyBwaWNrIGl0IHVwIGF1dG9tYXRpY2FsbHkuJywge1xuICAgICAgICAgIHN0b3JlOiBjcmVkZW50aWFsU3RvcmVQYXRoKCksXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50SW5mbygnVGlwOiB0byBleHBvcnQgaXQgaW50byB0aGlzIHNoZWxsIGluc3RlYWQ6Jyk7XG4gICAgICAgIGNvbnNvbGUubG9nKGdyZWVuKGAgIGV4cG9ydCBQTEFURk9STV9UT0tFTj0kKHBpcGVsaW5lLW1hbmFnZXIgYXV0aCBsb2dpbiR7b3B0aW9ucy5vcmcgPyBgIC0tb3JnICR7b3B0aW9ucy5vcmd9YCA6ICcnfSAtLXRva2VuKWApKTtcbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBwcmludEluZm8oJ1NpZ24gdGhpcyBkZXZpY2Ugb3V0IHdpdGggXCJwaXBlbGluZS1tYW5hZ2VyIGF1dGggbG9nb3V0XCIgKG9yIGZyb20gU2V0dGluZ3Mg4oaSIFNlc3Npb25zIGFuZCBkZXZpY2VzKS4nKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIERldmljZUF1dGhFcnJvcikge1xuICAgICAgICAgIHByaW50RXJyb3IoYExvZ2luIGZhaWxlZDogJHtlcnJvci5tZXNzYWdlfWAsIHsgcmVhc29uOiBlcnJvci5jb2RlIH0pO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdChFUlJPUl9DT0RFUy5BVVRIRU5USUNBVElPTik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGF4aW9zLmlzQXhpb3NFcnJvcihlcnJvcikpIHtcbiAgICAgICAgICBjb25zdCBzdGF0dXMgPSBlcnJvci5yZXNwb25zZT8uc3RhdHVzO1xuICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSAoZXJyb3IucmVzcG9uc2U/LmRhdGEgYXMgeyBtZXNzYWdlPzogc3RyaW5nIH0pPy5tZXNzYWdlO1xuICAgICAgICAgIHByaW50RXJyb3IoJ0xvZ2luIGZhaWxlZCcsIHsgc3RhdHVzOiBzdGF0dXMgPz8gJ25vIHJlc3BvbnNlJywgLi4uKG1lc3NhZ2UgPyB7IG1lc3NhZ2UgfSA6IHt9KSB9KTtcbiAgICAgICAgICBwcm9jZXNzLmV4aXQoRVJST1JfQ09ERVMuQVVUSEVOVElDQVRJT04pO1xuICAgICAgICB9XG5cbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkFVVEhFTlRJQ0FUSU9OLCB7XG4gICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgIGV4aXQ6IHRydWUsXG4gICAgICAgICAgY29udGV4dDogeyBjb21tYW5kOiAnbG9naW4nLCBleGVjdXRpb25JZCwgdXJsIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xufVxuIl19
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* Registers the `logout` command with the CLI program.
|
|
4
|
+
*
|
|
5
|
+
* Signs this device out of a platform: revokes the stored session's refresh
|
|
6
|
+
* slot on the platform (`POST /api/auth/logout`) and deletes it from the
|
|
7
|
+
* credential store. The platform call is best effort — the local copy is always
|
|
8
|
+
* removed, and when the platform could not be told the command says so, since
|
|
9
|
+
* the refresh token then stays valid until it is revoked from the web UI.
|
|
10
|
+
*
|
|
11
|
+
* An expired access token is renewed first (logout needs a valid one), so a
|
|
12
|
+
* device idle for days can still sign itself out properly.
|
|
13
|
+
*
|
|
14
|
+
* `PLATFORM_TOKEN` is not touched: it is the caller's own environment variable,
|
|
15
|
+
* and an access key is revoked from the keys page, not by signing out.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```bash
|
|
19
|
+
* pipeline-manager auth logout
|
|
20
|
+
* pipeline-manager auth logout --url https://platform.example.com
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export declare function logout(program: Command): void;
|
|
24
|
+
//# sourceMappingURL=logout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logout.d.ts","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqE7C"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
// Copyright 2026 Pipeline Builder Contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { errorMessage } from '@pipeline-builder/api-core';
|
|
4
|
+
import axios from 'axios';
|
|
5
|
+
import { Command } from 'commander';
|
|
6
|
+
import { TIMEOUTS } from '../config/cli.constants.js';
|
|
7
|
+
import { assertCredentialTlsAllowed, credentialHttpsAgent } from '../utils/auth-utils.js';
|
|
8
|
+
import { printCommandHeader, refreshStoredSession, withSslOptions } from '../utils/command-utils.js';
|
|
9
|
+
import { getApiConfig } from '../utils/config-loader.js';
|
|
10
|
+
import { clearSession, isSessionUsable, loadSession } from '../utils/credential-store.js';
|
|
11
|
+
import { ERROR_CODES, handleError } from '../utils/error-handler.js';
|
|
12
|
+
import { printInfo, printSuccess, printWarning } from '../utils/output-utils.js';
|
|
13
|
+
import { requestCorrelationHeaders } from '../utils/request-context.js';
|
|
14
|
+
/**
|
|
15
|
+
* Registers the `logout` command with the CLI program.
|
|
16
|
+
*
|
|
17
|
+
* Signs this device out of a platform: revokes the stored session's refresh
|
|
18
|
+
* slot on the platform (`POST /api/auth/logout`) and deletes it from the
|
|
19
|
+
* credential store. The platform call is best effort — the local copy is always
|
|
20
|
+
* removed, and when the platform could not be told the command says so, since
|
|
21
|
+
* the refresh token then stays valid until it is revoked from the web UI.
|
|
22
|
+
*
|
|
23
|
+
* An expired access token is renewed first (logout needs a valid one), so a
|
|
24
|
+
* device idle for days can still sign itself out properly.
|
|
25
|
+
*
|
|
26
|
+
* `PLATFORM_TOKEN` is not touched: it is the caller's own environment variable,
|
|
27
|
+
* and an access key is revoked from the keys page, not by signing out.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```bash
|
|
31
|
+
* pipeline-manager auth logout
|
|
32
|
+
* pipeline-manager auth logout --url https://platform.example.com
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export function logout(program) {
|
|
36
|
+
withSslOptions(program
|
|
37
|
+
.command('logout')
|
|
38
|
+
.description('Sign this device out: revoke the stored session on the platform and delete it locally')
|
|
39
|
+
.option('--url <url>', 'Platform base URL (default: PLATFORM_BASE_URL, else the platform you last signed in to, else config.yml)'))
|
|
40
|
+
.action(async (options) => {
|
|
41
|
+
// The request carries a bearer credential (and a renewal spends the
|
|
42
|
+
// refresh token), so the same TLS refusal as login applies.
|
|
43
|
+
assertCredentialTlsAllowed(options.verifySsl);
|
|
44
|
+
const url = options.url ?? getApiConfig().api.baseUrl;
|
|
45
|
+
const executionId = printCommandHeader('Logout', 'Sign out of the platform');
|
|
46
|
+
try {
|
|
47
|
+
const stored = loadSession(url);
|
|
48
|
+
if (!stored) {
|
|
49
|
+
printInfo('No stored session for this platform — nothing to sign out', { platform: url });
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
// 'revoked' — the platform ended it now; 'dead' — the platform had already
|
|
53
|
+
// refused it (renewal rejected, or no refresh token left to renew with);
|
|
54
|
+
// 'unknown' — the platform could not be reached.
|
|
55
|
+
let outcome = 'unknown';
|
|
56
|
+
try {
|
|
57
|
+
const accessToken = isSessionUsable(stored)
|
|
58
|
+
? stored.accessToken
|
|
59
|
+
: await refreshStoredSession(url, stored);
|
|
60
|
+
if (accessToken) {
|
|
61
|
+
await axios.post(`${url}/api/auth/logout`, {}, {
|
|
62
|
+
headers: {
|
|
63
|
+
'Content-Type': 'application/json',
|
|
64
|
+
'Authorization': `Bearer ${accessToken}`,
|
|
65
|
+
// The CSRF gate on /auth/logout (see platform requireClientType).
|
|
66
|
+
'X-Pb-Client': 'cli',
|
|
67
|
+
...requestCorrelationHeaders(),
|
|
68
|
+
},
|
|
69
|
+
httpsAgent: credentialHttpsAgent(options.verifySsl),
|
|
70
|
+
timeout: TIMEOUTS.HTTP_REQUEST,
|
|
71
|
+
});
|
|
72
|
+
outcome = 'revoked';
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
outcome = 'dead';
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
const status = axios.isAxiosError(error) ? error.response?.status : undefined;
|
|
80
|
+
printWarning('Could not revoke the session on the platform', {
|
|
81
|
+
...(status !== undefined ? { status } : {}),
|
|
82
|
+
error: errorMessage(error),
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
clearSession(url);
|
|
86
|
+
if (outcome === 'revoked') {
|
|
87
|
+
printSuccess('Signed out — the session is revoked and removed from this device');
|
|
88
|
+
}
|
|
89
|
+
else if (outcome === 'dead') {
|
|
90
|
+
printSuccess('Removed the stored session from this device (the platform had already ended it)');
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
printSuccess('Removed the stored session from this device');
|
|
94
|
+
printWarning('The platform was not told: revoke this device under Settings → Sessions and devices');
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
handleError(error, ERROR_CODES.AUTHENTICATION, {
|
|
99
|
+
exit: true,
|
|
100
|
+
context: { command: 'logout', executionId, url },
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nb3V0LmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvbG9nb3V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzFGLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDakYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFeEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBQ0gsTUFBTSxVQUFVLE1BQU0sQ0FBQyxPQUFnQjtJQUNyQyxjQUFjLENBQUMsT0FBTztTQUNuQixPQUFPLENBQUMsUUFBUSxDQUFDO1NBQ2pCLFdBQVcsQ0FBQyx1RkFBdUYsQ0FBQztTQUNwRyxNQUFNLENBQUMsYUFBYSxFQUFFLDBHQUEwRyxDQUFDLENBQUM7U0FDbEksTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUN4Qixv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Q0wsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBlcnJvck1lc3NhZ2UgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgeyBUSU1FT1VUUyB9IGZyb20gJy4uL2NvbmZpZy9jbGkuY29uc3RhbnRzLmpzJztcbmltcG9ydCB7IGFzc2VydENyZWRlbnRpYWxUbHNBbGxvd2VkLCBjcmVkZW50aWFsSHR0cHNBZ2VudCB9IGZyb20gJy4uL3V0aWxzL2F1dGgtdXRpbHMuanMnO1xuaW1wb3J0IHsgcHJpbnRDb21tYW5kSGVhZGVyLCByZWZyZXNoU3RvcmVkU2Vzc2lvbiwgd2l0aFNzbE9wdGlvbnMgfSBmcm9tICcuLi91dGlscy9jb21tYW5kLXV0aWxzLmpzJztcbmltcG9ydCB7IGdldEFwaUNvbmZpZyB9IGZyb20gJy4uL3V0aWxzL2NvbmZpZy1sb2FkZXIuanMnO1xuaW1wb3J0IHsgY2xlYXJTZXNzaW9uLCBpc1Nlc3Npb25Vc2FibGUsIGxvYWRTZXNzaW9uIH0gZnJvbSAnLi4vdXRpbHMvY3JlZGVudGlhbC1zdG9yZS5qcyc7XG5pbXBvcnQgeyBFUlJPUl9DT0RFUywgaGFuZGxlRXJyb3IgfSBmcm9tICcuLi91dGlscy9lcnJvci1oYW5kbGVyLmpzJztcbmltcG9ydCB7IHByaW50SW5mbywgcHJpbnRTdWNjZXNzLCBwcmludFdhcm5pbmcgfSBmcm9tICcuLi91dGlscy9vdXRwdXQtdXRpbHMuanMnO1xuaW1wb3J0IHsgcmVxdWVzdENvcnJlbGF0aW9uSGVhZGVycyB9IGZyb20gJy4uL3V0aWxzL3JlcXVlc3QtY29udGV4dC5qcyc7XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSBgbG9nb3V0YCBjb21tYW5kIHdpdGggdGhlIENMSSBwcm9ncmFtLlxuICpcbiAqIFNpZ25zIHRoaXMgZGV2aWNlIG91dCBvZiBhIHBsYXRmb3JtOiByZXZva2VzIHRoZSBzdG9yZWQgc2Vzc2lvbidzIHJlZnJlc2hcbiAqIHNsb3Qgb24gdGhlIHBsYXRmb3JtIChgUE9TVCAvYXBpL2F1dGgvbG9nb3V0YCkgYW5kIGRlbGV0ZXMgaXQgZnJvbSB0aGVcbiAqIGNyZWRlbnRpYWwgc3RvcmUuIFRoZSBwbGF0Zm9ybSBjYWxsIGlzIGJlc3QgZWZmb3J0IOKAlCB0aGUgbG9jYWwgY29weSBpcyBhbHdheXNcbiAqIHJlbW92ZWQsIGFuZCB3aGVuIHRoZSBwbGF0Zm9ybSBjb3VsZCBub3QgYmUgdG9sZCB0aGUgY29tbWFuZCBzYXlzIHNvLCBzaW5jZVxuICogdGhlIHJlZnJlc2ggdG9rZW4gdGhlbiBzdGF5cyB2YWxpZCB1bnRpbCBpdCBpcyByZXZva2VkIGZyb20gdGhlIHdlYiBVSS5cbiAqXG4gKiBBbiBleHBpcmVkIGFjY2VzcyB0b2tlbiBpcyByZW5ld2VkIGZpcnN0IChsb2dvdXQgbmVlZHMgYSB2YWxpZCBvbmUpLCBzbyBhXG4gKiBkZXZpY2UgaWRsZSBmb3IgZGF5cyBjYW4gc3RpbGwgc2lnbiBpdHNlbGYgb3V0IHByb3Blcmx5LlxuICpcbiAqIGBQTEFURk9STV9UT0tFTmAgaXMgbm90IHRvdWNoZWQ6IGl0IGlzIHRoZSBjYWxsZXIncyBvd24gZW52aXJvbm1lbnQgdmFyaWFibGUsXG4gKiBhbmQgYW4gYWNjZXNzIGtleSBpcyByZXZva2VkIGZyb20gdGhlIGtleXMgcGFnZSwgbm90IGJ5IHNpZ25pbmcgb3V0LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBiYXNoXG4gKiBwaXBlbGluZS1tYW5hZ2VyIGF1dGggbG9nb3V0XG4gKiBwaXBlbGluZS1tYW5hZ2VyIGF1dGggbG9nb3V0IC0tdXJsIGh0dHBzOi8vcGxhdGZvcm0uZXhhbXBsZS5jb21cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9nb3V0KHByb2dyYW06IENvbW1hbmQpOiB2b2lkIHtcbiAgd2l0aFNzbE9wdGlvbnMocHJvZ3JhbVxuICAgIC5jb21tYW5kKCdsb2dvdXQnKVxuICAgIC5kZXNjcmlwdGlvbignU2lnbiB0aGlzIGRldmljZSBvdXQ6IHJldm9rZSB0aGUgc3RvcmVkIHNlc3Npb24gb24gdGhlIHBsYXRmb3JtIGFuZCBkZWxldGUgaXQgbG9jYWxseScpXG4gICAgLm9wdGlvbignLS11cmwgPHVybD4nLCAnUGxhdGZvcm0gYmFzZSBVUkwgKGRlZmF1bHQ6IFBMQVRGT1JNX0JBU0VfVVJMLCBlbHNlIHRoZSBwbGF0Zm9ybSB5b3UgbGFzdCBzaWduZWQgaW4gdG8sIGVsc2UgY29uZmlnLnltbCknKSlcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICAvLyBUaGUgcmVxdWVzdCBjYXJyaWVzIGEgYmVhcmVyIGNyZWRlbnRpYWwgKGFuZCBhIHJlbmV3YWwgc3BlbmRzIHRoZVxuICAgICAgLy8gcmVmcmVzaCB0b2tlbiksIHNvIHRoZSBzYW1lIFRMUyByZWZ1c2FsIGFzIGxvZ2luIGFwcGxpZXMuXG4gICAgICBhc3NlcnRDcmVkZW50aWFsVGxzQWxsb3dlZChvcHRpb25zLnZlcmlmeVNzbCk7XG5cbiAgICAgIGNvbnN0IHVybDogc3RyaW5nID0gb3B0aW9ucy51cmwgPz8gZ2V0QXBpQ29uZmlnKCkuYXBpLmJhc2VVcmw7XG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IHByaW50Q29tbWFuZEhlYWRlcignTG9nb3V0JywgJ1NpZ24gb3V0IG9mIHRoZSBwbGF0Zm9ybScpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBzdG9yZWQgPSBsb2FkU2Vzc2lvbih1cmwpO1xuICAgICAgICBpZiAoIXN0b3JlZCkge1xuICAgICAgICAgIHByaW50SW5mbygnTm8gc3RvcmVkIHNlc3Npb24gZm9yIHRoaXMgcGxhdGZvcm0g4oCUIG5vdGhpbmcgdG8gc2lnbiBvdXQnLCB7IHBsYXRmb3JtOiB1cmwgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gJ3Jldm9rZWQnIOKAlCB0aGUgcGxhdGZvcm0gZW5kZWQgaXQgbm93OyAnZGVhZCcg4oCUIHRoZSBwbGF0Zm9ybSBoYWQgYWxyZWFkeVxuICAgICAgICAvLyByZWZ1c2VkIGl0IChyZW5ld2FsIHJlamVjdGVkLCBvciBubyByZWZyZXNoIHRva2VuIGxlZnQgdG8gcmVuZXcgd2l0aCk7XG4gICAgICAgIC8vICd1bmtub3duJyDigJQgdGhlIHBsYXRmb3JtIGNvdWxkIG5vdCBiZSByZWFjaGVkLlxuICAgICAgICBsZXQgb3V0Y29tZTogJ3Jldm9rZWQnIHwgJ2RlYWQnIHwgJ3Vua25vd24nID0gJ3Vua25vd24nO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gaXNTZXNzaW9uVXNhYmxlKHN0b3JlZClcbiAgICAgICAgICAgID8gc3RvcmVkLmFjY2Vzc1Rva2VuXG4gICAgICAgICAgICA6IGF3YWl0IHJlZnJlc2hTdG9yZWRTZXNzaW9uKHVybCwgc3RvcmVkKTtcbiAgICAgICAgICBpZiAoYWNjZXNzVG9rZW4pIHtcbiAgICAgICAgICAgIGF3YWl0IGF4aW9zLnBvc3QoYCR7dXJsfS9hcGkvYXV0aC9sb2dvdXRgLCB7fSwge1xuICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6IGBCZWFyZXIgJHthY2Nlc3NUb2tlbn1gLFxuICAgICAgICAgICAgICAgIC8vIFRoZSBDU1JGIGdhdGUgb24gL2F1dGgvbG9nb3V0IChzZWUgcGxhdGZvcm0gcmVxdWlyZUNsaWVudFR5cGUpLlxuICAgICAgICAgICAgICAgICdYLVBiLUNsaWVudCc6ICdjbGknLFxuICAgICAgICAgICAgICAgIC4uLnJlcXVlc3RDb3JyZWxhdGlvbkhlYWRlcnMoKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgaHR0cHNBZ2VudDogY3JlZGVudGlhbEh0dHBzQWdlbnQob3B0aW9ucy52ZXJpZnlTc2wpLFxuICAgICAgICAgICAgICB0aW1lb3V0OiBUSU1FT1VUUy5IVFRQX1JFUVVFU1QsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIG91dGNvbWUgPSAncmV2b2tlZCc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG91dGNvbWUgPSAnZGVhZCc7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGF4aW9zLmlzQXhpb3NFcnJvcihlcnJvcikgPyBlcnJvci5yZXNwb25zZT8uc3RhdHVzIDogdW5kZWZpbmVkO1xuICAgICAgICAgIHByaW50V2FybmluZygnQ291bGQgbm90IHJldm9rZSB0aGUgc2Vzc2lvbiBvbiB0aGUgcGxhdGZvcm0nLCB7XG4gICAgICAgICAgICAuLi4oc3RhdHVzICE9PSB1bmRlZmluZWQgPyB7IHN0YXR1cyB9IDoge30pLFxuICAgICAgICAgICAgZXJyb3I6IGVycm9yTWVzc2FnZShlcnJvciksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjbGVhclNlc3Npb24odXJsKTtcblxuICAgICAgICBpZiAob3V0Y29tZSA9PT0gJ3Jldm9rZWQnKSB7XG4gICAgICAgICAgcHJpbnRTdWNjZXNzKCdTaWduZWQgb3V0IOKAlCB0aGUgc2Vzc2lvbiBpcyByZXZva2VkIGFuZCByZW1vdmVkIGZyb20gdGhpcyBkZXZpY2UnKTtcbiAgICAgICAgfSBlbHNlIGlmIChvdXRjb21lID09PSAnZGVhZCcpIHtcbiAgICAgICAgICBwcmludFN1Y2Nlc3MoJ1JlbW92ZWQgdGhlIHN0b3JlZCBzZXNzaW9uIGZyb20gdGhpcyBkZXZpY2UgKHRoZSBwbGF0Zm9ybSBoYWQgYWxyZWFkeSBlbmRlZCBpdCknKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcmludFN1Y2Nlc3MoJ1JlbW92ZWQgdGhlIHN0b3JlZCBzZXNzaW9uIGZyb20gdGhpcyBkZXZpY2UnKTtcbiAgICAgICAgICBwcmludFdhcm5pbmcoJ1RoZSBwbGF0Zm9ybSB3YXMgbm90IHRvbGQ6IHJldm9rZSB0aGlzIGRldmljZSB1bmRlciBTZXR0aW5ncyDihpIgU2Vzc2lvbnMgYW5kIGRldmljZXMnKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkFVVEhFTlRJQ0FUSU9OLCB7XG4gICAgICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgICAgICBjb250ZXh0OiB7IGNvbW1hbmQ6ICdsb2dvdXQnLCBleGVjdXRpb25JZCwgdXJsIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xufVxuIl19
|
|
@@ -33,7 +33,7 @@ const { bold, green } = pico;
|
|
|
33
33
|
export function orgExport(program) {
|
|
34
34
|
withSslOptions(program
|
|
35
35
|
.command('export')
|
|
36
|
-
.description('Export an organization\'s data as JSON (GDPR portability, )
|
|
36
|
+
.description('Export an organization\'s data as JSON (GDPR portability: sysadmins any org, org admins their own)')
|
|
37
37
|
.requiredOption('-i, --id <id>', 'Organization ID to export')
|
|
38
38
|
.option('-o, --output <file>', 'Output file path (default: org-<id>-export.json in CWD)'))
|
|
39
39
|
.action(async (options) => {
|
|
@@ -97,4 +97,4 @@ export function orgExport(program) {
|
|
|
97
97
|
}
|
|
98
98
|
});
|
|
99
99
|
}
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLWV4cG9ydC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL29yZy1leHBvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sSUFBSSxNQUFNLFlBQVksQ0FBQztBQUM5QixPQUFPLEVBQUUseUJBQXlCLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BLLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU1RyxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQztBQUU3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQyxPQUFnQjtJQUN4QyxjQUFjLENBQUMsT0FBTztTQUNuQixPQUFPLENBQUMsUUFBUSxDQUFDO1NBQ2pCLFdBQVcsQ0FBQyw4REFBOEQsQ0FBQztTQUMzRSxjQUFjLENBQUMsZUFBZSxFQUFFLDJCQUEyQixDQUFDO1NBQzVELE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSx5REFBeUQsQ0FBQyxDQUFDO1NBQ3pGLE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDeEIsTUFBTSxXQUFXLEdBQUcsa0JBQWtCLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFckQsSUFBSSxDQUFDO1lBQ0gsZUFBZSxD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LFlBQVksQ0FBQyw4QkFBOEIsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsV0FBVyxFQUFFO2dCQUMxQyxLQUFLLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUs7Z0JBQzNCLElBQUksRUFBRSxJQUFJO2dCQUNWLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFO2FBQ25FLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHBpY28gZnJvbSAncGljb2NvbG9ycyc7XG5pbXBvcnQgeyBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50LCBwcmludENvbW1hbmRIZWFkZXIsIHByaW50RXhlY3V0aW9uU3VtbWFyeSwgcHJpbnRTc2xXYXJuaW5nLCB2YWxpZGF0ZUVudGl0eUlkLCB3aXRoU3NsT3B0aW9ucyB9IGZyb20gJy4uL3V0aWxzL2NvbW1hbmQtdXRpbHMuanMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vdXRpbHMvZXJyb3ItaGFuZGxlci5qcyc7XG5pbXBvcnQgeyBwcmludEVycm9yLCBwcmludEluZm8sIHByaW50S2V5VmFsdWUsIHByaW50U2VjdGlvbiwgcHJpbnRTdWNjZXNzIH0gZnJvbSAnLi4vdXRpbHMvb3V0cHV0LXV0aWxzLmpzJztcblxuY29uc3QgeyBib2xkLCBncmVlbiB9ID0gcGljbztcblxuLyoqXG4gKiBDTEkgIGBwaXBlbGluZS1tYW5hZ2VyIG9yZyBleHBvcnQgLS1pZCA8b3JnSWQ+IC0tb3V0cHV0IDxmaWxlPmAuXG4gKlxuICogRmV0Y2hlcyB0aGUgR0RQUiBwb3J0YWJpbGl0eSBkdW1wIGZyb20gYEdFVCAvYXBpL29yZ2FuaXphdGlvbi86aWQvZXhwb3J0YFxuICogb24gdGhlIHBsYXRmb3JtIHNlcnZpY2UgYW5kIHdyaXRlcyBpdCB0byBkaXNrIChvciBzdGRvdXQpLiBUaGUgZW5kcG9pbnRcbiAqIGlzIGdhdGVkIHNlcnZlci1zaWRlICog4oCiIFN5c3RlbSBhZG1pbnMgKGFkbWluL293bmVyIGluIHRoZSBgc3lzdGVtYCBvcmcpIG1heSBleHBvcnQgYW55IG9yZy5cbiAqIOKAoiBPcmcgYWRtaW5zIC8gb3duZXJzIG1heSBleHBvcnQgT05MWSB0aGVpciBvd24gb3JnLlxuICog4oCiIEV2ZXJ5dGhpbmcgZWxzZSBnZXRzIDQwMy5cbiAqXG4gKiBUaGUgQ0xJIGl0c2VsZiBkb2VzIG5vIHJvbGUgY2hlY2tpbmcgIHRoZSBjYWxsZXIncyBQTEFURk9STV9UT0tFTiBkcml2ZXNcbiAqIHdoYXQgdGhlIHNlcnZlciBhY2NlcHRzLiBSdW4gYHBpcGVsaW5lLW1hbmFnZXIgc3RhdHVzYCBmaXJzdCB0byBjb25maXJtXG4gKiB0aGUgdG9rZW4ncyByb2xlICsgb3JnLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBiYXNoXG4gKiAjIFN5c2FkbWluOiBhbnkgb3JnXG4gKiBwaXBlbGluZS1tYW5hZ2VyIG9yZyBleHBvcnQgLS1pZCBvcmctYWNtZSAtLW91dHB1dCBhY21lLmpzb25cbiAqXG4gKiAjIE9yZyBhZG1pbjogb3duIG9yZyBvbmx5IChzZXJ2ZXIgcmVqZWN0cyBvdGhlciBpZHMgd2l0aCA0MDMpXG4gKiBwaXBlbGluZS1tYW5hZ2VyIG9yZyBleHBvcnQgLS1pZCBvcmctYWNtZSAtLW91dHB1dCBhY21lLmpzb25cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gb3JnRXhwb3J0KHByb2dyYW06IENvbW1hbmQpOiB2b2lkIHtcbiAgd2l0aFNzbE9wdGlvbnMocHJvZ3JhbVxuICAgIC5jb21tYW5kKCdleHBvcnQnKVxuICAgIC5kZXNjcmlwdGlvbignRXhwb3J0IGFuIG9yZ2FuaXphdGlvblxcJ3MgZGF0YSBhcyBKU09OIChHRFBSIHBvcnRhYmlsaXR5LCApLicpXG4gICAgLnJlcXVpcmVkT3B0aW9uKCctaSwgLS1pZCA8aWQ+JywgJ09yZ2FuaXphdGlvbiBJRCB0byBleHBvcnQnKVxuICAgIC5vcHRpb24oJy1vLCAtLW91dHB1dCA8ZmlsZT4nLCAnT3V0cHV0IGZpbGUgcGF0aCAoZGVmYXVsdDogb3JnLTxpZD4tZXhwb3J0Lmpzb24gaW4gQ1dEKScpKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IGV4ZWN1dGlvbklkID0gcHJpbnRDb21tYW5kSGVhZGVyKCdPcmcgRXhwb3J0Jyk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHByaW50U3NsV2FybmluZyhvcHRpb25zLnZlcmlmeVNzbCk7XG5cbiAgICAgICAgY29uc3Qgb3JnSWQgPSB2YWxpZGF0ZUVudGl0eUlkKG9wdGlvbnMuaWQsICdPcmdhbml6YXRpb24nKTtcbiAgICAgICAgY29uc3Qgb3V0cHV0UGF0aCA9IG9wdGlvbnMub3V0cHV0XG4gICAgICAgICAgPyBwYXRoLnJlc29sdmUob3B0aW9ucy5vdXRwdXQpXG4gICAgICAgICAgOiBwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSwgYG9yZy0ke29yZ0lkfS1leHBvcnQuanNvbmApO1xuXG4gICAgICAgIHByaW50SW5mbygnUmVxdWVzdCBwYXJhbWV0ZXJzJywge1xuICAgICAgICAgIG9yZ0lkLFxuICAgICAgICAgIG91dHB1dDogb3V0cHV0UGF0aCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgY2xpZW50ID0gY3JlYXRlQXV0aGVudGljYXRlZENsaWVudChvcHRpb25zKTtcblxuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50U2VjdGlvbignRmV0Y2hpbmcgRXhwb3J0Jyk7XG5cbiAgICAgICAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgLy8gVGhlIGVuZHBvaW50IHN0cmVhbXMgYSBsYXJnZSBKU09OIGF0dGFjaG1lbnQgZm9yIG9yZ3Mgd2l0aCBsb25nXG4gICAgICAgIC8vIGhpc3Rvcmllcy4gVGhlIEFwaUNsaWVudCByZXR1cm5zIHRoZSBwYXJzZWQgYm9keSBkaXJlY3RseSwgd2hpY2hcbiAgICAgICAgLy8gZm9yIGBhcHBsaWNhdGlvbi9qc29uYCBpcyBhIEpTIG9iamVjdCB3ZSByZS1zZXJpYWxpemUgdG8gZGlzay5cbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0PFJlY29yZDxzdHJpbmcsIHVua25vd24+PiggYCR7Y2xpZW50LmdldENvbmZpZygpLmFwaS5iYXNlVXJsfS9hcGkvb3JnYW5pemF0aW9uLyR7ZW5jb2RlVVJJQ29tcG9uZW50KG9yZ0lkKX0vZXhwb3J0YCxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZHVyYXRpb24gPSBEYXRlLm5vdygpIC0gc3RhcnRUaW1lO1xuXG4gICAgICAgIGlmICghcmVzcG9uc2UgfHwgdHlwZW9mIHJlc3BvbnNlICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAgIHByaW50RXJyb3IoJ0VtcHR5IC8gdW5wYXJzZWFibGUgZXhwb3J0IHBheWxvYWQnKTtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cG9ydCByZXR1cm5lZCBubyBkYXRhIGZvciBvcmcgJHtvcmdJZH1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJlLXNlcmlhbGl6ZSBzbyB3ZSBrZWVwIHRoZSBzYW1lIHByZXR0eS1wcmludGVkIHNoYXBlIHRoZSBzZXJ2ZXJcbiAgICAgICAgLy8gcHJvZHVjZWQgKDItc3BhY2UgaW5kZW50IG1hdGNoZXMgdGhlIHBsYXRmb3JtJ3MgaGFuZGxlcikgYW5kIHNvXG4gICAgICAgIC8vIHdlIGRvbid0IGxvc2UgRGF0ZSBwcmVjaXNpb24gb24gYSByb3VuZC10cmlwIHRocm91Z2ggSlNPTi5wYXJzZS5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gR1VBUkQ6IHRoaXMgd3JpdGVzIHRoZSByYXcgc2VydmVyIHBheWxvYWQgc3RyYWlnaHQgdG8gZGlzay4gVGhlIGV4cG9ydFxuICAgICAgICAvLyBwYXlsb2FkIG11c3QgTkVWRVIgY29udGFpbiBhbiBBV1MgYWNjb3VudCBpZCDigJQgb3JnSWQgaXMgdGhlIHBsYXRmb3JtIG9yZ1xuICAgICAgICAvLyBpZCwgbmV2ZXIgYW4gQVdTIGFjY291bnQgaWQuIEl0IGlzIGFjY291bnQtaWQtZnJlZSB0b2RheTtcbiAgICAgICAgLy8gaWYgYSBmdXR1cmUgc2VydmVyIGNoYW5nZSBldmVyIGFkZHMgb25lLCBpdCBtdXN0IGJlIHN0cmlwcGVkL3JlZGFjdGVkXG4gICAgICAgIC8vIGhlcmUgQkVGT1JFIHRoaXMgd3JpdGUsIG5vdCBwZXJzaXN0ZWQgdGhyb3VnaCB0aGUgQ0xJLlxuICAgICAgICBjb25zdCBqc29uID0gSlNPTi5zdHJpbmdpZnkocmVzcG9uc2UsIG51bGwsIDIpO1xuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKG91dHB1dFBhdGgsIGpzb24sICd1dGY4Jyk7XG5cbiAgICAgICAgY29uc3Qgc2l6ZUtiID0gKGpzb24ubGVuZ3RoIC8gMTAyNCkudG9GaXhlZCgxKTtcbiAgICAgICAgY29uc3QgcG9zdGdyZXNUYWJsZXMgPSByZXNwb25zZS5wb3N0Z3JlcyAmJiB0eXBlb2YgcmVzcG9uc2UucG9zdGdyZXMgPT09ICdvYmplY3QnXG4gICAgICAgICAgPyBPYmplY3Qua2V5cyhyZXNwb25zZS5wb3N0Z3JlcyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikubGVuZ3RoXG4gICAgICAgICAgOiAwO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRTZWN0aW9uKCdFeHBvcnQgU2F2ZWQnKTtcbiAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgJ09yZyBJRCc6IGdyZWVuKGJvbGQob3JnSWQpKSxcbiAgICAgICAgICAnT3V0cHV0Jzogb3V0cHV0UGF0aCxcbiAgICAgICAgICAnU2l6ZSc6IGAke3NpemVLYn0gS0JgLFxuICAgICAgICAgICdQb3N0Z3JlcyB0YWJsZXMnOiBTdHJpbmcocG9zdGdyZXNUYWJsZXMpLFxuICAgICAgICAgICdFeHBvcnRlZCBhdCc6IHR5cGVvZiByZXNwb25zZS5leHBvcnRlZEF0ID09PSAnc3RyaW5nJyA/IHJlc3BvbnNlLmV4cG9ydGVkQXQ6ICcobm90IHNldCknLFxuICAgICAgICB9KTtcblxuICAgICAgICBwcmludEV4ZWN1dGlvblN1bW1hcnkoZXhlY3V0aW9uSWQsIGR1cmF0aW9uKTtcbiAgICAgICAgcHJpbnRTdWNjZXNzKCdPcmdhbml6YXRpb24gZXhwb3J0IGNvbXBsZXRlJywgeyBwYXRoOiBvdXRwdXRQYXRoIH0pO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkFQSV9SRVFVRVNULCB7XG4gICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgIGV4aXQ6IHRydWUsXG4gICAgICAgICAgY29udGV4dDogeyBjb21tYW5kOiAnb3JnLWV4cG9ydCcsIGV4ZWN1dGlvbklkLCBvcmdJZDogb3B0aW9ucy5pZCB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbn1cbiJdfQ==
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLWV4cG9ydC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL29yZy1leHBvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sSUFBSSxNQUFNLFlBQVksQ0FBQztBQUM5QixPQUFPLEVBQUUseUJBQXlCLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BLLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU1RyxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQztBQUU3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQyxPQUFnQjtJQUN4QyxjQUFjLENBQUMsT0FBTztTQUNuQixPQUFPLENBQUMsUUFBUSxDQUFDO1NBQ2pCLFdBQVcsQ0FBQyxvR0FBb0csQ0FBQztTQUNqSCxjQUFjLENBQUMsZUFBZSxFQUFFLDJCQUEyQixDQUFDO1NBQzVELE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSx5REFBeUQsQ0FBQyxDQUFDO1NBQ3pGLE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDeEIsTUFBTSxXQUFXLEdBQUcsa0JBQWtCLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFckQsSUFBSSxDQUFDO1lBQ0gsZUFBZSxD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LFlBQVksQ0FBQyw4QkFBOEIsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsV0FBVyxFQUFFO2dCQUMxQyxLQUFLLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUs7Z0JBQzNCLElBQUksRUFBRSxJQUFJO2dCQUNWLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFO2FBQ25FLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHBpY28gZnJvbSAncGljb2NvbG9ycyc7XG5pbXBvcnQgeyBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50LCBwcmludENvbW1hbmRIZWFkZXIsIHByaW50RXhlY3V0aW9uU3VtbWFyeSwgcHJpbnRTc2xXYXJuaW5nLCB2YWxpZGF0ZUVudGl0eUlkLCB3aXRoU3NsT3B0aW9ucyB9IGZyb20gJy4uL3V0aWxzL2NvbW1hbmQtdXRpbHMuanMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vdXRpbHMvZXJyb3ItaGFuZGxlci5qcyc7XG5pbXBvcnQgeyBwcmludEVycm9yLCBwcmludEluZm8sIHByaW50S2V5VmFsdWUsIHByaW50U2VjdGlvbiwgcHJpbnRTdWNjZXNzIH0gZnJvbSAnLi4vdXRpbHMvb3V0cHV0LXV0aWxzLmpzJztcblxuY29uc3QgeyBib2xkLCBncmVlbiB9ID0gcGljbztcblxuLyoqXG4gKiBDTEkgIGBwaXBlbGluZS1tYW5hZ2VyIG9yZyBleHBvcnQgLS1pZCA8b3JnSWQ+IC0tb3V0cHV0IDxmaWxlPmAuXG4gKlxuICogRmV0Y2hlcyB0aGUgR0RQUiBwb3J0YWJpbGl0eSBkdW1wIGZyb20gYEdFVCAvYXBpL29yZ2FuaXphdGlvbi86aWQvZXhwb3J0YFxuICogb24gdGhlIHBsYXRmb3JtIHNlcnZpY2UgYW5kIHdyaXRlcyBpdCB0byBkaXNrIChvciBzdGRvdXQpLiBUaGUgZW5kcG9pbnRcbiAqIGlzIGdhdGVkIHNlcnZlci1zaWRlICog4oCiIFN5c3RlbSBhZG1pbnMgKGFkbWluL293bmVyIGluIHRoZSBgc3lzdGVtYCBvcmcpIG1heSBleHBvcnQgYW55IG9yZy5cbiAqIOKAoiBPcmcgYWRtaW5zIC8gb3duZXJzIG1heSBleHBvcnQgT05MWSB0aGVpciBvd24gb3JnLlxuICog4oCiIEV2ZXJ5dGhpbmcgZWxzZSBnZXRzIDQwMy5cbiAqXG4gKiBUaGUgQ0xJIGl0c2VsZiBkb2VzIG5vIHJvbGUgY2hlY2tpbmcgIHRoZSBjYWxsZXIncyBQTEFURk9STV9UT0tFTiBkcml2ZXNcbiAqIHdoYXQgdGhlIHNlcnZlciBhY2NlcHRzLiBSdW4gYHBpcGVsaW5lLW1hbmFnZXIgc3RhdHVzYCBmaXJzdCB0byBjb25maXJtXG4gKiB0aGUgdG9rZW4ncyByb2xlICsgb3JnLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBiYXNoXG4gKiAjIFN5c2FkbWluOiBhbnkgb3JnXG4gKiBwaXBlbGluZS1tYW5hZ2VyIG9yZyBleHBvcnQgLS1pZCBvcmctYWNtZSAtLW91dHB1dCBhY21lLmpzb25cbiAqXG4gKiAjIE9yZyBhZG1pbjogb3duIG9yZyBvbmx5IChzZXJ2ZXIgcmVqZWN0cyBvdGhlciBpZHMgd2l0aCA0MDMpXG4gKiBwaXBlbGluZS1tYW5hZ2VyIG9yZyBleHBvcnQgLS1pZCBvcmctYWNtZSAtLW91dHB1dCBhY21lLmpzb25cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gb3JnRXhwb3J0KHByb2dyYW06IENvbW1hbmQpOiB2b2lkIHtcbiAgd2l0aFNzbE9wdGlvbnMocHJvZ3JhbVxuICAgIC5jb21tYW5kKCdleHBvcnQnKVxuICAgIC5kZXNjcmlwdGlvbignRXhwb3J0IGFuIG9yZ2FuaXphdGlvblxcJ3MgZGF0YSBhcyBKU09OIChHRFBSIHBvcnRhYmlsaXR5OiBzeXNhZG1pbnMgYW55IG9yZywgb3JnIGFkbWlucyB0aGVpciBvd24pJylcbiAgICAucmVxdWlyZWRPcHRpb24oJy1pLCAtLWlkIDxpZD4nLCAnT3JnYW5pemF0aW9uIElEIHRvIGV4cG9ydCcpXG4gICAgLm9wdGlvbignLW8sIC0tb3V0cHV0IDxmaWxlPicsICdPdXRwdXQgZmlsZSBwYXRoIChkZWZhdWx0OiBvcmctPGlkPi1leHBvcnQuanNvbiBpbiBDV0QpJykpXG4gICAgLmFjdGlvbihhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgY29uc3QgZXhlY3V0aW9uSWQgPSBwcmludENvbW1hbmRIZWFkZXIoJ09yZyBFeHBvcnQnKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgcHJpbnRTc2xXYXJuaW5nKG9wdGlvbnMudmVyaWZ5U3NsKTtcblxuICAgICAgICBjb25zdCBvcmdJZCA9IHZhbGlkYXRlRW50aXR5SWQob3B0aW9ucy5pZCwgJ09yZ2FuaXphdGlvbicpO1xuICAgICAgICBjb25zdCBvdXRwdXRQYXRoID0gb3B0aW9ucy5vdXRwdXRcbiAgICAgICAgICA/IHBhdGgucmVzb2x2ZShvcHRpb25zLm91dHB1dClcbiAgICAgICAgICA6IHBhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBgb3JnLSR7b3JnSWR9LWV4cG9ydC5qc29uYCk7XG5cbiAgICAgICAgcHJpbnRJbmZvKCdSZXF1ZXN0IHBhcmFtZXRlcnMnLCB7XG4gICAgICAgICAgb3JnSWQsXG4gICAgICAgICAgb3V0cHV0OiBvdXRwdXRQYXRoLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBjbGllbnQgPSBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50KG9wdGlvbnMpO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRTZWN0aW9uKCdGZXRjaGluZyBFeHBvcnQnKTtcblxuICAgICAgICBjb25zdCBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgICAvLyBUaGUgZW5kcG9pbnQgc3RyZWFtcyBhIGxhcmdlIEpTT04gYXR0YWNobWVudCBmb3Igb3JncyB3aXRoIGxvbmdcbiAgICAgICAgLy8gaGlzdG9yaWVzLiBUaGUgQXBpQ2xpZW50IHJldHVybnMgdGhlIHBhcnNlZCBib2R5IGRpcmVjdGx5LCB3aGljaFxuICAgICAgICAvLyBmb3IgYGFwcGxpY2F0aW9uL2pzb25gIGlzIGEgSlMgb2JqZWN0IHdlIHJlLXNlcmlhbGl6ZSB0byBkaXNrLlxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQ8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KCBgJHtjbGllbnQuZ2V0Q29uZmlnKCkuYXBpLmJhc2VVcmx9L2FwaS9vcmdhbml6YXRpb24vJHtlbmNvZGVVUklDb21wb25lbnQob3JnSWQpfS9leHBvcnRgLFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBkdXJhdGlvbiA9IERhdGUubm93KCkgLSBzdGFydFRpbWU7XG5cbiAgICAgICAgaWYgKCFyZXNwb25zZSB8fCB0eXBlb2YgcmVzcG9uc2UgIT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgcHJpbnRFcnJvcignRW1wdHkgLyB1bnBhcnNlYWJsZSBleHBvcnQgcGF5bG9hZCcpO1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwb3J0IHJldHVybmVkIG5vIGRhdGEgZm9yIG9yZyAke29yZ0lkfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmUtc2VyaWFsaXplIHNvIHdlIGtlZXAgdGhlIHNhbWUgcHJldHR5LXByaW50ZWQgc2hhcGUgdGhlIHNlcnZlclxuICAgICAgICAvLyBwcm9kdWNlZCAoMi1zcGFjZSBpbmRlbnQgbWF0Y2hlcyB0aGUgcGxhdGZvcm0ncyBoYW5kbGVyKSBhbmQgc29cbiAgICAgICAgLy8gd2UgZG9uJ3QgbG9zZSBEYXRlIHByZWNpc2lvbiBvbiBhIHJvdW5kLXRyaXAgdGhyb3VnaCBKU09OLnBhcnNlLlxuICAgICAgICAvL1xuICAgICAgICAvLyBHVUFSRDogdGhpcyB3cml0ZXMgdGhlIHJhdyBzZXJ2ZXIgcGF5bG9hZCBzdHJhaWdodCB0byBkaXNrLiBUaGUgZXhwb3J0XG4gICAgICAgIC8vIHBheWxvYWQgbXVzdCBORVZFUiBjb250YWluIGFuIEFXUyBhY2NvdW50IGlkIOKAlCBvcmdJZCBpcyB0aGUgcGxhdGZvcm0gb3JnXG4gICAgICAgIC8vIGlkLCBuZXZlciBhbiBBV1MgYWNjb3VudCBpZC4gSXQgaXMgYWNjb3VudC1pZC1mcmVlIHRvZGF5O1xuICAgICAgICAvLyBpZiBhIGZ1dHVyZSBzZXJ2ZXIgY2hhbmdlIGV2ZXIgYWRkcyBvbmUsIGl0IG11c3QgYmUgc3RyaXBwZWQvcmVkYWN0ZWRcbiAgICAgICAgLy8gaGVyZSBCRUZPUkUgdGhpcyB3cml0ZSwgbm90IHBlcnNpc3RlZCB0aHJvdWdoIHRoZSBDTEkuXG4gICAgICAgIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShyZXNwb25zZSwgbnVsbCwgMik7XG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMob3V0cHV0UGF0aCwganNvbiwgJ3V0ZjgnKTtcblxuICAgICAgICBjb25zdCBzaXplS2IgPSAoanNvbi5sZW5ndGggLyAxMDI0KS50b0ZpeGVkKDEpO1xuICAgICAgICBjb25zdCBwb3N0Z3Jlc1RhYmxlcyA9IHJlc3BvbnNlLnBvc3RncmVzICYmIHR5cGVvZiByZXNwb25zZS5wb3N0Z3JlcyA9PT0gJ29iamVjdCdcbiAgICAgICAgICA/IE9iamVjdC5rZXlzKHJlc3BvbnNlLnBvc3RncmVzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KS5sZW5ndGhcbiAgICAgICAgICA6IDA7XG5cbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBwcmludFNlY3Rpb24oJ0V4cG9ydCBTYXZlZCcpO1xuICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAnT3JnIElEJzogZ3JlZW4oYm9sZChvcmdJZCkpLFxuICAgICAgICAgICdPdXRwdXQnOiBvdXRwdXRQYXRoLFxuICAgICAgICAgICdTaXplJzogYCR7c2l6ZUtifSBLQmAsXG4gICAgICAgICAgJ1Bvc3RncmVzIHRhYmxlcyc6IFN0cmluZyhwb3N0Z3Jlc1RhYmxlcyksXG4gICAgICAgICAgJ0V4cG9ydGVkIGF0JzogdHlwZW9mIHJlc3BvbnNlLmV4cG9ydGVkQXQgPT09ICdzdHJpbmcnID8gcmVzcG9uc2UuZXhwb3J0ZWRBdDogJyhub3Qgc2V0KScsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHByaW50RXhlY3V0aW9uU3VtbWFyeShleGVjdXRpb25JZCwgZHVyYXRpb24pO1xuICAgICAgICBwcmludFN1Y2Nlc3MoJ09yZ2FuaXphdGlvbiBleHBvcnQgY29tcGxldGUnLCB7IHBhdGg6IG91dHB1dFBhdGggfSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuQVBJX1JFUVVFU1QsIHtcbiAgICAgICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgICAgICBjb250ZXh0OiB7IGNvbW1hbmQ6ICdvcmctZXhwb3J0JywgZXhlY3V0aW9uSWQsIG9yZ0lkOiBvcHRpb25zLmlkIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xufVxuIl19
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* Registers `pipeline delete`: delete a pipeline configuration
|
|
4
|
+
* (`DELETE /api/pipelines/:id`). It does NOT touch AWS — a deployed stack keeps
|
|
5
|
+
* running until it is destroyed, and the stack then shows up in `audit stacks`
|
|
6
|
+
* as orphaned.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```bash
|
|
10
|
+
* pipeline-manager pipeline delete --id <pipelineId> --yes
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
export declare function deletePipeline(program: Command): void;
|
|
14
|
+
/**
|
|
15
|
+
* Registers `pipeline deregister`: remove one pipeline_registry row
|
|
16
|
+
* (`DELETE /api/pipelines/registry/:id`, by the row's UUID — the `registryId`
|
|
17
|
+
* an `audit stacks` missing-stack finding prints). The supported way to clear a
|
|
18
|
+
* row whose CloudFormation stack was deleted out of band.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```bash
|
|
22
|
+
* pipeline-manager pipeline deregister --id <registryId> --yes
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export declare function deregisterPipeline(program: Command): void;
|
|
26
|
+
//# sourceMappingURL=pipeline-remove.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline-remove.d.ts","sources":["../../src/commands/pipeline-remove.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuBrD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuBzD"}
|