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
package/dist/store.d.mts CHANGED
@@ -1,6 +1,15 @@
1
1
  import { TConnectionConfig } from './types/connection.mjs';
2
+ export type TStopAfterStage = 'ssh-connect' | 'db-connect' | 'introspection';
3
+ export declare const STOP_AFTER_STAGES: readonly TStopAfterStage[];
4
+ export type TOutputOptions = {
5
+ outputIntrospectionJson: string | null;
6
+ stopAfter: TStopAfterStage | null;
7
+ overwrite: boolean;
8
+ explanation: string | null;
9
+ };
2
10
  export type TStore = {
3
11
  config: TConnectionConfig;
12
+ outputOptions: TOutputOptions;
4
13
  steps: {
5
14
  sshConnection: {
6
15
  enabled: boolean;
@@ -53,12 +62,22 @@ export type TStore = {
53
62
  email: string | null;
54
63
  name: string | null;
55
64
  };
65
+ outputJson: {
66
+ state: 'idle' | 'prompting-overwrite' | 'writing' | 'done' | 'error';
67
+ error: string | null;
68
+ confirmed: boolean | null;
69
+ path: string | null;
70
+ };
71
+ userExplanation: {
72
+ state: 'idle' | 'prompting' | 'done';
73
+ value: string | null;
74
+ };
56
75
  gate: {
57
76
  state: 'idle' | 'checking' | 'blocked' | 'passed';
58
77
  message: string | null;
59
78
  };
60
79
  };
61
80
  };
62
- export declare const createAppStore: (config: TConnectionConfig) => TStore;
81
+ export declare const createAppStore: (config: TConnectionConfig, outputOptions: TOutputOptions) => TStore;
63
82
  export type TAppStore = ReturnType<typeof createAppStore>;
64
83
  //# sourceMappingURL=store.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.mts","sourceRoot":"./src/","sources":["store.mts"],"names":[],"mappings":"AAEA,OAAO,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AAEzD,MAAM,MAAM,MAAM,GAAG;IACjB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,KAAK,EAAE;QACH,aAAa,EAAE;YACX,OAAO,EAAE,OAAO,CAAC;YACjB,YAAY,EAAE,OAAO,CAAC;YACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;YACxB,kBAAkB,EAAE,YAAY,GAAG,UAAU,GAAG,IAAI,CAAC;YACrD,WAAW,EAAE,MAAM,CAAC;YACpB,YAAY,EAAE,OAAO,CAAC;YAEtB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;YAC9B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;YAC1B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;YAC9B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;YAE7B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;YACzB,KAAK,EACC,MAAM,GACN,YAAY,GACZ,WAAW,GACX,eAAe,GACf,OAAO,GACP,QAAQ,CAAC;YACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;SACxB,CAAC;QAEF,kBAAkB,EAAE;YAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;YACxB,WAAW,EAAE,MAAM,CAAC;YACpB,YAAY,EAAE,OAAO,CAAC;YAEtB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;YAC9B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;YAC1B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;YAC9B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;YAE9B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;YAC/B,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;YACrC,KAAK,EACC,MAAM,GACN,YAAY,GACZ,WAAW,GACX,eAAe,GACf,OAAO,CAAC;YACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;SACxB,CAAC;QAEF,aAAa,EAAE;YACX,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;YAC9C,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;YACrB,gBAAgB,EAAE,OAAO,CAAC;YAC1B,MAAM,EAAE;gBACJ,MAAM,EAAE,MAAM,CAAC;gBACf,KAAK,EAAE,MAAM,CAAC;gBACd,iBAAiB,EAAE,MAAM,CAAC;gBAC1B,OAAO,EAAE,MAAM,CAAC;gBAChB,OAAO,EAAE,MAAM,CAAC;gBAChB,WAAW,EAAE,MAAM,CAAC;gBACpB,KAAK,EAAE,MAAM,CAAC;gBACd,QAAQ,EAAE,MAAM,CAAC;aACpB,CAAC;SACL,CAAC;QAEF,OAAO,EAAE;YACL,KAAK,EACC,MAAM,GACN,kBAAkB,GAClB,SAAS,GACT,kBAAkB,GAClB,WAAW,GACX,OAAO,CAAC;YACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;YACrB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;YACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;YACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;YACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;SACvB,CAAC;QAEF,IAAI,EAAE;YACF,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;YAClD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;SAC1B,CAAC;KACL,CAAC;CACL,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,QAAQ,iBAAiB,WA8EvD,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC"}
1
+ {"version":3,"file":"store.d.mts","sourceRoot":"./src/","sources":["store.mts"],"names":[],"mappings":"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"}
package/dist/store.mjs CHANGED
@@ -1,7 +1,13 @@
1
1
  import { makeAutoObservable } from 'mobx';
2
- export const createAppStore = (config) => {
2
+ export const STOP_AFTER_STAGES = Object.freeze([
3
+ 'ssh-connect',
4
+ 'db-connect',
5
+ 'introspection',
6
+ ]);
7
+ export const createAppStore = (config, outputOptions) => {
3
8
  const store = {
4
9
  config,
10
+ outputOptions,
5
11
  steps: {
6
12
  sshConnection: {
7
13
  enabled: !!config.sshHost,
@@ -54,6 +60,16 @@ export const createAppStore = (config) => {
54
60
  email: null,
55
61
  name: null,
56
62
  },
63
+ outputJson: {
64
+ state: 'idle',
65
+ error: null,
66
+ confirmed: null,
67
+ path: null,
68
+ },
69
+ userExplanation: {
70
+ state: 'idle',
71
+ value: null,
72
+ },
57
73
  gate: {
58
74
  state: 'idle',
59
75
  message: null,
@@ -65,4 +81,4 @@ export const createAppStore = (config) => {
65
81
  deep: true,
66
82
  });
67
83
  };
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUubWpzIiwic291cmNlUm9vdCI6Ii4vc3JjLyIsInNvdXJjZXMiOlsic3RvcmUubXRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQTBGeEMsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsTUFBeUIsRUFBRSxFQUFFO0lBQ3hELE1BQU0sS0FBSyxHQUFXO1FBQ2xCLE1BQU07UUFDTixLQUFLLEVBQUU7WUFDSCxhQUFhLEVBQUU7Z0JBQ1gsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTztnQkFDekIsWUFBWSxFQUFFLEtBQUs7Z0JBQ25CLFFBQVEsRUFBRSxJQUFJO2dCQUNkLGtCQUFrQixFQUFFLElBQUk7Z0JBQ3hCLFdBQVcsRUFBRSxDQUFDO2dCQUNkLFlBQVksRUFBRSxLQUFLO2dCQUVuQixjQUFjLEVBQUUsSUFBSTtnQkFDcEIsVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLGNBQWMsRUFBRSxJQUFJO2dCQUNwQixhQUFhLEVBQUUsSUFBSTtnQkFFbkIsU0FBUyxFQUFFLElBQUk7Z0JBQ2YsS0FBSyxFQUFFLE1BQU07Z0JBQ2IsS0FBSyxFQUFFLElBQUk7YUFDZDtZQUVELGtCQUFrQixFQUFFO2dCQUNoQixRQUFRLEVBQUUsSUFBSTtnQkFDZCxXQUFXLEVBQUUsQ0FBQztnQkFDZCxZQUFZLEVBQUUsS0FBSztnQkFFbkIsY0FBYyxFQUFFLElBQUk7Z0JBQ3BCLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixjQUFjLEVBQUUsSUFBSTtnQkFDcEIsY0FBYyxFQUFFLElBQUk7Z0JBRXBCLGVBQWUsRUFBRSxJQUFJO2dCQUNyQixxQkFBcUIsRUFBRSxJQUFJO2dCQUMzQixLQUFLLEVBQUUsTUFBTTtnQkFDYixLQUFLLEVBQUUsSUFBSTthQUNkO1lBRUQsYUFBYSxFQUFFO2dCQUNYLEtBQUssRUFBRSxNQUFNO2dCQUNiLEtBQUssRUFBRSxJQUFJO2dCQUNYLGdCQUFnQixFQUFFLEtBQUs7Z0JBQ3ZCLE1BQU0sRUFBRTtvQkFDSixNQUFNLEVBQUUsQ0FBQztvQkFDVCxLQUFLLEVBQUUsQ0FBQztvQkFDUixpQkFBaUIsRUFBRSxDQUFDO29CQUNwQixPQUFPLEVBQUUsQ0FBQztvQkFDVixPQUFPLEVBQUUsQ0FBQztvQkFDVixXQUFXLEVBQUUsQ0FBQztvQkFDZCxLQUFLLEVBQUUsQ0FBQztvQkFDUixRQUFRLEVBQUUsQ0FBQztpQkFDZDthQUNKO1lBRUQsT0FBTyxFQUFFO2dCQUNMLEtBQUssRUFBRSxNQUFNO2dCQUNiLEtBQUssRUFBRSxJQUFJO2dCQUNYLEdBQUcsRUFBRSxJQUFJO2dCQUNULFNBQVMsRUFBRSxJQUFJO2dCQUNmLEtBQUssRUFBRSxJQUFJO2dCQUNYLElBQUksRUFBRSxJQUFJO2FBQ2I7WUFFRCxJQUFJLEVBQUU7Z0JBQ0YsS0FBSyxFQUFFLE1BQU07Z0JBQ2IsT0FBTyxFQUFFLElBQUk7YUFDaEI7U0FDSjtLQUNKLENBQUM7SUFFRixPQUFPLGtCQUFrQixDQUNyQixLQUFLLEVBQ0wsRUFBRSxFQUNGO1FBQ0ksUUFBUSxFQUFFLElBQUk7UUFDZCxJQUFJLEVBQUUsSUFBSTtLQUNiLENBQ0osQ0FBQztBQUNOLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7bWFrZUF1dG9PYnNlcnZhYmxlfSBmcm9tICdtb2J4JztcblxuaW1wb3J0IHtUQ29ubmVjdGlvbkNvbmZpZ30gZnJvbSAnLi90eXBlcy9jb25uZWN0aW9uLm1qcyc7XG5cbmV4cG9ydCB0eXBlIFRTdG9yZSA9IHtcbiAgICBjb25maWc6IFRDb25uZWN0aW9uQ29uZmlnO1xuICAgIHN0ZXBzOiB7XG4gICAgICAgIHNzaENvbm5lY3Rpb246IHtcbiAgICAgICAgICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICAgICAgICBuZWVkUGFzc3dvcmQ6IGJvb2xlYW47XG4gICAgICAgICAgICBwYXNzd29yZDogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAgIHBhc3N3b3JkUHJvbXB0VHlwZTogJ3Bhc3NwaHJhc2UnIHwgJ3Bhc3N3b3JkJyB8IG51bGw7XG4gICAgICAgICAgICBwcm9tcHRDb3VudDogbnVtYmVyO1xuICAgICAgICAgICAgd3JvbmdBdHRlbXB0OiBib29sZWFuO1xuXG4gICAgICAgICAgICBwaWNrZWRIb3N0bmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAgIHBpY2tlZFBvcnQ6IG51bWJlciB8IG51bGw7XG4gICAgICAgICAgICBwaWNrZWRVc2VybmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAgIHBpY2tlZEtleVBhdGg6IHN0cmluZyB8IG51bGw7XG5cbiAgICAgICAgICAgIGxvY2FsUG9ydDogbnVtYmVyIHwgbnVsbDtcbiAgICAgICAgICAgIHN0YXRlOlxuICAgICAgICAgICAgICAgIHwgJ2lkbGUnXG4gICAgICAgICAgICAgICAgfCAnY29ubmVjdGluZydcbiAgICAgICAgICAgICAgICB8ICdjb25uZWN0ZWQnXG4gICAgICAgICAgICAgICAgfCAnbmVlZC1wYXNzd29yZCdcbiAgICAgICAgICAgICAgICB8ICdlcnJvcidcbiAgICAgICAgICAgICAgICB8ICdjbG9zZWQnO1xuICAgICAgICAgICAgZXJyb3I6IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG5cbiAgICAgICAgZGF0YWJhc2VDb25uZWN0aW9uOiB7XG4gICAgICAgICAgICBwYXNzd29yZDogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAgIHByb21wdENvdW50OiBudW1iZXI7XG4gICAgICAgICAgICB3cm9uZ0F0dGVtcHQ6IGJvb2xlYW47XG5cbiAgICAgICAgICAgIHBpY2tlZEhvc3RuYW1lOiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgICAgcGlja2VkUG9ydDogbnVtYmVyIHwgbnVsbDtcbiAgICAgICAgICAgIHBpY2tlZERhdGFiYXNlOiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgICAgcGlja2VkVXNlcm5hbWU6IHN0cmluZyB8IG51bGw7XG5cbiAgICAgICAgICAgIHBvc3RncmVzVmVyc2lvbjogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAgIHBvc3RncmVzVmVyc2lvbk51bWJlcjogbnVtYmVyIHwgbnVsbDtcbiAgICAgICAgICAgIHN0YXRlOlxuICAgICAgICAgICAgICAgIHwgJ2lkbGUnXG4gICAgICAgICAgICAgICAgfCAnY29ubmVjdGluZydcbiAgICAgICAgICAgICAgICB8ICdjb25uZWN0ZWQnXG4gICAgICAgICAgICAgICAgfCAnbmVlZC1wYXNzd29yZCdcbiAgICAgICAgICAgICAgICB8ICdlcnJvcic7XG4gICAgICAgICAgICBlcnJvcjogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgfTtcblxuICAgICAgICBpbnRyb3NwZWN0aW9uOiB7XG4gICAgICAgICAgICBzdGF0ZTogJ2lkbGUnIHwgJ2ZldGNoaW5nJyB8ICdkb25lJyB8ICdlcnJvcic7XG4gICAgICAgICAgICBlcnJvcjogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAgIGZpbGVTdGF0c1NraXBwZWQ6IGJvb2xlYW47XG4gICAgICAgICAgICBjb3VudHM6IHtcbiAgICAgICAgICAgICAgICB0YWJsZXM6IG51bWJlcjtcbiAgICAgICAgICAgICAgICB2aWV3czogbnVtYmVyO1xuICAgICAgICAgICAgICAgIG1hdGVyaWFsaXplZFZpZXdzOiBudW1iZXI7XG4gICAgICAgICAgICAgICAgY29sdW1uczogbnVtYmVyO1xuICAgICAgICAgICAgICAgIGluZGV4ZXM6IG51bWJlcjtcbiAgICAgICAgICAgICAgICBmb3JlaWduS2V5czogbnVtYmVyO1xuICAgICAgICAgICAgICAgIGVudW1zOiBudW1iZXI7XG4gICAgICAgICAgICAgICAgYW5hbHl6ZWQ6IG51bWJlcjtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG5cbiAgICAgICAgYWNjb3VudDoge1xuICAgICAgICAgICAgc3RhdGU6XG4gICAgICAgICAgICAgICAgfCAnaWRsZSdcbiAgICAgICAgICAgICAgICB8ICdjcmVhdGluZy1zZXNzaW9uJ1xuICAgICAgICAgICAgICAgIHwgJ3dhaXRpbmcnXG4gICAgICAgICAgICAgICAgfCAnZmV0Y2hpbmctYWNjb3VudCdcbiAgICAgICAgICAgICAgICB8ICdjb25uZWN0ZWQnXG4gICAgICAgICAgICAgICAgfCAnZXJyb3InO1xuICAgICAgICAgICAgZXJyb3I6IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgICB1cmw6IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgICBzZXNzaW9uSWQ6IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgICBlbWFpbDogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAgIG5hbWU6IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG5cbiAgICAgICAgZ2F0ZToge1xuICAgICAgICAgICAgc3RhdGU6ICdpZGxlJyB8ICdjaGVja2luZycgfCAnYmxvY2tlZCcgfCAncGFzc2VkJztcbiAgICAgICAgICAgIG1lc3NhZ2U6IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVBcHBTdG9yZSA9IChjb25maWc6IFRDb25uZWN0aW9uQ29uZmlnKSA9PiB7XG4gICAgY29uc3Qgc3RvcmU6IFRTdG9yZSA9IHtcbiAgICAgICAgY29uZmlnLFxuICAgICAgICBzdGVwczoge1xuICAgICAgICAgICAgc3NoQ29ubmVjdGlvbjoge1xuICAgICAgICAgICAgICAgIGVuYWJsZWQ6ICEhY29uZmlnLnNzaEhvc3QsXG4gICAgICAgICAgICAgICAgbmVlZFBhc3N3b3JkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBwYXNzd29yZDogbnVsbCxcbiAgICAgICAgICAgICAgICBwYXNzd29yZFByb21wdFR5cGU6IG51bGwsXG4gICAgICAgICAgICAgICAgcHJvbXB0Q291bnQ6IDAsXG4gICAgICAgICAgICAgICAgd3JvbmdBdHRlbXB0OiBmYWxzZSxcblxuICAgICAgICAgICAgICAgIHBpY2tlZEhvc3RuYW1lOiBudWxsLFxuICAgICAgICAgICAgICAgIHBpY2tlZFBvcnQ6IG51bGwsXG4gICAgICAgICAgICAgICAgcGlja2VkVXNlcm5hbWU6IG51bGwsXG4gICAgICAgICAgICAgICAgcGlja2VkS2V5UGF0aDogbnVsbCxcblxuICAgICAgICAgICAgICAgIGxvY2FsUG9ydDogbnVsbCxcbiAgICAgICAgICAgICAgICBzdGF0ZTogJ2lkbGUnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBudWxsLFxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZGF0YWJhc2VDb25uZWN0aW9uOiB7XG4gICAgICAgICAgICAgICAgcGFzc3dvcmQ6IG51bGwsXG4gICAgICAgICAgICAgICAgcHJvbXB0Q291bnQ6IDAsXG4gICAgICAgICAgICAgICAgd3JvbmdBdHRlbXB0OiBmYWxzZSxcblxuICAgICAgICAgICAgICAgIHBpY2tlZEhvc3RuYW1lOiBudWxsLFxuICAgICAgICAgICAgICAgIHBpY2tlZFBvcnQ6IG51bGwsXG4gICAgICAgICAgICAgICAgcGlja2VkRGF0YWJhc2U6IG51bGwsXG4gICAgICAgICAgICAgICAgcGlja2VkVXNlcm5hbWU6IG51bGwsXG5cbiAgICAgICAgICAgICAgICBwb3N0Z3Jlc1ZlcnNpb246IG51bGwsXG4gICAgICAgICAgICAgICAgcG9zdGdyZXNWZXJzaW9uTnVtYmVyOiBudWxsLFxuICAgICAgICAgICAgICAgIHN0YXRlOiAnaWRsZScsXG4gICAgICAgICAgICAgICAgZXJyb3I6IG51bGwsXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBpbnRyb3NwZWN0aW9uOiB7XG4gICAgICAgICAgICAgICAgc3RhdGU6ICdpZGxlJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogbnVsbCxcbiAgICAgICAgICAgICAgICBmaWxlU3RhdHNTa2lwcGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBjb3VudHM6IHtcbiAgICAgICAgICAgICAgICAgICAgdGFibGVzOiAwLFxuICAgICAgICAgICAgICAgICAgICB2aWV3czogMCxcbiAgICAgICAgICAgICAgICAgICAgbWF0ZXJpYWxpemVkVmlld3M6IDAsXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IDAsXG4gICAgICAgICAgICAgICAgICAgIGluZGV4ZXM6IDAsXG4gICAgICAgICAgICAgICAgICAgIGZvcmVpZ25LZXlzOiAwLFxuICAgICAgICAgICAgICAgICAgICBlbnVtczogMCxcbiAgICAgICAgICAgICAgICAgICAgYW5hbHl6ZWQ6IDAsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGFjY291bnQ6IHtcbiAgICAgICAgICAgICAgICBzdGF0ZTogJ2lkbGUnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBudWxsLFxuICAgICAgICAgICAgICAgIHVybDogbnVsbCxcbiAgICAgICAgICAgICAgICBzZXNzaW9uSWQ6IG51bGwsXG4gICAgICAgICAgICAgICAgZW1haWw6IG51bGwsXG4gICAgICAgICAgICAgICAgbmFtZTogbnVsbCxcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdhdGU6IHtcbiAgICAgICAgICAgICAgICBzdGF0ZTogJ2lkbGUnLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IG51bGwsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIH07XG5cbiAgICByZXR1cm4gbWFrZUF1dG9PYnNlcnZhYmxlKFxuICAgICAgICBzdG9yZSxcbiAgICAgICAge30sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGF1dG9CaW5kOiB0cnVlLFxuICAgICAgICAgICAgZGVlcDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICApO1xufTtcblxuZXhwb3J0IHR5cGUgVEFwcFN0b3JlID0gUmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlQXBwU3RvcmU+O1xuIl19
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUubWpzIiwic291cmNlUm9vdCI6Ii4vc3JjLyIsInNvdXJjZXMiOlsic3RvcmUubXRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQU14QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBK0IsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUN2RSxhQUFhO0lBQ2IsWUFBWTtJQUNaLGVBQWU7Q0FDVCxDQUFDLENBQUM7QUFpSFosTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQzFCLE1BQXlCLEVBQ3pCLGFBQTZCLEVBQy9CLEVBQUU7SUFDQSxNQUFNLEtBQUssR0FBVztRQUNsQixNQUFNO1FBQ04sYUFBYTtRQUNiLEtBQUssRUFBRTtZQUNILGFBQWEsRUFBRTtnQkFDWCxPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPO2dCQUN6QixZQUFZLEVBQUUsS0FBSztnQkFDbkIsUUFBUSxFQUFFLElBQUk7Z0JBQ2Qsa0JBQWtCLEVBQUUsSUFBSTtnQkFDeEIsV0FBVyxFQUFFLENBQUM7Z0JBQ2QsWUFBWSxFQUFFLEtBQUs7Z0JBRW5CLGNBQWMsRUFBRSxJQUFJO2dCQUNwQixVQUFVLEVBQUUsSUFBSTtnQkFDaEIsY0FBYyxFQUFFLElBQUk7Z0JBQ3BCLGFBQWEsRUFBRSxJQUFJO2dCQUVuQixTQUFTLEVBQUUsSUFBSTtnQkFDZixLQUFLLEVBQUUsTUFBTTtnQkFDYixLQUFLLEVBQUUsSUFBSTthQUNkO1lBRUQsa0JBQWtCLEVBQUU7Z0JBQ2hCLFFBQVEsRUFBRSxJQUFJO2dCQUNkLFdBQVcsRUFBRSxDQUFDO2dCQUNkLFlBQVksRUFBRSxLQUFLO2dCQUVuQixjQUFjLEVBQUUsSUFBSTtnQkFDcEIsVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLGNBQWMsRUFBRSxJQUFJO2dCQUNwQixjQUFjLEVBQUUsSUFBSTtnQkFFcEIsZUFBZSxFQUFFLElBQUk7Z0JBQ3JCLHFCQUFxQixFQUFFLElBQUk7Z0JBQzNCLEtBQUssRUFBRSxNQUFNO2dCQUNiLEtBQUssRUFBRSxJQUFJO2FBQ2Q7WUFFRCxhQUFhLEVBQUU7Z0JBQ1gsS0FBSyxFQUFFLE1BQU07Z0JBQ2IsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsZ0JBQWdCLEVBQUUsS0FBSztnQkFDdkIsTUFBTSxFQUFFO29CQUNKLE1BQU0sRUFBRSxDQUFDO29CQUNULEtBQUssRUFBRSxDQUFDO29CQUNSLGlCQUFpQixFQUFFLENBQUM7b0JBQ3BCLE9BQU8sRUFBRSxDQUFDO29CQUNWLE9BQU8sRUFBRSxDQUFDO29CQUNWLFdBQVcsRUFBRSxDQUFDO29CQUNkLEtBQUssRUFBRSxDQUFDO29CQUNSLFFBQVEsRUFBRSxDQUFDO2lCQUNkO2FBQ0o7WUFFRCxPQUFPLEVBQUU7Z0JBQ0wsS0FBSyxFQUFFLE1BQU07Z0JBQ2IsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsR0FBRyxFQUFFLElBQUk7Z0JBQ1QsU0FBUyxFQUFFLElBQUk7Z0JBQ2YsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsSUFBSSxFQUFFLElBQUk7YUFDYjtZQUVELFVBQVUsRUFBRTtnQkFDUixLQUFLLEVBQUUsTUFBTTtnQkFDYixLQUFLLEVBQUUsSUFBSTtnQkFDWCxTQUFTLEVBQUUsSUFBSTtnQkFDZixJQUFJLEVBQUUsSUFBSTthQUNiO1lBRUQsZUFBZSxFQUFFO2dCQUNiLEtBQUssRUFBRSxNQUFNO2dCQUNiLEtBQUssRUFBRSxJQUFJO2FBQ2Q7WUFFRCxJQUFJLEVBQUU7Z0JBQ0YsS0FBSyxFQUFFLE1BQU07Z0JBQ2IsT0FBTyxFQUFFLElBQUk7YUFDaEI7U0FDSjtLQUNKLENBQUM7SUFFRixPQUFPLGtCQUFrQixDQUNyQixLQUFLLEVBQ0wsRUFBRSxFQUNGO1FBQ0ksUUFBUSxFQUFFLElBQUk7UUFDZCxJQUFJLEVBQUUsSUFBSTtLQUNiLENBQ0osQ0FBQztBQUNOLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7bWFrZUF1dG9PYnNlcnZhYmxlfSBmcm9tICdtb2J4JztcblxuaW1wb3J0IHtUQ29ubmVjdGlvbkNvbmZpZ30gZnJvbSAnLi90eXBlcy9jb25uZWN0aW9uLm1qcyc7XG5cbmV4cG9ydCB0eXBlIFRTdG9wQWZ0ZXJTdGFnZSA9ICdzc2gtY29ubmVjdCcgfCAnZGItY29ubmVjdCcgfCAnaW50cm9zcGVjdGlvbic7XG5cbmV4cG9ydCBjb25zdCBTVE9QX0FGVEVSX1NUQUdFUzogcmVhZG9ubHkgVFN0b3BBZnRlclN0YWdlW10gPSBPYmplY3QuZnJlZXplKFtcbiAgICAnc3NoLWNvbm5lY3QnLFxuICAgICdkYi1jb25uZWN0JyxcbiAgICAnaW50cm9zcGVjdGlvbicsXG5dIGFzIGNvbnN0KTtcblxuZXhwb3J0IHR5cGUgVE91dHB1dE9wdGlvbnMgPSB7XG4gICAgb3V0cHV0SW50cm9zcGVjdGlvbkpzb246IHN0cmluZyB8IG51bGw7XG4gICAgc3RvcEFmdGVyOiBUU3RvcEFmdGVyU3RhZ2UgfCBudWxsO1xuICAgIG92ZXJ3cml0ZTogYm9vbGVhbjtcbiAgICBleHBsYW5hdGlvbjogc3RyaW5nIHwgbnVsbDtcbn07XG5cbmV4cG9ydCB0eXBlIFRTdG9yZSA9IHtcbiAgICBjb25maWc6IFRDb25uZWN0aW9uQ29uZmlnO1xuICAgIG91dHB1dE9wdGlvbnM6IFRPdXRwdXRPcHRpb25zO1xuICAgIHN0ZXBzOiB7XG4gICAgICAgIHNzaENvbm5lY3Rpb246IHtcbiAgICAgICAgICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICAgICAgICBuZWVkUGFzc3dvcmQ6IGJvb2xlYW47XG4gICAgICAgICAgICBwYXNzd29yZDogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAgIHBhc3N3b3JkUHJvbXB0VHlwZTogJ3Bhc3NwaHJhc2UnIHwgJ3Bhc3N3b3JkJyB8IG51bGw7XG4gICAgICAgICAgICBwcm9tcHRDb3VudDogbnVtYmVyO1xuICAgICAgICAgICAgd3JvbmdBdHRlbXB0OiBib29sZWFuO1xuXG4gICAgICAgICAgICBwaWNrZWRIb3N0bmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAgIHBpY2tlZFBvcnQ6IG51bWJlciB8IG51bGw7XG4gICAgICAgICAgICBwaWNrZWRVc2VybmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAgIHBpY2tlZEtleVBhdGg6IHN0cmluZyB8IG51bGw7XG5cbiAgICAgICAgICAgIGxvY2FsUG9ydDogbnVtYmVyIHwgbnVsbDtcbiAgICAgICAgICAgIHN0YXRlOlxuICAgICAgICAgICAgICAgIHwgJ2lkbGUnXG4gICAgICAgICAgICAgICAgfCAnY29ubmVjdGluZydcbiAgICAgICAgICAgICAgICB8ICdjb25uZWN0ZWQnXG4gICAgICAgICAgICAgICAgfCAnbmVlZC1wYXNzd29yZCdcbiAgICAgICAgICAgICAgICB8ICdlcnJvcidcbiAgICAgICAgICAgICAgICB8ICdjbG9zZWQnO1xuICAgICAgICAgICAgZXJyb3I6IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG5cbiAgICAgICAgZGF0YWJhc2VDb25uZWN0aW9uOiB7XG4gICAgICAgICAgICBwYXNzd29yZDogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAgIHByb21wdENvdW50OiBudW1iZXI7XG4gICAgICAgICAgICB3cm9uZ0F0dGVtcHQ6IGJvb2xlYW47XG5cbiAgICAgICAgICAgIHBpY2tlZEhvc3RuYW1lOiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgICAgcGlja2VkUG9ydDogbnVtYmVyIHwgbnVsbDtcbiAgICAgICAgICAgIHBpY2tlZERhdGFiYXNlOiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgICAgcGlja2VkVXNlcm5hbWU6IHN0cmluZyB8IG51bGw7XG5cbiAgICAgICAgICAgIHBvc3RncmVzVmVyc2lvbjogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAgIHBvc3RncmVzVmVyc2lvbk51bWJlcjogbnVtYmVyIHwgbnVsbDtcbiAgICAgICAgICAgIHN0YXRlOlxuICAgICAgICAgICAgICAgIHwgJ2lkbGUnXG4gICAgICAgICAgICAgICAgfCAnY29ubmVjdGluZydcbiAgICAgICAgICAgICAgICB8ICdjb25uZWN0ZWQnXG4gICAgICAgICAgICAgICAgfCAnbmVlZC1wYXNzd29yZCdcbiAgICAgICAgICAgICAgICB8ICdlcnJvcic7XG4gICAgICAgICAgICBlcnJvcjogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgfTtcblxuICAgICAgICBpbnRyb3NwZWN0aW9uOiB7XG4gICAgICAgICAgICBzdGF0ZTogJ2lkbGUnIHwgJ2ZldGNoaW5nJyB8ICdkb25lJyB8ICdlcnJvcic7XG4gICAgICAgICAgICBlcnJvcjogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAgIGZpbGVTdGF0c1NraXBwZWQ6IGJvb2xlYW47XG4gICAgICAgICAgICBjb3VudHM6IHtcbiAgICAgICAgICAgICAgICB0YWJsZXM6IG51bWJlcjtcbiAgICAgICAgICAgICAgICB2aWV3czogbnVtYmVyO1xuICAgICAgICAgICAgICAgIG1hdGVyaWFsaXplZFZpZXdzOiBudW1iZXI7XG4gICAgICAgICAgICAgICAgY29sdW1uczogbnVtYmVyO1xuICAgICAgICAgICAgICAgIGluZGV4ZXM6IG51bWJlcjtcbiAgICAgICAgICAgICAgICBmb3JlaWduS2V5czogbnVtYmVyO1xuICAgICAgICAgICAgICAgIGVudW1zOiBudW1iZXI7XG4gICAgICAgICAgICAgICAgYW5hbHl6ZWQ6IG51bWJlcjtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG5cbiAgICAgICAgYWNjb3VudDoge1xuICAgICAgICAgICAgc3RhdGU6XG4gICAgICAgICAgICAgICAgfCAnaWRsZSdcbiAgICAgICAgICAgICAgICB8ICdjcmVhdGluZy1zZXNzaW9uJ1xuICAgICAgICAgICAgICAgIHwgJ3dhaXRpbmcnXG4gICAgICAgICAgICAgICAgfCAnZmV0Y2hpbmctYWNjb3VudCdcbiAgICAgICAgICAgICAgICB8ICdjb25uZWN0ZWQnXG4gICAgICAgICAgICAgICAgfCAnZXJyb3InO1xuICAgICAgICAgICAgZXJyb3I6IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgICB1cmw6IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgICBzZXNzaW9uSWQ6IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgICBlbWFpbDogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAgIG5hbWU6IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG5cbiAgICAgICAgb3V0cHV0SnNvbjoge1xuICAgICAgICAgICAgc3RhdGU6XG4gICAgICAgICAgICAgICAgfCAnaWRsZSdcbiAgICAgICAgICAgICAgICB8ICdwcm9tcHRpbmctb3ZlcndyaXRlJ1xuICAgICAgICAgICAgICAgIHwgJ3dyaXRpbmcnXG4gICAgICAgICAgICAgICAgfCAnZG9uZSdcbiAgICAgICAgICAgICAgICB8ICdlcnJvcic7XG4gICAgICAgICAgICBlcnJvcjogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAgIGNvbmZpcm1lZDogYm9vbGVhbiB8IG51bGw7XG4gICAgICAgICAgICBwYXRoOiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuXG4gICAgICAgIHVzZXJFeHBsYW5hdGlvbjoge1xuICAgICAgICAgICAgc3RhdGU6ICdpZGxlJyB8ICdwcm9tcHRpbmcnIHwgJ2RvbmUnO1xuICAgICAgICAgICAgdmFsdWU6IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG5cbiAgICAgICAgZ2F0ZToge1xuICAgICAgICAgICAgc3RhdGU6ICdpZGxlJyB8ICdjaGVja2luZycgfCAnYmxvY2tlZCcgfCAncGFzc2VkJztcbiAgICAgICAgICAgIG1lc3NhZ2U6IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVBcHBTdG9yZSA9IChcbiAgICBjb25maWc6IFRDb25uZWN0aW9uQ29uZmlnLFxuICAgIG91dHB1dE9wdGlvbnM6IFRPdXRwdXRPcHRpb25zLFxuKSA9PiB7XG4gICAgY29uc3Qgc3RvcmU6IFRTdG9yZSA9IHtcbiAgICAgICAgY29uZmlnLFxuICAgICAgICBvdXRwdXRPcHRpb25zLFxuICAgICAgICBzdGVwczoge1xuICAgICAgICAgICAgc3NoQ29ubmVjdGlvbjoge1xuICAgICAgICAgICAgICAgIGVuYWJsZWQ6ICEhY29uZmlnLnNzaEhvc3QsXG4gICAgICAgICAgICAgICAgbmVlZFBhc3N3b3JkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBwYXNzd29yZDogbnVsbCxcbiAgICAgICAgICAgICAgICBwYXNzd29yZFByb21wdFR5cGU6IG51bGwsXG4gICAgICAgICAgICAgICAgcHJvbXB0Q291bnQ6IDAsXG4gICAgICAgICAgICAgICAgd3JvbmdBdHRlbXB0OiBmYWxzZSxcblxuICAgICAgICAgICAgICAgIHBpY2tlZEhvc3RuYW1lOiBudWxsLFxuICAgICAgICAgICAgICAgIHBpY2tlZFBvcnQ6IG51bGwsXG4gICAgICAgICAgICAgICAgcGlja2VkVXNlcm5hbWU6IG51bGwsXG4gICAgICAgICAgICAgICAgcGlja2VkS2V5UGF0aDogbnVsbCxcblxuICAgICAgICAgICAgICAgIGxvY2FsUG9ydDogbnVsbCxcbiAgICAgICAgICAgICAgICBzdGF0ZTogJ2lkbGUnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBudWxsLFxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZGF0YWJhc2VDb25uZWN0aW9uOiB7XG4gICAgICAgICAgICAgICAgcGFzc3dvcmQ6IG51bGwsXG4gICAgICAgICAgICAgICAgcHJvbXB0Q291bnQ6IDAsXG4gICAgICAgICAgICAgICAgd3JvbmdBdHRlbXB0OiBmYWxzZSxcblxuICAgICAgICAgICAgICAgIHBpY2tlZEhvc3RuYW1lOiBudWxsLFxuICAgICAgICAgICAgICAgIHBpY2tlZFBvcnQ6IG51bGwsXG4gICAgICAgICAgICAgICAgcGlja2VkRGF0YWJhc2U6IG51bGwsXG4gICAgICAgICAgICAgICAgcGlja2VkVXNlcm5hbWU6IG51bGwsXG5cbiAgICAgICAgICAgICAgICBwb3N0Z3Jlc1ZlcnNpb246IG51bGwsXG4gICAgICAgICAgICAgICAgcG9zdGdyZXNWZXJzaW9uTnVtYmVyOiBudWxsLFxuICAgICAgICAgICAgICAgIHN0YXRlOiAnaWRsZScsXG4gICAgICAgICAgICAgICAgZXJyb3I6IG51bGwsXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBpbnRyb3NwZWN0aW9uOiB7XG4gICAgICAgICAgICAgICAgc3RhdGU6ICdpZGxlJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogbnVsbCxcbiAgICAgICAgICAgICAgICBmaWxlU3RhdHNTa2lwcGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBjb3VudHM6IHtcbiAgICAgICAgICAgICAgICAgICAgdGFibGVzOiAwLFxuICAgICAgICAgICAgICAgICAgICB2aWV3czogMCxcbiAgICAgICAgICAgICAgICAgICAgbWF0ZXJpYWxpemVkVmlld3M6IDAsXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IDAsXG4gICAgICAgICAgICAgICAgICAgIGluZGV4ZXM6IDAsXG4gICAgICAgICAgICAgICAgICAgIGZvcmVpZ25LZXlzOiAwLFxuICAgICAgICAgICAgICAgICAgICBlbnVtczogMCxcbiAgICAgICAgICAgICAgICAgICAgYW5hbHl6ZWQ6IDAsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGFjY291bnQ6IHtcbiAgICAgICAgICAgICAgICBzdGF0ZTogJ2lkbGUnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBudWxsLFxuICAgICAgICAgICAgICAgIHVybDogbnVsbCxcbiAgICAgICAgICAgICAgICBzZXNzaW9uSWQ6IG51bGwsXG4gICAgICAgICAgICAgICAgZW1haWw6IG51bGwsXG4gICAgICAgICAgICAgICAgbmFtZTogbnVsbCxcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIG91dHB1dEpzb246IHtcbiAgICAgICAgICAgICAgICBzdGF0ZTogJ2lkbGUnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBudWxsLFxuICAgICAgICAgICAgICAgIGNvbmZpcm1lZDogbnVsbCxcbiAgICAgICAgICAgICAgICBwYXRoOiBudWxsLFxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdXNlckV4cGxhbmF0aW9uOiB7XG4gICAgICAgICAgICAgICAgc3RhdGU6ICdpZGxlJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdhdGU6IHtcbiAgICAgICAgICAgICAgICBzdGF0ZTogJ2lkbGUnLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IG51bGwsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIH07XG5cbiAgICByZXR1cm4gbWFrZUF1dG9PYnNlcnZhYmxlKFxuICAgICAgICBzdG9yZSxcbiAgICAgICAge30sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGF1dG9CaW5kOiB0cnVlLFxuICAgICAgICAgICAgZGVlcDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICApO1xufTtcblxuZXhwb3J0IHR5cGUgVEFwcFN0b3JlID0gUmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlQXBwU3RvcmU+O1xuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"App.d.ts","sourceRoot":"./src/","sources":["ui/App.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAErC,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,cAAc,CAAC;AAQzC,KAAK,SAAS,GAAG;IACb,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,GAAG,eAAsB,SAAS,KAAG,SAAS;;CAWzD,CAAC"}
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"./src/","sources":["ui/App.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAErC,OAAO,KAAK,EAAC,MAAM,EAAkB,MAAM,cAAc,CAAC;AAuB1D,KAAK,SAAS,GAAG;IACb,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,GAAG,eAAsB,SAAS,KAAG,SAAS;;CAuBzD,CAAC"}
package/dist/ui/App.js CHANGED
@@ -1,13 +1,23 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Box } from 'ink';
3
3
  import { observer } from 'mobx-react-lite';
4
4
  import { SSH } from './components/SSH.js';
5
5
  import { DB } from './components/DB.js';
6
6
  import { Introspect } from './components/Introspect.js';
7
7
  import { Account } from './components/Session.js';
8
+ import { OutputJson } from './components/OutputJson.js';
9
+ import { UserExplanation } from './components/UserExplanation.js';
8
10
  import { Gate } from './components/Gate.js';
9
11
  import { Splash } from './components/Splash.js';
12
+ const STAGE_ORDER = [
13
+ 'ssh-connect',
14
+ 'db-connect',
15
+ 'introspection',
16
+ ];
17
+ const isAfterStopPoint = (stopAfter, stage) => stopAfter !== null &&
18
+ STAGE_ORDER.indexOf(stage) > STAGE_ORDER.indexOf(stopAfter);
10
19
  export const App = observer(({ store }) => {
11
- return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(Splash, {}), _jsx(SSH, { store: store }), _jsx(DB, { store: store }), _jsx(Introspect, { store: store }), _jsx(Account, { store: store }), _jsx(Gate, { store: store })] }));
20
+ const { stopAfter } = store.outputOptions;
21
+ return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(Splash, {}), _jsx(SSH, { store: store }), !isAfterStopPoint(stopAfter, 'db-connect') && _jsx(DB, { store: store }), !isAfterStopPoint(stopAfter, 'introspection') && (_jsxs(_Fragment, { children: [_jsx(Introspect, { store: store }), stopAfter === null && (_jsxs(_Fragment, { children: [_jsx(Account, { store: store }), _jsx(Gate, { store: store })] })), _jsx(UserExplanation, { store: store }), _jsx(OutputJson, { store: store })] }))] }));
12
22
  });
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwLmpzIiwic291cmNlUm9vdCI6Ii4vc3JjLyIsInNvdXJjZXMiOlsidWkvQXBwLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLEtBQUssQ0FBQztBQUV4QixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFekMsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3hDLE9BQU8sRUFBQyxFQUFFLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUN0QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ2hELE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxQyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFNOUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxDQUFDLEVBQUMsS0FBSyxFQUFZLEVBQWEsRUFBRTtJQUMxRCxPQUFPLENBQ0gsTUFBQyxHQUFHLElBQUMsYUFBYSxFQUFDLFFBQVEsRUFBQyxPQUFPLEVBQUUsQ0FBQyxhQUNsQyxLQUFDLE1BQU0sS0FBRyxFQUNWLEtBQUMsR0FBRyxJQUFDLEtBQUssRUFBRSxLQUFLLEdBQUksRUFDckIsS0FBQyxFQUFFLElBQUMsS0FBSyxFQUFFLEtBQUssR0FBSSxFQUNwQixLQUFDLFVBQVUsSUFBQyxLQUFLLEVBQUUsS0FBSyxHQUFJLEVBQzVCLEtBQUMsT0FBTyxJQUFDLEtBQUssRUFBRSxLQUFLLEdBQUksRUFDekIsS0FBQyxJQUFJLElBQUMsS0FBSyxFQUFFLEtBQUssR0FBSSxJQUNwQixDQUNULENBQUM7QUFDTixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Qm94fSBmcm9tICdpbmsnO1xuaW1wb3J0IHR5cGUge1JlYWN0Tm9kZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtvYnNlcnZlcn0gZnJvbSAnbW9ieC1yZWFjdC1saXRlJztcbmltcG9ydCB0eXBlIHtUU3RvcmV9IGZyb20gJy4uL3N0b3JlLm1qcyc7XG5pbXBvcnQge1NTSH0gZnJvbSAnLi9jb21wb25lbnRzL1NTSC5qcyc7XG5pbXBvcnQge0RCfSBmcm9tICcuL2NvbXBvbmVudHMvREIuanMnO1xuaW1wb3J0IHtJbnRyb3NwZWN0fSBmcm9tICcuL2NvbXBvbmVudHMvSW50cm9zcGVjdC5qcyc7XG5pbXBvcnQge0FjY291bnR9IGZyb20gJy4vY29tcG9uZW50cy9TZXNzaW9uLmpzJztcbmltcG9ydCB7R2F0ZX0gZnJvbSAnLi9jb21wb25lbnRzL0dhdGUuanMnO1xuaW1wb3J0IHtTcGxhc2h9IGZyb20gJy4vY29tcG9uZW50cy9TcGxhc2guanMnO1xuXG50eXBlIFRBcHBQcm9wcyA9IHtcbiAgICBzdG9yZTogVFN0b3JlO1xufTtcblxuZXhwb3J0IGNvbnN0IEFwcCA9IG9ic2VydmVyKCh7c3RvcmV9OiBUQXBwUHJvcHMpOiBSZWFjdE5vZGUgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICAgIDxCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIHBhZGRpbmc9ezF9PlxuICAgICAgICAgICAgPFNwbGFzaCAvPlxuICAgICAgICAgICAgPFNTSCBzdG9yZT17c3RvcmV9IC8+XG4gICAgICAgICAgICA8REIgc3RvcmU9e3N0b3JlfSAvPlxuICAgICAgICAgICAgPEludHJvc3BlY3Qgc3RvcmU9e3N0b3JlfSAvPlxuICAgICAgICAgICAgPEFjY291bnQgc3RvcmU9e3N0b3JlfSAvPlxuICAgICAgICAgICAgPEdhdGUgc3RvcmU9e3N0b3JlfSAvPlxuICAgICAgICA8L0JveD5cbiAgICApO1xufSk7XG4iXX0=
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwLmpzIiwic291cmNlUm9vdCI6Ii4vc3JjLyIsInNvdXJjZXMiOlsidWkvQXBwLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLEtBQUssQ0FBQztBQUV4QixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFekMsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3hDLE9BQU8sRUFBQyxFQUFFLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUN0QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ2hELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUU5QyxNQUFNLFdBQVcsR0FBK0I7SUFDNUMsYUFBYTtJQUNiLFlBQVk7SUFDWixlQUFlO0NBQ1QsQ0FBQztBQUVYLE1BQU0sZ0JBQWdCLEdBQUcsQ0FDckIsU0FBaUMsRUFDakMsS0FBc0IsRUFDZixFQUFFLENBQ1QsU0FBUyxLQUFLLElBQUk7SUFDbEIsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBTWhFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsQ0FBQyxFQUFDLEtBQUssRUFBWSxFQUFhLEVBQUU7SUFDMUQsTUFBTSxFQUFDLFNBQVMsRUFBQyxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUM7SUFFeEMsT0FBTyxDQUNILE1BQUMsR0FBRyxJQUFDLGFBQWEsRUFBQyxRQUFRLEVBQUMsT0FBTyxFQUFFLENBQUMsYUFDbEMsS0FBQyxNQUFNLEtBQUcsRUFDVixLQUFDLEdBQUcsSUFBQyxLQUFLLEVBQUUsS0FBSyxHQUFJLEVBQ3BCLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxJQUFJLEtBQUMsRUFBRSxJQUFDLEtBQUssRUFBRSxLQUFLLEdBQUksRUFDbEUsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsZUFBZSxDQUFDLElBQUksQ0FDOUMsOEJBQ0ksS0FBQyxVQUFVLElBQUMsS0FBSyxFQUFFLEtBQUssR0FBSSxFQUMzQixTQUFTLEtBQUssSUFBSSxJQUFJLENBQ25CLDhCQUNJLEtBQUMsT0FBTyxJQUFDLEtBQUssRUFBRSxLQUFLLEdBQUksRUFDekIsS0FBQyxJQUFJLElBQUMsS0FBSyxFQUFFLEtBQUssR0FBSSxJQUN2QixDQUNOLEVBQ0QsS0FBQyxlQUFlLElBQUMsS0FBSyxFQUFFLEtBQUssR0FBSSxFQUNqQyxLQUFDLFVBQVUsSUFBQyxLQUFLLEVBQUUsS0FBSyxHQUFJLElBQzdCLENBQ04sSUFDQyxDQUNULENBQUM7QUFDTixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Qm94fSBmcm9tICdpbmsnO1xuaW1wb3J0IHR5cGUge1JlYWN0Tm9kZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtvYnNlcnZlcn0gZnJvbSAnbW9ieC1yZWFjdC1saXRlJztcbmltcG9ydCB0eXBlIHtUU3RvcmUsIFRTdG9wQWZ0ZXJTdGFnZX0gZnJvbSAnLi4vc3RvcmUubWpzJztcbmltcG9ydCB7U1NIfSBmcm9tICcuL2NvbXBvbmVudHMvU1NILmpzJztcbmltcG9ydCB7REJ9IGZyb20gJy4vY29tcG9uZW50cy9EQi5qcyc7XG5pbXBvcnQge0ludHJvc3BlY3R9IGZyb20gJy4vY29tcG9uZW50cy9JbnRyb3NwZWN0LmpzJztcbmltcG9ydCB7QWNjb3VudH0gZnJvbSAnLi9jb21wb25lbnRzL1Nlc3Npb24uanMnO1xuaW1wb3J0IHtPdXRwdXRKc29ufSBmcm9tICcuL2NvbXBvbmVudHMvT3V0cHV0SnNvbi5qcyc7XG5pbXBvcnQge1VzZXJFeHBsYW5hdGlvbn0gZnJvbSAnLi9jb21wb25lbnRzL1VzZXJFeHBsYW5hdGlvbi5qcyc7XG5pbXBvcnQge0dhdGV9IGZyb20gJy4vY29tcG9uZW50cy9HYXRlLmpzJztcbmltcG9ydCB7U3BsYXNofSBmcm9tICcuL2NvbXBvbmVudHMvU3BsYXNoLmpzJztcblxuY29uc3QgU1RBR0VfT1JERVI6IHJlYWRvbmx5IFRTdG9wQWZ0ZXJTdGFnZVtdID0gW1xuICAgICdzc2gtY29ubmVjdCcsXG4gICAgJ2RiLWNvbm5lY3QnLFxuICAgICdpbnRyb3NwZWN0aW9uJyxcbl0gYXMgY29uc3Q7XG5cbmNvbnN0IGlzQWZ0ZXJTdG9wUG9pbnQgPSAoXG4gICAgc3RvcEFmdGVyOiBUU3RvcEFmdGVyU3RhZ2UgfCBudWxsLFxuICAgIHN0YWdlOiBUU3RvcEFmdGVyU3RhZ2UsXG4pOiBib29sZWFuID0+XG4gICAgc3RvcEFmdGVyICE9PSBudWxsICYmXG4gICAgU1RBR0VfT1JERVIuaW5kZXhPZihzdGFnZSkgPiBTVEFHRV9PUkRFUi5pbmRleE9mKHN0b3BBZnRlcik7XG5cbnR5cGUgVEFwcFByb3BzID0ge1xuICAgIHN0b3JlOiBUU3RvcmU7XG59O1xuXG5leHBvcnQgY29uc3QgQXBwID0gb2JzZXJ2ZXIoKHtzdG9yZX06IFRBcHBQcm9wcyk6IFJlYWN0Tm9kZSA9PiB7XG4gICAgY29uc3Qge3N0b3BBZnRlcn0gPSBzdG9yZS5vdXRwdXRPcHRpb25zO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCIgcGFkZGluZz17MX0+XG4gICAgICAgICAgICA8U3BsYXNoIC8+XG4gICAgICAgICAgICA8U1NIIHN0b3JlPXtzdG9yZX0gLz5cbiAgICAgICAgICAgIHshaXNBZnRlclN0b3BQb2ludChzdG9wQWZ0ZXIsICdkYi1jb25uZWN0JykgJiYgPERCIHN0b3JlPXtzdG9yZX0gLz59XG4gICAgICAgICAgICB7IWlzQWZ0ZXJTdG9wUG9pbnQoc3RvcEFmdGVyLCAnaW50cm9zcGVjdGlvbicpICYmIChcbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8SW50cm9zcGVjdCBzdG9yZT17c3RvcmV9IC8+XG4gICAgICAgICAgICAgICAgICAgIHtzdG9wQWZ0ZXIgPT09IG51bGwgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWNjb3VudCBzdG9yZT17c3RvcmV9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEdhdGUgc3RvcmU9e3N0b3JlfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDxVc2VyRXhwbGFuYXRpb24gc3RvcmU9e3N0b3JlfSAvPlxuICAgICAgICAgICAgICAgICAgICA8T3V0cHV0SnNvbiBzdG9yZT17c3RvcmV9IC8+XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApfVxuICAgICAgICA8L0JveD5cbiAgICApO1xufSk7XG4iXX0=
@@ -0,0 +1,10 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { TStore } from '../../store.mjs';
3
+ type TOutputJsonProps = {
4
+ store: TStore;
5
+ };
6
+ export declare const OutputJson: (({ store }: TOutputJsonProps) => ReactNode) & {
7
+ displayName: string;
8
+ };
9
+ export {};
10
+ //# sourceMappingURL=OutputJson.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OutputJson.d.ts","sourceRoot":"./src/","sources":["ui/components/OutputJson.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAGrC,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAG5C,KAAK,gBAAgB,GAAG;IACpB,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,UAAU,eAAsB,gBAAgB,KAAG,SAAS;;CA+CvE,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text, useInput } from 'ink';
3
+ import { observer } from 'mobx-react-lite';
4
+ import { runInAction } from 'mobx';
5
+ import { Spinner } from './Spinner.js';
6
+ export const OutputJson = observer(({ store }) => {
7
+ const outputJson = store.steps.outputJson;
8
+ useInput((_input, _key) => {
9
+ runInAction(() => {
10
+ store.steps.outputJson.confirmed = _input.toLowerCase() === 'y';
11
+ });
12
+ }, { isActive: outputJson.state === 'prompting-overwrite' });
13
+ if (outputJson.state === 'idle') {
14
+ return null;
15
+ }
16
+ return (_jsxs(Box, { children: [outputJson.state === 'writing' ? (_jsx(Spinner, {})) : outputJson.state === 'done' ? (_jsx(Text, { color: "green", children: "\u25CF" })) : outputJson.state === 'error' ? (_jsx(Text, { color: "red", children: "\u25CF" })) : (_jsx(Text, { color: "yellow", children: "\u25CF" })), _jsx(Text, { children: " " }), _jsx(Text, { bold: true, children: "Output: " }), outputJson.state === 'prompting-overwrite' ? (_jsxs(Text, { children: ["File ", _jsx(Text, { color: "cyan", children: outputJson.path }), " already exists. Overwrite? [y/N]", ' '] })) : outputJson.state === 'writing' ? (_jsx(Text, { children: "writing introspection JSON" })) : outputJson.state === 'done' ? (_jsxs(Text, { color: "green", children: ["written to ", _jsx(Text, { color: "cyan", children: outputJson.path })] })) : outputJson.state === 'error' ? (_jsxs(Text, { color: "red", children: ["Error: ", outputJson.error] })) : null] }));
17
+ });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3V0cHV0SnNvbi5qcyIsInNvdXJjZVJvb3QiOiIuL3NyYy8iLCJzb3VyY2VzIjpbInVpL2NvbXBvbmVudHMvT3V0cHV0SnNvbi50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBQyxNQUFNLEtBQUssQ0FBQztBQUV4QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVqQyxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBTXJDLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsQ0FBQyxFQUFDLEtBQUssRUFBbUIsRUFBYSxFQUFFO0lBQ3hFLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO0lBRTFDLFFBQVEsQ0FDSixDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRTtRQUNiLFdBQVcsQ0FBQyxHQUFHLEVBQUU7WUFDYixLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFdBQVcsRUFBRSxLQUFLLEdBQUcsQ0FBQztRQUNwRSxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsRUFDRCxFQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsS0FBSyxLQUFLLHFCQUFxQixFQUFDLENBQ3pELENBQUM7SUFFRixJQUFJLFVBQVUsQ0FBQyxLQUFLLEtBQUssTUFBTSxFQUFFLENBQUM7UUFDOUIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELE9BQU8sQ0FDSCxNQUFDLEdBQUcsZUFDQyxVQUFVLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FDOUIsS0FBQyxPQUFPLEtBQUcsQ0FDZCxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FDOUIsS0FBQyxJQUFJLElBQUMsS0FBSyxFQUFDLE9BQU8sdUJBQVMsQ0FDL0IsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQy9CLEtBQUMsSUFBSSxJQUFDLEtBQUssRUFBQyxLQUFLLHVCQUFTLENBQzdCLENBQUMsQ0FBQyxDQUFDLENBQ0EsS0FBQyxJQUFJLElBQUMsS0FBSyxFQUFDLFFBQVEsdUJBQVMsQ0FDaEMsRUFFRCxLQUFDLElBQUksb0JBQVMsRUFDZCxLQUFDLElBQUksSUFBQyxJQUFJLCtCQUFnQixFQUV6QixVQUFVLENBQUMsS0FBSyxLQUFLLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUMxQyxNQUFDLElBQUksd0JBQ0ksS0FBQyxJQUFJLElBQUMsS0FBSyxFQUFDLE1BQU0sWUFBRSxVQUFVLENBQUMsSUFBSSxHQUFRLHVDQUN2QixHQUFHLElBQ3pCLENBQ1YsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQ2pDLEtBQUMsSUFBSSw2Q0FBa0MsQ0FDMUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQzlCLE1BQUMsSUFBSSxJQUFDLEtBQUssRUFBQyxPQUFPLDRCQUNKLEtBQUMsSUFBSSxJQUFDLEtBQUssRUFBQyxNQUFNLFlBQUUsVUFBVSxDQUFDLElBQUksR0FBUSxJQUNuRCxDQUNWLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUMvQixNQUFDLElBQUksSUFBQyxLQUFLLEVBQUMsS0FBSyx3QkFBUyxVQUFVLENBQUMsS0FBSyxJQUFRLENBQ3JELENBQUMsQ0FBQyxDQUFDLElBQUksSUFDTixDQUNULENBQUM7QUFDTixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Qm94LCBUZXh0LCB1c2VJbnB1dH0gZnJvbSAnaW5rJztcbmltcG9ydCB0eXBlIHtSZWFjdE5vZGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7b2JzZXJ2ZXJ9IGZyb20gJ21vYngtcmVhY3QtbGl0ZSc7XG5pbXBvcnQge3J1bkluQWN0aW9ufSBmcm9tICdtb2J4JztcbmltcG9ydCB0eXBlIHtUU3RvcmV9IGZyb20gJy4uLy4uL3N0b3JlLm1qcyc7XG5pbXBvcnQge1NwaW5uZXJ9IGZyb20gJy4vU3Bpbm5lci5qcyc7XG5cbnR5cGUgVE91dHB1dEpzb25Qcm9wcyA9IHtcbiAgICBzdG9yZTogVFN0b3JlO1xufTtcblxuZXhwb3J0IGNvbnN0IE91dHB1dEpzb24gPSBvYnNlcnZlcigoe3N0b3JlfTogVE91dHB1dEpzb25Qcm9wcyk6IFJlYWN0Tm9kZSA9PiB7XG4gICAgY29uc3Qgb3V0cHV0SnNvbiA9IHN0b3JlLnN0ZXBzLm91dHB1dEpzb247XG5cbiAgICB1c2VJbnB1dChcbiAgICAgICAgKF9pbnB1dCwgX2tleSkgPT4ge1xuICAgICAgICAgICAgcnVuSW5BY3Rpb24oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHN0b3JlLnN0ZXBzLm91dHB1dEpzb24uY29uZmlybWVkID0gX2lucHV0LnRvTG93ZXJDYXNlKCkgPT09ICd5JztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICB7aXNBY3RpdmU6IG91dHB1dEpzb24uc3RhdGUgPT09ICdwcm9tcHRpbmctb3ZlcndyaXRlJ30sXG4gICAgKTtcblxuICAgIGlmIChvdXRwdXRKc29uLnN0YXRlID09PSAnaWRsZScpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPEJveD5cbiAgICAgICAgICAgIHtvdXRwdXRKc29uLnN0YXRlID09PSAnd3JpdGluZycgPyAoXG4gICAgICAgICAgICAgICAgPFNwaW5uZXIgLz5cbiAgICAgICAgICAgICkgOiBvdXRwdXRKc29uLnN0YXRlID09PSAnZG9uZScgPyAoXG4gICAgICAgICAgICAgICAgPFRleHQgY29sb3I9XCJncmVlblwiPuKXjzwvVGV4dD5cbiAgICAgICAgICAgICkgOiBvdXRwdXRKc29uLnN0YXRlID09PSAnZXJyb3InID8gKFxuICAgICAgICAgICAgICAgIDxUZXh0IGNvbG9yPVwicmVkXCI+4pePPC9UZXh0PlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8VGV4dCBjb2xvcj1cInllbGxvd1wiPuKXjzwvVGV4dD5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIDxUZXh0PiA8L1RleHQ+XG4gICAgICAgICAgICA8VGV4dCBib2xkPk91dHB1dDogPC9UZXh0PlxuXG4gICAgICAgICAgICB7b3V0cHV0SnNvbi5zdGF0ZSA9PT0gJ3Byb21wdGluZy1vdmVyd3JpdGUnID8gKFxuICAgICAgICAgICAgICAgIDxUZXh0PlxuICAgICAgICAgICAgICAgICAgICBGaWxlIDxUZXh0IGNvbG9yPVwiY3lhblwiPntvdXRwdXRKc29uLnBhdGh9PC9UZXh0PiBhbHJlYWR5XG4gICAgICAgICAgICAgICAgICAgIGV4aXN0cy4gT3ZlcndyaXRlPyBbeS9OXXsnICd9XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgKSA6IG91dHB1dEpzb24uc3RhdGUgPT09ICd3cml0aW5nJyA/IChcbiAgICAgICAgICAgICAgICA8VGV4dD53cml0aW5nIGludHJvc3BlY3Rpb24gSlNPTjwvVGV4dD5cbiAgICAgICAgICAgICkgOiBvdXRwdXRKc29uLnN0YXRlID09PSAnZG9uZScgPyAoXG4gICAgICAgICAgICAgICAgPFRleHQgY29sb3I9XCJncmVlblwiPlxuICAgICAgICAgICAgICAgICAgICB3cml0dGVuIHRvIDxUZXh0IGNvbG9yPVwiY3lhblwiPntvdXRwdXRKc29uLnBhdGh9PC9UZXh0PlxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICkgOiBvdXRwdXRKc29uLnN0YXRlID09PSAnZXJyb3InID8gKFxuICAgICAgICAgICAgICAgIDxUZXh0IGNvbG9yPVwicmVkXCI+RXJyb3I6IHtvdXRwdXRKc29uLmVycm9yfTwvVGV4dD5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICA8L0JveD5cbiAgICApO1xufSk7XG4iXX0=
@@ -0,0 +1,11 @@
1
+ import type { ReactNode } from 'react';
2
+ type TLinePrefixFn = (lineNumber: number, totalLines: number) => ReactNode;
3
+ type TTextInputProps = {
4
+ readonly isActive: boolean;
5
+ readonly onSubmit: (value: string) => void;
6
+ readonly placeholder?: string;
7
+ readonly linePrefix?: ReactNode | TLinePrefixFn;
8
+ };
9
+ export declare const TextInput: ({ isActive, onSubmit, placeholder, linePrefix, }: TTextInputProps) => ReactNode;
10
+ export {};
11
+ //# sourceMappingURL=TextInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextInput.d.ts","sourceRoot":"./src/","sources":["ui/components/TextInput.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AA2DrC,KAAK,aAAa,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,SAAS,CAAC;AAE3E,KAAK,eAAe,GAAG;IACnB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,GAAG,aAAa,CAAC;CACnD,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,kDAKvB,eAAe,KAAG,SAgVpB,CAAC"}
@@ -0,0 +1,286 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { Box, Text, useInput } from 'ink';
3
+ import { useState, useEffect, useRef } from 'react';
4
+ const CURSOR_INTERVAL = 500;
5
+ const MAX_UNDO = 100;
6
+ const UNDO_GROUP_DELAY = 2500;
7
+ const findLineStart = (value, cursor) => {
8
+ const idx = value.lastIndexOf('\n', cursor - 1);
9
+ return idx === -1 ? 0 : idx + 1;
10
+ };
11
+ const findLineEnd = (value, cursor) => {
12
+ const idx = value.indexOf('\n', cursor);
13
+ return idx === -1 ? value.length : idx;
14
+ };
15
+ const findPrevWordBoundary = (value, cursor) => {
16
+ const lineStart = findLineStart(value, cursor);
17
+ let pos = cursor - 1;
18
+ while (pos > lineStart && /\s/.test(value[pos]) && value[pos] !== '\n') {
19
+ pos -= 1;
20
+ }
21
+ while (pos > lineStart && !/\s/.test(value[pos - 1])) {
22
+ pos -= 1;
23
+ }
24
+ return Math.max(lineStart, pos);
25
+ };
26
+ const findNextWordBoundary = (value, cursor) => {
27
+ const lineEnd = findLineEnd(value, cursor);
28
+ let pos = cursor;
29
+ while (pos < lineEnd && !/\s/.test(value[pos])) {
30
+ pos += 1;
31
+ }
32
+ while (pos < lineEnd && /\s/.test(value[pos]) && value[pos] !== '\n') {
33
+ pos += 1;
34
+ }
35
+ return Math.min(lineEnd, pos);
36
+ };
37
+ const getCursorLineAndColumn = (value, cursor) => {
38
+ let line = 0;
39
+ let lastLineStart = 0;
40
+ for (let i = 0; i < cursor; i++) {
41
+ if (value[i] === '\n') {
42
+ line += 1;
43
+ lastLineStart = i + 1;
44
+ }
45
+ }
46
+ return { line, column: cursor - lastLineStart };
47
+ };
48
+ export const TextInput = ({ isActive, onSubmit, placeholder, linePrefix, }) => {
49
+ const [value, setValue] = useState('');
50
+ const [cursor, setCursor] = useState(0);
51
+ const [cursorVisible, setCursorVisible] = useState(true);
52
+ useEffect(() => {
53
+ if (!isActive) {
54
+ return;
55
+ }
56
+ const id = setInterval(() => {
57
+ setCursorVisible((prev) => !prev);
58
+ }, CURSOR_INTERVAL);
59
+ return () => {
60
+ clearInterval(id);
61
+ };
62
+ }, [isActive]);
63
+ const undoStack = useRef([]);
64
+ const lastMutationTime = useRef(0);
65
+ const lastMutationType = useRef(null);
66
+ const resetBlink = () => {
67
+ setCursorVisible(true);
68
+ };
69
+ const pushUndo = (type) => {
70
+ const now = Date.now();
71
+ const elapsed = now - lastMutationTime.current;
72
+ const sameType = type === lastMutationType.current;
73
+ lastMutationTime.current = now;
74
+ lastMutationType.current = type;
75
+ if (elapsed < UNDO_GROUP_DELAY && sameType) {
76
+ return;
77
+ }
78
+ const stack = undoStack.current;
79
+ if (stack.length >= MAX_UNDO) {
80
+ stack.shift();
81
+ }
82
+ stack.push({ value, cursor });
83
+ };
84
+ useInput((input, key) => {
85
+ // Ctrl+J — insert newline
86
+ if (key.ctrl && input === 'j') {
87
+ resetBlink();
88
+ pushUndo('insert');
89
+ setValue((v) => v.slice(0, cursor) + '\n' + v.slice(cursor));
90
+ setCursor((c) => c + 1);
91
+ return;
92
+ }
93
+ // Enter — submit
94
+ if (key.return) {
95
+ onSubmit(value);
96
+ return;
97
+ }
98
+ // Up arrow — move to same column on previous line
99
+ if (key.upArrow) {
100
+ resetBlink();
101
+ setCursor((c) => {
102
+ const { line, column } = getCursorLineAndColumn(value, c);
103
+ if (line === 0) {
104
+ return findLineStart(value, c);
105
+ }
106
+ const prevLineEnd = findLineStart(value, c) - 1;
107
+ const prevLineStart = findLineStart(value, prevLineEnd);
108
+ const prevLineLength = prevLineEnd - prevLineStart;
109
+ return prevLineStart + Math.min(column, prevLineLength);
110
+ });
111
+ return;
112
+ }
113
+ // Down arrow — move to next line, or create one if on last line
114
+ if (key.downArrow) {
115
+ resetBlink();
116
+ const currentLineEnd = findLineEnd(value, cursor);
117
+ if (currentLineEnd >= value.length) {
118
+ // On last line — insert a new line and move cursor there
119
+ pushUndo('insert');
120
+ setValue((v) => v + '\n');
121
+ setCursor(value.length + 1);
122
+ }
123
+ else {
124
+ setCursor((c) => {
125
+ const { column } = getCursorLineAndColumn(value, c);
126
+ const nextLineStart = currentLineEnd + 1;
127
+ const nextLineEnd = findLineEnd(value, nextLineStart);
128
+ const nextLineLength = nextLineEnd - nextLineStart;
129
+ return nextLineStart + Math.min(column, nextLineLength);
130
+ });
131
+ }
132
+ return;
133
+ }
134
+ // Left arrow
135
+ if (key.leftArrow) {
136
+ resetBlink();
137
+ setCursor((c) => Math.max(0, c - 1));
138
+ return;
139
+ }
140
+ // Right arrow
141
+ if (key.rightArrow) {
142
+ resetBlink();
143
+ setCursor((c) => Math.min(value.length, c + 1));
144
+ return;
145
+ }
146
+ // Opt+Left (meta+b) — word jump backward
147
+ if (key.meta && input === 'b') {
148
+ resetBlink();
149
+ setCursor((c) => findPrevWordBoundary(value, c));
150
+ return;
151
+ }
152
+ // Opt+Right (meta+f) — word jump forward
153
+ if (key.meta && input === 'f') {
154
+ resetBlink();
155
+ setCursor((c) => findNextWordBoundary(value, c));
156
+ return;
157
+ }
158
+ // Ctrl+A — start of current line
159
+ if (key.ctrl && input === 'a') {
160
+ resetBlink();
161
+ setCursor((c) => findLineStart(value, c));
162
+ return;
163
+ }
164
+ // Ctrl+E — end of current line
165
+ if (key.ctrl && input === 'e') {
166
+ resetBlink();
167
+ setCursor((c) => findLineEnd(value, c));
168
+ return;
169
+ }
170
+ // Ctrl+W — delete word before cursor
171
+ if (key.ctrl && input === 'w') {
172
+ resetBlink();
173
+ pushUndo('delete');
174
+ setCursor((c) => {
175
+ const boundary = findPrevWordBoundary(value, c);
176
+ setValue((v) => v.slice(0, boundary) + v.slice(c));
177
+ return boundary;
178
+ });
179
+ return;
180
+ }
181
+ // Ctrl+U — delete to start of current line
182
+ if (key.ctrl && input === 'u') {
183
+ resetBlink();
184
+ pushUndo('delete');
185
+ setCursor((c) => {
186
+ const lineStart = findLineStart(value, c);
187
+ setValue((v) => v.slice(0, lineStart) + v.slice(c));
188
+ return lineStart;
189
+ });
190
+ return;
191
+ }
192
+ // Ctrl+K — delete to end of current line
193
+ if (key.ctrl && input === 'k') {
194
+ resetBlink();
195
+ pushUndo('delete');
196
+ setCursor((c) => {
197
+ const lineEnd = findLineEnd(value, c);
198
+ setValue((v) => v.slice(0, c) + v.slice(lineEnd));
199
+ return c;
200
+ });
201
+ return;
202
+ }
203
+ // Backspace (with Opt+Backspace for word deletion)
204
+ if (key.backspace || key.delete) {
205
+ if (key.meta) {
206
+ // Opt+Delete — delete word before cursor
207
+ resetBlink();
208
+ pushUndo('delete');
209
+ const boundary = findPrevWordBoundary(value, cursor);
210
+ setValue((v) => v.slice(0, boundary) + v.slice(cursor));
211
+ setCursor(boundary);
212
+ return;
213
+ }
214
+ if (cursor > 0) {
215
+ resetBlink();
216
+ pushUndo('delete');
217
+ setValue((v) => v.slice(0, cursor - 1) + v.slice(cursor));
218
+ setCursor((c) => c - 1);
219
+ }
220
+ return;
221
+ }
222
+ // Ctrl+Z — undo
223
+ if (key.ctrl && input === 'z') {
224
+ resetBlink();
225
+ const entry = undoStack.current.pop();
226
+ if (entry) {
227
+ setValue(entry.value);
228
+ setCursor(entry.cursor);
229
+ }
230
+ lastMutationTime.current = 0;
231
+ lastMutationType.current = null;
232
+ return;
233
+ }
234
+ // Ignore other control/meta/escape/tab keys
235
+ if (key.ctrl || key.escape || key.tab) {
236
+ return;
237
+ }
238
+ // Regular character input
239
+ if (input && input.length > 0) {
240
+ resetBlink();
241
+ pushUndo('insert');
242
+ setValue((v) => v.slice(0, cursor) + input + v.slice(cursor));
243
+ setCursor((c) => c + input.length);
244
+ }
245
+ }, { isActive });
246
+ const renderLine = (content, key, lineNumber, totalLines) => {
247
+ const prefix = typeof linePrefix === 'function'
248
+ ? linePrefix(lineNumber, totalLines)
249
+ : linePrefix;
250
+ return prefix ? (_jsxs(Box, { children: [prefix, content] }, key)) : (_jsx(Box, { children: content }, key));
251
+ };
252
+ // Render placeholder when empty and not focused
253
+ if (value.length === 0 && !isActive && placeholder) {
254
+ return (_jsxs(Box, { flexDirection: "column", children: [renderLine(_jsx(Text, { dimColor: true, children: placeholder }), 0, 0, 2), renderLine(_jsx(Text, { children: " " }), 1, 1, 2)] }));
255
+ }
256
+ // Render placeholder with cursor when empty and focused
257
+ if (value.length === 0 && isActive) {
258
+ return (_jsxs(Box, { flexDirection: "column", children: [renderLine(_jsxs(Text, { children: [cursorVisible ? '\x1b[7m \x1b[27m' : ' ', placeholder ? (_jsx(Text, { dimColor: true, children: placeholder })) : null] }), 0, 0, 2), renderLine(_jsx(Text, { children: " " }), 1, 1, 2)] }));
259
+ }
260
+ // Multi-line rendering (minimum 2 visible lines)
261
+ const lines = value.split('\n');
262
+ const totalLines = Math.max(lines.length, 2);
263
+ const hasContent = value.replace(/\n/g, '').length > 0;
264
+ const { line: cursorLine, column: cursorColumn } = getCursorLineAndColumn(value, cursor);
265
+ const renderedLines = lines.map((lineText, lineIdx) => {
266
+ const isCursorLine = lineIdx === cursorLine;
267
+ if (!isCursorLine || !isActive) {
268
+ return renderLine(_jsxs(Text, { children: [lineText || ' ', lineIdx === 0 && !hasContent && placeholder ? (_jsx(Text, { dimColor: true, children: placeholder })) : null] }), lineIdx, lineIdx, totalLines);
269
+ }
270
+ const before = lineText.slice(0, cursorColumn);
271
+ const atCursor = lineText[cursorColumn] ?? ' ';
272
+ const after = lineText.slice(cursorColumn + 1);
273
+ return renderLine(_jsxs(Text, { children: [before, cursorVisible
274
+ ? `\x1b[7m${atCursor}\x1b[27m`
275
+ : atCursor === ' ' && cursorColumn >= lineText.length
276
+ ? ' '
277
+ : atCursor, after, lineIdx === 0 && !hasContent && placeholder ? (_jsx(Text, { dimColor: true, children: placeholder })) : null] }), lineIdx, lineIdx, totalLines);
278
+ });
279
+ // Pad to minimum 2 lines so the input visually signals multi-line
280
+ while (renderedLines.length < 2) {
281
+ const padIdx = renderedLines.length;
282
+ renderedLines.push(renderLine(_jsx(Text, { children: " " }), `pad-${padIdx}`, padIdx, totalLines));
283
+ }
284
+ return _jsx(Box, { flexDirection: "column", children: renderedLines });
285
+ };
286
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGV4dElucHV0LmpzIiwic291cmNlUm9vdCI6Ii4vc3JjLyIsInNvdXJjZXMiOlsidWkvY29tcG9uZW50cy9UZXh0SW5wdXQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUMsTUFBTSxLQUFLLENBQUM7QUFFeEMsT0FBTyxFQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sT0FBTyxDQUFDO0FBRWxELE1BQU0sZUFBZSxHQUFHLEdBQUcsQ0FBQztBQUM1QixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUM7QUFDckIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7QUFLOUIsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUFhLEVBQUUsTUFBYyxFQUFVLEVBQUU7SUFDNUQsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2hELE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDcEMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFhLEVBQUUsTUFBYyxFQUFVLEVBQUU7SUFDMUQsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDeEMsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUMzQyxDQUFDLENBQUM7QUFFRixNQUFNLG9CQUFvQixHQUFHLENBQUMsS0FBYSxFQUFFLE1BQWMsRUFBVSxFQUFFO0lBQ25FLE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDL0Ms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QUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDO1FBQ3BDLGFBQWEsQ0FBQyxJQUFJLENBQ2QsVUFBVSxDQUFDLEtBQUMsSUFBSSxvQkFBUyxFQUFFLE9BQU8sTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUNsRSxDQUFDO0lBQ04sQ0FBQztJQUVELE9BQU8sS0FBQyxHQUFHLElBQUMsYUFBYSxFQUFDLFFBQVEsWUFBRSxhQUFhLEdBQU8sQ0FBQztBQUM3RCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0JveCwgVGV4dCwgdXNlSW5wdXR9IGZyb20gJ2luayc7XG5pbXBvcnQgdHlwZSB7UmVhY3ROb2RlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge3VzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZVJlZn0gZnJvbSAncmVhY3QnO1xuXG5jb25zdCBDVVJTT1JfSU5URVJWQUwgPSA1MDA7XG5jb25zdCBNQVhfVU5ETyA9IDEwMDtcbmNvbnN0IFVORE9fR1JPVVBfREVMQVkgPSAyNTAwO1xuXG50eXBlIFRVbmRvRW50cnkgPSB7cmVhZG9ubHkgdmFsdWU6IHN0cmluZzsgcmVhZG9ubHkgY3Vyc29yOiBudW1iZXJ9O1xudHlwZSBUTXV0YXRpb25UeXBlID0gJ2luc2VydCcgfCAnZGVsZXRlJztcblxuY29uc3QgZmluZExpbmVTdGFydCA9ICh2YWx1ZTogc3RyaW5nLCBjdXJzb3I6IG51bWJlcik6IG51bWJlciA9PiB7XG4gICAgY29uc3QgaWR4ID0gdmFsdWUubGFzdEluZGV4T2YoJ1xcbicsIGN1cnNvciAtIDEpO1xuICAgIHJldHVybiBpZHggPT09IC0xID8gMCA6IGlkeCArIDE7XG59O1xuXG5jb25zdCBmaW5kTGluZUVuZCA9ICh2YWx1ZTogc3RyaW5nLCBjdXJzb3I6IG51bWJlcik6IG51bWJlciA9PiB7XG4gICAgY29uc3QgaWR4ID0gdmFsdWUuaW5kZXhPZignXFxuJywgY3Vyc29yKTtcbiAgICByZXR1cm4gaWR4ID09PSAtMSA/IHZhbHVlLmxlbmd0aCA6IGlkeDtcbn07XG5cbmNvbnN0IGZpbmRQcmV2V29yZEJvdW5kYXJ5ID0gKHZhbHVlOiBzdHJpbmcsIGN1cnNvcjogbnVtYmVyKTogbnVtYmVyID0+IHtcbiAgICBjb25zdCBsaW5lU3RhcnQgPSBmaW5kTGluZVN0YXJ0KHZhbHVlLCBjdXJzb3IpO1xuICAgIGxldCBwb3MgPSBjdXJzb3IgLSAxO1xuICAgIHdoaWxlIChwb3MgPiBsaW5lU3RhcnQgJiYgL1xccy8udGVzdCh2YWx1ZVtwb3NdISkgJiYgdmFsdWVbcG9zXSAhPT0gJ1xcbicpIHtcbiAgICAgICAgcG9zIC09IDE7XG4gICAgfVxuICAgIHdoaWxlIChwb3MgPiBsaW5lU3RhcnQgJiYgIS9cXHMvLnRlc3QodmFsdWVbcG9zIC0gMV0hKSkge1xuICAgICAgICBwb3MgLT0gMTtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgubWF4KGxpbmVTdGFydCwgcG9zKTtcbn07XG5cbmNvbnN0IGZpbmROZXh0V29yZEJvdW5kYXJ5ID0gKHZhbHVlOiBzdHJpbmcsIGN1cnNvcjogbnVtYmVyKTogbnVtYmVyID0+IHtcbiAgICBjb25zdCBsaW5lRW5kID0gZmluZExpbmVFbmQodmFsdWUsIGN1cnNvcik7XG4gICAgbGV0IHBvcyA9IGN1cnNvcjtcbiAgICB3aGlsZSAocG9zIDwgbGluZUVuZCAmJiAhL1xccy8udGVzdCh2YWx1ZVtwb3NdISkpIHtcbiAgICAgICAgcG9zICs9IDE7XG4gICAgfVxuICAgIHdoaWxlIChwb3MgPCBsaW5lRW5kICYmIC9cXHMvLnRlc3QodmFsdWVbcG9zXSEpICYmIHZhbHVlW3Bvc10gIT09ICdcXG4nKSB7XG4gICAgICAgIHBvcyArPSAxO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5taW4obGluZUVuZCwgcG9zKTtcbn07XG5cbmNvbnN0IGdldEN1cnNvckxpbmVBbmRDb2x1bW4gPSAoXG4gICAgdmFsdWU6IHN0cmluZyxcbiAgICBjdXJzb3I6IG51bWJlcixcbik6IHtsaW5lOiBudW1iZXI7IGNvbHVtbjogbnVtYmVyfSA9PiB7XG4gICAgbGV0IGxpbmUgPSAwO1xuICAgIGxldCBsYXN0TGluZVN0YXJ0ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGN1cnNvcjsgaSsrKSB7XG4gICAgICAgIGlmICh2YWx1ZVtpXSA9PT0gJ1xcbicpIHtcbiAgICAgICAgICAgIGxpbmUgKz0gMTtcbiAgICAgICAgICAgIGxhc3RMaW5lU3RhcnQgPSBpICsgMTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge2xpbmUsIGNvbHVtbjogY3Vyc29yIC0gbGFzdExpbmVTdGFydH07XG59O1xuXG50eXBlIFRMaW5lUHJlZml4Rm4gPSAobGluZU51bWJlcjogbnVtYmVyLCB0b3RhbExpbmVzOiBudW1iZXIpID0+IFJlYWN0Tm9kZTtcblxudHlwZSBUVGV4dElucHV0UHJvcHMgPSB7XG4gICAgcmVhZG9ubHkgaXNBY3RpdmU6IGJvb2xlYW47XG4gICAgcmVhZG9ubHkgb25TdWJtaXQ6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xuICAgIHJlYWRvbmx5IHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGxpbmVQcmVmaXg/OiBSZWFjdE5vZGUgfCBUTGluZVByZWZpeEZuO1xufTtcblxuZXhwb3J0IGNvbnN0IFRleHRJbnB1dCA9ICh7XG4gICAgaXNBY3RpdmUsXG4gICAgb25TdWJtaXQsXG4gICAgcGxhY2Vob2xkZXIsXG4gICAgbGluZVByZWZpeCxcbn06IFRUZXh0SW5wdXRQcm9wcyk6IFJlYWN0Tm9kZSA9PiB7XG4gICAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZSgnJyk7XG4gICAgY29uc3QgW2N1cnNvciwgc2V0Q3Vyc29yXSA9IHVzZVN0YXRlKDApO1xuICAgIGNvbnN0IFtjdXJzb3JWaXNpYmxlLCBzZXRDdXJzb3JWaXNpYmxlXSA9IHVzZVN0YXRlKHRydWUpO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCFpc0FjdGl2ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICBzZXRDdXJzb3JWaXNpYmxlKChwcmV2KSA9PiAhcHJldik7XG4gICAgICAgIH0sIENVUlNPUl9JTlRFUlZBTCk7XG5cbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaWQpO1xuICAgICAgICB9O1xuICAgIH0sIFtpc0FjdGl2ZV0pO1xuXG4gICAgY29uc3QgdW5kb1N0YWNrID0gdXNlUmVmPFRVbmRvRW50cnlbXT4oW10pO1xuICAgIGNvbnN0IGxhc3RNdXRhdGlvblRpbWUgPSB1c2VSZWYoMCk7XG4gICAgY29uc3QgbGFzdE11dGF0aW9uVHlwZSA9IHVzZVJlZjxUTXV0YXRpb25UeXBlIHwgbnVsbD4obnVsbCk7XG5cbiAgICBjb25zdCByZXNldEJsaW5rID0gKCkgPT4ge1xuICAgICAgICBzZXRDdXJzb3JWaXNpYmxlKHRydWUpO1xuICAgIH07XG5cbiAgICBjb25zdCBwdXNoVW5kbyA9ICh0eXBlOiBUTXV0YXRpb25UeXBlKSA9PiB7XG4gICAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgICAgIGNvbnN0IGVsYXBzZWQgPSBub3cgLSBsYXN0TXV0YXRpb25UaW1lLmN1cnJlbnQ7XG4gICAgICAgIGNvbnN0IHNhbWVUeXBlID0gdHlwZSA9PT0gbGFzdE11dGF0aW9uVHlwZS5jdXJyZW50O1xuXG4gICAgICAgIGxhc3RNdXRhdGlvblRpbWUuY3VycmVudCA9IG5vdztcbiAgICAgICAgbGFzdE11dGF0aW9uVHlwZS5jdXJyZW50ID0gdHlwZTtcblxuICAgICAgICBpZiAoZWxhcHNlZCA8IFVORE9fR1JPVVBfREVMQVkgJiYgc2FtZVR5cGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHN0YWNrID0gdW5kb1N0YWNrLmN1cnJlbnQ7XG4gICAgICAgIGlmIChzdGFjay5sZW5ndGggPj0gTUFYX1VORE8pIHtcbiAgICAgICAgICAgIHN0YWNrLnNoaWZ0KCk7XG4gICAgICAgIH1cbiAgICAgICAgc3RhY2sucHVzaCh7dmFsdWUsIGN1cnNvcn0pO1xuICAgIH07XG5cbiAgICB1c2VJbnB1dChcbiAgICAgICAgKGlucHV0LCBrZXkpID0+IHtcbiAgICAgICAgICAgIC8vIEN0cmwrSiDigJQgaW5zZXJ0IG5ld2xpbmVcbiAgICAgICAgICAgIGlmIChrZXkuY3RybCAmJiBpbnB1dCA9PT0gJ2onKSB7XG4gICAgICAgICAgICAgICAgcmVzZXRCbGluaygpO1xuICAgICAgICAgICAgICAgIHB1c2hVbmRvKCdpbnNlcnQnKTtcbiAgICAgICAgICAgICAgICBzZXRWYWx1ZSgodikgPT4gdi5zbGljZSgwLCBjdXJzb3IpICsgJ1xcbicgKyB2LnNsaWNlKGN1cnNvcikpO1xuICAgICAgICAgICAgICAgIHNldEN1cnNvcigoYykgPT4gYyArIDEpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gRW50ZXIg4oCUIHN1Ym1pdFxuICAgICAgICAgICAgaWYgKGtleS5yZXR1cm4pIHtcbiAgICAgICAgICAgICAgICBvblN1Ym1pdCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBVcCBhcnJvdyDigJQgbW92ZSB0byBzYW1lIGNvbHVtbiBvbiBwcmV2aW91cyBsaW5lXG4gICAgICAgICAgICBpZiAoa2V5LnVwQXJyb3cpIHtcbiAgICAgICAgICAgICAgICByZXNldEJsaW5rKCk7XG4gICAgICAgICAgICAgICAgc2V0Q3Vyc29yKChjKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHtsaW5lLCBjb2x1bW59ID0gZ2V0Q3Vyc29yTGluZUFuZENvbHVtbih2YWx1ZSwgYyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsaW5lID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmluZExpbmVTdGFydCh2YWx1ZSwgYyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldkxpbmVFbmQgPSBmaW5kTGluZVN0YXJ0KHZhbHVlLCBjKSAtIDE7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZMaW5lU3RhcnQgPSBmaW5kTGluZVN0YXJ0KHZhbHVlLCBwcmV2TGluZUVuZCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZMaW5lTGVuZ3RoID0gcHJldkxpbmVFbmQgLSBwcmV2TGluZVN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJldkxpbmVTdGFydCArIE1hdGgubWluKGNvbHVtbiwgcHJldkxpbmVMZW5ndGgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gRG93biBhcnJvdyDigJQgbW92ZSB0byBuZXh0IGxpbmUsIG9yIGNyZWF0ZSBvbmUgaWYgb24gbGFzdCBsaW5lXG4gICAgICAgICAgICBpZiAoa2V5LmRvd25BcnJvdykge1xuICAgICAgICAgICAgICAgIHJlc2V0QmxpbmsoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50TGluZUVuZCA9IGZpbmRMaW5lRW5kKHZhbHVlLCBjdXJzb3IpO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50TGluZUVuZCA+PSB2YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gT24gbGFzdCBsaW5lIOKAlCBpbnNlcnQgYSBuZXcgbGluZSBhbmQgbW92ZSBjdXJzb3IgdGhlcmVcbiAgICAgICAgICAgICAgICAgICAgcHVzaFVuZG8oJ2luc2VydCcpO1xuICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZSgodikgPT4gdiArICdcXG4nKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0Q3Vyc29yKHZhbHVlLmxlbmd0aCArIDEpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNldEN1cnNvcigoYykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qge2NvbHVtbn0gPSBnZXRDdXJzb3JMaW5lQW5kQ29sdW1uKHZhbHVlLCBjKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRMaW5lU3RhcnQgPSBjdXJyZW50TGluZUVuZCArIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0TGluZUVuZCA9IGZpbmRMaW5lRW5kKHZhbHVlLCBuZXh0TGluZVN0YXJ0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRMaW5lTGVuZ3RoID0gbmV4dExpbmVFbmQgLSBuZXh0TGluZVN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5leHRMaW5lU3RhcnQgKyBNYXRoLm1pbihjb2x1bW4sIG5leHRMaW5lTGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gTGVmdCBhcnJvd1xuICAgICAgICAgICAgaWYgKGtleS5sZWZ0QXJyb3cpIHtcbiAgICAgICAgICAgICAgICByZXNldEJsaW5rKCk7XG4gICAgICAgICAgICAgICAgc2V0Q3Vyc29yKChjKSA9PiBNYXRoLm1heCgwLCBjIC0gMSkpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gUmlnaHQgYXJyb3dcbiAgICAgICAgICAgIGlmIChrZXkucmlnaHRBcnJvdykge1xuICAgICAgICAgICAgICAgIHJlc2V0QmxpbmsoKTtcbiAgICAgICAgICAgICAgICBzZXRDdXJzb3IoKGMpID0+IE1hdGgubWluKHZhbHVlLmxlbmd0aCwgYyArIDEpKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIE9wdCtMZWZ0IChtZXRhK2IpIOKAlCB3b3JkIGp1bXAgYmFja3dhcmRcbiAgICAgICAgICAgIGlmIChrZXkubWV0YSAmJiBpbnB1dCA9PT0gJ2InKSB7XG4gICAgICAgICAgICAgICAgcmVzZXRCbGluaygpO1xuICAgICAgICAgICAgICAgIHNldEN1cnNvcigoYykgPT4gZmluZFByZXZXb3JkQm91bmRhcnkodmFsdWUsIGMpKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIE9wdCtSaWdodCAobWV0YStmKSDigJQgd29yZCBqdW1wIGZvcndhcmRcbiAgICAgICAgICAgIGlmIChrZXkubWV0YSAmJiBpbnB1dCA9PT0gJ2YnKSB7XG4gICAgICAgICAgICAgICAgcmVzZXRCbGluaygpO1xuICAgICAgICAgICAgICAgIHNldEN1cnNvcigoYykgPT4gZmluZE5leHRXb3JkQm91bmRhcnkodmFsdWUsIGMpKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEN0cmwrQSDigJQgc3RhcnQgb2YgY3VycmVudCBsaW5lXG4gICAgICAgICAgICBpZiAoa2V5LmN0cmwgJiYgaW5wdXQgPT09ICdhJykge1xuICAgICAgICAgICAgICAgIHJlc2V0QmxpbmsoKTtcbiAgICAgICAgICAgICAgICBzZXRDdXJzb3IoKGMpID0+IGZpbmRMaW5lU3RhcnQodmFsdWUsIGMpKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEN0cmwrRSDigJQgZW5kIG9mIGN1cnJlbnQgbGluZVxuICAgICAgICAgICAgaWYgKGtleS5jdHJsICYmIGlucHV0ID09PSAnZScpIHtcbiAgICAgICAgICAgICAgICByZXNldEJsaW5rKCk7XG4gICAgICAgICAgICAgICAgc2V0Q3Vyc29yKChjKSA9PiBmaW5kTGluZUVuZCh2YWx1ZSwgYykpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQ3RybCtXIOKAlCBkZWxldGUgd29yZCBiZWZvcmUgY3Vyc29yXG4gICAgICAgICAgICBpZiAoa2V5LmN0cmwgJiYgaW5wdXQgPT09ICd3Jykge1xuICAgICAgICAgICAgICAgIHJlc2V0QmxpbmsoKTtcbiAgICAgICAgICAgICAgICBwdXNoVW5kbygnZGVsZXRlJyk7XG4gICAgICAgICAgICAgICAgc2V0Q3Vyc29yKChjKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvdW5kYXJ5ID0gZmluZFByZXZXb3JkQm91bmRhcnkodmFsdWUsIGMpO1xuICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZSgodikgPT4gdi5zbGljZSgwLCBib3VuZGFyeSkgKyB2LnNsaWNlKGMpKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJvdW5kYXJ5O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQ3RybCtVIOKAlCBkZWxldGUgdG8gc3RhcnQgb2YgY3VycmVudCBsaW5lXG4gICAgICAgICAgICBpZiAoa2V5LmN0cmwgJiYgaW5wdXQgPT09ICd1Jykge1xuICAgICAgICAgICAgICAgIHJlc2V0QmxpbmsoKTtcbiAgICAgICAgICAgICAgICBwdXNoVW5kbygnZGVsZXRlJyk7XG4gICAgICAgICAgICAgICAgc2V0Q3Vyc29yKChjKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpbmVTdGFydCA9IGZpbmRMaW5lU3RhcnQodmFsdWUsIGMpO1xuICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZSgodikgPT4gdi5zbGljZSgwLCBsaW5lU3RhcnQpICsgdi5zbGljZShjKSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBsaW5lU3RhcnQ7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBDdHJsK0sg4oCUIGRlbGV0ZSB0byBlbmQgb2YgY3VycmVudCBsaW5lXG4gICAgICAgICAgICBpZiAoa2V5LmN0cmwgJiYgaW5wdXQgPT09ICdrJykge1xuICAgICAgICAgICAgICAgIHJlc2V0QmxpbmsoKTtcbiAgICAgICAgICAgICAgICBwdXNoVW5kbygnZGVsZXRlJyk7XG4gICAgICAgICAgICAgICAgc2V0Q3Vyc29yKChjKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpbmVFbmQgPSBmaW5kTGluZUVuZCh2YWx1ZSwgYyk7XG4gICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKCh2KSA9PiB2LnNsaWNlKDAsIGMpICsgdi5zbGljZShsaW5lRW5kKSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQmFja3NwYWNlICh3aXRoIE9wdCtCYWNrc3BhY2UgZm9yIHdvcmQgZGVsZXRpb24pXG4gICAgICAgICAgICBpZiAoa2V5LmJhY2tzcGFjZSB8fCBrZXkuZGVsZXRlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGtleS5tZXRhKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIE9wdCtEZWxldGUg4oCUIGRlbGV0ZSB3b3JkIGJlZm9yZSBjdXJzb3JcbiAgICAgICAgICAgICAgICAgICAgcmVzZXRCbGluaygpO1xuICAgICAgICAgICAgICAgICAgICBwdXNoVW5kbygnZGVsZXRlJyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvdW5kYXJ5ID0gZmluZFByZXZXb3JkQm91bmRhcnkodmFsdWUsIGN1cnNvcik7XG4gICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKCh2KSA9PiB2LnNsaWNlKDAsIGJvdW5kYXJ5KSArIHYuc2xpY2UoY3Vyc29yKSk7XG4gICAgICAgICAgICAgICAgICAgIHNldEN1cnNvcihib3VuZGFyeSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGN1cnNvciA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzZXRCbGluaygpO1xuICAgICAgICAgICAgICAgICAgICBwdXNoVW5kbygnZGVsZXRlJyk7XG4gICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKCh2KSA9PiB2LnNsaWNlKDAsIGN1cnNvciAtIDEpICsgdi5zbGljZShjdXJzb3IpKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0Q3Vyc29yKChjKSA9PiBjIC0gMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQ3RybCtaIOKAlCB1bmRvXG4gICAgICAgICAgICBpZiAoa2V5LmN0cmwgJiYgaW5wdXQgPT09ICd6Jykge1xuICAgICAgICAgICAgICAgIHJlc2V0QmxpbmsoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBlbnRyeSA9IHVuZG9TdGFjay5jdXJyZW50LnBvcCgpO1xuICAgICAgICAgICAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZShlbnRyeS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHNldEN1cnNvcihlbnRyeS5jdXJzb3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsYXN0TXV0YXRpb25UaW1lLmN1cnJlbnQgPSAwO1xuICAgICAgICAgICAgICAgIGxhc3RNdXRhdGlvblR5cGUuY3VycmVudCA9IG51bGw7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBJZ25vcmUgb3RoZXIgY29udHJvbC9tZXRhL2VzY2FwZS90YWIga2V5c1xuICAgICAgICAgICAgaWYgKGtleS5jdHJsIHx8IGtleS5lc2NhcGUgfHwga2V5LnRhYikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gUmVndWxhciBjaGFyYWN0ZXIgaW5wdXRcbiAgICAgICAgICAgIGlmIChpbnB1dCAmJiBpbnB1dC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmVzZXRCbGluaygpO1xuICAgICAgICAgICAgICAgIHB1c2hVbmRvKCdpbnNlcnQnKTtcbiAgICAgICAgICAgICAgICBzZXRWYWx1ZSgodikgPT4gdi5zbGljZSgwLCBjdXJzb3IpICsgaW5wdXQgKyB2LnNsaWNlKGN1cnNvcikpO1xuICAgICAgICAgICAgICAgIHNldEN1cnNvcigoYykgPT4gYyArIGlucHV0Lmxlbmd0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtpc0FjdGl2ZX0sXG4gICAgKTtcblxuICAgIGNvbnN0IHJlbmRlckxpbmUgPSAoXG4gICAgICAgIGNvbnRlbnQ6IFJlYWN0Tm9kZSxcbiAgICAgICAga2V5OiBzdHJpbmcgfCBudW1iZXIsXG4gICAgICAgIGxpbmVOdW1iZXI6IG51bWJlcixcbiAgICAgICAgdG90YWxMaW5lczogbnVtYmVyLFxuICAgICk6IFJlYWN0Tm9kZSA9PiB7XG4gICAgICAgIGNvbnN0IHByZWZpeCA9XG4gICAgICAgICAgICB0eXBlb2YgbGluZVByZWZpeCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgICAgID8gbGluZVByZWZpeChsaW5lTnVtYmVyLCB0b3RhbExpbmVzKVxuICAgICAgICAgICAgICAgIDogbGluZVByZWZpeDtcblxuICAgICAgICByZXR1cm4gcHJlZml4ID8gKFxuICAgICAgICAgICAgPEJveCBrZXk9e2tleX0+XG4gICAgICAgICAgICAgICAge3ByZWZpeH1cbiAgICAgICAgICAgICAgICB7Y29udGVudH1cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICApIDogKFxuICAgICAgICAgICAgPEJveCBrZXk9e2tleX0+e2NvbnRlbnR9PC9Cb3g+XG4gICAgICAgICk7XG4gICAgfTtcblxuICAgIC8vIFJlbmRlciBwbGFjZWhvbGRlciB3aGVuIGVtcHR5IGFuZCBub3QgZm9jdXNlZFxuICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDAgJiYgIWlzQWN0aXZlICYmIHBsYWNlaG9sZGVyKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8Qm94IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIj5cbiAgICAgICAgICAgICAgICB7cmVuZGVyTGluZSg8VGV4dCBkaW1Db2xvcj57cGxhY2Vob2xkZXJ9PC9UZXh0PiwgMCwgMCwgMil9XG4gICAgICAgICAgICAgICAge3JlbmRlckxpbmUoPFRleHQ+IDwvVGV4dD4sIDEsIDEsIDIpfVxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gUmVuZGVyIHBsYWNlaG9sZGVyIHdpdGggY3Vyc29yIHdoZW4gZW1wdHkgYW5kIGZvY3VzZWRcbiAgICBpZiAodmFsdWUubGVuZ3RoID09PSAwICYmIGlzQWN0aXZlKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8Qm94IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIj5cbiAgICAgICAgICAgICAgICB7cmVuZGVyTGluZShcbiAgICAgICAgICAgICAgICAgICAgPFRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Y3Vyc29yVmlzaWJsZSA/ICdcXHgxYls3bSBcXHgxYlsyN20nIDogJyAnfVxuICAgICAgICAgICAgICAgICAgICAgICAge3BsYWNlaG9sZGVyID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUZXh0IGRpbUNvbG9yPntwbGFjZWhvbGRlcn08L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgPC9UZXh0PixcbiAgICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgICAgMixcbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIHtyZW5kZXJMaW5lKDxUZXh0PiA8L1RleHQ+LCAxLCAxLCAyKX1cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8vIE11bHRpLWxpbmUgcmVuZGVyaW5nIChtaW5pbXVtIDIgdmlzaWJsZSBsaW5lcylcbiAgICBjb25zdCBsaW5lcyA9IHZhbHVlLnNwbGl0KCdcXG4nKTtcbiAgICBjb25zdCB0b3RhbExpbmVzID0gTWF0aC5tYXgobGluZXMubGVuZ3RoLCAyKTtcbiAgICBjb25zdCBoYXNDb250ZW50ID0gdmFsdWUucmVwbGFjZSgvXFxuL2csICcnKS5sZW5ndGggPiAwO1xuICAgIGNvbnN0IHtsaW5lOiBjdXJzb3JMaW5lLCBjb2x1bW46IGN1cnNvckNvbHVtbn0gPSBnZXRDdXJzb3JMaW5lQW5kQ29sdW1uKFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgY3Vyc29yLFxuICAgICk7XG5cbiAgICBjb25zdCByZW5kZXJlZExpbmVzID0gbGluZXMubWFwKChsaW5lVGV4dCwgbGluZUlkeCkgPT4ge1xuICAgICAgICBjb25zdCBpc0N1cnNvckxpbmUgPSBsaW5lSWR4ID09PSBjdXJzb3JMaW5lO1xuXG4gICAgICAgIGlmICghaXNDdXJzb3JMaW5lIHx8ICFpc0FjdGl2ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlbmRlckxpbmUoXG4gICAgICAgICAgICAgICAgPFRleHQ+XG4gICAgICAgICAgICAgICAgICAgIHtsaW5lVGV4dCB8fCAnICd9XG4gICAgICAgICAgICAgICAgICAgIHtsaW5lSWR4ID09PSAwICYmICFoYXNDb250ZW50ICYmIHBsYWNlaG9sZGVyID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFRleHQgZGltQ29sb3I+e3BsYWNlaG9sZGVyfTwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgPC9UZXh0PixcbiAgICAgICAgICAgICAgICBsaW5lSWR4LFxuICAgICAgICAgICAgICAgIGxpbmVJZHgsXG4gICAgICAgICAgICAgICAgdG90YWxMaW5lcyxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBiZWZvcmUgPSBsaW5lVGV4dC5zbGljZSgwLCBjdXJzb3JDb2x1bW4pO1xuICAgICAgICBjb25zdCBhdEN1cnNvciA9IGxpbmVUZXh0W2N1cnNvckNvbHVtbl0gPz8gJyAnO1xuICAgICAgICBjb25zdCBhZnRlciA9IGxpbmVUZXh0LnNsaWNlKGN1cnNvckNvbHVtbiArIDEpO1xuXG4gICAgICAgIHJldHVybiByZW5kZXJMaW5lKFxuICAgICAgICAgICAgPFRleHQ+XG4gICAgICAgICAgICAgICAge2JlZm9yZX1cbiAgICAgICAgICAgICAgICB7Y3Vyc29yVmlzaWJsZVxuICAgICAgICAgICAgICAgICAgICA/IGBcXHgxYls3bSR7YXRDdXJzb3J9XFx4MWJbMjdtYFxuICAgICAgICAgICAgICAgICAgICA6IGF0Q3Vyc29yID09PSAnICcgJiYgY3Vyc29yQ29sdW1uID49IGxpbmVUZXh0Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgID8gJyAnXG4gICAgICAgICAgICAgICAgICAgICAgOiBhdEN1cnNvcn1cbiAgICAgICAgICAgICAgICB7YWZ0ZXJ9XG4gICAgICAgICAgICAgICAge2xpbmVJZHggPT09IDAgJiYgIWhhc0NvbnRlbnQgJiYgcGxhY2Vob2xkZXIgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxUZXh0IGRpbUNvbG9yPntwbGFjZWhvbGRlcn08L1RleHQ+XG4gICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8L1RleHQ+LFxuICAgICAgICAgICAgbGluZUlkeCxcbiAgICAgICAgICAgIGxpbmVJZHgsXG4gICAgICAgICAgICB0b3RhbExpbmVzLFxuICAgICAgICApO1xuICAgIH0pO1xuXG4gICAgLy8gUGFkIHRvIG1pbmltdW0gMiBsaW5lcyBzbyB0aGUgaW5wdXQgdmlzdWFsbHkgc2lnbmFscyBtdWx0aS1saW5lXG4gICAgd2hpbGUgKHJlbmRlcmVkTGluZXMubGVuZ3RoIDwgMikge1xuICAgICAgICBjb25zdCBwYWRJZHggPSByZW5kZXJlZExpbmVzLmxlbmd0aDtcbiAgICAgICAgcmVuZGVyZWRMaW5lcy5wdXNoKFxuICAgICAgICAgICAgcmVuZGVyTGluZSg8VGV4dD4gPC9UZXh0PiwgYHBhZC0ke3BhZElkeH1gLCBwYWRJZHgsIHRvdGFsTGluZXMpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiA8Qm94IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIj57cmVuZGVyZWRMaW5lc308L0JveD47XG59O1xuIl19
@@ -0,0 +1,10 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { TStore } from '../../store.mjs';
3
+ type TUserExplanationProps = {
4
+ readonly store: TStore;
5
+ };
6
+ export declare const UserExplanation: (({ store }: TUserExplanationProps) => ReactNode) & {
7
+ displayName: string;
8
+ };
9
+ export {};
10
+ //# sourceMappingURL=UserExplanation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserExplanation.d.ts","sourceRoot":"./src/","sources":["ui/components/UserExplanation.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAGrC,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAG5C,KAAK,qBAAqB,GAAG;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CAC1B,CAAC;AASF,eAAO,MAAM,eAAe,eACd,qBAAqB,KAAG,SAAS;;CAuE9C,CAAC"}