dbctx 1.4.6 → 1.5.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.
Files changed (47) hide show
  1. package/dist/app/assemble.d.mts +2 -2
  2. package/dist/app/assemble.d.mts.map +1 -1
  3. package/dist/app/assemble.mjs +19 -14
  4. package/dist/app/db.d.mts.map +1 -1
  5. package/dist/app/db.mjs +3 -2
  6. package/dist/app/detect.d.mts +1 -0
  7. package/dist/app/detect.d.mts.map +1 -1
  8. package/dist/app/detect.mjs +3 -2
  9. package/dist/app/index.d.mts.map +1 -1
  10. package/dist/app/index.mjs +84 -10
  11. package/dist/app/session.d.mts +2 -2
  12. package/dist/app/session.d.mts.map +1 -1
  13. package/dist/app/session.mjs +3 -3
  14. package/dist/app/ssh.d.mts.map +1 -1
  15. package/dist/app/ssh.mjs +12 -1
  16. package/dist/db/foreign-keys.mjs +3 -3
  17. package/dist/db/index.d.mts +1 -1
  18. package/dist/db/index.d.mts.map +1 -1
  19. package/dist/db/index.mjs +2 -2
  20. package/dist/db/relations.d.mts +1 -0
  21. package/dist/db/relations.d.mts.map +1 -1
  22. package/dist/db/relations.mjs +10 -1
  23. package/dist/db/stats.mjs +3 -3
  24. package/dist/index.d.mts +5 -0
  25. package/dist/index.d.mts.map +1 -1
  26. package/dist/index.mjs +28 -4
  27. package/dist/store.d.mts +20 -1
  28. package/dist/store.d.mts.map +1 -1
  29. package/dist/store.mjs +18 -2
  30. package/dist/ui/App.d.ts.map +1 -1
  31. package/dist/ui/App.js +13 -3
  32. package/dist/ui/components/OutputJson.d.ts +10 -0
  33. package/dist/ui/components/OutputJson.d.ts.map +1 -0
  34. package/dist/ui/components/OutputJson.js +18 -0
  35. package/dist/ui/components/TextInput.d.ts +11 -0
  36. package/dist/ui/components/TextInput.d.ts.map +1 -0
  37. package/dist/ui/components/TextInput.js +286 -0
  38. package/dist/ui/components/UserExplanation.d.ts +10 -0
  39. package/dist/ui/components/UserExplanation.d.ts.map +1 -0
  40. package/dist/ui/components/UserExplanation.js +34 -0
  41. package/dist/validatePaths.d.mts +1 -0
  42. package/dist/validatePaths.d.mts.map +1 -1
  43. package/dist/validatePaths.mjs +2 -2
  44. package/package.json +1 -1
  45. package/dist/schemas/index.d.mts +0 -107
  46. package/dist/schemas/index.d.mts.map +0 -1
  47. package/dist/schemas/index.mjs +0 -116
