dbctx 1.4.6 → 2.0.1
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/dist/app/assemble.d.mts +2 -2
- package/dist/app/assemble.d.mts.map +1 -1
- package/dist/app/assemble.mjs +37 -16
- package/dist/app/db.d.mts.map +1 -1
- package/dist/app/db.mjs +3 -2
- package/dist/app/detect.d.mts +1 -0
- package/dist/app/detect.d.mts.map +1 -1
- package/dist/app/detect.mjs +3 -2
- package/dist/app/list.d.mts +4 -0
- package/dist/app/list.d.mts.map +1 -0
- package/dist/app/list.mjs +93 -0
- package/dist/app/load-introspection.d.mts +26 -0
- package/dist/app/load-introspection.d.mts.map +1 -0
- package/dist/app/load-introspection.mjs +89 -0
- package/dist/app/login.d.mts +2 -0
- package/dist/app/login.d.mts.map +1 -0
- package/dist/app/login.mjs +69 -0
- package/dist/app/open-url.d.mts +2 -0
- package/dist/app/open-url.d.mts.map +1 -1
- package/dist/app/open-url.mjs +8 -3
- package/dist/app/sample.d.mts +24 -0
- package/dist/app/sample.d.mts.map +1 -0
- package/dist/app/sample.mjs +257 -0
- package/dist/app/session.d.mts +3 -2
- package/dist/app/session.d.mts.map +1 -1
- package/dist/app/session.mjs +46 -6
- package/dist/app/ssh.d.mts.map +1 -1
- package/dist/app/ssh.mjs +12 -1
- package/dist/app/tail.d.mts +13 -0
- package/dist/app/tail.d.mts.map +1 -0
- package/dist/app/tail.mjs +168 -0
- package/dist/db/check-constraints.d.mts +9 -0
- package/dist/db/check-constraints.d.mts.map +1 -0
- package/dist/db/check-constraints.mjs +17 -0
- package/dist/db/custom-types.d.mts +26 -0
- package/dist/db/custom-types.d.mts.map +1 -0
- package/dist/db/custom-types.mjs +61 -0
- package/dist/db/extensions.d.mts +8 -0
- package/dist/db/extensions.d.mts.map +1 -0
- package/dist/db/extensions.mjs +14 -0
- package/dist/db/foreign-keys.mjs +3 -3
- package/dist/db/functions.d.mts +11 -0
- package/dist/db/functions.d.mts.map +1 -0
- package/dist/db/functions.mjs +23 -0
- package/dist/db/index.d.mts +10 -1
- package/dist/db/index.d.mts.map +1 -1
- package/dist/db/index.mjs +11 -2
- package/dist/db/planner-stats.d.mts +33 -0
- package/dist/db/planner-stats.d.mts.map +1 -0
- package/dist/db/planner-stats.mjs +103 -0
- package/dist/db/relations.d.mts +1 -0
- package/dist/db/relations.d.mts.map +1 -1
- package/dist/db/relations.mjs +10 -1
- package/dist/db/rls.d.mts +21 -0
- package/dist/db/rls.d.mts.map +1 -0
- package/dist/db/rls.mjs +48 -0
- package/dist/db/sample.d.mts +16 -0
- package/dist/db/sample.d.mts.map +1 -0
- package/dist/db/sample.mjs +73 -0
- package/dist/db/sequences.d.mts +15 -0
- package/dist/db/sequences.d.mts.map +1 -0
- package/dist/db/sequences.mjs +31 -0
- package/dist/db/stats.mjs +3 -3
- package/dist/db/triggers.d.mts +11 -0
- package/dist/db/triggers.d.mts.map +1 -0
- package/dist/db/triggers.mjs +21 -0
- package/dist/flow/events.d.mts +115 -0
- package/dist/flow/events.d.mts.map +1 -0
- package/dist/flow/events.mjs +2 -0
- package/dist/flow/interpreter.d.mts +21 -0
- package/dist/flow/interpreter.d.mts.map +1 -0
- package/dist/flow/interpreter.mjs +605 -0
- package/dist/flow/projection.d.mts +17 -0
- package/dist/flow/projection.d.mts.map +1 -0
- package/dist/flow/projection.mjs +83 -0
- package/dist/flow/projection.test.d.mts +2 -0
- package/dist/flow/projection.test.d.mts.map +1 -0
- package/dist/flow/projection.test.mjs +162 -0
- package/dist/flow/reducer.d.mts +5 -0
- package/dist/flow/reducer.d.mts.map +1 -0
- package/dist/flow/reducer.mjs +306 -0
- package/dist/flow/reducer.test.d.mts +2 -0
- package/dist/flow/reducer.test.d.mts.map +1 -0
- package/dist/flow/reducer.test.mjs +479 -0
- package/dist/flow/run.d.mts +3 -0
- package/dist/flow/run.d.mts.map +1 -0
- package/dist/flow/run.mjs +89 -0
- package/dist/flow/states.d.mts +54 -0
- package/dist/flow/states.d.mts.map +1 -0
- package/dist/flow/states.mjs +39 -0
- package/dist/index.d.mts +11 -0
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +135 -12
- package/dist/lib/atomic-write.d.mts +4 -0
- package/dist/lib/atomic-write.d.mts.map +1 -0
- package/dist/lib/atomic-write.mjs +75 -0
- package/dist/lib/stream-job.d.mts +19 -0
- package/dist/lib/stream-job.d.mts.map +1 -0
- package/dist/lib/stream-job.mjs +55 -0
- package/dist/lib/trpc-url.mjs +2 -2
- package/dist/lib/trpc.mjs +2 -2
- package/dist/logger.d.mts.map +1 -1
- package/dist/logger.mjs +6 -3
- package/dist/providers/TrpcProvider.js +3 -3
- package/dist/store.d.mts +113 -1
- package/dist/store.d.mts.map +1 -1
- package/dist/store.mjs +81 -2
- package/dist/ui/App.d.ts +1 -1
- package/dist/ui/App.d.ts.map +1 -1
- package/dist/ui/App.js +32 -4
- package/dist/ui/components/Analyze.d.ts +10 -0
- package/dist/ui/components/Analyze.d.ts.map +1 -0
- package/dist/ui/components/Analyze.js +54 -0
- package/dist/ui/components/Billing.d.ts +10 -0
- package/dist/ui/components/Billing.d.ts.map +1 -0
- package/dist/ui/components/Billing.js +40 -0
- package/dist/ui/components/DB.d.ts.map +1 -1
- package/dist/ui/components/DB.js +2 -2
- package/dist/ui/components/DatabasePicker.d.ts +13 -0
- package/dist/ui/components/DatabasePicker.d.ts.map +1 -0
- package/dist/ui/components/DatabasePicker.js +79 -0
- package/dist/ui/components/Enrich.d.ts +10 -0
- package/dist/ui/components/Enrich.d.ts.map +1 -0
- package/dist/ui/components/Enrich.js +41 -0
- package/dist/ui/components/Gate.js +2 -2
- package/dist/ui/components/Introspect.d.ts.map +1 -1
- package/dist/ui/components/Introspect.js +2 -2
- package/dist/ui/components/IntrospectionUpload.d.ts +10 -0
- package/dist/ui/components/IntrospectionUpload.d.ts.map +1 -0
- package/dist/ui/components/IntrospectionUpload.js +30 -0
- package/dist/ui/components/Login.d.ts +19 -0
- package/dist/ui/components/Login.d.ts.map +1 -0
- package/dist/ui/components/Login.js +38 -0
- package/dist/ui/components/OutputJson.d.ts +10 -0
- package/dist/ui/components/OutputJson.d.ts.map +1 -0
- package/dist/ui/components/OutputJson.js +18 -0
- package/dist/ui/components/SSH.d.ts.map +1 -1
- package/dist/ui/components/SSH.js +2 -2
- package/dist/ui/components/SamplesUpload.d.ts +10 -0
- package/dist/ui/components/SamplesUpload.d.ts.map +1 -0
- package/dist/ui/components/SamplesUpload.js +24 -0
- package/dist/ui/components/Sampling.d.ts +10 -0
- package/dist/ui/components/Sampling.d.ts.map +1 -0
- package/dist/ui/components/Sampling.js +58 -0
- package/dist/ui/components/Session.d.ts.map +1 -1
- package/dist/ui/components/Session.js +4 -4
- package/dist/ui/components/Spinner.d.ts.map +1 -1
- package/dist/ui/components/Spinner.js +17 -5
- package/dist/ui/components/TextInput.d.ts +11 -0
- package/dist/ui/components/TextInput.d.ts.map +1 -0
- package/dist/ui/components/TextInput.js +286 -0
- package/dist/ui/components/UserExplanation.d.ts +10 -0
- package/dist/ui/components/UserExplanation.d.ts.map +1 -0
- package/dist/ui/components/UserExplanation.js +34 -0
- package/dist/validatePaths.d.mts +2 -1
- package/dist/validatePaths.d.mts.map +1 -1
- package/dist/validatePaths.mjs +6 -2
- package/package.json +7 -7
- package/dist/app/index.d.mts +0 -3
- package/dist/app/index.d.mts.map +0 -1
- package/dist/app/index.mjs +0 -82
- package/dist/schemas/index.d.mts +0 -107
- package/dist/schemas/index.d.mts.map +0 -1
- package/dist/schemas/index.mjs +0 -116
package/dist/app/session.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { runInAction } from 'mobx';
|
|
2
2
|
import { fetchRelationFileStats } from '../db/index.mjs';
|
|
3
|
-
import { trpc, createAuthenticatedTRPCClient } from '
|
|
4
|
-
import { detectAIAssistants, detectDocker, detectOS, detectShell, detectUsername, detectWSL, detectSystemMemory, detectPackageManager, detectProvider, isLocalhost, } from './detect.mjs';
|
|
5
|
-
import { buildSessionURL } from './open-url.mjs';
|
|
3
|
+
import { trpc, createAuthenticatedTRPCClient } from '../lib/trpc.mjs';
|
|
4
|
+
import { detectAIAssistants, detectDocker, detectOS, detectShell, detectHostname, detectUsername, detectWSL, detectSystemMemory, detectPackageManager, detectProvider, isLocalhost, } from './detect.mjs';
|
|
5
|
+
import { buildSessionURL, openSessionURL } from './open-url.mjs';
|
|
6
6
|
import { writeConfig } from './config.mjs';
|
|
7
|
-
import { CLIENT_VERSION } from '
|
|
7
|
+
import { CLIENT_VERSION } from '../lib/version.mjs';
|
|
8
8
|
const checkIsReplica = async (pool) => {
|
|
9
9
|
const result = await pool.query('SELECT pg_is_in_recovery() AS is_replica');
|
|
10
10
|
return result.rows[0].is_replica;
|
|
@@ -78,7 +78,7 @@ const buildSessionInput = (result, store, isReplica, medianFileAge) => {
|
|
|
78
78
|
system_memory: detectSystemMemory(),
|
|
79
79
|
package_manager: detectPackageManager(),
|
|
80
80
|
username: detectUsername(),
|
|
81
|
-
hostname:
|
|
81
|
+
hostname: detectHostname(),
|
|
82
82
|
ai_assistants: detectAIAssistants(),
|
|
83
83
|
};
|
|
84
84
|
};
|
|
@@ -108,6 +108,46 @@ export const checkGate = async (token, store) => {
|
|
|
108
108
|
});
|
|
109
109
|
return result.continue;
|
|
110
110
|
};
|
|
111
|
+
export const checkBilling = async (token, sessionUrl, store) => {
|
|
112
|
+
runInAction(() => {
|
|
113
|
+
store.steps.billing.state = 'checking';
|
|
114
|
+
});
|
|
115
|
+
const authClient = createAuthenticatedTRPCClient(() => Promise.resolve(token));
|
|
116
|
+
const initial = await authClient.billing.hasBillingForClient.query({});
|
|
117
|
+
// Trial-eligible users (no invoices yet) skip the card-on-file step. The
|
|
118
|
+
// first revision will mint an invoice with a 7-day grace, billed via
|
|
119
|
+
// Stripe's hosted-invoice email rather than an immediate charge.
|
|
120
|
+
if (initial.hasBilling || initial.isTrialEligible) {
|
|
121
|
+
runInAction(() => {
|
|
122
|
+
store.steps.billing.state = 'connected';
|
|
123
|
+
});
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
runInAction(() => {
|
|
127
|
+
store.steps.billing.state = 'waiting';
|
|
128
|
+
store.steps.billing.url = sessionUrl;
|
|
129
|
+
});
|
|
130
|
+
await openSessionURL(sessionUrl);
|
|
131
|
+
await new Promise((resolve, reject) => {
|
|
132
|
+
const tick = async () => {
|
|
133
|
+
try {
|
|
134
|
+
const result = await authClient.billing.hasBillingForClient.query({});
|
|
135
|
+
if (result.hasBilling || result.isTrialEligible) {
|
|
136
|
+
runInAction(() => {
|
|
137
|
+
store.steps.billing.state = 'connected';
|
|
138
|
+
});
|
|
139
|
+
resolve();
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
setTimeout(tick, 2000);
|
|
143
|
+
}
|
|
144
|
+
catch (err) {
|
|
145
|
+
reject(err);
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
setTimeout(tick, 2000);
|
|
149
|
+
});
|
|
150
|
+
};
|
|
111
151
|
export const connectAccount = async (token, store) => {
|
|
112
152
|
runInAction(() => {
|
|
113
153
|
store.steps.account.state = 'fetching-account';
|
|
@@ -152,4 +192,4 @@ export const waitForAuthorization = async (sessionId, store) => {
|
|
|
152
192
|
await writeConfig(token);
|
|
153
193
|
await connectAccount(token, store);
|
|
154
194
|
};
|
|
155
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5tanMiLCJzb3VyY2VSb290IjoiLi9zcmMvIiwic291cmNlcyI6WyJhcHAvc2Vzc2lvbi5tdHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUlqQyxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsSUFBSSxFQUFFLDZCQUE2QixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDekUsT0FBTyxFQUNILGtCQUFrQixFQUNsQixZQUFZLEVBQ1osUUFBUSxFQUNSLFdBQVcsRUFDWCxjQUFjLEVBQ2QsU0FBUyxFQUNULGtCQUFrQixFQUNsQixvQkFBb0IsRUFDcEIsY0FBYyxFQUNkLFdBQVcsR0FDZCxNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFFdkQsTUFBTSxjQUFjLEdBQUcsS0FBSyxFQUFFLElBQVUsRUFBb0IsRUFBRTtJQUMxRCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQzNCLDBDQUEwQyxDQUM3QyxDQUFDO0lBRUYsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztBQUNyQyxDQUFDLENBQUM7QUFFRixNQUFNLG9CQUFvQixHQUFHLEtBQUssRUFDOUIsSUFBVSxFQUNWLFVBQTZCLEVBQzdCLEtBQWEsRUFDUyxFQUFFO0lBQ3hCLElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsSUFBSSxDQUFDO1FBQ0QsTUFBTSxLQUFLLEdBQUcsTUFBTSxzQkFBc0IsQ0FBQyxJ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TUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRTFELE9BQU8sT0FBTyxDQUFDLEVBQUUsQ0FBQztBQUN0QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxLQUFLLEVBQ3JDLFNBQWlCLEVBQ2pCLEtBQWEsRUFDQSxFQUFFO0lBQ2YsTUFBTSxHQUFHLEdBQUcsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRXZDLFdBQVcsQ0FBQyxHQUFHLEVBQUU7UUFDYixLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO1FBQ3RDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDOUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUM5QyxDQUFDLENBQUMsQ0FBQztJQUVILE1BQU0sS0FBSyxHQUFHLE1BQU0sWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVDLE1BQU0sV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLE1BQU0sY0FBYyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN2QyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7UG9vbH0gZnJvbSAncGcnO1xuaW1wb3J0IHtydW5JbkFjdGlvbn0gZnJvbSAnbW9ieCc7XG5cbmltcG9ydCB0eXBlIHtUU3RvcmV9IGZyb20gJy4uL3N0b3JlLm1qcyc7XG5pbXBvcnQgdHlwZSB7VERhdGFiYXNlfSBmcm9tICcuLi9zY2hlbWFzL2luZGV4Lm1qcyc7XG5pbXBvcnQge2ZldGNoUmVsYXRpb25GaWxlU3RhdHN9IGZyb20gJy4uL2RiL2luZGV4Lm1qcyc7XG5pbXBvcnQge3RycGMsIGNyZWF0ZUF1dGhlbnRpY2F0ZWRUUlBDQ2xpZW50fSBmcm9tICcjY2xpZW50L2xpYi90cnBjLm1qcyc7XG5pbXBvcnQge1xuICAgIGRldGVjdEFJQXNzaXN0YW50cyxcbiAgICBkZXRlY3REb2NrZXIsXG4gICAgZGV0ZWN0T1MsXG4gICAgZGV0ZWN0U2hlbGwsXG4gICAgZGV0ZWN0VXNlcm5hbWUsXG4gICAgZGV0ZWN0V1NMLFxuICAgIGRldGVjdFN5c3RlbU1lbW9yeSxcbiAgICBkZXRlY3RQYWNrYWdlTWFuYWdlcixcbiAgICBkZXRlY3RQcm92aWRlcixcbiAgICBpc0xvY2FsaG9zdCxcbn0gZnJvbSAnLi9kZXRlY3QubWpzJztcbmltcG9ydCB7YnVpbGRTZXNzaW9uVVJMfSBmcm9tICcuL29wZW4tdXJsLm1qcyc7XG5pbXBvcnQge3dyaXRlQ29uZmlnfSBmcm9tICcuL2NvbmZpZy5tanMnO1xuaW1wb3J0IHtDTElFTlRfVkVSU0lPTn0gZnJvbSAnI2NsaWVudC9saWIvdmVyc2lvbi5tanMnO1xuXG5jb25zdCBjaGVja0lzUmVwbGljYSA9IGFzeW5jIChwb29sOiBQb29sKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcG9vbC5xdWVyeTx7aXNfcmVwbGljYTogYm9vbGVhbn0+KFxuICAgICAgICAnU0VMRUNUIHBnX2lzX2luX3JlY292ZXJ5KCkgQVMgaXNfcmVwbGljYScsXG4gICAgKTtcblxuICAgIHJldHVybiByZXN1bHQucm93c1swXS5pc19yZXBsaWNhO1xufTtcblxuY29uc3QgY29sbGVjdE1lZGlhbkZpbGVBZ2UgPSBhc3luYyAoXG4gICAgcG9vbDogUG9vbCxcbiAgICB0YWJsZU5hbWVzOiByZWFkb25seSBzdHJpbmdbXSxcbiAgICBzdG9yZTogVFN0b3JlLFxuKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiA9PiB7XG4gICAgaWYgKHRhYmxlTmFtZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGZpcnN0ID0gYXdhaXQgZmV0Y2hSZWxhdGlvbkZpbGVTdGF0cyhwb29sLCB0YWJsZU5hbWVzWzBdKTtcblxuICAgICAgICBpZiAoIWZpcnN0Py5tb2RpZmljYXRpb25fdGltZSkge1xuICAgICAgICAgICAgcnVuSW5BY3Rpb24oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHN0b3JlLnN0ZXBzLmludHJvc3BlY3Rpb24uZmlsZVN0YXRzU2tpcHBlZCA9IHRydWU7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0aW1lczogRGF0ZVtdID0gW2ZpcnN0Lm1vZGlmaWNhdGlvbl90aW1lXTtcblxuICAgICAgICBjb25zdCByZW1haW5pbmcgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgIHRhYmxlTmFtZXMuc2xpY2UoMSkubWFwKGFzeW5jIChuYW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhdHMgPSBhd2FpdCBmZXRjaFJlbGF0aW9uRmlsZVN0YXRzKHBvb2wsIG5hbWUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdHM/Lm1vZGlmaWNhdGlvbl90aW1lID8/IG51bGw7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuXG4gICAgICAgIHJlbWFpbmluZy5mb3JFYWNoKCh0KSA9PiB7XG4gICAgICAgICAgICBpZiAodCkge1xuICAgICAgICAgICAgICAgIHRpbWVzLnB1c2godCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHNvcnRlZCA9IFsuLi50aW1lc10uc29ydCgoYSwgYikgPT4gYS5nZXRUaW1lKCkgLSBiLmdldFRpbWUoKSk7XG4gICAgICAgIGNvbnN0IG1pZCA9IE1hdGguZmxvb3Ioc29ydGVkLmxlbmd0aCAvIDIpO1xuICAgICAgICBjb25zdCBtZWRpYW4gPVxuICAgICAgICAgICAgc29ydGVkLmxlbmd0aCAlIDIgPT09IDBcbiAgICAgICAgICAgICAgICA/IG5ldyBEYXRlKFxuICAgICAgICAgICAgICAgICAgICAgIChzb3J0ZWRbbWlkIC0gMV0uZ2V0VGltZSgpICsgc29ydGVkW21pZF0uZ2V0VGltZSgpKSAvIDIsXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBzb3J0ZWRbbWlkXTtcblxuICAgICAgICByZXR1cm4gbWVkaWFuLnRvSVNPU3RyaW5nKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAgIHJ1bkluQWN0aW9uKCgpID0+IHtcbiAgICAgICAgICAgIHN0b3JlLnN0ZXBzLmludHJvc3BlY3Rpb24uZmlsZVN0YXRzU2tpcHBlZCA9IHRydWU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn07XG5cbmNvbnN0IGJ1aWxkU2Vzc2lvbklucHV0ID0gKFxuICAgIHJlc3VsdDogVERhdGFiYXNlLFxuICAgIHN0b3JlOiBUU3RvcmUsXG4gICAgaXNSZXBsaWNhOiBib29sZWFuLFxuICAgIG1lZGlhbkZpbGVBZ2U6IHN0cmluZyB8IG51bGwsXG4pID0+IHtcbiAgICBjb25zdCByZWxhdGlvbnMgPSBPYmplY3QudmFsdWVzKHJlc3VsdC5yZWxhdGlvbnMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgZGF0YWJhc2VfbmFtZTogcmVzdWx0Lm5hbWUsXG4gICAgICAgIGRhdGFiYXNlX29iamVjdF9zdGF0aXN0aWNzOiB7XG4gICAgICAgICAgICBwYXJlbnRfdGFibGVzOiByZWxhdGlvbnMuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChyKSA9PiByLmtpbmQgPT09ICdwYXJ0aXRpb25lZF90YWJsZScsXG4gICAgICAgICAgICApLmxlbmd0aCxcbiAgICAgICAgICAgIHRhYmxlczogcmVsYXRpb25zLmZpbHRlcigocikgPT4gci5raW5kID09PSAndGFibGUnKS5sZW5ndGgsXG4gICAgICAgICAgICB2aWV3czogcmVsYXRpb25zLmZpbHRlcigocikgPT4gci5raW5kID09PSAndmlldycpLmxlbmd0aCxcbiAgICAgICAgICAgIG1hdGVyaWFsaXplZF92aWV3czogcmVsYXRpb25zLmZpbHRlcihcbiAgICAgICAgICAgICAgICAocikgPT4gci5raW5kID09PSAnbWF0ZXJpYWxpemVkX3ZpZXcnLFxuICAgICAgICAgICAgKS5sZW5ndGgsXG4gICAgICAgICAgICBlbnVtczogc3RvcmUuc3RlcHMuaW50cm9zcGVjdGlvbi5jb3VudHMuZW51bXMsXG4gICAgICAgICAgICBpbmRleGVzOiBzdG9yZS5zdGVwcy5pbnRyb3NwZWN0aW9uLmNvdW50cy5pbmRleGVzLFxuICAgICAgICAgICAgZm9yZWlnbl9rZXlfcmVmZXJlbmNlczpcbiAgICAgICAgICAgICAgICBzdG9yZS5zdGVwcy5pbnRyb3NwZWN0aW9uLmNvdW50cy5mb3JlaWduS2V5cyxcbiAgICAgICAgfSxcbiAgICAgICAgaXNfZGF0YWJhc2VfcmVwbGljYTogaXNSZXBsaWNhLFxuICAgICAgICBtZWRpYW5fdGFibGVfZmlsZV9hZ2U6IG1lZGlhbkZpbGVBZ2UsXG4gICAgICAgIGRhdGFiYXNlX3R5cGU6IHJlc3VsdC50eXBlLFxuICAgICAgICBkYXRhYmFzZV92ZXJzaW9uOiByZXN1bHQudmVyc2lvbi52ZXJzaW9uX251bWJlci50b1N0cmluZygpLFxuICAgICAgICBkYXRhYmFzZV92ZXJzaW9uX3N0cmluZzogcmVzdWx0LnZlcnNpb24udmVyc2lvbl9zdHJpbmcsXG4gICAgICAgIGRhdGFiYXNlX3Byb3ZpZGVyOiBkZXRlY3RQcm92aWRlcihcbiAgICAgICAgICAgIHN0b3JlLnN0ZXBzLmRhdGFiYXNlQ29ubmVjdGlvbi5waWNrZWRIb3N0bmFtZSEsXG4gICAgICAgICksXG4gICAgICAgIGlzX2xvY2FsOiBpc0xvY2FsaG9zdChzdG9yZS5zdGVwcy5kYXRhYmFzZUNvbm5lY3Rpb24ucGlja2VkSG9zdG5hbWUhKSxcbiAgICAgICAgaXNfZG9ja2VyOiBkZXRlY3REb2NrZXIoKSxcbiAgICAgICAgaXNfYWNjZXNzZWRfb3Zlcl9zc2g6IHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24uZW5hYmxlZCxcbiAgICAgICAgc2hlbGw6IGRldGVjdFNoZWxsKCksXG4gICAgICAgIG9zOiBkZXRlY3RPUygpLFxuICAgICAgICBpc193c2w6IGRldGVjdFdTTCgpLFxuICAgICAgICBzeXN0ZW1fbWVtb3J5OiBkZXRlY3RTeXN0ZW1NZW1vcnkoKSxcbiAgICAgICAgcGFja2FnZV9tYW5hZ2VyOiBkZXRlY3RQYWNrYWdlTWFuYWdlcigpLFxuICAgICAgICB1c2VybmFtZTogZGV0ZWN0VXNlcm5hbWUoKSxcbiAgICAgICAgaG9zdG5hbWU6IHN0b3JlLnN0ZXBzLmRhdGFiYXNlQ29ubmVjdGlvbi5waWNrZWRIb3N0bmFtZSEsXG4gICAgICAgIGFpX2Fzc2lzdGFudHM6IGRldGVjdEFJQXNzaXN0YW50cygpLFxuICAgIH0gYXMgY29uc3Q7XG59O1xuXG5jb25zdCB3YWl0Rm9yVG9rZW4gPSAoc2Vzc2lvbklkOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4gPT5cbiAgICBuZXcgUHJvbWlzZTxzdHJpbmc+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgY29uc3Qgc3ViID0gdHJwYy5zZXNzaW9uLm9uQXV0aG9yaXphdGlvbi5zdWJzY3JpYmUoXG4gICAgICAgICAgICB7c2Vzc2lvbl9pZDogc2Vzc2lvbklkfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBvbkRhdGE6IChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGRhdGEudG9rZW4pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgb25FcnJvcjogKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgfSk7XG5cbmV4cG9ydCBjb25zdCBjaGVja0dhdGUgPSBhc3luYyAoXG4gICAgdG9rZW46IHN0cmluZyxcbiAgICBzdG9yZTogVFN0b3JlLFxuKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gICAgcnVuSW5BY3Rpb24oKCkgPT4ge1xuICAgICAgICBzdG9yZS5zdGVwcy5nYXRlLnN0YXRlID0gJ2NoZWNraW5nJztcbiAgICB9KTtcblxuICAgIGNvbnN0IGF1dGhDbGllbnQgPSBjcmVhdGVBdXRoZW50aWNhdGVkVFJQQ0NsaWVudCgoKSA9PlxuICAgICAgICBQcm9taXNlLnJlc29sdmUodG9rZW4pLFxuICAgICk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXV0aENsaWVudC5zZXNzaW9uLnNob3VsZENvbnRpbnVlLnF1ZXJ5KHtcbiAgICAgICAgY2xpZW50X3ZlcnNpb246IENMSUVOVF9WRVJTSU9OLFxuICAgIH0pO1xuXG4gICAgcnVuSW5BY3Rpb24oKCkgPT4ge1xuICAgICAgICBzdG9yZS5zdGVwcy5nYXRlLnN0YXRlID0gcmVzdWx0LmNvbnRpbnVlID8gJ3Bhc3NlZCcgOiAnYmxvY2tlZCc7XG4gICAgICAgIHN0b3JlLnN0ZXBzLmdhdGUubWVzc2FnZSA9IHJlc3VsdC5tZXNzYWdlO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3VsdC5jb250aW51ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb25uZWN0QWNjb3VudCA9IGFzeW5jIChcbiAgICB0b2tlbjogc3RyaW5nLFxuICAgIHN0b3JlOiBUU3RvcmUsXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBydW5JbkFjdGlvbigoKSA9PiB7XG4gICAgICAgIHN0b3JlLnN0ZXBzLmFjY291bnQuc3RhdGUgPSAnZmV0Y2hpbmctYWNjb3VudCc7XG4gICAgfSk7XG5cbiAgICBjb25zdCBhdXRoQ2xpZW50ID0gY3JlYXRlQXV0aGVudGljYXRlZFRSUENDbGllbnQoKCkgPT5cbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKHRva2VuKSxcbiAgICApO1xuICAgIGNvbnN0IGFjY291bnQgPSBhd2FpdCBhdXRoQ2xpZW50LmFjY291bnQuZ2V0QWNjb3VudC5xdWVyeSh7fSk7XG5cbiAgICBydW5JbkFjdGlvbigoKSA9PiB7XG4gICAgICAgIHN0b3JlLnN0ZXBzLmFjY291bnQuc3RhdGUgPSAnY29ubmVjdGVkJztcbiAgICAgICAgc3RvcmUuc3RlcHMuYWNjb3VudC5lbWFpbCA9IGFjY291bnQuZW1haWxzWzBdID8/IG51bGw7XG4gICAgICAgIHN0b3JlLnN0ZXBzLmFjY291bnQubmFtZSA9IGFjY291bnQubmFtZTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVTZXNzaW9uID0gYXN5bmMgKFxuICAgIHBvb2w6IFBvb2wsXG4gICAgcmVzdWx0OiBURGF0YWJhc2UsXG4gICAgc3RvcmU6IFRTdG9yZSxcbiAgICB0b2tlbjogc3RyaW5nIHwgbnVsbCxcbiAgICBkZXZpY2VfaWQ6IHN0cmluZyxcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gICAgcnVuSW5BY3Rpb24oKCkgPT4ge1xuICAgICAgICBzdG9yZS5zdGVwcy5hY2NvdW50LnN0YXRlID0gJ2NyZWF0aW5nLXNlc3Npb24nO1xuICAgIH0pO1xuXG4gICAgY29uc3QgdGFibGVOYW1lcyA9IE9iamVjdC52YWx1ZXMocmVzdWx0LnJlbGF0aW9ucylcbiAgICAgICAgLmZpbHRlcigocikgPT4gci5raW5kID09PSAndGFibGUnIHx8IHIua2luZCA9PT0gJ3BhcnRpdGlvbmVkX3RhYmxlJylcbiAgICAgICAgLm1hcCgocikgPT4gci5uYW1lKTtcblxuICAgIGNvbnN0IFtpc1JlcGxpY2EsIG1lZGlhbkZpbGVBZ2VdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgICBjaGVja0lzUmVwbGljYShwb29sKSxcbiAgICAgICAgY29sbGVjdE1lZGlhbkZpbGVBZ2UocG9vbCwgdGFibGVOYW1lcywgc3RvcmUpLFxuICAgIF0pO1xuXG4gICAgY29uc3QgaW5wdXQgPSB7XG4gICAgICAgIC4uLmJ1aWxkU2Vzc2lvbklucHV0KHJlc3VsdCwgc3RvcmUsIGlzUmVwbGljYSwgbWVkaWFuRmlsZUFnZSksXG4gICAgICAgIGRldmljZV9pZCxcbiAgICB9O1xuXG4gICAgY29uc3QgY2xpZW50ID0gdG9rZW5cbiAgICAgICAgPyBjcmVhdGVBdXRoZW50aWNhdGVkVFJQQ0NsaWVudCgoKSA9PiBQcm9taXNlLnJlc29sdmUodG9rZW4pKVxuICAgICAgICA6IHRycGM7XG5cbiAgICBjb25zdCBzZXNzaW9uID0gYXdhaXQgY2xpZW50LnNlc3Npb24uY3JlYXRlLm11dGF0ZShpbnB1dCk7XG5cbiAgICByZXR1cm4gc2Vzc2lvbi5pZDtcbn07XG5cbmV4cG9ydCBjb25zdCB3YWl0Rm9yQXV0aG9yaXphdGlvbiA9IGFzeW5jIChcbiAgICBzZXNzaW9uSWQ6IHN0cmluZyxcbiAgICBzdG9yZTogVFN0b3JlLFxuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgY29uc3QgdXJsID0gYnVpbGRTZXNzaW9uVVJMKHNlc3Npb25JZCk7XG5cbiAgICBydW5JbkFjdGlvbigoKSA9PiB7XG4gICAgICAgIHN0b3JlLnN0ZXBzLmFjY291bnQuc3RhdGUgPSAnd2FpdGluZyc7XG4gICAgICAgIHN0b3JlLnN0ZXBzLmFjY291bnQudXJsID0gdXJsO1xuICAgICAgICBzdG9yZS5zdGVwcy5hY2NvdW50LnNlc3Npb25JZCA9IHNlc3Npb25JZDtcbiAgICB9KTtcblxuICAgIGNvbnN0IHRva2VuID0gYXdhaXQgd2FpdEZvclRva2VuKHNlc3Npb25JZCk7XG4gICAgYXdhaXQgd3JpdGVDb25maWcodG9rZW4pO1xuICAgIGF3YWl0IGNvbm5lY3RBY2NvdW50KHRva2VuLCBzdG9yZSk7XG59O1xuIl19
|
|
195
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5tanMiLCJzb3VyY2VSb290IjoiLi9zcmMvIiwic291cmNlcyI6WyJhcHAvc2Vzc2lvbi5tdHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUlqQyxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsSUFBSSxFQUFFLDZCQUE2QixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDcEUsT0FBTyxFQUNILGtCQUFrQixFQUNsQixZQUFZLEVBQ1osUUFBUSxFQUNSLFdBQVcsRUFDWCxjQUFjLEVBQ2QsY0FBYyxFQUNkLFNBQVMsRUFDVCxrQkFBa0IsRUFDbEIsb0JBQW9CLEVBQ3BCLGNBQWMsRUFDZCxXQUFXLEdBQ2QsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFDLGVBQWUsRUFBRSxjQUFjLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUVsRCxNQUFNLGNBQWMsR0FBRyxLQUFLLEVBQUUsSUFBVSxFQUFvQixFQUFFO0lBQzFELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FDM0IsMENBQTBDLENBQzdDLENBQUM7SUFFRixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO0FBQ3JDLENBQUMsQ0FBQztBQUVGLE1BQU0sb0JBQW9CLEdBQUcsS0FBSyxFQUM5QixJQUFVLEVBQ1YsVUFBNkIsRUFDN0IsS0FBYSxFQUNTLEVBQUU7SUFDeEIsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxJQUFJLENBQUM7UUFDRCxNQUFNLEtBQUssR0FB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QUFLLEdBQUcsTUFBTSxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDNUMsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsTUFBTSxjQUFjLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3ZDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtQb29sfSBmcm9tICdwZyc7XG5pbXBvcnQge3J1bkluQWN0aW9ufSBmcm9tICdtb2J4JztcblxuaW1wb3J0IHR5cGUge1RTdG9yZX0gZnJvbSAnLi4vc3RvcmUubWpzJztcbmltcG9ydCB0eXBlIHtURGF0YWJhc2VJbnRyb3NwZWN0aW9ufSBmcm9tICdAZGJjdHgvY29yZSc7XG5pbXBvcnQge2ZldGNoUmVsYXRpb25GaWxlU3RhdHN9IGZyb20gJy4uL2RiL2luZGV4Lm1qcyc7XG5pbXBvcnQge3RycGMsIGNyZWF0ZUF1dGhlbnRpY2F0ZWRUUlBDQ2xpZW50fSBmcm9tICcuLi9saWIvdHJwYy5tanMnO1xuaW1wb3J0IHtcbiAgICBkZXRlY3RBSUFzc2lzdGFudHMsXG4gICAgZGV0ZWN0RG9ja2VyLFxuICAgIGRldGVjdE9TLFxuICAgIGRldGVjdFNoZWxsLFxuICAgIGRldGVjdEhvc3RuYW1lLFxuICAgIGRldGVjdFVzZXJuYW1lLFxuICAgIGRldGVjdFdTTCxcbiAgICBkZXRlY3RTeXN0ZW1NZW1vcnksXG4gICAgZGV0ZWN0UGFja2FnZU1hbmFnZXIsXG4gICAgZGV0ZWN0UHJvdmlkZXIsXG4gICAgaXNMb2NhbGhvc3QsXG59IGZyb20gJy4vZGV0ZWN0Lm1qcyc7XG5pbXBvcnQge2J1aWxkU2Vzc2lvblVSTCwgb3BlblNlc3Npb25VUkx9IGZyb20gJy4vb3Blbi11cmwubWpzJztcbmltcG9ydCB7d3JpdGVDb25maWd9IGZyb20gJy4vY29uZmlnLm1qcyc7XG5pbXBvcnQge0NMSUVOVF9WRVJTSU9OfSBmcm9tICcuLi9saWIvdmVyc2lvbi5tanMnO1xuXG5jb25zdCBjaGVja0lzUmVwbGljYSA9IGFzeW5jIChwb29sOiBQb29sKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcG9vbC5xdWVyeTx7aXNfcmVwbGljYTogYm9vbGVhbn0+KFxuICAgICAgICAnU0VMRUNUIHBnX2lzX2luX3JlY292ZXJ5KCkgQVMgaXNfcmVwbGljYScsXG4gICAgKTtcblxuICAgIHJldHVybiByZXN1bHQucm93c1swXS5pc19yZXBsaWNhO1xufTtcblxuY29uc3QgY29sbGVjdE1lZGlhbkZpbGVBZ2UgPSBhc3luYyAoXG4gICAgcG9vbDogUG9vbCxcbiAgICB0YWJsZU5hbWVzOiByZWFkb25seSBzdHJpbmdbXSxcbiAgICBzdG9yZTogVFN0b3JlLFxuKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiA9PiB7XG4gICAgaWYgKHRhYmxlTmFtZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGZpcnN0ID0gYXdhaXQgZmV0Y2hSZWxhdGlvbkZpbGVTdGF0cyhwb29sLCB0YWJsZU5hbWVzWzBdKTtcblxuICAgICAgICBpZiAoIWZpcnN0Py5tb2RpZmljYXRpb25fdGltZSkge1xuICAgICAgICAgICAgcnVuSW5BY3Rpb24oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHN0b3JlLnN0ZXBzLmludHJvc3BlY3Rpb24uZmlsZVN0YXRzU2tpcHBlZCA9IHRydWU7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0aW1lczogRGF0ZVtdID0gW2ZpcnN0Lm1vZGlmaWNhdGlvbl90aW1lXTtcblxuICAgICAgICBjb25zdCByZW1haW5pbmcgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgIHRhYmxlTmFtZXMuc2xpY2UoMSkubWFwKGFzeW5jIChuYW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhdHMgPSBhd2FpdCBmZXRjaFJlbGF0aW9uRmlsZVN0YXRzKHBvb2wsIG5hbWUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdHM/Lm1vZGlmaWNhdGlvbl90aW1lID8/IG51bGw7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuXG4gICAgICAgIHJlbWFpbmluZy5mb3JFYWNoKCh0KSA9PiB7XG4gICAgICAgICAgICBpZiAodCkge1xuICAgICAgICAgICAgICAgIHRpbWVzLnB1c2godCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHNvcnRlZCA9IFsuLi50aW1lc10uc29ydCgoYSwgYikgPT4gYS5nZXRUaW1lKCkgLSBiLmdldFRpbWUoKSk7XG4gICAgICAgIGNvbnN0IG1pZCA9IE1hdGguZmxvb3Ioc29ydGVkLmxlbmd0aCAvIDIpO1xuICAgICAgICBjb25zdCBtZWRpYW4gPVxuICAgICAgICAgICAgc29ydGVkLmxlbmd0aCAlIDIgPT09IDBcbiAgICAgICAgICAgICAgICA/IG5ldyBEYXRlKFxuICAgICAgICAgICAgICAgICAgICAgIChzb3J0ZWRbbWlkIC0gMV0uZ2V0VGltZSgpICsgc29ydGVkW21pZF0uZ2V0VGltZSgpKSAvIDIsXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBzb3J0ZWRbbWlkXTtcblxuICAgICAgICByZXR1cm4gbWVkaWFuLnRvSVNPU3RyaW5nKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAgIHJ1bkluQWN0aW9uKCgpID0+IHtcbiAgICAgICAgICAgIHN0b3JlLnN0ZXBzLmludHJvc3BlY3Rpb24uZmlsZVN0YXRzU2tpcHBlZCA9IHRydWU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn07XG5cbmNvbnN0IGJ1aWxkU2Vzc2lvbklucHV0ID0gKFxuICAgIHJlc3VsdDogVERhdGFiYXNlSW50cm9zcGVjdGlvbixcbiAgICBzdG9yZTogVFN0b3JlLFxuICAgIGlzUmVwbGljYTogYm9vbGVhbixcbiAgICBtZWRpYW5GaWxlQWdlOiBzdHJpbmcgfCBudWxsLFxuKSA9PiB7XG4gICAgY29uc3QgcmVsYXRpb25zID0gT2JqZWN0LnZhbHVlcyhyZXN1bHQucmVsYXRpb25zKTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGRhdGFiYXNlX25hbWU6IHJlc3VsdC5uYW1lLFxuICAgICAgICBkYXRhYmFzZV9vYmplY3Rfc3RhdGlzdGljczoge1xuICAgICAgICAgICAgcGFyZW50X3RhYmxlczogcmVsYXRpb25zLmZpbHRlcihcbiAgICAgICAgICAgICAgICAocikgPT4gci5raW5kID09PSAncGFydGl0aW9uZWRfdGFibGUnLFxuICAgICAgICAgICAgKS5sZW5ndGgsXG4gICAgICAgICAgICB0YWJsZXM6IHJlbGF0aW9ucy5maWx0ZXIoKHIpID0+IHIua2luZCA9PT0gJ3RhYmxlJykubGVuZ3RoLFxuICAgICAgICAgICAgdmlld3M6IHJlbGF0aW9ucy5maWx0ZXIoKHIpID0+IHIua2luZCA9PT0gJ3ZpZXcnKS5sZW5ndGgsXG4gICAgICAgICAgICBtYXRlcmlhbGl6ZWRfdmlld3M6IHJlbGF0aW9ucy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKHIpID0+IHIua2luZCA9PT0gJ21hdGVyaWFsaXplZF92aWV3JyxcbiAgICAgICAgICAgICkubGVuZ3RoLFxuICAgICAgICAgICAgZW51bXM6IHN0b3JlLnN0ZXBzLmludHJvc3BlY3Rpb24uY291bnRzLmVudW1zLFxuICAgICAgICAgICAgaW5kZXhlczogc3RvcmUuc3RlcHMuaW50cm9zcGVjdGlvbi5jb3VudHMuaW5kZXhlcyxcbiAgICAgICAgICAgIGZvcmVpZ25fa2V5X3JlZmVyZW5jZXM6XG4gICAgICAgICAgICAgICAgc3RvcmUuc3RlcHMuaW50cm9zcGVjdGlvbi5jb3VudHMuZm9yZWlnbktleXMsXG4gICAgICAgIH0sXG4gICAgICAgIGlzX2RhdGFiYXNlX3JlcGxpY2E6IGlzUmVwbGljYSxcbiAgICAgICAgbWVkaWFuX3RhYmxlX2ZpbGVfYWdlOiBtZWRpYW5GaWxlQWdlLFxuICAgICAgICBkYXRhYmFzZV90eXBlOiByZXN1bHQudHlwZSxcbiAgICAgICAgZGF0YWJhc2VfdmVyc2lvbjogcmVzdWx0LnZlcnNpb24udmVyc2lvbl9udW1iZXIudG9TdHJpbmcoKSxcbiAgICAgICAgZGF0YWJhc2VfdmVyc2lvbl9zdHJpbmc6IHJlc3VsdC52ZXJzaW9uLnZlcnNpb25fc3RyaW5nLFxuICAgICAgICBkYXRhYmFzZV9wcm92aWRlcjogZGV0ZWN0UHJvdmlkZXIoXG4gICAgICAgICAgICBzdG9yZS5zdGVwcy5kYXRhYmFzZUNvbm5lY3Rpb24ucGlja2VkSG9zdG5hbWUhLFxuICAgICAgICApLFxuICAgICAgICBpc19sb2NhbDogaXNMb2NhbGhvc3Qoc3RvcmUuc3RlcHMuZGF0YWJhc2VDb25uZWN0aW9uLnBpY2tlZEhvc3RuYW1lISksXG4gICAgICAgIGlzX2RvY2tlcjogZGV0ZWN0RG9ja2VyKCksXG4gICAgICAgIGlzX2FjY2Vzc2VkX292ZXJfc3NoOiBzdG9yZS5zdGVwcy5zc2hDb25uZWN0aW9uLmVuYWJsZWQsXG4gICAgICAgIHNoZWxsOiBkZXRlY3RTaGVsbCgpLFxuICAgICAgICBvczogZGV0ZWN0T1MoKSxcbiAgICAgICAgaXNfd3NsOiBkZXRlY3RXU0woKSxcbiAgICAgICAgc3lzdGVtX21lbW9yeTogZGV0ZWN0U3lzdGVtTWVtb3J5KCksXG4gICAgICAgIHBhY2thZ2VfbWFuYWdlcjogZGV0ZWN0UGFja2FnZU1hbmFnZXIoKSxcbiAgICAgICAgdXNlcm5hbWU6IGRldGVjdFVzZXJuYW1lKCksXG4gICAgICAgIGhvc3RuYW1lOiBkZXRlY3RIb3N0bmFtZSgpLFxuICAgICAgICBhaV9hc3Npc3RhbnRzOiBkZXRlY3RBSUFzc2lzdGFudHMoKSxcbiAgICB9IGFzIGNvbnN0O1xufTtcblxuY29uc3Qgd2FpdEZvclRva2VuID0gKHNlc3Npb25JZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+ID0+XG4gICAgbmV3IFByb21pc2U8c3RyaW5nPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YiA9IHRycGMuc2Vzc2lvbi5vbkF1dGhvcml6YXRpb24uc3Vic2NyaWJlKFxuICAgICAgICAgICAge3Nlc3Npb25faWQ6IHNlc3Npb25JZH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgb25EYXRhOiAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShkYXRhLnRva2VuKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG9uRXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgIH0pO1xuXG5leHBvcnQgY29uc3QgY2hlY2tHYXRlID0gYXN5bmMgKFxuICAgIHRva2VuOiBzdHJpbmcsXG4gICAgc3RvcmU6IFRTdG9yZSxcbik6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICAgIHJ1bkluQWN0aW9uKCgpID0+IHtcbiAgICAgICAgc3RvcmUuc3RlcHMuZ2F0ZS5zdGF0ZSA9ICdjaGVja2luZyc7XG4gICAgfSk7XG5cbiAgICBjb25zdCBhdXRoQ2xpZW50ID0gY3JlYXRlQXV0aGVudGljYXRlZFRSUENDbGllbnQoKCkgPT5cbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKHRva2VuKSxcbiAgICApO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGF1dGhDbGllbnQuc2Vzc2lvbi5zaG91bGRDb250aW51ZS5xdWVyeSh7XG4gICAgICAgIGNsaWVudF92ZXJzaW9uOiBDTElFTlRfVkVSU0lPTixcbiAgICB9KTtcblxuICAgIHJ1bkluQWN0aW9uKCgpID0+IHtcbiAgICAgICAgc3RvcmUuc3RlcHMuZ2F0ZS5zdGF0ZSA9IHJlc3VsdC5jb250aW51ZSA/ICdwYXNzZWQnIDogJ2Jsb2NrZWQnO1xuICAgICAgICBzdG9yZS5zdGVwcy5nYXRlLm1lc3NhZ2UgPSByZXN1bHQubWVzc2FnZTtcbiAgICB9KTtcblxuICAgIHJldHVybiByZXN1bHQuY29udGludWU7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tCaWxsaW5nID0gYXN5bmMgKFxuICAgIHRva2VuOiBzdHJpbmcsXG4gICAgc2Vzc2lvblVybDogc3RyaW5nLFxuICAgIHN0b3JlOiBUU3RvcmUsXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBydW5JbkFjdGlvbigoKSA9PiB7XG4gICAgICAgIHN0b3JlLnN0ZXBzLmJpbGxpbmcuc3RhdGUgPSAnY2hlY2tpbmcnO1xuICAgIH0pO1xuXG4gICAgY29uc3QgYXV0aENsaWVudCA9IGNyZWF0ZUF1dGhlbnRpY2F0ZWRUUlBDQ2xpZW50KCgpID0+XG4gICAgICAgIFByb21pc2UucmVzb2x2ZSh0b2tlbiksXG4gICAgKTtcblxuICAgIGNvbnN0IGluaXRpYWwgPSBhd2FpdCBhdXRoQ2xpZW50LmJpbGxpbmcuaGFzQmlsbGluZ0ZvckNsaWVudC5xdWVyeSh7fSk7XG5cbiAgICAvLyBUcmlhbC1lbGlnaWJsZSB1c2VycyAobm8gaW52b2ljZXMgeWV0KSBza2lwIHRoZSBjYXJkLW9uLWZpbGUgc3RlcC4gVGhlXG4gICAgLy8gZmlyc3QgcmV2aXNpb24gd2lsbCBtaW50IGFuIGludm9pY2Ugd2l0aCBhIDctZGF5IGdyYWNlLCBiaWxsZWQgdmlhXG4gICAgLy8gU3RyaXBlJ3MgaG9zdGVkLWludm9pY2UgZW1haWwgcmF0aGVyIHRoYW4gYW4gaW1tZWRpYXRlIGNoYXJnZS5cbiAgICBpZiAoaW5pdGlhbC5oYXNCaWxsaW5nIHx8IGluaXRpYWwuaXNUcmlhbEVsaWdpYmxlKSB7XG4gICAgICAgIHJ1bkluQWN0aW9uKCgpID0+IHtcbiAgICAgICAgICAgIHN0b3JlLnN0ZXBzLmJpbGxpbmcuc3RhdGUgPSAnY29ubmVjdGVkJztcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBydW5JbkFjdGlvbigoKSA9PiB7XG4gICAgICAgIHN0b3JlLnN0ZXBzLmJpbGxpbmcuc3RhdGUgPSAnd2FpdGluZyc7XG4gICAgICAgIHN0b3JlLnN0ZXBzLmJpbGxpbmcudXJsID0gc2Vzc2lvblVybDtcbiAgICB9KTtcblxuICAgIGF3YWl0IG9wZW5TZXNzaW9uVVJMKHNlc3Npb25VcmwpO1xuXG4gICAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjb25zdCB0aWNrID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPVxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBhdXRoQ2xpZW50LmJpbGxpbmcuaGFzQmlsbGluZ0ZvckNsaWVudC5xdWVyeSh7fSk7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNCaWxsaW5nIHx8IHJlc3VsdC5pc1RyaWFsRWxpZ2libGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcnVuSW5BY3Rpb24oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuc3RlcHMuYmlsbGluZy5zdGF0ZSA9ICdjb25uZWN0ZWQnO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQodGljaywgMjAwMCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgc2V0VGltZW91dCh0aWNrLCAyMDAwKTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb25uZWN0QWNjb3VudCA9IGFzeW5jIChcbiAgICB0b2tlbjogc3RyaW5nLFxuICAgIHN0b3JlOiBUU3RvcmUsXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBydW5JbkFjdGlvbigoKSA9PiB7XG4gICAgICAgIHN0b3JlLnN0ZXBzLmFjY291bnQuc3RhdGUgPSAnZmV0Y2hpbmctYWNjb3VudCc7XG4gICAgfSk7XG5cbiAgICBjb25zdCBhdXRoQ2xpZW50ID0gY3JlYXRlQXV0aGVudGljYXRlZFRSUENDbGllbnQoKCkgPT5cbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKHRva2VuKSxcbiAgICApO1xuICAgIGNvbnN0IGFjY291bnQgPSBhd2FpdCBhdXRoQ2xpZW50LmFjY291bnQuZ2V0QWNjb3VudC5xdWVyeSh7fSk7XG5cbiAgICBydW5JbkFjdGlvbigoKSA9PiB7XG4gICAgICAgIHN0b3JlLnN0ZXBzLmFjY291bnQuc3RhdGUgPSAnY29ubmVjdGVkJztcbiAgICAgICAgc3RvcmUuc3RlcHMuYWNjb3VudC5lbWFpbCA9IGFjY291bnQuZW1haWxzWzBdID8/IG51bGw7XG4gICAgICAgIHN0b3JlLnN0ZXBzLmFjY291bnQubmFtZSA9IGFjY291bnQubmFtZTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVTZXNzaW9uID0gYXN5bmMgKFxuICAgIHBvb2w6IFBvb2wsXG4gICAgcmVzdWx0OiBURGF0YWJhc2VJbnRyb3NwZWN0aW9uLFxuICAgIHN0b3JlOiBUU3RvcmUsXG4gICAgdG9rZW46IHN0cmluZyB8IG51bGwsXG4gICAgZGV2aWNlX2lkOiBzdHJpbmcsXG4pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICAgIHJ1bkluQWN0aW9uKCgpID0+IHtcbiAgICAgICAgc3RvcmUuc3RlcHMuYWNjb3VudC5zdGF0ZSA9ICdjcmVhdGluZy1zZXNzaW9uJztcbiAgICB9KTtcblxuICAgIGNvbnN0IHRhYmxlTmFtZXMgPSBPYmplY3QudmFsdWVzKHJlc3VsdC5yZWxhdGlvbnMpXG4gICAgICAgIC5maWx0ZXIoKHIpID0+IHIua2luZCA9PT0gJ3RhYmxlJyB8fCByLmtpbmQgPT09ICdwYXJ0aXRpb25lZF90YWJsZScpXG4gICAgICAgIC5tYXAoKHIpID0+IHIubmFtZSk7XG5cbiAgICBjb25zdCBbaXNSZXBsaWNhLCBtZWRpYW5GaWxlQWdlXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgICAgY2hlY2tJc1JlcGxpY2EocG9vbCksXG4gICAgICAgIGNvbGxlY3RNZWRpYW5GaWxlQWdlKHBvb2wsIHRhYmxlTmFtZXMsIHN0b3JlKSxcbiAgICBdKTtcblxuICAgIGNvbnN0IGlucHV0ID0ge1xuICAgICAgICAuLi5idWlsZFNlc3Npb25JbnB1dChyZXN1bHQsIHN0b3JlLCBpc1JlcGxpY2EsIG1lZGlhbkZpbGVBZ2UpLFxuICAgICAgICBkZXZpY2VfaWQsXG4gICAgfTtcblxuICAgIGNvbnN0IGNsaWVudCA9IHRva2VuXG4gICAgICAgID8gY3JlYXRlQXV0aGVudGljYXRlZFRSUENDbGllbnQoKCkgPT4gUHJvbWlzZS5yZXNvbHZlKHRva2VuKSlcbiAgICAgICAgOiB0cnBjO1xuXG4gICAgY29uc3Qgc2Vzc2lvbiA9IGF3YWl0IGNsaWVudC5zZXNzaW9uLmNyZWF0ZS5tdXRhdGUoaW5wdXQpO1xuXG4gICAgcmV0dXJuIHNlc3Npb24uaWQ7XG59O1xuXG5leHBvcnQgY29uc3Qgd2FpdEZvckF1dGhvcml6YXRpb24gPSBhc3luYyAoXG4gICAgc2Vzc2lvbklkOiBzdHJpbmcsXG4gICAgc3RvcmU6IFRTdG9yZSxcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGNvbnN0IHVybCA9IGJ1aWxkU2Vzc2lvblVSTChzZXNzaW9uSWQpO1xuXG4gICAgcnVuSW5BY3Rpb24oKCkgPT4ge1xuICAgICAgICBzdG9yZS5zdGVwcy5hY2NvdW50LnN0YXRlID0gJ3dhaXRpbmcnO1xuICAgICAgICBzdG9yZS5zdGVwcy5hY2NvdW50LnVybCA9IHVybDtcbiAgICAgICAgc3RvcmUuc3RlcHMuYWNjb3VudC5zZXNzaW9uSWQgPSBzZXNzaW9uSWQ7XG4gICAgfSk7XG5cbiAgICBjb25zdCB0b2tlbiA9IGF3YWl0IHdhaXRGb3JUb2tlbihzZXNzaW9uSWQpO1xuICAgIGF3YWl0IHdyaXRlQ29uZmlnKHRva2VuKTtcbiAgICBhd2FpdCBjb25uZWN0QWNjb3VudCh0b2tlbiwgc3RvcmUpO1xufTtcbiJdfQ==
|
package/dist/app/ssh.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssh.d.mts","sourceRoot":"./src/","sources":["app/ssh.mts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,cAAc,CAAC;AA8DzC,eAAO,MAAM,UAAU,GACnB,OAAO,MAAM,KACd,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"ssh.d.mts","sourceRoot":"./src/","sources":["app/ssh.mts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,cAAc,CAAC;AA8DzC,eAAO,MAAM,UAAU,GACnB,OAAO,MAAM,KACd,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CA+MlC,CAAC"}
|
package/dist/app/ssh.mjs
CHANGED
|
@@ -86,6 +86,17 @@ export const connectSSH = async (store) => {
|
|
|
86
86
|
});
|
|
87
87
|
};
|
|
88
88
|
const promptForPassphrase = (finish) => {
|
|
89
|
+
const envPassphrase = process.env['SSH_PASSPHRASE'];
|
|
90
|
+
if (envPassphrase !== undefined &&
|
|
91
|
+
!(utils.parseKey(privateKey, envPassphrase) instanceof Error)) {
|
|
92
|
+
finish(envPassphrase);
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
if (envPassphrase !== undefined) {
|
|
96
|
+
runInAction(() => {
|
|
97
|
+
store.steps.sshConnection.passwordPromptType = 'passphrase';
|
|
98
|
+
});
|
|
99
|
+
}
|
|
89
100
|
promptForInput('passphrase', (responses) => {
|
|
90
101
|
const tryPassphrase = responses[0];
|
|
91
102
|
utils.parseKey(privateKey, tryPassphrase) instanceof Error
|
|
@@ -204,4 +215,4 @@ export const connectSSH = async (store) => {
|
|
|
204
215
|
client.connect(connectConfig);
|
|
205
216
|
});
|
|
206
217
|
};
|
|
207
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NoLm1qcyIsInNvdXJjZVJvb3QiOiIuL3NyYy8iLCJzb3VyY2VzIjpbImFwcC9zc2gubXRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUUsVUFBVSxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBQ2pELE9BQU8sRUFBQyxPQUFPLEVBQUUsUUFBUSxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBQzFDLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDL0IsT0FBTyxHQUFHLE1BQU0sVUFBVSxDQUFDO0FBQzNCLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUd4QixNQUFNLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQyxHQUFHLElBQUksQ0FBQztBQUM3QixPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUM7QUFDbkMsT0FBTyxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBSXRDLE1BQU0sYUFBYSxHQUFHO0lBQ2xCLGVBQWU7SUFDZixZQUFZO0lBQ1osYUFBYTtJQUNiLFVBQVU7SUFDVixRQUFRO0lBQ1IsUUFBUTtDQUNGLENBQUM7QUFFWCxNQUFNLGdCQUFnQixHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUU7SUFDdkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFFMUMsT0FBTyxLQUFLLENBQUM7UUFDVCxJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFRO1FBQzNCLElBQUksRUFBRSxFQUFFO1FBQ1IsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLFFBQVE7UUFDN0IsY0FBYyxFQUFFLFNBQStCO0tBQ2xELENBQUM7U0FDRyxHQUFHLENBQUMsQ0FB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S0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDO2dCQUMxQyxLQUFLLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQztZQUNsRCxDQUFDLENBQUMsQ0FBQztZQUVILE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRTtZQUNwQixXQUFXLENBQUMsR0FBRyxFQUFFO2dCQUNiLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxLQUFLLE9BQU8sRUFBRSxDQUFDO29CQUM5QyxLQUFLLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO2dCQUMvQyxDQUFDO2dCQUVELEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDL0MsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDbEMsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3JlYWRGaWxlU3luYywgZXhpc3RzU3luY30gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQge2hvbWVkaXIsIHVzZXJJbmZvfSBmcm9tICdub2RlOm9zJztcbmltcG9ydCB7am9pbn0gZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCBuZXQgZnJvbSAnbm9kZTpuZXQnO1xuaW1wb3J0IHNzaDIgZnJvbSAnc3NoMic7XG5pbXBvcnQgdHlwZSB7QXV0aEhhbmRsZXJNaWRkbGV3YXJlLCBDb25uZWN0Q29uZmlnfSBmcm9tICdzc2gyJztcblxuY29uc3Qge0NsaWVudCwgdXRpbHN9ID0gc3NoMjtcbmltcG9ydCBTU0hDb25maWcgZnJvbSAnc3NoLWNvbmZpZyc7XG5pbXBvcnQge3J1bkluQWN0aW9uLCB3aGVufSBmcm9tICdtb2J4JztcbmltcG9ydCB7c2NvcGV9IGZyb20gJ3Njb3BlLXV0aWxpdGllcyc7XG5cbmltcG9ydCB0eXBlIHtUU3RvcmV9IGZyb20gJy4uL3N0b3JlLm1qcyc7XG5cbmNvbnN0IFNTSF9LRVlfT1JERVIgPSBbXG4gICAgJ2lkX2VkMjU1MTlfc2snLFxuICAgICdpZF9lZDI1NTE5JyxcbiAgICAnaWRfZWNkc2Ffc2snLFxuICAgICdpZF9lY2RzYScsXG4gICAgJ2lkX3JzYScsXG4gICAgJ2lkX2RzYScsXG5dIGFzIGNvbnN0O1xuXG5jb25zdCByZXNvbHZlU1NIQ29uZmlnID0gKHN0b3JlOiBUU3RvcmUpID0+IHtcbiAgICBjb25zdCBzc2hEaXIgPSBqb2luKGhvbWVkaXIoKSwgJy5zc2gnKTtcbiAgICBjb25zdCBjb25maWdQYXRoID0gam9pbihzc2hEaXIsICdjb25maWcnKTtcblxuICAgIHJldHVybiBzY29wZSh7XG4gICAgICAgIGhvc3Q6IHN0b3JlLmNvbmZpZy5zc2hIb3N0ISxcbiAgICAgICAgcG9ydDogMjIsXG4gICAgICAgIHVzZXJuYW1lOiB1c2VySW5mbygpLnVzZXJuYW1lLFxuICAgICAgICBwcml2YXRlS2V5UGF0aDogdW5kZWZpbmVkIGFzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICB9KVxuICAgICAgICAubGV0KChjb25maWcpID0+IHtcbiAgICAgICAgICAgIGlmICghZXhpc3RzU3luYyhjb25maWdQYXRoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjb25maWc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZ1RleHQgPSByZWFkRmlsZVN5bmMoY29uZmlnUGF0aCwgJ3V0Zi04Jyk7XG4gICAgICAgICAgICBjb25zdCBjb21wdXRlZCA9IFNTSENvbmZpZy5wYXJzZShjb25maWdUZXh0KS5jb21wdXRlKGNvbmZpZy5ob3N0KTtcblxuICAgICAgICAgICAgY29uc3QgaWRlbnRpdHlGaWxlID0gY29tcHV0ZWRbJ0lkZW50aXR5RmlsZSddXG4gICAgICAgICAgICAgICAgPyAoQXJyYXkuaXNBcnJheShjb21wdXRlZFsnSWRlbnRpdHlGaWxlJ10pXG4gICAgICAgICAgICAgICAgICAgICAgPyBjb21wdXRlZFsnSWRlbnRpdHlGaWxlJ11bMF1cbiAgICAgICAgICAgICAgICAgICAgICA6IGNvbXB1dGVkWydJZGVudGl0eUZpbGUnXVxuICAgICAgICAgICAgICAgICAgKS5yZXBsYWNlKC9efi8sIGhvbWVkaXIoKSlcbiAgICAgICAgICAgICAgICA6IGNvbmZpZy5wcml2YXRlS2V5UGF0aDtcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBob3N0OiAoY29tcHV0ZWRbJ0hvc3ROYW1lJ10gYXMgc3RyaW5nKSA/PyBjb25maWcuaG9zdCxcbiAgICAgICAgICAgICAgICBwb3J0OiBjb21wdXRlZFsnUG9ydCddXG4gICAgICAgICAgICAgICAgICAgID8gcGFyc2VJbnQoY29tcHV0ZWRbJ1BvcnQnXSBhcyBzdHJpbmcsIDEwKVxuICAgICAgICAgICAgICAgICAgICA6IGNvbmZpZy5wb3J0LFxuICAgICAgICAgICAgICAgIHVzZXJuYW1lOiAoY29tcHV0ZWRbJ1VzZXInXSBhcyBzdHJpbmcpID8/IGNvbmZpZy51c2VybmFtZSxcbiAgICAgICAgICAgICAgICBwcml2YXRlS2V5UGF0aDogaWRlbnRpdHlGaWxlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSlcbiAgICAgICAgLmxldCgoY29uZmlnKSA9PiAoe1xuICAgICAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICAgICAgcHJpdmF0ZUtleVBhdGg6XG4gICAgICAgICAgICAgICAgY29uZmlnLnByaXZhdGVLZXlQYXRoID8/XG4gICAgICAgICAgICAgICAgU1NIX0tFWV9PUkRFUi5tYXAoKG5hbWUpID0+IGpvaW4oc3NoRGlyLCBuYW1lKSkuZmluZCgocGF0aCkgPT5cbiAgICAgICAgICAgICAgICAgICAgZXhpc3RzU3luYyhwYXRoKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9KSlcbiAgICAgICAgLmxldCgoY29uZmlnKSA9PiAoe1xuICAgICAgICAgICAgaG9zdDogY29uZmlnLmhvc3QsXG4gICAgICAgICAgICBwb3J0OiBzdG9yZS5jb25maWcuc3NoUG9ydCA/PyBjb25maWcucG9ydCxcbiAgICAgICAgICAgIHVzZXJuYW1lOiBzdG9yZS5jb25maWcuc3NoVXNlcm5hbWUgPz8gY29uZmlnLnVzZXJuYW1lLFxuICAgICAgICAgICAgcHJpdmF0ZUtleVBhdGg6IHN0b3JlLmNvbmZpZy5zc2hLZXkgPz8gY29uZmlnLnByaXZhdGVLZXlQYXRoLFxuICAgICAgICB9KSlcbiAgICAgICAgLnZhbHVlKCk7XG59O1xuXG5leHBvcnQgY29uc3QgY29ubmVjdFNTSCA9IGFzeW5jIChcbiAgICBzdG9yZTogVFN0b3JlLFxuKTogUHJvbWlzZTwoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ+ID0+IHtcbiAgICBpZiAoIXN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24uZW5hYmxlZCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmZpZyA9IHJlc29sdmVTU0hDb25maWcoc3RvcmUpO1xuXG4gICAgY29uc3QgcHJpdmF0ZUtleSA9XG4gICAgICAgIGNvbmZpZy5wcml2YXRlS2V5UGF0aCAmJiBleGlzdHNTeW5jKGNvbmZpZy5wcml2YXRlS2V5UGF0aClcbiAgICAgICAgICAgID8gcmVhZEZpbGVTeW5jKGNvbmZpZy5wcml2YXRlS2V5UGF0aClcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgY29uc3Qga2V5SXNFbmNyeXB0ZWQgPVxuICAgICAgICBwcml2YXRlS2V5ICE9PSB1bmRlZmluZWQgJiYgdXRpbHMucGFyc2VLZXkocHJpdmF0ZUtleSkgaW5zdGFuY2VvZiBFcnJvcjtcblxuICAgIGxldCBwdWJsaWNLZXlBdHRlbXB0ZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IHByb21wdEZvcklucHV0ID0gKFxuICAgICAgICB0eXBlOiAncGFzc3BocmFzZScgfCAncGFzc3dvcmQnLFxuICAgICAgICBmaW5pc2g6IChyZXNwb25zZXM6IHN0cmluZ1tdKSA9PiB2b2lkLFxuICAgICkgPT4ge1xuICAgICAgICBydW5JbkFjdGlvbigoKSA9PiB7XG4gICAgICAgICAgICBzdG9yZS5zdGVwcy5zc2hDb25uZWN0aW9uLndyb25nQXR0ZW1wdCA9XG4gICAgICAgICAgICAgICAgc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5wYXNzd29yZFByb21wdFR5cGUgPT09IHR5cGU7XG4gICAgICAgICAgICBzdG9yZS5zdGVwcy5zc2hDb25uZWN0aW9uLnBhc3N3b3JkID0gbnVsbDtcbiAgICAgICAgICAgIHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24ubmVlZFBhc3N3b3JkID0gdHJ1ZTtcbiAgICAgICAgICAgIHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24ucGFzc3dvcmRQcm9tcHRUeXBlID0gdHlwZTtcbiAgICAgICAgICAgIHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24ucHJvbXB0Q291bnQgKz0gMTtcbiAgICAgICAgICAgIHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24uc3RhdGUgPSAnbmVlZC1wYXNzd29yZCc7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHdoZW4oKCkgPT4gc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5wYXNzd29yZCAhPT0gbnVsbCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBydW5JbkFjdGlvbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5uZWVkUGFzc3dvcmQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBzdG9yZS5zdGVwcy5zc2hDb25uZWN0aW9uLnN0YXRlID0gJ2Nvbm5lY3RpbmcnO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGZpbmlzaChbc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5wYXNzd29yZCFdKTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHByb21wdEZvclBhc3NwaHJhc2UgPSAoZmluaXNoOiAodmFsaWRQYXNzcGhyYXNlOiBzdHJpbmcpID0+IHZvaWQpID0+IHtcbiAgICAgICAgcHJvbXB0Rm9ySW5wdXQoJ3Bhc3NwaHJhc2UnLCAocmVzcG9uc2VzKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0cnlQYXNzcGhyYXNlID0gcmVzcG9uc2VzWzBdITtcbiAgICAgICAgICAgIHV0aWxzLnBhcnNlS2V5KHByaXZhdGVLZXkhLCB0cnlQYXNzcGhyYXNlKSBpbnN0YW5jZW9mIEVycm9yXG4gICAgICAgICAgICAgICAgPyBwcm9tcHRGb3JQYXNzcGhyYXNlKGZpbmlzaClcbiAgICAgICAgICAgICAgICA6IGZpbmlzaCh0cnlQYXNzcGhyYXNlKTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGF1dGhIYW5kbGVyOiBBdXRoSGFuZGxlck1pZGRsZXdhcmUgPSAoXG4gICAgICAgIG1ldGhvZHNMZWZ0LFxuICAgICAgICBfcGFydGlhbFN1Y2Nlc3MsXG4gICAgICAgIG5leHQsXG4gICAgKSA9PiB7XG4gICAgICAgIGNvbnN0IHt1c2VybmFtZX0gPSBjb25maWc7XG5cbiAgICAgICAgLy8gRmlyc3QgY2FsbDogbWV0aG9kc0xlZnQgaXMgbnVsbCDigJQgc2VuZCAnbm9uZScgdG8gZGlzY292ZXIgYXZhaWxhYmxlIG1ldGhvZHNcbiAgICAgICAgIW1ldGhvZHNMZWZ0XG4gICAgICAgICAgICA/IG5leHQoe3R5cGU6ICdub25lJywgdXNlcm5hbWV9KVxuICAgICAgICAgICAgOiBtZXRob2RzTGVmdC5pbmNsdWRlcygncHVibGlja2V5JykgJiZcbiAgICAgICAgICAgICAgICBwcml2YXRlS2V5ICYmXG4gICAgICAgICAgICAgICAga2V5SXNFbmNyeXB0ZWQgJiZcbiAgICAgICAgICAgICAgICAhcHVibGljS2V5QXR0ZW1wdGVkXG4gICAgICAgICAgICAgID8gcHJvbXB0Rm9yUGFzc3BocmFzZSgodmFsaWRQYXNzcGhyYXNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHB1YmxpY0tleUF0dGVtcHRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIG5leHQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3B1YmxpY2tleScsXG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VybmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogcHJpdmF0ZUtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NwaHJhc2U6IHZhbGlkUGFzc3BocmFzZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgOiBtZXRob2RzTGVmdC5pbmNsdWRlcygncHVibGlja2V5JykgJiZcbiAgICAgICAgICAgICAgICAgIHByaXZhdGVLZXkgJiZcbiAgICAgICAgICAgICAgICAgICFwdWJsaWNLZXlBdHRlbXB0ZWRcbiAgICAgICAgICAgICAgICA/ICgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgcHVibGljS2V5QXR0ZW1wdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICBuZXh0KHt0eXBlOiAncHVibGlja2V5JywgdXNlcm5hbWUsIGtleTogcHJpdmF0ZUtleX0pO1xuICAgICAgICAgICAgICAgICAgfSkoKVxuICAgICAgICAgICAgICAgIDogbWV0aG9kc0xlZnQuaW5jbHVkZXMoJ2tleWJvYXJkLWludGVyYWN0aXZlJylcbiAgICAgICAgICAgICAgICAgID8gbmV4dCh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAna2V5Ym9hcmQtaW50ZXJhY3RpdmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXNlcm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9tcHQ6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfaW5zdHJ1Y3Rpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9sYW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9wcm9tcHRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaCxcbiAgICAgICAgICAgICAgICAgICAgICAgICkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb21wdEZvcklucHV0KCdwYXNzd29yZCcsIGZpbmlzaCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgOiBtZXRob2RzTGVmdC5pbmNsdWRlcygncGFzc3dvcmQnKVxuICAgICAgICAgICAgICAgICAgICA/IHByb21wdEZvcklucHV0KCdwYXNzd29yZCcsIChyZXNwb25zZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAncGFzc3dvcmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZDogcmVzcG9uc2VzWzBdISxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgOiBuZXh0KCdub25lJyk7XG4gICAgfTtcblxuICAgIGNvbnN0IGNvbm5lY3RDb25maWc6IENvbm5lY3RDb25maWcgPSB7XG4gICAgICAgIGhvc3Q6IGNvbmZpZy5ob3N0LFxuICAgICAgICBwb3J0OiBjb25maWcucG9ydCxcbiAgICAgICAgdXNlcm5hbWU6IGNvbmZpZy51c2VybmFtZSxcbiAgICAgICAgcmVhZHlUaW1lb3V0OiAwLFxuICAgICAgICBrZWVwYWxpdmVJbnRlcnZhbDogMTBfMDAwLFxuICAgICAgICBrZWVwYWxpdmVDb3VudE1heDogMyxcbiAgICAgICAgYXV0aEhhbmRsZXI6IGF1dGhIYW5kbGVyLFxuICAgIH07XG5cbiAgICBydW5JbkFjdGlvbigoKSA9PiB7XG4gICAgICAgIHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24ucGlja2VkSG9zdG5hbWUgPSBjb25maWcuaG9zdDtcbiAgICAgICAgc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5waWNrZWRQb3J0ID0gY29uZmlnLnBvcnQ7XG4gICAgICAgIHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24ucGlja2VkVXNlcm5hbWUgPSBjb25maWcudXNlcm5hbWU7XG4gICAgICAgIHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24ucGlja2VkS2V5UGF0aCA9IGNvbmZpZy5wcml2YXRlS2V5UGF0aCA/PyBudWxsO1xuICAgICAgICBzdG9yZS5zdGVwcy5zc2hDb25uZWN0aW9uLnN0YXRlID0gJ2Nvbm5lY3RpbmcnO1xuICAgIH0pO1xuXG4gICAgY29uc3QgY2xpZW50ID0gbmV3IENsaWVudCgpO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPCgpID0+IHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgY2xpZW50Lm9uKCdyZWFkeScsICgpID0+IHtcbiAgICAgICAgICAgIHJ1bkluQWN0aW9uKCgpID0+IHtcbiAgICAgICAgICAgICAgICBzdG9yZS5zdGVwcy5zc2hDb25uZWN0aW9uLnN0YXRlID0gJ2Nvbm5lY3RlZCc7XG4gICAgICAgICAgICAgICAgc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5uZWVkUGFzc3dvcmQgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCByZW1vdGVIb3N0ID0gc3RvcmUuY29uZmlnLmhvc3RuYW1lID8/ICdsb2NhbGhvc3QnO1xuICAgICAgICAgICAgY29uc3QgcmVtb3RlUG9ydCA9IHN0b3JlLmNvbmZpZy5wb3J0ID8/IDU0MzI7XG5cbiAgICAgICAgICAgIGNvbnN0IHNlcnZlciA9IG5ldC5jcmVhdGVTZXJ2ZXIoKHNvY2tldCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxvY2FsUG9ydCA9IChzZXJ2ZXIuYWRkcmVzcygpIGFzIG5ldC5BZGRyZXNzSW5mbykucG9ydDtcblxuICAgICAgICAgICAgICAgIGNsaWVudC5mb3J3YXJkT3V0KFxuICAgICAgICAgICAgICAgICAgICAnMTI3LjAuMC4xJyxcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxQb3J0LFxuICAgICAgICAgICAgICAgICAgICByZW1vdGVIb3N0LFxuICAgICAgICAgICAgICAgICAgICByZW1vdGVQb3J0LFxuICAgICAgICAgICAgICAgICAgICAoZXJyLCBzdHJlYW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuZW5kKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LnBpcGUoc3RyZWFtKS5waXBlKHNvY2tldCk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBzZXJ2ZXIubGlzdGVuKDAsICcxMjcuMC4wLjEnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbG9jYWxQb3J0ID0gKHNlcnZlci5hZGRyZXNzKCkgYXMgbmV0LkFkZHJlc3NJbmZvKS5wb3J0O1xuXG4gICAgICAgICAgICAgICAgcnVuSW5BY3Rpb24oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGVwcy5zc2hDb25uZWN0aW9uLmxvY2FsUG9ydCA9IGxvY2FsUG9ydDtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHJlc29sdmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgY2xpZW50LmVuZCgpO1xuICAgICAgICAgICAgICAgICAgICBydW5JbkFjdGlvbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGVwcy5zc2hDb25uZWN0aW9uLnN0YXRlID0gJ2lkbGUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5sb2NhbFBvcnQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBjbGllbnQub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgICAgICAgcnVuSW5BY3Rpb24oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24uc3RhdGUgPSAnZXJyb3InO1xuICAgICAgICAgICAgICAgIHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24uZXJyb3IgPSBlcnIubWVzc2FnZTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY2xpZW50Lm9uKCdjbG9zZScsICgpID0+IHtcbiAgICAgICAgICAgIHJ1bkluQWN0aW9uKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5zdGF0ZSAhPT0gJ2Vycm9yJykge1xuICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGVwcy5zc2hDb25uZWN0aW9uLnN0YXRlID0gJ2Nsb3NlZCc7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5sb2NhbFBvcnQgPSBudWxsO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNsaWVudC5jb25uZWN0KGNvbm5lY3RDb25maWcpO1xuICAgIH0pO1xufTtcbiJdfQ==
|
|
218
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NoLm1qcyIsInNvdXJjZVJvb3QiOiIuL3NyYy8iLCJzb3VyY2VzIjpbImFwcC9zc2gubXRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUUsVUFBVSxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBQ2pELE9BQU8sRUFBQyxPQUFPLEVBQUUsUUFBUSxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBQzFDLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDL0IsT0FBTyxHQUFHLE1BQU0sVUFBVSxDQUFDO0FBQzNCLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUd4QixNQUFNLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQyxHQUFHLElBQUksQ0FBQztBQUM3QixPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUM7QUFDbkMsT0FBTyxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBSXRDLE1BQU0sYUFBYSxHQUFHO0lBQ2xCLGVBQWU7SUFDZixZQUFZO0lBQ1osYUFBYTtJQUNiLFVBQVU7SUFDVixRQUFRO0lBQ1IsUUFBUTtDQUNGLENBQUM7QUFFWCxNQUFNLGdCQUFnQixHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUU7SUFDdkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFFMUMsT0FBTyxLQUFLLENBQUM7UUFDVCxJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFRO1FBQzNCLElBQUksRUFBRSxFQUFFO1FBQ1IsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLFFBQVE7UUFDN0IsY0FBYyxFQUFFLFNBQStCO0tBQ2xELENBQUM7U0FDRyxHQUFHLENBQUMsQ0FB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QUFDLENBQUM7QUFDUCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3JlYWRGaWxlU3luYywgZXhpc3RzU3luY30gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQge2hvbWVkaXIsIHVzZXJJbmZvfSBmcm9tICdub2RlOm9zJztcbmltcG9ydCB7am9pbn0gZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCBuZXQgZnJvbSAnbm9kZTpuZXQnO1xuaW1wb3J0IHNzaDIgZnJvbSAnc3NoMic7XG5pbXBvcnQgdHlwZSB7QXV0aEhhbmRsZXJNaWRkbGV3YXJlLCBDb25uZWN0Q29uZmlnfSBmcm9tICdzc2gyJztcblxuY29uc3Qge0NsaWVudCwgdXRpbHN9ID0gc3NoMjtcbmltcG9ydCBTU0hDb25maWcgZnJvbSAnc3NoLWNvbmZpZyc7XG5pbXBvcnQge3J1bkluQWN0aW9uLCB3aGVufSBmcm9tICdtb2J4JztcbmltcG9ydCB7c2NvcGV9IGZyb20gJ3Njb3BlLXV0aWxpdGllcyc7XG5cbmltcG9ydCB0eXBlIHtUU3RvcmV9IGZyb20gJy4uL3N0b3JlLm1qcyc7XG5cbmNvbnN0IFNTSF9LRVlfT1JERVIgPSBbXG4gICAgJ2lkX2VkMjU1MTlfc2snLFxuICAgICdpZF9lZDI1NTE5JyxcbiAgICAnaWRfZWNkc2Ffc2snLFxuICAgICdpZF9lY2RzYScsXG4gICAgJ2lkX3JzYScsXG4gICAgJ2lkX2RzYScsXG5dIGFzIGNvbnN0O1xuXG5jb25zdCByZXNvbHZlU1NIQ29uZmlnID0gKHN0b3JlOiBUU3RvcmUpID0+IHtcbiAgICBjb25zdCBzc2hEaXIgPSBqb2luKGhvbWVkaXIoKSwgJy5zc2gnKTtcbiAgICBjb25zdCBjb25maWdQYXRoID0gam9pbihzc2hEaXIsICdjb25maWcnKTtcblxuICAgIHJldHVybiBzY29wZSh7XG4gICAgICAgIGhvc3Q6IHN0b3JlLmNvbmZpZy5zc2hIb3N0ISxcbiAgICAgICAgcG9ydDogMjIsXG4gICAgICAgIHVzZXJuYW1lOiB1c2VySW5mbygpLnVzZXJuYW1lLFxuICAgICAgICBwcml2YXRlS2V5UGF0aDogdW5kZWZpbmVkIGFzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICB9KVxuICAgICAgICAubGV0KChjb25maWcpID0+IHtcbiAgICAgICAgICAgIGlmICghZXhpc3RzU3luYyhjb25maWdQYXRoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjb25maWc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZ1RleHQgPSByZWFkRmlsZVN5bmMoY29uZmlnUGF0aCwgJ3V0Zi04Jyk7XG4gICAgICAgICAgICBjb25zdCBjb21wdXRlZCA9IFNTSENvbmZpZy5wYXJzZShjb25maWdUZXh0KS5jb21wdXRlKGNvbmZpZy5ob3N0KTtcblxuICAgICAgICAgICAgY29uc3QgaWRlbnRpdHlGaWxlID0gY29tcHV0ZWRbJ0lkZW50aXR5RmlsZSddXG4gICAgICAgICAgICAgICAgPyAoQXJyYXkuaXNBcnJheShjb21wdXRlZFsnSWRlbnRpdHlGaWxlJ10pXG4gICAgICAgICAgICAgICAgICAgICAgPyBjb21wdXRlZFsnSWRlbnRpdHlGaWxlJ11bMF1cbiAgICAgICAgICAgICAgICAgICAgICA6IGNvbXB1dGVkWydJZGVudGl0eUZpbGUnXVxuICAgICAgICAgICAgICAgICAgKS5yZXBsYWNlKC9efi8sIGhvbWVkaXIoKSlcbiAgICAgICAgICAgICAgICA6IGNvbmZpZy5wcml2YXRlS2V5UGF0aDtcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBob3N0OiAoY29tcHV0ZWRbJ0hvc3ROYW1lJ10gYXMgc3RyaW5nKSA/PyBjb25maWcuaG9zdCxcbiAgICAgICAgICAgICAgICBwb3J0OiBjb21wdXRlZFsnUG9ydCddXG4gICAgICAgICAgICAgICAgICAgID8gcGFyc2VJbnQoY29tcHV0ZWRbJ1BvcnQnXSBhcyBzdHJpbmcsIDEwKVxuICAgICAgICAgICAgICAgICAgICA6IGNvbmZpZy5wb3J0LFxuICAgICAgICAgICAgICAgIHVzZXJuYW1lOiAoY29tcHV0ZWRbJ1VzZXInXSBhcyBzdHJpbmcpID8/IGNvbmZpZy51c2VybmFtZSxcbiAgICAgICAgICAgICAgICBwcml2YXRlS2V5UGF0aDogaWRlbnRpdHlGaWxlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSlcbiAgICAgICAgLmxldCgoY29uZmlnKSA9PiAoe1xuICAgICAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICAgICAgcHJpdmF0ZUtleVBhdGg6XG4gICAgICAgICAgICAgICAgY29uZmlnLnByaXZhdGVLZXlQYXRoID8/XG4gICAgICAgICAgICAgICAgU1NIX0tFWV9PUkRFUi5tYXAoKG5hbWUpID0+IGpvaW4oc3NoRGlyLCBuYW1lKSkuZmluZCgocGF0aCkgPT5cbiAgICAgICAgICAgICAgICAgICAgZXhpc3RzU3luYyhwYXRoKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9KSlcbiAgICAgICAgLmxldCgoY29uZmlnKSA9PiAoe1xuICAgICAgICAgICAgaG9zdDogY29uZmlnLmhvc3QsXG4gICAgICAgICAgICBwb3J0OiBzdG9yZS5jb25maWcuc3NoUG9ydCA/PyBjb25maWcucG9ydCxcbiAgICAgICAgICAgIHVzZXJuYW1lOiBzdG9yZS5jb25maWcuc3NoVXNlcm5hbWUgPz8gY29uZmlnLnVzZXJuYW1lLFxuICAgICAgICAgICAgcHJpdmF0ZUtleVBhdGg6IHN0b3JlLmNvbmZpZy5zc2hLZXkgPz8gY29uZmlnLnByaXZhdGVLZXlQYXRoLFxuICAgICAgICB9KSlcbiAgICAgICAgLnZhbHVlKCk7XG59O1xuXG5leHBvcnQgY29uc3QgY29ubmVjdFNTSCA9IGFzeW5jIChcbiAgICBzdG9yZTogVFN0b3JlLFxuKTogUHJvbWlzZTwoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ+ID0+IHtcbiAgICBpZiAoIXN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24uZW5hYmxlZCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmZpZyA9IHJlc29sdmVTU0hDb25maWcoc3RvcmUpO1xuXG4gICAgY29uc3QgcHJpdmF0ZUtleSA9XG4gICAgICAgIGNvbmZpZy5wcml2YXRlS2V5UGF0aCAmJiBleGlzdHNTeW5jKGNvbmZpZy5wcml2YXRlS2V5UGF0aClcbiAgICAgICAgICAgID8gcmVhZEZpbGVTeW5jKGNvbmZpZy5wcml2YXRlS2V5UGF0aClcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgY29uc3Qga2V5SXNFbmNyeXB0ZWQgPVxuICAgICAgICBwcml2YXRlS2V5ICE9PSB1bmRlZmluZWQgJiYgdXRpbHMucGFyc2VLZXkocHJpdmF0ZUtleSkgaW5zdGFuY2VvZiBFcnJvcjtcblxuICAgIGxldCBwdWJsaWNLZXlBdHRlbXB0ZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IHByb21wdEZvcklucHV0ID0gKFxuICAgICAgICB0eXBlOiAncGFzc3BocmFzZScgfCAncGFzc3dvcmQnLFxuICAgICAgICBmaW5pc2g6IChyZXNwb25zZXM6IHN0cmluZ1tdKSA9PiB2b2lkLFxuICAgICkgPT4ge1xuICAgICAgICBydW5JbkFjdGlvbigoKSA9PiB7XG4gICAgICAgICAgICBzdG9yZS5zdGVwcy5zc2hDb25uZWN0aW9uLndyb25nQXR0ZW1wdCA9XG4gICAgICAgICAgICAgICAgc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5wYXNzd29yZFByb21wdFR5cGUgPT09IHR5cGU7XG4gICAgICAgICAgICBzdG9yZS5zdGVwcy5zc2hDb25uZWN0aW9uLnBhc3N3b3JkID0gbnVsbDtcbiAgICAgICAgICAgIHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24ubmVlZFBhc3N3b3JkID0gdHJ1ZTtcbiAgICAgICAgICAgIHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24ucGFzc3dvcmRQcm9tcHRUeXBlID0gdHlwZTtcbiAgICAgICAgICAgIHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24ucHJvbXB0Q291bnQgKz0gMTtcbiAgICAgICAgICAgIHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24uc3RhdGUgPSAnbmVlZC1wYXNzd29yZCc7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHdoZW4oKCkgPT4gc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5wYXNzd29yZCAhPT0gbnVsbCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBydW5JbkFjdGlvbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5uZWVkUGFzc3dvcmQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBzdG9yZS5zdGVwcy5zc2hDb25uZWN0aW9uLnN0YXRlID0gJ2Nvbm5lY3RpbmcnO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGZpbmlzaChbc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5wYXNzd29yZCFdKTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHByb21wdEZvclBhc3NwaHJhc2UgPSAoZmluaXNoOiAodmFsaWRQYXNzcGhyYXNlOiBzdHJpbmcpID0+IHZvaWQpID0+IHtcbiAgICAgICAgY29uc3QgZW52UGFzc3BocmFzZSA9IHByb2Nlc3MuZW52WydTU0hfUEFTU1BIUkFTRSddO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBlbnZQYXNzcGhyYXNlICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICEodXRpbHMucGFyc2VLZXkocHJpdmF0ZUtleSEsIGVudlBhc3NwaHJhc2UpIGluc3RhbmNlb2YgRXJyb3IpXG4gICAgICAgICkge1xuICAgICAgICAgICAgZmluaXNoKGVudlBhc3NwaHJhc2UpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVudlBhc3NwaHJhc2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcnVuSW5BY3Rpb24oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24ucGFzc3dvcmRQcm9tcHRUeXBlID0gJ3Bhc3NwaHJhc2UnO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBwcm9tcHRGb3JJbnB1dCgncGFzc3BocmFzZScsIChyZXNwb25zZXMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRyeVBhc3NwaHJhc2UgPSByZXNwb25zZXNbMF0hO1xuICAgICAgICAgICAgdXRpbHMucGFyc2VLZXkocHJpdmF0ZUtleSEsIHRyeVBhc3NwaHJhc2UpIGluc3RhbmNlb2YgRXJyb3JcbiAgICAgICAgICAgICAgICA/IHByb21wdEZvclBhc3NwaHJhc2UoZmluaXNoKVxuICAgICAgICAgICAgICAgIDogZmluaXNoKHRyeVBhc3NwaHJhc2UpO1xuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgY29uc3QgYXV0aEhhbmRsZXI6IEF1dGhIYW5kbGVyTWlkZGxld2FyZSA9IChcbiAgICAgICAgbWV0aG9kc0xlZnQsXG4gICAgICAgIF9wYXJ0aWFsU3VjY2VzcyxcbiAgICAgICAgbmV4dCxcbiAgICApID0+IHtcbiAgICAgICAgY29uc3Qge3VzZXJuYW1lfSA9IGNvbmZpZztcblxuICAgICAgICAvLyBGaXJzdCBjYWxsOiBtZXRob2RzTGVmdCBpcyBudWxsIOKAlCBzZW5kICdub25lJyB0byBkaXNjb3ZlciBhdmFpbGFibGUgbWV0aG9kc1xuICAgICAgICAhbWV0aG9kc0xlZnRcbiAgICAgICAgICAgID8gbmV4dCh7dHlwZTogJ25vbmUnLCB1c2VybmFtZX0pXG4gICAgICAgICAgICA6IG1ldGhvZHNMZWZ0LmluY2x1ZGVzKCdwdWJsaWNrZXknKSAmJlxuICAgICAgICAgICAgICAgIHByaXZhdGVLZXkgJiZcbiAgICAgICAgICAgICAgICBrZXlJc0VuY3J5cHRlZCAmJlxuICAgICAgICAgICAgICAgICFwdWJsaWNLZXlBdHRlbXB0ZWRcbiAgICAgICAgICAgICAgPyBwcm9tcHRGb3JQYXNzcGhyYXNlKCh2YWxpZFBhc3NwaHJhc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcHVibGljS2V5QXR0ZW1wdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgbmV4dCh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAncHVibGlja2V5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBwcml2YXRlS2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFzc3BocmFzZTogdmFsaWRQYXNzcGhyYXNlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICA6IG1ldGhvZHNMZWZ0LmluY2x1ZGVzKCdwdWJsaWNrZXknKSAmJlxuICAgICAgICAgICAgICAgICAgcHJpdmF0ZUtleSAmJlxuICAgICAgICAgICAgICAgICAgIXB1YmxpY0tleUF0dGVtcHRlZFxuICAgICAgICAgICAgICAgID8gKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBwdWJsaWNLZXlBdHRlbXB0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgIG5leHQoe3R5cGU6ICdwdWJsaWNrZXknLCB1c2VybmFtZSwga2V5OiBwcml2YXRlS2V5fSk7XG4gICAgICAgICAgICAgICAgICB9KSgpXG4gICAgICAgICAgICAgICAgOiBtZXRob2RzTGVmdC5pbmNsdWRlcygna2V5Ym9hcmQtaW50ZXJhY3RpdmUnKVxuICAgICAgICAgICAgICAgICAgPyBuZXh0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdrZXlib2FyZC1pbnRlcmFjdGl2ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VybmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb21wdDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9pbnN0cnVjdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2xhbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3Byb21wdHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoLFxuICAgICAgICAgICAgICAgICAgICAgICAgKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvbXB0Rm9ySW5wdXQoJ3Bhc3N3b3JkJywgZmluaXNoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICA6IG1ldGhvZHNMZWZ0LmluY2x1ZGVzKCdwYXNzd29yZCcpXG4gICAgICAgICAgICAgICAgICAgID8gcHJvbXB0Rm9ySW5wdXQoJ3Bhc3N3b3JkJywgKHJlc3BvbnNlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdwYXNzd29yZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VybmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkOiByZXNwb25zZXNbMF0hLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICA6IG5leHQoJ25vbmUnKTtcbiAgICB9O1xuXG4gICAgY29uc3QgY29ubmVjdENvbmZpZzogQ29ubmVjdENvbmZpZyA9IHtcbiAgICAgICAgaG9zdDogY29uZmlnLmhvc3QsXG4gICAgICAgIHBvcnQ6IGNvbmZpZy5wb3J0LFxuICAgICAgICB1c2VybmFtZTogY29uZmlnLnVzZXJuYW1lLFxuICAgICAgICByZWFkeVRpbWVvdXQ6IDAsXG4gICAgICAgIGtlZXBhbGl2ZUludGVydmFsOiAxMF8wMDAsXG4gICAgICAgIGtlZXBhbGl2ZUNvdW50TWF4OiAzLFxuICAgICAgICBhdXRoSGFuZGxlcjogYXV0aEhhbmRsZXIsXG4gICAgfTtcblxuICAgIHJ1bkluQWN0aW9uKCgpID0+IHtcbiAgICAgICAgc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5waWNrZWRIb3N0bmFtZSA9IGNvbmZpZy5ob3N0O1xuICAgICAgICBzdG9yZS5zdGVwcy5zc2hDb25uZWN0aW9uLnBpY2tlZFBvcnQgPSBjb25maWcucG9ydDtcbiAgICAgICAgc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5waWNrZWRVc2VybmFtZSA9IGNvbmZpZy51c2VybmFtZTtcbiAgICAgICAgc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5waWNrZWRLZXlQYXRoID0gY29uZmlnLnByaXZhdGVLZXlQYXRoID8/IG51bGw7XG4gICAgICAgIHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24uc3RhdGUgPSAnY29ubmVjdGluZyc7XG4gICAgfSk7XG5cbiAgICBjb25zdCBjbGllbnQgPSBuZXcgQ2xpZW50KCk7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2U8KCkgPT4gdm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjbGllbnQub24oJ3JlYWR5JywgKCkgPT4ge1xuICAgICAgICAgICAgcnVuSW5BY3Rpb24oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24uc3RhdGUgPSAnY29ubmVjdGVkJztcbiAgICAgICAgICAgICAgICBzdG9yZS5zdGVwcy5zc2hDb25uZWN0aW9uLm5lZWRQYXNzd29yZCA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHJlbW90ZUhvc3QgPSBzdG9yZS5jb25maWcuaG9zdG5hbWUgPz8gJ2xvY2FsaG9zdCc7XG4gICAgICAgICAgICBjb25zdCByZW1vdGVQb3J0ID0gc3RvcmUuY29uZmlnLnBvcnQgPz8gNTQzMjtcblxuICAgICAgICAgICAgY29uc3Qgc2VydmVyID0gbmV0LmNyZWF0ZVNlcnZlcigoc29ja2V0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbG9jYWxQb3J0ID0gKHNlcnZlci5hZGRyZXNzKCkgYXMgbmV0LkFkZHJlc3NJbmZvKS5wb3J0O1xuXG4gICAgICAgICAgICAgICAgY2xpZW50LmZvcndhcmRPdXQoXG4gICAgICAgICAgICAgICAgICAgICcxMjcuMC4wLjEnLFxuICAgICAgICAgICAgICAgICAgICBsb2NhbFBvcnQsXG4gICAgICAgICAgICAgICAgICAgIHJlbW90ZUhvc3QsXG4gICAgICAgICAgICAgICAgICAgIHJlbW90ZVBvcnQsXG4gICAgICAgICAgICAgICAgICAgIChlcnIsIHN0cmVhbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5lbmQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQucGlwZShzdHJlYW0pLnBpcGUoc29ja2V0KTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHNlcnZlci5saXN0ZW4oMCwgJzEyNy4wLjAuMScsICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBsb2NhbFBvcnQgPSAoc2VydmVyLmFkZHJlc3MoKSBhcyBuZXQuQWRkcmVzc0luZm8pLnBvcnQ7XG5cbiAgICAgICAgICAgICAgICBydW5JbkFjdGlvbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24ubG9jYWxQb3J0ID0gbG9jYWxQb3J0O1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHNlcnZlci5jbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgICBjbGllbnQuZW5kKCk7XG4gICAgICAgICAgICAgICAgICAgIHJ1bkluQWN0aW9uKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24uc3RhdGUgPSAnaWRsZSc7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGVwcy5zc2hDb25uZWN0aW9uLmxvY2FsUG9ydCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNsaWVudC5vbignZXJyb3InLCAoZXJyKSA9PiB7XG4gICAgICAgICAgICBydW5JbkFjdGlvbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5zdGF0ZSA9ICdlcnJvcic7XG4gICAgICAgICAgICAgICAgc3RvcmUuc3RlcHMuc3NoQ29ubmVjdGlvbi5lcnJvciA9IGVyci5tZXNzYWdlO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICB9KTtcblxuICAgICAgICBjbGllbnQub24oJ2Nsb3NlJywgKCkgPT4ge1xuICAgICAgICAgICAgcnVuSW5BY3Rpb24oKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzdG9yZS5zdGVwcy5zc2hDb25uZWN0aW9uLnN0YXRlICE9PSAnZXJyb3InKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0b3JlLnN0ZXBzLnNzaENvbm5lY3Rpb24uc3RhdGUgPSAnY2xvc2VkJztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzdG9yZS5zdGVwcy5zc2hDb25uZWN0aW9uLmxvY2FsUG9ydCA9IG51bGw7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY2xpZW50LmNvbm5lY3QoY29ubmVjdENvbmZpZyk7XG4gICAgfSk7XG59O1xuIl19
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { TRPCClient } from '@trpc/client';
|
|
2
|
+
import type { TAppRouter } from '@dbctx/core';
|
|
3
|
+
import { type TJobSnapshot } from '../lib/stream-job.mjs';
|
|
4
|
+
import type { TStore } from '../store.mjs';
|
|
5
|
+
export declare const streamPostIntrospection: (authed: TRPCClient<TAppRouter>, jobId: string, store: TStore) => Promise<TJobSnapshot>;
|
|
6
|
+
export declare const dispatchAndStreamPostSampling: (authed: TRPCClient<TAppRouter>, revisionId: string, store: TStore) => Promise<void>;
|
|
7
|
+
export declare const tailRevision: (args: {
|
|
8
|
+
authed: TRPCClient<TAppRouter>;
|
|
9
|
+
revisionId: string;
|
|
10
|
+
store: TStore;
|
|
11
|
+
postIntrospectionDone: boolean;
|
|
12
|
+
}) => Promise<void>;
|
|
13
|
+
//# sourceMappingURL=tail.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tail.d.mts","sourceRoot":"./src/","sources":["app/tail.mts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,aAAa,CAAC;AAK5C,OAAO,EAAY,KAAK,YAAY,EAAC,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,cAAc,CAAC;AAMzC,eAAO,MAAM,uBAAuB,GAChC,QAAQ,UAAU,CAAC,UAAU,CAAC,EAC9B,OAAO,MAAM,EACb,OAAO,MAAM,KACd,OAAO,CAAC,YAAY,CAuCtB,CAAC;AAIF,eAAO,MAAM,6BAA6B,GACtC,QAAQ,UAAU,CAAC,UAAU,CAAC,EAC9B,YAAY,MAAM,EAClB,OAAO,MAAM,KACd,OAAO,CAAC,IAAI,CAqFd,CAAC;AAYF,eAAO,MAAM,YAAY,GAAU,MAAM;IACrC,MAAM,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB,EAAE,OAAO,CAAC;CAClC,KAAG,OAAO,CAAC,IAAI,CAkCf,CAAC"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { runInAction } from 'mobx';
|
|
2
|
+
import { parsePostIntrospectionStage, parsePostSamplingLabel, } from '@dbctx/common';
|
|
3
|
+
import { streamJob } from '../lib/stream-job.mjs';
|
|
4
|
+
import { logger } from '../logger.mjs';
|
|
5
|
+
// Streams a post-introspection job to completion and binds progress + terminal state
|
|
6
|
+
// onto store.steps.ingestion.postIntrospection. Returns the final snapshot so callers
|
|
7
|
+
// can react to success/failure.
|
|
8
|
+
export const streamPostIntrospection = async (authed, jobId, store) => {
|
|
9
|
+
try {
|
|
10
|
+
const snapshot = await streamJob(authed, jobId, {
|
|
11
|
+
onProgress: (snap) => {
|
|
12
|
+
runInAction(() => {
|
|
13
|
+
store.steps.ingestion.postIntrospection.state = 'running';
|
|
14
|
+
store.steps.ingestion.postIntrospection.stage =
|
|
15
|
+
parsePostIntrospectionStage(snap.progressLabel);
|
|
16
|
+
store.steps.ingestion.postIntrospection.tokensIn =
|
|
17
|
+
snap.tokensIn ?? null;
|
|
18
|
+
store.steps.ingestion.postIntrospection.tokensOut =
|
|
19
|
+
snap.tokensOut ?? null;
|
|
20
|
+
store.steps.ingestion.postIntrospection.columnsDone =
|
|
21
|
+
snap.columnsDone ?? null;
|
|
22
|
+
store.steps.ingestion.postIntrospection.columnsTotal =
|
|
23
|
+
snap.columnsTotal ?? null;
|
|
24
|
+
});
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
runInAction(() => {
|
|
28
|
+
if (snapshot.status === 'failed') {
|
|
29
|
+
store.steps.ingestion.postIntrospection.state = 'error';
|
|
30
|
+
store.steps.ingestion.postIntrospection.error =
|
|
31
|
+
snapshot.error ?? 'post-introspection failed';
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
store.steps.ingestion.postIntrospection.state = 'done';
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
return snapshot;
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
41
|
+
runInAction(() => {
|
|
42
|
+
store.steps.ingestion.postIntrospection.state = 'error';
|
|
43
|
+
store.steps.ingestion.postIntrospection.error = msg;
|
|
44
|
+
});
|
|
45
|
+
throw err;
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
// Triggers post-sampling (server skips re-enqueue if already analyzed) and binds
|
|
49
|
+
// progress + terminal state onto store.steps.ingestion.postSampling.
|
|
50
|
+
export const dispatchAndStreamPostSampling = async (authed, revisionId, store) => {
|
|
51
|
+
runInAction(() => {
|
|
52
|
+
if (store.steps.ingestion.postSampling.state === 'idle') {
|
|
53
|
+
store.steps.ingestion.postSampling.state = 'queued';
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
const result = await authed.revisions.runPostSampling.mutate({ revisionId });
|
|
57
|
+
if (result.alreadyAnalyzed) {
|
|
58
|
+
runInAction(() => {
|
|
59
|
+
const c = store.steps.ingestion.postSampling;
|
|
60
|
+
c.state = 'done';
|
|
61
|
+
c.jobId = null;
|
|
62
|
+
c.reused = true;
|
|
63
|
+
c.counts.totalTables = result.counts.totalTables;
|
|
64
|
+
c.counts.foreignKeysFound = result.counts.foreignKeys;
|
|
65
|
+
});
|
|
66
|
+
logger.info(`post-sampling reused for revision=${revisionId} (tables=${result.counts.totalTables} fks=${result.counts.foreignKeys})`);
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
const { jobId } = result;
|
|
70
|
+
runInAction(() => {
|
|
71
|
+
store.steps.ingestion.postSampling.jobId = jobId;
|
|
72
|
+
store.steps.ingestion.postSampling.state = 'running';
|
|
73
|
+
});
|
|
74
|
+
const snapshot = await streamJob(authed, jobId, {
|
|
75
|
+
onProgress: (snap) => {
|
|
76
|
+
runInAction(() => {
|
|
77
|
+
const c = store.steps.ingestion.postSampling;
|
|
78
|
+
const next = parsePostSamplingLabel(snap.progressLabel, {
|
|
79
|
+
stage: c.stage,
|
|
80
|
+
totalTables: c.counts.totalTables,
|
|
81
|
+
describedTables: c.counts.describedTables,
|
|
82
|
+
embeddedTables: c.counts.embeddedTables,
|
|
83
|
+
totalEmbeddings: c.counts.totalEmbeddings,
|
|
84
|
+
scannedTables: c.counts.scannedTables,
|
|
85
|
+
foreignKeysFound: c.counts.foreignKeysFound,
|
|
86
|
+
});
|
|
87
|
+
if (next.stage !== null) {
|
|
88
|
+
c.stage = next.stage;
|
|
89
|
+
}
|
|
90
|
+
if (next.totalTables !== undefined) {
|
|
91
|
+
c.counts.totalTables = next.totalTables;
|
|
92
|
+
}
|
|
93
|
+
if (next.describedTables !== undefined) {
|
|
94
|
+
c.counts.describedTables = next.describedTables;
|
|
95
|
+
}
|
|
96
|
+
if (next.embeddedTables !== undefined) {
|
|
97
|
+
c.counts.embeddedTables = next.embeddedTables;
|
|
98
|
+
}
|
|
99
|
+
if (next.totalEmbeddings !== undefined) {
|
|
100
|
+
c.counts.totalEmbeddings = next.totalEmbeddings;
|
|
101
|
+
}
|
|
102
|
+
if (next.scannedTables !== undefined) {
|
|
103
|
+
c.counts.scannedTables = next.scannedTables;
|
|
104
|
+
}
|
|
105
|
+
if (next.foreignKeysFound !== undefined) {
|
|
106
|
+
c.counts.foreignKeysFound = next.foreignKeysFound;
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
},
|
|
110
|
+
});
|
|
111
|
+
runInAction(() => {
|
|
112
|
+
if (snapshot.status === 'failed') {
|
|
113
|
+
store.steps.ingestion.postSampling.state = 'error';
|
|
114
|
+
store.steps.ingestion.postSampling.error =
|
|
115
|
+
snapshot.error ?? 'post-sampling job failed';
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
store.steps.ingestion.postSampling.state = 'done';
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
if (snapshot.status === 'failed') {
|
|
122
|
+
logger.error(`post-sampling job failed: ${snapshot.error ?? 'unknown'}`);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
logger.info(`post-sampling done for revision=${revisionId}`);
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
// Sequential tail of a server-side revision: post-introspection first if still running,
|
|
129
|
+
// then post-sampling. Used by the list-subcommand flow after the user picks a
|
|
130
|
+
// database to monitor. Caller is responsible for pre-filling the upstream
|
|
131
|
+
// store steps (introspection/sampling/samples) to their 'skipped' states.
|
|
132
|
+
//
|
|
133
|
+
// Always calls dispatchAndStreamPostSampling even when post-sampling is already complete
|
|
134
|
+
// server-side — runPostSampling is idempotent (`alreadyAnalyzed: true` short-circuit)
|
|
135
|
+
// and is the only way to populate the relations/foreign-keys counts the UI
|
|
136
|
+
// renders. Skipping it here would leave the analyze line showing "0 tables,
|
|
137
|
+
// 0 foreign keys".
|
|
138
|
+
export const tailRevision = async (args) => {
|
|
139
|
+
const { authed, revisionId, store, postIntrospectionDone } = args;
|
|
140
|
+
if (!postIntrospectionDone) {
|
|
141
|
+
// Funnel through ensurePostIntrospection (rather than deriving the deterministic
|
|
142
|
+
// job ID inline) so the server can wipe any prior failed post-introspection and
|
|
143
|
+
// hand back a fresh job ID. Without this, a failed post-introspection caught by
|
|
144
|
+
// the list flow would just stream back the same dead snapshot.
|
|
145
|
+
const result = await authed.revisions.ensurePostIntrospection.mutate({
|
|
146
|
+
revisionId,
|
|
147
|
+
});
|
|
148
|
+
if (result.alreadyEnriched) {
|
|
149
|
+
runInAction(() => {
|
|
150
|
+
store.steps.ingestion.postIntrospection.state = 'done';
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
runInAction(() => {
|
|
155
|
+
store.steps.ingestion.postIntrospection.jobId = result.jobId;
|
|
156
|
+
if (store.steps.ingestion.postIntrospection.state === 'idle') {
|
|
157
|
+
store.steps.ingestion.postIntrospection.state = 'queued';
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
const snap = await streamPostIntrospection(authed, result.jobId, store);
|
|
161
|
+
if (snap.status === 'failed') {
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
await dispatchAndStreamPostSampling(authed, revisionId, store);
|
|
167
|
+
};
|
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFpbC5tanMiLCJzb3VyY2VSb290IjoiLi9zcmMvIiwic291cmNlcyI6WyJhcHAvdGFpbC5tdHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUdqQyxPQUFPLEVBQ0gsMkJBQTJCLEVBQzNCLHNCQUFzQixHQUN6QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsU0FBUyxFQUFvQixNQUFNLHVCQUF1QixDQUFDO0FBRW5FLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFckMscUZBQXFGO0FBQ3JGLHNGQUFzRjtBQUN0RixnQ0FBZ0M7QUFDaEMsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsS0FBSyxFQUN4QyxNQUE4QixFQUM5QixLQUFhLEVBQ2IsS0FBYSxFQUNRLEVBQUU7SUFDdkIsSUFBSSxDQUFDO1FBQ0QsTUFBTSxRQUFRLEdBQUcsTUFBTSxTQUFTLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUM1QyxVQUFVLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDakIsV0FBVyxDQUFDLEdBQUcsRUFBRTtvQkFDYixLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO29CQUMxRCxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLO3dCQUN6QywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQ3BELEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLFFBQVE7d0JBQzVDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDO29CQUMxQixLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTO3dCQUM3QyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQztvQkFDM0IsS0FBSyxD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WUFDekIsV0FBVyxDQUFDLEdBQUcsRUFBRTtnQkFDYixLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO1lBQzNELENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQzthQUFNLENBQUM7WUFDSixXQUFXLENBQUMsR0FBRyxFQUFFO2dCQUNiLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO2dCQUM3RCxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLEtBQUssS0FBSyxNQUFNLEVBQUUsQ0FBQztvQkFDM0QsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztnQkFDN0QsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxJQUFJLEdBQUcsTUFBTSx1QkFBdUIsQ0FDdEMsTUFBTSxFQUNOLE1BQU0sQ0FBQyxLQUFLLEVBQ1osS0FBSyxDQUNSLENBQUM7WUFDRixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQzNCLE9BQU87WUFDWCxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLDZCQUE2QixDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDbkUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtydW5JbkFjdGlvbn0gZnJvbSAnbW9ieCc7XG5pbXBvcnQgdHlwZSB7VFJQQ0NsaWVudH0gZnJvbSAnQHRycGMvY2xpZW50JztcbmltcG9ydCB0eXBlIHtUQXBwUm91dGVyfSBmcm9tICdAZGJjdHgvY29yZSc7XG5pbXBvcnQge1xuICAgIHBhcnNlUG9zdEludHJvc3BlY3Rpb25TdGFnZSxcbiAgICBwYXJzZVBvc3RTYW1wbGluZ0xhYmVsLFxufSBmcm9tICdAZGJjdHgvY29tbW9uJztcbmltcG9ydCB7c3RyZWFtSm9iLCB0eXBlIFRKb2JTbmFwc2hvdH0gZnJvbSAnLi4vbGliL3N0cmVhbS1qb2IubWpzJztcbmltcG9ydCB0eXBlIHtUU3RvcmV9IGZyb20gJy4uL3N0b3JlLm1qcyc7XG5pbXBvcnQge2xvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyLm1qcyc7XG5cbi8vIFN0cmVhbXMgYSBwb3N0LWludHJvc3BlY3Rpb24gam9iIHRvIGNvbXBsZXRpb24gYW5kIGJpbmRzIHByb2dyZXNzICsgdGVybWluYWwgc3RhdGVcbi8vIG9udG8gc3RvcmUuc3RlcHMuaW5nZXN0aW9uLnBvc3RJbnRyb3NwZWN0aW9uLiBSZXR1cm5zIHRoZSBmaW5hbCBzbmFwc2hvdCBzbyBjYWxsZXJzXG4vLyBjYW4gcmVhY3QgdG8gc3VjY2Vzcy9mYWlsdXJlLlxuZXhwb3J0IGNvbnN0IHN0cmVhbVBvc3RJbnRyb3NwZWN0aW9uID0gYXN5bmMgKFxuICAgIGF1dGhlZDogVFJQQ0NsaWVudDxUQXBwUm91dGVyPixcbiAgICBqb2JJZDogc3RyaW5nLFxuICAgIHN0b3JlOiBUU3RvcmUsXG4pOiBQcm9taXNlPFRKb2JTbmFwc2hvdD4gPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHNuYXBzaG90ID0gYXdhaXQgc3RyZWFtSm9iKGF1dGhlZCwgam9iSWQsIHtcbiAgICAgICAgICAgIG9uUHJvZ3Jlc3M6IChzbmFwKSA9PiB7XG4gICAgICAgICAgICAgICAgcnVuSW5BY3Rpb24oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGVwcy5pbmdlc3Rpb24ucG9zdEludHJvc3BlY3Rpb24uc3RhdGUgPSAncnVubmluZyc7XG4gICAgICAgICAgICAgICAgICAgIHN0b3JlLnN0ZXBzLmluZ2VzdGlvbi5wb3N0SW50cm9zcGVjdGlvbi5zdGFnZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZVBvc3RJbnRyb3NwZWN0aW9uU3RhZ2Uoc25hcC5wcm9ncmVzc0xhYmVsKTtcbiAgICAgICAgICAgICAgICAgICAgc3RvcmUuc3RlcHMuaW5nZXN0aW9uLnBvc3RJbnRyb3NwZWN0aW9uLnRva2Vuc0luID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNuYXAudG9rZW5zSW4gPz8gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgc3RvcmUuc3RlcHMuaW5nZXN0aW9uLnBvc3RJbnRyb3NwZWN0aW9uLnRva2Vuc091dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBzbmFwLnRva2Vuc091dCA/PyBudWxsO1xuICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGVwcy5pbmdlc3Rpb24ucG9zdEludHJvc3BlY3Rpb24uY29sdW1uc0RvbmUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgc25hcC5jb2x1bW5zRG9uZSA/PyBudWxsO1xuICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGVwcy5pbmdlc3Rpb24ucG9zdEludHJvc3BlY3Rpb24uY29sdW1uc1RvdGFsID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNuYXAuY29sdW1uc1RvdGFsID8/IG51bGw7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcblxuICAgICAgICBydW5JbkFjdGlvbigoKSA9PiB7XG4gICAgICAgICAgICBpZiAoc25hcHNob3Quc3RhdHVzID09PSAnZmFpbGVkJykge1xuICAgICAgICAgICAgICAgIHN0b3JlLnN0ZXBzLmluZ2VzdGlvbi5wb3N0SW50cm9zcGVjdGlvbi5zdGF0ZSA9ICdlcnJvcic7XG4gICAgICAgICAgICAgICAgc3RvcmUuc3RlcHMuaW5nZXN0aW9uLnBvc3RJbnRyb3NwZWN0aW9uLmVycm9yID1cbiAgICAgICAgICAgICAgICAgICAgc25hcHNob3QuZXJyb3IgPz8gJ3Bvc3QtaW50cm9zcGVjdGlvbiBmYWlsZWQnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdG9yZS5zdGVwcy5pbmdlc3Rpb24ucG9zdEludHJvc3BlY3Rpb24uc3RhdGUgPSAnZG9uZSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBzbmFwc2hvdDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgY29uc3QgbXNnID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IFN0cmluZyhlcnIpO1xuICAgICAgICBydW5JbkFjdGlvbigoKSA9PiB7XG4gICAgICAgICAgICBzdG9yZS5zdGVwcy5pbmdlc3Rpb24ucG9zdEludHJvc3BlY3Rpb24uc3RhdGUgPSAnZXJyb3InO1xuICAgICAgICAgICAgc3RvcmUuc3RlcHMuaW5nZXN0aW9uLnBvc3RJbnRyb3NwZWN0aW9uLmVycm9yID0gbXNnO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbn07XG5cbi8vIFRyaWdnZXJzIHBvc3Qtc2FtcGxpbmcgKHNlcnZlciBza2lwcyByZS1lbnF1ZXVlIGlmIGFscmVhZHkgYW5hbHl6ZWQpIGFuZCBiaW5kc1xuLy8gcHJvZ3Jlc3MgKyB0ZXJtaW5hbCBzdGF0ZSBvbnRvIHN0b3JlLnN0ZXBzLmluZ2VzdGlvbi5wb3N0U2FtcGxpbmcuXG5leHBvcnQgY29uc3QgZGlzcGF0Y2hBbmRTdHJlYW1Qb3N0U2FtcGxpbmcgPSBhc3luYyAoXG4gICAgYXV0aGVkOiBUUlBDQ2xpZW50PFRBcHBSb3V0ZXI+LFxuICAgIHJldmlzaW9uSWQ6IHN0cmluZyxcbiAgICBzdG9yZTogVFN0b3JlLFxuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgcnVuSW5BY3Rpb24oKCkgPT4ge1xuICAgICAgICBpZiAoc3RvcmUuc3RlcHMuaW5nZXN0aW9uLnBvc3RTYW1wbGluZy5zdGF0ZSA9PT0gJ2lkbGUnKSB7XG4gICAgICAgICAgICBzdG9yZS5zdGVwcy5pbmdlc3Rpb24ucG9zdFNhbXBsaW5nLnN0YXRlID0gJ3F1ZXVlZCc7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGF1dGhlZC5yZXZpc2lvbnMucnVuUG9zdFNhbXBsaW5nLm11dGF0ZSh7cmV2aXNpb25JZH0pO1xuXG4gICAgaWYgKHJlc3VsdC5hbHJlYWR5QW5hbHl6ZWQpIHtcbiAgICAgICAgcnVuSW5BY3Rpb24oKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYyA9IHN0b3JlLnN0ZXBzLmluZ2VzdGlvbi5wb3N0U2FtcGxpbmc7XG4gICAgICAgICAgICBjLnN0YXRlID0gJ2RvbmUnO1xuICAgICAgICAgICAgYy5qb2JJZCA9IG51bGw7XG4gICAgICAgICAgICBjLnJldXNlZCA9IHRydWU7XG4gICAgICAgICAgICBjLmNvdW50cy50b3RhbFRhYmxlcyA9IHJlc3VsdC5jb3VudHMudG90YWxUYWJsZXM7XG4gICAgICAgICAgICBjLmNvdW50cy5mb3JlaWduS2V5c0ZvdW5kID0gcmVzdWx0LmNvdW50cy5mb3JlaWduS2V5cztcbiAgICAgICAgfSk7XG4gICAgICAgIGxvZ2dlci5pbmZvKFxuICAgICAgICAgICAgYHBvc3Qtc2FtcGxpbmcgcmV1c2VkIGZvciByZXZpc2lvbj0ke3JldmlzaW9uSWR9ICh0YWJsZXM9JHtyZXN1bHQuY291bnRzLnRvdGFsVGFibGVzfSBma3M9JHtyZXN1bHQuY291bnRzLmZvcmVpZ25LZXlzfSlgLFxuICAgICAgICApO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qge2pvYklkfSA9IHJlc3VsdDtcbiAgICBydW5JbkFjdGlvbigoKSA9PiB7XG4gICAgICAgIHN0b3JlLnN0ZXBzLmluZ2VzdGlvbi5wb3N0U2FtcGxpbmcuam9iSWQgPSBqb2JJZDtcbiAgICAgICAgc3RvcmUuc3RlcHMuaW5nZXN0aW9uLnBvc3RTYW1wbGluZy5zdGF0ZSA9ICdydW5uaW5nJztcbiAgICB9KTtcblxuICAgIGNvbnN0IHNuYXBzaG90ID0gYXdhaXQgc3RyZWFtSm9iKGF1dGhlZCwgam9iSWQsIHtcbiAgICAgICAgb25Qcm9ncmVzczogKHNuYXApID0+IHtcbiAgICAgICAgICAgIHJ1bkluQWN0aW9uKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjID0gc3RvcmUuc3RlcHMuaW5nZXN0aW9uLnBvc3RTYW1wbGluZztcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0ID0gcGFyc2VQb3N0U2FtcGxpbmdMYWJlbChzbmFwLnByb2dyZXNzTGFiZWwsIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhZ2U6IGMuc3RhZ2UsXG4gICAgICAgICAgICAgICAgICAgIHRvdGFsVGFibGVzOiBjLmNvdW50cy50b3RhbFRhYmxlcyxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVkVGFibGVzOiBjLmNvdW50cy5kZXNjcmliZWRUYWJsZXMsXG4gICAgICAgICAgICAgICAgICAgIGVtYmVkZGVkVGFibGVzOiBjLmNvdW50cy5lbWJlZGRlZFRhYmxlcyxcbiAgICAgICAgICAgICAgICAgICAgdG90YWxFbWJlZGRpbmdzOiBjLmNvdW50cy50b3RhbEVtYmVkZGluZ3MsXG4gICAgICAgICAgICAgICAgICAgIHNjYW5uZWRUYWJsZXM6IGMuY291bnRzLnNjYW5uZWRUYWJsZXMsXG4gICAgICAgICAgICAgICAgICAgIGZvcmVpZ25LZXlzRm91bmQ6IGMuY291bnRzLmZvcmVpZ25LZXlzRm91bmQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKG5leHQuc3RhZ2UgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgYy5zdGFnZSA9IG5leHQuc3RhZ2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChuZXh0LnRvdGFsVGFibGVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgYy5jb3VudHMudG90YWxUYWJsZXMgPSBuZXh0LnRvdGFsVGFibGVzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAobmV4dC5kZXNjcmliZWRUYWJsZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBjLmNvdW50cy5kZXNjcmliZWRUYWJsZXMgPSBuZXh0LmRlc2NyaWJlZFRhYmxlcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG5leHQuZW1iZWRkZWRUYWJsZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBjLmNvdW50cy5lbWJlZGRlZFRhYmxlcyA9IG5leHQuZW1iZWRkZWRUYWJsZXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChuZXh0LnRvdGFsRW1iZWRkaW5ncyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGMuY291bnRzLnRvdGFsRW1iZWRkaW5ncyA9IG5leHQudG90YWxFbWJlZGRpbmdzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAobmV4dC5zY2FubmVkVGFibGVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgYy5jb3VudHMuc2Nhbm5lZFRhYmxlcyA9IG5leHQuc2Nhbm5lZFRhYmxlcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG5leHQuZm9yZWlnbktleXNGb3VuZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGMuY291bnRzLmZvcmVpZ25LZXlzRm91bmQgPSBuZXh0LmZvcmVpZ25LZXlzRm91bmQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBydW5JbkFjdGlvbigoKSA9PiB7XG4gICAgICAgIGlmIChzbmFwc2hvdC5zdGF0dXMgPT09ICdmYWlsZWQnKSB7XG4gICAgICAgICAgICBzdG9yZS5zdGVwcy5pbmdlc3Rpb24ucG9zdFNhbXBsaW5nLnN0YXRlID0gJ2Vycm9yJztcbiAgICAgICAgICAgIHN0b3JlLnN0ZXBzLmluZ2VzdGlvbi5wb3N0U2FtcGxpbmcuZXJyb3IgPVxuICAgICAgICAgICAgICAgIHNuYXBzaG90LmVycm9yID8/ICdwb3N0LXNhbXBsaW5nIGpvYiBmYWlsZWQnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3RvcmUuc3RlcHMuaW5nZXN0aW9uLnBvc3RTYW1wbGluZy5zdGF0ZSA9ICdkb25lJztcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHNuYXBzaG90LnN0YXR1cyA9PT0gJ2ZhaWxlZCcpIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgYHBvc3Qtc2FtcGxpbmcgam9iIGZhaWxlZDogJHtzbmFwc2hvdC5lcnJvciA/PyAndW5rbm93bid9YCxcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBsb2dnZXIuaW5mbyhgcG9zdC1zYW1wbGluZyBkb25lIGZvciByZXZpc2lvbj0ke3JldmlzaW9uSWR9YCk7XG4gICAgfVxufTtcblxuLy8gU2VxdWVudGlhbCB0YWlsIG9mIGEgc2VydmVyLXNpZGUgcmV2aXNpb246IHBvc3QtaW50cm9zcGVjdGlvbiBmaXJzdCBpZiBzdGlsbCBydW5uaW5nLFxuLy8gdGhlbiBwb3N0LXNhbXBsaW5nLiBVc2VkIGJ5IHRoZSBsaXN0LXN1YmNvbW1hbmQgZmxvdyBhZnRlciB0aGUgdXNlciBwaWNrcyBhXG4vLyBkYXRhYmFzZSB0byBtb25pdG9yLiBDYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIHByZS1maWxsaW5nIHRoZSB1cHN0cmVhbVxuLy8gc3RvcmUgc3RlcHMgKGludHJvc3BlY3Rpb24vc2FtcGxpbmcvc2FtcGxlcykgdG8gdGhlaXIgJ3NraXBwZWQnIHN0YXRlcy5cbi8vXG4vLyBBbHdheXMgY2FsbHMgZGlzcGF0Y2hBbmRTdHJlYW1Qb3N0U2FtcGxpbmcgZXZlbiB3aGVuIHBvc3Qtc2FtcGxpbmcgaXMgYWxyZWFkeSBjb21wbGV0ZVxuLy8gc2VydmVyLXNpZGUg4oCUIHJ1blBvc3RTYW1wbGluZyBpcyBpZGVtcG90ZW50IChgYWxyZWFkeUFuYWx5emVkOiB0cnVlYCBzaG9ydC1jaXJjdWl0KVxuLy8gYW5kIGlzIHRoZSBvbmx5IHdheSB0byBwb3B1bGF0ZSB0aGUgcmVsYXRpb25zL2ZvcmVpZ24ta2V5cyBjb3VudHMgdGhlIFVJXG4vLyByZW5kZXJzLiBTa2lwcGluZyBpdCBoZXJlIHdvdWxkIGxlYXZlIHRoZSBhbmFseXplIGxpbmUgc2hvd2luZyBcIjAgdGFibGVzLFxuLy8gMCBmb3JlaWduIGtleXNcIi5cbmV4cG9ydCBjb25zdCB0YWlsUmV2aXNpb24gPSBhc3luYyAoYXJnczoge1xuICAgIGF1dGhlZDogVFJQQ0NsaWVudDxUQXBwUm91dGVyPjtcbiAgICByZXZpc2lvbklkOiBzdHJpbmc7XG4gICAgc3RvcmU6IFRTdG9yZTtcbiAgICBwb3N0SW50cm9zcGVjdGlvbkRvbmU6IGJvb2xlYW47XG59KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgY29uc3Qge2F1dGhlZCwgcmV2aXNpb25JZCwgc3RvcmUsIHBvc3RJbnRyb3NwZWN0aW9uRG9uZX0gPSBhcmdzO1xuXG4gICAgaWYgKCFwb3N0SW50cm9zcGVjdGlvbkRvbmUpIHtcbiAgICAgICAgLy8gRnVubmVsIHRocm91Z2ggZW5zdXJlUG9zdEludHJvc3BlY3Rpb24gKHJhdGhlciB0aGFuIGRlcml2aW5nIHRoZSBkZXRlcm1pbmlzdGljXG4gICAgICAgIC8vIGpvYiBJRCBpbmxpbmUpIHNvIHRoZSBzZXJ2ZXIgY2FuIHdpcGUgYW55IHByaW9yIGZhaWxlZCBwb3N0LWludHJvc3BlY3Rpb24gYW5kXG4gICAgICAgIC8vIGhhbmQgYmFjayBhIGZyZXNoIGpvYiBJRC4gV2l0aG91dCB0aGlzLCBhIGZhaWxlZCBwb3N0LWludHJvc3BlY3Rpb24gY2F1Z2h0IGJ5XG4gICAgICAgIC8vIHRoZSBsaXN0IGZsb3cgd291bGQganVzdCBzdHJlYW0gYmFjayB0aGUgc2FtZSBkZWFkIHNuYXBzaG90LlxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBhdXRoZWQucmV2aXNpb25zLmVuc3VyZVBvc3RJbnRyb3NwZWN0aW9uLm11dGF0ZSh7XG4gICAgICAgICAgICByZXZpc2lvbklkLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHJlc3VsdC5hbHJlYWR5RW5yaWNoZWQpIHtcbiAgICAgICAgICAgIHJ1bkluQWN0aW9uKCgpID0+IHtcbiAgICAgICAgICAgICAgICBzdG9yZS5zdGVwcy5pbmdlc3Rpb24ucG9zdEludHJvc3BlY3Rpb24uc3RhdGUgPSAnZG9uZSc7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJ1bkluQWN0aW9uKCgpID0+IHtcbiAgICAgICAgICAgICAgICBzdG9yZS5zdGVwcy5pbmdlc3Rpb24ucG9zdEludHJvc3BlY3Rpb24uam9iSWQgPSByZXN1bHQuam9iSWQ7XG4gICAgICAgICAgICAgICAgaWYgKHN0b3JlLnN0ZXBzLmluZ2VzdGlvbi5wb3N0SW50cm9zcGVjdGlvbi5zdGF0ZSA9PT0gJ2lkbGUnKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0b3JlLnN0ZXBzLmluZ2VzdGlvbi5wb3N0SW50cm9zcGVjdGlvbi5zdGF0ZSA9ICdxdWV1ZWQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3Qgc25hcCA9IGF3YWl0IHN0cmVhbVBvc3RJbnRyb3NwZWN0aW9uKFxuICAgICAgICAgICAgICAgIGF1dGhlZCxcbiAgICAgICAgICAgICAgICByZXN1bHQuam9iSWQsXG4gICAgICAgICAgICAgICAgc3RvcmUsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKHNuYXAuc3RhdHVzID09PSAnZmFpbGVkJykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGF3YWl0IGRpc3BhdGNoQW5kU3RyZWFtUG9zdFNhbXBsaW5nKGF1dGhlZCwgcmV2aXNpb25JZCwgc3RvcmUpO1xufTtcbiJdfQ==
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Pool } from 'pg';
|
|
2
|
+
export type TCheckConstraintInfo = {
|
|
3
|
+
relation_name: string;
|
|
4
|
+
name: string;
|
|
5
|
+
expression: string;
|
|
6
|
+
is_valid: boolean;
|
|
7
|
+
};
|
|
8
|
+
export declare const fetchPublicCheckConstraints: (pool: Pool) => Promise<TCheckConstraintInfo[]>;
|
|
9
|
+
//# sourceMappingURL=check-constraints.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-constraints.d.mts","sourceRoot":"./src/","sources":["db/check-constraints.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,IAAI,CAAC;AAE7B,MAAM,MAAM,oBAAoB,GAAG;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,2BAA2B,GACpC,MAAM,IAAI,KACX,OAAO,CAAC,oBAAoB,EAAE,CAgBhC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export const fetchPublicCheckConstraints = async (pool) => {
|
|
2
|
+
const result = await pool.query(`
|
|
3
|
+
SELECT
|
|
4
|
+
t.relname AS relation_name,
|
|
5
|
+
con.conname AS name,
|
|
6
|
+
pg_get_constraintdef(con.oid, true) AS expression,
|
|
7
|
+
con.convalidated AS is_valid
|
|
8
|
+
FROM pg_catalog.pg_constraint con
|
|
9
|
+
JOIN pg_catalog.pg_class t ON t.oid = con.conrelid
|
|
10
|
+
JOIN pg_catalog.pg_namespace n ON n.oid = t.relnamespace
|
|
11
|
+
WHERE n.nspname = 'public'
|
|
12
|
+
AND con.contype = 'c'
|
|
13
|
+
ORDER BY t.relname, con.conname
|
|
14
|
+
`);
|
|
15
|
+
return result.rows;
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stY29uc3RyYWludHMubWpzIiwic291cmNlUm9vdCI6Ii4vc3JjLyIsInNvdXJjZXMiOlsiZGIvY2hlY2stY29uc3RyYWludHMubXRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLEtBQUssRUFDNUMsSUFBVSxFQUNxQixFQUFFO0lBQ2pDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBdUI7Ozs7Ozs7Ozs7OztLQVlyRCxDQUFDLENBQUM7SUFFSCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDdkIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1Bvb2x9IGZyb20gJ3BnJztcblxuZXhwb3J0IHR5cGUgVENoZWNrQ29uc3RyYWludEluZm8gPSB7XG4gICAgcmVsYXRpb25fbmFtZTogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBleHByZXNzaW9uOiBzdHJpbmc7XG4gICAgaXNfdmFsaWQ6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgY29uc3QgZmV0Y2hQdWJsaWNDaGVja0NvbnN0cmFpbnRzID0gYXN5bmMgKFxuICAgIHBvb2w6IFBvb2wsXG4pOiBQcm9taXNlPFRDaGVja0NvbnN0cmFpbnRJbmZvW10+ID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwb29sLnF1ZXJ5PFRDaGVja0NvbnN0cmFpbnRJbmZvPihgXG4gICAgICAgIFNFTEVDVFxuICAgICAgICAgICAgdC5yZWxuYW1lIEFTIHJlbGF0aW9uX25hbWUsXG4gICAgICAgICAgICBjb24uY29ubmFtZSBBUyBuYW1lLFxuICAgICAgICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYoY29uLm9pZCwgdHJ1ZSkgQVMgZXhwcmVzc2lvbixcbiAgICAgICAgICAgIGNvbi5jb252YWxpZGF0ZWQgQVMgaXNfdmFsaWRcbiAgICAgICAgRlJPTSBwZ19jYXRhbG9nLnBnX2NvbnN0cmFpbnQgY29uXG4gICAgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19jbGFzcyB0IE9OIHQub2lkID0gY29uLmNvbnJlbGlkXG4gICAgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgbiBPTiBuLm9pZCA9IHQucmVsbmFtZXNwYWNlXG4gICAgICAgIFdIRVJFIG4ubnNwbmFtZSA9ICdwdWJsaWMnXG4gICAgICAgICAgICBBTkQgY29uLmNvbnR5cGUgPSAnYydcbiAgICAgICAgT1JERVIgQlkgdC5yZWxuYW1lLCBjb24uY29ubmFtZVxuICAgIGApO1xuXG4gICAgcmV0dXJuIHJlc3VsdC5yb3dzO1xufTtcbiJdfQ==
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Pool } from 'pg';
|
|
2
|
+
export type TCustomTypeKind = 'composite' | 'domain';
|
|
3
|
+
export type TDomainInfo = {
|
|
4
|
+
kind: 'domain';
|
|
5
|
+
name: string;
|
|
6
|
+
base_type: string;
|
|
7
|
+
not_null: boolean;
|
|
8
|
+
default_expression: string | null;
|
|
9
|
+
check_constraints: readonly {
|
|
10
|
+
name: string;
|
|
11
|
+
expression: string;
|
|
12
|
+
}[];
|
|
13
|
+
};
|
|
14
|
+
export type TCompositeAttribute = {
|
|
15
|
+
name: string;
|
|
16
|
+
type: string;
|
|
17
|
+
position: number;
|
|
18
|
+
};
|
|
19
|
+
export type TCompositeInfo = {
|
|
20
|
+
kind: 'composite';
|
|
21
|
+
name: string;
|
|
22
|
+
attributes: readonly TCompositeAttribute[];
|
|
23
|
+
};
|
|
24
|
+
export type TCustomTypeInfo = TDomainInfo | TCompositeInfo;
|
|
25
|
+
export declare const fetchPublicCustomTypes: (pool: Pool) => Promise<TCustomTypeInfo[]>;
|
|
26
|
+
//# sourceMappingURL=custom-types.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-types.d.mts","sourceRoot":"./src/","sources":["db/custom-types.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,IAAI,CAAC;AAE7B,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,QAAQ,CAAC;AAErD,MAAM,MAAM,WAAW,GAAG;IACtB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,iBAAiB,EAAE,SAAS;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAC,EAAE,CAAC;CACpE,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IACzB,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,SAAS,mBAAmB,EAAE,CAAC;CAC9C,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,cAAc,CAAC;AAe3D,eAAO,MAAM,sBAAsB,GAC/B,MAAM,IAAI,KACX,OAAO,CAAC,eAAe,EAAE,CA8D3B,CAAC"}
|