@mak-98/dirvi-app 0.0.0-stage → 0.11.0-beta.13

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 (108) hide show
  1. package/LICENSE +674 -0
  2. package/dist/application/app-api-applicator.d.ts +12 -0
  3. package/dist/application/app-api-applicator.d.ts.map +1 -0
  4. package/dist/application/app-api-applicator.js +1 -0
  5. package/dist/application/app-pack-ref.d.ts +12 -0
  6. package/dist/application/app-pack-ref.d.ts.map +1 -0
  7. package/dist/application/app-pack-ref.js +37 -0
  8. package/dist/application/create-app-api.d.ts +11 -0
  9. package/dist/application/create-app-api.d.ts.map +1 -0
  10. package/dist/application/create-app-api.js +60 -0
  11. package/dist/application/create-app-methods.d.ts +11 -0
  12. package/dist/application/create-app-methods.d.ts.map +1 -0
  13. package/dist/application/create-app-methods.js +60 -0
  14. package/dist/application/create-dirvi-api.d.ts +10 -0
  15. package/dist/application/create-dirvi-api.d.ts.map +1 -0
  16. package/dist/application/create-dirvi-api.js +23 -0
  17. package/dist/application/init-runtime.d.ts +40 -0
  18. package/dist/application/init-runtime.d.ts.map +1 -0
  19. package/dist/application/init-runtime.error.d.ts +53 -0
  20. package/dist/application/init-runtime.error.d.ts.map +1 -0
  21. package/dist/application/init-runtime.error.js +77 -0
  22. package/dist/application/init-runtime.js +165 -0
  23. package/dist/application/package-loader.d.ts +9 -0
  24. package/dist/application/package-loader.d.ts.map +1 -0
  25. package/dist/application/package-loader.js +1 -0
  26. package/dist/application/shell-api.d.ts +5 -0
  27. package/dist/application/shell-api.d.ts.map +1 -0
  28. package/dist/application/shell-api.js +1 -0
  29. package/dist/domain/app-input.d.ts +2 -0
  30. package/dist/domain/app-input.d.ts.map +1 -0
  31. package/dist/domain/app-input.js +1 -0
  32. package/dist/domain/app-pack-ref.d.ts +17 -0
  33. package/dist/domain/app-pack-ref.d.ts.map +1 -0
  34. package/dist/domain/app-pack-ref.js +37 -0
  35. package/dist/domain/app.d.ts +39 -0
  36. package/dist/domain/app.d.ts.map +1 -0
  37. package/dist/domain/app.js +25 -0
  38. package/dist/domain/config.d.ts +386 -0
  39. package/dist/domain/config.d.ts.map +1 -0
  40. package/dist/domain/config.js +44 -0
  41. package/dist/domain/dirvi-api/app-api.d.ts +7 -0
  42. package/dist/domain/dirvi-api/app-api.d.ts.map +1 -0
  43. package/dist/domain/dirvi-api/app-api.js +1 -0
  44. package/dist/domain/dirvi-api/dirvi-api.d.ts +17 -0
  45. package/dist/domain/dirvi-api/dirvi-api.d.ts.map +1 -0
  46. package/dist/domain/dirvi-api/dirvi-api.js +1 -0
  47. package/dist/domain/dirvi-api/shell-api.d.ts +35 -0
  48. package/dist/domain/dirvi-api/shell-api.d.ts.map +1 -0
  49. package/dist/domain/dirvi-api/shell-api.js +1 -0
  50. package/dist/domain/dirvi-api.d.ts +24 -0
  51. package/dist/domain/dirvi-api.d.ts.map +1 -0
  52. package/dist/domain/dirvi-api.js +1 -0
  53. package/dist/domain/ex-command.d.ts +9 -0
  54. package/dist/domain/ex-command.d.ts.map +1 -0
  55. package/dist/domain/ex-command.js +1 -0
  56. package/dist/domain/init-runtime.d.ts +41 -0
  57. package/dist/domain/init-runtime.d.ts.map +1 -0
  58. package/dist/domain/init-runtime.js +1 -0
  59. package/dist/domain/initialization.d.ts +26 -0
  60. package/dist/domain/initialization.d.ts.map +1 -0
  61. package/dist/domain/initialization.js +1 -0
  62. package/dist/domain/node-presentation.d.ts +12 -0
  63. package/dist/domain/node-presentation.d.ts.map +1 -0
  64. package/dist/domain/node-presentation.js +1 -0
  65. package/dist/domain/public-init-api.d.ts +48 -0
  66. package/dist/domain/public-init-api.d.ts.map +1 -0
  67. package/dist/domain/public-init-api.js +1 -0
  68. package/dist/domain/shell-api.d.ts +9 -0
  69. package/dist/domain/shell-api.d.ts.map +1 -0
  70. package/dist/domain/shell-api.js +1 -0
  71. package/dist/domain/theme.d.ts +524 -0
  72. package/dist/domain/theme.d.ts.map +1 -0
  73. package/dist/domain/theme.js +164 -0
  74. package/dist/domain/view-name-schema.d.ts +18 -0
  75. package/dist/domain/view-name-schema.d.ts.map +1 -0
  76. package/dist/domain/view-name-schema.js +68 -0
  77. package/dist/index.d.ts +14 -0
  78. package/dist/index.d.ts.map +1 -0
  79. package/dist/index.js +6 -0
  80. package/dist/theme.d.ts +536 -0
  81. package/dist/theme.d.ts.map +1 -0
  82. package/dist/theme.js +170 -0
  83. package/dist/ui/App.d.ts +21 -0
  84. package/dist/ui/App.d.ts.map +1 -0
  85. package/dist/ui/App.js +248 -0
  86. package/dist/ui/AppSetup.d.ts +18 -0
  87. package/dist/ui/AppSetup.d.ts.map +1 -0
  88. package/dist/ui/AppSetup.js +60 -0
  89. package/dist/ui/Shell.d.ts +44 -0
  90. package/dist/ui/Shell.d.ts.map +1 -0
  91. package/dist/ui/Shell.js +73 -0
  92. package/dist/ui/app-screen-renderer.d.ts +27 -0
  93. package/dist/ui/app-screen-renderer.d.ts.map +1 -0
  94. package/dist/ui/app-screen-renderer.js +1 -0
  95. package/dist/ui/color-resolver.d.ts +3 -0
  96. package/dist/ui/color-resolver.d.ts.map +1 -0
  97. package/dist/ui/color-resolver.js +61 -0
  98. package/dist/ui/hooks/useView.d.ts +5 -0
  99. package/dist/ui/hooks/useView.d.ts.map +1 -0
  100. package/dist/ui/hooks/useView.js +32 -0
  101. package/dist/ui/loading-screen-renderer.d.ts +3 -0
  102. package/dist/ui/loading-screen-renderer.d.ts.map +1 -0
  103. package/dist/ui/loading-screen-renderer.js +1 -0
  104. package/dist/ui/view.d.ts +28 -0
  105. package/dist/ui/view.d.ts.map +1 -0
  106. package/dist/ui/view.js +131 -0
  107. package/package.json +34 -3
  108. package/README.md +0 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-input.d.ts","sourceRoot":"","sources":["../../src/domain/app-input.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,17 @@