@@ -0,0 +1,34 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ import { observer } from 'mobx-react-lite';
4
+ import { runInAction } from 'mobx';
5
+ import { TextInput } from './TextInput.js';
6
+ const TRUNCATE_LENGTH = 80;
7
+ const truncate = (text) => text.length > TRUNCATE_LENGTH
8
+ ? `${text.slice(0, TRUNCATE_LENGTH)}...`
9
+ : text;
10
+ export const UserExplanation = observer(({ store }) => {
11
+ const step = store.steps.userExplanation;
12
+ if (step.state === 'idle') {
13
+ return null;
14
+ }
15
+ if (step.state === 'done') {
16
+ return (_jsx(Box, { flexDirection: "column", children: _jsxs(Box, { children: [_jsx(Text, { color: "green", children: "\u25CF" }), _jsx(Text, { children: " " }), _jsx(Text, { bold: true, children: "EXPLANATION: " }), _jsx(Text, { dimColor: true, children: truncate(step.value ?? '') })] }) }));
17
+ }
18
+ const handleSubmit = (value) => {
19
+ const trimmed = value.trim();
20
+ if (trimmed.length === 0) {
21
+ return;
22
+ }
23
+ runInAction(() => {
24
+ store.steps.userExplanation.value = trimmed;
25
+ store.steps.userExplanation.state = 'done';
26
+ });
27
+ };
28
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsx(Text, { color: "yellow", children: "\u25CF" }), _jsx(Text, { children: " " }), _jsx(Text, { bold: true, children: "EXPLANATION: " }), _jsx(Text, { children: "Describe this database" })] }), _jsxs(Box, { paddingLeft: 2, flexDirection: "column", children: [_jsx(Box, { width: 96, flexDirection: 'column', paddingTop: 1, children: _jsx(Text, { dimColor: true, children: "Mention what kind of DB it is, which app it's for, what the business is, if it's standalone or part of a larger ecosystem, and what the app does (Ctrl+J for new line)" }) }), _jsx(Text, { children: " " }), _jsx(TextInput, { isActive: step.state === 'prompting', onSubmit: handleSubmit, placeholder: "e.g. a multi-vendor ecommerce platform part of a larger superapp", linePrefix: (lineNumber, totalLines) => {
29
+ const width = String(totalLines).length;
30
+ const num = String(lineNumber + 1).padStart(width, ' ');
31
+ return (_jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: num }), _jsx(Text, { color: "gray", children: " \u2503 " })] }));
32
+ } })] })] }));
33
+ });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXNlckV4cGxhbmF0aW9uLmpzIiwic291cmNlUm9vdCI6Ii4vc3JjLyIsInNvdXJjZXMiOlsidWkvY29tcG9uZW50cy9Vc2VyRXhwbGFuYXRpb24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsR0FBRyxFQUFFLElBQUksRUFBQyxNQUFNLEtBQUssQ0FBQztBQUU5QixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVqQyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFNekMsTUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFDO0FBRTNCLE1BQU0sUUFBUSxHQUFHLENBQUMsSUFBWSxFQUFVLEVBQUUsQ0FDdEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxlQUFlO0lBQ3pCLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxLQUFLO0lBQ3hDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFFZixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUNuQyxDQUFDLEVBQUMsS0FBSyxFQUF3QixFQUFhLEVBQUU7SUFDMUMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUM7SUFFekMsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLE1BQU0sRUFBRSxDQUFDO1FBQ3hCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssTUFBTSxFQUFFLENBQUM7UUFDeEIsT0FBTyxDQUNILEtBQUMsR0FBRyxJQUFDLGFBQWEsRUFBQyxRQUFRLFlBQ3ZCLE1BQUMsR0FBRyxlQUNBLEtBQUMsSUFBSSxJQUFDLEtBQUssRUFBQyxPQUFPLHVCQUFTLEVBQzVCLEtBQUMsSUFBSSxvQkFBUyxFQUNkLEtBQUMsSUFBSSxJQUFDLElBQUksb0NBQXFCLEVBQy9CLEtBQUMsSUFBSSxJQUFDLFFBQVEsa0JBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLEdBQVEsSUFDaEQsR0FDSixDQUNULENBQUM7SUFDTixDQUFDO0lBRUQsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFhLEVBQUUsRUFBRTtRQUNuQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDN0IsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU87UUFDWCxDQUFDO1FBQ0QsV0FBVyxDQUFDLEdBQUcsRUFBRTtZQUNiLEtBQUssQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUM7WUFDNUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztRQUMvQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQztJQUVGLE9BQU8sQ0FDSCxNQUFDLEdBQUcsSUFBQyxhQUFhLEVBQUMsUUFBUSxhQUN2QixNQUFDLEdBQUcsZUFDQSxLQUFDLElBQUksSUFBQyxLQUFLLEVBQUMsUUFBUSx1QkFBUyxFQUM3QixLQUFDLElBQUksb0JBQVMsRUFDZCxLQUFDLElBQUksSUFBQyxJQUFJLG9DQUFxQixFQUMvQixLQUFDLElBQUkseUNBQThCLElBQ2pDLEVBQ04sTUFBQyxHQUFHLElBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxhQUFhLEVBQUMsUUFBUSxhQUN2QyxLQUFDLEdBQUcsSUFBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLENBQUMsWUFDbEQsS0FBQyxJQUFJLElBQUMsUUFBUSw2TEFLUCxHQUNMLEVBQ04sS0FBQyxJQUFJLG9CQUFTLEVBQ2QsS0FBQyxTQUFTLElBQ04sUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLEtBQUssV0FBVyxFQUNwQyxRQUFRLEVBQUUsWUFBWSxFQUN0QixXQUFXLEVBQUMsa0VBQWtFLEVBQzlFLFVBQVUsRUFBRSxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsRUFBRTs0QkFDbkMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQzs0QkFDeEMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQ3ZDLEtBQUssRUFDTCxHQUFHLENBQ04sQ0FBQzs0QkFDRixPQUFPLENBQ0gsTUFBQyxJQUFJLGVBQ0QsS0FBQyxJQUFJLElBQUMsUUFBUSxrQkFBRSxHQUFHLEdBQVEsRUFDM0IsS0FBQyxJQUFJLElBQUMsS0FBSyxFQUFDLE1BQU0seUJBQVcsSUFDMUIsQ0FDVixDQUFDO3dCQUNOLENBQUMsR0FDSCxJQUNBLElBQ0osQ0FDVCxDQUFDO0FBQ04sQ0FBQyxDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0JveCwgVGV4dH0gZnJvbSAnaW5rJztcbmltcG9ydCB0eXBlIHtSZWFjdE5vZGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7b2JzZXJ2ZXJ9IGZyb20gJ21vYngtcmVhY3QtbGl0ZSc7XG5pbXBvcnQge3J1bkluQWN0aW9ufSBmcm9tICdtb2J4JztcbmltcG9ydCB0eXBlIHtUU3RvcmV9IGZyb20gJy4uLy4uL3N0b3JlLm1qcyc7XG5pbXBvcnQge1RleHRJbnB1dH0gZnJvbSAnLi9UZXh0SW5wdXQuanMnO1xuXG50eXBlIFRVc2VyRXhwbGFuYXRpb25Qcm9wcyA9IHtcbiAgICByZWFkb25seSBzdG9yZTogVFN0b3JlO1xufTtcblxuY29uc3QgVFJVTkNBVEVfTEVOR1RIID0gODA7XG5cbmNvbnN0IHRydW5jYXRlID0gKHRleHQ6IHN0cmluZyk6IHN0cmluZyA9PlxuICAgIHRleHQubGVuZ3RoID4gVFJVTkNBVEVfTEVOR1RIXG4gICAgICAgID8gYCR7dGV4dC5zbGljZSgwLCBUUlVOQ0FURV9MRU5HVEgpfS4uLmBcbiAgICAgICAgOiB0ZXh0O1xuXG5leHBvcnQgY29uc3QgVXNlckV4cGxhbmF0aW9uID0gb2JzZXJ2ZXIoXG4gICAgKHtzdG9yZX06IFRVc2VyRXhwbGFuYXRpb25Qcm9wcyk6IFJlYWN0Tm9kZSA9PiB7XG4gICAgICAgIGNvbnN0IHN0ZXAgPSBzdG9yZS5zdGVwcy51c2VyRXhwbGFuYXRpb247XG5cbiAgICAgICAgaWYgKHN0ZXAuc3RhdGUgPT09ICdpZGxlJykge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RlcC5zdGF0ZSA9PT0gJ2RvbmUnKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8Qm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgPFRleHQgY29sb3I9XCJncmVlblwiPuKXjzwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUZXh0PiA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dCBib2xkPkVYUExBTkFUSU9OOiA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dCBkaW1Db2xvcj57dHJ1bmNhdGUoc3RlcC52YWx1ZSA/PyAnJyl9PC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBoYW5kbGVTdWJtaXQgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgY29uc3QgdHJpbW1lZCA9IHZhbHVlLnRyaW0oKTtcbiAgICAgICAgICAgIGlmICh0cmltbWVkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJ1bkluQWN0aW9uKCgpID0+IHtcbiAgICAgICAgICAgICAgICBzdG9yZS5zdGVwcy51c2VyRXhwbGFuYXRpb24udmFsdWUgPSB0cmltbWVkO1xuICAgICAgICAgICAgICAgIHN0b3JlLnN0ZXBzLnVzZXJFeHBsYW5hdGlvbi5zdGF0ZSA9ICdkb25lJztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8Qm94IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIj5cbiAgICAgICAgICAgICAgICA8Qm94PlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBjb2xvcj1cInllbGxvd1wiPuKXjzwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPFRleHQ+IDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPFRleHQgYm9sZD5FWFBMQU5BVElPTjogPC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICA8VGV4dD5EZXNjcmliZSB0aGlzIGRhdGFiYXNlPC9UZXh0PlxuICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgIDxCb3ggcGFkZGluZ0xlZnQ9ezJ9IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgPEJveCB3aWR0aD17OTZ9IGZsZXhEaXJlY3Rpb249eydjb2x1bW4nfSBwYWRkaW5nVG9wPXsxfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUZXh0IGRpbUNvbG9yPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbnRpb24gd2hhdCBraW5kIG9mIERCIGl0IGlzLCB3aGljaCBhcHAgaXQncyBmb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hhdCB0aGUgYnVzaW5lc3MgaXMsIGlmIGl0J3Mgc3RhbmRhbG9uZSBvciBwYXJ0IG9mXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBsYXJnZXIgZWNvc3lzdGVtLCBhbmQgd2hhdCB0aGUgYXBwIGRvZXMgKEN0cmwrSlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBuZXcgbGluZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0PiA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQWN0aXZlPXtzdGVwLnN0YXRlID09PSAncHJvbXB0aW5nJ31cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9XG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImUuZy4gYSBtdWx0aS12ZW5kb3IgZWNvbW1lcmNlIHBsYXRmb3JtIHBhcnQgb2YgYSBsYXJnZXIgc3VwZXJhcHBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbGluZVByZWZpeD17KGxpbmVOdW1iZXIsIHRvdGFsTGluZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3aWR0aCA9IFN0cmluZyh0b3RhbExpbmVzKS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbnVtID0gU3RyaW5nKGxpbmVOdW1iZXIgKyAxKS5wYWRTdGFydChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRleHQgZGltQ29sb3I+e251bX08L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGV4dCBjb2xvcj1cImdyYXlcIj4g4pSDIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICk7XG4gICAgfSxcbik7XG4iXX0=
@@ -4,6 +4,7 @@ export type TPathValidationError = {
4
4
  path: string;
5
5
  error: string;
6
6
  };
