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
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
const quoteIdent = (name) => `"${name.replace(/"/g, '""')}"`;
|
|
2
|
+
const LOW_CARDINALITY_THRESHOLD = 256;
|
|
3
|
+
const LOW_CARDINALITY_LIMIT = 256;
|
|
4
|
+
const HIGH_CARDINALITY_LIMIT = 64;
|
|
5
|
+
const BERNOULLI_OVERSAMPLE_FACTOR = 10;
|
|
6
|
+
const sampleDistinct = async (pool, tableName, columnExpr, limit) => {
|
|
7
|
+
const sql = `SELECT DISTINCT ${columnExpr}::text AS val FROM ${quoteIdent(tableName)} WHERE ${columnExpr} IS NOT NULL LIMIT $1`;
|
|
8
|
+
const result = await pool.query(sql, [limit]);
|
|
9
|
+
return result.rows.map((r) => r.val);
|
|
10
|
+
};
|
|
11
|
+
const sampleBernoulli = async (pool, tableName, columnExpr, estimatedRowCount, limit) => {
|
|
12
|
+
const percentage = Math.min(100, (limit / Math.max(estimatedRowCount, 1)) *
|
|
13
|
+
100 *
|
|
14
|
+
BERNOULLI_OVERSAMPLE_FACTOR);
|
|
15
|
+
const sql = `SELECT DISTINCT ${columnExpr}::text AS val FROM ${quoteIdent(tableName)} TABLESAMPLE BERNOULLI($1) WHERE ${columnExpr} IS NOT NULL LIMIT $2`;
|
|
16
|
+
const result = await pool.query(sql, [percentage, limit]);
|
|
17
|
+
return result.rows.map((r) => r.val);
|
|
18
|
+
};
|
|
19
|
+
const samplePlainLimit = async (pool, tableName, columnExpr, limit) => {
|
|
20
|
+
const sql = `SELECT ${columnExpr}::text AS val FROM ${quoteIdent(tableName)} WHERE ${columnExpr} IS NOT NULL LIMIT $1`;
|
|
21
|
+
const result = await pool.query(sql, [limit]);
|
|
22
|
+
return result.rows.map((r) => r.val);
|
|
23
|
+
};
|
|
24
|
+
const supportsTableSample = (kind) => kind === 'table' ||
|
|
25
|
+
kind === 'partitioned_table' ||
|
|
26
|
+
kind === 'materialized_view';
|
|
27
|
+
export const sampleColumn = async (pool, tableName, columnName, estimatedDistinct, estimatedRowCount, relationKind) => {
|
|
28
|
+
const columnExpr = quoteIdent(columnName);
|
|
29
|
+
const isLowCardinality = estimatedDistinct > 0 && estimatedDistinct < LOW_CARDINALITY_THRESHOLD;
|
|
30
|
+
if (isLowCardinality) {
|
|
31
|
+
const values = await sampleDistinct(pool, tableName, columnExpr, LOW_CARDINALITY_LIMIT);
|
|
32
|
+
return { column_name: columnName, strategy: 'distinct', values };
|
|
33
|
+
}
|
|
34
|
+
const limit = HIGH_CARDINALITY_LIMIT;
|
|
35
|
+
const values = supportsTableSample(relationKind) && estimatedRowCount > 0
|
|
36
|
+
? await sampleBernoulli(pool, tableName, columnExpr, estimatedRowCount, limit)
|
|
37
|
+
: await samplePlainLimit(pool, tableName, columnExpr, limit);
|
|
38
|
+
return { column_name: columnName, strategy: 'random', values };
|
|
39
|
+
};
|
|
40
|
+
export const sampleCompositeSubField = async (pool, tableName, columnName, subFieldName, estimatedDistinct, estimatedRowCount, relationKind) => {
|
|
41
|
+
const columnExpr = `(${quoteIdent(columnName)}).${quoteIdent(subFieldName)}`;
|
|
42
|
+
const isLowCardinality = estimatedDistinct > 0 && estimatedDistinct < LOW_CARDINALITY_THRESHOLD;
|
|
43
|
+
if (isLowCardinality) {
|
|
44
|
+
const values = await sampleDistinct(pool, tableName, columnExpr, LOW_CARDINALITY_LIMIT);
|
|
45
|
+
return {
|
|
46
|
+
column_name: `${columnName}.${subFieldName}`,
|
|
47
|
+
strategy: 'distinct',
|
|
48
|
+
values,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
const limit = HIGH_CARDINALITY_LIMIT;
|
|
52
|
+
const values = supportsTableSample(relationKind) && estimatedRowCount > 0
|
|
53
|
+
? await sampleBernoulli(pool, tableName, columnExpr, estimatedRowCount, limit)
|
|
54
|
+
: await samplePlainLimit(pool, tableName, columnExpr, limit);
|
|
55
|
+
return {
|
|
56
|
+
column_name: `${columnName}.${subFieldName}`,
|
|
57
|
+
strategy: 'random',
|
|
58
|
+
values,
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
export const fetchCompositeSubFields = async (pool, typeName) => {
|
|
62
|
+
const result = await pool.query(`
|
|
63
|
+
SELECT a.attname AS name, format_type(a.atttypid, a.atttypmod) AS data_type
|
|
64
|
+
FROM pg_type t
|
|
65
|
+
JOIN pg_attribute a ON a.attrelid = t.typrelid
|
|
66
|
+
WHERE t.typname = $1
|
|
67
|
+
AND a.attnum > 0
|
|
68
|
+
AND NOT a.attisdropped
|
|
69
|
+
ORDER BY a.attnum
|
|
70
|
+
`, [typeName]);
|
|
71
|
+
return result.rows;
|
|
72
|
+
};
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FtcGxlLm1qcyIsInNvdXJjZVJvb3QiOiIuL3NyYy8iLCJzb3VyY2VzIjpbImRiL3NhbXBsZS5tdHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZUEsTUFBTSxVQUFVLEdBQUcsQ0FBQyxJQUFZLEVBQVUsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUU3RSxNQUFNLHlCQUF5QixHQUFHLEdBQUcsQ0FBQztBQUN0QyxNQUFNLHFCQUFxQixHQUFHLEdBQUcsQ0FBQztBQUNsQyxNQUFNLHNCQUFzQixHQUFHLEVBQUUsQ0FBQztBQUNsQyxNQUFNLDJCQUEyQixHQUFHLEVBQUUsQ0FBQztBQUV2QyxNQUFNLGNBQWMsR0FBRyxLQUFLLEVBQ3hCLElBQVUsRUFDVixTQUFpQixFQUNqQixVQUFrQixFQUNsQixLQUFhLEVBQ2EsRUFBRTtJQUM1QixNQUFNLEdBQUcsR0FBRyxtQkFBbUIsVUFBVSxzQkFBc0IsVUFBVSxDQUFDLFNBQVMsQ0FBQyxVQUFVLFVBQVUsdUJBQXVCLENBQUM7SUFDaEksTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFnQixHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzdELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN6QyxDQUFDLENBQUM7QUFFRixNQUFNLGVBQWUsR0FBRyxLQUFLLEVBQ3pCLElBQVUsRUFDVixTQUFpQixFQUNqQixVQUFrQixFQUNsQixpQkFBeUIsRUFDekIsS0FBYSxFQUNhLEVBQUU7SUFDNUIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FDdkIsR0FBRyxFQUNILENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFD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LENBQUMsSUFBSSxpQkFBaUIsR0FBRyx5QkFBeUIsQ0FBQztJQUUzRSxJQUFJLGdCQUFnQixFQUFFLENBQUM7UUFDbkIsTUFBTSxNQUFNLEdBQUcsTUFBTSxjQUFjLENBQy9CLElBQUksRUFDSixTQUFTLEVBQ1QsVUFBVSxFQUNWLHFCQUFxQixDQUN4QixDQUFDO1FBQ0YsT0FBTztZQUNILFdBQVcsRUFBRSxHQUFHLFVBQVUsSUFBSSxZQUFZLEVBQUU7WUFDNUMsUUFBUSxFQUFFLFVBQVU7WUFDcEIsTUFBTTtTQUNULENBQUM7SUFDTixDQUFDO0lBRUQsTUFBTSxLQUFLLEdBQUcsc0JBQXNCLENBQUM7SUFFckMsTUFBTSxNQUFNLEdBQ1IsbUJBQW1CLENBQUMsWUFBWSxDQUFDLElBQUksaUJBQWlCLEdBQUcsQ0FBQztRQUN0RCxDQUFDLENBQUMsTUFBTSxlQUFlLENBQ2pCLElBQUksRUFDSixTQUFTLEVBQ1QsVUFBVSxFQUNWLGlCQUFpQixFQUNqQixLQUFLLENBQ1I7UUFDSCxDQUFDLENBQUMsTUFBTSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUVyRSxPQUFPO1FBQ0gsV0FBVyxFQUFFLEdBQUcsVUFBVSxJQUFJLFlBQVksRUFBRTtRQUM1QyxRQUFRLEVBQUUsUUFBUTtRQUNsQixNQUFNO0tBQ1QsQ0FBQztBQUNOLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLEtBQUssRUFDeEMsSUFBVSxFQUNWLFFBQWdCLEVBQ3NCLEVBQUU7SUFDeEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUMzQjs7Ozs7Ozs7U0FRQyxFQUNELENBQUMsUUFBUSxDQUFDLENBQ2IsQ0FBQztJQUNGLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQztBQUN2QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7UG9vbH0gZnJvbSAncGcnO1xuXG5leHBvcnQgdHlwZSBUU2FtcGxlU3RyYXRlZ3kgPSAnZGlzdGluY3QnIHwgJ3JhbmRvbSc7XG5cbmV4cG9ydCB0eXBlIFRDb2x1bW5TYW1wbGUgPSB7XG4gICAgcmVhZG9ubHkgY29sdW1uX25hbWU6IHN0cmluZztcbiAgICByZWFkb25seSBzdHJhdGVneTogVFNhbXBsZVN0cmF0ZWd5O1xuICAgIHJlYWRvbmx5IHZhbHVlczogcmVhZG9ubHkgc3RyaW5nW107XG59O1xuXG5leHBvcnQgdHlwZSBUQ29tcG9zaXRlU3ViRmllbGQgPSB7XG4gICAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGRhdGFfdHlwZTogc3RyaW5nO1xufTtcblxuY29uc3QgcXVvdGVJZGVudCA9IChuYW1lOiBzdHJpbmcpOiBzdHJpbmcgPT4gYFwiJHtuYW1lLnJlcGxhY2UoL1wiL2csICdcIlwiJyl9XCJgO1xuXG5jb25zdCBMT1dfQ0FSRElOQUxJVFlfVEhSRVNIT0xEID0gMjU2O1xuY29uc3QgTE9XX0NBUkRJTkFMSVRZX0xJTUlUID0gMjU2O1xuY29uc3QgSElHSF9DQVJESU5BTElUWV9MSU1JVCA9IDY0O1xuY29uc3QgQkVSTk9VTExJX09WRVJTQU1QTEVfRkFDVE9SID0gMTA7XG5cbmNvbnN0IHNhbXBsZURpc3RpbmN0ID0gYXN5bmMgKFxuICAgIHBvb2w6IFBvb2wsXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgY29sdW1uRXhwcjogc3RyaW5nLFxuICAgIGxpbWl0OiBudW1iZXIsXG4pOiBQcm9taXNlPHJlYWRvbmx5IHN0cmluZ1tdPiA9PiB7XG4gICAgY29uc3Qgc3FsID0gYFNFTEVDVCBESVNUSU5DVCAke2NvbHVtbkV4cHJ9Ojp0ZXh0IEFTIHZhbCBGUk9NICR7cXVvdGVJZGVudCh0YWJsZU5hbWUpfSBXSEVSRSAke2NvbHVtbkV4cHJ9IElTIE5PVCBOVUxMIExJTUlUICQxYDtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwb29sLnF1ZXJ5PHt2YWw6IHN0cmluZ30+KHNxbCwgW2xpbWl0XSk7XG4gICAgcmV0dXJuIHJlc3VsdC5yb3dzLm1hcCgocikgPT4gci52YWwpO1xufTtcblxuY29uc3Qgc2FtcGxlQmVybm91bGxpID0gYXN5bmMgKFxuICAgIHBvb2w6IFBvb2wsXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgY29sdW1uRXhwcjogc3RyaW5nLFxuICAgIGVzdGltYXRlZFJvd0NvdW50OiBudW1iZXIsXG4gICAgbGltaXQ6IG51bWJlcixcbik6IFByb21pc2U8cmVhZG9ubHkgc3RyaW5nW10+ID0+IHtcbiAgICBjb25zdCBwZXJjZW50YWdlID0gTWF0aC5taW4oXG4gICAgICAgIDEwMCxcbiAgICAgICAgKGxpbWl0IC8gTWF0aC5tYXgoZXN0aW1hdGVkUm93Q291bnQsIDEpKSAqXG4gICAgICAgICAgICAxMDAgKlxuICAgICAgICAgICAgQkVSTk9VTExJX09WRVJTQU1QTEVfRkFDVE9SLFxuICAgICk7XG4gICAgY29uc3Qgc3FsID0gYFNFTEVDVCBESVNUSU5DVCAke2NvbHVtbkV4cHJ9Ojp0ZXh0IEFTIHZhbCBGUk9NICR7cXVvdGVJZGVudCh0YWJsZU5hbWUpfSBUQUJMRVNBTVBMRSBCRVJOT1VMTEkoJDEpIFdIRVJFICR7Y29sdW1uRXhwcn0gSVMgTk9UIE5VTEwgTElNSVQgJDJgO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBvb2wucXVlcnk8e3ZhbDogc3RyaW5nfT4oc3FsLCBbcGVyY2VudGFnZSwgbGltaXRdKTtcbiAgICByZXR1cm4gcmVzdWx0LnJvd3MubWFwKChyKSA9PiByLnZhbCk7XG59O1xuXG5jb25zdCBzYW1wbGVQbGFpbkxpbWl0ID0gYXN5bmMgKFxuICAgIHBvb2w6IFBvb2wsXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgY29sdW1uRXhwcjogc3RyaW5nLFxuICAgIGxpbWl0OiBudW1iZXIsXG4pOiBQcm9taXNlPHJlYWRvbmx5IHN0cmluZ1tdPiA9PiB7XG4gICAgY29uc3Qgc3FsID0gYFNFTEVDVCAke2NvbHVtbkV4cHJ9Ojp0ZXh0IEFTIHZhbCBGUk9NICR7cXVvdGVJZGVudCh0YWJsZU5hbWUpfSBXSEVSRSAke2NvbHVtbkV4cHJ9IElTIE5PVCBOVUxMIExJTUlUICQxYDtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwb29sLnF1ZXJ5PHt2YWw6IHN0cmluZ30+KHNxbCwgW2xpbWl0XSk7XG4gICAgcmV0dXJuIHJlc3VsdC5yb3dzLm1hcCgocikgPT4gci52YWwpO1xufTtcblxuZXhwb3J0IHR5cGUgVFJlbGF0aW9uS2luZCA9XG4gICAgfCAndGFibGUnXG4gICAgfCAncGFydGl0aW9uZWRfdGFibGUnXG4gICAgfCAndmlldydcbiAgICB8ICdtYXRlcmlhbGl6ZWRfdmlldyc7XG5cbmNvbnN0IHN1cHBvcnRzVGFibGVTYW1wbGUgPSAoa2luZDogVFJlbGF0aW9uS2luZCk6IGJvb2xlYW4gPT5cbiAgICBraW5kID09PSAndGFibGUnIHx8XG4gICAga2luZCA9PT0gJ3BhcnRpdGlvbmVkX3RhYmxlJyB8fFxuICAgIGtpbmQgPT09ICdtYXRlcmlhbGl6ZWRfdmlldyc7XG5cbmV4cG9ydCBjb25zdCBzYW1wbGVDb2x1bW4gPSBhc3luYyAoXG4gICAgcG9vbDogUG9vbCxcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgICBjb2x1bW5OYW1lOiBzdHJpbmcsXG4gICAgZXN0aW1hdGVkRGlzdGluY3Q6IG51bWJlcixcbiAgICBlc3RpbWF0ZWRSb3dDb3VudDogbnVtYmVyLFxuICAgIHJlbGF0aW9uS2luZDogVFJlbGF0aW9uS2luZCxcbik6IFByb21pc2U8VENvbHVtblNhbXBsZT4gPT4ge1xuICAgIGNvbnN0IGNvbHVtbkV4cHIgPSBxdW90ZUlkZW50KGNvbHVtbk5hbWUpO1xuICAgIGNvbnN0IGlzTG93Q2FyZGluYWxpdHkgPVxuICAgICAgICBlc3RpbWF0ZWREaXN0aW5jdCA+IDAgJiYgZXN0aW1hdGVkRGlzdGluY3QgPCBMT1dfQ0FSRElOQUxJVFlfVEhSRVNIT0xEO1xuXG4gICAgaWYgKGlzTG93Q2FyZGluYWxpdHkpIHtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gYXdhaXQgc2FtcGxlRGlzdGluY3QoXG4gICAgICAgICAgICBwb29sLFxuICAgICAgICAgICAgdGFibGVOYW1lLFxuICAgICAgICAgICAgY29sdW1uRXhwcixcbiAgICAgICAgICAgIExPV19DQVJESU5BTElUWV9MSU1JVCxcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHtjb2x1bW5fbmFtZTogY29sdW1uTmFtZSwgc3RyYXRlZ3k6ICdkaXN0aW5jdCcsIHZhbHVlc307XG4gICAgfVxuXG4gICAgY29uc3QgbGltaXQgPSBISUdIX0NBUkRJTkFMSVRZX0xJTUlUO1xuXG4gICAgY29uc3QgdmFsdWVzID1cbiAgICAgICAgc3VwcG9ydHNUYWJsZVNhbXBsZShyZWxhdGlvbktpbmQpICYmIGVzdGltYXRlZFJvd0NvdW50ID4gMFxuICAgICAgICAgICAgPyBhd2FpdCBzYW1wbGVCZXJub3VsbGkoXG4gICAgICAgICAgICAgICAgICBwb29sLFxuICAgICAgICAgICAgICAgICAgdGFibGVOYW1lLFxuICAgICAgICAgICAgICAgICAgY29sdW1uRXhwcixcbiAgICAgICAgICAgICAgICAgIGVzdGltYXRlZFJvd0NvdW50LFxuICAgICAgICAgICAgICAgICAgbGltaXQsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogYXdhaXQgc2FtcGxlUGxhaW5MaW1pdChwb29sLCB0YWJsZU5hbWUsIGNvbHVtbkV4cHIsIGxpbWl0KTtcblxuICAgIHJldHVybiB7Y29sdW1uX25hbWU6IGNvbHVtbk5hbWUsIHN0cmF0ZWd5OiAncmFuZG9tJywgdmFsdWVzfTtcbn07XG5cbmV4cG9ydCBjb25zdCBzYW1wbGVDb21wb3NpdGVTdWJGaWVsZCA9IGFzeW5jIChcbiAgICBwb29sOiBQb29sLFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIGNvbHVtbk5hbWU6IHN0cmluZyxcbiAgICBzdWJGaWVsZE5hbWU6IHN0cmluZyxcbiAgICBlc3RpbWF0ZWREaXN0aW5jdDogbnVtYmVyLFxuICAgIGVzdGltYXRlZFJvd0NvdW50OiBudW1iZXIsXG4gICAgcmVsYXRpb25LaW5kOiBUUmVsYXRpb25LaW5kLFxuKTogUHJvbWlzZTxUQ29sdW1uU2FtcGxlPiA9PiB7XG4gICAgY29uc3QgY29sdW1uRXhwciA9IGAoJHtxdW90ZUlkZW50KGNvbHVtbk5hbWUpfSkuJHtxdW90ZUlkZW50KHN1YkZpZWxkTmFtZSl9YDtcbiAgICBjb25zdCBpc0xvd0NhcmRpbmFsaXR5ID1cbiAgICAgICAgZXN0aW1hdGVkRGlzdGluY3QgPiAwICYmIGVzdGltYXRlZERpc3RpbmN0IDwgTE9XX0NBUkRJTkFMSVRZX1RIUkVTSE9MRDtcblxuICAgIGlmIChpc0xvd0NhcmRpbmFsaXR5KSB7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IGF3YWl0IHNhbXBsZURpc3RpbmN0KFxuICAgICAgICAgICAgcG9vbCxcbiAgICAgICAgICAgIHRhYmxlTmFtZSxcbiAgICAgICAgICAgIGNvbHVtbkV4cHIsXG4gICAgICAgICAgICBMT1dfQ0FSRElOQUxJVFlfTElNSVQsXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb2x1bW5fbmFtZTogYCR7Y29sdW1uTmFtZX0uJHtzdWJGaWVsZE5hbWV9YCxcbiAgICAgICAgICAgIHN0cmF0ZWd5OiAnZGlzdGluY3QnLFxuICAgICAgICAgICAgdmFsdWVzLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGxpbWl0ID0gSElHSF9DQVJESU5BTElUWV9MSU1JVDtcblxuICAgIGNvbnN0IHZhbHVlcyA9XG4gICAgICAgIHN1cHBvcnRzVGFibGVTYW1wbGUocmVsYXRpb25LaW5kKSAmJiBlc3RpbWF0ZWRSb3dDb3VudCA+IDBcbiAgICAgICAgICAgID8gYXdhaXQgc2FtcGxlQmVybm91bGxpKFxuICAgICAgICAgICAgICAgICAgcG9vbCxcbiAgICAgICAgICAgICAgICAgIHRhYmxlTmFtZSxcbiAgICAgICAgICAgICAgICAgIGNvbHVtbkV4cHIsXG4gICAgICAgICAgICAgICAgICBlc3RpbWF0ZWRSb3dDb3VudCxcbiAgICAgICAgICAgICAgICAgIGxpbWl0LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IGF3YWl0IHNhbXBsZVBsYWluTGltaXQocG9vbCwgdGFibGVOYW1lLCBjb2x1bW5FeHByLCBsaW1pdCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBjb2x1bW5fbmFtZTogYCR7Y29sdW1uTmFtZX0uJHtzdWJGaWVsZE5hbWV9YCxcbiAgICAgICAgc3RyYXRlZ3k6ICdyYW5kb20nLFxuICAgICAgICB2YWx1ZXMsXG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBmZXRjaENvbXBvc2l0ZVN1YkZpZWxkcyA9IGFzeW5jIChcbiAgICBwb29sOiBQb29sLFxuICAgIHR5cGVOYW1lOiBzdHJpbmcsXG4pOiBQcm9taXNlPHJlYWRvbmx5IFRDb21wb3NpdGVTdWJGaWVsZFtdPiA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcG9vbC5xdWVyeTx7bmFtZTogc3RyaW5nOyBkYXRhX3R5cGU6IHN0cmluZ30+KFxuICAgICAgICBgXG4gICAgICAgIFNFTEVDVCBhLmF0dG5hbWUgQVMgbmFtZSwgZm9ybWF0X3R5cGUoYS5hdHR0eXBpZCwgYS5hdHR0eXBtb2QpIEFTIGRhdGFfdHlwZVxuICAgICAgICBGUk9NIHBnX3R5cGUgdFxuICAgICAgICBKT0lOIHBnX2F0dHJpYnV0ZSBhIE9OIGEuYXR0cmVsaWQgPSB0LnR5cHJlbGlkXG4gICAgICAgIFdIRVJFIHQudHlwbmFtZSA9ICQxXG4gICAgICAgICAgICBBTkQgYS5hdHRudW0gPiAwXG4gICAgICAgICAgICBBTkQgTk9UIGEuYXR0aXNkcm9wcGVkXG4gICAgICAgIE9SREVSIEJZIGEuYXR0bnVtXG4gICAgICAgIGAsXG4gICAgICAgIFt0eXBlTmFtZV0sXG4gICAgKTtcbiAgICByZXR1cm4gcmVzdWx0LnJvd3M7XG59O1xuIl19
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Pool } from 'pg';
|
|
2
|
+
export type TSequenceInfo = {
|
|
3
|
+
name: string;
|
|
4
|
+
data_type: string;
|
|
5
|
+
start_value: string;
|
|
6
|
+
min_value: string;
|
|
7
|
+
max_value: string;
|
|
8
|
+
increment: string;
|
|
9
|
+
cycle: boolean;
|
|
10
|
+
cache_size: string;
|
|
11
|
+
owned_by_table: string | null;
|
|
12
|
+
owned_by_column: string | null;
|
|
13
|
+
};
|
|
14
|
+
export declare const fetchPublicSequences: (pool: Pool) => Promise<TSequenceInfo[]>;
|
|
15
|
+
//# sourceMappingURL=sequences.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sequences.d.mts","sourceRoot":"./src/","sources":["db/sequences.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,IAAI,CAAC;AAE7B,MAAM,MAAM,aAAa,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC7B,MAAM,IAAI,KACX,OAAO,CAAC,aAAa,EAAE,CA8BzB,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export const fetchPublicSequences = async (pool) => {
|
|
2
|
+
const result = await pool.query(`
|
|
3
|
+
SELECT
|
|
4
|
+
s.sequencename AS name,
|
|
5
|
+
s.data_type::text AS data_type,
|
|
6
|
+
s.start_value::text AS start_value,
|
|
7
|
+
s.min_value::text AS min_value,
|
|
8
|
+
s.max_value::text AS max_value,
|
|
9
|
+
s.increment_by::text AS increment,
|
|
10
|
+
s.cycle AS cycle,
|
|
11
|
+
s.cache_size::text AS cache_size,
|
|
12
|
+
t.relname AS owned_by_table,
|
|
13
|
+
a.attname AS owned_by_column
|
|
14
|
+
FROM pg_catalog.pg_sequences s
|
|
15
|
+
JOIN pg_catalog.pg_class c
|
|
16
|
+
ON c.relname = s.sequencename
|
|
17
|
+
AND c.relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = s.schemaname)
|
|
18
|
+
LEFT JOIN pg_catalog.pg_depend d
|
|
19
|
+
ON d.objid = c.oid
|
|
20
|
+
AND d.classid = 'pg_class'::regclass
|
|
21
|
+
AND d.refclassid = 'pg_class'::regclass
|
|
22
|
+
AND d.deptype = 'a'
|
|
23
|
+
LEFT JOIN pg_catalog.pg_class t ON t.oid = d.refobjid
|
|
24
|
+
LEFT JOIN pg_catalog.pg_attribute a
|
|
25
|
+
ON a.attrelid = d.refobjid AND a.attnum = d.refobjsubid
|
|
26
|
+
WHERE s.schemaname = 'public'
|
|
27
|
+
ORDER BY s.sequencename
|
|
28
|
+
`);
|
|
29
|
+
return result.rows;
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2VzLm1qcyIsInNvdXJjZVJvb3QiOiIuL3NyYy8iLCJzb3VyY2VzIjpbImRiL3NlcXVlbmNlcy5tdHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZUEsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsS0FBSyxFQUNyQyxJQUFVLEVBQ2MsRUFBRTtJQUMxQixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQWdCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQTBCOUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtQb29sfSBmcm9tICdwZyc7XG5cbmV4cG9ydCB0eXBlIFRTZXF1ZW5jZUluZm8gPSB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRhdGFfdHlwZTogc3RyaW5nO1xuICAgIHN0YXJ0X3ZhbHVlOiBzdHJpbmc7XG4gICAgbWluX3ZhbHVlOiBzdHJpbmc7XG4gICAgbWF4X3ZhbHVlOiBzdHJpbmc7XG4gICAgaW5jcmVtZW50OiBzdHJpbmc7XG4gICAgY3ljbGU6IGJvb2xlYW47XG4gICAgY2FjaGVfc2l6ZTogc3RyaW5nO1xuICAgIG93bmVkX2J5X3RhYmxlOiBzdHJpbmcgfCBudWxsO1xuICAgIG93bmVkX2J5X2NvbHVtbjogc3RyaW5nIHwgbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBmZXRjaFB1YmxpY1NlcXVlbmNlcyA9IGFzeW5jIChcbiAgICBwb29sOiBQb29sLFxuKTogUHJvbWlzZTxUU2VxdWVuY2VJbmZvW10+ID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwb29sLnF1ZXJ5PFRTZXF1ZW5jZUluZm8+KGBcbiAgICAgICAgU0VMRUNUXG4gICAgICAgICAgICBzLnNlcXVlbmNlbmFtZSBBUyBuYW1lLFxuICAgICAgICAgICAgcy5kYXRhX3R5cGU6OnRleHQgQVMgZGF0YV90eXBlLFxuICAgICAgICAgICAgcy5zdGFydF92YWx1ZTo6dGV4dCBBUyBzdGFydF92YWx1ZSxcbiAgICAgICAgICAgIHMubWluX3ZhbHVlOjp0ZXh0IEFTIG1pbl92YWx1ZSxcbiAgICAgICAgICAgIHMubWF4X3ZhbHVlOjp0ZXh0IEFTIG1heF92YWx1ZSxcbiAgICAgICAgICAgIHMuaW5jcmVtZW50X2J5Ojp0ZXh0IEFTIGluY3JlbWVudCxcbiAgICAgICAgICAgIHMuY3ljbGUgQVMgY3ljbGUsXG4gICAgICAgICAgICBzLmNhY2hlX3NpemU6OnRleHQgQVMgY2FjaGVfc2l6ZSxcbiAgICAgICAgICAgIHQucmVsbmFtZSBBUyBvd25lZF9ieV90YWJsZSxcbiAgICAgICAgICAgIGEuYXR0bmFtZSBBUyBvd25lZF9ieV9jb2x1bW5cbiAgICAgICAgRlJPTSBwZ19jYXRhbG9nLnBnX3NlcXVlbmNlcyBzXG4gICAgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19jbGFzcyBjXG4gICAgICAgICAgICBPTiBjLnJlbG5hbWUgPSBzLnNlcXVlbmNlbmFtZVxuICAgICAgICAgICAgQU5EIGMucmVsbmFtZXNwYWNlID0gKFNFTEVDVCBvaWQgRlJPTSBwZ19uYW1lc3BhY2UgV0hFUkUgbnNwbmFtZSA9IHMuc2NoZW1hbmFtZSlcbiAgICAgICAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfZGVwZW5kIGRcbiAgICAgICAgICAgIE9OIGQub2JqaWQgPSBjLm9pZFxuICAgICAgICAgICAgQU5EIGQuY2xhc3NpZCA9ICdwZ19jbGFzcyc6OnJlZ2NsYXNzXG4gICAgICAgICAgICBBTkQgZC5yZWZjbGFzc2lkID0gJ3BnX2NsYXNzJzo6cmVnY2xhc3NcbiAgICAgICAgICAgIEFORCBkLmRlcHR5cGUgPSAnYSdcbiAgICAgICAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfY2xhc3MgdCBPTiB0Lm9pZCA9IGQucmVmb2JqaWRcbiAgICAgICAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfYXR0cmlidXRlIGFcbiAgICAgICAgICAgIE9OIGEuYXR0cmVsaWQgPSBkLnJlZm9iamlkIEFORCBhLmF0dG51bSA9IGQucmVmb2Jqc3ViaWRcbiAgICAgICAgV0hFUkUgcy5zY2hlbWFuYW1lID0gJ3B1YmxpYydcbiAgICAgICAgT1JERVIgQlkgcy5zZXF1ZW5jZW5hbWVcbiAgICBgKTtcblxuICAgIHJldHVybiByZXN1bHQucm93cztcbn07XG4iXX0=
|
package/dist/db/stats.mjs
CHANGED
|
@@ -24,11 +24,11 @@ export const fetchRelationStats = async (pool, relationName) => {
|
|
|
24
24
|
}
|
|
25
25
|
return {
|
|
26
26
|
relation_name: result.rows[0].relation_name,
|
|
27
|
-
estimated_row_count: result.rows[0].estimated_row_count,
|
|
27
|
+
estimated_row_count: Number(result.rows[0].estimated_row_count),
|
|
28
28
|
attributes: result.rows.map(({ attribute_name, estimated_distinct }) => ({
|
|
29
29
|
attribute_name,
|
|
30
|
-
estimated_distinct,
|
|
30
|
+
estimated_distinct: Number(estimated_distinct),
|
|
31
31
|
})),
|
|
32
32
|
};
|
|
33
33
|
};
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHMubWpzIiwic291cmNlUm9vdCI6Ii4vc3JjLyIsInNvdXJjZXMiOlsiZGIvc3RhdHMubXRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWFBLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLEtBQUssRUFDbkMsSUFBVSxFQUNWLFlBQW9CLEVBQ0csRUFBRTtJQUN6QixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBRzNCOzs7Ozs7Ozs7Ozs7Ozs7U0FlQyxFQUNELENBQUMsWUFBWSxDQUFDLENBQ2pCLENBQUM7SUFFRixJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzNCLE9BQU87WUFDSCxhQUFhLEVBQUUsWUFBWTtZQUMzQixtQkFBbUIsRUFBRSxDQUFDO1lBQ3RCLFVBQVUsRUFBRSxFQUFFO1NBQ2pCLENBQUM7SUFDTixDQUFDO0lBRUQsT0FBTztRQUNILGFBQWEsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWE7UUFDM0MsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUM7UUFDL0QsVUFBVSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBQyxjQUFjLEVBQUUsa0JBQWtCLEVBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNuRSxjQUFjO1lBQ2Qsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLGtCQUFrQixDQUFDO1NBQ2pELENBQUMsQ0FBQztLQUNOLENBQUM7QUFDTixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7UG9vbH0gZnJvbSAncGcnO1xuXG5leHBvcnQgdHlwZSBUQXR0cmlidXRlU3RhdHMgPSB7XG4gICAgYXR0cmlidXRlX25hbWU6IHN0cmluZztcbiAgICBlc3RpbWF0ZWRfZGlzdGluY3Q6IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIFRSZWxhdGlvblN0YXRzID0ge1xuICAgIHJlbGF0aW9uX25hbWU6IHN0cmluZztcbiAgICBlc3RpbWF0ZWRfcm93X2NvdW50OiBudW1iZXI7XG4gICAgYXR0cmlidXRlczogVEF0dHJpYnV0ZVN0YXRzW107XG59O1xuXG5leHBvcnQgY29uc3QgZmV0Y2hSZWxhdGlvblN0YXRzID0gYXN5bmMgKFxuICAgIHBvb2w6IFBvb2wsXG4gICAgcmVsYXRpb25OYW1lOiBzdHJpbmcsXG4pOiBQcm9taXNlPFRSZWxhdGlvblN0YXRzPiA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcG9vbC5xdWVyeTxcbiAgICAgICAgVEF0dHJpYnV0ZVN0YXRzICYge3JlbGF0aW9uX25hbWU6IHN0cmluZzsgZXN0aW1hdGVkX3Jvd19jb3VudDogbnVtYmVyfVxuICAgID4oXG4gICAgICAgIGBcbiAgICAgICAgU0VMRUNUXG4gICAgICAgICAgICBzLnRhYmxlbmFtZSBBUyByZWxhdGlvbl9uYW1lLFxuICAgICAgICAgICAgYy5yZWx0dXBsZXM6OmJpZ2ludCBBUyBlc3RpbWF0ZWRfcm93X2NvdW50LFxuICAgICAgICAgICAgcy5hdHRuYW1lIEFTIGF0dHJpYnV0ZV9uYW1lLFxuICAgICAgICAgICAgQ0FTRVxuICAgICAgICAgICAgICAgIFdIRU4gcy5uX2Rpc3RpbmN0ID4gMCBUSEVOIHMubl9kaXN0aW5jdFxuICAgICAgICAgICAgICAgIEVMU0UgYWJzKHMubl9kaXN0aW5jdCkgKiBjLnJlbHR1cGxlc1xuICAgICAgICAgICAgRU5EOjpiaWdpbnQgQVMgZXN0aW1hdGVkX2Rpc3RpbmN0XG4gICAgICAgIEZST00gcGdfY2F0YWxvZy5wZ19zdGF0cyBzXG4gICAgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19jbGFzcyBjIE9OIGMucmVsbmFtZSA9IHMudGFibGVuYW1lXG4gICAgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgbiBPTiBuLm9pZCA9IGMucmVsbmFtZXNwYWNlIEFORCBuLm5zcG5hbWUgPSBzLnNjaGVtYW5hbWVcbiAgICAgICAgV0hFUkUgcy5zY2hlbWFuYW1lID0gJ3B1YmxpYydcbiAgICAgICAgICAgIEFORCBzLnRhYmxlbmFtZSA9ICQxXG4gICAgICAgIE9SREVSIEJZIHMuYXR0bmFtZVxuICAgICAgICBgLFxuICAgICAgICBbcmVsYXRpb25OYW1lXSxcbiAgICApO1xuXG4gICAgaWYgKHJlc3VsdC5yb3dzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVsYXRpb25fbmFtZTogcmVsYXRpb25OYW1lLFxuICAgICAgICAgICAgZXN0aW1hdGVkX3Jvd19jb3VudDogMCxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IFtdLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIHJlbGF0aW9uX25hbWU6IHJlc3VsdC5yb3dzWzBdLnJlbGF0aW9uX25hbWUsXG4gICAgICAgIGVzdGltYXRlZF9yb3dfY291bnQ6IE51bWJlcihyZXN1bHQucm93c1swXS5lc3RpbWF0ZWRfcm93X2NvdW50KSxcbiAgICAgICAgYXR0cmlidXRlczogcmVzdWx0LnJvd3MubWFwKCh7YXR0cmlidXRlX25hbWUsIGVzdGltYXRlZF9kaXN0aW5jdH0pID0+ICh7XG4gICAgICAgICAgICBhdHRyaWJ1dGVfbmFtZSxcbiAgICAgICAgICAgIGVzdGltYXRlZF9kaXN0aW5jdDogTnVtYmVyKGVzdGltYXRlZF9kaXN0aW5jdCksXG4gICAgICAgIH0pKSxcbiAgICB9O1xufTtcbiJdfQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Pool } from 'pg';
|
|
2
|
+
export type TTriggerInfo = {
|
|
3
|
+
relation_name: string;
|
|
4
|
+
name: string;
|
|
5
|
+
definition: string;
|
|
6
|
+
function_schema: string;
|
|
7
|
+
function_name: string;
|
|
8
|
+
is_enabled: boolean;
|
|
9
|
+
};
|
|
10
|
+
export declare const fetchPublicTriggers: (pool: Pool) => Promise<TTriggerInfo[]>;
|
|
11
|
+
//# sourceMappingURL=triggers.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triggers.d.mts","sourceRoot":"./src/","sources":["db/triggers.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,IAAI,CAAC;AAE7B,MAAM,MAAM,YAAY,GAAG;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC5B,MAAM,IAAI,KACX,OAAO,CAAC,YAAY,EAAE,CAoBxB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export const fetchPublicTriggers = async (pool) => {
|
|
2
|
+
const result = await pool.query(`
|
|
3
|
+
SELECT
|
|
4
|
+
t.relname AS relation_name,
|
|
5
|
+
tg.tgname AS name,
|
|
6
|
+
pg_get_triggerdef(tg.oid, true) AS definition,
|
|
7
|
+
fn_ns.nspname AS function_schema,
|
|
8
|
+
fn.proname AS function_name,
|
|
9
|
+
tg.tgenabled <> 'D' AS is_enabled
|
|
10
|
+
FROM pg_catalog.pg_trigger tg
|
|
11
|
+
JOIN pg_catalog.pg_class t ON t.oid = tg.tgrelid
|
|
12
|
+
JOIN pg_catalog.pg_namespace n ON n.oid = t.relnamespace
|
|
13
|
+
JOIN pg_catalog.pg_proc fn ON fn.oid = tg.tgfoid
|
|
14
|
+
JOIN pg_catalog.pg_namespace fn_ns ON fn_ns.oid = fn.pronamespace
|
|
15
|
+
WHERE n.nspname = 'public'
|
|
16
|
+
AND NOT tg.tgisinternal
|
|
17
|
+
ORDER BY t.relname, tg.tgname
|
|
18
|
+
`);
|
|
19
|
+
return result.rows;
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJpZ2dlcnMubWpzIiwic291cmNlUm9vdCI6Ii4vc3JjLyIsInNvdXJjZXMiOlsiZGIvdHJpZ2dlcnMubXRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVdBLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLEtBQUssRUFDcEMsSUFBVSxFQUNhLEVBQUU7SUFDekIsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFlOzs7Ozs7Ozs7Ozs7Ozs7O0tBZ0I3QyxDQUFDLENBQUM7SUFFSCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDdkIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1Bvb2x9IGZyb20gJ3BnJztcblxuZXhwb3J0IHR5cGUgVFRyaWdnZXJJbmZvID0ge1xuICAgIHJlbGF0aW9uX25hbWU6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZGVmaW5pdGlvbjogc3RyaW5nO1xuICAgIGZ1bmN0aW9uX3NjaGVtYTogc3RyaW5nO1xuICAgIGZ1bmN0aW9uX25hbWU6IHN0cmluZztcbiAgICBpc19lbmFibGVkOiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IGZldGNoUHVibGljVHJpZ2dlcnMgPSBhc3luYyAoXG4gICAgcG9vbDogUG9vbCxcbik6IFByb21pc2U8VFRyaWdnZXJJbmZvW10+ID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwb29sLnF1ZXJ5PFRUcmlnZ2VySW5mbz4oYFxuICAgICAgICBTRUxFQ1RcbiAgICAgICAgICAgIHQucmVsbmFtZSBBUyByZWxhdGlvbl9uYW1lLFxuICAgICAgICAgICAgdGcudGduYW1lIEFTIG5hbWUsXG4gICAgICAgICAgICBwZ19nZXRfdHJpZ2dlcmRlZih0Zy5vaWQsIHRydWUpIEFTIGRlZmluaXRpb24sXG4gICAgICAgICAgICBmbl9ucy5uc3BuYW1lIEFTIGZ1bmN0aW9uX3NjaGVtYSxcbiAgICAgICAgICAgIGZuLnByb25hbWUgQVMgZnVuY3Rpb25fbmFtZSxcbiAgICAgICAgICAgIHRnLnRnZW5hYmxlZCA8PiAnRCcgQVMgaXNfZW5hYmxlZFxuICAgICAgICBGUk9NIHBnX2NhdGFsb2cucGdfdHJpZ2dlciB0Z1xuICAgICAgICBKT0lOIHBnX2NhdGFsb2cucGdfY2xhc3MgdCBPTiB0Lm9pZCA9IHRnLnRncmVsaWRcbiAgICAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX25hbWVzcGFjZSBuIE9OIG4ub2lkID0gdC5yZWxuYW1lc3BhY2VcbiAgICAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX3Byb2MgZm4gT04gZm4ub2lkID0gdGcudGdmb2lkXG4gICAgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgZm5fbnMgT04gZm5fbnMub2lkID0gZm4ucHJvbmFtZXNwYWNlXG4gICAgICAgIFdIRVJFIG4ubnNwbmFtZSA9ICdwdWJsaWMnXG4gICAgICAgICAgICBBTkQgTk9UIHRnLnRnaXNpbnRlcm5hbFxuICAgICAgICBPUkRFUiBCWSB0LnJlbG5hbWUsIHRnLnRnbmFtZVxuICAgIGApO1xuXG4gICAgcmV0dXJuIHJlc3VsdC5yb3dzO1xufTtcbiJdfQ==
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import type { TPostIntrospectionStage } from '@dbctx/common';
|
|
2
|
+
import type { TSensitiveMask, TTableSampleEvent } from '../app/sample.mjs';
|
|
3
|
+
export type TFlowEvent = {
|
|
4
|
+
readonly kind: 'start';
|
|
5
|
+
} | {
|
|
6
|
+
readonly kind: 'stop-after-reached';
|
|
7
|
+
} | {
|
|
8
|
+
readonly kind: 'ssh-connected';
|
|
9
|
+
} | {
|
|
10
|
+
readonly kind: 'ssh-failed';
|
|
11
|
+
readonly error: string;
|
|
12
|
+
} | {
|
|
13
|
+
readonly kind: 'ssh-not-needed';
|
|
14
|
+
} | {
|
|
15
|
+
readonly kind: 'db-connected';
|
|
16
|
+
} | {
|
|
17
|
+
readonly kind: 'db-failed';
|
|
18
|
+
readonly error: string;
|
|
19
|
+
} | {
|
|
20
|
+
readonly kind: 'introspection-loaded';
|
|
21
|
+
} | {
|
|
22
|
+
readonly kind: 'introspection-failed';
|
|
23
|
+
readonly error: string;
|
|
24
|
+
} | {
|
|
25
|
+
readonly kind: 'output-json-written';
|
|
26
|
+
} | {
|
|
27
|
+
readonly kind: 'output-json-skipped';
|
|
28
|
+
} | {
|
|
29
|
+
readonly kind: 'output-json-failed';
|
|
30
|
+
readonly error: string;
|
|
31
|
+
} | {
|
|
32
|
+
readonly kind: 'output-json-not-requested';
|
|
33
|
+
} | {
|
|
34
|
+
readonly kind: 'session-created';
|
|
35
|
+
readonly sessionId: string;
|
|
36
|
+
} | {
|
|
37
|
+
readonly kind: 'session-failed';
|
|
38
|
+
readonly error: string;
|
|
39
|
+
} | {
|
|
40
|
+
readonly kind: 'auth-confirmed';
|
|
41
|
+
readonly token: string;
|
|
42
|
+
} | {
|
|
43
|
+
readonly kind: 'auth-failed';
|
|
44
|
+
readonly error: string;
|
|
45
|
+
} | {
|
|
46
|
+
readonly kind: 'auth-not-needed';
|
|
47
|
+
} | {
|
|
48
|
+
readonly kind: 'fast-path-completed';
|
|
49
|
+
readonly sessionId: string;
|
|
50
|
+
readonly token: string;
|
|
51
|
+
} | {
|
|
52
|
+
readonly kind: 'explanation-given';
|
|
53
|
+
readonly value: string;
|
|
54
|
+
} | {
|
|
55
|
+
readonly kind: 'check-introspection-hit';
|
|
56
|
+
readonly revisionId: string;
|
|
57
|
+
readonly samplesExist: boolean;
|
|
58
|
+
readonly tablesNeedingSamples: readonly string[];
|
|
59
|
+
readonly postIntrospectionJobId: string | null;
|
|
60
|
+
} | {
|
|
61
|
+
readonly kind: 'check-introspection-miss';
|
|
62
|
+
} | {
|
|
63
|
+
readonly kind: 'introspection-ingested';
|
|
64
|
+
readonly revisionId: string;
|
|
65
|
+
readonly samplesExist: boolean;
|
|
66
|
+
readonly tablesNeedingSamples: readonly string[];
|
|
67
|
+
readonly postIntrospectionJobId: string | null;
|
|
68
|
+
} | {
|
|
69
|
+
readonly kind: 'ingest-failed';
|
|
70
|
+
readonly error: string;
|
|
71
|
+
} | {
|
|
72
|
+
readonly kind: 'mask-loaded';
|
|
73
|
+
readonly mask: TSensitiveMask;
|
|
74
|
+
} | {
|
|
75
|
+
readonly kind: 'mask-fetch-failed';
|
|
76
|
+
readonly error: string;
|
|
77
|
+
} | {
|
|
78
|
+
readonly kind: 'sample-table-yielded';
|
|
79
|
+
readonly event: TTableSampleEvent;
|
|
80
|
+
} | {
|
|
81
|
+
readonly kind: 'sampling-completed';
|
|
82
|
+
} | {
|
|
83
|
+
readonly kind: 'sampling-failed';
|
|
84
|
+
readonly error: string;
|
|
85
|
+
} | {
|
|
86
|
+
readonly kind: 'sampling-not-needed';
|
|
87
|
+
} | {
|
|
88
|
+
readonly kind: 'sample-chunk-uploaded';
|
|
89
|
+
readonly chunkSize: number;
|
|
90
|
+
} | {
|
|
91
|
+
readonly kind: 'samples-upload-completed';
|
|
92
|
+
} | {
|
|
93
|
+
readonly kind: 'samples-upload-failed';
|
|
94
|
+
readonly error: string;
|
|
95
|
+
} | {
|
|
96
|
+
readonly kind: 'samples-upload-not-needed';
|
|
97
|
+
} | {
|
|
98
|
+
readonly kind: 'post-introspection-progress';
|
|
99
|
+
readonly stage: TPostIntrospectionStage;
|
|
100
|
+
readonly tokensIn: number | null;
|
|
101
|
+
readonly tokensOut: number | null;
|
|
102
|
+
readonly columnsDone: number | null;
|
|
103
|
+
readonly columnsTotal: number | null;
|
|
104
|
+
} | {
|
|
105
|
+
readonly kind: 'post-introspection-completed';
|
|
106
|
+
} | {
|
|
107
|
+
readonly kind: 'post-introspection-failed';
|
|
108
|
+
readonly error: string;
|
|
109
|
+
} | {
|
|
110
|
+
readonly kind: 'post-sampling-completed';
|
|
111
|
+
} | {
|
|
112
|
+
readonly kind: 'post-sampling-failed';
|
|
113
|
+
readonly error: string;
|
|
114
|
+
};
|
|
115
|
+
//# sourceMappingURL=events.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.mts","sourceRoot":"./src/","sources":["flow/events.mts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLm1qcyIsInNvdXJjZVJvb3QiOiIuL3NyYy8iLCJzb3VyY2VzIjpbImZsb3cvZXZlbnRzLm10cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1RQb3N0SW50cm9zcGVjdGlvblN0YWdlfSBmcm9tICdAZGJjdHgvY29tbW9uJztcbmltcG9ydCB0eXBlIHtUU2Vuc2l0aXZlTWFzaywgVFRhYmxlU2FtcGxlRXZlbnR9IGZyb20gJy4uL2FwcC9zYW1wbGUubWpzJztcblxuLy8gRGlzY3JpbWluYXRlZCB1bmlvbiBvZiBldmVyeSBldmVudCB0aGF0IGNhbiBkcml2ZSBhIHN0YXRlIHRyYW5zaXRpb24uXG4vLyBJTyBjb21wbGV0aW9ucywgSU8gZmFpbHVyZXMsIHVzZXIgYWN0aW9ucywgc3RvcC1hZnRlciB0cmlnZ2Vycy5cblxuZXhwb3J0IHR5cGUgVEZsb3dFdmVudCA9XG4gICAgLy8gTGlmZWN5Y2xlIC8gZHJpdmVyc1xuICAgIHwge3JlYWRvbmx5IGtpbmQ6ICdzdGFydCd9XG4gICAgfCB7cmVhZG9ubHkga2luZDogJ3N0b3AtYWZ0ZXItcmVhY2hlZCd9XG5cbiAgICAvLyBTU0hcbiAgICB8IHtyZWFkb25seSBraW5kOiAnc3NoLWNvbm5lY3RlZCd9XG4gICAgfCB7cmVhZG9ubHkga2luZDogJ3NzaC1mYWlsZWQnOyByZWFkb25seSBlcnJvcjogc3RyaW5nfVxuICAgIHwge3JlYWRvbmx5IGtpbmQ6ICdzc2gtbm90LW5lZWRlZCd9XG5cbiAgICAvLyBEQlxuICAgIHwge3JlYWRvbmx5IGtpbmQ6ICdkYi1jb25uZWN0ZWQnfVxuICAgIHwge3JlYWRvbmx5IGtpbmQ6ICdkYi1mYWlsZWQnOyByZWFkb25seSBlcnJvcjogc3RyaW5nfVxuXG4gICAgLy8gSW50cm9zcGVjdGlvblxuICAgIHwge3JlYWRvbmx5IGtpbmQ6ICdpbnRyb3NwZWN0aW9uLWxvYWRlZCd9XG4gICAgfCB7cmVhZG9ubHkga2luZDogJ2ludHJvc3BlY3Rpb24tZmFpbGVkJzsgcmVhZG9ubHkgZXJyb3I6IHN0cmluZ31cblxuICAgIC8vIE91dHB1dCBKU09OXG4gICAgfCB7cmVhZG9ubHkga2luZDogJ291dHB1dC1qc29uLXdyaXR0ZW4nfVxuICAgIHwge3JlYWRvbmx5IGtpbmQ6ICdvdXRwdXQtanNvbi1za2lwcGVkJ30gLy8gdXNlciBkZWNsaW5lZCBvdmVyd3JpdGVcbiAgICB8IHtyZWFkb25seSBraW5kOiAnb3V0cHV0LWpzb24tZmFpbGVkJzsgcmVhZG9ubHkgZXJyb3I6IHN0cmluZ31cbiAgICB8IHtyZWFkb25seSBraW5kOiAnb3V0cHV0LWpzb24tbm90LXJlcXVlc3RlZCd9XG5cbiAgICAvLyBTZXNzaW9uICsgYXV0aFxuICAgIHwge3JlYWRvbmx5IGtpbmQ6ICdzZXNzaW9uLWNyZWF0ZWQnOyByZWFkb25seSBzZXNzaW9uSWQ6IHN0cmluZ31cbiAgICB8IHtyZWFkb25seSBraW5kOiAnc2Vzc2lvbi1mYWlsZWQnOyByZWFkb25seSBlcnJvcjogc3RyaW5nfVxuICAgIHwge3JlYWRvbmx5IGtpbmQ6ICdhdXRoLWNvbmZpcm1lZCc7IHJlYWRvbmx5IHRva2VuOiBzdHJpbmd9XG4gICAgfCB7cmVhZG9ubHkga2luZDogJ2F1dGgtZmFpbGVkJzsgcmVhZG9ubHkgZXJyb3I6IHN0cmluZ31cbiAgICB8IHtyZWFkb25seSBraW5kOiAnYXV0aC1ub3QtbmVlZGVkJ30gLy8gbm8gYXV0aGVkIGZsb3cgYXQgYWxsIChubyBzZXJ2ZXIpXG4gICAgfCB7XG4gICAgICAgICAgLy8gQ2FjaGVkLXRva2VuIGZhc3QgcGF0aDogc2tpcCBhd2FpdGluZy1hdXRob3JpemF0aW9uIGVudGlyZWx5LlxuICAgICAgICAgIC8vIENhcnJpZXMgYm90aCBzZXNzaW9uSWQgYW5kIHRva2VuIHNvIHJlZHVjZXIgbGFuZHMgaW5cbiAgICAgICAgICAvLyBwcmVmbGlnaHQvYXdhaXRpbmctZXhwbGFuYXRpb24gaW4gYSBzaW5nbGUgdHJhbnNpdGlvbi5cbiAgICAgICAgICByZWFkb25seSBraW5kOiAnZmFzdC1wYXRoLWNvbXBsZXRlZCc7XG4gICAgICAgICAgcmVhZG9ubHkgc2Vzc2lvbklkOiBzdHJpbmc7XG4gICAgICAgICAgcmVhZG9ubHkgdG9rZW46IHN0cmluZztcbiAgICAgIH1cblxuICAgIC8vIEV4cGxhbmF0aW9uXG4gICAgfCB7cmVhZG9ubHkga2luZDogJ2V4cGxhbmF0aW9uLWdpdmVuJzsgcmVhZG9ubHkgdmFsdWU6IHN0cmluZ31cblxuICAgIC8vIFByZWZsaWdodCArIGluZ2VzdFxuICAgIHwge1xuICAgICAgICAgIHJlYWRvbmx5IGtpbmQ6ICdjaGVjay1pbnRyb3NwZWN0aW9uLWhpdCc7XG4gICAgICAgICAgcmVhZG9ubHkgcmV2aXNpb25JZDogc3RyaW5nO1xuICAgICAgICAgIHJlYWRvbmx5IHNhbXBsZXNFeGlzdDogYm9vbGVhbjtcbiAgICAgICAgICByZWFkb25seSB0YWJsZXNOZWVkaW5nU2FtcGxlczogcmVhZG9ubHkgc3RyaW5nW107XG4gICAgICAgICAgcmVhZG9ubHkgcG9zdEludHJvc3BlY3Rpb25Kb2JJZDogc3RyaW5nIHwgbnVsbDtcbiAgICAgIH1cbiAgICB8IHtyZWFkb25seSBraW5kOiAnY2hlY2staW50cm9zcGVjdGlvbi1taXNzJ31cbiAgICB8IHtcbiAgICAgICAgICByZWFkb25seSBraW5kOiAnaW50cm9zcGVjdGlvbi1pbmdlc3RlZCc7XG4gICAgICAgICAgcmVhZG9ubHkgcmV2aXNpb25JZDogc3RyaW5nO1xuICAgICAgICAgIHJlYWRvbmx5IHNhbXBsZXNFeGlzdDogYm9vbGVhbjtcbiAgICAgICAgICByZWFkb25seSB0YWJsZXNOZWVkaW5nU2FtcGxlczogcmVhZG9ubHkgc3RyaW5nW107XG4gICAgICAgICAgcmVhZG9ubHkgcG9zdEludHJvc3BlY3Rpb25Kb2JJZDogc3RyaW5nIHwgbnVsbDtcbiAgICAgIH1cbiAgICB8IHtyZWFkb25seSBraW5kOiAnaW5nZXN0LWZhaWxlZCc7IHJlYWRvbmx5IGVycm9yOiBzdHJpbmd9XG5cbiAgICAvLyBNYXNrIHJlc29sdXRpb25cbiAgICB8IHtyZWFkb25seSBraW5kOiAnbWFzay1sb2FkZWQnOyByZWFkb25seSBtYXNrOiBUU2Vuc2l0aXZlTWFza31cbiAgICB8IHtyZWFkb25seSBraW5kOiAnbWFzay1mZXRjaC1mYWlsZWQnOyByZWFkb25seSBlcnJvcjogc3RyaW5nfVxuXG4gICAgLy8gU2FtcGxpbmdcbiAgICB8IHtcbiAgICAgICAgICByZWFkb25seSBraW5kOiAnc2FtcGxlLXRhYmxlLXlpZWxkZWQnO1xuICAgICAgICAgIHJlYWRvbmx5IGV2ZW50OiBUVGFibGVTYW1wbGVFdmVudDtcbiAgICAgIH1cbiAgICB8IHtyZWFkb25seSBraW5kOiAnc2FtcGxpbmctY29tcGxldGVkJ31cbiAgICB8IHtyZWFkb25seSBraW5kOiAnc2FtcGxpbmctZmFpbGVkJzsgcmVhZG9ubHkgZXJyb3I6IHN0cmluZ31cbiAgICB8IHtyZWFkb25seSBraW5kOiAnc2FtcGxpbmctbm90LW5lZWRlZCd9IC8vIHNhbXBsZXMgYWxyZWFkeSBpbmdlc3RlZFxuXG4gICAgLy8gU2FtcGxlIHVwbG9hZFxuICAgIHwge1xuICAgICAgICAgIHJlYWRvbmx5IGtpbmQ6ICdzYW1wbGUtY2h1bmstdXBsb2FkZWQnO1xuICAgICAgICAgIHJlYWRvbmx5IGNodW5rU2l6ZTogbnVtYmVyO1xuICAgICAgfVxuICAgIHwge3JlYWRvbmx5IGtpbmQ6ICdzYW1wbGVzLXVwbG9hZC1jb21wbGV0ZWQnfVxuICAgIHwge3JlYWRvbmx5IGtpbmQ6ICdzYW1wbGVzLXVwbG9hZC1mYWlsZWQnOyByZWFkb25seSBlcnJvcjogc3RyaW5nfVxuICAgIHwge3JlYWRvbmx5IGtpbmQ6ICdzYW1wbGVzLXVwbG9hZC1ub3QtbmVlZGVkJ31cblxuICAgIC8vIFBvc3QtaW50cm9zcGVjdGlvbiAoYmFja2dyb3VuZDsgY2FuIHJlc29sdmUgaW4gYW55IHBoYXNlKVxuICAgIHwge1xuICAgICAgICAgIHJlYWRvbmx5IGtpbmQ6ICdwb3N0LWludHJvc3BlY3Rpb24tcHJvZ3Jlc3MnO1xuICAgICAgICAgIHJlYWRvbmx5IHN0YWdlOiBUUG9zdEludHJvc3BlY3Rpb25TdGFnZTtcbiAgICAgICAgICByZWFkb25seSB0b2tlbnNJbjogbnVtYmVyIHwgbnVsbDtcbiAgICAgICAgICByZWFkb25seSB0b2tlbnNPdXQ6IG51bWJlciB8IG51bGw7XG4gICAgICAgICAgcmVhZG9ubHkgY29sdW1uc0RvbmU6IG51bWJlciB8IG51bGw7XG4gICAgICAgICAgcmVhZG9ubHkgY29sdW1uc1RvdGFsOiBudW1iZXIgfCBudWxsO1xuICAgICAgfVxuICAgIHwge3JlYWRvbmx5IGtpbmQ6ICdwb3N0LWludHJvc3BlY3Rpb24tY29tcGxldGVkJ31cbiAgICB8IHtyZWFkb25seSBraW5kOiAncG9zdC1pbnRyb3NwZWN0aW9uLWZhaWxlZCc7IHJlYWRvbmx5IGVycm9yOiBzdHJpbmd9XG5cbiAgICAvLyBQb3N0LXNhbXBsaW5nXG4gICAgfCB7cmVhZG9ubHkga2luZDogJ3Bvc3Qtc2FtcGxpbmctY29tcGxldGVkJ31cbiAgICB8IHtyZWFkb25seSBraW5kOiAncG9zdC1zYW1wbGluZy1mYWlsZWQnOyByZWFkb25seSBlcnJvcjogc3RyaW5nfTtcbiJdfQ==
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { TRPCClient } from '@trpc/client';
|
|
2
|
+
import type { TAppRouter } from '@dbctx/core';
|
|
3
|
+
import { type TDBConnection } from '../app/db.mjs';
|
|
4
|
+
import { assembleDatabase } from '../app/assemble.mjs';
|
|
5
|
+
import type { TStore } from '../store.mjs';
|
|
6
|
+
import type { TFlowEvent } from './events.mjs';
|
|
7
|
+
import type { TFlowState } from './states.mjs';
|
|
8
|
+
export type TInterpreterContext = {
|
|
9
|
+
cleanupSSH: (() => void) | null;
|
|
10
|
+
db: TDBConnection | null;
|
|
11
|
+
introspection: Awaited<ReturnType<typeof assembleDatabase>> | null;
|
|
12
|
+
authed: TRPCClient<TAppRouter> | null;
|
|
13
|
+
postIntrospectionPoll: Promise<void> | null;
|
|
14
|
+
explanation: string | null;
|
|
15
|
+
};
|
|
16
|
+
export declare const initialContext: () => TInterpreterContext;
|
|
17
|
+
type TDispatch = (event: TFlowEvent) => void;
|
|
18
|
+
export declare const driveSide: (prev: TFlowState | null, curr: TFlowState, store: TStore, ctx: TInterpreterContext, dispatch: TDispatch) => Promise<void>;
|
|
19
|
+
export declare const cleanup: (ctx: TInterpreterContext) => void;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=interpreter.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interpreter.d.mts","sourceRoot":"./src/","sources":["flow/interpreter.mts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,EAAC,UAAU,EAAiB,MAAM,aAAa,CAAC;AAK5D,OAAO,EAAY,KAAK,aAAa,EAAC,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAC,gBAAgB,EAAC,MAAM,qBAAqB,CAAC;AA8BrD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAM7C,MAAM,MAAM,mBAAmB,GAAG;IAC9B,UAAU,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC;IAChC,EAAE,EAAE,aAAa,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC,GAAG,IAAI,CAAC;IACnE,MAAM,EAAE,UAAU,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;IACtC,qBAAqB,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC5C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,CAAC;AAEF,eAAO,MAAM,cAAc,QAAO,mBAOhC,CAAC;AAEH,KAAK,SAAS,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;AAqC7C,eAAO,MAAM,SAAS,GAClB,MAAM,UAAU,GAAG,IAAI,EACvB,MAAM,UAAU,EAChB,OAAO,MAAM,EACb,KAAK,mBAAmB,EACxB,UAAU,SAAS,KACpB,OAAO,CAAC,IAAI,CA0lBd,CAAC;AAgCF,eAAO,MAAM,OAAO,GAAI,KAAK,mBAAmB,KAAG,IASlD,CAAC"}
|