dbctx 1.0.3 → 1.2.0
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 +5 -0
- package/dist/app/assemble.d.mts.map +1 -0
- package/dist/app/assemble.mjs +161 -0
- package/dist/app/config.d.mts +9 -0
- package/dist/app/config.d.mts.map +1 -0
- package/dist/app/config.mjs +49 -0
- package/dist/app/db.d.mts +9 -0
- package/dist/app/db.d.mts.map +1 -0
- package/dist/app/db.mjs +157 -0
- package/dist/app/detect.d.mts +11 -0
- package/dist/app/detect.d.mts.map +1 -0
- package/dist/app/detect.mjs +105 -0
- package/dist/app/index.d.mts +3 -0
- package/dist/app/index.d.mts.map +1 -0
- package/dist/app/index.mjs +81 -0
- package/dist/app/open-url.d.mts +4 -0
- package/dist/app/open-url.d.mts.map +1 -0
- package/dist/app/open-url.mjs +27 -0
- package/dist/app/session.d.mts +8 -0
- package/dist/app/session.d.mts.map +1 -0
- package/dist/app/session.mjs +155 -0
- package/dist/app/ssh.d.mts +3 -0
- package/dist/app/ssh.d.mts.map +1 -0
- package/dist/app/ssh.mjs +207 -0
- package/dist/db/analyze.d.mts +1 -1
- package/dist/db/analyze.d.mts.map +1 -1
- package/dist/db/analyze.mjs +1 -1
- package/dist/db/attributes.d.mts +3 -3
- package/dist/db/attributes.d.mts.map +1 -1
- package/dist/db/attributes.mjs +2 -2
- package/dist/db/enums.d.mts +1 -1
- package/dist/db/enums.d.mts.map +1 -1
- package/dist/db/enums.mjs +2 -2
- package/dist/db/file-stats.d.mts +1 -1
- package/dist/db/file-stats.d.mts.map +1 -1
- package/dist/db/file-stats.mjs +1 -1
- package/dist/db/foreign-keys.d.mts +2 -2
- package/dist/db/foreign-keys.d.mts.map +1 -1
- package/dist/db/foreign-keys.mjs +1 -1
- package/dist/db/index.d.mts +9 -9
- package/dist/db/index.d.mts.map +1 -1
- package/dist/db/index.mjs +10 -10
- package/dist/db/indexes.d.mts +1 -1
- package/dist/db/indexes.d.mts.map +1 -1
- package/dist/db/indexes.mjs +1 -1
- package/dist/db/relations.d.mts +2 -2
- package/dist/db/relations.d.mts.map +1 -1
- package/dist/db/relations.mjs +2 -2
- package/dist/db/stats.d.mts +1 -1
- package/dist/db/stats.d.mts.map +1 -1
- package/dist/db/stats.mjs +2 -2
- package/dist/db/version.d.mts +2 -1
- package/dist/db/version.d.mts.map +1 -1
- package/dist/db/version.mjs +9 -1
- package/dist/index.d.mts +4 -3
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +50 -51
- package/dist/lib/trpc-url.d.mts +2 -0
- package/dist/lib/trpc-url.d.mts.map +1 -0
- package/dist/lib/trpc-url.mjs +6 -0
- package/dist/lib/trpc.d.mts +7 -0
- package/dist/lib/trpc.d.mts.map +1 -0
- package/dist/lib/trpc.mjs +37 -0
- package/dist/lib/trpc.react.d.mts +4 -0
- package/dist/lib/trpc.react.d.mts.map +1 -0
- package/dist/lib/trpc.react.mjs +3 -0
- package/dist/lib/version.d.mts +2 -0
- package/dist/lib/version.d.mts.map +1 -0
- package/dist/lib/version.mjs +5 -0
- package/dist/providers/TrpcProvider.d.ts +9 -0
- package/dist/providers/TrpcProvider.d.ts.map +1 -0
- package/dist/providers/TrpcProvider.js +41 -0
- package/dist/schemas/index.d.mts +106 -1
- package/dist/schemas/index.d.mts.map +1 -1
- package/dist/schemas/index.mjs +27 -2
- package/dist/store.d.mts +64 -0
- package/dist/store.d.mts.map +1 -0
- package/dist/store.mjs +68 -0
- package/dist/{App.d.ts → types/connection.d.mts} +3 -9
- package/dist/types/connection.d.mts.map +1 -0
- package/dist/types/connection.mjs +2 -0
- package/dist/ui/App.d.ts +10 -0
- package/dist/ui/App.d.ts.map +1 -0
- package/dist/ui/App.js +13 -0
- package/dist/ui/components/DB.d.ts +10 -0
- package/dist/ui/components/DB.d.ts.map +1 -0
- package/dist/ui/components/DB.js +22 -0
- package/dist/{components → ui/components}/Error.d.ts +1 -1
- package/dist/ui/components/Error.d.ts.map +1 -0
- package/dist/ui/components/Error.js +6 -0
- package/dist/ui/components/Gate.d.ts +10 -0
- package/dist/ui/components/Gate.d.ts.map +1 -0
- package/dist/ui/components/Gate.js +15 -0
- package/dist/ui/components/Introspect.d.ts +10 -0
- package/dist/ui/components/Introspect.d.ts.map +1 -0
- package/dist/ui/components/Introspect.js +66 -0
- package/dist/ui/components/PasswordInput.d.ts +7 -0
- package/dist/ui/components/PasswordInput.d.ts.map +1 -0
- package/dist/ui/components/PasswordInput.js +32 -0
- package/dist/ui/components/SSH.d.ts +10 -0
- package/dist/ui/components/SSH.d.ts.map +1 -0
- package/dist/ui/components/SSH.js +22 -0
- package/dist/ui/components/Session.d.ts +10 -0
- package/dist/ui/components/Session.d.ts.map +1 -0
- package/dist/ui/components/Session.js +47 -0
- package/dist/ui/components/Spinner.d.ts +3 -0
- package/dist/ui/components/Spinner.d.ts.map +1 -0
- package/dist/ui/components/Spinner.js +18 -0
- package/dist/ui/components/Splash.d.ts +3 -0
- package/dist/ui/components/Splash.d.ts.map +1 -0
- package/dist/ui/components/Splash.js +13 -0
- package/dist/validatePaths.d.mts +1 -1
- package/dist/validatePaths.d.mts.map +1 -1
- package/dist/validatePaths.mjs +17 -11
- package/package.json +22 -2
- package/dist/App.d.ts.map +0 -1
- package/dist/App.js +0 -9
- package/dist/components/Error.d.ts.map +0 -1
- package/dist/components/Error.js +0 -6
package/dist/db/attributes.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { Pool } from
|
|
2
|
-
export type TAttributeKind =
|
|
3
|
-
export type TGeneratedStorage =
|
|
1
|
+
import type { Pool } from 'pg';
|
|
2
|
+
export type TAttributeKind = 'regular' | 'generated';
|
|
3
|
+
export type TGeneratedStorage = 'stored' | 'virtual';
|
|
4
4
|
export type TAttributeInfo = {
|
|
5
5
|
attribute_name: string;
|
|
6
6
|
data_type: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attributes.d.mts","sourceRoot":"./src/","sources":["db/attributes.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"attributes.d.mts","sourceRoot":"./src/","sources":["db/attributes.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,IAAI,CAAC;AAE7B,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,WAAW,CAAC;AAErD,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,SAAS,CAAC;AAErD,MAAM,MAAM,cAAc,GAAG;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,IAAI,EAAE,cAAc,CAAC;IACrB,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC5C,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAChC,MAAM,IAAI,EACV,cAAc,MAAM,KACrB,OAAO,CAAC,cAAc,EAAE,CAuC1B,CAAC"}
|
package/dist/db/attributes.mjs
CHANGED
|
@@ -2,7 +2,7 @@ export const fetchRelationAttributes = async (pool, relationName) => {
|
|
|
2
2
|
const result = await pool.query(`
|
|
3
3
|
SELECT
|
|
4
4
|
a.attname AS attribute_name,
|
|
5
|
-
format_type(a.atttypid, a.
|
|
5
|
+
format_type(a.atttypid, a.atttypmod) AS data_type,
|
|
6
6
|
NOT a.attnotnull AS is_nullable,
|
|
7
7
|
ad.adbin IS NOT NULL AS has_default,
|
|
8
8
|
CASE
|
|
@@ -34,4 +34,4 @@ export const fetchRelationAttributes = async (pool, relationName) => {
|
|
|
34
34
|
`, [relationName]);
|
|
35
35
|
return result.rows;
|
|
36
36
|
};
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlcy5tanMiLCJzb3VyY2VSb290IjoiLi9zcmMvIiwic291cmNlcyI6WyJkYi9hdHRyaWJ1dGVzLm10cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrQkEsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsS0FBSyxFQUN4QyxJQUFVLEVBQ1YsWUFBb0IsRUFDSyxFQUFFO0lBQzNCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FDM0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBZ0NDLEVBQ0QsQ0FBQyxZQUFZLENBQUMsQ0FDakIsQ0FBQztJQUVGLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQztBQUN2QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7UG9vbH0gZnJvbSAncGcnO1xuXG5leHBvcnQgdHlwZSBUQXR0cmlidXRlS2luZCA9ICdyZWd1bGFyJyB8ICdnZW5lcmF0ZWQnO1xuXG5leHBvcnQgdHlwZSBUR2VuZXJhdGVkU3RvcmFnZSA9ICdzdG9yZWQnIHwgJ3ZpcnR1YWwnO1xuXG5leHBvcnQgdHlwZSBUQXR0cmlidXRlSW5mbyA9IHtcbiAgICBhdHRyaWJ1dGVfbmFtZTogc3RyaW5nO1xuICAgIGRhdGFfdHlwZTogc3RyaW5nO1xuICAgIGlzX251bGxhYmxlOiBib29sZWFuO1xuICAgIGhhc19kZWZhdWx0OiBib29sZWFuO1xuICAgIGRlZmF1bHRfZXhwcmVzc2lvbjogc3RyaW5nIHwgbnVsbDtcbiAgICBraW5kOiBUQXR0cmlidXRlS2luZDtcbiAgICBnZW5lcmF0ZWRfc3RvcmFnZTogVEdlbmVyYXRlZFN0b3JhZ2UgfCBudWxsO1xuICAgIGdlbmVyYXRlZF9leHByZXNzaW9uOiBzdHJpbmcgfCBudWxsO1xuICAgIGNvbW1lbnQ6IHN0cmluZyB8IG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgZmV0Y2hSZWxhdGlvbkF0dHJpYnV0ZXMgPSBhc3luYyAoXG4gICAgcG9vbDogUG9vbCxcbiAgICByZWxhdGlvbk5hbWU6IHN0cmluZyxcbik6IFByb21pc2U8VEF0dHJpYnV0ZUluZm9bXT4gPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBvb2wucXVlcnk8VEF0dHJpYnV0ZUluZm8+KFxuICAgICAgICBgXG4gICAgICAgIFNFTEVDVFxuICAgICAgICAgICAgYS5hdHRuYW1lIEFTIGF0dHJpYnV0ZV9uYW1lLFxuICAgICAgICAgICAgZm9ybWF0X3R5cGUoYS5hdHR0eXBpZCwgYS5hdHR0eXBtb2QpIEFTIGRhdGFfdHlwZSxcbiAgICAgICAgICAgIE5PVCBhLmF0dG5vdG51bGwgQVMgaXNfbnVsbGFibGUsXG4gICAgICAgICAgICBhZC5hZGJpbiBJUyBOT1QgTlVMTCBBUyBoYXNfZGVmYXVsdCxcbiAgICAgICAgICAgIENBU0VcbiAgICAgICAgICAgICAgICBXSEVOIGEuYXR0Z2VuZXJhdGVkID0gJycgQU5EIGFkLmFkYmluIElTIE5PVCBOVUxMIFRIRU4gcGdfZ2V0X2V4cHIoYWQuYWRiaW4sIGFkLmFkcmVsaWQpXG4gICAgICAgICAgICAgICAgRUxTRSBOVUxMXG4gICAgICAgICAgICBFTkQgQVMgZGVmYXVsdF9leHByZXNzaW9uLFxuICAgICAgICAgICAgQ0FTRSBhLmF0dGdlbmVyYXRlZFxuICAgICAgICAgICAgICAgIFdIRU4gJycgVEhFTiAncmVndWxhcidcbiAgICAgICAgICAgICAgICBFTFNFICdnZW5lcmF0ZWQnXG4gICAgICAgICAgICBFTkQgQVMga2luZCxcbiAgICAgICAgICAgIENBU0UgYS5hdHRnZW5lcmF0ZWRcbiAgICAgICAgICAgICAgICBXSEVOICdzJyBUSEVOICdzdG9yZWQnXG4gICAgICAgICAgICAgICAgV0hFTiAndicgVEhFTiAndmlydHVhbCdcbiAgICAgICAgICAgICAgICBFTFNFIE5VTExcbiAgICAgICAgICAgIEVORCBBUyBnZW5lcmF0ZWRfc3RvcmFnZSxcbiAgICAgICAgICAgIENBU0VcbiAgICAgICAgICAgICAgICBXSEVOIGEuYXR0Z2VuZXJhdGVkICE9ICcnIFRIRU4gcGdfZ2V0X2V4cHIoYWQuYWRiaW4sIGFkLmFkcmVsaWQpXG4gICAgICAgICAgICAgICAgRUxTRSBOVUxMXG4gICAgICAgICAgICBFTkQgQVMgZ2VuZXJhdGVkX2V4cHJlc3Npb24sXG4gICAgICAgICAgICBjb2xfZGVzY3JpcHRpb24oYy5vaWQsIGEuYXR0bnVtKSBBUyBjb21tZW50XG4gICAgICAgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjXG4gICAgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19hdHRyaWJ1dGUgYSBPTiBhLmF0dHJlbGlkID0gYy5vaWRcbiAgICAgICAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfYXR0cmRlZiBhZCBPTiBhZC5hZHJlbGlkID0gYS5hdHRyZWxpZCBBTkQgYWQuYWRudW0gPSBhLmF0dG51bVxuICAgICAgICBXSEVSRSBjLnJlbG5hbWUgPSAkMVxuICAgICAgICAgICAgQU5EIGMucmVsbmFtZXNwYWNlID0gKFNFTEVDVCBvaWQgRlJPTSBwZ19uYW1lc3BhY2UgV0hFUkUgbnNwbmFtZSA9ICdwdWJsaWMnKVxuICAgICAgICAgICAgQU5EIGEuYXR0bnVtID4gMFxuICAgICAgICAgICAgQU5EIE5PVCBhLmF0dGlzZHJvcHBlZFxuICAgICAgICBPUkRFUiBCWSBhLmF0dG51bVxuICAgICAgICBgLFxuICAgICAgICBbcmVsYXRpb25OYW1lXSxcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlc3VsdC5yb3dzO1xufTtcbiJdfQ==
|
package/dist/db/enums.d.mts
CHANGED
package/dist/db/enums.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enums.d.mts","sourceRoot":"./src/","sources":["db/enums.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"enums.d.mts","sourceRoot":"./src/","sources":["db/enums.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,IAAI,CAAC;AAU7B,MAAM,MAAM,SAAS,GAAG;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEtD,eAAO,MAAM,gBAAgB,GAAU,MAAM,IAAI,KAAG,OAAO,CAAC,aAAa,CAyBxE,CAAC"}
|
package/dist/db/enums.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { groupBy } from
|
|
1
|
+
import { groupBy } from 'es-toolkit';
|
|
2
2
|
export const fetchPublicEnums = async (pool) => {
|
|
3
3
|
const result = await pool.query(`
|
|
4
4
|
SELECT
|
|
@@ -21,4 +21,4 @@ export const fetchPublicEnums = async (pool) => {
|
|
|
21
21
|
},
|
|
22
22
|
]));
|
|
23
23
|
};
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bXMubWpzIiwic291cmNlUm9vdCI6Ii4vc3JjLyIsInNvdXJjZXMiOlsiZGIvZW51bXMubXRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFnQm5DLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLEtBQUssRUFBRSxJQUFVLEVBQTBCLEVBQUU7SUFDekUsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFnQjs7Ozs7Ozs7Ozs7S0FXOUMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUU3RCxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQ3JCLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzFDLElBQUk7UUFDSjtZQUNJLE1BQU0sRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQ2hDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxJQUFJLElBQUk7U0FDcEM7S0FDSixDQUFDLENBQ0wsQ0FBQztBQUNOLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtQb29sfSBmcm9tICdwZyc7XG5pbXBvcnQge2dyb3VwQnl9IGZyb20gJ2VzLXRvb2xraXQnO1xuXG50eXBlIFRFbnVtVmFsdWVSb3cgPSB7XG4gICAgZW51bV9uYW1lOiBzdHJpbmc7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICBzb3J0X29yZGVyOiBudW1iZXI7XG4gICAgY29tbWVudDogc3RyaW5nIHwgbnVsbDtcbn07XG5cbmV4cG9ydCB0eXBlIFRFbnVtSW5mbyA9IHtcbiAgICB2YWx1ZXM6IHN0cmluZ1tdO1xuICAgIGNvbW1lbnQ6IHN0cmluZyB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBUR3JvdXBlZEVudW1zID0gUmVjb3JkPHN0cmluZywgVEVudW1JbmZvPjtcblxuZXhwb3J0IGNvbnN0IGZldGNoUHVibGljRW51bXMgPSBhc3luYyAocG9vbDogUG9vbCk6IFByb21pc2U8VEdyb3VwZWRFbnVtcz4gPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBvb2wucXVlcnk8VEVudW1WYWx1ZVJvdz4oYFxuICAgICAgICBTRUxFQ1RcbiAgICAgICAgICAgIHQudHlwbmFtZSBBUyBlbnVtX25hbWUsXG4gICAgICAgICAgICBlLmVudW1sYWJlbCBBUyB2YWx1ZSxcbiAgICAgICAgICAgIGUuZW51bXNvcnRvcmRlciBBUyBzb3J0X29yZGVyLFxuICAgICAgICAgICAgb2JqX2Rlc2NyaXB0aW9uKHQub2lkLCAncGdfdHlwZScpIEFTIGNvbW1lbnRcbiAgICAgICAgRlJPTSBwZ19jYXRhbG9nLnBnX3R5cGUgdFxuICAgICAgICBKT0lOIHBnX2NhdGFsb2cucGdfZW51bSBlIE9OIHQub2lkID0gZS5lbnVtdHlwaWRcbiAgICAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX25hbWVzcGFjZSBuIE9OIHQudHlwbmFtZXNwYWNlID0gbi5vaWRcbiAgICAgICAgV0hFUkUgbi5uc3BuYW1lID0gJ3B1YmxpYydcbiAgICAgICAgT1JERVIgQlkgZW51bV9uYW1lLCBzb3J0X29yZGVyXG4gICAgYCk7XG5cbiAgICBjb25zdCBncm91cGVkID0gZ3JvdXBCeShyZXN1bHQucm93cywgKHJvdykgPT4gcm93LmVudW1fbmFtZSk7XG5cbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICBPYmplY3QuZW50cmllcyhncm91cGVkKS5tYXAoKFtuYW1lLCByb3dzXSkgPT4gW1xuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2YWx1ZXM6IHJvd3MubWFwKChyKSA9PiByLnZhbHVlKSxcbiAgICAgICAgICAgICAgICBjb21tZW50OiByb3dzWzBdPy5jb21tZW50ID8/IG51bGwsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdKSxcbiAgICApO1xufTtcbiJdfQ==
|
package/dist/db/file-stats.d.mts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-stats.d.mts","sourceRoot":"./src/","sources":["db/file-stats.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"file-stats.d.mts","sourceRoot":"./src/","sources":["db/file-stats.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,IAAI,CAAC;AAE7B,MAAM,MAAM,kBAAkB,GAAG;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,iBAAiB,EAAE,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAC/B,MAAM,IAAI,EACV,cAAc,MAAM,KACrB,OAAO,CAAC,kBAAkB,CA6C5B,CAAC"}
|
package/dist/db/file-stats.mjs
CHANGED
|
@@ -40,4 +40,4 @@ export const fetchRelationFileStats = async (pool, relationName) => {
|
|
|
40
40
|
`, [relationName]);
|
|
41
41
|
return result.rows[0];
|
|
42
42
|
};
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1zdGF0cy5tanMiLCJzb3VyY2VSb290IjoiLi9zcmMvIiwic291cmNlcyI6WyJkYi9maWxlLXN0YXRzLm10cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFXQSxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxLQUFLLEVBQ3ZDLElBQVUsRUFDVixZQUFvQixFQUNPLEVBQUU7SUFDN0IsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUMzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FzQ0MsRUFDRCxDQUFDLFlBQVksQ0FBQyxDQUNqQixDQUFDO0lBRUYsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtQb29sfSBmcm9tICdwZyc7XG5cbmV4cG9ydCB0eXBlIFRSZWxhdGlvbkZpbGVTdGF0cyA9IHtcbiAgICByZWxhdGlvbl9uYW1lOiBzdHJpbmc7XG4gICAgZmlsZV9wYXRoOiBzdHJpbmcgfCBudWxsO1xuICAgIG1vZGlmaWNhdGlvbl90aW1lOiBEYXRlO1xuICAgIHNpemVfYnl0ZXM6IG51bWJlcjtcbiAgICBpc19wYXJ0aXRpb25lZDogYm9vbGVhbjtcbiAgICBwYXJ0aXRpb25fY291bnQ6IG51bWJlciB8IG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgZmV0Y2hSZWxhdGlvbkZpbGVTdGF0cyA9IGFzeW5jIChcbiAgICBwb29sOiBQb29sLFxuICAgIHJlbGF0aW9uTmFtZTogc3RyaW5nLFxuKTogUHJvbWlzZTxUUmVsYXRpb25GaWxlU3RhdHM+ID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwb29sLnF1ZXJ5PFRSZWxhdGlvbkZpbGVTdGF0cz4oXG4gICAgICAgIGBcbiAgICAgICAgV0lUSCB0YXJnZXQgQVMgKFxuICAgICAgICAgICAgU0VMRUNUIGMub2lkLCBjLnJlbG5hbWUsIGMucmVsa2luZFxuICAgICAgICAgICAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGNcbiAgICAgICAgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgbiBPTiBuLm9pZCA9IGMucmVsbmFtZXNwYWNlXG4gICAgICAgICAgICBXSEVSRSBuLm5zcG5hbWUgPSAncHVibGljJ1xuICAgICAgICAgICAgICAgIEFORCBjLnJlbG5hbWUgPSAkMVxuICAgICAgICAgICAgICAgIEFORCBjLnJlbGtpbmQgSU4gKCdyJywgJ3AnLCAnbScpXG4gICAgICAgICksXG4gICAgICAgIHBhcnRpdGlvbl9zdGF0cyBBUyAoXG4gICAgICAgICAgICBTRUxFQ1RcbiAgICAgICAgICAgICAgICAocGdfc3RhdF9maWxlKHBnX3JlbGF0aW9uX2ZpbGVwYXRoKGNoaWxkLm9pZCkpKS5tb2RpZmljYXRpb24gQVMgbW9kaWZpY2F0aW9uX3RpbWUsXG4gICAgICAgICAgICAgICAgKHBnX3N0YXRfZmlsZShwZ19yZWxhdGlvbl9maWxlcGF0aChjaGlsZC5vaWQpKSkuc2l6ZSBBUyBzaXplX2J5dGVzXG4gICAgICAgICAgICBGUk9NIHRhcmdldCB0XG4gICAgICAgICAgICBKT0lOIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaSBPTiBpLmluaHBhcmVudCA9IHQub2lkXG4gICAgICAgICAgICBKT0lOIHBnX2NhdGFsb2cucGdfY2xhc3MgY2hpbGQgT04gY2hpbGQub2lkID0gaS5pbmhyZWxpZFxuICAgICAgICAgICAgV0hFUkUgdC5yZWxraW5kID0gJ3AnXG4gICAgICAgIClcbiAgICAgICAgU0VMRUNUXG4gICAgICAgICAgICB0LnJlbG5hbWUgQVMgcmVsYXRpb25fbmFtZSxcbiAgICAgICAgICAgIENBU0VcbiAgICAgICAgICAgICAgICBXSEVOIHQucmVsa2luZCA9ICdwJyBUSEVOIE5VTExcbiAgICAgICAgICAgICAgICBFTFNFIHBnX3JlbGF0aW9uX2ZpbGVwYXRoKHQub2lkKVxuICAgICAgICAgICAgRU5EIEFTIGZpbGVfcGF0aCxcbiAgICAgICAgICAgIENBU0VcbiAgICAgICAgICAgICAgICBXSEVOIHQucmVsa2luZCA9ICdwJyBUSEVOIChTRUxFQ1QgTUFYKG1vZGlmaWNhdGlvbl90aW1lKSBGUk9NIHBhcnRpdGlvbl9zdGF0cylcbiAgICAgICAgICAgICAgICBFTFNFIChwZ19zdGF0X2ZpbGUocGdfcmVsYXRpb25fZmlsZXBhdGgodC5vaWQpKSkubW9kaWZpY2F0aW9uXG4gICAgICAgICAgICBFTkQgQVMgbW9kaWZpY2F0aW9uX3RpbWUsXG4gICAgICAgICAgICBDQVNFXG4gICAgICAgICAgICAgICAgV0hFTiB0LnJlbGtpbmQgPSAncCcgVEhFTiAoU0VMRUNUIENPQUxFU0NFKFNVTShzaXplX2J5dGVzKSwgMCkgRlJPTSBwYXJ0aXRpb25fc3RhdHMpXG4gICAgICAgICAgICAgICAgRUxTRSAocGdfc3RhdF9maWxlKHBnX3JlbGF0aW9uX2ZpbGVwYXRoKHQub2lkKSkpLnNpemVcbiAgICAgICAgICAgIEVORCBBUyBzaXplX2J5dGVzLFxuICAgICAgICAgICAgdC5yZWxraW5kID0gJ3AnIEFTIGlzX3BhcnRpdGlvbmVkLFxuICAgICAgICAgICAgQ0FTRVxuICAgICAgICAgICAgICAgIFdIRU4gdC5yZWxraW5kID0gJ3AnIFRIRU4gKFNFTEVDVCBDT1VOVCgqKSBGUk9NIHBhcnRpdGlvbl9zdGF0cylcbiAgICAgICAgICAgICAgICBFTFNFIE5VTExcbiAgICAgICAgICAgIEVORCBBUyBwYXJ0aXRpb25fY291bnRcbiAgICAgICAgRlJPTSB0YXJnZXQgdFxuICAgICAgICBgLFxuICAgICAgICBbcmVsYXRpb25OYW1lXSxcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlc3VsdC5yb3dzWzBdO1xufTtcbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Pool } from
|
|
2
|
-
type TForeignKeyAction =
|
|
1
|
+
import type { Pool } from 'pg';
|
|
2
|
+
type TForeignKeyAction = 'NO ACTION' | 'RESTRICT' | 'CASCADE' | 'SET NULL' | 'SET DEFAULT';
|
|
3
3
|
export type TForeignKeyInfo = {
|
|
4
4
|
constraint_name: string;
|
|
5
5
|
attributes: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"foreign-keys.d.mts","sourceRoot":"./src/","sources":["db/foreign-keys.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"foreign-keys.d.mts","sourceRoot":"./src/","sources":["db/foreign-keys.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,IAAI,CAAC;AAE7B,KAAK,iBAAiB,GAChB,WAAW,GACX,UAAU,GACV,SAAS,GACT,UAAU,GACV,aAAa,CAAC;AAEpB,MAAM,MAAM,eAAe,GAAG;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,SAAS,EAAE,iBAAiB,CAAC;IAC7B,SAAS,EAAE,iBAAiB,CAAC;IAC7B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACjC,MAAM,IAAI,EACV,cAAc,MAAM,KACrB,OAAO,CAAC,eAAe,EAAE,CA8C3B,CAAC"}
|
package/dist/db/foreign-keys.mjs
CHANGED
|
@@ -41,4 +41,4 @@ export const fetchRelationForeignKeys = async (pool, relationName) => {
|
|
|
41
41
|
`, [relationName]);
|
|
42
42
|
return result.rows;
|
|
43
43
|
};
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZWlnbi1rZXlzLm1qcyIsInNvdXJjZVJvb3QiOiIuL3NyYy8iLCJzb3VyY2VzIjpbImRiL2ZvcmVpZ24ta2V5cy5tdHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBbUJBLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLEtBQUssRUFDekMsSUFBVSxFQUNWLFlBQW9CLEVBQ00sRUFBRTtJQUM1QixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQzNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0F1Q0MsRUFDRCxDQUFDLFlBQVksQ0FBQyxDQUNqQixDQUFDO0lBRUYsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtQb29sfSBmcm9tICdwZyc7XG5cbnR5cGUgVEZvcmVpZ25LZXlBY3Rpb24gPVxuICAgIHwgJ05PIEFDVElPTidcbiAgICB8ICdSRVNUUklDVCdcbiAgICB8ICdDQVNDQURFJ1xuICAgIHwgJ1NFVCBOVUxMJ1xuICAgIHwgJ1NFVCBERUZBVUxUJztcblxuZXhwb3J0IHR5cGUgVEZvcmVpZ25LZXlJbmZvID0ge1xuICAgIGNvbnN0cmFpbnRfbmFtZTogc3RyaW5nO1xuICAgIGF0dHJpYnV0ZXM6IHN0cmluZ1tdO1xuICAgIHJlZmVyZW5jZWRfcmVsYXRpb246IHN0cmluZztcbiAgICByZWZlcmVuY2VkX2F0dHJpYnV0ZXM6IHN0cmluZ1tdO1xuICAgIG9uX3VwZGF0ZTogVEZvcmVpZ25LZXlBY3Rpb247XG4gICAgb25fZGVsZXRlOiBURm9yZWlnbktleUFjdGlvbjtcbiAgICBjb21tZW50OiBzdHJpbmcgfCBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGZldGNoUmVsYXRpb25Gb3JlaWduS2V5cyA9IGFzeW5jIChcbiAgICBwb29sOiBQb29sLFxuICAgIHJlbGF0aW9uTmFtZTogc3RyaW5nLFxuKTogUHJvbWlzZTxURm9yZWlnbktleUluZm9bXT4gPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBvb2wucXVlcnk8VEZvcmVpZ25LZXlJbmZvPihcbiAgICAgICAgYFxuICAgICAgICBTRUxFQ1RcbiAgICAgICAgICAgIGNvbi5jb25uYW1lIEFTIGNvbnN0cmFpbnRfbmFtZSxcbiAgICAgICAgICAgIEFSUkFZKFxuICAgICAgICAgICAgICAgIFNFTEVDVCBhLmF0dG5hbWVcbiAgICAgICAgICAgICAgICBGUk9NIHVubmVzdChjb24uY29ua2V5KSBXSVRIIE9SRElOQUxJVFkgQVMgY29scyhhdHRudW0sIG9yZClcbiAgICAgICAgICAgICAgICBKT0lOIHBnX2F0dHJpYnV0ZSBhIE9OIGEuYXR0cmVsaWQgPSBjb24uY29ucmVsaWQgQU5EIGEuYXR0bnVtID0gY29scy5hdHRudW1cbiAgICAgICAgICAgICAgICBPUkRFUiBCWSBjb2xzLm9yZFxuICAgICAgICAgICAgKSBBUyBhdHRyaWJ1dGVzLFxuICAgICAgICAgICAgcmVmX2NsLnJlbG5hbWUgQVMgcmVmZXJlbmNlZF9yZWxhdGlvbixcbiAgICAgICAgICAgIEFSUkFZKFxuICAgICAgICAgICAgICAgIFNFTEVDVCBhLmF0dG5hbWVcbiAgICAgICAgICAgICAgICBGUk9NIHVubmVzdChjb24uY29uZmtleSkgV0lUSCBPUkRJTkFMSVRZIEFTIGNvbHMoYXR0bnVtLCBvcmQpXG4gICAgICAgICAgICAgICAgSk9JTiBwZ19hdHRyaWJ1dGUgYSBPTiBhLmF0dHJlbGlkID0gY29uLmNvbmZyZWxpZCBBTkQgYS5hdHRudW0gPSBjb2xzLmF0dG51bVxuICAgICAgICAgICAgICAgIE9SREVSIEJZIGNvbHMub3JkXG4gICAgICAgICAgICApIEFTIHJlZmVyZW5jZWRfYXR0cmlidXRlcyxcbiAgICAgICAgICAgIENBU0UgY29uLmNvbmZ1cGR0eXBlXG4gICAgICAgICAgICAgICAgV0hFTiAnYScgVEhFTiAnTk8gQUNUSU9OJ1xuICAgICAgICAgICAgICAgIFdIRU4gJ3InIFRIRU4gJ1JFU1RSSUNUJ1xuICAgICAgICAgICAgICAgIFdIRU4gJ2MnIFRIRU4gJ0NBU0NBREUnXG4gICAgICAgICAgICAgICAgV0hFTiAnbicgVEhFTiAnU0VUIE5VTEwnXG4gICAgICAgICAgICAgICAgV0hFTiAnZCcgVEhFTiAnU0VUIERFRkFVTFQnXG4gICAgICAgICAgICBFTkQgQVMgb25fdXBkYXRlLFxuICAgICAgICAgICAgQ0FTRSBjb24uY29uZmRlbHR5cGVcbiAgICAgICAgICAgICAgICBXSEVOICdhJyBUSEVOICdOTyBBQ1RJT04nXG4gICAgICAgICAgICAgICAgV0hFTiAncicgVEhFTiAnUkVTVFJJQ1QnXG4gICAgICAgICAgICAgICAgV0hFTiAnYycgVEhFTiAnQ0FTQ0FERSdcbiAgICAgICAgICAgICAgICBXSEVOICduJyBUSEVOICdTRVQgTlVMTCdcbiAgICAgICAgICAgICAgICBXSEVOICdkJyBUSEVOICdTRVQgREVGQVVMVCdcbiAgICAgICAgICAgIEVORCBBUyBvbl9kZWxldGUsXG4gICAgICAgICAgICBvYmpfZGVzY3JpcHRpb24oY29uLm9pZCwgJ3BnX2NvbnN0cmFpbnQnKSBBUyBjb21tZW50XG4gICAgICAgIEZST00gcGdfY2F0YWxvZy5wZ19jb25zdHJhaW50IGNvblxuICAgICAgICBKT0lOIHBnX2NhdGFsb2cucGdfY2xhc3MgY2wgT04gY2wub2lkID0gY29uLmNvbnJlbGlkXG4gICAgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19jbGFzcyByZWZfY2wgT04gcmVmX2NsLm9pZCA9IGNvbi5jb25mcmVsaWRcbiAgICAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX25hbWVzcGFjZSBuIE9OIG4ub2lkID0gY2wucmVsbmFtZXNwYWNlXG4gICAgICAgIFdIRVJFIGNvbi5jb250eXBlID0gJ2YnXG4gICAgICAgICAgICBBTkQgbi5uc3BuYW1lID0gJ3B1YmxpYydcbiAgICAgICAgICAgIEFORCBjbC5yZWxuYW1lID0gJDFcbiAgICAgICAgT1JERVIgQlkgY29uLmNvbm5hbWVcbiAgICAgICAgYCxcbiAgICAgICAgW3JlbGF0aW9uTmFtZV0sXG4gICAgKTtcblxuICAgIHJldHVybiByZXN1bHQucm93cztcbn07XG4iXX0=
|
package/dist/db/index.d.mts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export { fetchPublicRelations, type TRelationType, type TRelationInfo, type TGroupedRelations } from
|
|
2
|
-
export { fetchRelationAttributes, type TAttributeKind, type TGeneratedStorage, type TAttributeInfo } from
|
|
3
|
-
export { fetchPublicEnums, type TEnumInfo, type TGroupedEnums } from
|
|
4
|
-
export { fetchRelationIndexes, type TIndexInfo } from
|
|
5
|
-
export { fetchRelationForeignKeys, type TForeignKeyInfo } from
|
|
6
|
-
export { fetchPostgresVersion, type TPostgresVersion, fetchDatabaseIdentifier, type TDatabaseIdentifier } from
|
|
7
|
-
export { fetchRelationFileStats, type TRelationFileStats } from
|
|
8
|
-
export { analyzeRelation } from
|
|
9
|
-
export { fetchRelationStats, type TRelationStats, type TAttributeStats } from
|
|
1
|
+
export { fetchPublicRelations, type TRelationType, type TRelationInfo, type TGroupedRelations, } from './relations.mjs';
|
|
2
|
+
export { fetchRelationAttributes, type TAttributeKind, type TGeneratedStorage, type TAttributeInfo, } from './attributes.mjs';
|
|
3
|
+
export { fetchPublicEnums, type TEnumInfo, type TGroupedEnums, } from './enums.mjs';
|
|
4
|
+
export { fetchRelationIndexes, type TIndexInfo } from './indexes.mjs';
|
|
5
|
+
export { fetchRelationForeignKeys, type TForeignKeyInfo, } from './foreign-keys.mjs';
|
|
6
|
+
export { fetchPostgresVersion, type TPostgresVersion, fetchDatabaseComment, fetchDatabaseIdentifier, type TDatabaseIdentifier, } from './version.mjs';
|
|
7
|
+
export { fetchRelationFileStats, type TRelationFileStats, } from './file-stats.mjs';
|
|
8
|
+
export { analyzeRelation } from './analyze.mjs';
|
|
9
|
+
export { fetchRelationStats, type TRelationStats, type TAttributeStats, } from './stats.mjs';
|
|
10
10
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/db/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","sourceRoot":"./src/","sources":["db/index.mts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"./src/","sources":["db/index.mts"],"names":[],"mappings":"AAAA,OAAO,EACH,oBAAoB,EACpB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,iBAAiB,GACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACH,uBAAuB,EACvB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,cAAc,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACH,gBAAgB,EAChB,KAAK,SAAS,EACd,KAAK,aAAa,GACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAC,oBAAoB,EAAE,KAAK,UAAU,EAAC,MAAM,eAAe,CAAC;AACpE,OAAO,EACH,wBAAwB,EACxB,KAAK,eAAe,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACH,oBAAoB,EACpB,KAAK,gBAAgB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,KAAK,mBAAmB,GAC3B,MAAM,eAAe,CAAC;AACvB,OAAO,EACH,sBAAsB,EACtB,KAAK,kBAAkB,GAC1B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAC,eAAe,EAAC,MAAM,eAAe,CAAC;AAC9C,OAAO,EACH,kBAAkB,EAClB,KAAK,cAAc,EACnB,KAAK,eAAe,GACvB,MAAM,aAAa,CAAC"}
|
package/dist/db/index.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export { fetchPublicRelations } from
|
|
2
|
-
export { fetchRelationAttributes } from
|
|
3
|
-
export { fetchPublicEnums } from
|
|
4
|
-
export { fetchRelationIndexes } from
|
|
5
|
-
export { fetchRelationForeignKeys } from
|
|
6
|
-
export { fetchPostgresVersion, fetchDatabaseIdentifier } from
|
|
7
|
-
export { fetchRelationFileStats } from
|
|
8
|
-
export { analyzeRelation } from
|
|
9
|
-
export { fetchRelationStats } from
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export { fetchPublicRelations, } from './relations.mjs';
|
|
2
|
+
export { fetchRelationAttributes, } from './attributes.mjs';
|
|
3
|
+
export { fetchPublicEnums, } from './enums.mjs';
|
|
4
|
+
export { fetchRelationIndexes } from './indexes.mjs';
|
|
5
|
+
export { fetchRelationForeignKeys, } from './foreign-keys.mjs';
|
|
6
|
+
export { fetchPostgresVersion, fetchDatabaseComment, fetchDatabaseIdentifier, } from './version.mjs';
|
|
7
|
+
export { fetchRelationFileStats, } from './file-stats.mjs';
|
|
8
|
+
export { analyzeRelation } from './analyze.mjs';
|
|
9
|
+
export { fetchRelationStats, } from './stats.mjs';
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgubWpzIiwic291cmNlUm9vdCI6Ii4vc3JjLyIsInNvdXJjZXMiOlsiZGIvaW5kZXgubXRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxvQkFBb0IsR0FJdkIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQ0gsdUJBQXVCLEdBSTFCLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUNILGdCQUFnQixHQUduQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUMsb0JBQW9CLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFDSCx3QkFBd0IsR0FFM0IsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQ0gsb0JBQW9CLEVBRXBCLG9CQUFvQixFQUNwQix1QkFBdUIsR0FFMUIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILHNCQUFzQixHQUV6QixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxFQUNILGtCQUFrQixHQUdyQixNQUFNLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7XG4gICAgZmV0Y2hQdWJsaWNSZWxhdGlvbnMsXG4gICAgdHlwZSBUUmVsYXRpb25UeXBlLFxuICAgIHR5cGUgVFJlbGF0aW9uSW5mbyxcbiAgICB0eXBlIFRHcm91cGVkUmVsYXRpb25zLFxufSBmcm9tICcuL3JlbGF0aW9ucy5tanMnO1xuZXhwb3J0IHtcbiAgICBmZXRjaFJlbGF0aW9uQXR0cmlidXRlcyxcbiAgICB0eXBlIFRBdHRyaWJ1dGVLaW5kLFxuICAgIHR5cGUgVEdlbmVyYXRlZFN0b3JhZ2UsXG4gICAgdHlwZSBUQXR0cmlidXRlSW5mbyxcbn0gZnJvbSAnLi9hdHRyaWJ1dGVzLm1qcyc7XG5leHBvcnQge1xuICAgIGZldGNoUHVibGljRW51bXMsXG4gICAgdHlwZSBURW51bUluZm8sXG4gICAgdHlwZSBUR3JvdXBlZEVudW1zLFxufSBmcm9tICcuL2VudW1zLm1qcyc7XG5leHBvcnQge2ZldGNoUmVsYXRpb25JbmRleGVzLCB0eXBlIFRJbmRleEluZm99IGZyb20gJy4vaW5kZXhlcy5tanMnO1xuZXhwb3J0IHtcbiAgICBmZXRjaFJlbGF0aW9uRm9yZWlnbktleXMsXG4gICAgdHlwZSBURm9yZWlnbktleUluZm8sXG59IGZyb20gJy4vZm9yZWlnbi1rZXlzLm1qcyc7XG5leHBvcnQge1xuICAgIGZldGNoUG9zdGdyZXNWZXJzaW9uLFxuICAgIHR5cGUgVFBvc3RncmVzVmVyc2lvbixcbiAgICBmZXRjaERhdGFiYXNlQ29tbWVudCxcbiAgICBmZXRjaERhdGFiYXNlSWRlbnRpZmllcixcbiAgICB0eXBlIFREYXRhYmFzZUlkZW50aWZpZXIsXG59IGZyb20gJy4vdmVyc2lvbi5tanMnO1xuZXhwb3J0IHtcbiAgICBmZXRjaFJlbGF0aW9uRmlsZVN0YXRzLFxuICAgIHR5cGUgVFJlbGF0aW9uRmlsZVN0YXRzLFxufSBmcm9tICcuL2ZpbGUtc3RhdHMubWpzJztcbmV4cG9ydCB7YW5hbHl6ZVJlbGF0aW9ufSBmcm9tICcuL2FuYWx5emUubWpzJztcbmV4cG9ydCB7XG4gICAgZmV0Y2hSZWxhdGlvblN0YXRzLFxuICAgIHR5cGUgVFJlbGF0aW9uU3RhdHMsXG4gICAgdHlwZSBUQXR0cmlidXRlU3RhdHMsXG59IGZyb20gJy4vc3RhdHMubWpzJztcbiJdfQ==
|
package/dist/db/indexes.d.mts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexes.d.mts","sourceRoot":"./src/","sources":["db/indexes.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"indexes.d.mts","sourceRoot":"./src/","sources":["db/indexes.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,IAAI,CAAC;AAE7B,MAAM,MAAM,UAAU,GAAG;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,mBAAmB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC7B,MAAM,IAAI,EACV,cAAc,MAAM,KACrB,OAAO,CAAC,UAAU,EAAE,CAwCtB,CAAC"}
|
package/dist/db/indexes.mjs
CHANGED
|
@@ -35,4 +35,4 @@ export const fetchRelationIndexes = async (pool, relationName) => {
|
|
|
35
35
|
`, [relationName]);
|
|
36
36
|
return result.rows;
|
|
37
37
|
};
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXhlcy5tanMiLCJzb3VyY2VSb290IjoiLi9zcmMvIiwic291cmNlcyI6WyJkYi9pbmRleGVzLm10cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQkEsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsS0FBSyxFQUNyQyxJQUFVLEVBQ1YsWUFBb0IsRUFDQyxFQUFFO0lBQ3ZCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FDM0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQWlDQyxFQUNELENBQUMsWUFBWSxDQUFDLENBQ2pCLENBQUM7SUFFRixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDdkIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1Bvb2x9IGZyb20gJ3BnJztcblxuZXhwb3J0IHR5cGUgVEluZGV4SW5mbyA9IHtcbiAgICBpbmRleF9uYW1lOiBzdHJpbmc7XG4gICAgcmVsYXRpb25fbmFtZTogc3RyaW5nO1xuICAgIGlzX3VuaXF1ZTogYm9vbGVhbjtcbiAgICBpc19wcmltYXJ5OiBib29sZWFuO1xuICAgIGlzX2V4Y2x1c2lvbjogYm9vbGVhbjtcbiAgICBpc19wYXJ0aWFsOiBib29sZWFuO1xuICAgIHBhcnRpYWxfcHJlZGljYXRlOiBzdHJpbmcgfCBudWxsO1xuICAgIGF0dHJpYnV0ZXM6IHN0cmluZ1tdO1xuICAgIGV4Y2x1c2lvbl9vcGVyYXRvcnM6IHN0cmluZ1tdIHwgbnVsbDtcbiAgICBkZWZpbml0aW9uOiBzdHJpbmc7XG4gICAgY29tbWVudDogc3RyaW5nIHwgbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBmZXRjaFJlbGF0aW9uSW5kZXhlcyA9IGFzeW5jIChcbiAgICBwb29sOiBQb29sLFxuICAgIHJlbGF0aW9uTmFtZTogc3RyaW5nLFxuKTogUHJvbWlzZTxUSW5kZXhJbmZvW10+ID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwb29sLnF1ZXJ5PFRJbmRleEluZm8+KFxuICAgICAgICBgXG4gICAgICAgIFNFTEVDVFxuICAgICAgICAgICAgaS5yZWxuYW1lIEFTIGluZGV4X25hbWUsXG4gICAgICAgICAgICB0LnJlbG5hbWUgQVMgcmVsYXRpb25fbmFtZSxcbiAgICAgICAgICAgIGl4LmluZGlzdW5pcXVlIEFTIGlzX3VuaXF1ZSxcbiAgICAgICAgICAgIGl4LmluZGlzcHJpbWFyeSBBUyBpc19wcmltYXJ5LFxuICAgICAgICAgICAgaXguaW5kaXNleGNsdXNpb24gQVMgaXNfZXhjbHVzaW9uLFxuICAgICAgICAgICAgaXguaW5kcHJlZCBJUyBOT1QgTlVMTCBBUyBpc19wYXJ0aWFsLFxuICAgICAgICAgICAgcGdfZ2V0X2V4cHIoaXguaW5kcHJlZCwgaXguaW5kcmVsaWQpIEFTIHBhcnRpYWxfcHJlZGljYXRlLFxuICAgICAgICAgICAgQVJSQVkoXG4gICAgICAgICAgICAgICAgU0VMRUNUIHBnX2dldF9pbmRleGRlZihpeC5pbmRleHJlbGlkLCBrICsgMSwgdHJ1ZSlcbiAgICAgICAgICAgICAgICBGUk9NIGdlbmVyYXRlX3N1YnNjcmlwdHMoaXguaW5ka2V5LCAxKSBBUyBrXG4gICAgICAgICAgICAgICAgT1JERVIgQlkga1xuICAgICAgICAgICAgKSBBUyBhdHRyaWJ1dGVzLFxuICAgICAgICAgICAgQ0FTRVxuICAgICAgICAgICAgICAgIFdIRU4gaXguaW5kaXNleGNsdXNpb24gVEhFTiAoXG4gICAgICAgICAgICAgICAgICAgIFNFTEVDVCBBUlJBWV9BR0cob3Aub3BybmFtZSBPUkRFUiBCWSBvcmQubilcbiAgICAgICAgICAgICAgICAgICAgRlJPTSBwZ19jb25zdHJhaW50IGNvblxuICAgICAgICAgICAgICAgICAgICBDUk9TUyBKT0lOIExBVEVSQUwgdW5uZXN0KGNvbi5jb25leGNsb3ApIFdJVEggT1JESU5BTElUWSBBUyBvcmQob3BvaWQsIG4pXG4gICAgICAgICAgICAgICAgICAgIEpPSU4gcGdfb3BlcmF0b3Igb3AgT04gb3Aub2lkID0gb3JkLm9wb2lkXG4gICAgICAgICAgICAgICAgICAgIFdIRVJFIGNvbi5jb25pbmRpZCA9IGl4LmluZGV4cmVsaWRcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgRUxTRSBOVUxMXG4gICAgICAgICAgICBFTkQgQVMgZXhjbHVzaW9uX29wZXJhdG9ycyxcbiAgICAgICAgICAgIHBnX2dldF9pbmRleGRlZihpeC5pbmRleHJlbGlkKSBBUyBkZWZpbml0aW9uLFxuICAgICAgICAgICAgb2JqX2Rlc2NyaXB0aW9uKGkub2lkLCAncGdfY2xhc3MnKSBBUyBjb21tZW50XG4gICAgICAgIEZST00gcGdfY2F0YWxvZy5wZ19pbmRleCBpeFxuICAgICAgICBKT0lOIHBnX2NhdGFsb2cucGdfY2xhc3MgaSBPTiBpLm9pZCA9IGl4LmluZGV4cmVsaWRcbiAgICAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX2NsYXNzIHQgT04gdC5vaWQgPSBpeC5pbmRyZWxpZFxuICAgICAgICBKT0lOIHBnX2NhdGFsb2cucGdfbmFtZXNwYWNlIG4gT04gbi5vaWQgPSB0LnJlbG5hbWVzcGFjZVxuICAgICAgICBXSEVSRSBuLm5zcG5hbWUgPSAncHVibGljJ1xuICAgICAgICAgICAgQU5EIHQucmVsbmFtZSA9ICQxXG4gICAgICAgIE9SREVSIEJZIGkucmVsbmFtZVxuICAgICAgICBgLFxuICAgICAgICBbcmVsYXRpb25OYW1lXSxcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlc3VsdC5yb3dzO1xufTtcbiJdfQ==
|
package/dist/db/relations.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Pool } from
|
|
2
|
-
export type TRelationType =
|
|
1
|
+
import type { Pool } from 'pg';
|
|
2
|
+
export type TRelationType = 'partitioned_table' | 'table' | 'view' | 'materialized_view';
|
|
3
3
|
export type TRelationInfo = {
|
|
4
4
|
name: string;
|
|
5
5
|
type: TRelationType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relations.d.mts","sourceRoot":"./src/","sources":["db/relations.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"relations.d.mts","sourceRoot":"./src/","sources":["db/relations.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,IAAI,CAAC;AAG7B,MAAM,MAAM,aAAa,GACnB,mBAAmB,GACnB,OAAO,GACP,MAAM,GACN,mBAAmB,CAAC;AAE1B,MAAM,MAAM,aAAa,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,aAAa,EAAE,aAAa,EAAE,CAAC,CAAC;AAEvE,eAAO,MAAM,oBAAoB,GAC7B,MAAM,IAAI,KACX,OAAO,CAAC,iBAAiB,CAqB3B,CAAC"}
|
package/dist/db/relations.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { groupBy } from
|
|
1
|
+
import { groupBy } from 'es-toolkit';
|
|
2
2
|
export const fetchPublicRelations = async (pool) => {
|
|
3
3
|
const result = await pool.query(`
|
|
4
4
|
SELECT relname AS name,
|
|
@@ -20,4 +20,4 @@ export const fetchPublicRelations = async (pool) => {
|
|
|
20
20
|
`);
|
|
21
21
|
return groupBy(result.rows, (row) => row.type);
|
|
22
22
|
};
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb25zLm1qcyIsInNvdXJjZVJvb3QiOiIuL3NyYy8iLCJzb3VyY2VzIjpbImRiL3JlbGF0aW9ucy5tdHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLFlBQVksQ0FBQztBQWdCbkMsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsS0FBSyxFQUNyQyxJQUFVLEVBQ2dCLEVBQUU7SUFDNUIsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FpQjlDLENBQUMsQ0FBQztJQUVILE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQXNCLENBQUM7QUFDeEUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1Bvb2x9IGZyb20gJ3BnJztcbmltcG9ydCB7Z3JvdXBCeX0gZnJvbSAnZXMtdG9vbGtpdCc7XG5cbmV4cG9ydCB0eXBlIFRSZWxhdGlvblR5cGUgPVxuICAgIHwgJ3BhcnRpdGlvbmVkX3RhYmxlJ1xuICAgIHwgJ3RhYmxlJ1xuICAgIHwgJ3ZpZXcnXG4gICAgfCAnbWF0ZXJpYWxpemVkX3ZpZXcnO1xuXG5leHBvcnQgdHlwZSBUUmVsYXRpb25JbmZvID0ge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB0eXBlOiBUUmVsYXRpb25UeXBlO1xuICAgIGNvbW1lbnQ6IHN0cmluZyB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBUR3JvdXBlZFJlbGF0aW9ucyA9IFJlY29yZDxUUmVsYXRpb25UeXBlLCBUUmVsYXRpb25JbmZvW10+O1xuXG5leHBvcnQgY29uc3QgZmV0Y2hQdWJsaWNSZWxhdGlvbnMgPSBhc3luYyAoXG4gICAgcG9vbDogUG9vbCxcbik6IFByb21pc2U8VEdyb3VwZWRSZWxhdGlvbnM+ID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwb29sLnF1ZXJ5PFRSZWxhdGlvbkluZm8+KGBcbiAgICAgICAgU0VMRUNUIHJlbG5hbWUgQVMgbmFtZSxcbiAgICAgICAgICAgIENBU0UgcmVsa2luZFxuICAgICAgICAgICAgICAgIFdIRU4gJ3AnIFRIRU4gJ3BhcnRpdGlvbmVkX3RhYmxlJ1xuICAgICAgICAgICAgICAgIFdIRU4gJ3InIFRIRU4gJ3RhYmxlJ1xuICAgICAgICAgICAgICAgIFdIRU4gJ3YnIFRIRU4gJ3ZpZXcnXG4gICAgICAgICAgICAgICAgV0hFTiAnbScgVEhFTiAnbWF0ZXJpYWxpemVkX3ZpZXcnXG4gICAgICAgICAgICBFTkQgQVMgdHlwZSxcbiAgICAgICAgICAgIG9ial9kZXNjcmlwdGlvbihvaWQsICdwZ19jbGFzcycpIEFTIGNvbW1lbnRcbiAgICAgICAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzXG4gICAgICAgIFdIRVJFIHJlbG5hbWVzcGFjZSA9IChTRUxFQ1Qgb2lkIEZST00gcGdfbmFtZXNwYWNlIFdIRVJFIG5zcG5hbWUgPSAncHVibGljJylcbiAgICAgICAgICAgIEFORCAoXG4gICAgICAgICAgICAgICAgcmVsa2luZCA9ICdwJ1xuICAgICAgICAgICAgICAgIE9SIChyZWxraW5kID0gJ3InIEFORCBOT1QgcmVsaXNwYXJ0aXRpb24pXG4gICAgICAgICAgICAgICAgT1IgcmVsa2luZCBJTiAoJ3YnLCAnbScpXG4gICAgICAgICAgICApXG4gICAgICAgIE9SREVSIEJZIHR5cGUsIG5hbWVcbiAgICBgKTtcblxuICAgIHJldHVybiBncm91cEJ5KHJlc3VsdC5yb3dzLCAocm93KSA9PiByb3cudHlwZSkgYXMgVEdyb3VwZWRSZWxhdGlvbnM7XG59O1xuIl19
|
package/dist/db/stats.d.mts
CHANGED
package/dist/db/stats.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stats.d.mts","sourceRoot":"./src/","sources":["db/stats.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"stats.d.mts","sourceRoot":"./src/","sources":["db/stats.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,IAAI,CAAC;AAE7B,MAAM,MAAM,eAAe,GAAG;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,eAAe,EAAE,CAAC;CACjC,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC3B,MAAM,IAAI,EACV,cAAc,MAAM,KACrB,OAAO,CAAC,cAAc,CAuCxB,CAAC"}
|
package/dist/db/stats.mjs
CHANGED
|
@@ -13,7 +13,7 @@ export const fetchRelationStats = async (pool, relationName) => {
|
|
|
13
13
|
JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace AND n.nspname = s.schemaname
|
|
14
14
|
WHERE s.schemaname = 'public'
|
|
15
15
|
AND s.tablename = $1
|
|
16
|
-
ORDER BY s.
|
|
16
|
+
ORDER BY s.attname
|
|
17
17
|
`, [relationName]);
|
|
18
18
|
if (result.rows.length === 0) {
|
|
19
19
|
return {
|
|
@@ -31,4 +31,4 @@ export const fetchRelationStats = async (pool, relationName) => {
|
|
|
31
31
|
})),
|
|
32
32
|
};
|
|
33
33
|
};
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHMubWpzIiwic291cmNlUm9vdCI6Ii4vc3JjLyIsInNvdXJjZXMiOlsiZGIvc3RhdHMubXRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWFBLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLEtBQUssRUFDbkMsSUFBVSxFQUNWLFlBQW9CLEVBQ0csRUFBRTtJQUN6QixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBRzNCOzs7Ozs7Ozs7Ozs7Ozs7U0FlQyxFQUNELENBQUMsWUFBWSxDQUFDLENBQ2pCLENBQUM7SUFFRixJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzNCLE9BQU87WUFDSCxhQUFhLEVBQUUsWUFBWTtZQUMzQixtQkFBbUIsRUFBRSxDQUFDO1lBQ3RCLFVBQVUsRUFBRSxFQUFFO1NBQ2pCLENBQUM7SUFDTixDQUFDO0lBRUQsT0FBTztRQUNILGFBQWEsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWE7UUFDM0MsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUI7UUFDdkQsVUFBVSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBQyxjQUFjLEVBQUUsa0JBQWtCLEVBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNuRSxjQUFjO1lBQ2Qsa0JBQWtCO1NBQ3JCLENBQUMsQ0FBQztLQUNOLENBQUM7QUFDTixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7UG9vbH0gZnJvbSAncGcnO1xuXG5leHBvcnQgdHlwZSBUQXR0cmlidXRlU3RhdHMgPSB7XG4gICAgYXR0cmlidXRlX25hbWU6IHN0cmluZztcbiAgICBlc3RpbWF0ZWRfZGlzdGluY3Q6IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIFRSZWxhdGlvblN0YXRzID0ge1xuICAgIHJlbGF0aW9uX25hbWU6IHN0cmluZztcbiAgICBlc3RpbWF0ZWRfcm93X2NvdW50OiBudW1iZXI7XG4gICAgYXR0cmlidXRlczogVEF0dHJpYnV0ZVN0YXRzW107XG59O1xuXG5leHBvcnQgY29uc3QgZmV0Y2hSZWxhdGlvblN0YXRzID0gYXN5bmMgKFxuICAgIHBvb2w6IFBvb2wsXG4gICAgcmVsYXRpb25OYW1lOiBzdHJpbmcsXG4pOiBQcm9taXNlPFRSZWxhdGlvblN0YXRzPiA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcG9vbC5xdWVyeTxcbiAgICAgICAgVEF0dHJpYnV0ZVN0YXRzICYge3JlbGF0aW9uX25hbWU6IHN0cmluZzsgZXN0aW1hdGVkX3Jvd19jb3VudDogbnVtYmVyfVxuICAgID4oXG4gICAgICAgIGBcbiAgICAgICAgU0VMRUNUXG4gICAgICAgICAgICBzLnRhYmxlbmFtZSBBUyByZWxhdGlvbl9uYW1lLFxuICAgICAgICAgICAgYy5yZWx0dXBsZXM6OmJpZ2ludCBBUyBlc3RpbWF0ZWRfcm93X2NvdW50LFxuICAgICAgICAgICAgcy5hdHRuYW1lIEFTIGF0dHJpYnV0ZV9uYW1lLFxuICAgICAgICAgICAgQ0FTRVxuICAgICAgICAgICAgICAgIFdIRU4gcy5uX2Rpc3RpbmN0ID4gMCBUSEVOIHMubl9kaXN0aW5jdFxuICAgICAgICAgICAgICAgIEVMU0UgYWJzKHMubl9kaXN0aW5jdCkgKiBjLnJlbHR1cGxlc1xuICAgICAgICAgICAgRU5EOjpiaWdpbnQgQVMgZXN0aW1hdGVkX2Rpc3RpbmN0XG4gICAgICAgIEZST00gcGdfY2F0YWxvZy5wZ19zdGF0cyBzXG4gICAgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19jbGFzcyBjIE9OIGMucmVsbmFtZSA9IHMudGFibGVuYW1lXG4gICAgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgbiBPTiBuLm9pZCA9IGMucmVsbmFtZXNwYWNlIEFORCBuLm5zcG5hbWUgPSBzLnNjaGVtYW5hbWVcbiAgICAgICAgV0hFUkUgcy5zY2hlbWFuYW1lID0gJ3B1YmxpYydcbiAgICAgICAgICAgIEFORCBzLnRhYmxlbmFtZSA9ICQxXG4gICAgICAgIE9SREVSIEJZIHMuYXR0bmFtZVxuICAgICAgICBgLFxuICAgICAgICBbcmVsYXRpb25OYW1lXSxcbiAgICApO1xuXG4gICAgaWYgKHJlc3VsdC5yb3dzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVsYXRpb25fbmFtZTogcmVsYXRpb25OYW1lLFxuICAgICAgICAgICAgZXN0aW1hdGVkX3Jvd19jb3VudDogMCxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IFtdLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIHJlbGF0aW9uX25hbWU6IHJlc3VsdC5yb3dzWzBdLnJlbGF0aW9uX25hbWUsXG4gICAgICAgIGVzdGltYXRlZF9yb3dfY291bnQ6IHJlc3VsdC5yb3dzWzBdLmVzdGltYXRlZF9yb3dfY291bnQsXG4gICAgICAgIGF0dHJpYnV0ZXM6IHJlc3VsdC5yb3dzLm1hcCgoe2F0dHJpYnV0ZV9uYW1lLCBlc3RpbWF0ZWRfZGlzdGluY3R9KSA9PiAoe1xuICAgICAgICAgICAgYXR0cmlidXRlX25hbWUsXG4gICAgICAgICAgICBlc3RpbWF0ZWRfZGlzdGluY3QsXG4gICAgICAgIH0pKSxcbiAgICB9O1xufTtcbiJdfQ==
|
package/dist/db/version.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Pool } from
|
|
1
|
+
import type { Pool } from 'pg';
|
|
2
2
|
export type TPostgresVersion = {
|
|
3
3
|
version: string;
|
|
4
4
|
version_num: number;
|
|
@@ -9,5 +9,6 @@ export type TDatabaseIdentifier = {
|
|
|
9
9
|
database_oid: number;
|
|
10
10
|
database_name: string;
|
|
11
11
|
};
|
|
12
|
+
export declare const fetchDatabaseComment: (pool: Pool) => Promise<string | null>;
|
|
12
13
|
export declare const fetchDatabaseIdentifier: (pool: Pool) => Promise<TDatabaseIdentifier>;
|
|
13
14
|
//# sourceMappingURL=version.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.mts","sourceRoot":"./src/","sources":["db/version.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"version.d.mts","sourceRoot":"./src/","sources":["db/version.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,IAAI,CAAC;AAE7B,MAAM,MAAM,gBAAgB,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC7B,MAAM,IAAI,KACX,OAAO,CAAC,gBAAgB,CAQ1B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC7B,MAAM,IAAI,KACX,OAAO,CAAC,MAAM,GAAG,IAAI,CAQvB,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAChC,MAAM,IAAI,KACX,OAAO,CAAC,mBAAmB,CAU7B,CAAC"}
|
package/dist/db/version.mjs
CHANGED
|
@@ -6,6 +6,14 @@ export const fetchPostgresVersion = async (pool) => {
|
|
|
6
6
|
`);
|
|
7
7
|
return result.rows[0];
|
|
8
8
|
};
|
|
9
|
+
export const fetchDatabaseComment = async (pool) => {
|
|
10
|
+
const result = await pool.query(`
|
|
11
|
+
SELECT shobj_description(d.oid, 'pg_database') AS comment
|
|
12
|
+
FROM pg_database d
|
|
13
|
+
WHERE d.datname = current_database()
|
|
14
|
+
`);
|
|
15
|
+
return result.rows[0].comment;
|
|
16
|
+
};
|
|
9
17
|
export const fetchDatabaseIdentifier = async (pool) => {
|
|
10
18
|
const result = await pool.query(`
|
|
11
19
|
SELECT
|
|
@@ -16,4 +24,4 @@ export const fetchDatabaseIdentifier = async (pool) => {
|
|
|
16
24
|
`);
|
|
17
25
|
return result.rows[0];
|
|
18
26
|
};
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5tanMiLCJzb3VyY2VSb290IjoiLi9zcmMvIiwic291cmNlcyI6WyJkYi92ZXJzaW9uLm10cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxLQUFLLEVBQ3JDLElBQVUsRUFDZSxFQUFFO0lBQzNCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBbUI7Ozs7S0FJakQsQ0FBQyxDQUFDO0lBRUgsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFCLENBQUMsQ0FBQztBQVFGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLEtBQUssRUFDckMsSUFBVSxFQUNZLEVBQUU7SUFDeEIsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUEyQjs7OztLQUl6RCxDQUFDLENBQUM7SUFFSCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0FBQ2xDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLEtBQUssRUFDeEMsSUFBVSxFQUNrQixFQUFFO0lBQzlCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBc0I7Ozs7OztLQU1wRCxDQUFDLENBQUM7SUFFSCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1Bvb2x9IGZyb20gJ3BnJztcblxuZXhwb3J0IHR5cGUgVFBvc3RncmVzVmVyc2lvbiA9IHtcbiAgICB2ZXJzaW9uOiBzdHJpbmc7XG4gICAgdmVyc2lvbl9udW06IG51bWJlcjtcbn07XG5cbmV4cG9ydCBjb25zdCBmZXRjaFBvc3RncmVzVmVyc2lvbiA9IGFzeW5jIChcbiAgICBwb29sOiBQb29sLFxuKTogUHJvbWlzZTxUUG9zdGdyZXNWZXJzaW9uPiA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcG9vbC5xdWVyeTxUUG9zdGdyZXNWZXJzaW9uPihgXG4gICAgICAgIFNFTEVDVFxuICAgICAgICAgICAgY3VycmVudF9zZXR0aW5nKCdzZXJ2ZXJfdmVyc2lvbicpIEFTIHZlcnNpb24sXG4gICAgICAgICAgICBjdXJyZW50X3NldHRpbmcoJ3NlcnZlcl92ZXJzaW9uX251bScpOjppbnQgQVMgdmVyc2lvbl9udW1cbiAgICBgKTtcblxuICAgIHJldHVybiByZXN1bHQucm93c1swXTtcbn07XG5cbmV4cG9ydCB0eXBlIFREYXRhYmFzZUlkZW50aWZpZXIgPSB7XG4gICAgc3lzdGVtX2lkZW50aWZpZXI6IHN0cmluZztcbiAgICBkYXRhYmFzZV9vaWQ6IG51bWJlcjtcbiAgICBkYXRhYmFzZV9uYW1lOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgY29uc3QgZmV0Y2hEYXRhYmFzZUNvbW1lbnQgPSBhc3luYyAoXG4gICAgcG9vbDogUG9vbCxcbik6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4gPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBvb2wucXVlcnk8e2NvbW1lbnQ6IHN0cmluZyB8IG51bGx9PihgXG4gICAgICAgIFNFTEVDVCBzaG9ial9kZXNjcmlwdGlvbihkLm9pZCwgJ3BnX2RhdGFiYXNlJykgQVMgY29tbWVudFxuICAgICAgICBGUk9NIHBnX2RhdGFiYXNlIGRcbiAgICAgICAgV0hFUkUgZC5kYXRuYW1lID0gY3VycmVudF9kYXRhYmFzZSgpXG4gICAgYCk7XG5cbiAgICByZXR1cm4gcmVzdWx0LnJvd3NbMF0uY29tbWVudDtcbn07XG5cbmV4cG9ydCBjb25zdCBmZXRjaERhdGFiYXNlSWRlbnRpZmllciA9IGFzeW5jIChcbiAgICBwb29sOiBQb29sLFxuKTogUHJvbWlzZTxURGF0YWJhc2VJZGVudGlmaWVyPiA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcG9vbC5xdWVyeTxURGF0YWJhc2VJZGVudGlmaWVyPihgXG4gICAgICAgIFNFTEVDVFxuICAgICAgICAgICAgc3lzdGVtX2lkZW50aWZpZXI6OnRleHQgQVMgc3lzdGVtX2lkZW50aWZpZXIsXG4gICAgICAgICAgICAoU0VMRUNUIG9pZDo6aW50IEZST00gcGdfZGF0YWJhc2UgV0hFUkUgZGF0bmFtZSA9IGN1cnJlbnRfZGF0YWJhc2UoKSkgQVMgZGF0YWJhc2Vfb2lkLFxuICAgICAgICAgICAgY3VycmVudF9kYXRhYmFzZSgpIEFTIGRhdGFiYXNlX25hbWVcbiAgICAgICAgRlJPTSBwZ19jb250cm9sX3N5c3RlbSgpXG4gICAgYCk7XG5cbiAgICByZXR1cm4gcmVzdWx0LnJvd3NbMF07XG59O1xuIl19
|
package/dist/index.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
export type TSSLMode =
|
|
3
|
-
export interface
|
|
2
|
+
export type TSSLMode = 'disable' | 'allow' | 'prefer' | 'require' | 'verify-ca' | 'verify-full';
|
|
3
|
+
export interface TOptions {
|
|
4
4
|
hostname?: string;
|
|
5
5
|
port?: number;
|
|
6
6
|
database?: string;
|
|
@@ -9,9 +9,10 @@ export interface ConnectionOptions {
|
|
|
9
9
|
sslcert?: string;
|
|
10
10
|
sslkey?: string;
|
|
11
11
|
sslrootcert?: string;
|
|
12
|
+
ssh?: string;
|
|
12
13
|
sshHost?: string;
|
|
13
14
|
sshPort?: number;
|
|
14
15
|
sshUsername?: string;
|
|
15
|
-
|
|
16
|
+
sshKey?: string;
|
|
16
17
|
}
|
|
17
18
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","sourceRoot":"./src/","sources":["index.mts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"./src/","sources":["index.mts"],"names":[],"mappings":";AAcA,MAAM,MAAM,QAAQ,GACd,SAAS,GACT,OAAO,GACP,QAAQ,GACR,SAAS,GACT,WAAW,GACX,aAAa,CAAC;AAEpB,MAAM,WAAW,QAAQ;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,75 +1,74 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { Command } from
|
|
3
|
-
import { render } from
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import { render } from 'ink';
|
|
4
|
+
import { createElement } from 'react';
|
|
5
|
+
import { Error } from './ui/components/Error.js';
|
|
6
|
+
import { App } from './ui/App.js';
|
|
7
|
+
import { createAppStore } from './store.mjs';
|
|
8
|
+
import { validatePathOptions, } from './validatePaths.mjs';
|
|
9
|
+
import { run } from './app/index.mjs';
|
|
10
|
+
const parseSSHTarget = (target) => {
|
|
11
|
+
const atIndex = target.indexOf('@');
|
|
12
|
+
const username = atIndex >= 0 ? target.slice(0, atIndex) : undefined;
|
|
13
|
+
const hostPort = atIndex >= 0 ? target.slice(atIndex + 1) : target;
|
|
14
|
+
const colonIndex = hostPort.lastIndexOf(':');
|
|
15
|
+
const host = colonIndex >= 0 ? hostPort.slice(0, colonIndex) : hostPort;
|
|
16
|
+
const port = colonIndex >= 0
|
|
17
|
+
? parseInt(hostPort.slice(colonIndex + 1), 10)
|
|
18
|
+
: undefined;
|
|
19
|
+
return { username, host, port };
|
|
20
|
+
};
|
|
7
21
|
const program = new Command();
|
|
8
22
|
program
|
|
9
|
-
.name(
|
|
10
|
-
.description(
|
|
11
|
-
.version(
|
|
12
|
-
.argument(
|
|
13
|
-
.option(
|
|
14
|
-
.option(
|
|
15
|
-
.option(
|
|
16
|
-
.option(
|
|
17
|
-
.option(
|
|
18
|
-
.option(
|
|
19
|
-
.option(
|
|
20
|
-
.option(
|
|
21
|
-
.option(
|
|
22
|
-
.option(
|
|
23
|
-
.option(
|
|
24
|
-
.option(
|
|
23
|
+
.name('dbctx')
|
|
24
|
+
.description('AI generated docs from your application database')
|
|
25
|
+
.version('1.0.0')
|
|
26
|
+
.argument('[connection-string]', 'PostgreSQL connection string (env: DATABASE_URL)')
|
|
27
|
+
.option('-h, --hostname <host>', 'database hostname (env: PGHOST, default: localhost)')
|
|
28
|
+
.option('-p, --port <port>', 'database port (env: PGPORT, default: 5432)', parseInt)
|
|
29
|
+
.option('-d, --database <name>', 'database name (env: PGDATABASE, default: postgres)')
|
|
30
|
+
.option('-U, --username <user>', 'database username (env: PGUSER, default: postgres)')
|
|
31
|
+
.option('--sslmode <mode>', 'SSL mode: disable|allow|prefer|require|verify-ca|verify-full (env: PGSSLMODE, default: prefer)')
|
|
32
|
+
.option('--sslcert <path>', 'path to client certificate (env: PGSSLCERT)')
|
|
33
|
+
.option('--sslkey <path>', 'path to client private key (env: PGSSLKEY)')
|
|
34
|
+
.option('--sslrootcert <path>', 'path to root CA certificate (env: PGSSLROOTCERT)')
|
|
35
|
+
.option('--ssh <target>', 'SSH tunnel target (user@host[:port])')
|
|
36
|
+
.option('--ssh-host <host>', 'SSH tunnel host (bastion/jump server)')
|
|
37
|
+
.option('--ssh-port <port>', 'SSH tunnel port (default: 22)', parseInt)
|
|
38
|
+
.option('--ssh-username <user>', 'SSH tunnel username (default: $USER)')
|
|
39
|
+
.option('-i, --ssh-key <path>', 'path to SSH private key (default: ~/.ssh/id_rsa)')
|
|
25
40
|
.action((connectionString, options) => {
|
|
26
|
-
const hasConnectionString = Boolean(connectionString);
|
|
27
|
-
const hasIndividualOptions = Boolean(options.hostname || options.port || options.database || options.username);
|
|
28
|
-
if (hasConnectionString && hasIndividualOptions) {
|
|
29
|
-
render(Error({
|
|
30
|
-
message: "Cannot use both connection string and individual options (-h, -p, -d, -U). Use one or the other.",
|
|
31
|
-
}));
|
|
32
|
-
process.exit(1);
|
|
33
|
-
}
|
|
34
41
|
// Validate path options exist on filesystem
|
|
35
42
|
const { errors: pathErrors, expandedPaths } = validatePathOptions(options);
|
|
36
43
|
if (pathErrors.length > 0) {
|
|
37
44
|
const errorMessages = pathErrors
|
|
38
45
|
.map(({ option, path }) => ` ${option}: ${path}`)
|
|
39
|
-
.join(
|
|
46
|
+
.join('\n');
|
|
40
47
|
render(Error({
|
|
41
48
|
message: `The following paths do not exist:\n${errorMessages}`,
|
|
42
49
|
}));
|
|
43
50
|
process.exit(1);
|
|
44
51
|
}
|
|
45
|
-
// Replace original paths with expanded paths
|
|
52
|
+
// Replace original paths with expanded paths
|
|
53
|
+
// (~ resolved to home directory)
|
|
46
54
|
const validatedOptions = {
|
|
47
55
|
...options,
|
|
48
56
|
...expandedPaths,
|
|
49
57
|
};
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
{ key: "database", flag: "-d/--database" },
|
|
55
|
-
{ key: "username", flag: "-U/--username" },
|
|
56
|
-
];
|
|
57
|
-
const missing = requiredOptions
|
|
58
|
-
.filter(({ key }) => !validatedOptions[key])
|
|
59
|
-
.map(({ flag }) => flag);
|
|
60
|
-
if (missing.length > 0) {
|
|
61
|
-
render(Error({
|
|
62
|
-
message: `Missing required options: ${missing.join(", ")}`,
|
|
63
|
-
}));
|
|
64
|
-
process.exit(1);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
// All validations passed - build config and render the app
|
|
58
|
+
// Build config and render the app
|
|
59
|
+
const sshDefaults = validatedOptions.ssh
|
|
60
|
+
? parseSSHTarget(validatedOptions.ssh)
|
|
61
|
+
: undefined;
|
|
68
62
|
const config = {
|
|
69
63
|
connectionString,
|
|
70
64
|
...validatedOptions,
|
|
65
|
+
sshHost: validatedOptions.sshHost ?? sshDefaults?.host,
|
|
66
|
+
sshPort: validatedOptions.sshPort ?? sshDefaults?.port,
|
|
67
|
+
sshUsername: validatedOptions.sshUsername ?? sshDefaults?.username,
|
|
71
68
|
};
|
|
72
|
-
|
|
69
|
+
const store = createAppStore(config);
|
|
70
|
+
render(createElement(App, { store }));
|
|
71
|
+
run(store);
|
|
73
72
|
});
|
|
74
73
|
program.parse();
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgubWpzIiwic291cmNlUm9vdCI6Ii4vc3JjLyIsInNvdXJjZXMiOlsiaW5kZXgubXRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFDN0IsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlDLE9BQU8sRUFBRSxHQUFHLEVBQTBCLE1BQU0sVUFBVSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxtQkFBbUIsRUFBNkIsTUFBTSxxQkFBcUIsQ0FBQztBQW1CckYsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUU5QixPQUFPO0tBQ0YsSUFBSSxDQUFDLE9BQU8sQ0FBQztLQUNiLFdBQVcsQ0FBQyxrREFBa0QsQ0FBQztLQUMvRCxPQUFPLENBQUMsT0FBTyxDQUFDO0tBQ2hCLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxrREFBa0QsQ0FBQztLQUNuRixNQUFNLENBQUMsdUJBQXVCLEVBQUUscURBQXFELENBQUM7S0FDdEYsTUFBTSxDQUFDLG1CQUFtQixFQUFFLDRDQUE0QyxFQUFFLFFBQVEsQ0FBQztLQUNuRixNQUFNLENBQUMsdUJBQXVCLEVBQUUsb0RBQW9ELENBQUM7S0FDckYsTUFBTSxDQUFDLHVCQUF1QixFQUFFLG9EQUFvRCxDQUFDO0tBQ3JGLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxnR0FBZ0csQ0FBQztLQUM1SCxNQUFNLENBQUMsa0JBQWtCLEVBQUUsNkNBQTZDLENBQUM7S0FDekUsTUFBTSxDQUFDLGlCQUFpQixFQUFFLDRDQUE0QyxDQUFDO0tBQ3ZFLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRSxrREFBa0QsQ0FBQztLQUNsRixNQUFNLENBQUMsbUJBQW1CLEVBQUUsdUNBQXVDLENBQUM7S0FDcEUsTUFBTSxDQUFDLG1CQUFtQixFQUFFLCtCQUErQixFQUFFLFFBQVEs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ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5pbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiaW5rXCI7XG5pbXBvcnQgeyBFcnJvciB9IGZyb20gXCIuL2NvbXBvbmVudHMvRXJyb3IuanNcIjtcbmltcG9ydCB7IEFwcCwgdHlwZSBUQ29ubmVjdGlvbkNvbmZpZyB9IGZyb20gXCIuL0FwcC5qc1wiO1xuaW1wb3J0IHsgdmFsaWRhdGVQYXRoT3B0aW9ucywgdHlwZSBUUGF0aFZhbGlkYXRpb25FcnJvciB9IGZyb20gXCIuL3ZhbGlkYXRlUGF0aHMubWpzXCI7XG5cbmV4cG9ydCB0eXBlIFRTU0xNb2RlID0gXCJkaXNhYmxlXCIgfCBcImFsbG93XCIgfCBcInByZWZlclwiIHwgXCJyZXF1aXJlXCIgfCBcInZlcmlmeS1jYVwiIHwgXCJ2ZXJpZnktZnVsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbm5lY3Rpb25PcHRpb25zIHtcbiAgICBob3N0bmFtZT86IHN0cmluZztcbiAgICBwb3J0PzogbnVtYmVyO1xuICAgIGRhdGFiYXNlPzogc3RyaW5nO1xuICAgIHVzZXJuYW1lPzogc3RyaW5nO1xuICAgIHNzbG1vZGU/OiBUU1NMTW9kZTtcbiAgICBzc2xjZXJ0Pzogc3RyaW5nO1xuICAgIHNzbGtleT86IHN0cmluZztcbiAgICBzc2xyb290Y2VydD86IHN0cmluZztcbiAgICBzc2hIb3N0Pzogc3RyaW5nO1xuICAgIHNzaFBvcnQ/OiBudW1iZXI7XG4gICAgc3NoVXNlcm5hbWU/OiBzdHJpbmc7XG4gICAgc3NoUHJpdmF0ZUtleT86IHN0cmluZztcbn1cblxuY29uc3QgcHJvZ3JhbSA9IG5ldyBDb21tYW5kKCk7XG5cbnByb2dyYW1cbiAgICAubmFtZShcImRiY3R4XCIpXG4gICAgLmRlc2NyaXB0aW9uKFwiQUkgZ2VuZXJhdGVkIGRvY3MgZnJvbSB5b3VyIGFwcGxpY2F0aW9uIGRhdGFiYXNlXCIpXG4gICAgLnZlcnNpb24oXCIxLjAuMFwiKVxuICAgIC5hcmd1bWVudChcIltjb25uZWN0aW9uLXN0cmluZ11cIiwgXCJQb3N0Z3JlU1FMIGNvbm5lY3Rpb24gc3RyaW5nIChlbnY6IERBVEFCQVNFX1VSTClcIilcbiAgICAub3B0aW9uKFwiLWgsIC0taG9zdG5hbWUgPGhvc3Q+XCIsIFwiZGF0YWJhc2UgaG9zdG5hbWUgKGVudjogUEdIT1NULCBkZWZhdWx0OiBsb2NhbGhvc3QpXCIpXG4gICAgLm9wdGlvbihcIi1wLCAtLXBvcnQgPHBvcnQ+XCIsIFwiZGF0YWJhc2UgcG9ydCAoZW52OiBQR1BPUlQsIGRlZmF1bHQ6IDU0MzIpXCIsIHBhcnNlSW50KVxuICAgIC5vcHRpb24oXCItZCwgLS1kYXRhYmFzZSA8bmFtZT5cIiwgXCJkYXRhYmFzZSBuYW1lIChlbnY6IFBHREFUQUJBU0UsIGRlZmF1bHQ6IHBvc3RncmVzKVwiKVxuICAgIC5vcHRpb24oXCItVSwgLS11c2VybmFtZSA8dXNlcj5cIiwgXCJkYXRhYmFzZSB1c2VybmFtZSAoZW52OiBQR1VTRVIsIGRlZmF1bHQ6IHBvc3RncmVzKVwiKVxuICAgIC5vcHRpb24oXCItLXNzbG1vZGUgPG1vZGU+XCIsIFwiU1NMIG1vZGU6IGRpc2FibGV8YWxsb3d8cHJlZmVyfHJlcXVpcmV8dmVyaWZ5LWNhfHZlcmlmeS1mdWxsIChlbnY6IFBHU1NMTU9ERSwgZGVmYXVsdDogcHJlZmVyKVwiKVxuICAgIC5vcHRpb24oXCItLXNzbGNlcnQgPHBhdGg+XCIsIFwicGF0aCB0byBjbGllbnQgY2VydGlmaWNhdGUgKGVudjogUEdTU0xDRVJUKVwiKVxuICAgIC5vcHRpb24oXCItLXNzbGtleSA8cGF0aD5cIiwgXCJwYXRoIHRvIGNsaWVudCBwcml2YXRlIGtleSAoZW52OiBQR1NTTEtFWSlcIilcbiAgICAub3B0aW9uKFwiLS1zc2xyb290Y2VydCA8cGF0aD5cIiwgXCJwYXRoIHRvIHJvb3QgQ0EgY2VydGlmaWNhdGUgKGVudjogUEdTU0xST09UQ0VSVClcIilcbiAgICAub3B0aW9uKFwiLS1zc2gtaG9zdCA8aG9zdD5cIiwgXCJTU0ggdHVubmVsIGhvc3QgKGJhc3Rpb24vanVtcCBzZXJ2ZXIpXCIpXG4gICAgLm9wdGlvbihcIi0tc3NoLXBvcnQgPHBvcnQ+XCIsIFwiU1NIIHR1bm5lbCBwb3J0IChkZWZhdWx0OiAyMilcIiwgcGFyc2VJbnQpXG4gICAgLm9wdGlvbihcIi0tc3NoLXVzZXJuYW1lIDx1c2VyPlwiLCBcIlNTSCB0dW5uZWwgdXNlcm5hbWUgKGRlZmF1bHQ6ICRVU0VSKVwiKVxuICAgIC5vcHRpb24oXCItLXNzaC1wcml2YXRlLWtleSA8cGF0aD5cIiwgXCJwYXRoIHRvIFNTSCBwcml2YXRlIGtleSAoZGVmYXVsdDogfi8uc3NoL2lkX3JzYSlcIilcbiAgICAuYWN0aW9uKChjb25uZWN0aW9uU3RyaW5nOiBzdHJpbmcgfCB1bmRlZmluZWQsIG9wdGlvbnM6IENvbm5lY3Rpb25PcHRpb25zKSA9PiB7XG4gICAgICAgIGNvbnN0IGhhc0Nvbm5lY3Rpb25TdHJpbmcgPSBCb29sZWFuKGNvbm5lY3Rpb25TdHJpbmcpO1xuICAgICAgICBjb25zdCBoYXNJbmRpdmlkdWFsT3B0aW9ucyA9IEJvb2xlYW4oXG4gICAgICAgICAgICBvcHRpb25zLmhvc3RuYW1lIHx8IG9wdGlvbnMucG9ydCB8fCBvcHRpb25zLmRhdGFiYXNlIHx8IG9wdGlvbnMudXNlcm5hbWVcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoaGFzQ29ubmVjdGlvblN0cmluZyAmJiBoYXNJbmRpdmlkdWFsT3B0aW9ucykge1xuICAgICAgICAgICAgcmVuZGVyKFxuICAgICAgICAgICAgICAgIEVycm9yKHtcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2Fubm90IHVzZSBib3RoIGNvbm5lY3Rpb24gc3RyaW5nIGFuZCBpbmRpdmlkdWFsIG9wdGlvbnMgKC1oLCAtcCwgLWQsIC1VKS4gVXNlIG9uZSBvciB0aGUgb3RoZXIuXCIsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIHBhdGggb3B0aW9ucyBleGlzdCBvbiBmaWxlc3lzdGVtXG4gICAgICAgIGNvbnN0IHsgZXJyb3JzOiBwYXRoRXJyb3JzLCBleHBhbmRlZFBhdGhzIH0gPSB2YWxpZGF0ZVBhdGhPcHRpb25zKG9wdGlvbnMpO1xuXG4gICAgICAgIGlmIChwYXRoRXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZXMgPSBwYXRoRXJyb3JzXG4gICAgICAgICAgICAgICAgLm1hcCgoeyBvcHRpb24sIHBhdGggfTogVFBhdGhWYWxpZGF0aW9uRXJyb3IpID0+IGAgICR7b3B0aW9ufTogJHtwYXRofWApXG4gICAgICAgICAgICAgICAgLmpvaW4oXCJcXG5cIik7XG5cbiAgICAgICAgICAgIHJlbmRlcihcbiAgICAgICAgICAgICAgICBFcnJvcih7XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBUaGUgZm9sbG93aW5nIHBhdGhzIGRvIG5vdCBleGlzdDpcXG4ke2Vycm9yTWVzc2FnZXN9YCxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmVwbGFjZSBvcmlnaW5hbCBwYXRocyB3aXRoIGV4cGFuZGVkIHBhdGhzICh+IHJlc29sdmVkIHRvIGhvbWUgZGlyZWN0b3J5KVxuICAgICAgICBjb25zdCB2YWxpZGF0ZWRPcHRpb25zOiBDb25uZWN0aW9uT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICAuLi5leHBhbmRlZFBhdGhzLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChoYXNJbmRpdmlkdWFsT3B0aW9ucykge1xuICAgICAgICAgICAgY29uc3QgcmVxdWlyZWRPcHRpb25zID0gW1xuICAgICAgICAgICAgICAgIHsga2V5OiBcImhvc3RuYW1lXCIsIGZsYWc6IFwiLWgvLS1ob3N0bmFtZVwiIH0sXG4gICAgICAgICAgICAgICAgeyBrZXk6IFwicG9ydFwiLCBmbGFnOiBcIi1wLy0tcG9ydFwiIH0sXG4gICAgICAgICAgICAgICAgeyBrZXk6IFwiZGF0YWJhc2VcIiwgZmxhZzogXCItZC8tLWRhdGFiYXNlXCIgfSxcbiAgICAgICAgICAgICAgICB7IGtleTogXCJ1c2VybmFtZVwiLCBmbGFnOiBcIi1VLy0tdXNlcm5hbWVcIiB9LFxuICAgICAgICAgICAgXSBhcyBjb25zdDtcblxuICAgICAgICAgICAgY29uc3QgbWlzc2luZyA9IHJlcXVpcmVkT3B0aW9uc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHsga2V5IH0pID0+ICF2YWxpZGF0ZWRPcHRpb25zW2tleV0pXG4gICAgICAgICAgICAgICAgLm1hcCgoeyBmbGFnIH0pID0+IGZsYWcpO1xuXG4gICAgICAgICAgICBpZiAobWlzc2luZy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmVuZGVyKFxuICAgICAgICAgICAgICAgICAgICBFcnJvcih7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBgTWlzc2luZyByZXF1aXJlZCBvcHRpb25zOiAke21pc3Npbmcuam9pbihcIiwgXCIpfWAsXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEFsbCB2YWxpZGF0aW9ucyBwYXNzZWQgLSBidWlsZCBjb25maWcgYW5kIHJlbmRlciB0aGUgYXBwXG4gICAgICAgIGNvbnN0IGNvbmZpZzogVENvbm5lY3Rpb25Db25maWcgPSB7XG4gICAgICAgICAgICBjb25uZWN0aW9uU3RyaW5nLFxuICAgICAgICAgICAgLi4udmFsaWRhdGVkT3B0aW9ucyxcbiAgICAgICAgfTtcblxuICAgICAgICByZW5kZXIoQXBwKHsgY29uZmlnIH0pKTtcbiAgICB9KTtcblxucHJvZ3JhbS5wYXJzZSgpO1xuIl19
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgubWpzIiwic291cmNlUm9vdCI6Ii4vc3JjLyIsInNvdXJjZXMiOlsiaW5kZXgubXRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxLQUFLLENBQUM7QUFDM0IsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLE9BQU8sQ0FBQztBQUNwQyxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDL0MsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUNoQyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQzNDLE9BQU8sRUFDSCxtQkFBbUIsR0FFdEIsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUEwQnBDLE1BQU0sY0FBYyxHQUFHLENBQ25CLE1BQWMsRUFLaEIsRUFBRTtJQUNBLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsTUFBTSxRQUFRLEdBQUcsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNyRSxNQUFNLFFBQVEsR0FBRyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ25FLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0MsTUFBTSxJQUFJLEdBQUcsVUFBVSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFD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RSxJQUFJO1FBQ3RELFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxXQUFXLElBQUksV0FBVyxFQUFFLFFBQVE7S0FDckUsQ0FBQztJQUVGLE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVyQyxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQztJQUVwQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDZixDQUFDLENBQUMsQ0FBQztBQUVQLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcbmltcG9ydCB7Q29tbWFuZH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCB7cmVuZGVyfSBmcm9tICdpbmsnO1xuaW1wb3J0IHtjcmVhdGVFbGVtZW50fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0Vycm9yfSBmcm9tICcuL3VpL2NvbXBvbmVudHMvRXJyb3IuanMnO1xuaW1wb3J0IHtBcHB9IGZyb20gJy4vdWkvQXBwLmpzJztcbmltcG9ydCB7Y3JlYXRlQXBwU3RvcmV9IGZyb20gJy4vc3RvcmUubWpzJztcbmltcG9ydCB7XG4gICAgdmFsaWRhdGVQYXRoT3B0aW9ucyxcbiAgICB0eXBlIFRQYXRoVmFsaWRhdGlvbkVycm9yLFxufSBmcm9tICcuL3ZhbGlkYXRlUGF0aHMubWpzJztcbmltcG9ydCB7VENvbm5lY3Rpb25Db25maWd9IGZyb20gJy4vdHlwZXMvY29ubmVjdGlvbi5tanMnO1xuaW1wb3J0IHtydW59IGZyb20gJy4vYXBwL2luZGV4Lm1qcyc7XG5cbmV4cG9ydCB0eXBlIFRTU0xNb2RlID1cbiAgICB8ICdkaXNhYmxlJ1xuICAgIHwgJ2FsbG93J1xuICAgIHwgJ3ByZWZlcidcbiAgICB8ICdyZXF1aXJlJ1xuICAgIHwgJ3ZlcmlmeS1jYSdcbiAgICB8ICd2ZXJpZnktZnVsbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVE9wdGlvbnMge1xuICAgIGhvc3RuYW1lPzogc3RyaW5nO1xuICAgIHBvcnQ/OiBudW1iZXI7XG4gICAgZGF0YWJhc2U/OiBzdHJpbmc7XG4gICAgdXNlcm5hbWU/OiBzdHJpbmc7XG4gICAgc3NsbW9kZT86IFRTU0xNb2RlO1xuICAgIHNzbGNlcnQ/OiBzdHJpbmc7XG4gICAgc3Nsa2V5Pzogc3RyaW5nO1xuICAgIHNzbHJvb3RjZXJ0Pzogc3RyaW5nO1xuICAgIHNzaD86IHN0cmluZztcbiAgICBzc2hIb3N0Pzogc3RyaW5nO1xuICAgIHNzaFBvcnQ/OiBudW1iZXI7XG4gICAgc3NoVXNlcm5hbWU/OiBzdHJpbmc7XG4gICAgc3NoS2V5Pzogc3RyaW5nO1xufVxuXG5jb25zdCBwYXJzZVNTSFRhcmdldCA9IChcbiAgICB0YXJnZXQ6IHN0cmluZyxcbik6IHtcbiAgICB1c2VybmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGhvc3Q6IHN0cmluZztcbiAgICBwb3J0OiBudW1iZXIgfCB1bmRlZmluZWQ7XG59ID0+IHtcbiAgICBjb25zdCBhdEluZGV4ID0gdGFyZ2V0LmluZGV4T2YoJ0AnKTtcbiAgICBjb25zdCB1c2VybmFtZSA9IGF0SW5kZXggPj0gMCA/IHRhcmdldC5zbGljZSgwLCBhdEluZGV4KSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBob3N0UG9ydCA9IGF0SW5kZXggPj0gMCA/IHRhcmdldC5zbGljZShhdEluZGV4ICsgMSkgOiB0YXJnZXQ7XG4gICAgY29uc3QgY29sb25JbmRleCA9IGhvc3RQb3J0Lmxhc3RJbmRleE9mKCc6Jyk7XG4gICAgY29uc3QgaG9zdCA9IGNvbG9uSW5kZXggPj0gMCA/IGhvc3RQb3J0LnNsaWNlKDAsIGNvbG9uSW5kZXgpIDogaG9zdFBvcnQ7XG4gICAgY29uc3QgcG9ydCA9XG4gICAgICAgIGNvbG9uSW5kZXggPj0gMFxuICAgICAgICAgICAgPyBwYXJzZUludChob3N0UG9ydC5zbGljZShjb2xvbkluZGV4ICsgMSksIDEwKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4ge3VzZXJuYW1lLCBob3N0LCBwb3J0fTtcbn07XG5cbmNvbnN0IHByb2dyYW0gPSBuZXcgQ29tbWFuZCgpO1xuXG5wcm9ncmFtXG4gICAgLm5hbWUoJ2RiY3R4JylcbiAgICAuZGVzY3JpcHRpb24oJ0FJIGdlbmVyYXRlZCBkb2NzIGZyb20geW91ciBhcHBsaWNhdGlvbiBkYXRhYmFzZScpXG4gICAgLnZlcnNpb24oJzEuMC4wJylcbiAgICAuYXJndW1lbnQoXG4gICAgICAgICdbY29ubmVjdGlvbi1zdHJpbmddJyxcbiAgICAgICAgJ1Bvc3RncmVTUUwgY29ubmVjdGlvbiBzdHJpbmcgKGVudjogREFUQUJBU0VfVVJMKScsXG4gICAgKVxuICAgIC5vcHRpb24oXG4gICAgICAgICctaCwgLS1ob3N0bmFtZSA8aG9zdD4nLFxuICAgICAgICAnZGF0YWJhc2UgaG9zdG5hbWUgKGVudjogUEdIT1NULCBkZWZhdWx0OiBsb2NhbGhvc3QpJyxcbiAgICApXG4gICAgLm9wdGlvbihcbiAgICAgICAgJy1wLCAtLXBvcnQgPHBvcnQ+JyxcbiAgICAgICAgJ2RhdGFiYXNlIHBvcnQgKGVudjogUEdQT1JULCBkZWZhdWx0OiA1NDMyKScsXG4gICAgICAgIHBhcnNlSW50LFxuICAgIClcbiAgICAub3B0aW9uKFxuICAgICAgICAnLWQsIC0tZGF0YWJhc2UgPG5hbWU+JyxcbiAgICAgICAgJ2RhdGFiYXNlIG5hbWUgKGVudjogUEdEQVRBQkFTRSwgZGVmYXVsdDogcG9zdGdyZXMpJyxcbiAgICApXG4gICAgLm9wdGlvbihcbiAgICAgICAgJy1VLCAtLXVzZXJuYW1lIDx1c2VyPicsXG4gICAgICAgICdkYXRhYmFzZSB1c2VybmFtZSAoZW52OiBQR1VTRVIsIGRlZmF1bHQ6IHBvc3RncmVzKScsXG4gICAgKVxuICAgIC5vcHRpb24oXG4gICAgICAgICctLXNzbG1vZGUgPG1vZGU+JyxcbiAgICAgICAgJ1NTTCBtb2RlOiBkaXNhYmxlfGFsbG93fHByZWZlcnxyZXF1aXJlfHZlcmlmeS1jYXx2ZXJpZnktZnVsbCAoZW52OiBQR1NTTE1PREUsIGRlZmF1bHQ6IHByZWZlciknLFxuICAgIClcbiAgICAub3B0aW9uKCctLXNzbGNlcnQgPHBhdGg+JywgJ3BhdGggdG8gY2xpZW50IGNlcnRpZmljYXRlIChlbnY6IFBHU1NMQ0VSVCknKVxuICAgIC5vcHRpb24oJy0tc3Nsa2V5IDxwYXRoPicsICdwYXRoIHRvIGNsaWVudCBwcml2YXRlIGtleSAoZW52OiBQR1NTTEtFWSknKVxuICAgIC5vcHRpb24oXG4gICAgICAgICctLXNzbHJvb3RjZXJ0IDxwYXRoPicsXG4gICAgICAgICdwYXRoIHRvIHJvb3QgQ0EgY2VydGlmaWNhdGUgKGVudjogUEdTU0xST09UQ0VSVCknLFxuICAgIClcbiAgICAub3B0aW9uKCctLXNzaCA8dGFyZ2V0PicsICdTU0ggdHVubmVsIHRhcmdldCAodXNlckBob3N0Wzpwb3J0XSknKVxuICAgIC5vcHRpb24oJy0tc3NoLWhvc3QgPGhvc3Q+JywgJ1NTSCB0dW5uZWwgaG9zdCAoYmFzdGlvbi9qdW1wIHNlcnZlciknKVxuICAgIC5vcHRpb24oJy0tc3NoLXBvcnQgPHBvcnQ+JywgJ1NTSCB0dW5uZWwgcG9ydCAoZGVmYXVsdDogMjIpJywgcGFyc2VJbnQpXG4gICAgLm9wdGlvbignLS1zc2gtdXNlcm5hbWUgPHVzZXI+JywgJ1NTSCB0dW5uZWwgdXNlcm5hbWUgKGRlZmF1bHQ6ICRVU0VSKScpXG4gICAgLm9wdGlvbihcbiAgICAgICAgJy1pLCAtLXNzaC1rZXkgPHBhdGg+JyxcbiAgICAgICAgJ3BhdGggdG8gU1NIIHByaXZhdGUga2V5IChkZWZhdWx0OiB+Ly5zc2gvaWRfcnNhKScsXG4gICAgKVxuICAgIC5hY3Rpb24oKGNvbm5lY3Rpb25TdHJpbmc6IHN0cmluZyB8IHVuZGVmaW5lZCwgb3B0aW9uczogVE9wdGlvbnMpID0+IHtcbiAgICAgICAgLy8gVmFsaWRhdGUgcGF0aCBvcHRpb25zIGV4aXN0IG9uIGZpbGVzeXN0ZW1cbiAgICAgICAgY29uc3Qge2Vycm9yczogcGF0aEVycm9ycywgZXhwYW5kZWRQYXRoc30gPVxuICAgICAgICAgICAgdmFsaWRhdGVQYXRoT3B0aW9ucyhvcHRpb25zKTtcblxuICAgICAgICBpZiAocGF0aEVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2VzID0gcGF0aEVycm9yc1xuICAgICAgICAgICAgICAgIC5tYXAoXG4gICAgICAgICAgICAgICAgICAgICh7b3B0aW9uLCBwYXRofTogVFBhdGhWYWxpZGF0aW9uRXJyb3IpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBgICAke29wdGlvbn06ICR7cGF0aH1gLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuam9pbignXFxuJyk7XG5cbiAgICAgICAgICAgIHJlbmRlcihcbiAgICAgICAgICAgICAgICBFcnJvcih7XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBUaGUgZm9sbG93aW5nIHBhdGhzIGRvIG5vdCBleGlzdDpcXG4ke2Vycm9yTWVzc2FnZXN9YCxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJlcGxhY2Ugb3JpZ2luYWwgcGF0aHMgd2l0aCBleHBhbmRlZCBwYXRoc1xuICAgICAgICAvLyAofiByZXNvbHZlZCB0byBob21lIGRpcmVjdG9yeSlcbiAgICAgICAgY29uc3QgdmFsaWRhdGVkT3B0aW9uczogVE9wdGlvbnMgPSB7XG4gICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgLi4uZXhwYW5kZWRQYXRocyxcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBCdWlsZCBjb25maWcgYW5kIHJlbmRlciB0aGUgYXBwXG4gICAgICAgIGNvbnN0IHNzaERlZmF1bHRzID0gdmFsaWRhdGVkT3B0aW9ucy5zc2hcbiAgICAgICAgICAgID8gcGFyc2VTU0hUYXJnZXQodmFsaWRhdGVkT3B0aW9ucy5zc2gpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICBjb25zdCBjb25maWc6IFRDb25uZWN0aW9uQ29uZmlnID0ge1xuICAgICAgICAgICAgY29ubmVjdGlvblN0cmluZyxcbiAgICAgICAgICAgIC4uLnZhbGlkYXRlZE9wdGlvbnMsXG4gICAgICAgICAgICBzc2hIb3N0OiB2YWxpZGF0ZWRPcHRpb25zLnNzaEhvc3QgPz8gc3NoRGVmYXVsdHM/Lmhvc3QsXG4gICAgICAgICAgICBzc2hQb3J0OiB2YWxpZGF0ZWRPcHRpb25zLnNzaFBvcnQgPz8gc3NoRGVmYXVsdHM/LnBvcnQsXG4gICAgICAgICAgICBzc2hVc2VybmFtZTogdmFsaWRhdGVkT3B0aW9ucy5zc2hVc2VybmFtZSA/PyBzc2hEZWZhdWx0cz8udXNlcm5hbWUsXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3Qgc3RvcmUgPSBjcmVhdGVBcHBTdG9yZShjb25maWcpO1xuXG4gICAgICAgIHJlbmRlcihjcmVhdGVFbGVtZW50KEFwcCwge3N0b3JlfSkpO1xuXG4gICAgICAgIHJ1bihzdG9yZSk7XG4gICAgfSk7XG5cbnByb2dyYW0ucGFyc2UoKTtcbiJdfQ==
|