7
+ export declare const normalizePath: (path: string) => string;
7
8
  export declare const validatePathOptions: <T extends Partial<Record<TPathOptionKey, string>>>(options: T) => {
8
9
  errors: TPathValidationError[];
9
10
  expandedPaths: Partial<Record<TPathOptionKey, string>>;
@@ -1 +1 @@
1
- {"version":3,"file":"validatePaths.d.mts","sourceRoot":"./src/","sources":["validatePaths.mts"],"names":[],"mappings":"AAQA,KAAK,cAAc,GAAG,SAAS,GAAG,QAAQ,GAAG,aAAa,GAAG,QAAQ,CAAC;AAEtE,MAAM,MAAM,oBAAoB,GAAG;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAwBF,eAAO,MAAM,mBAAmB,GAC5B,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,EAEjD,SAAS,CAAC,KACX;IACC,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAC/B,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;CA0C1D,CAAC"}
1
+ {"version":3,"file":"validatePaths.d.mts","sourceRoot":"./src/","sources":["validatePaths.mts"],"names":[],"mappings":"AAQA,KAAK,cAAc,GAAG,SAAS,GAAG,QAAQ,GAAG,aAAa,GAAG,QAAQ,CAAC;AAEtE,MAAM,MAAM,oBAAoB,GAAG;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAOF,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG,MACf,CAAC;AAiB/B,eAAO,MAAM,mBAAmB,GAC5B,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,EAEjD,SAAS,CAAC,KACX;IACC,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAC/B,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;CA0C1D,CAAC"}
@@ -4,7 +4,7 @@ import { resolve } from 'node:path';
4
4
  const expandTilde = (path) => path.startsWith('~/') || path === '~'
5
5
  ? path.replace(/^~/, homedir())
6
6
  : path;
7
- const normalizePath = (path) => resolve(expandTilde(path));
7
+ export const normalizePath = (path) => resolve(expandTilde(path));
8
8
  const validatePathExists = (path) => {
9
9
  const expandedPath = normalizePath(path);
10
10
  return existsSync(expandedPath)
@@ -51,4 +51,4 @@ export const validatePathOptions = (options) => {
51
51
  }), {});
52
52
  return { errors, expandedPaths };
