@pipeline-builder/pipeline-manager 4.1.14 → 4.1.16
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/config.yml +16 -37
- package/dist/boilerplate.js +10 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +97 -79
- package/dist/commands/audit-stacks.js +3 -3
- package/dist/commands/create-pat.d.ts +2 -3
- package/dist/commands/create-pat.d.ts.map +1 -1
- package/dist/commands/create-pat.js +3 -4
- package/dist/commands/create-pipeline.d.ts.map +1 -1
- package/dist/commands/create-pipeline.js +198 -190
- package/dist/commands/list-pipelines.js +2 -2
- package/dist/commands/list-plugins.js +2 -2
- package/dist/commands/login.d.ts +2 -2
- package/dist/commands/login.js +3 -3
- package/dist/commands/new-plugin.d.ts +48 -5
- package/dist/commands/new-plugin.d.ts.map +1 -1
- package/dist/commands/new-plugin.js +261 -95
- package/dist/commands/plugin-lifecycle.d.ts +29 -0
- package/dist/commands/plugin-lifecycle.d.ts.map +1 -0
- package/dist/commands/plugin-lifecycle.js +147 -0
- package/dist/commands/provision.d.ts +42 -2
- package/dist/commands/provision.d.ts.map +1 -1
- package/dist/commands/provision.js +184 -147
- package/dist/commands/publish-plugin.d.ts +62 -0
- package/dist/commands/publish-plugin.d.ts.map +1 -0
- package/dist/commands/publish-plugin.js +224 -0
- package/dist/commands/redrive-events.d.ts +1 -1
- package/dist/commands/redrive-events.js +2 -2
- package/dist/commands/store-token.d.ts +46 -1
- package/dist/commands/store-token.d.ts.map +1 -1
- package/dist/commands/store-token.js +127 -102
- package/dist/commands/test-plugin.d.ts +72 -0
- package/dist/commands/test-plugin.d.ts.map +1 -0
- package/dist/commands/test-plugin.js +285 -0
- package/dist/commands/upload-plugin.d.ts +6 -7
- package/dist/commands/upload-plugin.d.ts.map +1 -1
- package/dist/commands/upload-plugin.js +127 -189
- package/dist/commands/validate-plugin.d.ts +37 -4
- package/dist/commands/validate-plugin.d.ts.map +1 -1
- package/dist/commands/validate-plugin.js +129 -144
- package/dist/commands/validate-templates.d.ts.map +1 -1
- package/dist/commands/validate-templates.js +8 -9
- package/dist/config/plugin-catalog-assets.d.ts +13 -0
- package/dist/config/plugin-catalog-assets.d.ts.map +1 -0
- package/dist/config/plugin-catalog-assets.js +21 -0
- package/dist/config.yml +16 -37
- package/dist/lambda/token-renew-handler.d.ts.map +1 -1
- package/dist/lambda/token-renew-handler.js +109 -154
- package/dist/types/config.d.ts +2 -6
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +1 -1
- package/dist/types/plugin.d.ts +21 -0
- package/dist/types/plugin.d.ts.map +1 -1
- package/dist/types/plugin.js +1 -1
- package/dist/utils/aws-env.d.ts +1 -2
- package/dist/utils/aws-env.d.ts.map +1 -1
- package/dist/utils/aws-env.js +2 -3
- package/dist/utils/catalog-prompt.d.ts +26 -0
- package/dist/utils/catalog-prompt.d.ts.map +1 -0
- package/dist/utils/catalog-prompt.js +113 -0
- package/dist/utils/command-utils.d.ts.map +1 -1
- package/dist/utils/command-utils.js +14 -3
- package/dist/utils/config-loader.d.ts.map +1 -1
- package/dist/utils/config-loader.js +4 -6
- package/dist/utils/credential-store.d.ts +16 -0
- package/dist/utils/credential-store.d.ts.map +1 -1
- package/dist/utils/credential-store.js +57 -2
- package/dist/utils/deploy-runner.d.ts.map +1 -1
- package/dist/utils/deploy-runner.js +7 -2
- package/dist/utils/pipeline-config.d.ts +1 -2
- package/dist/utils/pipeline-config.d.ts.map +1 -1
- package/dist/utils/pipeline-config.js +1 -1
- package/dist/utils/plugin-docker.d.ts +44 -0
- package/dist/utils/plugin-docker.d.ts.map +1 -0
- package/dist/utils/plugin-docker.js +71 -0
- package/dist/utils/plugin-package.d.ts +40 -0
- package/dist/utils/plugin-package.d.ts.map +1 -0
- package/dist/utils/plugin-package.js +159 -0
- package/dist/utils/plugin-resolver.d.ts.map +1 -1
- package/dist/utils/plugin-resolver.js +43 -29
- package/dist/utils/plugin-scan.d.ts +22 -0
- package/dist/utils/plugin-scan.d.ts.map +1 -0
- package/dist/utils/plugin-scan.js +52 -0
- package/dist/utils/plugin-zip.d.ts +15 -0
- package/dist/utils/plugin-zip.d.ts.map +1 -0
- package/dist/utils/plugin-zip.js +96 -0
- package/dist/utils/registry.d.ts +15 -0
- package/dist/utils/registry.d.ts.map +1 -1
- package/dist/utils/registry.js +17 -2
- package/dist/utils/service-account.d.ts.map +1 -1
- package/dist/utils/service-account.js +9 -10
- package/package.json +45 -8
|
@@ -6,7 +6,7 @@ import { errorMessage } from '@pipeline-builder/api-core';
|
|
|
6
6
|
import pico from 'picocolors';
|
|
7
7
|
import { executeCdkShellCommand, resolveBoilerplatePath } from './cdk-utils.js';
|
|
8
8
|
import { ensureOutputDirectory, printInfo, printKeyValue, printSection, printSuccess, printWarning } from './output-utils.js';
|
|
9
|
-
import { buildRegistryPayload, writePendingIntent } from './registry.js';
|
|
9
|
+
import { buildRegistryPayload, readStepManifest, writePendingIntent } from './registry.js';
|
|
10
10
|
import { assertShellSafe, shellQuote } from '../config/cli.constants.js';
|
|
11
11
|
import {} from '../types/index.js';
|
|
12
12
|
const { bold, cyan, dim } = pico;
|
|
@@ -82,6 +82,11 @@ export async function runDeploy(input) {
|
|
|
82
82
|
project: pipeline.project,
|
|
83
83
|
organization: pipeline.organization,
|
|
84
84
|
}, region);
|
|
85
|
+
// The synth's step manifest rides the same registration — and the
|
|
86
|
+
// pending intent, so a retried registration still carries it.
|
|
87
|
+
const steps = await readStepManifest(output);
|
|
88
|
+
if (steps)
|
|
89
|
+
payload.steps = steps;
|
|
85
90
|
}
|
|
86
91
|
catch (buildError) {
|
|
87
92
|
printWarning('Could not build registry payload — skipping registration', {
|
|
@@ -110,4 +115,4 @@ export async function runDeploy(input) {
|
|
|
110
115
|
}
|
|
111
116
|
}
|
|
112
117
|
}
|
|
113
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LXJ1bm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9kZXBsb3ktcnVubmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxLQUFLLElBQUksTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxJQUFJLE1BQU0sWUFBWSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekUsT0FBTyxFQUFpQixNQUFNLG1CQUFtQixDQUFDO0FBRWxELE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUVqQyxtRkFBbUY7QUFDbkYsOEVBQThFO0FBQzlFLG1GQUFtRjtBQUNuRixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBNEIvRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFNBQVMsQ0FBQyxLQUFxQjtJQUNuRCxNQUFNLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLGVB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Q0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCAqIGFzIHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tICdub2RlOnVybCc7XG5pbXBvcnQgeyBlcnJvck1lc3NhZ2UgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgcGljbyBmcm9tICdwaWNvY29sb3JzJztcbmltcG9ydCB7IGV4ZWN1dGVDZGtTaGVsbENvbW1hbmQsIHJlc29sdmVCb2lsZXJwbGF0ZVBhdGggfSBmcm9tICcuL2Nkay11dGlscy5qcyc7XG5pbXBvcnQgeyBlbnN1cmVPdXRwdXREaXJlY3RvcnksIHByaW50SW5mbywgcHJpbnRLZXlWYWx1ZSwgcHJpbnRTZWN0aW9uLCBwcmludFN1Y2Nlc3MsIHByaW50V2FybmluZyB9IGZyb20gJy4vb3V0cHV0LXV0aWxzLmpzJztcbmltcG9ydCB7IGJ1aWxkUmVnaXN0cnlQYXlsb2FkLCB3cml0ZVBlbmRpbmdJbnRlbnQgfSBmcm9tICcuL3JlZ2lzdHJ5LmpzJztcbmltcG9ydCB7IGFzc2VydFNoZWxsU2FmZSwgc2hlbGxRdW90ZSB9IGZyb20gJy4uL2NvbmZpZy9jbGkuY29uc3RhbnRzLmpzJztcbmltcG9ydCB7IHR5cGUgUGlwZWxpbmUgfSBmcm9tICcuLi90eXBlcy9pbmRleC5qcyc7XG5cbmNvbnN0IHsgYm9sZCwgY3lhbiwgZGltIH0gPSBwaWNvO1xuXG4vLyBFU00gaGFzIG5vIF9fZGlybmFtZTsgZGVyaXZlIGl0IGZyb20gdGhpcyBtb2R1bGUncyBVUkwuIGByZXNvbHZlQm9pbGVycGxhdGVQYXRoYFxuLy8gcmV0dXJucyBgLi4vYm9pbGVycGxhdGUuanNgLCB3aGljaCBpcyB0aGUgc2FtZSB0YXJnZXQgd2hldGhlciByZXNvbHZlZCBmcm9tXG4vLyBzcmMvY29tbWFuZHMgb3Igc3JjL3V0aWxzIChib3RoIGFyZSBzaWJsaW5ncyB1bmRlciBzcmMvKSwgc28gdGhpcyBzdGF5cyBjb3JyZWN0LlxuY29uc3QgX19kaXJuYW1lID0gcGF0aC5kaXJuYW1lKGZpbGVVUkxUb1BhdGgoaW1wb3J0Lm1ldGEudXJsKSk7XG5cbi8qKiBNaW5pbWFsIHBsYXRmb3JtIGNsaWVudCBzaGFwZSBuZWVkZWQgdG8gcmVnaXN0ZXIgYSBkZXBsb3llZCBBUk4uICovXG5pbnRlcmZhY2UgUmVnaXN0cnlDbGllbnQge1xuICBwb3N0OiAodXJsOiBzdHJpbmcsIGJvZHk6IHVua25vd24pID0+IFByb21pc2U8dW5rbm93bj47XG59XG5cbi8qKiBJbnB1dHMgZm9yIHtAbGluayBydW5EZXBsb3l9IOKAlCBhbiBhbHJlYWR5LXJlc29sdmVkIHBpcGVsaW5lICsgcHJvcHMuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bkRlcGxveUlucHV0IHtcbiAgLyoqIFRoZSBwaXBlbGluZSBiZWluZyBkZXBsb3llZCAoaWQvb3JnSWQvbmFtZS9wcm9qZWN0L29yZyBkcml2ZSByZWdpc3RyYXRpb24pLiAqL1xuICBwaXBlbGluZTogUGljazxQaXBlbGluZSwgJ2lkJyB8ICdvcmdJZCcgfCAncGlwZWxpbmVOYW1lJyB8ICdwcm9qZWN0JyB8ICdvcmdhbml6YXRpb24nPjtcbiAgLyoqIEZ1bGx5LXJlc29sdmVkIHByb3BzIChwbHVnaW5zIHByZS1yZXNvbHZlZCwgcmVnaXN0cnkgaG9zdCBiYWtlZCwgaWRzIGluY2x1ZGVkKS4gKi9cbiAgcHJvcHNXaXRoSWRzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgLyoqIEFXUyBwcm9maWxlIC8gcmVnaW9uIGZvciB0aGUgZGVwbG95ICsgcmVnaXN0cnkgcGF5bG9hZC4gKi9cbiAgcHJvZmlsZT86IHN0cmluZztcbiAgcmVnaW9uPzogc3RyaW5nO1xuICAvKiogYGNkayBkZXBsb3kgLS1yZXF1aXJlLWFwcHJvdmFsYCBsZXZlbCBhbmQgYC0tb3V0cHV0YCBkaXIuICovXG4gIHJlcXVpcmVBcHByb3ZhbDogc3RyaW5nO1xuICBvdXRwdXQ6IHN0cmluZztcbiAgZGVidWc/OiBib29sZWFuO1xuICAvKiogRm9yIHRoZSBjb21tYW5kIGhlYWRlciAvIHN1bW1hcnkgbGluZS4gKi9cbiAgZXhlY3V0aW9uSWQ6IHN0cmluZztcbiAgLyoqIFJlZ2lzdHJ5IGNhbGxiYWNrIOKAlCBvbWl0IChlLmcuIC0tbG9jYWwtc3BlYykgdG8gc2tpcCBBUk4gcmVnaXN0cmF0aW9uLiAqL1xuICBwbGF0Zm9ybUNsaWVudD86IFJlZ2lzdHJ5Q2xpZW50O1xuICBwbGF0Zm9ybVBpcGVsaW5lVXJsPzogc3RyaW5nO1xuICBwbGF0Zm9ybUJhc2VVcmw/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUnVuIGBjZGsgZGVwbG95YCBmb3IgYW4gYWxyZWFkeS1yZXNvbHZlZCBwaXBlbGluZSwgdGhlbiByZWdpc3RlciB0aGUgZGVwbG95ZWRcbiAqIEFSTiBmb3IgZXZlbnQgcmVwb3J0aW5nIChiZXN0LWVmZm9ydCkuIFNoYXJlZCBieSBgcGlwZWxpbmUgZGVwbG95YCBhbmRcbiAqIGBwaXBlbGluZSBjcmVhdGUgLS1kZXBsb3lgIHNvIHRoZSB0d28gZW50cnkgcG9pbnRzIG5ldmVyIGRyaWZ0LlxuICpcbiAqIFRIUk9XUyBvbiBDREsgZmFpbHVyZSAodGhlIGNhbGxlciBtYXBzIGl0IHRvIGEgbm9uLXplcm8gZXhpdCBhbmQsIGZvciB0aGVcbiAqIGNyZWF0ZSBwYXRoLCBrZWVwcyB0aGUgY3JlYXRlZCByZWNvcmQgYW5kIHByaW50cyB0aGUgYGRlcGxveSAtLWlkYCByZXRyeSkuXG4gKiBSZWdpc3RyeSBmYWlsdXJlcyBhcmUgTk9OLWZhdGFsIOKAlCB0aGV5J3JlIHF1ZXVlZCB0byBhIHBlbmRpbmctaW50ZW50IGZpbGUgZm9yXG4gKiBgcGlwZWxpbmUgcmVnaXN0ZXJgIHRvIGRyYWluIGxhdGVyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuRGVwbG95KGlucHV0OiBSdW5EZXBsb3lJbnB1dCk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IHBpcGVsaW5lLCBwcm9wc1dpdGhJZHMsIHByb2ZpbGUsIHJlZ2lvbiwgcmVxdWlyZUFwcHJvdmFsLCBvdXRwdXQsIGRlYnVnLCBleGVjdXRpb25JZCB9ID0gaW5wdXQ7XG5cbiAgY29uc3QgZW5jb2RlZCA9IEJ1ZmZlci5mcm9tKEpTT04uc3RyaW5naWZ5KHByb3BzV2l0aElkcyksICd1dGYtOCcpLnRvU3RyaW5nKCdiYXNlNjQnKTtcblxuICBwcmludEluZm8oJ1ByZXBhcmluZyBvdXRwdXQgZGlyZWN0b3J5JywgeyBwYXRoOiBvdXRwdXQgfSk7XG4gIGVuc3VyZU91dHB1dERpcmVjdG9yeShvdXRwdXQpO1xuXG4gIC8vIFZhbGlkYXRlIEVWRVJZIGlucHV0IHRoYXQgZmxvd3MgaW50byB0aGUgc2hlbGwgKGludGVycG9sYXRlZCB1bnF1b3RlZCBiZWxvdykuXG4gIGlmIChwcm9maWxlKSBhc3NlcnRTaGVsbFNhZmUocHJvZmlsZSwgJ3Byb2ZpbGUnKTtcbiAgYXNzZXJ0U2hlbGxTYWZlKG91dHB1dCwgJ291dHB1dCcpO1xuICBhc3NlcnRTaGVsbFNhZmUocmVxdWlyZUFwcHJvdmFsLCAncmVxdWlyZS1hcHByb3ZhbCcpO1xuXG4gIC8vIGBhc3NlcnRTaGVsbFNhZmVgIHJlamVjdHMgc2hlbGwgbWV0YWNoYXJhY3RlcnMgYnV0IEFMTE9XUyBzcGFjZXMsIHNvIHF1b3RlXG4gIC8vIGV2ZXJ5IGludGVycG9sYXRlZCB2YWx1ZSAoYSBwYXRoL3Byb2ZpbGUgd2l0aCBhIHNwYWNlIHdvdWxkIG90aGVyd2lzZSBzcGxpdFxuICAvLyBpbnRvIGV4dHJhIGNkayBhcmdzIOKAlCBtYXRjaGluZyBob3cgdGhlIGFnZW50IHBhdGggcXVvdGVzIHRoZW0pLlxuICBjb25zdCBzY3JpcHRQYXRoID0gcmVzb2x2ZUJvaWxlcnBsYXRlUGF0aChfX2Rpcm5hbWUpO1xuICBjb25zdCBwcm9maWxlQXJnID0gcHJvZmlsZSA/IGAtLXByb2ZpbGU9JHtzaGVsbFF1b3RlKHByb2ZpbGUpfWAgOiAnJztcbiAgY29uc3Qgb3V0cHV0QXJnID0gYC0tb3V0cHV0PSR7c2hlbGxRdW90ZShvdXRwdXQpfWA7XG4gIGNvbnN0IGFwcEFyZyA9IGAtLWFwcD1cIm5vZGUgJHtzY3JpcHRQYXRofVwiYDtcbiAgY29uc3QgY29tbWFuZCA9IGBjZGsgZGVwbG95ICR7cHJvZmlsZUFyZ30gLS1yZXF1aXJlLWFwcHJvdmFsPSR7c2hlbGxRdW90ZShyZXF1aXJlQXBwcm92YWwpfSAke291dHB1dEFyZ30gLS1ub3RpY2VzPWZhbHNlICR7YXBwQXJnfWA7XG5cbiAgcHJpbnRTZWN0aW9uKCdDREsgRXhlY3V0aW9uJyk7XG4gIGNvbnNvbGUubG9nKGN5YW4oYm9sZCgnQ29tbWFuZDonKSksIGRpbShjb21tYW5kLnNwbGl0KCcgLS0nKVswXSArICcgLi4uJykpO1xuICBjb25zb2xlLmxvZygnJyk7XG5cbiAgLy8gRm9yd2FyZCB0aGUgcmVzb2x2ZWQgcGxhdGZvcm0gYmFzZSBVUkwgaW50byB0aGUgQ0RLIHN5bnRoIHN1YnByb2Nlc3MgKGl0IHJlYWRzXG4gIC8vIG9ubHkgcHJvY2Vzcy5lbnYpIGZvciB0aGUgUGx1Z2luTG9va3VwIExhbWJkYSBlbmRwb2ludCArIHJlZ2lzdHJ5IHB1bGwtaG9zdFxuICAvLyBmYWxsYmFjay4gQWJzZW50IGluIGxvY2FsLXNwZWMgbW9kZS5cbiAgY29uc3QgY2RrRW52OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0geyBQSVBFTElORV9QUk9QUzogZW5jb2RlZCB9O1xuICBpZiAoaW5wdXQucGxhdGZvcm1CYXNlVXJsKSBjZGtFbnYuUExBVEZPUk1fQkFTRV9VUkwgPSBpbnB1dC5wbGF0Zm9ybUJhc2VVcmw7XG5cbiAgLy8gVGhyb3dzIG9uIGZhaWx1cmUg4oCUIHN1cmZhY2VkIGJ5IHRoZSBjYWxsZXIgYXMgYSBub24temVybyBleGl0LlxuICBjb25zdCByZXN1bHQgPSBleGVjdXRlQ2RrU2hlbGxDb21tYW5kKGNvbW1hbmQsIHsgZGVidWcsIHNob3dPdXRwdXQ6IHRydWUsIGVudjogY2RrRW52IH0pO1xuXG4gIGNvbnNvbGUubG9nKCcnKTtcbiAgcHJpbnRTZWN0aW9uKCdEZXBsb3ltZW50IENvbXBsZXRlJyk7XG4gIHByaW50S2V5VmFsdWUoe1xuICAgICdFeGVjdXRpb24gSUQnOiBleGVjdXRpb25JZCxcbiAgICAnRHVyYXRpb24nOiBgJHtyZXN1bHQuZHVyYXRpb259bXNgLFxuICAgICdPdXRwdXQgRGlyZWN0b3J5Jzogb3V0cHV0LFxuICAgICdTdGF0dXMnOiAn4pyTIFN1Y2Nlc3MnLFxuICB9KTtcblxuICAvLyBSZWdpc3RlciB0aGUgcGlwZWxpbmUgQVJOIGZvciBldmVudCByZXBvcnRpbmcgKG5vbi1ibG9ja2luZykuIFNraXBwZWQgd2hlblxuICAvLyB0aGVyZSdzIG5vIHBsYXRmb3JtIGNsaWVudCAobG9jYWwtc3BlYykgb3Igbm8gb3JnSWQgdG8gc2NvcGUgaXQgdG8uXG4gIGlmICghaW5wdXQucGxhdGZvcm1DbGllbnQgfHwgIWlucHV0LnBsYXRmb3JtUGlwZWxpbmVVcmwpIHtcbiAgICBwcmludEluZm8oJ1NraXBwaW5nIHBpcGVsaW5lIHJlZ2lzdHJ5IChubyBwbGF0Zm9ybSBjbGllbnQpJyk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmICghcGlwZWxpbmUub3JnSWQpIHtcbiAgICBwcmludFdhcm5pbmcoJ1BpcGVsaW5lIGhhcyBubyBvcmdJZCDigJQgc2tpcHBpbmcgcmVnaXN0cmF0aW9uJyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gQnVpbGQgdGhlIHBheWxvYWQgdXAtZnJvbnQgc28gYSBQT1NUIGZhaWx1cmUgY2FuIHBlcnNpc3QgdGhlIFNBTUUgcGF5bG9hZCBhcyBhXG4gIC8vIHBlbmRpbmcgaW50ZW50IGZvciBgcGlwZWxpbmUgcmVnaXN0ZXJgIHRvIGRyYWluIGxhdGVyIChTVFMgbG9va3VwcyBhcmVuJ3QgcmV0cmllZCkuXG4gIGxldCBwYXlsb2FkO1xuICB0cnkge1xuICAgIHBheWxvYWQgPSBhd2FpdCBidWlsZFJlZ2lzdHJ5UGF5bG9hZChcbiAgICAgIHtcbiAgICAgICAgaWQ6IHBpcGVsaW5lLmlkLFxuICAgICAgICBvcmdJZDogcGlwZWxpbmUub3JnSWQsXG4gICAgICAgIHBpcGVsaW5lTmFtZTogcGlwZWxpbmUucGlwZWxpbmVOYW1lLFxuICAgICAgICBwcm9qZWN0OiBwaXBlbGluZS5wcm9qZWN0LFxuICAgICAgICBvcmdhbml6YXRpb246IHBpcGVsaW5lLm9yZ2FuaXphdGlvbixcbiAgICAgIH0sXG4gICAgICByZWdpb24sXG4gICAgKTtcbiAgfSBjYXRjaCAoYnVpbGRFcnJvcikge1xuICAgIHByaW50V2FybmluZygnQ291bGQgbm90IGJ1aWxkIHJlZ2lzdHJ5IHBheWxvYWQg4oCUIHNraXBwaW5nIHJlZ2lzdHJhdGlvbicsIHtcbiAgICAgIGVycm9yOiBlcnJvck1lc3NhZ2UoYnVpbGRFcnJvciksXG4gICAgfSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBpbnB1dC5wbGF0Zm9ybUNsaWVudC5wb3N0KGAke2lucHV0LnBsYXRmb3JtUGlwZWxpbmVVcmx9L3JlZ2lzdHJ5YCwgcGF5bG9hZCk7XG4gICAgcHJpbnRTdWNjZXNzKCdQaXBlbGluZSByZWdpc3RlcmVkIGZvciBldmVudCByZXBvcnRpbmcnLCB7IHBpcGVsaW5lSWQ6IHBheWxvYWQucGlwZWxpbmVJZCB9KTtcbiAgfSBjYXRjaCAocmVnRXJyb3IpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgaW50ZW50UGF0aCA9IGF3YWl0IHdyaXRlUGVuZGluZ0ludGVudChwYXlsb2FkKTtcbiAgICAgIHByaW50V2FybmluZygnUGlwZWxpbmUgcmVnaXN0cnkgdXBkYXRlIGZhaWxlZDsgcXVldWVkIGZvciByZXRyeScsIHtcbiAgICAgICAgZXJyb3I6IGVycm9yTWVzc2FnZShyZWdFcnJvciksXG4gICAgICAgIHJldHJ5OiAncGlwZWxpbmUtbWFuYWdlciBwaXBlbGluZSByZWdpc3RlcicsXG4gICAgICAgIGludGVudDogaW50ZW50UGF0aCxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKHdyaXRlRXJyKSB7XG4gICAgICBwcmludFdhcm5pbmcoJ1BpcGVsaW5lIHJlZ2lzdHJ5IHVwZGF0ZSBmYWlsZWQgKHJldHJ5IHF1ZXVlIGFsc28gZmFpbGVkKScsIHtcbiAgICAgICAgZXJyb3I6IGVycm9yTWVzc2FnZShyZWdFcnJvciksXG4gICAgICAgIHF1ZXVlRXJyb3I6IGVycm9yTWVzc2FnZSh3cml0ZUVyciksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LXJ1bm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9kZXBsb3ktcnVubmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxLQUFLLElBQUksTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxJQUFJLE1BQU0sWUFBWSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekUsT0FBTyxFQUFpQixNQUFNLG1CQUFtQixDQUFDO0FBRWxELE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUVqQyxtRkFBbUY7QUFDbkYsOEVBQThFO0FBQzlFLG1GQUFtRjtBQUNuRixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBNEIvRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFNBQVMsQ0FBQyxLQUFxQjtJQUNuRCxNQUFNLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUs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QUNMLENBQUM7UUFBQyxPQUFPLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLFlBQVksQ0FBQywyREFBMkQsRUFBRTtnQkFDeEUsS0FBSyxFQUFFLFlBQVksQ0FBQyxRQUFRLENBQUM7Z0JBQzdCLFVBQVUsRUFBRSxZQUFZLENBQUMsUUFBUSxDQUFDO2FBQ25DLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoIH0gZnJvbSAnbm9kZTp1cmwnO1xuaW1wb3J0IHsgZXJyb3JNZXNzYWdlIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHBpY28gZnJvbSAncGljb2NvbG9ycyc7XG5pbXBvcnQgeyBleGVjdXRlQ2RrU2hlbGxDb21tYW5kLCByZXNvbHZlQm9pbGVycGxhdGVQYXRoIH0gZnJvbSAnLi9jZGstdXRpbHMuanMnO1xuaW1wb3J0IHsgZW5zdXJlT3V0cHV0RGlyZWN0b3J5LCBwcmludEluZm8sIHByaW50S2V5VmFsdWUsIHByaW50U2VjdGlvbiwgcHJpbnRTdWNjZXNzLCBwcmludFdhcm5pbmcgfSBmcm9tICcuL291dHB1dC11dGlscy5qcyc7XG5pbXBvcnQgeyBidWlsZFJlZ2lzdHJ5UGF5bG9hZCwgcmVhZFN0ZXBNYW5pZmVzdCwgd3JpdGVQZW5kaW5nSW50ZW50IH0gZnJvbSAnLi9yZWdpc3RyeS5qcyc7XG5pbXBvcnQgeyBhc3NlcnRTaGVsbFNhZmUsIHNoZWxsUXVvdGUgfSBmcm9tICcuLi9jb25maWcvY2xpLmNvbnN0YW50cy5qcyc7XG5pbXBvcnQgeyB0eXBlIFBpcGVsaW5lIH0gZnJvbSAnLi4vdHlwZXMvaW5kZXguanMnO1xuXG5jb25zdCB7IGJvbGQsIGN5YW4sIGRpbSB9ID0gcGljbztcblxuLy8gRVNNIGhhcyBubyBfX2Rpcm5hbWU7IGRlcml2ZSBpdCBmcm9tIHRoaXMgbW9kdWxlJ3MgVVJMLiBgcmVzb2x2ZUJvaWxlcnBsYXRlUGF0aGBcbi8vIHJldHVybnMgYC4uL2JvaWxlcnBsYXRlLmpzYCwgd2hpY2ggaXMgdGhlIHNhbWUgdGFyZ2V0IHdoZXRoZXIgcmVzb2x2ZWQgZnJvbVxuLy8gc3JjL2NvbW1hbmRzIG9yIHNyYy91dGlscyAoYm90aCBhcmUgc2libGluZ3MgdW5kZXIgc3JjLyksIHNvIHRoaXMgc3RheXMgY29ycmVjdC5cbmNvbnN0IF9fZGlybmFtZSA9IHBhdGguZGlybmFtZShmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCkpO1xuXG4vKiogTWluaW1hbCBwbGF0Zm9ybSBjbGllbnQgc2hhcGUgbmVlZGVkIHRvIHJlZ2lzdGVyIGEgZGVwbG95ZWQgQVJOLiAqL1xuaW50ZXJmYWNlIFJlZ2lzdHJ5Q2xpZW50IHtcbiAgcG9zdDogKHVybDogc3RyaW5nLCBib2R5OiB1bmtub3duKSA9PiBQcm9taXNlPHVua25vd24+O1xufVxuXG4vKiogSW5wdXRzIGZvciB7QGxpbmsgcnVuRGVwbG95fSDigJQgYW4gYWxyZWFkeS1yZXNvbHZlZCBwaXBlbGluZSArIHByb3BzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdW5EZXBsb3lJbnB1dCB7XG4gIC8qKiBUaGUgcGlwZWxpbmUgYmVpbmcgZGVwbG95ZWQgKGlkL29yZ0lkL25hbWUvcHJvamVjdC9vcmcgZHJpdmUgcmVnaXN0cmF0aW9uKS4gKi9cbiAgcGlwZWxpbmU6IFBpY2s8UGlwZWxpbmUsICdpZCcgfCAnb3JnSWQnIHwgJ3BpcGVsaW5lTmFtZScgfCAncHJvamVjdCcgfCAnb3JnYW5pemF0aW9uJz47XG4gIC8qKiBGdWxseS1yZXNvbHZlZCBwcm9wcyAocGx1Z2lucyBwcmUtcmVzb2x2ZWQsIHJlZ2lzdHJ5IGhvc3QgYmFrZWQsIGlkcyBpbmNsdWRlZCkuICovXG4gIHByb3BzV2l0aElkczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIC8qKiBBV1MgcHJvZmlsZSAvIHJlZ2lvbiBmb3IgdGhlIGRlcGxveSArIHJlZ2lzdHJ5IHBheWxvYWQuICovXG4gIHByb2ZpbGU/OiBzdHJpbmc7XG4gIHJlZ2lvbj86IHN0cmluZztcbiAgLyoqIGBjZGsgZGVwbG95IC0tcmVxdWlyZS1hcHByb3ZhbGAgbGV2ZWwgYW5kIGAtLW91dHB1dGAgZGlyLiAqL1xuICByZXF1aXJlQXBwcm92YWw6IHN0cmluZztcbiAgb3V0cHV0OiBzdHJpbmc7XG4gIGRlYnVnPzogYm9vbGVhbjtcbiAgLyoqIEZvciB0aGUgY29tbWFuZCBoZWFkZXIgLyBzdW1tYXJ5IGxpbmUuICovXG4gIGV4ZWN1dGlvbklkOiBzdHJpbmc7XG4gIC8qKiBSZWdpc3RyeSBjYWxsYmFjayDigJQgb21pdCAoZS5nLiAtLWxvY2FsLXNwZWMpIHRvIHNraXAgQVJOIHJlZ2lzdHJhdGlvbi4gKi9cbiAgcGxhdGZvcm1DbGllbnQ/OiBSZWdpc3RyeUNsaWVudDtcbiAgcGxhdGZvcm1QaXBlbGluZVVybD86IHN0cmluZztcbiAgcGxhdGZvcm1CYXNlVXJsPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJ1biBgY2RrIGRlcGxveWAgZm9yIGFuIGFscmVhZHktcmVzb2x2ZWQgcGlwZWxpbmUsIHRoZW4gcmVnaXN0ZXIgdGhlIGRlcGxveWVkXG4gKiBBUk4gZm9yIGV2ZW50IHJlcG9ydGluZyAoYmVzdC1lZmZvcnQpLiBTaGFyZWQgYnkgYHBpcGVsaW5lIGRlcGxveWAgYW5kXG4gKiBgcGlwZWxpbmUgY3JlYXRlIC0tZGVwbG95YCBzbyB0aGUgdHdvIGVudHJ5IHBvaW50cyBuZXZlciBkcmlmdC5cbiAqXG4gKiBUSFJPV1Mgb24gQ0RLIGZhaWx1cmUgKHRoZSBjYWxsZXIgbWFwcyBpdCB0byBhIG5vbi16ZXJvIGV4aXQgYW5kLCBmb3IgdGhlXG4gKiBjcmVhdGUgcGF0aCwga2VlcHMgdGhlIGNyZWF0ZWQgcmVjb3JkIGFuZCBwcmludHMgdGhlIGBkZXBsb3kgLS1pZGAgcmV0cnkpLlxuICogUmVnaXN0cnkgZmFpbHVyZXMgYXJlIE5PTi1mYXRhbCDigJQgdGhleSdyZSBxdWV1ZWQgdG8gYSBwZW5kaW5nLWludGVudCBmaWxlIGZvclxuICogYHBpcGVsaW5lIHJlZ2lzdGVyYCB0byBkcmFpbiBsYXRlci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bkRlcGxveShpbnB1dDogUnVuRGVwbG95SW5wdXQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBwaXBlbGluZSwgcHJvcHNXaXRoSWRzLCBwcm9maWxlLCByZWdpb24sIHJlcXVpcmVBcHByb3ZhbCwgb3V0cHV0LCBkZWJ1ZywgZXhlY3V0aW9uSWQgfSA9IGlucHV0O1xuXG4gIGNvbnN0IGVuY29kZWQgPSBCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeShwcm9wc1dpdGhJZHMpLCAndXRmLTgnKS50b1N0cmluZygnYmFzZTY0Jyk7XG5cbiAgcHJpbnRJbmZvKCdQcmVwYXJpbmcgb3V0cHV0IGRpcmVjdG9yeScsIHsgcGF0aDogb3V0cHV0IH0pO1xuICBlbnN1cmVPdXRwdXREaXJlY3Rvcnkob3V0cHV0KTtcblxuICAvLyBWYWxpZGF0ZSBFVkVSWSBpbnB1dCB0aGF0IGZsb3dzIGludG8gdGhlIHNoZWxsIChpbnRlcnBvbGF0ZWQgdW5xdW90ZWQgYmVsb3cpLlxuICBpZiAocHJvZmlsZSkgYXNzZXJ0U2hlbGxTYWZlKHByb2ZpbGUsICdwcm9maWxlJyk7XG4gIGFzc2VydFNoZWxsU2FmZShvdXRwdXQsICdvdXRwdXQnKTtcbiAgYXNzZXJ0U2hlbGxTYWZlKHJlcXVpcmVBcHByb3ZhbCwgJ3JlcXVpcmUtYXBwcm92YWwnKTtcblxuICAvLyBgYXNzZXJ0U2hlbGxTYWZlYCByZWplY3RzIHNoZWxsIG1ldGFjaGFyYWN0ZXJzIGJ1dCBBTExPV1Mgc3BhY2VzLCBzbyBxdW90ZVxuICAvLyBldmVyeSBpbnRlcnBvbGF0ZWQgdmFsdWUgKGEgcGF0aC9wcm9maWxlIHdpdGggYSBzcGFjZSB3b3VsZCBvdGhlcndpc2Ugc3BsaXRcbiAgLy8gaW50byBleHRyYSBjZGsgYXJncyDigJQgbWF0Y2hpbmcgaG93IHRoZSBhZ2VudCBwYXRoIHF1b3RlcyB0aGVtKS5cbiAgY29uc3Qgc2NyaXB0UGF0aCA9IHJlc29sdmVCb2lsZXJwbGF0ZVBhdGgoX19kaXJuYW1lKTtcbiAgY29uc3QgcHJvZmlsZUFyZyA9IHByb2ZpbGUgPyBgLS1wcm9maWxlPSR7c2hlbGxRdW90ZShwcm9maWxlKX1gIDogJyc7XG4gIGNvbnN0IG91dHB1dEFyZyA9IGAtLW91dHB1dD0ke3NoZWxsUXVvdGUob3V0cHV0KX1gO1xuICBjb25zdCBhcHBBcmcgPSBgLS1hcHA9XCJub2RlICR7c2NyaXB0UGF0aH1cImA7XG4gIGNvbnN0IGNvbW1hbmQgPSBgY2RrIGRlcGxveSAke3Byb2ZpbGVBcmd9IC0tcmVxdWlyZS1hcHByb3ZhbD0ke3NoZWxsUXVvdGUocmVxdWlyZUFwcHJvdmFsKX0gJHtvdXRwdXRBcmd9IC0tbm90aWNlcz1mYWxzZSAke2FwcEFyZ31gO1xuXG4gIHByaW50U2VjdGlvbignQ0RLIEV4ZWN1dGlvbicpO1xuICBjb25zb2xlLmxvZyhjeWFuKGJvbGQoJ0NvbW1hbmQ6JykpLCBkaW0oY29tbWFuZC5zcGxpdCgnIC0tJylbMF0gKyAnIC4uLicpKTtcbiAgY29uc29sZS5sb2coJycpO1xuXG4gIC8vIEZvcndhcmQgdGhlIHJlc29sdmVkIHBsYXRmb3JtIGJhc2UgVVJMIGludG8gdGhlIENESyBzeW50aCBzdWJwcm9jZXNzIChpdCByZWFkc1xuICAvLyBvbmx5IHByb2Nlc3MuZW52KSBmb3IgdGhlIFBsdWdpbkxvb2t1cCBMYW1iZGEgZW5kcG9pbnQgKyByZWdpc3RyeSBwdWxsLWhvc3RcbiAgLy8gZmFsbGJhY2suIEFic2VudCBpbiBsb2NhbC1zcGVjIG1vZGUuXG4gIGNvbnN0IGNka0VudjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHsgUElQRUxJTkVfUFJPUFM6IGVuY29kZWQgfTtcbiAgaWYgKGlucHV0LnBsYXRmb3JtQmFzZVVybCkgY2RrRW52LlBMQVRGT1JNX0JBU0VfVVJMID0gaW5wdXQucGxhdGZvcm1CYXNlVXJsO1xuXG4gIC8vIFRocm93cyBvbiBmYWlsdXJlIOKAlCBzdXJmYWNlZCBieSB0aGUgY2FsbGVyIGFzIGEgbm9uLXplcm8gZXhpdC5cbiAgY29uc3QgcmVzdWx0ID0gZXhlY3V0ZUNka1NoZWxsQ29tbWFuZChjb21tYW5kLCB7IGRlYnVnLCBzaG93T3V0cHV0OiB0cnVlLCBlbnY6IGNka0VudiB9KTtcblxuICBjb25zb2xlLmxvZygnJyk7XG4gIHByaW50U2VjdGlvbignRGVwbG95bWVudCBDb21wbGV0ZScpO1xuICBwcmludEtleVZhbHVlKHtcbiAgICAnRXhlY3V0aW9uIElEJzogZXhlY3V0aW9uSWQsXG4gICAgJ0R1cmF0aW9uJzogYCR7cmVzdWx0LmR1cmF0aW9ufW1zYCxcbiAgICAnT3V0cHV0IERpcmVjdG9yeSc6IG91dHB1dCxcbiAgICAnU3RhdHVzJzogJ+KckyBTdWNjZXNzJyxcbiAgfSk7XG5cbiAgLy8gUmVnaXN0ZXIgdGhlIHBpcGVsaW5lIEFSTiBmb3IgZXZlbnQgcmVwb3J0aW5nIChub24tYmxvY2tpbmcpLiBTa2lwcGVkIHdoZW5cbiAgLy8gdGhlcmUncyBubyBwbGF0Zm9ybSBjbGllbnQgKGxvY2FsLXNwZWMpIG9yIG5vIG9yZ0lkIHRvIHNjb3BlIGl0IHRvLlxuICBpZiAoIWlucHV0LnBsYXRmb3JtQ2xpZW50IHx8ICFpbnB1dC5wbGF0Zm9ybVBpcGVsaW5lVXJsKSB7XG4gICAgcHJpbnRJbmZvKCdTa2lwcGluZyBwaXBlbGluZSByZWdpc3RyeSAobm8gcGxhdGZvcm0gY2xpZW50KScpO1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoIXBpcGVsaW5lLm9yZ0lkKSB7XG4gICAgcHJpbnRXYXJuaW5nKCdQaXBlbGluZSBoYXMgbm8gb3JnSWQg4oCUIHNraXBwaW5nIHJlZ2lzdHJhdGlvbicpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIEJ1aWxkIHRoZSBwYXlsb2FkIHVwLWZyb250IHNvIGEgUE9TVCBmYWlsdXJlIGNhbiBwZXJzaXN0IHRoZSBTQU1FIHBheWxvYWQgYXMgYVxuICAvLyBwZW5kaW5nIGludGVudCBmb3IgYHBpcGVsaW5lIHJlZ2lzdGVyYCB0byBkcmFpbiBsYXRlciAoU1RTIGxvb2t1cHMgYXJlbid0IHJldHJpZWQpLlxuICBsZXQgcGF5bG9hZDtcbiAgdHJ5IHtcbiAgICBwYXlsb2FkID0gYXdhaXQgYnVpbGRSZWdpc3RyeVBheWxvYWQoXG4gICAgICB7XG4gICAgICAgIGlkOiBwaXBlbGluZS5pZCxcbiAgICAgICAgb3JnSWQ6IHBpcGVsaW5lLm9yZ0lkLFxuICAgICAgICBwaXBlbGluZU5hbWU6IHBpcGVsaW5lLnBpcGVsaW5lTmFtZSxcbiAgICAgICAgcHJvamVjdDogcGlwZWxpbmUucHJvamVjdCxcbiAgICAgICAgb3JnYW5pemF0aW9uOiBwaXBlbGluZS5vcmdhbml6YXRpb24sXG4gICAgICB9LFxuICAgICAgcmVnaW9uLFxuICAgICk7XG4gICAgLy8gVGhlIHN5bnRoJ3Mgc3RlcCBtYW5pZmVzdCByaWRlcyB0aGUgc2FtZSByZWdpc3RyYXRpb24g4oCUIGFuZCB0aGVcbiAgICAvLyBwZW5kaW5nIGludGVudCwgc28gYSByZXRyaWVkIHJlZ2lzdHJhdGlvbiBzdGlsbCBjYXJyaWVzIGl0LlxuICAgIGNvbnN0IHN0ZXBzID0gYXdhaXQgcmVhZFN0ZXBNYW5pZmVzdChvdXRwdXQpO1xuICAgIGlmIChzdGVwcykgcGF5bG9hZC5zdGVwcyA9IHN0ZXBzO1xuICB9IGNhdGNoIChidWlsZEVycm9yKSB7XG4gICAgcHJpbnRXYXJuaW5nKCdDb3VsZCBub3QgYnVpbGQgcmVnaXN0cnkgcGF5bG9hZCDigJQgc2tpcHBpbmcgcmVnaXN0cmF0aW9uJywge1xuICAgICAgZXJyb3I6IGVycm9yTWVzc2FnZShidWlsZEVycm9yKSxcbiAgICB9KTtcbiAgICByZXR1cm47XG4gIH1cblxuICB0cnkge1xuICAgIGF3YWl0IGlucHV0LnBsYXRmb3JtQ2xpZW50LnBvc3QoYCR7aW5wdXQucGxhdGZvcm1QaXBlbGluZVVybH0vcmVnaXN0cnlgLCBwYXlsb2FkKTtcbiAgICBwcmludFN1Y2Nlc3MoJ1BpcGVsaW5lIHJlZ2lzdGVyZWQgZm9yIGV2ZW50IHJlcG9ydGluZycsIHsgcGlwZWxpbmVJZDogcGF5bG9hZC5waXBlbGluZUlkIH0pO1xuICB9IGNhdGNoIChyZWdFcnJvcikge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBpbnRlbnRQYXRoID0gYXdhaXQgd3JpdGVQZW5kaW5nSW50ZW50KHBheWxvYWQpO1xuICAgICAgcHJpbnRXYXJuaW5nKCdQaXBlbGluZSByZWdpc3RyeSB1cGRhdGUgZmFpbGVkOyBxdWV1ZWQgZm9yIHJldHJ5Jywge1xuICAgICAgICBlcnJvcjogZXJyb3JNZXNzYWdlKHJlZ0Vycm9yKSxcbiAgICAgICAgcmV0cnk6ICdwaXBlbGluZS1tYW5hZ2VyIHBpcGVsaW5lIHJlZ2lzdGVyJyxcbiAgICAgICAgaW50ZW50OiBpbnRlbnRQYXRoLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAod3JpdGVFcnIpIHtcbiAgICAgIHByaW50V2FybmluZygnUGlwZWxpbmUgcmVnaXN0cnkgdXBkYXRlIGZhaWxlZCAocmV0cnkgcXVldWUgYWxzbyBmYWlsZWQpJywge1xuICAgICAgICBlcnJvcjogZXJyb3JNZXNzYWdlKHJlZ0Vycm9yKSxcbiAgICAgICAgcXVldWVFcnJvcjogZXJyb3JNZXNzYWdlKHdyaXRlRXJyKSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared pipeline-config resolution used by both `synth` and `deploy` so the two
|
|
3
|
-
* commands fetch, plugin-resolve, registry-bake, and template-preview identically
|
|
4
|
-
* (they previously kept near-duplicate copies that could drift).
|
|
3
|
+
* commands fetch, plugin-resolve, registry-bake, and template-preview identically.
|
|
5
4
|
*/
|
|
6
5
|
import type { ApiClient } from './api-client.js';
|
|
7
6
|
import type { Pipeline } from '../types/pipeline.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline-config.d.ts","sourceRoot":"","sources":["../../src/utils/pipeline-config.ts"],"names":[],"mappings":"AAGA
|
|
1
|
+
{"version":3,"file":"pipeline-config.d.ts","sourceRoot":"","sources":["../../src/utils/pipeline-config.ts"],"names":[],"mappings":"AAGA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAKjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,WAAW,eAAe;IAC9B,kFAAkF;IAClF,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,4FAA4F;IAC5F,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/C,qEAAqE;IACrE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAsBxG;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAW9F"}
|
|
@@ -52,4 +52,4 @@ export async function printResolvedOrExit(propsWithIds) {
|
|
|
52
52
|
}
|
|
53
53
|
console.log(JSON.stringify(propsWithIds, null, 2));
|
|
54
54
|
}
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3BpcGVsaW5lLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBUXRDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFZNUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGtCQUFrQixDQUFDLE1BQWlCLEVBQUUsVUFBa0I7SUFDNUUsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2xDLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBMEIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsSUFBSSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ3RHLE1BQU0sUUFBUSxHQUFHLHFCQUFxQixDQUFXLFFBQVEsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDaEYsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLDZDQUE2QyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxNQUFNLFlBQVksR0FBNEI7UUFDNUMsR0FBSSxRQUFRLENBQUMsS0FBaUM7UUFDOUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3BELFVBQVUsRUFBRSxRQUFRLENBQUMsRUFBRSxJQUFJLFVBQVU7S0FDdEMsQ0FBQztJQUVGLE1BQU0sZUFBZSxHQUFHLE1BQU0sc0JBQXNCLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzNFLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDNUMsWUFBWSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7UUFDL0MsU0FBUyxDQUFDLHNCQUFzQixFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQsb0JBQW9CLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDakUsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxtQkFBbUIsQ0FBQyxZQUFxQztJQUM3RSxNQUFNLEVBQUUsc0JBQXNCLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0lBQ25GLE1BQU0sS0FBSyxHQUFHLEVBQUUsUUFBUSxFQUFFLFlBQVksQ0FBQyxRQUFRLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ3ZGLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssYUFBYSxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2RyxNQUFNLE1BQU0sR0FBRyxzQkFBc0IsQ0FBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN4RyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDekIsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3BDLEtBQUssTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU07WUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDbkYsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogU2hhcmVkIHBpcGVsaW5lLWNvbmZpZyByZXNvbHV0aW9uIHVzZWQgYnkgYm90aCBgc3ludGhgIGFuZCBgZGVwbG95YCBzbyB0aGUgdHdvXG4gKiBjb21tYW5kcyBmZXRjaCwgcGx1Z2luLXJlc29sdmUsIHJlZ2lzdHJ5LWJha2UsIGFuZCB0ZW1wbGF0ZS1wcmV2aWV3IGlkZW50aWNhbGx5LlxuICovXG5cbmltcG9ydCB0eXBlIHsgQXBpQ2xpZW50IH0gZnJvbSAnLi9hcGktY2xpZW50LmpzJztcbmltcG9ydCB7IHByaW50SW5mbyB9IGZyb20gJy4vb3V0cHV0LXV0aWxzLmpzJztcbmltcG9ydCB7IHJlc29sdmVQbHVnaW5zRm9yUHJvcHMgfSBmcm9tICcuL3BsdWdpbi1yZXNvbHZlci5qcyc7XG5pbXBvcnQgeyBiYWtlUGxhdGZvcm1SZWdpc3RyeSB9IGZyb20gJy4vcmVnaXN0cnkuanMnO1xuaW1wb3J0IHsgZXh0cmFjdFNpbmdsZVJlc3BvbnNlIH0gZnJvbSAnLi9yZXNwb25zZS11dGlscy5qcyc7XG5pbXBvcnQgdHlwZSB7IFBpcGVsaW5lIH0gZnJvbSAnLi4vdHlwZXMvcGlwZWxpbmUuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZldGNoZWRQaXBlbGluZSB7XG4gIC8qKiBUaGUgcmF3IHBpcGVsaW5lIHJlY29yZCAoaWQvb3JnL3Byb2plY3QvZmxhZ3MpIGFzIHJldHVybmVkIGJ5IHRoZSBwbGF0Zm9ybS4gKi9cbiAgcmVhZG9ubHkgcGlwZWxpbmU6IFBpcGVsaW5lO1xuICAvKiogcHJvcHMgKyBwaXBlbGluZUlkICgrIG9yZ0lkKSArIHJlc29sdmVkUGx1Z2lucywgd2l0aCB0aGUgcmVnaXN0cnkgcHVsbC1ob3N0IGJha2VkIGluLiAqL1xuICByZWFkb25seSBwcm9wc1dpdGhJZHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAvKiogVGhlIHJlc29sdmVkIHBsYXRmb3JtIGJhc2UgVVJMIHRoZSBjb25maWcgd2FzIGZldGNoZWQgYWdhaW5zdC4gKi9cbiAgcmVhZG9ubHkgYmFzZVVybDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEZldGNoIGEgcGlwZWxpbmUgYnkgaWQgYW5kIGJ1aWxkIHRoZSBzeW50aC9kZXBsb3kgcHJvcHM6XG4gKiAgLSBHRVQgdGhlIHBpcGVsaW5lIGFuZCB2YWxpZGF0ZSBpdCBoYXMgYHByb3BzYCxcbiAqICAtIGFzc2VtYmxlIGBwcm9wc1dpdGhJZHNgIChwcm9wcyArIHBpcGVsaW5lSWQgKyBvcmdJZCksXG4gKiAgLSBwcmUtcmVzb2x2ZSBwbHVnaW5zIHNvIHRoZSB0ZW1wbGF0ZSBzaGlwcyByZWFsIENvZGVCdWlsZCBpbWFnZSBVUklzXG4gKiAgICAob3RoZXJ3aXNlIENESyBmYWxscyBiYWNrIHRvIHN0YW5kYXJkOjcuMCBhdCBkZXBsb3kgdGltZSksXG4gKiAgLSBiYWtlIHRoZSByZWdpc3RyeSBwdWxsLWhvc3QgZnJvbSB0aGUgcGxhdGZvcm0gVVJMIChuby1vcCB3aGVuXG4gKiAgICBJTUFHRV9SRUdJU1RSWV9QVUxMX0hPU1QgaXMgc2V0KS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoUGlwZWxpbmVQcm9wcyhjbGllbnQ6IEFwaUNsaWVudCwgcGlwZWxpbmVJZDogc3RyaW5nKTogUHJvbWlzZTxGZXRjaGVkUGlwZWxpbmU+IHtcbiAgY29uc3QgY29uZmlnID0gY2xpZW50LmdldENvbmZpZygpO1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQ8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KGAke2NvbmZpZy5hcGkucGlwZWxpbmVVcmx9LyR7cGlwZWxpbmVJZH1gKTtcbiAgY29uc3QgcGlwZWxpbmUgPSBleHRyYWN0U2luZ2xlUmVzcG9uc2U8UGlwZWxpbmU+KHJlc3BvbnNlLCAncGlwZWxpbmUnLCAncHJvcHMnKTtcbiAgaWYgKCFwaXBlbGluZT8ucHJvcHMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byByZXRyaWV2ZSBwaXBlbGluZSBwcm9wcyBmb3IgSUQ6ICR7cGlwZWxpbmVJZH1gKTtcbiAgfVxuXG4gIGNvbnN0IHByb3BzV2l0aElkczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7XG4gICAgLi4uKHBpcGVsaW5lLnByb3BzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KSxcbiAgICAuLi4ocGlwZWxpbmUub3JnSWQgPyB7IG9yZ0lkOiBwaXBlbGluZS5vcmdJZCB9IDoge30pLFxuICAgIHBpcGVsaW5lSWQ6IHBpcGVsaW5lLmlkIHx8IHBpcGVsaW5lSWQsXG4gIH07XG5cbiAgY29uc3QgcmVzb2x2ZWRQbHVnaW5zID0gYXdhaXQgcmVzb2x2ZVBsdWdpbnNGb3JQcm9wcyhjbGllbnQsIHByb3BzV2l0aElkcyk7XG4gIGlmIChPYmplY3Qua2V5cyhyZXNvbHZlZFBsdWdpbnMpLmxlbmd0aCA+IDApIHtcbiAgICBwcm9wc1dpdGhJZHMucmVzb2x2ZWRQbHVnaW5zID0gcmVzb2x2ZWRQbHVnaW5zO1xuICAgIHByaW50SW5mbygnUHJlLXJlc29sdmVkIHBsdWdpbnMnLCB7IGNvdW50OiBPYmplY3Qua2V5cyhyZXNvbHZlZFBsdWdpbnMpLmxlbmd0aCB9KTtcbiAgfVxuXG4gIGJha2VQbGF0Zm9ybVJlZ2lzdHJ5KHByb3BzV2l0aElkcywgY29uZmlnLmFwaS5iYXNlVXJsKTtcbiAgcmV0dXJuIHsgcGlwZWxpbmUsIHByb3BzV2l0aElkcywgYmFzZVVybDogY29uZmlnLmFwaS5iYXNlVXJsIH07XG59XG5cbi8qKlxuICogQXBwbHkgcGFzcy0xIHNlbGYtcmVmZXJlbmNpbmcgdGVtcGxhdGUgcmVzb2x1dGlvbiB0byBgcHJvcHNXaXRoSWRzYCBhbmQgcHJpbnQgaXRcbiAqIHRvIHN0ZG91dCAodXNlZCBieSBgc3ludGggLS1zaG93LXJlc29sdmVkYCAvIGBkZXBsb3kgLS1zaG93LXJlc29sdmVkYCkuIEV4aXRzIHdpdGhcbiAqIGNvZGUgMSBpZiByZXNvbHV0aW9uIHJlcG9ydHMgZXJyb3JzLiBgcmVzb2x2ZVNlbGZSZWZlcmVuY2luZ2AgbXV0YXRlcyB0aGUgb2JqZWN0XG4gKiBpbiBwbGFjZSwgc28gdGhlIHByaW50ZWQgSlNPTiByZWZsZWN0cyB0aGUgZXhwYW5kZWQgdGVtcGxhdGVzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJpbnRSZXNvbHZlZE9yRXhpdChwcm9wc1dpdGhJZHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgcmVzb2x2ZVNlbGZSZWZlcmVuY2luZyB9ID0gYXdhaXQgaW1wb3J0KCdAcGlwZWxpbmUtYnVpbGRlci9waXBlbGluZS1jb3JlJyk7XG4gIGNvbnN0IHNjb3BlID0geyBtZXRhZGF0YTogcHJvcHNXaXRoSWRzLm1ldGFkYXRhID8/IHt9LCB2YXJzOiBwcm9wc1dpdGhJZHMudmFycyA/PyB7fSB9O1xuICBjb25zdCBpc1RwbCA9IChmOiBzdHJpbmcpID0+IGYgPT09ICdwcm9qZWN0TmFtZScgfHwgZi5zdGFydHNXaXRoKCdtZXRhZGF0YS4nKSB8fCBmLnN0YXJ0c1dpdGgoJ3ZhcnMuJyk7XG4gIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVTZWxmUmVmZXJlbmNpbmcocHJvcHNXaXRoSWRzLCBzY29wZSwgaXNUcGwsIChmOiBzdHJpbmcpID0+IChpc1RwbChmKSA/IGYgOiBudWxsKSk7XG4gIGlmIChyZXN1bHQuZXJyb3JzLmxlbmd0aCkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1Jlc29sdXRpb24gZXJyb3JzOicpO1xuICAgIGZvciAoY29uc3QgZSBvZiByZXN1bHQuZXJyb3JzKSBjb25zb2xlLmVycm9yKGAgIFske2UuZmllbGQgPz8gJz8nfV0gJHtlLm1lc3NhZ2V9YCk7XG4gICAgcHJvY2Vzcy5leGl0KDEpO1xuICB9XG4gIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHByb3BzV2l0aElkcywgbnVsbCwgMikpO1xufVxuIl19
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export interface ExecResult {
|
|
2
|
+
status: number | null;
|
|
3
|
+
stdout: string;
|
|
4
|
+
stderr: string;
|
|
5
|
+
/** Set when the process could not start or was killed by the timeout. */
|
|
6
|
+
error?: Error;
|
|
7
|
+
}
|
|
8
|
+
export interface ExecOptions {
|
|
9
|
+
/** Stream output to the terminal instead of capturing it. */
|
|
10
|
+
inherit?: boolean;
|
|
11
|
+
/** Extra environment for the child (merged over the CLI's own). */
|
|
12
|
+
env?: NodeJS.ProcessEnv;
|
|
13
|
+
timeoutMs?: number;
|
|
14
|
+
cwd?: string;
|
|
15
|
+
}
|
|
16
|
+
/** Run a program (never through a shell) and wait for it. */
|
|
17
|
+
export type Exec = (cmd: string, args: string[], opts?: ExecOptions) => ExecResult;
|
|
18
|
+
export declare const spawnExec: Exec;
|
|
19
|
+
/** True when `cmd` runs (`<cmd> --version` exits 0). */
|
|
20
|
+
export declare function hasTool(exec: Exec, cmd: string, versionArgs?: string[]): boolean;
|
|
21
|
+
/** A throwaway local tag for a plugin image. */
|
|
22
|
+
export declare function localImageTag(name: string, version: string): string;
|
|
23
|
+
/**
|
|
24
|
+
* Build the plugin image from its directory: `docker buildx build --load` when
|
|
25
|
+
* buildx is available, else `docker build`. Output streams to the terminal.
|
|
26
|
+
* Returns an error message, or null on success.
|
|
27
|
+
*/
|
|
28
|
+
export declare function buildPluginImage(exec: Exec, opts: {
|
|
29
|
+
dir: string;
|
|
30
|
+
dockerfile: string;
|
|
31
|
+
tag: string;
|
|
32
|
+
buildArgs?: Record<string, string>;
|
|
33
|
+
}): string | null;
|
|
34
|
+
/** The image's configured `USER` (empty string = root by default). */
|
|
35
|
+
export declare function imageUser(exec: Exec, image: string): {
|
|
36
|
+
user: string;
|
|
37
|
+
} | {
|
|
38
|
+
error: string;
|
|
39
|
+
};
|
|
40
|
+
/** True when a configured `USER` (name or uid, optional group) resolves to root. */
|
|
41
|
+
export declare function isRootUser(user: string): boolean;
|
|
42
|
+
/** Remove a throwaway image (best effort). */
|
|
43
|
+
export declare function removeImage(exec: Exec, image: string): void;
|
|
44
|
+
//# sourceMappingURL=plugin-docker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-docker.d.ts","sourceRoot":"","sources":["../../src/utils/plugin-docker.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,6DAA6D;IAC7D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mEAAmE;IACnE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,6DAA6D;AAC7D,MAAM,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,UAAU,CAAC;AAEnF,eAAO,MAAM,SAAS,EAAE,IAgBvB,CAAC;AAEF,wDAAwD;AACxD,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,GAAE,MAAM,EAAkB,GAAG,OAAO,CAG/F;AAED,gDAAgD;AAChD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAGnE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;IACjD,GAAG,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClF,GAAG,MAAM,GAAG,IAAI,CAUhB;AAED,sEAAsE;AACtE,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAIzF;AAED,oFAAoF;AACpF,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGhD;AAED,8CAA8C;AAC9C,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAE3D"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
// Copyright 2026 Pipeline Builder Contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
/**
|
|
4
|
+
* Local container tooling for `plugin test` and `plugin publish`: building a
|
|
5
|
+
* plugin's image with docker (buildx when present), inspecting it, and
|
|
6
|
+
* detecting optional scanners (syft, grype). Every call goes through an
|
|
7
|
+
* injectable {@link Exec} so the commands are unit-testable without docker.
|
|
8
|
+
*/
|
|
9
|
+
import { spawnSync } from 'child_process';
|
|
10
|
+
import crypto from 'crypto';
|
|
11
|
+
export const spawnExec = (cmd, args, opts = {}) => {
|
|
12
|
+
const options = {
|
|
13
|
+
encoding: 'utf-8',
|
|
14
|
+
stdio: opts.inherit ? 'inherit' : 'pipe',
|
|
15
|
+
env: opts.env ? { ...process.env, ...opts.env } : process.env,
|
|
16
|
+
...(opts.timeoutMs ? { timeout: opts.timeoutMs, killSignal: 'SIGKILL' } : {}),
|
|
17
|
+
...(opts.cwd ? { cwd: opts.cwd } : {}),
|
|
18
|
+
maxBuffer: 64 * 1024 * 1024,
|
|
19
|
+
};
|
|
20
|
+
const r = spawnSync(cmd, args, options);
|
|
21
|
+
return {
|
|
22
|
+
status: r.status,
|
|
23
|
+
stdout: typeof r.stdout === 'string' ? r.stdout : '',
|
|
24
|
+
stderr: typeof r.stderr === 'string' ? r.stderr : '',
|
|
25
|
+
...(r.error ? { error: r.error } : {}),
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
/** True when `cmd` runs (`<cmd> --version` exits 0). */
|
|
29
|
+
export function hasTool(exec, cmd, versionArgs = ['--version']) {
|
|
30
|
+
const r = exec(cmd, versionArgs);
|
|
31
|
+
return !r.error && r.status === 0;
|
|
32
|
+
}
|
|
33
|
+
/** A throwaway local tag for a plugin image. */
|
|
34
|
+
export function localImageTag(name, version) {
|
|
35
|
+
const safe = `${name}-${version}`.toLowerCase().replace(/[^a-z0-9._-]/g, '-');
|
|
36
|
+
return `pipeline-manager-test/${safe}:${crypto.randomBytes(4).toString('hex')}`;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Build the plugin image from its directory: `docker buildx build --load` when
|
|
40
|
+
* buildx is available, else `docker build`. Output streams to the terminal.
|
|
41
|
+
* Returns an error message, or null on success.
|
|
42
|
+
*/
|
|
43
|
+
export function buildPluginImage(exec, opts) {
|
|
44
|
+
const buildArgs = Object.entries(opts.buildArgs ?? {}).flatMap(([k, v]) => ['--build-arg', `${k}=${v}`]);
|
|
45
|
+
const useBuildx = hasTool(exec, 'docker', ['buildx', 'version']);
|
|
46
|
+
const args = [...(useBuildx ? ['buildx', 'build', '--load'] : ['build']), '-t', opts.tag, '-f', opts.dockerfile, ...buildArgs, opts.dir];
|
|
47
|
+
const r = exec('docker', args, { inherit: true });
|
|
48
|
+
if (r.error)
|
|
49
|
+
return `docker could not run: ${r.error.message}`;
|
|
50
|
+
if (r.status !== 0) {
|
|
51
|
+
return `image build failed (exit ${r.status}). Plugin bases (pipeline-<eco>-base) must exist locally: build them with deploy/bin/build-plugin-images.sh, or pass --image`;
|
|
52
|
+
}
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
/** The image's configured `USER` (empty string = root by default). */
|
|
56
|
+
export function imageUser(exec, image) {
|
|
57
|
+
const r = exec('docker', ['image', 'inspect', '--format', '{{.Config.User}}', image]);
|
|
58
|
+
if (r.error || r.status !== 0)
|
|
59
|
+
return { error: `cannot inspect image ${image}: ${(r.stderr || r.error?.message || '').trim()}` };
|
|
60
|
+
return { user: r.stdout.trim() };
|
|
61
|
+
}
|
|
62
|
+
/** True when a configured `USER` (name or uid, optional group) resolves to root. */
|
|
63
|
+
export function isRootUser(user) {
|
|
64
|
+
const u = user.split(':')[0].trim();
|
|
65
|
+
return u === '' || u === 'root' || u === '0';
|
|
66
|
+
}
|
|
67
|
+
/** Remove a throwaway image (best effort). */
|
|
68
|
+
export function removeImage(exec, image) {
|
|
69
|
+
exec('docker', ['rmi', '-f', image]);
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWRvY2tlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9wbHVnaW4tZG9ja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUF5QixNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFzQjVCLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBUyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRSxFQUFFO0lBQ3RELE1BQU0sT0FBTyxHQUFxQjtRQUNoQyxRQUFRLEVBQUUsT0FBTztRQUNqQixLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNO1FBQ3hDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUc7UUFDN0QsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDN0UsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3RDLFNBQVMsRUFBRSxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUk7S0FDNUIsQ0FBQztJQUNGLE1BQU0sQ0FBQyxHQUFHLFNBQVMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLE9B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Q0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3RGLElBQUksQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUM7UUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLHdCQUF3QixLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNqSSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztBQUNuQyxDQUFDO0FBRUQsb0ZBQW9GO0FBQ3BGLE1BQU0sVUFBVSxVQUFVLENBQUMsSUFBWTtJQUNyQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBRSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssTUFBTSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUM7QUFDL0MsQ0FBQztBQUVELDhDQUE4QztBQUM5QyxNQUFNLFVBQVUsV0FBVyxDQUFDLElBQVUsRUFBRSxLQUFhO0lBQ25ELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDdkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIExvY2FsIGNvbnRhaW5lciB0b29saW5nIGZvciBgcGx1Z2luIHRlc3RgIGFuZCBgcGx1Z2luIHB1Ymxpc2hgOiBidWlsZGluZyBhXG4gKiBwbHVnaW4ncyBpbWFnZSB3aXRoIGRvY2tlciAoYnVpbGR4IHdoZW4gcHJlc2VudCksIGluc3BlY3RpbmcgaXQsIGFuZFxuICogZGV0ZWN0aW5nIG9wdGlvbmFsIHNjYW5uZXJzIChzeWZ0LCBncnlwZSkuIEV2ZXJ5IGNhbGwgZ29lcyB0aHJvdWdoIGFuXG4gKiBpbmplY3RhYmxlIHtAbGluayBFeGVjfSBzbyB0aGUgY29tbWFuZHMgYXJlIHVuaXQtdGVzdGFibGUgd2l0aG91dCBkb2NrZXIuXG4gKi9cblxuaW1wb3J0IHsgc3Bhd25TeW5jLCB0eXBlIFNwYXduU3luY09wdGlvbnMgfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCBjcnlwdG8gZnJvbSAnY3J5cHRvJztcblxuZXhwb3J0IGludGVyZmFjZSBFeGVjUmVzdWx0IHtcbiAgc3RhdHVzOiBudW1iZXIgfCBudWxsO1xuICBzdGRvdXQ6IHN0cmluZztcbiAgc3RkZXJyOiBzdHJpbmc7XG4gIC8qKiBTZXQgd2hlbiB0aGUgcHJvY2VzcyBjb3VsZCBub3Qgc3RhcnQgb3Igd2FzIGtpbGxlZCBieSB0aGUgdGltZW91dC4gKi9cbiAgZXJyb3I/OiBFcnJvcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeGVjT3B0aW9ucyB7XG4gIC8qKiBTdHJlYW0gb3V0cHV0IHRvIHRoZSB0ZXJtaW5hbCBpbnN0ZWFkIG9mIGNhcHR1cmluZyBpdC4gKi9cbiAgaW5oZXJpdD86IGJvb2xlYW47XG4gIC8qKiBFeHRyYSBlbnZpcm9ubWVudCBmb3IgdGhlIGNoaWxkIChtZXJnZWQgb3ZlciB0aGUgQ0xJJ3Mgb3duKS4gKi9cbiAgZW52PzogTm9kZUpTLlByb2Nlc3NFbnY7XG4gIHRpbWVvdXRNcz86IG51bWJlcjtcbiAgY3dkPzogc3RyaW5nO1xufVxuXG4vKiogUnVuIGEgcHJvZ3JhbSAobmV2ZXIgdGhyb3VnaCBhIHNoZWxsKSBhbmQgd2FpdCBmb3IgaXQuICovXG5leHBvcnQgdHlwZSBFeGVjID0gKGNtZDogc3RyaW5nLCBhcmdzOiBzdHJpbmdbXSwgb3B0cz86IEV4ZWNPcHRpb25zKSA9PiBFeGVjUmVzdWx0O1xuXG5leHBvcnQgY29uc3Qgc3Bhd25FeGVjOiBFeGVjID0gKGNtZCwgYXJncywgb3B0cyA9IHt9KSA9PiB7XG4gIGNvbnN0IG9wdGlvbnM6IFNwYXduU3luY09wdGlvbnMgPSB7XG4gICAgZW5jb2Rpbmc6ICd1dGYtOCcsXG4gICAgc3RkaW86IG9wdHMuaW5oZXJpdCA/ICdpbmhlcml0JyA6ICdwaXBlJyxcbiAgICBlbnY6IG9wdHMuZW52ID8geyAuLi5wcm9jZXNzLmVudiwgLi4ub3B0cy5lbnYgfSA6IHByb2Nlc3MuZW52LFxuICAgIC4uLihvcHRzLnRpbWVvdXRNcyA/IHsgdGltZW91dDogb3B0cy50aW1lb3V0TXMsIGtpbGxTaWduYWw6ICdTSUdLSUxMJyB9IDoge30pLFxuICAgIC4uLihvcHRzLmN3ZCA/IHsgY3dkOiBvcHRzLmN3ZCB9IDoge30pLFxuICAgIG1heEJ1ZmZlcjogNjQgKiAxMDI0ICogMTAyNCxcbiAgfTtcbiAgY29uc3QgciA9IHNwYXduU3luYyhjbWQsIGFyZ3MsIG9wdGlvbnMpO1xuICByZXR1cm4ge1xuICAgIHN0YXR1czogci5zdGF0dXMsXG4gICAgc3Rkb3V0OiB0eXBlb2Ygci5zdGRvdXQgPT09ICdzdHJpbmcnID8gci5zdGRvdXQgOiAnJyxcbiAgICBzdGRlcnI6IHR5cGVvZiByLnN0ZGVyciA9PT0gJ3N0cmluZycgPyByLnN0ZGVyciA6ICcnLFxuICAgIC4uLihyLmVycm9yID8geyBlcnJvcjogci5lcnJvciB9IDoge30pLFxuICB9O1xufTtcblxuLyoqIFRydWUgd2hlbiBgY21kYCBydW5zIChgPGNtZD4gLS12ZXJzaW9uYCBleGl0cyAwKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNUb29sKGV4ZWM6IEV4ZWMsIGNtZDogc3RyaW5nLCB2ZXJzaW9uQXJnczogc3RyaW5nW10gPSBbJy0tdmVyc2lvbiddKTogYm9vbGVhbiB7XG4gIGNvbnN0IHIgPSBleGVjKGNtZCwgdmVyc2lvbkFyZ3MpO1xuICByZXR1cm4gIXIuZXJyb3IgJiYgci5zdGF0dXMgPT09IDA7XG59XG5cbi8qKiBBIHRocm93YXdheSBsb2NhbCB0YWcgZm9yIGEgcGx1Z2luIGltYWdlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvY2FsSW1hZ2VUYWcobmFtZTogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBzYWZlID0gYCR7bmFtZX0tJHt2ZXJzaW9ufWAudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bXmEtejAtOS5fLV0vZywgJy0nKTtcbiAgcmV0dXJuIGBwaXBlbGluZS1tYW5hZ2VyLXRlc3QvJHtzYWZlfToke2NyeXB0by5yYW5kb21CeXRlcyg0KS50b1N0cmluZygnaGV4Jyl9YDtcbn1cblxuLyoqXG4gKiBCdWlsZCB0aGUgcGx1Z2luIGltYWdlIGZyb20gaXRzIGRpcmVjdG9yeTogYGRvY2tlciBidWlsZHggYnVpbGQgLS1sb2FkYCB3aGVuXG4gKiBidWlsZHggaXMgYXZhaWxhYmxlLCBlbHNlIGBkb2NrZXIgYnVpbGRgLiBPdXRwdXQgc3RyZWFtcyB0byB0aGUgdGVybWluYWwuXG4gKiBSZXR1cm5zIGFuIGVycm9yIG1lc3NhZ2UsIG9yIG51bGwgb24gc3VjY2Vzcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUGx1Z2luSW1hZ2UoZXhlYzogRXhlYywgb3B0czoge1xuICBkaXI6IHN0cmluZzsgZG9ja2VyZmlsZTogc3RyaW5nOyB0YWc6IHN0cmluZzsgYnVpbGRBcmdzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn0pOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgYnVpbGRBcmdzID0gT2JqZWN0LmVudHJpZXMob3B0cy5idWlsZEFyZ3MgPz8ge30pLmZsYXRNYXAoKFtrLCB2XSkgPT4gWyctLWJ1aWxkLWFyZycsIGAke2t9PSR7dn1gXSk7XG4gIGNvbnN0IHVzZUJ1aWxkeCA9IGhhc1Rvb2woZXhlYywgJ2RvY2tlcicsIFsnYnVpbGR4JywgJ3ZlcnNpb24nXSk7XG4gIGNvbnN0IGFyZ3MgPSBbLi4uKHVzZUJ1aWxkeCA/IFsnYnVpbGR4JywgJ2J1aWxkJywgJy0tbG9hZCddIDogWydidWlsZCddKSwgJy10Jywgb3B0cy50YWcsICctZicsIG9wdHMuZG9ja2VyZmlsZSwgLi4uYnVpbGRBcmdzLCBvcHRzLmRpcl07XG4gIGNvbnN0IHIgPSBleGVjKCdkb2NrZXInLCBhcmdzLCB7IGluaGVyaXQ6IHRydWUgfSk7XG4gIGlmIChyLmVycm9yKSByZXR1cm4gYGRvY2tlciBjb3VsZCBub3QgcnVuOiAke3IuZXJyb3IubWVzc2FnZX1gO1xuICBpZiAoci5zdGF0dXMgIT09IDApIHtcbiAgICByZXR1cm4gYGltYWdlIGJ1aWxkIGZhaWxlZCAoZXhpdCAke3Iuc3RhdHVzfSkuIFBsdWdpbiBiYXNlcyAocGlwZWxpbmUtPGVjbz4tYmFzZSkgbXVzdCBleGlzdCBsb2NhbGx5OiBidWlsZCB0aGVtIHdpdGggZGVwbG95L2Jpbi9idWlsZC1wbHVnaW4taW1hZ2VzLnNoLCBvciBwYXNzIC0taW1hZ2VgO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKiogVGhlIGltYWdlJ3MgY29uZmlndXJlZCBgVVNFUmAgKGVtcHR5IHN0cmluZyA9IHJvb3QgYnkgZGVmYXVsdCkuICovXG5leHBvcnQgZnVuY3Rpb24gaW1hZ2VVc2VyKGV4ZWM6IEV4ZWMsIGltYWdlOiBzdHJpbmcpOiB7IHVzZXI6IHN0cmluZyB9IHwgeyBlcnJvcjogc3RyaW5nIH0ge1xuICBjb25zdCByID0gZXhlYygnZG9ja2VyJywgWydpbWFnZScsICdpbnNwZWN0JywgJy0tZm9ybWF0JywgJ3t7LkNvbmZpZy5Vc2VyfX0nLCBpbWFnZV0pO1xuICBpZiAoci5lcnJvciB8fCByLnN0YXR1cyAhPT0gMCkgcmV0dXJuIHsgZXJyb3I6IGBjYW5ub3QgaW5zcGVjdCBpbWFnZSAke2ltYWdlfTogJHsoci5zdGRlcnIgfHwgci5lcnJvcj8ubWVzc2FnZSB8fCAnJykudHJpbSgpfWAgfTtcbiAgcmV0dXJuIHsgdXNlcjogci5zdGRvdXQudHJpbSgpIH07XG59XG5cbi8qKiBUcnVlIHdoZW4gYSBjb25maWd1cmVkIGBVU0VSYCAobmFtZSBvciB1aWQsIG9wdGlvbmFsIGdyb3VwKSByZXNvbHZlcyB0byByb290LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUm9vdFVzZXIodXNlcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IHUgPSB1c2VyLnNwbGl0KCc6JylbMF0hLnRyaW0oKTtcbiAgcmV0dXJuIHUgPT09ICcnIHx8IHUgPT09ICdyb290JyB8fCB1ID09PSAnMCc7XG59XG5cbi8qKiBSZW1vdmUgYSB0aHJvd2F3YXkgaW1hZ2UgKGJlc3QgZWZmb3J0KS4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVJbWFnZShleGVjOiBFeGVjLCBpbWFnZTogc3RyaW5nKTogdm9pZCB7XG4gIGV4ZWMoJ2RvY2tlcicsIFsncm1pJywgJy1mJywgaW1hZ2VdKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { type DetectedField, type PluginBuildType, type PluginSpecInput } from '@pipeline-builder/api-core';
|
|
2
|
+
/** A plugin directory as the upload would see it. */
|
|
3
|
+
export interface PluginPackage {
|
|
4
|
+
dir: string;
|
|
5
|
+
buildType: PluginBuildType;
|
|
6
|
+
specFile: string;
|
|
7
|
+
/** The schema-checked spec, or null when the spec failed the schema. */
|
|
8
|
+
spec: PluginSpecInput | null;
|
|
9
|
+
/** The spec document as parsed (before the schema), for fields the schema rejected. */
|
|
10
|
+
rawSpec: Record<string, unknown>;
|
|
11
|
+
dockerfileName: string;
|
|
12
|
+
dockerfileContent: string | null;
|
|
13
|
+
readmeMd: string | null;
|
|
14
|
+
/** Problems found while reading (schema, required fields, build-type prerequisites). */
|
|
15
|
+
problems: string[];
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Read and validate a plugin directory. Throws only when the directory or its
|
|
19
|
+
* spec is missing; every other problem is collected in `problems`.
|
|
20
|
+
*/
|
|
21
|
+
export declare function readPluginPackage(dirArg: string): PluginPackage;
|
|
22
|
+
/**
|
|
23
|
+
* `{{ }}` template + plugin-contract problems: api-core's
|
|
24
|
+
* {@link checkPluginTemplates}, the same check the server's upload applies,
|
|
25
|
+
* with pipeline-core's template engine.
|
|
26
|
+
*/
|
|
27
|
+
export declare function templateProblems(spec: Record<string, unknown>): Promise<string[]>;
|
|
28
|
+
/** Every problem the upload would refuse: reading, schema, build type, templates. */
|
|
29
|
+
export declare function packageProblems(pkg: PluginPackage): Promise<string[]>;
|
|
30
|
+
/**
|
|
31
|
+
* The catalog fields as the server will DETECT them (spec → README → the
|
|
32
|
+
* plugin's own Dockerfile labels → derived), with each value's source and any
|
|
33
|
+
* validation error — the same api-core detection the upload runs.
|
|
34
|
+
*/
|
|
35
|
+
export declare function detectPackageCatalog(pkg: PluginPackage): DetectedField[];
|
|
36
|
+
/** Human-readable source badge (the upload dialog's wording). */
|
|
37
|
+
export declare const SOURCE_LABELS: Record<string, string>;
|
|
38
|
+
/** A one-line rendering of a catalog value. */
|
|
39
|
+
export declare function formatCatalogValue(value: unknown, max?: number): string;
|
|
40
|
+
//# sourceMappingURL=plugin-package.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-package.d.ts","sourceRoot":"","sources":["../../src/utils/plugin-package.ts"],"names":[],"mappings":"AAYA,OAAO,EAEuD,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,KAAK,eAAe,EAE3H,MAAM,4BAA4B,CAAC;AAOpC,qDAAqD;AACrD,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,eAAe,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,IAAI,EAAE,eAAe,GAAG,IAAI,CAAC;IAC7B,uFAAuF;IACvF,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,wFAAwF;IACxF,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAkBD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAoE/D;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAGvF;AAQD,qFAAqF;AACrF,wBAAsB,eAAe,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAE3E;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,aAAa,GAAG,aAAa,EAAE,CAKxE;AAED,iEAAiE;AACjE,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAEhD,CAAC;AAEF,+CAA+C;AAC/C,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,SAAK,GAAG,MAAM,CASnE"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
// Copyright 2026 Pipeline Builder Contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
/**
|
|
4
|
+
* A LOCAL plugin directory (the zip root the platform receives), read and
|
|
5
|
+
* validated with the server's own rules: the spec and config schemas, the
|
|
6
|
+
* required-field contract and the catalog detection all come from api-core, so
|
|
7
|
+
* `plugin validate` / `plugin publish` report exactly what the upload would.
|
|
8
|
+
*/
|
|
9
|
+
import fs from 'fs';
|
|
10
|
+
import path from 'path';
|
|
11
|
+
import { PLUGIN_NAME_PATTERN, PLUGIN_VERSION_PATTERN, checkPluginConfig, checkPluginSpec, checkPluginTemplates, detectCatalogMetadata, formatPluginTemplateIssue, pluginSpecRequiredFieldsProblem, } from '@pipeline-builder/api-core';
|
|
12
|
+
import YAML from 'yaml';
|
|
13
|
+
import { ValidationError } from './error-handler.js';
|
|
14
|
+
/** Max YAML text read for config.yaml / plugin-spec.yaml (the server's default bound). */
|
|
15
|
+
const MAX_YAML_BYTES = 1024 * 1024;
|
|
16
|
+
function parseYamlFile(file, label, problems) {
|
|
17
|
+
const text = fs.readFileSync(file, 'utf-8');
|
|
18
|
+
if (text.length > MAX_YAML_BYTES) {
|
|
19
|
+
problems.push(`${label} exceeds the maximum allowed size (${MAX_YAML_BYTES} bytes)`);
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
try {
|
|
23
|
+
return YAML.parse(text, { maxAliasCount: 100 });
|
|
24
|
+
}
|
|
25
|
+
catch (err) {
|
|
26
|
+
problems.push(`${label}: invalid YAML (${err.message.split('\n')[0]})`);
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const readIfExists = (file) => (fs.existsSync(file) ? fs.readFileSync(file, 'utf-8') : null);
|
|
31
|
+
/**
|
|
32
|
+
* Read and validate a plugin directory. Throws only when the directory or its
|
|
33
|
+
* spec is missing; every other problem is collected in `problems`.
|
|
34
|
+
*/
|
|
35
|
+
export function readPluginPackage(dirArg) {
|
|
36
|
+
const dir = path.resolve(dirArg);
|
|
37
|
+
if (!fs.existsSync(dir) || !fs.statSync(dir).isDirectory())
|
|
38
|
+
throw new ValidationError(`Not a directory: ${dir}`, 'dir', dir);
|
|
39
|
+
const problems = [];
|
|
40
|
+
let buildType = 'build_image';
|
|
41
|
+
let specFile = 'plugin-spec.yaml';
|
|
42
|
+
let dockerfileName = 'Dockerfile';
|
|
43
|
+
const configPath = ['config.yaml', 'config.yml'].map(f => path.join(dir, f)).find(f => fs.existsSync(f));
|
|
44
|
+
if (configPath) {
|
|
45
|
+
const raw = parseYamlFile(configPath, path.basename(configPath), problems);
|
|
46
|
+
if (raw !== undefined && raw !== null) {
|
|
47
|
+
const config = checkPluginConfig(raw);
|
|
48
|
+
if (!config.ok) {
|
|
49
|
+
problems.push(config.message);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
buildType = config.value.buildType ?? 'build_image';
|
|
53
|
+
if (config.value.pluginSpec)
|
|
54
|
+
specFile = config.value.pluginSpec;
|
|
55
|
+
if (config.value.dockerfile)
|
|
56
|
+
dockerfileName = config.value.dockerfile;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
for (const [label, rel] of [['pluginSpec', specFile], ['dockerfile', dockerfileName]]) {
|
|
61
|
+
const resolved = path.resolve(dir, rel);
|
|
62
|
+
if (path.isAbsolute(rel) || !resolved.startsWith(dir + path.sep))
|
|
63
|
+
problems.push(`config.yaml: ${label} must be a relative path inside the plugin directory`);
|
|
64
|
+
}
|
|
65
|
+
const specPath = path.join(dir, specFile);
|
|
66
|
+
if (!fs.existsSync(specPath))
|
|
67
|
+
throw new ValidationError(`Missing plugin spec: ${specPath}`, 'dir', dir);
|
|
68
|
+
const rawDoc = parseYamlFile(specPath, specFile, problems);
|
|
69
|
+
const rawSpec = rawDoc && typeof rawDoc === 'object' && !Array.isArray(rawDoc) ? rawDoc : {};
|
|
70
|
+
let spec = null;
|
|
71
|
+
if (rawDoc !== undefined) {
|
|
72
|
+
const checked = checkPluginSpec(rawDoc);
|
|
73
|
+
if (checked.ok)
|
|
74
|
+
spec = checked.value;
|
|
75
|
+
else
|
|
76
|
+
problems.push(checked.message);
|
|
77
|
+
}
|
|
78
|
+
const view = spec ?? rawSpec;
|
|
79
|
+
const required = pluginSpecRequiredFieldsProblem(view);
|
|
80
|
+
if (required)
|
|
81
|
+
problems.push(required);
|
|
82
|
+
if (typeof view.name === 'string' && view.name && !PLUGIN_NAME_PATTERN.test(view.name)) {
|
|
83
|
+
problems.push(`${specFile}: name must match ${PLUGIN_NAME_PATTERN}`);
|
|
84
|
+
}
|
|
85
|
+
if (typeof view.version === 'string' && view.version && !PLUGIN_VERSION_PATTERN.test(view.version)) {
|
|
86
|
+
problems.push(`${specFile}: version must be semver (x.y.z)`);
|
|
87
|
+
}
|
|
88
|
+
const isApproval = view.pluginType === 'ManualApprovalStep';
|
|
89
|
+
const dockerfileContent = readIfExists(path.join(dir, dockerfileName));
|
|
90
|
+
if (buildType === 'build_image' && !isApproval && dockerfileContent === null) {
|
|
91
|
+
problems.push(`Dockerfile not found for buildType build_image: ${path.join(dir, dockerfileName)}`);
|
|
92
|
+
}
|
|
93
|
+
if (buildType === 'prebuilt' && !fs.existsSync(path.join(dir, 'image.tar'))) {
|
|
94
|
+
problems.push('image.tar not found for buildType prebuilt');
|
|
95
|
+
}
|
|
96
|
+
return {
|
|
97
|
+
dir,
|
|
98
|
+
buildType,
|
|
99
|
+
specFile,
|
|
100
|
+
spec,
|
|
101
|
+
rawSpec,
|
|
102
|
+
dockerfileName,
|
|
103
|
+
dockerfileContent: buildType === 'build_image' ? dockerfileContent : null,
|
|
104
|
+
readmeMd: readIfExists(path.join(dir, 'README.md')),
|
|
105
|
+
problems,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* `{{ }}` template + plugin-contract problems: api-core's
|
|
110
|
+
* {@link checkPluginTemplates}, the same check the server's upload applies,
|
|
111
|
+
* with pipeline-core's template engine.
|
|
112
|
+
*/
|
|
113
|
+
export async function templateProblems(spec) {
|
|
114
|
+
const engine = await import('@pipeline-builder/pipeline-core');
|
|
115
|
+
return checkPluginTemplates(spec, engine).map((issue) => `${TEMPLATE_ISSUE_PREFIX[issue.kind]}${formatPluginTemplateIssue(issue)}`);
|
|
116
|
+
}
|
|
117
|
+
const TEMPLATE_ISSUE_PREFIX = {
|
|
118
|
+
'template': 'template ',
|
|
119
|
+
'undeclared': 'contract: ',
|
|
120
|
+
'type-mismatch': 'contract: ',
|
|
121
|
+
};
|
|
122
|
+
/** Every problem the upload would refuse: reading, schema, build type, templates. */
|
|
123
|
+
export async function packageProblems(pkg) {
|
|
124
|
+
return [...pkg.problems, ...await templateProblems(pkg.rawSpec)];
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* The catalog fields as the server will DETECT them (spec → README → the
|
|
128
|
+
* plugin's own Dockerfile labels → derived), with each value's source and any
|
|
129
|
+
* validation error — the same api-core detection the upload runs.
|
|
130
|
+
*/
|
|
131
|
+
export function detectPackageCatalog(pkg) {
|
|
132
|
+
// Detection reads only the descriptive keys. A spec that failed the schema
|
|
133
|
+
// still has them in the raw document, and each is re-validated per field.
|
|
134
|
+
const spec = (pkg.spec ?? pkg.rawSpec);
|
|
135
|
+
return detectCatalogMetadata({ spec, readmeMd: pkg.readmeMd, dockerfileContent: pkg.dockerfileContent });
|
|
136
|
+
}
|
|
137
|
+
/** Human-readable source badge (the upload dialog's wording). */
|
|
138
|
+
export const SOURCE_LABELS = {
|
|
139
|
+
spec: 'Spec', readme: 'README', dockerfile: 'Dockerfile label', derived: 'Generated', user: 'Edited',
|
|
140
|
+
};
|
|
141
|
+
/** A one-line rendering of a catalog value. */
|
|
142
|
+
export function formatCatalogValue(value, max = 80) {
|
|
143
|
+
if (value === null || value === undefined)
|
|
144
|
+
return '(empty)';
|
|
145
|
+
let text;
|
|
146
|
+
if (Array.isArray(value)) {
|
|
147
|
+
text = value.join(', ');
|
|
148
|
+
}
|
|
149
|
+
else if (typeof value === 'object') {
|
|
150
|
+
const icon = value;
|
|
151
|
+
text = icon.key ? `${icon.key}${icon.badge ? ` (badge: ${icon.badge})` : ''}` : JSON.stringify(value);
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
text = String(value);
|
|
155
|
+
}
|
|
156
|
+
const flat = text.replace(/\s+/g, ' ').trim();
|
|
157
|
+
return flat.length > max ? `${flat.slice(0, max - 1)}…` : flat;
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLXBhY2thZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvcGx1Z2luLXBhY2thZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7R0FLRztBQUVILE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUNwQixPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUNMLG1CQUFtQixFQUFFLHNCQUFzQixFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxxQkFBcUIsRUFDNUgseUJBQXlCLEVBQUUsK0JBQStCLEdBRTNELE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVyRCwwRkFBMEY7QUFDMUYsTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQWtCbkMsU0FBUyxhQUFhLENBQUMsSUFBWSxFQUFFLEtBQWEsRUFBRSxRQUFrQjtJQUNwRSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM1QyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsY0FBYyxFQUFFLENBQUM7UUFDakMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssc0NBQXNDLGNBQWMsU0FBUyxDQUFDLENBQUM7UUFDckYsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUNELElBQUksQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFL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QUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDakUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIEEgTE9DQUwgcGx1Z2luIGRpcmVjdG9yeSAodGhlIHppcCByb290IHRoZSBwbGF0Zm9ybSByZWNlaXZlcyksIHJlYWQgYW5kXG4gKiB2YWxpZGF0ZWQgd2l0aCB0aGUgc2VydmVyJ3Mgb3duIHJ1bGVzOiB0aGUgc3BlYyBhbmQgY29uZmlnIHNjaGVtYXMsIHRoZVxuICogcmVxdWlyZWQtZmllbGQgY29udHJhY3QgYW5kIHRoZSBjYXRhbG9nIGRldGVjdGlvbiBhbGwgY29tZSBmcm9tIGFwaS1jb3JlLCBzb1xuICogYHBsdWdpbiB2YWxpZGF0ZWAgLyBgcGx1Z2luIHB1Ymxpc2hgIHJlcG9ydCBleGFjdGx5IHdoYXQgdGhlIHVwbG9hZCB3b3VsZC5cbiAqL1xuXG5pbXBvcnQgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQge1xuICBQTFVHSU5fTkFNRV9QQVRURVJOLCBQTFVHSU5fVkVSU0lPTl9QQVRURVJOLCBjaGVja1BsdWdpbkNvbmZpZywgY2hlY2tQbHVnaW5TcGVjLCBjaGVja1BsdWdpblRlbXBsYXRlcywgZGV0ZWN0Q2F0YWxvZ01ldGFkYXRhLFxuICBmb3JtYXRQbHVnaW5UZW1wbGF0ZUlzc3VlLCBwbHVnaW5TcGVjUmVxdWlyZWRGaWVsZHNQcm9ibGVtLCB0eXBlIERldGVjdGVkRmllbGQsIHR5cGUgUGx1Z2luQnVpbGRUeXBlLCB0eXBlIFBsdWdpblNwZWNJbnB1dCxcbiAgdHlwZSBQbHVnaW5UZW1wbGF0ZUlzc3VlLFxufSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgWUFNTCBmcm9tICd5YW1sJztcbmltcG9ydCB7IFZhbGlkYXRpb25FcnJvciB9IGZyb20gJy4vZXJyb3ItaGFuZGxlci5qcyc7XG5cbi8qKiBNYXggWUFNTCB0ZXh0IHJlYWQgZm9yIGNvbmZpZy55YW1sIC8gcGx1Z2luLXNwZWMueWFtbCAodGhlIHNlcnZlcidzIGRlZmF1bHQgYm91bmQpLiAqL1xuY29uc3QgTUFYX1lBTUxfQllURVMgPSAxMDI0ICogMTAyNDtcblxuLyoqIEEgcGx1Z2luIGRpcmVjdG9yeSBhcyB0aGUgdXBsb2FkIHdvdWxkIHNlZSBpdC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luUGFja2FnZSB7XG4gIGRpcjogc3RyaW5nO1xuICBidWlsZFR5cGU6IFBsdWdpbkJ1aWxkVHlwZTtcbiAgc3BlY0ZpbGU6IHN0cmluZztcbiAgLyoqIFRoZSBzY2hlbWEtY2hlY2tlZCBzcGVjLCBvciBudWxsIHdoZW4gdGhlIHNwZWMgZmFpbGVkIHRoZSBzY2hlbWEuICovXG4gIHNwZWM6IFBsdWdpblNwZWNJbnB1dCB8IG51bGw7XG4gIC8qKiBUaGUgc3BlYyBkb2N1bWVudCBhcyBwYXJzZWQgKGJlZm9yZSB0aGUgc2NoZW1hKSwgZm9yIGZpZWxkcyB0aGUgc2NoZW1hIHJlamVjdGVkLiAqL1xuICByYXdTcGVjOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgZG9ja2VyZmlsZU5hbWU6IHN0cmluZztcbiAgZG9ja2VyZmlsZUNvbnRlbnQ6IHN0cmluZyB8IG51bGw7XG4gIHJlYWRtZU1kOiBzdHJpbmcgfCBudWxsO1xuICAvKiogUHJvYmxlbXMgZm91bmQgd2hpbGUgcmVhZGluZyAoc2NoZW1hLCByZXF1aXJlZCBmaWVsZHMsIGJ1aWxkLXR5cGUgcHJlcmVxdWlzaXRlcykuICovXG4gIHByb2JsZW1zOiBzdHJpbmdbXTtcbn1cblxuZnVuY3Rpb24gcGFyc2VZYW1sRmlsZShmaWxlOiBzdHJpbmcsIGxhYmVsOiBzdHJpbmcsIHByb2JsZW1zOiBzdHJpbmdbXSk6IHVua25vd24ge1xuICBjb25zdCB0ZXh0ID0gZnMucmVhZEZpbGVTeW5jKGZpbGUsICd1dGYtOCcpO1xuICBpZiAodGV4dC5sZW5ndGggPiBNQVhfWUFNTF9CWVRFUykge1xuICAgIHByb2JsZW1zLnB1c2goYCR7bGFiZWx9IGV4Y2VlZHMgdGhlIG1heGltdW0gYWxsb3dlZCBzaXplICgke01BWF9ZQU1MX0JZVEVTfSBieXRlcylgKTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIHRyeSB7XG4gICAgcmV0dXJuIFlBTUwucGFyc2UodGV4dCwgeyBtYXhBbGlhc0NvdW50OiAxMDAgfSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHByb2JsZW1zLnB1c2goYCR7bGFiZWx9OiBpbnZhbGlkIFlBTUwgKCR7KGVyciBhcyBFcnJvcikubWVzc2FnZS5zcGxpdCgnXFxuJylbMF19KWApO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuY29uc3QgcmVhZElmRXhpc3RzID0gKGZpbGU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwgPT4gKGZzLmV4aXN0c1N5bmMoZmlsZSkgPyBmcy5yZWFkRmlsZVN5bmMoZmlsZSwgJ3V0Zi04JykgOiBudWxsKTtcblxuLyoqXG4gKiBSZWFkIGFuZCB2YWxpZGF0ZSBhIHBsdWdpbiBkaXJlY3RvcnkuIFRocm93cyBvbmx5IHdoZW4gdGhlIGRpcmVjdG9yeSBvciBpdHNcbiAqIHNwZWMgaXMgbWlzc2luZzsgZXZlcnkgb3RoZXIgcHJvYmxlbSBpcyBjb2xsZWN0ZWQgaW4gYHByb2JsZW1zYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlYWRQbHVnaW5QYWNrYWdlKGRpckFyZzogc3RyaW5nKTogUGx1Z2luUGFja2FnZSB7XG4gIGNvbnN0IGRpciA9IHBhdGgucmVzb2x2ZShkaXJBcmcpO1xuICBpZiAoIWZzLmV4aXN0c1N5bmMoZGlyKSB8fCAhZnMuc3RhdFN5bmMoZGlyKS5pc0RpcmVjdG9yeSgpKSB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGBOb3QgYSBkaXJlY3Rvcnk6ICR7ZGlyfWAsICdkaXInLCBkaXIpO1xuICBjb25zdCBwcm9ibGVtczogc3RyaW5nW10gPSBbXTtcblxuICBsZXQgYnVpbGRUeXBlOiBQbHVnaW5CdWlsZFR5cGUgPSAnYnVpbGRfaW1hZ2UnO1xuICBsZXQgc3BlY0ZpbGUgPSAncGx1Z2luLXNwZWMueWFtbCc7XG4gIGxldCBkb2NrZXJmaWxlTmFtZSA9ICdEb2NrZXJmaWxlJztcbiAgY29uc3QgY29uZmlnUGF0aCA9IFsnY29uZmlnLnlhbWwnLCAnY29uZmlnLnltbCddLm1hcChmID0+IHBhdGguam9pbihkaXIsIGYpKS5maW5kKGYgPT4gZnMuZXhpc3RzU3luYyhmKSk7XG4gIGlmIChjb25maWdQYXRoKSB7XG4gICAgY29uc3QgcmF3ID0gcGFyc2VZYW1sRmlsZShjb25maWdQYXRoLCBwYXRoLmJhc2VuYW1lKGNvbmZpZ1BhdGgpLCBwcm9ibGVtcyk7XG4gICAgaWYgKHJhdyAhPT0gdW5kZWZpbmVkICYmIHJhdyAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgY29uZmlnID0gY2hlY2tQbHVnaW5Db25maWcocmF3KTtcbiAgICAgIGlmICghY29uZmlnLm9rKSB7XG4gICAgICAgIHByb2JsZW1zLnB1c2goY29uZmlnLm1lc3NhZ2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnVpbGRUeXBlID0gY29uZmlnLnZhbHVlLmJ1aWxkVHlwZSA/PyAnYnVpbGRfaW1hZ2UnO1xuICAgICAgICBpZiAoY29uZmlnLnZhbHVlLnBsdWdpblNwZWMpIHNwZWNGaWxlID0gY29uZmlnLnZhbHVlLnBsdWdpblNwZWM7XG4gICAgICAgIGlmIChjb25maWcudmFsdWUuZG9ja2VyZmlsZSkgZG9ja2VyZmlsZU5hbWUgPSBjb25maWcudmFsdWUuZG9ja2VyZmlsZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZm9yIChjb25zdCBbbGFiZWwsIHJlbF0gb2YgW1sncGx1Z2luU3BlYycsIHNwZWNGaWxlXSwgWydkb2NrZXJmaWxlJywgZG9ja2VyZmlsZU5hbWVdXSBhcyBjb25zdCkge1xuICAgIGNvbnN0IHJlc29sdmVkID0gcGF0aC5yZXNvbHZlKGRpciwgcmVsKTtcbiAgICBpZiAocGF0aC5pc0Fic29sdXRlKHJlbCkgfHwgIXJlc29sdmVkLnN0YXJ0c1dpdGgoZGlyICsgcGF0aC5zZXApKSBwcm9ibGVtcy5wdXNoKGBjb25maWcueWFtbDogJHtsYWJlbH0gbXVzdCBiZSBhIHJlbGF0aXZlIHBhdGggaW5zaWRlIHRoZSBwbHVnaW4gZGlyZWN0b3J5YCk7XG4gIH1cblxuICBjb25zdCBzcGVjUGF0aCA9IHBhdGguam9pbihkaXIsIHNwZWNGaWxlKTtcbiAgaWYgKCFmcy5leGlzdHNTeW5jKHNwZWNQYXRoKSkgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihgTWlzc2luZyBwbHVnaW4gc3BlYzogJHtzcGVjUGF0aH1gLCAnZGlyJywgZGlyKTtcbiAgY29uc3QgcmF3RG9jID0gcGFyc2VZYW1sRmlsZShzcGVjUGF0aCwgc3BlY0ZpbGUsIHByb2JsZW1zKTtcbiAgY29uc3QgcmF3U3BlYyA9IHJhd0RvYyAmJiB0eXBlb2YgcmF3RG9jID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShyYXdEb2MpID8gcmF3RG9jIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IDoge307XG4gIGxldCBzcGVjOiBQbHVnaW5TcGVjSW5wdXQgfCBudWxsID0gbnVsbDtcbiAgaWYgKHJhd0RvYyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgY2hlY2tlZCA9IGNoZWNrUGx1Z2luU3BlYyhyYXdEb2MpO1xuICAgIGlmIChjaGVja2VkLm9rKSBzcGVjID0gY2hlY2tlZC52YWx1ZTtcbiAgICBlbHNlIHByb2JsZW1zLnB1c2goY2hlY2tlZC5tZXNzYWdlKTtcbiAgfVxuXG4gIGNvbnN0IHZpZXcgPSBzcGVjID8/IHJhd1NwZWMgYXMgUGx1Z2luU3BlY0lucHV0O1xuICBjb25zdCByZXF1aXJlZCA9IHBsdWdpblNwZWNSZXF1aXJlZEZpZWxkc1Byb2JsZW0odmlldyk7XG4gIGlmIChyZXF1aXJlZCkgcHJvYmxlbXMucHVzaChyZXF1aXJlZCk7XG4gIGlmICh0eXBlb2Ygdmlldy5uYW1lID09PSAnc3RyaW5nJyAmJiB2aWV3Lm5hbWUgJiYgIVBMVUdJTl9OQU1FX1BBVFRFUk4udGVzdCh2aWV3Lm5hbWUpKSB7XG4gICAgcHJvYmxlbXMucHVzaChgJHtzcGVjRmlsZX06IG5hbWUgbXVzdCBtYXRjaCAke1BMVUdJTl9OQU1FX1BBVFRFUk59YCk7XG4gIH1cbiAgaWYgKHR5cGVvZiB2aWV3LnZlcnNpb24gPT09ICdzdHJpbmcnICYmIHZpZXcudmVyc2lvbiAmJiAhUExVR0lOX1ZFUlNJT05fUEFUVEVSTi50ZXN0KHZpZXcudmVyc2lvbikpIHtcbiAgICBwcm9ibGVtcy5wdXNoKGAke3NwZWNGaWxlfTogdmVyc2lvbiBtdXN0IGJlIHNlbXZlciAoeC55LnopYCk7XG4gIH1cblxuICBjb25zdCBpc0FwcHJvdmFsID0gdmlldy5wbHVnaW5UeXBlID09PSAnTWFudWFsQXBwcm92YWxTdGVwJztcbiAgY29uc3QgZG9ja2VyZmlsZUNvbnRlbnQgPSByZWFkSWZFeGlzdHMocGF0aC5qb2luKGRpciwgZG9ja2VyZmlsZU5hbWUpKTtcbiAgaWYgKGJ1aWxkVHlwZSA9PT0gJ2J1aWxkX2ltYWdlJyAmJiAhaXNBcHByb3ZhbCAmJiBkb2NrZXJmaWxlQ29udGVudCA9PT0gbnVsbCkge1xuICAgIHByb2JsZW1zLnB1c2goYERvY2tlcmZpbGUgbm90IGZvdW5kIGZvciBidWlsZFR5cGUgYnVpbGRfaW1hZ2U6ICR7cGF0aC5qb2luKGRpciwgZG9ja2VyZmlsZU5hbWUpfWApO1xuICB9XG4gIGlmIChidWlsZFR5cGUgPT09ICdwcmVidWlsdCcgJiYgIWZzLmV4aXN0c1N5bmMocGF0aC5qb2luKGRpciwgJ2ltYWdlLnRhcicpKSkge1xuICAgIHByb2JsZW1zLnB1c2goJ2ltYWdlLnRhciBub3QgZm91bmQgZm9yIGJ1aWxkVHlwZSBwcmVidWlsdCcpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBkaXIsXG4gICAgYnVpbGRUeXBlLFxuICAgIHNwZWNGaWxlLFxuICAgIHNwZWMsXG4gICAgcmF3U3BlYyxcbiAgICBkb2NrZXJmaWxlTmFtZSxcbiAgICBkb2NrZXJmaWxlQ29udGVudDogYnVpbGRUeXBlID09PSAnYnVpbGRfaW1hZ2UnID8gZG9ja2VyZmlsZUNvbnRlbnQgOiBudWxsLFxuICAgIHJlYWRtZU1kOiByZWFkSWZFeGlzdHMocGF0aC5qb2luKGRpciwgJ1JFQURNRS5tZCcpKSxcbiAgICBwcm9ibGVtcyxcbiAgfTtcbn1cblxuLyoqXG4gKiBge3sgfX1gIHRlbXBsYXRlICsgcGx1Z2luLWNvbnRyYWN0IHByb2JsZW1zOiBhcGktY29yZSdzXG4gKiB7QGxpbmsgY2hlY2tQbHVnaW5UZW1wbGF0ZXN9LCB0aGUgc2FtZSBjaGVjayB0aGUgc2VydmVyJ3MgdXBsb2FkIGFwcGxpZXMsXG4gKiB3aXRoIHBpcGVsaW5lLWNvcmUncyB0ZW1wbGF0ZSBlbmdpbmUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZW1wbGF0ZVByb2JsZW1zKHNwZWM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICBjb25zdCBlbmdpbmUgPSBhd2FpdCBpbXBvcnQoJ0BwaXBlbGluZS1idWlsZGVyL3BpcGVsaW5lLWNvcmUnKTtcbiAgcmV0dXJuIGNoZWNrUGx1Z2luVGVtcGxhdGVzKHNwZWMsIGVuZ2luZSkubWFwKChpc3N1ZSkgPT4gYCR7VEVNUExBVEVfSVNTVUVfUFJFRklYW2lzc3VlLmtpbmRdfSR7Zm9ybWF0UGx1Z2luVGVtcGxhdGVJc3N1ZShpc3N1ZSl9YCk7XG59XG5cbmNvbnN0IFRFTVBMQVRFX0lTU1VFX1BSRUZJWDogUmVjb3JkPFBsdWdpblRlbXBsYXRlSXNzdWVbJ2tpbmQnXSwgc3RyaW5nPiA9IHtcbiAgJ3RlbXBsYXRlJzogJ3RlbXBsYXRlICcsXG4gICd1bmRlY2xhcmVkJzogJ2NvbnRyYWN0OiAnLFxuICAndHlwZS1taXNtYXRjaCc6ICdjb250cmFjdDogJyxcbn07XG5cbi8qKiBFdmVyeSBwcm9ibGVtIHRoZSB1cGxvYWQgd291bGQgcmVmdXNlOiByZWFkaW5nLCBzY2hlbWEsIGJ1aWxkIHR5cGUsIHRlbXBsYXRlcy4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwYWNrYWdlUHJvYmxlbXMocGtnOiBQbHVnaW5QYWNrYWdlKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICByZXR1cm4gWy4uLnBrZy5wcm9ibGVtcywgLi4uYXdhaXQgdGVtcGxhdGVQcm9ibGVtcyhwa2cucmF3U3BlYyldO1xufVxuXG4vKipcbiAqIFRoZSBjYXRhbG9nIGZpZWxkcyBhcyB0aGUgc2VydmVyIHdpbGwgREVURUNUIHRoZW0gKHNwZWMg4oaSIFJFQURNRSDihpIgdGhlXG4gKiBwbHVnaW4ncyBvd24gRG9ja2VyZmlsZSBsYWJlbHMg4oaSIGRlcml2ZWQpLCB3aXRoIGVhY2ggdmFsdWUncyBzb3VyY2UgYW5kIGFueVxuICogdmFsaWRhdGlvbiBlcnJvciDigJQgdGhlIHNhbWUgYXBpLWNvcmUgZGV0ZWN0aW9uIHRoZSB1cGxvYWQgcnVucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRldGVjdFBhY2thZ2VDYXRhbG9nKHBrZzogUGx1Z2luUGFja2FnZSk6IERldGVjdGVkRmllbGRbXSB7XG4gIC8vIERldGVjdGlvbiByZWFkcyBvbmx5IHRoZSBkZXNjcmlwdGl2ZSBrZXlzLiBBIHNwZWMgdGhhdCBmYWlsZWQgdGhlIHNjaGVtYVxuICAvLyBzdGlsbCBoYXMgdGhlbSBpbiB0aGUgcmF3IGRvY3VtZW50LCBhbmQgZWFjaCBpcyByZS12YWxpZGF0ZWQgcGVyIGZpZWxkLlxuICBjb25zdCBzcGVjID0gKHBrZy5zcGVjID8/IHBrZy5yYXdTcGVjKSBhcyBQYXJhbWV0ZXJzPHR5cGVvZiBkZXRlY3RDYXRhbG9nTWV0YWRhdGE+WzBdWydzcGVjJ107XG4gIHJldHVybiBkZXRlY3RDYXRhbG9nTWV0YWRhdGEoeyBzcGVjLCByZWFkbWVNZDogcGtnLnJlYWRtZU1kLCBkb2NrZXJmaWxlQ29udGVudDogcGtnLmRvY2tlcmZpbGVDb250ZW50IH0pO1xufVxuXG4vKiogSHVtYW4tcmVhZGFibGUgc291cmNlIGJhZGdlICh0aGUgdXBsb2FkIGRpYWxvZydzIHdvcmRpbmcpLiAqL1xuZXhwb3J0IGNvbnN0IFNPVVJDRV9MQUJFTFM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIHNwZWM6ICdTcGVjJywgcmVhZG1lOiAnUkVBRE1FJywgZG9ja2VyZmlsZTogJ0RvY2tlcmZpbGUgbGFiZWwnLCBkZXJpdmVkOiAnR2VuZXJhdGVkJywgdXNlcjogJ0VkaXRlZCcsXG59O1xuXG4vKiogQSBvbmUtbGluZSByZW5kZXJpbmcgb2YgYSBjYXRhbG9nIHZhbHVlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdENhdGFsb2dWYWx1ZSh2YWx1ZTogdW5rbm93biwgbWF4ID0gODApOiBzdHJpbmcge1xuICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuICcoZW1wdHkpJztcbiAgbGV0IHRleHQ6IHN0cmluZztcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7dGV4dCA9IHZhbHVlLmpvaW4oJywgJyk7fSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgY29uc3QgaWNvbiA9IHZhbHVlIGFzIHsga2V5Pzogc3RyaW5nOyBiYWRnZT86IHN0cmluZyB9O1xuICAgIHRleHQgPSBpY29uLmtleSA/IGAke2ljb24ua2V5fSR7aWNvbi5iYWRnZSA/IGAgKGJhZGdlOiAke2ljb24uYmFkZ2V9KWAgOiAnJ31gIDogSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICB9IGVsc2Uge3RleHQgPSBTdHJpbmcodmFsdWUpO31cbiAgY29uc3QgZmxhdCA9IHRleHQucmVwbGFjZSgvXFxzKy9nLCAnICcpLnRyaW0oKTtcbiAgcmV0dXJuIGZsYXQubGVuZ3RoID4gbWF4ID8gYCR7ZmxhdC5zbGljZSgwLCBtYXggLSAxKX3igKZgIDogZmxhdDtcbn1cbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-resolver.d.ts","sourceRoot":"","sources":["../../src/utils/plugin-resolver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plugin-resolver.d.ts","sourceRoot":"","sources":["../../src/utils/plugin-resolver.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AA6F5C;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA4ClC"}
|