1
+ export type NpmAppReference = {
2
+ readonly source: 'npm';
3
+ readonly packageName: string;
4
+ readonly version: string;
5
+ };
6
+ export type AppPackageReference = NpmAppReference;
7
+ /**
8
+ * Parses and validates an app package reference supplied by init.mjs.
9
+ *
10
+ * init.mjs is runtime JavaScript, so TypeScript's AppPackageReference type is
11
+ * not sufficient to establish that a received value is safe to interpret as an
12
+ * npm package reference.
13
+ */
14
+ export declare const AppPackageReference: {
15
+ parse(input: unknown): AppPackageReference;
16
+ };
17
+ //# sourceMappingURL=app-pack-ref.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-pack-ref.d.ts","sourceRoot":"","sources":["../../src/domain/app-pack-ref.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,eAAe,CAAC;AAElD;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB;iBACjB,OAAO,GAAG,mBAAmB;CA+C3C,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Parses and validates an app package reference supplied by init.mjs.
3
+ *
4
+ * init.mjs is runtime JavaScript, so TypeScript's AppPackageReference type is
5
+ * not sufficient to establish that a received value is safe to interpret as an
6
+ * npm package reference.
7
+ */
8
+ export const AppPackageReference = {
9
+ parse(input) {
10
+ if (!isRecord(input)) {
11
+ throw new Error('Dirvi app package reference must be an object.');
12
+ }
13
+ if (input.source !== 'npm') {
14
+ throw new Error(`Unsupported Dirvi app package source "${String(input.source)}".`);
15
+ }
16
+ if (typeof input.packageName !== 'string') {
17
+ throw new Error('Dirvi npm app package name must be a string.');
18
+ }
19
+ if (!/^(?:@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*$/.test(input.packageName)) {
20
+ throw new Error(`Invalid npm package name "${input.packageName}" for a Dirvi app.`);
21
+ }
22
+ if (typeof input.version !== 'string') {
23
+ throw new Error(`Dirvi app package "${input.packageName}" version must be a string.`);
24
+ }
25
+ if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/.test(input.version)) {
26
+ throw new Error(`Dirvi app package "${input.packageName}" must use an exact version.`);
27
+ }
28
+ return {
29
+ source: 'npm',
30
+ packageName: input.packageName,
31
+ version: input.version,
32
+ };
33
+ },
34
+ };
35
+ function isRecord(value) {
36
+ return typeof value === 'object' && value !== null;
37
+ }
@@ -0,0 +1,39 @@
1
+ import type { AppApiApplicator, AppPlugin } from 'dirvi-apis';
2
+ /**
3
+ * Unique symbol used as computed property name.
4
+ *
5
+ * DO NOT EXPORT: Meant to be private to the file, so `App` has opaque
6
+ * `AppPlugin`.
7
+ */
8
+ declare const appPlugin: unique symbol;
9
+ export type App = {
10
+ /**
11
+ * User-owned identifier from init.mjs.
12
+ *
13
+ * This is intentionally not package-owned plugin metadata. It identifies a
14
+ * configured app instance, so users can register the same plugin more than
15
+ * once under different IDs.
16
+ */
17
+ readonly id: string;
18
+ /**
19
+ * Opaque storage for the plugin implementation.
20
+ *
21
+ * Consumers can inspect the configured app ID, but only this module can
22
+ * obtain and invoke the underlying AppPlugin.
23
+ */
24
+ readonly [appPlugin]: AppPlugin;
25
+ };
26
+ /**
27
+ * Creates one configured app instance from a user-selected ID and a plugin.
28
+ */
29
+ export declare function createApp(id: string, plugin: AppPlugin): App;
30
+ export type AppInput = string | undefined;
31
+ /**
32
+ * Creates the app API applicator for a configured app without exposing the
33
+ * `AppPlugin`.
34
+ *
35
+ * The concrete AppApi generic parameters remain owned by the plugin.
36
+ */
37
+ export declare function createAppApiApplicator(app: App, input: AppInput): AppApiApplicator;
38
+ export {};
39
+ //# sourceMappingURL=app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/domain/app.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE9D;;;;;GAKG;AACH,QAAA,MAAM,SAAS,eAAsB,CAAC;AAEtC,MAAM,MAAM,GAAG,GAAG;IAChB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB;;;;;OAKG;IACH,QAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;CACjC,CAAC;AAEF;;GAEG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,GAAG,CAK5D;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAE1C;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,QAAQ,GACd,gBAAgB,CAElB"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Unique symbol used as computed property name.
3
+ *
4
+ * DO NOT EXPORT: Meant to be private to the file, so `App` has opaque
5
+ * `AppPlugin`.
6
+ */
7
+ const appPlugin = Symbol('appPlugin');
8
+ /**
9
+ * Creates one configured app instance from a user-selected ID and a plugin.
10
+ */
11
+ export function createApp(id, plugin) {
12
+ return {
13
+ id,
14
+ [appPlugin]: plugin,
15
+ };
16
+ }
17
+ /**
18
+ * Creates the app API applicator for a configured app without exposing the
19
+ * `AppPlugin`.
20
+ *
21
+ * The concrete AppApi generic parameters remain owned by the plugin.
22
+ */
23
+ export function createAppApiApplicator(app, input) {
24
+ return app[appPlugin].createAppApiApplicator(input);
25
+ }
@@ -0,0 +1,386 @@
1
+ import { z } from 'zod';
2
+ import type { Config } from 'dirvi-apis';
3
+ export declare const ConfigSchema: z.ZodObject<{
4
+ indentSize: z.ZodDefault<z.ZodNumber>;
5
+ firstIndent: z.ZodOptional<z.ZodString>;
6
+ theme: z.ZodDefault<z.ZodObject<{
7
+ statusBar: z.ZodDefault<z.ZodObject<{
8
+ command: z.ZodDefault<z.ZodObject<{
9
+ fg: z.ZodObject<{
10
+ hex: z.ZodOptional<z.ZodString>;
11
+ ansi256: z.ZodOptional<z.ZodNumber>;
12
+ basic: z.ZodOptional<z.ZodEnum<{
13
+ black: "black";
14
+ red: "red";
15
+ green: "green";
16
+ yellow: "yellow";
17
+ blue: "blue";
18
+ cyan: "cyan";
19
+ magenta: "magenta";
20
+ white: "white";
21
+ gray: "gray";
22
+ grey: "grey";
23
+ blackBright: "blackBright";
24
+ redBright: "redBright";
25
+ greenBright: "greenBright";
26
+ yellowBright: "yellowBright";
27
+ blueBright: "blueBright";
28
+ cyanBright: "cyanBright";
29
+ magentaBright: "magentaBright";
30
+ whiteBright: "whiteBright";
31
+ }>>;
32
+ }, z.core.$strip>;
33
+ }, z.core.$strip>>;
34
+ normal: z.ZodDefault<z.ZodObject<{
35
+ fg: z.ZodObject<{
36
+ hex: z.ZodOptional<z.ZodString>;
37
+ ansi256: z.ZodOptional<z.ZodNumber>;
38
+ basic: z.ZodOptional<z.ZodEnum<{
39
+ black: "black";
40
+ red: "red";
41
+ green: "green";
42
+ yellow: "yellow";
43
+ blue: "blue";
44
+ cyan: "cyan";
45
+ magenta: "magenta";
46
+ white: "white";
47
+ gray: "gray";
48
+ grey: "grey";
49
+ blackBright: "blackBright";
50
+ redBright: "redBright";
51
+ greenBright: "greenBright";
52
+ yellowBright: "yellowBright";
53
+ blueBright: "blueBright";
54
+ cyanBright: "cyanBright";
55
+ magentaBright: "magentaBright";
56
+ whiteBright: "whiteBright";
57
+ }>>;
58
+ }, z.core.$strip>;
59
+ }, z.core.$strip>>;
60
+ background: z.ZodDefault<z.ZodObject<{
61
+ bg: z.ZodObject<{
62
+ hex: z.ZodOptional<z.ZodString>;
63
+ ansi256: z.ZodOptional<z.ZodNumber>;
64
+ basic: z.ZodOptional<z.ZodEnum<{
65
+ black: "black";
66
+ red: "red";
67
+ green: "green";
68
+ yellow: "yellow";
69
+ blue: "blue";
70
+ cyan: "cyan";
71
+ magenta: "magenta";
72
+ white: "white";
73
+ gray: "gray";
74
+ grey: "grey";
75
+ blackBright: "blackBright";
76
+ redBright: "redBright";
77
+ greenBright: "greenBright";
78
+ yellowBright: "yellowBright";
79
+ blueBright: "blueBright";
80
+ cyanBright: "cyanBright";
81
+ magentaBright: "magentaBright";
82
+ whiteBright: "whiteBright";
83
+ }>>;
84
+ }, z.core.$strip>;
85
+ }, z.core.$strip>>;
86
+ }, z.core.$strip>>;
87
+ tree: z.ZodDefault<z.ZodObject<{
88
+ leaf: z.ZodDefault<z.ZodObject<{
89
+ fg: z.ZodObject<{
90
+ hex: z.ZodOptional<z.ZodString>;
91
+ ansi256: z.ZodOptional<z.ZodNumber>;
92
+ basic: z.ZodOptional<z.ZodEnum<{
93
+ black: "black";
94
+ red: "red";
95
+ green: "green";
96
+ yellow: "yellow";
97
+ blue: "blue";
98
+ cyan: "cyan";
99
+ magenta: "magenta";
100
+ white: "white";
101
+ gray: "gray";
102
+ grey: "grey";
103
+ blackBright: "blackBright";
104
+ redBright: "redBright";
105
+ greenBright: "greenBright";
106
+ yellowBright: "yellowBright";
107
+ blueBright: "blueBright";
108
+ cyanBright: "cyanBright";
109
+ magentaBright: "magentaBright";
110
+ whiteBright: "whiteBright";
111
+ }>>;
112
+ }, z.core.$strip>;
113
+ }, z.core.$strip>>;
114
+ branch: z.ZodDefault<z.ZodObject<{
115
+ fg: z.ZodObject<{
116
+ hex: z.ZodOptional<z.ZodString>;
117
+ ansi256: z.ZodOptional<z.ZodNumber>;
118
+ basic: z.ZodOptional<z.ZodEnum<{
119
+ black: "black";
120
+ red: "red";
121
+ green: "green";
122
+ yellow: "yellow";
123
+ blue: "blue";
124
+ cyan: "cyan";
125
+ magenta: "magenta";
126
+ white: "white";
127
+ gray: "gray";
128
+ grey: "grey";
129
+ blackBright: "blackBright";
130
+ redBright: "redBright";
131
+ greenBright: "greenBright";
132
+ yellowBright: "yellowBright";
133
+ blueBright: "blueBright";
134
+ cyanBright: "cyanBright";
135
+ magentaBright: "magentaBright";
136
+ whiteBright: "whiteBright";
137
+ }>>;
138
+ }, z.core.$strip>;
139
+ }, z.core.$strip>>;
140
+ folded: z.ZodDefault<z.ZodObject<{
141
+ fg: z.ZodObject<{
142
+ hex: z.ZodOptional<z.ZodString>;
143
+ ansi256: z.ZodOptional<z.ZodNumber>;
144
+ basic: z.ZodOptional<z.ZodEnum<{
145
+ black: "black";
146
+ red: "red";
147
+ green: "green";
148
+ yellow: "yellow";
149
+ blue: "blue";
150
+ cyan: "cyan";
151
+ magenta: "magenta";
152
+ white: "white";
153
+ gray: "gray";
154
+ grey: "grey";
155
+ blackBright: "blackBright";
156
+ redBright: "redBright";
157
+ greenBright: "greenBright";
158
+ yellowBright: "yellowBright";
159
+ blueBright: "blueBright";
160
+ cyanBright: "cyanBright";
161
+ magentaBright: "magentaBright";
162
+ whiteBright: "whiteBright";
163
+ }>>;
164
+ }, z.core.$strip>;
165
+ }, z.core.$strip>>;
166
+ cursorLine: z.ZodDefault<z.ZodObject<{
167
+ bg: z.ZodObject<{
168
+ hex: z.ZodOptional<z.ZodString>;
169
+ ansi256: z.ZodOptional<z.ZodNumber>;
170
+ basic: z.ZodOptional<z.ZodEnum<{
171
+ black: "black";
172
+ red: "red";
173
+ green: "green";
174
+ yellow: "yellow";
175
+ blue: "blue";
176
+ cyan: "cyan";
177
+ magenta: "magenta";
178
+ white: "white";
179
+ gray: "gray";
180
+ grey: "grey";
181
+ blackBright: "blackBright";
182
+ redBright: "redBright";
183
+ greenBright: "greenBright";
184
+ yellowBright: "yellowBright";
185
+ blueBright: "blueBright";
186
+ cyanBright: "cyanBright";
187
+ magentaBright: "magentaBright";
188
+ whiteBright: "whiteBright";
189
+ }>>;
190
+ }, z.core.$strip>;
191
+ }, z.core.$strip>>;
192
+ indentGuide: z.ZodDefault<z.ZodObject<{
193
+ fg: z.ZodOptional<z.ZodObject<{
194
+ hex: z.ZodOptional<z.ZodString>;
195
+ ansi256: z.ZodOptional<z.ZodNumber>;
196
+ basic: z.ZodOptional<z.ZodEnum<{
197
+ black: "black";
198
+ red: "red";
199
+ green: "green";
200
+ yellow: "yellow";
201
+ blue: "blue";
202
+ cyan: "cyan";
203
+ magenta: "magenta";
204
+ white: "white";
205
+ gray: "gray";
206
+ grey: "grey";
207
+ blackBright: "blackBright";
208
+ redBright: "redBright";
209
+ greenBright: "greenBright";
210
+ yellowBright: "yellowBright";
211
+ blueBright: "blueBright";
212
+ cyanBright: "cyanBright";
213
+ magentaBright: "magentaBright";
214
+ whiteBright: "whiteBright";
215
+ }>>;
216
+ }, z.core.$strip>>;
217
+ }, z.core.$strip>>;
218
+ }, z.core.$strip>>;
219
+ feedbackBar: z.ZodDefault<z.ZodObject<{
220
+ message: z.ZodDefault<z.ZodObject<{
221
+ fg: z.ZodObject<{
222
+ hex: z.ZodOptional<z.ZodString>;
223
+ ansi256: z.ZodOptional<z.ZodNumber>;
224
+ basic: z.ZodOptional<z.ZodEnum<{
225
+ black: "black";
226
+ red: "red";
227
+ green: "green";
228
+ yellow: "yellow";
229
+ blue: "blue";
230
+ cyan: "cyan";
231
+ magenta: "magenta";
232
+ white: "white";
233
+ gray: "gray";
234
+ grey: "grey";
235
+ blackBright: "blackBright";
236
+ redBright: "redBright";
237
+ greenBright: "greenBright";
238
+ yellowBright: "yellowBright";
239
+ blueBright: "blueBright";
240
+ cyanBright: "cyanBright";
241
+ magentaBright: "magentaBright";
242
+ whiteBright: "whiteBright";
243
+ }>>;
244
+ }, z.core.$strip>;
245
+ bg: z.ZodObject<{
246
+ hex: z.ZodOptional<z.ZodString>;
247
+ ansi256: z.ZodOptional<z.ZodNumber>;
248
+ basic: z.ZodOptional<z.ZodEnum<{
249
+ black: "black";
250
+ red: "red";
251
+ green: "green";
252
+ yellow: "yellow";
253
+ blue: "blue";
254
+ cyan: "cyan";
255
+ magenta: "magenta";
256
+ white: "white";
257
+ gray: "gray";
258
+ grey: "grey";
259
+ blackBright: "blackBright";
260
+ redBright: "redBright";
261
+ greenBright: "greenBright";
262
+ yellowBright: "yellowBright";
263
+ blueBright: "blueBright";
264
+ cyanBright: "cyanBright";
265
+ magentaBright: "magentaBright";
266
+ whiteBright: "whiteBright";
267
+ }>>;
268
+ }, z.core.$strip>;
269
+ }, z.core.$strip>>;
270
+ success: z.ZodDefault<z.ZodObject<{
271
+ fg: z.ZodObject<{
272
+ hex: z.ZodOptional<z.ZodString>;
273
+ ansi256: z.ZodOptional<z.ZodNumber>;
274
+ basic: z.ZodOptional<z.ZodEnum<{
275
+ black: "black";
276
+ red: "red";
277
+ green: "green";
278
+ yellow: "yellow";
279
+ blue: "blue";
280
+ cyan: "cyan";
281
+ magenta: "magenta";
282
+ white: "white";
283
+ gray: "gray";
284
+ grey: "grey";
285
+ blackBright: "blackBright";
286
+ redBright: "redBright";
287
+ greenBright: "greenBright";
288
+ yellowBright: "yellowBright";
289
+ blueBright: "blueBright";
290
+ cyanBright: "cyanBright";
291
+ magentaBright: "magentaBright";
292
+ whiteBright: "whiteBright";
293
+ }>>;
294
+ }, z.core.$strip>;
295
+ bg: z.ZodObject<{
296
+ hex: z.ZodOptional<z.ZodString>;
297
+ ansi256: z.ZodOptional<z.ZodNumber>;
298
+ basic: z.ZodOptional<z.ZodEnum<{
299
+ black: "black";
300
+ red: "red";
301
+ green: "green";
302
+ yellow: "yellow";
303
+ blue: "blue";
304
+ cyan: "cyan";
305
+ magenta: "magenta";
306
+ white: "white";
307
+ gray: "gray";
308
+ grey: "grey";
309
+ blackBright: "blackBright";
310
+ redBright: "redBright";
311
+ greenBright: "greenBright";
312
+ yellowBright: "yellowBright";
313
+ blueBright: "blueBright";
314
+ cyanBright: "cyanBright";
315
+ magentaBright: "magentaBright";
316
+ whiteBright: "whiteBright";
317
+ }>>;
318
+ }, z.core.$strip>;
319
+ }, z.core.$strip>>;
320
+ error: z.ZodDefault<z.ZodObject<{
321
+ fg: z.ZodObject<{
322
+ hex: z.ZodOptional<z.ZodString>;
323
+ ansi256: z.ZodOptional<z.ZodNumber>;
324
+ basic: z.ZodOptional<z.ZodEnum<{
325
+ black: "black";
326
+ red: "red";
327
+ green: "green";
328
+ yellow: "yellow";
329
+ blue: "blue";
330
+ cyan: "cyan";
331
+ magenta: "magenta";
332
+ white: "white";
333
+ gray: "gray";
334
+ grey: "grey";
335
+ blackBright: "blackBright";
336
+ redBright: "redBright";
337
+ greenBright: "greenBright";
338
+ yellowBright: "yellowBright";
339
+ blueBright: "blueBright";
340
+ cyanBright: "cyanBright";
341
+ magentaBright: "magentaBright";
342
+ whiteBright: "whiteBright";
343
+ }>>;
344
+ }, z.core.$strip>;
345
+ bg: z.ZodObject<{
346
+ hex: z.ZodOptional<z.ZodString>;
347
+ ansi256: z.ZodOptional<z.ZodNumber>;
348
+ basic: z.ZodOptional<z.ZodEnum<{
349
+ black: "black";
350
+ red: "red";
351
+ green: "green";
352
+ yellow: "yellow";
353
+ blue: "blue";
354
+ cyan: "cyan";
355
+ magenta: "magenta";
356
+ white: "white";
357
+ gray: "gray";
358
+ grey: "grey";
359
+ blackBright: "blackBright";
360
+ redBright: "redBright";
361
+ greenBright: "greenBright";
362
+ yellowBright: "yellowBright";
363
+ blueBright: "blueBright";
364
+ cyanBright: "cyanBright";
365
+ magentaBright: "magentaBright";
366
+ whiteBright: "whiteBright";
367
+ }>>;
368
+ }, z.core.$strip>;
369
+ }, z.core.$strip>>;
370
+ }, z.core.$strip>>;
371
+ }, z.core.$strip>>;
372
+ }, z.core.$strip>;
373
+ export declare const defaultConfig: Config;
374
+ export type DeepPartial<Value> = Value extends readonly unknown[] ? Value : Value extends object ? {
375
+ readonly [Key in keyof Value]?: DeepPartial<Value[Key]>;
376
+ } : Value;
377
+ /**
378
+ * Deeply merges plain configuration objects without mutating either input.
379
+ *
380
+ * Nested records merge recursively. Scalars, undefined values, and arrays
381
+ * replace the corresponding current value. ConfigSchema validates the result
382
+ * immediately after this operation, since TypeScript cannot prove that a
383
+ * generic runtime merge preserves all domain invariants.
384
+ */
385
+ export declare function merge<Value>(current: Value, patch: DeepPartial<Value>): Value;
386
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/domain/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAKzC,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAMK,CAAC;AAE/B,eAAO,MAAM,aAAa,EAAE,MAA+B,CAAC;AAK5D,MAAM,MAAM,WAAW,CAAC,KAAK,IAAI,KAAK,SAAS,SAAS,OAAO,EAAE,GAC7D,KAAK,GACL,KAAK,SAAS,MAAM,GAClB;IAAE,QAAQ,EAAE,GAAG,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;CAAE,GAC3D,KAAK,CAAC;AAEZ;;;;;;;GAOG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,KAAK,CAiB7E"}
@@ -0,0 +1,44 @@
1
+ import { z } from 'zod';
2
+ import { defaultTheme, ThemeSchema } from './theme.js';
3
+ // =============================================================================
4
+ // Configuration
5
+ // =============================================================================
6
+ export const ConfigSchema = z.object({
7
+ indentSize: z.number().int().min(0).default(2),
8
+ // When omitted, ViewRowComponent uses `indentSize` spaces.
9
+ // An empty string is valid and removes the first indentation prefix.
10
+ firstIndent: z.string().optional(),
11
+ theme: ThemeSchema.default(defaultTheme),
12
+ });
13
+ export const defaultConfig = ConfigSchema.parse({});
14
+ /**
15
+ * Deeply merges plain configuration objects without mutating either input.
16
+ *
17
+ * Nested records merge recursively. Scalars, undefined values, and arrays
18
+ * replace the corresponding current value. ConfigSchema validates the result
19
+ * immediately after this operation, since TypeScript cannot prove that a
20
+ * generic runtime merge preserves all domain invariants.
21
+ */
22
+ export function merge(current, patch) {
23
+ if (!isRecord(current) || !isRecord(patch)) {
24
+ return patch;
25
+ }
26
+ const result = { ...current };
27
+ for (const [key, patchValue] of Object.entries(patch)) {
28
+ const currentValue = result[key];
29
+ result[key] =
30
+ isRecord(currentValue) && isRecord(patchValue)
31
+ ? merge(currentValue, patchValue)
32
+ : patchValue;
33
+ }
34
+ return result;
35
+ }
36
+ /**
37
+ * Returns whether a value can participate in the object-merge branch.
38
+ *
39
+ * Arrays are deliberately excluded: they are configuration values to replace
40
+ * atomically rather than collections to merge by numeric index.
41
+ */
42
+ function isRecord(value) {
43
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
44
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * API exposing methods at the dirvi app-level.
3
+ *
4
+ * Used in registering commands specific to an app in {@link PublicInitApi}.
5
+ */
6
+ export type AppApi = {};
7
+ //# sourceMappingURL=app-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-api.d.ts","sourceRoot":"","sources":["../../../src/domain/dirvi-api/app-api.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,MAAM,GAAG,EAEpB,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,17 @@
1
+ import { ShellApi } from './shell-api.js';
2
+ import { AppApi } from './app-api.js';
3
+ /**
4
+ * General API for performing actions in a running Dirvi session.
5
+ *
6
+ * This type describes the available actions; it does not implement them.
7
+ * Dirvi must create an API object whose methods are backed by the live session.
8
+ *
9
+ * One use is in {@link PublicInitApi}: init.mjs can register closures that
10
+ * receive this API and call its methods to perform actions. Dirvi passes the
11
+ * object to a closure when it runs, not when it is registered.
12
+ */
13
+ export type DirviApi = {
14
+ shell: ShellApi;
15
+ app: AppApi;
16
+ };
17
+ //# sourceMappingURL=dirvi-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dirvi-api.d.ts","sourceRoot":"","sources":["../../../src/domain/dirvi-api/dirvi-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC;;;;;;;;;GASG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,EAAE,QAAQ,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,35 @@
1
+ import type { AppInput } from '../app-input.js';
2
+ export type OpenAppResult = {
3
+ readonly kind: 'loaded';
4
+ } | {
5
+ readonly kind: 'notRegistered';
6
+ readonly appId: string;
7
+ readonly message: string;
8
+ } | {
9
+ readonly kind: 'loadFailed';
10
+ readonly appId: string;
11
+ readonly message: string;
12
+ };
13
+ /**
14
+ * API exposing methods at the dirvi shell-level.
15
+ *
16
+ * Not specific to any app.
17
+ */
18
+ export type ShellApi = {
19
+ /**
20
+ * Loads an app by ID and input.
21
+ *
22
+ * A successful `loaded` result means the app's methods have been prepared and
23
+ * the shell update was scheduled. App initialization may still fail if the
24
+ * app definition methods fail.
25
+ *
26
+ * @param appId - ID of the registered app to load.
27
+ * @param input - Input to be interpreted by the selected app.
28
+ * @returns A result describing whether the app was loaded or why loading
29
+ * failed. Loading failures do not cause the promise to throw.
30
+ */
31
+ readonly loadApp: (appId: string, input: AppInput) => Promise<OpenAppResult>;
32
+ /** Optional exit message to display. */
33
+ readonly quit: (message?: string) => void;
34
+ };
35
+ //# sourceMappingURL=shell-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell-api.d.ts","sourceRoot":"","sources":["../../../src/domain/dirvi-api/shell-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,MAAM,aAAa,GACrB;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAC3B;IACE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEN;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IAE7E,wCAAwC;IACxC,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C,CAAC"}
@@ -0,0 +1 @@
1
+ export {};