53
53
  };
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGVQYXRocy5tanMiLCJzb3VyY2VSb290IjoiLi9zcmMvIiwic291cmNlcyI6WyJ2YWxpZGF0ZVBhdGhzLm10cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBQ25DLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFDaEMsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLFdBQVcsQ0FBQztBQWNsQyxNQUFNLFdBQVcsR0FBRyxDQUFDLElBQVksRUFBVSxFQUFFLENBQ3pDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxLQUFLLEdBQUc7SUFDakMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQy9CLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFFZixNQUFNLGFBQWEsR0FBRyxDQUFDLElBQVksRUFBVSxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBRTNFLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxJQUFZLEVBQXlCLEVBQUU7SUFDL0QsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXpDLE9BQU8sVUFBVSxDQUFDLFlBQVksQ0FBQztRQUMzQixDQUFDLENBQUMsRUFBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBQztRQUM3QixDQUFDLENBQUMsRUFBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSx3QkFBd0IsSUFBSSxFQUFFLEVBQUMsQ0FBQztBQUNoRSxDQUFDLENBQUM7QUFFRixNQUFNLGtCQUFrQixHQUFtQztJQUN2RCxPQUFPLEVBQUUsV0FBVztJQUNwQixNQUFNLEVBQUUsVUFBVTtJQUNsQixXQUFXLEVBQUUsZUFBZTtJQUM1QixNQUFNLEVBQUUsV0FBVztDQUN0QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FHL0IsT0FBVSxFQUlaLEVBQUU7SUFDQSxNQUFNLFFBQVEsR0FBcUI7UUFDL0IsU0FBUztRQUNULFFBQVE7UUFDUixhQUFhO1FBQ2IsUUFBUTtLQUNYLENBQUM7SUFFRixNQUFNLE9BQU8sR0FBRyxRQUFRO1NBQ25CLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFNBQVMsQ0FBQztTQUMzQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUNULE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQVcsQ0FBQztRQUNwQyxNQUFNLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV4QyxPQUFPO1lBQ0gsR0FBRztZQUNILElBQUk7WUFDSixNQUFNO1NBQ1QsQ0FBQztJQUNOLENBQUMsQ0FBQyxDQUFDO0lBRVAsTUFBTSxNQUFNLEdBQUcsT0FBTztTQUNqQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDOUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ1QsTUFBTSxFQUFFLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDakMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO1FBQ1osS0FBSyxFQUFHLENBQUMsQ0FBQyxNQUF3QyxDQUFDLEtBQUs7S0FDM0QsQ0FBQyxDQUFDLENBQUM7SUFFUixNQUFNLGFBQWEsR0FBRyxPQUFPO1NBQ3hCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDN0IsTUFBTSxDQUNILENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNULEdBQUcsR0FBRztRQUNOLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFHLENBQUMsQ0FBQyxNQUE4QzthQUNyRCxZQUFZO0tBQ3BCLENBQUMsRUFDRixFQUE2QyxDQUNoRCxDQUFDO0lBRU4sT0FBTyxFQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUMsQ0FBQztBQUNuQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2V4aXN0c1N5bmN9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHtob21lZGlyfSBmcm9tICdub2RlOm9zJztcbmltcG9ydCB7cmVzb2x2ZX0gZnJvbSAnbm9kZTpwYXRoJztcblxudHlwZSBUUGF0aFZhbGlkYXRpb25SZXN1bHQgPVxuICAgIHwge3ZhbGlkOiB0cnVlOyBleHBhbmRlZFBhdGg6IHN0cmluZ31cbiAgICB8IHt2YWxpZDogZmFsc2U7IGVycm9yOiBzdHJpbmd9O1xuXG50eXBlIFRQYXRoT3B0aW9uS2V5ID0gJ3NzbGNlcnQnIHwgJ3NzbGtleScgfCAnc3Nscm9vdGNlcnQnIHwgJ3NzaEtleSc7XG5cbmV4cG9ydCB0eXBlIFRQYXRoVmFsaWRhdGlvbkVycm9yID0ge1xuICAgIG9wdGlvbjogc3RyaW5nO1xuICAgIHBhdGg6IHN0cmluZztcbiAgICBlcnJvcjogc3RyaW5nO1xufTtcblxuY29uc3QgZXhwYW5kVGlsZGUgPSAocGF0aDogc3RyaW5nKTogc3RyaW5nID0+XG4gICAgcGF0aC5zdGFydHNXaXRoKCd+LycpIHx8IHBhdGggPT09ICd+J1xuICAgICAgICA/IHBhdGgucmVwbGFjZSgvXn4vLCBob21lZGlyKCkpXG4gICAgICAgIDogcGF0aDtcblxuY29uc3Qgbm9ybWFsaXplUGF0aCA9IChwYXRoOiBzdHJpbmcpOiBzdHJpbmcgPT4gcmVzb2x2ZShleHBhbmRUaWxkZShwYXRoKSk7XG5cbmNvbnN0IHZhbGlkYXRlUGF0aEV4aXN0cyA9IChwYXRoOiBzdHJpbmcpOiBUUGF0aFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAgIGNvbnN0IGV4cGFuZGVkUGF0aCA9IG5vcm1hbGl6ZVBhdGgocGF0aCk7XG5cbiAgICByZXR1cm4gZXhpc3RzU3luYyhleHBhbmRlZFBhdGgpXG4gICAgICAgID8ge3ZhbGlkOiB0cnVlLCBleHBhbmRlZFBhdGh9XG4gICAgICAgIDoge3ZhbGlkOiBmYWxzZSwgZXJyb3I6IGBQYXRoIGRvZXMgbm90IGV4aXN0OiAke3BhdGh9YH07XG59O1xuXG5jb25zdCBQQVRIX09QVElPTl9MQUJFTFM6IFJlY29yZDxUUGF0aE9wdGlvbktleSwgc3RyaW5nPiA9IHtcbiAgICBzc2xjZXJ0OiAnLS1zc2xjZXJ0JyxcbiAgICBzc2xrZXk6ICctLXNzbGtleScsXG4gICAgc3Nscm9vdGNlcnQ6ICctLXNzbHJvb3RjZXJ0JyxcbiAgICBzc2hLZXk6ICctLXNzaC1rZXknLFxufTtcblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlUGF0aE9wdGlvbnMgPSA8XG4gICAgVCBleHRlbmRzIFBhcnRpYWw8UmVjb3JkPFRQYXRoT3B0aW9uS2V5LCBzdHJpbmc+Pixcbj4oXG4gICAgb3B0aW9uczogVCxcbik6IHtcbiAgICBlcnJvcnM6IFRQYXRoVmFsaWRhdGlvbkVycm9yW107XG4gICAgZXhwYW5kZWRQYXRoczogUGFydGlhbDxSZWNvcmQ8VFBhdGhPcHRpb25LZXksIHN0cmluZz4+O1xufSA9PiB7XG4gICAgY29uc3QgcGF0aEtleXM6IFRQYXRoT3B0aW9uS2V5W10gPSBbXG4gICAgICAgICdzc2xjZXJ0JyxcbiAgICAgICAgJ3NzbGtleScsXG4gICAgICAgICdzc2xyb290Y2VydCcsXG4gICAgICAgICdzc2hLZXknLFxuICAgIF07XG5cbiAgICBjb25zdCByZXN1bHRzID0gcGF0aEtleXNcbiAgICAgICAgLmZpbHRlcigoa2V5KSA9PiBvcHRpb25zW2tleV0gIT09IHVuZGVmaW5lZClcbiAgICAgICAgLm1hcCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXRoID0gb3B0aW9uc1trZXldIGFzIHN0cmluZztcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHZhbGlkYXRlUGF0aEV4aXN0cyhwYXRoKTtcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgICAgICByZXN1bHQsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcblxuICAgIGNvbnN0IGVycm9ycyA9IHJlc3VsdHNcbiAgICAgICAgLmZpbHRlcigocikgPT4gIXIucmVzdWx0LnZhbGlkKVxuICAgICAgICAubWFwKChyKSA9PiAoe1xuICAgICAgICAgICAgb3B0aW9uOiBQQVRIX09QVElPTl9MQUJFTFNbci5rZXldLFxuICAgICAgICAgICAgcGF0aDogci5wYXRoLFxuICAgICAgICAgICAgZXJyb3I6IChyLnJlc3VsdCBhcyB7dmFsaWQ6IGZhbHNlOyBlcnJvcjogc3RyaW5nfSkuZXJyb3IsXG4gICAgICAgIH0pKTtcblxuICAgIGNvbnN0IGV4cGFuZGVkUGF0aHMgPSByZXN1bHRzXG4gICAgICAgIC5maWx0ZXIoKHIpID0+IHIucmVzdWx0LnZhbGlkKVxuICAgICAgICAucmVkdWNlKFxuICAgICAgICAgICAgKGFjYywgcikgPT4gKHtcbiAgICAgICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICAgICAgW3Iua2V5XTogKHIucmVzdWx0IGFzIHt2YWxpZDogdHJ1ZTsgZXhwYW5kZWRQYXRoOiBzdHJpbmd9KVxuICAgICAgICAgICAgICAgICAgICAuZXhwYW5kZWRQYXRoLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB7fSBhcyBQYXJ0aWFsPFJlY29yZDxUUGF0aE9wdGlvbktleSwgc3RyaW5nPj4sXG4gICAgICAgICk7XG5cbiAgICByZXR1cm4ge2Vycm9ycywgZXhwYW5kZWRQYXRoc307XG59O1xuIl19
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGVQYXRocy5tanMiLCJzb3VyY2VSb290IjoiLi9zcmMvIiwic291cmNlcyI6WyJ2YWxpZGF0ZVBhdGhzLm10cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBQ25DLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFDaEMsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLFdBQVcsQ0FBQztBQWNsQyxNQUFNLFdBQVcsR0FBRyxDQUFDLElBQVksRUFBVSxFQUFFLENBQ3pDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxLQUFLLEdBQUc7SUFDakMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQy9CLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFFZixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxJQUFZLEVBQVUsRUFBRSxDQUNsRCxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFFL0IsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLElBQVksRUFBeUIsRUFBRTtJQUMvRCxNQUFNLFlBQVksR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFekMsT0FBTyxVQUFVLENBQUMsWUFBWSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxFQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFDO1FBQzdCLENBQUMsQ0FBQyxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLHdCQUF3QixJQUFJLEVBQUUsRUFBQyxDQUFDO0FBQ2hFLENBQUMsQ0FBQztBQUVGLE1BQU0sa0JBQWtCLEdBQW1DO0lBQ3ZELE9BQU8sRUFBRSxXQUFXO0lBQ3BCLE1BQU0sRUFBRSxVQUFVO0lBQ2xCLFdBQVcsRUFBRSxlQUFlO0lBQzVCLE1BQU0sRUFBRSxXQUFXO0NBQ3RCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUcvQixPQUFVLEVBSVosRUFBRTtJQUNBLE1BQU0sUUFBUSxHQUFxQjtRQUMvQixTQUFTO1FBQ1QsUUFBUTtRQUNSLGFBQWE7UUFDYixRQUFRO0tBQ1gsQ0FBQztJQUVGLE1BQU0sT0FBTyxHQUFHLFFBQVE7U0FDbkIsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssU0FBUyxDQUFDO1NBQzNDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1FBQ1QsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBVyxDQUFDO1FBQ3BDLE1BQU0sTUFBTSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXhDLE9BQU87WUFDSCxHQUFHO1lBQ0gsSUFBSTtZQUNKLE1BQU07U0FDVCxDQUFDO0lBQ04sQ0FBQyxDQUFDLENBQUM7SUFFUCxNQUFNLE1BQU0sR0FBRyxPQUFPO1NBQ2pCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztTQUM5QixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDVCxNQUFNLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUNqQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUk7UUFDWixLQUFLLEVBQUcsQ0FBQyxDQUFDLE1BQXdDLENBQUMsS0FBSztLQUMzRCxDQUFDLENBQUMsQ0FBQztJQUVSLE1BQU0sYUFBYSxHQUFHLE9BQU87U0FDeEIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztTQUM3QixNQUFNLENBQ0gsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ1QsR0FBRyxHQUFHO1FBQ04sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUcsQ0FBQyxDQUFDLE1BQThDO2FBQ3JELFlBQVk7S0FDcEIsQ0FBQyxFQUNGLEVBQTZDLENBQ2hELENBQUM7SUFFTixPQUFPLEVBQUMsTUFBTSxFQUFFLGFBQWEsRUFBQyxDQUFDO0FBQ25DLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZXhpc3RzU3luY30gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQge2hvbWVkaXJ9IGZyb20gJ25vZGU6b3MnO1xuaW1wb3J0IHtyZXNvbHZlfSBmcm9tICdub2RlOnBhdGgnO1xuXG50eXBlIFRQYXRoVmFsaWRhdGlvblJlc3VsdCA9XG4gICAgfCB7dmFsaWQ6IHRydWU7IGV4cGFuZGVkUGF0aDogc3RyaW5nfVxuICAgIHwge3ZhbGlkOiBmYWxzZTsgZXJyb3I6IHN0cmluZ307XG5cbnR5cGUgVFBhdGhPcHRpb25LZXkgPSAnc3NsY2VydCcgfCAnc3Nsa2V5JyB8ICdzc2xyb290Y2VydCcgfCAnc3NoS2V5JztcblxuZXhwb3J0IHR5cGUgVFBhdGhWYWxpZGF0aW9uRXJyb3IgPSB7XG4gICAgb3B0aW9uOiBzdHJpbmc7XG4gICAgcGF0aDogc3RyaW5nO1xuICAgIGVycm9yOiBzdHJpbmc7XG59O1xuXG5jb25zdCBleHBhbmRUaWxkZSA9IChwYXRoOiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgICBwYXRoLnN0YXJ0c1dpdGgoJ34vJykgfHwgcGF0aCA9PT0gJ34nXG4gICAgICAgID8gcGF0aC5yZXBsYWNlKC9efi8sIGhvbWVkaXIoKSlcbiAgICAgICAgOiBwYXRoO1xuXG5leHBvcnQgY29uc3Qgbm9ybWFsaXplUGF0aCA9IChwYXRoOiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgICByZXNvbHZlKGV4cGFuZFRpbGRlKHBhdGgpKTtcblxuY29uc3QgdmFsaWRhdGVQYXRoRXhpc3RzID0gKHBhdGg6IHN0cmluZyk6IFRQYXRoVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gICAgY29uc3QgZXhwYW5kZWRQYXRoID0gbm9ybWFsaXplUGF0aChwYXRoKTtcblxuICAgIHJldHVybiBleGlzdHNTeW5jKGV4cGFuZGVkUGF0aClcbiAgICAgICAgPyB7dmFsaWQ6IHRydWUsIGV4cGFuZGVkUGF0aH1cbiAgICAgICAgOiB7dmFsaWQ6IGZhbHNlLCBlcnJvcjogYFBhdGggZG9lcyBub3QgZXhpc3Q6ICR7cGF0aH1gfTtcbn07XG5cbmNvbnN0IFBBVEhfT1BUSU9OX0xBQkVMUzogUmVjb3JkPFRQYXRoT3B0aW9uS2V5LCBzdHJpbmc+ID0ge1xuICAgIHNzbGNlcnQ6ICctLXNzbGNlcnQnLFxuICAgIHNzbGtleTogJy0tc3Nsa2V5JyxcbiAgICBzc2xyb290Y2VydDogJy0tc3Nscm9vdGNlcnQnLFxuICAgIHNzaEtleTogJy0tc3NoLWtleScsXG59O1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGVQYXRoT3B0aW9ucyA9IDxcbiAgICBUIGV4dGVuZHMgUGFydGlhbDxSZWNvcmQ8VFBhdGhPcHRpb25LZXksIHN0cmluZz4+LFxuPihcbiAgICBvcHRpb25zOiBULFxuKToge1xuICAgIGVycm9yczogVFBhdGhWYWxpZGF0aW9uRXJyb3JbXTtcbiAgICBleHBhbmRlZFBhdGhzOiBQYXJ0aWFsPFJlY29yZDxUUGF0aE9wdGlvbktleSwgc3RyaW5nPj47XG59ID0+IHtcbiAgICBjb25zdCBwYXRoS2V5czogVFBhdGhPcHRpb25LZXlbXSA9IFtcbiAgICAgICAgJ3NzbGNlcnQnLFxuICAgICAgICAnc3Nsa2V5JyxcbiAgICAgICAgJ3NzbHJvb3RjZXJ0JyxcbiAgICAgICAgJ3NzaEtleScsXG4gICAgXTtcblxuICAgIGNvbnN0IHJlc3VsdHMgPSBwYXRoS2V5c1xuICAgICAgICAuZmlsdGVyKChrZXkpID0+IG9wdGlvbnNba2V5XSAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAubWFwKChrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhdGggPSBvcHRpb25zW2tleV0gYXMgc3RyaW5nO1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdmFsaWRhdGVQYXRoRXhpc3RzKHBhdGgpO1xuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgICAgIHJlc3VsdCxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuXG4gICAgY29uc3QgZXJyb3JzID0gcmVzdWx0c1xuICAgICAgICAuZmlsdGVyKChyKSA9PiAhci5yZXN1bHQudmFsaWQpXG4gICAgICAgIC5tYXAoKHIpID0+ICh7XG4gICAgICAgICAgICBvcHRpb246IFBBVEhfT1BUSU9OX0xBQkVMU1tyLmtleV0sXG4gICAgICAgICAgICBwYXRoOiByLnBhdGgsXG4gICAgICAgICAgICBlcnJvcjogKHIucmVzdWx0IGFzIHt2YWxpZDogZmFsc2U7IGVycm9yOiBzdHJpbmd9KS5lcnJvcixcbiAgICAgICAgfSkpO1xuXG4gICAgY29uc3QgZXhwYW5kZWRQYXRocyA9IHJlc3VsdHNcbiAgICAgICAgLmZpbHRlcigocikgPT4gci5yZXN1bHQudmFsaWQpXG4gICAgICAgIC5yZWR1Y2UoXG4gICAgICAgICAgICAoYWNjLCByKSA9PiAoe1xuICAgICAgICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAgICAgICBbci5rZXldOiAoci5yZXN1bHQgYXMge3ZhbGlkOiB0cnVlOyBleHBhbmRlZFBhdGg6IHN0cmluZ30pXG4gICAgICAgICAgICAgICAgICAgIC5leHBhbmRlZFBhdGgsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHt9IGFzIFBhcnRpYWw8UmVjb3JkPFRQYXRoT3B0aW9uS2V5LCBzdHJpbmc+PixcbiAgICAgICAgKTtcblxuICAgIHJldHVybiB7ZXJyb3JzLCBleHBhbmRlZFBhdGhzfTtcbn07XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dbctx",
3
- "version": "1.4.6",
3
+ "version": "1.5.0",
4
4
  "description": "AI-enriched database context for humans and coding agents",
5
5
  "type": "module",
6
6
  "main": "dist/index.mjs",
@@ -1,107 +0,0 @@
1
- import { z } from 'zod';
2
- export declare const database: z.ZodObject<{
3
- type: z.ZodEnum<{
4
- postgresql: "postgresql";
5
- }>;
6
- version: z.ZodObject<{
7
- version_string: z.ZodString;
8
- version_number: z.ZodNumber;
9
- }, z.core.$strip>;
10
- identifier: z.ZodObject<{
11
- system_identifier: z.ZodString;
12
- database_oid: z.ZodNumber;
13
- }, z.core.$strip>;
14
- name: z.ZodString;
15
- comment: z.ZodNullable<z.ZodString>;
16
- summary: z.ZodOptional<z.ZodString>;
17
- details: z.ZodOptional<z.ZodString>;
18
- relations: z.ZodRecord<z.ZodString, z.ZodObject<{
19
- name: z.ZodString;
20
- comment: z.ZodNullable<z.ZodString>;
21
- kind: z.ZodEnum<{
22
- partitioned_table: "partitioned_table";
23
- table: "table";
24
- view: "view";
25
- materialized_view: "materialized_view";
26
- }>;
27
- summary: z.ZodOptional<z.ZodString>;
28
- details: z.ZodOptional<z.ZodString>;
29
- attributes: z.ZodRecord<z.ZodString, z.ZodIntersection<z.ZodObject<{
30
- name: z.ZodString;
31
- data_type: z.ZodString;
32
- is_nullable: z.ZodBoolean;
33
- comment: z.ZodNullable<z.ZodString>;
34
- estimated_distinct: z.ZodOptional<z.ZodNumber>;
35
- }, z.core.$strip>, z.ZodDiscriminatedUnion<[z.ZodDiscriminatedUnion<[z.ZodObject<{
36
- kind: z.ZodLiteral<"regular">;
37
- has_default: z.ZodLiteral<false>;
38
- }, z.core.$strip>, z.ZodObject<{
39
- kind: z.ZodLiteral<"regular">;
40
- has_default: z.ZodLiteral<true>;
41
- default_expression: z.ZodString;
42
- }, z.core.$strip>], "has_default">, z.ZodObject<{
43
- kind: z.ZodLiteral<"generated">;
44
- generated_storage: z.ZodEnum<{
45
- stored: "stored";
46
- virtual: "virtual";
47
- }>;
48
- generated_expression: z.ZodString;
49
- }, z.core.$strip>], "kind">>>;
50
- references: z.ZodRecord<z.ZodString, z.ZodObject<{
51
- constraint_name: z.ZodString;
52
- attributes: z.ZodArray<z.ZodString>;
53
- referenced_relation: z.ZodString;
54
- referenced_attributes: z.ZodArray<z.ZodString>;
55
- on_update: z.ZodEnum<{
56
- "NO ACTION": "NO ACTION";
57
- RESTRICT: "RESTRICT";
58
- CASCADE: "CASCADE";
59
- "SET NULL": "SET NULL";
60
- "SET DEFAULT": "SET DEFAULT";
61
- }>;
62
- on_delete: z.ZodEnum<{
63
- "NO ACTION": "NO ACTION";
64
- RESTRICT: "RESTRICT";
65
- CASCADE: "CASCADE";
66
- "SET NULL": "SET NULL";
67
- "SET DEFAULT": "SET DEFAULT";
68
- }>;
69
- comment: z.ZodNullable<z.ZodString>;
70
- }, z.core.$strip>>;
71
- indexes: z.ZodRecord<z.ZodString, z.ZodIntersection<z.ZodIntersection<z.ZodObject<{
72
- index_name: z.ZodString;
73
- relation_name: z.ZodString;
74
- attributes: z.ZodArray<z.ZodString>;
75
- definition: z.ZodString;
76
- comment: z.ZodNullable<z.ZodString>;
77
- }, z.core.$strip>, z.ZodDiscriminatedUnion<[z.ZodObject<{
78
- index_kind: z.ZodLiteral<"primary">;
79
- }, z.core.$strip>, z.ZodObject<{
80
- index_kind: z.ZodLiteral<"unique">;
81
- }, z.core.$strip>, z.ZodObject<{
82
- index_kind: z.ZodLiteral<"exclusion">;
83
- exclusion_operators: z.ZodArray<z.ZodString>;
84
- }, z.core.$strip>, z.ZodObject<{
85
- index_kind: z.ZodLiteral<"plain">;
86
- }, z.core.$strip>], "index_kind">>, z.ZodDiscriminatedUnion<[z.ZodObject<{
87
- is_partial: z.ZodLiteral<false>;
88
- }, z.core.$strip>, z.ZodObject<{
89
- is_partial: z.ZodLiteral<true>;
90
- partial_predicate: z.ZodString;
91
- }, z.core.$strip>], "is_partial">>>;
92
- fileStats: z.ZodOptional<z.ZodObject<{
93
- file_path: z.ZodOptional<z.ZodNullable<z.ZodString>>;
94
- modification_time: z.ZodOptional<z.ZodDate>;
95
- size_bytes: z.ZodOptional<z.ZodNumber>;
96
- is_partitioned: z.ZodOptional<z.ZodBoolean>;
97
- partition_count: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
98
- estimated_row_count: z.ZodOptional<z.ZodNumber>;
99
- }, z.core.$strip>>;
100
- }, z.core.$strip>>;
101
- enums: z.ZodRecord<z.ZodString, z.ZodObject<{
102
- values: z.ZodArray<z.ZodString>;
103
- comment: z.ZodNullable<z.ZodString>;
104
- }, z.core.$strip>>;
105
- }, z.core.$strip>;
106
- export type TDatabase = z.infer<typeof database>;
107
- //# sourceMappingURL=index.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"./src/","sources":["schemas/index.mts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAgHtB,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgBnB,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC"}
@@ -1,116 +0,0 @@
1
- import { z } from 'zod';
2
- const relationAttribute = z
3
- .object({
4
- name: z.string(),
5
- data_type: z.string(),
6
- is_nullable: z.boolean(),
7
- comment: z.string().nullable(),
8
- estimated_distinct: z.number().optional(),
9
- })
10
- .and(z.discriminatedUnion('kind', [
11
- z.discriminatedUnion('has_default', [
12
- z.object({
13
- kind: z.literal('regular'),
14
- has_default: z.literal(false),
15
- }),
16
- z.object({
17
- kind: z.literal('regular'),
18
- has_default: z.literal(true),
19
- default_expression: z.string(),
20
- }),
21
- ]),
22
- z.object({
23
- kind: z.literal('generated'),
24
- generated_storage: z.enum(['stored', 'virtual']),
25
- generated_expression: z.string(),
26
- }),
27
- ]));
28
- const indexInfo = z
29
- .object({
30
- index_name: z.string(),
31
- relation_name: z.string(),
32
- attributes: z.array(z.string()),
33
- definition: z.string(),
34
- comment: z.string().nullable(),
35
- })
36
- .and(z.discriminatedUnion('index_kind', [
37
- z.object({ index_kind: z.literal('primary') }),
38
- z.object({ index_kind: z.literal('unique') }),
39
- z.object({
40
- index_kind: z.literal('exclusion'),
41
- exclusion_operators: z.array(z.string()),
42
- }),
43
- z.object({ index_kind: z.literal('plain') }),
44
- ]))
45
- .and(z.discriminatedUnion('is_partial', [
46
- z.object({ is_partial: z.literal(false) }),
47
- z.object({
48
- is_partial: z.literal(true),
49
- partial_predicate: z.string(),
50
- }),
51
- ]));
52
- const reference = z.object({
53
- constraint_name: z.string(),
54
- attributes: z.array(z.string()),
55
- referenced_relation: z.string(),
56
- referenced_attributes: z.array(z.string()),
57
- on_update: z.enum([
58
- 'NO ACTION',
59
- 'RESTRICT',
60
- 'CASCADE',
61
- 'SET NULL',
62
- 'SET DEFAULT',
63
- ]),
64
- on_delete: z.enum([
65
- 'NO ACTION',
66
- 'RESTRICT',
67
- 'CASCADE',
68
- 'SET NULL',
69
- 'SET DEFAULT',
70
- ]),
71
- comment: z.string().nullable(),
72
- });
73
- const relationFileStats = z
74
- .object({
75
- file_path: z.string().nullable(),
76
- modification_time: z.date(),
77
- size_bytes: z.number(),
78
- is_partitioned: z.boolean(),
79
- partition_count: z.number().nullable(),
80
- estimated_row_count: z.number(),
81
- })
82
- .partial();
83
- const relation = z.object({
84
- name: z.string(),
85
- comment: z.string().nullable(),
86
- kind: z.enum(['partitioned_table', 'table', 'view', 'materialized_view']),
87
- summary: z.string().optional(),
88
- details: z.string().optional(),
89
- attributes: z.record(z.string(), relationAttribute),
90
- references: z.record(z.string(), reference),
91
- indexes: z.record(z.string(), indexInfo),
92
- fileStats: relationFileStats.optional(),
93
- });
94
- const relations = z.record(z.string(), relation);
95
- const enumType = z.object({
96
- values: z.array(z.string()),
97
- comment: z.string().nullable(),
98
- });
99
- export const database = z.object({
100
- type: z.enum(['postgresql']),
101
- version: z.object({
102
- version_string: z.string(),
103
- version_number: z.number(),
104
- }),
105
- identifier: z.object({
106
- system_identifier: z.string(),
107
- database_oid: z.number(),
108
- }),
109
- name: z.string(),
110
- comment: z.string().nullable(),
111
- summary: z.string().optional(),
112
- details: z.string().optional(),
113
- relations: relations,
114
- enums: z.record(z.string(), enumType),
115
- });
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgubWpzIiwic291cmNlUm9vdCI6Ii4vc3JjLyIsInNvdXJjZXMiOlsic2NoZW1hcy9pbmRleC5tdHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLENBQUMsRUFBQyxNQUFNLEtBQUssQ0FBQztBQUV0QixNQUFNLGlCQUFpQixHQUFHLENBQUM7S0FDdEIsTUFBTSxDQUFDO0lBQ0osSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDaEIsU0FBUyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDckIsV0FBVyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDeEIsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDOUIsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUM1QyxDQUFDO0tBQ0QsR0FBRyxDQUNBLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUU7SUFDekIsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRTtRQUNoQyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQ0wsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO1lBQzFCLFdBQVcsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztTQUNoQyxDQUFDO1FBQ0YsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUNMLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztZQUMxQixXQUFXLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDNUIsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtTQUNqQyxDQUFDO0tBQ0wsQ0FBQztJQUNGLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDTCxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7UUFDNUIsaUJBQWlCLEVBQUUsQ0FBQyxDQUFD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QUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDakMsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDN0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM1QixPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNkLGNBQWMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO1FBQzFCLGNBQWMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0tBQzdCLENBQUM7SUFDRixVQUFVLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNqQixpQkFBaUIsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO1FBQzdCLFlBQVksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0tBQzNCLENBQUM7SUFDRixJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUNoQixPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM5QixPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM5QixPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM5QixTQUFTLEVBQUUsU0FBUztJQUNwQixLQUFLLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsUUFBUSxDQUFDO0NBQ3hDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7en0gZnJvbSAnem9kJztcblxuY29uc3QgcmVsYXRpb25BdHRyaWJ1dGUgPSB6XG4gICAgLm9iamVjdCh7XG4gICAgICAgIG5hbWU6IHouc3RyaW5nKCksXG4gICAgICAgIGRhdGFfdHlwZTogei5zdHJpbmcoKSxcbiAgICAgICAgaXNfbnVsbGFibGU6IHouYm9vbGVhbigpLFxuICAgICAgICBjb21tZW50OiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gICAgICAgIGVzdGltYXRlZF9kaXN0aW5jdDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICAgIH0pXG4gICAgLmFuZChcbiAgICAgICAgei5kaXNjcmltaW5hdGVkVW5pb24oJ2tpbmQnLCBbXG4gICAgICAgICAgICB6LmRpc2NyaW1pbmF0ZWRVbmlvbignaGFzX2RlZmF1bHQnLCBbXG4gICAgICAgICAgICAgICAgei5vYmplY3Qoe1xuICAgICAgICAgICAgICAgICAgICBraW5kOiB6LmxpdGVyYWwoJ3JlZ3VsYXInKSxcbiAgICAgICAgICAgICAgICAgICAgaGFzX2RlZmF1bHQ6IHoubGl0ZXJhbChmYWxzZSksXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgei5vYmplY3Qoe1xuICAgICAgICAgICAgICAgICAgICBraW5kOiB6LmxpdGVyYWwoJ3JlZ3VsYXInKSxcbiAgICAgICAgICAgICAgICAgICAgaGFzX2RlZmF1bHQ6IHoubGl0ZXJhbCh0cnVlKSxcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdF9leHByZXNzaW9uOiB6LnN0cmluZygpLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB6Lm9iamVjdCh7XG4gICAgICAgICAgICAgICAga2luZDogei5saXRlcmFsKCdnZW5lcmF0ZWQnKSxcbiAgICAgICAgICAgICAgICBnZW5lcmF0ZWRfc3RvcmFnZTogei5lbnVtKFsnc3RvcmVkJywgJ3ZpcnR1YWwnXSksXG4gICAgICAgICAgICAgICAgZ2VuZXJhdGVkX2V4cHJlc3Npb246IHouc3RyaW5nKCksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgXSksXG4gICAgKTtcblxuY29uc3QgaW5kZXhJbmZvID0gelxuICAgIC5vYmplY3Qoe1xuICAgICAgICBpbmRleF9uYW1lOiB6LnN0cmluZygpLFxuICAgICAgICByZWxhdGlvbl9uYW1lOiB6LnN0cmluZygpLFxuICAgICAgICBhdHRyaWJ1dGVzOiB6LmFycmF5KHouc3RyaW5nKCkpLFxuICAgICAgICBkZWZpbml0aW9uOiB6LnN0cmluZygpLFxuICAgICAgICBjb21tZW50OiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gICAgfSlcbiAgICAuYW5kKFxuICAgICAgICB6LmRpc2NyaW1pbmF0ZWRVbmlvbignaW5kZXhfa2luZCcsIFtcbiAgICAgICAgICAgIHoub2JqZWN0KHtpbmRleF9raW5kOiB6LmxpdGVyYWwoJ3ByaW1hcnknKX0pLFxuICAgICAgICAgICAgei5vYmplY3Qoe2luZGV4X2tpbmQ6IHoubGl0ZXJhbCgndW5pcXVlJyl9KSxcbiAgICAgICAgICAgIHoub2JqZWN0KHtcbiAgICAgICAgICAgICAgICBpbmRleF9raW5kOiB6LmxpdGVyYWwoJ2V4Y2x1c2lvbicpLFxuICAgICAgICAgICAgICAgIGV4Y2x1c2lvbl9vcGVyYXRvcnM6IHouYXJyYXkoei5zdHJpbmcoKSksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHoub2JqZWN0KHtpbmRleF9raW5kOiB6LmxpdGVyYWwoJ3BsYWluJyl9KSxcbiAgICAgICAgXSksXG4gICAgKVxuICAgIC5hbmQoXG4gICAgICAgIHouZGlzY3JpbWluYXRlZFVuaW9uKCdpc19wYXJ0aWFsJywgW1xuICAgICAgICAgICAgei5vYmplY3Qoe2lzX3BhcnRpYWw6IHoubGl0ZXJhbChmYWxzZSl9KSxcbiAgICAgICAgICAgIHoub2JqZWN0KHtcbiAgICAgICAgICAgICAgICBpc19wYXJ0aWFsOiB6LmxpdGVyYWwodHJ1ZSksXG4gICAgICAgICAgICAgICAgcGFydGlhbF9wcmVkaWNhdGU6IHouc3RyaW5nKCksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgXSksXG4gICAgKTtcblxuY29uc3QgcmVmZXJlbmNlID0gei5vYmplY3Qoe1xuICAgIGNvbnN0cmFpbnRfbmFtZTogei5zdHJpbmcoKSxcbiAgICBhdHRyaWJ1dGVzOiB6LmFycmF5KHouc3RyaW5nKCkpLFxuICAgIHJlZmVyZW5jZWRfcmVsYXRpb246IHouc3RyaW5nKCksXG4gICAgcmVmZXJlbmNlZF9hdHRyaWJ1dGVzOiB6LmFycmF5KHouc3RyaW5nKCkpLFxuICAgIG9uX3VwZGF0ZTogei5lbnVtKFtcbiAgICAgICAgJ05PIEFDVElPTicsXG4gICAgICAgICdSRVNUUklDVCcsXG4gICAgICAgICdDQVNDQURFJyxcbiAgICAgICAgJ1NFVCBOVUxMJyxcbiAgICAgICAgJ1NFVCBERUZBVUxUJyxcbiAgICBdKSxcbiAgICBvbl9kZWxldGU6IHouZW51bShbXG4gICAgICAgICdOTyBBQ1RJT04nLFxuICAgICAgICAnUkVTVFJJQ1QnLFxuICAgICAgICAnQ0FTQ0FERScsXG4gICAgICAgICdTRVQgTlVMTCcsXG4gICAgICAgICdTRVQgREVGQVVMVCcsXG4gICAgXSksXG4gICAgY29tbWVudDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxufSk7XG5cbmNvbnN0IHJlbGF0aW9uRmlsZVN0YXRzID0gelxuICAgIC5vYmplY3Qoe1xuICAgICAgICBmaWxlX3BhdGg6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgICAgICAgbW9kaWZpY2F0aW9uX3RpbWU6IHouZGF0ZSgpLFxuICAgICAgICBzaXplX2J5dGVzOiB6Lm51bWJlcigpLFxuICAgICAgICBpc19wYXJ0aXRpb25lZDogei5ib29sZWFuKCksXG4gICAgICAgIHBhcnRpdGlvbl9jb3VudDogei5udW1iZXIoKS5udWxsYWJsZSgpLFxuICAgICAgICBlc3RpbWF0ZWRfcm93X2NvdW50OiB6Lm51bWJlcigpLFxuICAgIH0pXG4gICAgLnBhcnRpYWwoKTtcblxuY29uc3QgcmVsYXRpb24gPSB6Lm9iamVjdCh7XG4gICAgbmFtZTogei5zdHJpbmcoKSxcbiAgICBjb21tZW50OiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gICAga2luZDogei5lbnVtKFsncGFydGl0aW9uZWRfdGFibGUnLCAndGFibGUnLCAndmlldycsICdtYXRlcmlhbGl6ZWRfdmlldyddKSxcbiAgICBzdW1tYXJ5OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgZGV0YWlsczogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGF0dHJpYnV0ZXM6IHoucmVjb3JkKHouc3RyaW5nKCksIHJlbGF0aW9uQXR0cmlidXRlKSxcbiAgICByZWZlcmVuY2VzOiB6LnJlY29yZCh6LnN0cmluZygpLCByZWZlcmVuY2UpLFxuICAgIGluZGV4ZXM6IHoucmVjb3JkKHouc3RyaW5nKCksIGluZGV4SW5mbyksXG4gICAgZmlsZVN0YXRzOiByZWxhdGlvbkZpbGVTdGF0cy5vcHRpb25hbCgpLFxufSk7XG5cbmNvbnN0IHJlbGF0aW9ucyA9IHoucmVjb3JkKHouc3RyaW5nKCksIHJlbGF0aW9uKTtcblxuY29uc3QgZW51bVR5cGUgPSB6Lm9iamVjdCh7XG4gICAgdmFsdWVzOiB6LmFycmF5KHouc3RyaW5nKCkpLFxuICAgIGNvbW1lbnQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbn0pO1xuXG5leHBvcnQgY29uc3QgZGF0YWJhc2UgPSB6Lm9iamVjdCh7XG4gICAgdHlwZTogei5lbnVtKFsncG9zdGdyZXNxbCddKSxcbiAgICB2ZXJzaW9uOiB6Lm9iamVjdCh7XG4gICAgICAgIHZlcnNpb25fc3RyaW5nOiB6LnN0cmluZygpLFxuICAgICAgICB2ZXJzaW9uX251bWJlcjogei5udW1iZXIoKSxcbiAgICB9KSxcbiAgICBpZGVudGlmaWVyOiB6Lm9iamVjdCh7XG4gICAgICAgIHN5c3RlbV9pZGVudGlmaWVyOiB6LnN0cmluZygpLFxuICAgICAgICBkYXRhYmFzZV9vaWQ6IHoubnVtYmVyKCksXG4gICAgfSksXG4gICAgbmFtZTogei5zdHJpbmcoKSxcbiAgICBjb21tZW50OiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gICAgc3VtbWFyeTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGRldGFpbHM6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICByZWxhdGlvbnM6IHJlbGF0aW9ucyxcbiAgICBlbnVtczogei5yZWNvcmQoei5zdHJpbmcoKSwgZW51bVR5cGUpLFxufSk7XG5cbmV4cG9ydCB0eXBlIFREYXRhYmFzZSA9IHouaW5mZXI8dHlwZW9mIGRhdGFiYXNlPjtcbiJdfQ==