@workbench-kit/workbench-config 0.0.2-prototype.0.2.25 → 0.0.2-prototype.0.2.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/index.ts +4 -28
- package/src/keybindings-config.ts +2 -9
- package/src/parse-helpers.ts +15 -0
- package/src/settings-config.ts +17 -10
- package/src/user-commands-config.ts +2 -9
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { assertKnownKeys, assertRecord } from './parse-helpers.js';
|
|
1
|
+
import { assertKnownKeys, assertRecord, parseConfigJson } from './parse-helpers.js';
|
|
2
2
|
import { WorkbenchConfigValidationError } from './validation-error.js';
|
|
3
3
|
|
|
4
4
|
export const WORKBENCH_KIT_WORKBENCH_CONFIG_VERSION = '0.0.0' as const;
|
|
@@ -85,15 +85,7 @@ export function parseWorkbenchExtensionsConfig(input: unknown): WorkbenchExtensi
|
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
export function parseWorkbenchExtensionsConfigJson(jsonText: string): WorkbenchExtensionsConfig {
|
|
88
|
-
|
|
89
|
-
return parseWorkbenchExtensionsConfig(JSON.parse(jsonText) as unknown);
|
|
90
|
-
} catch (error) {
|
|
91
|
-
if (error instanceof WorkbenchConfigValidationError) {
|
|
92
|
-
throw error;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
throw new WorkbenchConfigValidationError('Expected extensions config to be valid JSON.');
|
|
96
|
-
}
|
|
88
|
+
return parseConfigJson(jsonText, parseWorkbenchExtensionsConfig, 'extensions config');
|
|
97
89
|
}
|
|
98
90
|
|
|
99
91
|
export function parseWorkbenchExtensionsLock(input: unknown): WorkbenchExtensionsLock {
|
|
@@ -136,15 +128,7 @@ export function parseWorkbenchExtensionsLock(input: unknown): WorkbenchExtension
|
|
|
136
128
|
}
|
|
137
129
|
|
|
138
130
|
export function parseWorkbenchExtensionsLockJson(jsonText: string): WorkbenchExtensionsLock {
|
|
139
|
-
|
|
140
|
-
return parseWorkbenchExtensionsLock(JSON.parse(jsonText) as unknown);
|
|
141
|
-
} catch (error) {
|
|
142
|
-
if (error instanceof WorkbenchConfigValidationError) {
|
|
143
|
-
throw error;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
throw new WorkbenchConfigValidationError('Expected extensions lock to be valid JSON.');
|
|
147
|
-
}
|
|
131
|
+
return parseConfigJson(jsonText, parseWorkbenchExtensionsLock, 'extensions lock');
|
|
148
132
|
}
|
|
149
133
|
|
|
150
134
|
export function parseWorkbenchLayoutConfig(input: unknown): WorkbenchLayoutConfig {
|
|
@@ -204,15 +188,7 @@ export function parseWorkbenchLayoutConfig(input: unknown): WorkbenchLayoutConfi
|
|
|
204
188
|
}
|
|
205
189
|
|
|
206
190
|
export function parseWorkbenchLayoutConfigJson(jsonText: string): WorkbenchLayoutConfig {
|
|
207
|
-
|
|
208
|
-
return parseWorkbenchLayoutConfig(JSON.parse(jsonText) as unknown);
|
|
209
|
-
} catch (error) {
|
|
210
|
-
if (error instanceof WorkbenchConfigValidationError) {
|
|
211
|
-
throw error;
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
throw new WorkbenchConfigValidationError('Expected layout config to be valid JSON.');
|
|
215
|
-
}
|
|
191
|
+
return parseConfigJson(jsonText, parseWorkbenchLayoutConfig, 'layout config');
|
|
216
192
|
}
|
|
217
193
|
|
|
218
194
|
export {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
assertKnownKeys,
|
|
3
3
|
assertRecord,
|
|
4
|
+
parseConfigJson,
|
|
4
5
|
readOptionalString,
|
|
5
6
|
readRequiredString,
|
|
6
7
|
} from './parse-helpers.js';
|
|
@@ -26,15 +27,7 @@ export function parseWorkbenchKeybindingsConfig(
|
|
|
26
27
|
export function parseWorkbenchKeybindingsConfigJson(
|
|
27
28
|
jsonText: string,
|
|
28
29
|
): readonly WorkbenchKeybindingDefinition[] {
|
|
29
|
-
|
|
30
|
-
return parseWorkbenchKeybindingsConfig(JSON.parse(jsonText) as unknown);
|
|
31
|
-
} catch (error) {
|
|
32
|
-
if (error instanceof WorkbenchConfigValidationError) {
|
|
33
|
-
throw error;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
throw new WorkbenchConfigValidationError('Expected keybindings config to be valid JSON.');
|
|
37
|
-
}
|
|
30
|
+
return parseConfigJson(jsonText, parseWorkbenchKeybindingsConfig, 'keybindings config');
|
|
38
31
|
}
|
|
39
32
|
|
|
40
33
|
function parseWorkbenchKeybindingDefinition(
|
package/src/parse-helpers.ts
CHANGED
|
@@ -8,6 +8,21 @@ export function assertRecord(value: unknown, label: string): Record<string, unkn
|
|
|
8
8
|
return value as Record<string, unknown>;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
+
export function parseConfigJson<T>(
|
|
12
|
+
jsonText: string,
|
|
13
|
+
parseConfig: (input: unknown) => T,
|
|
14
|
+
configLabel: string,
|
|
15
|
+
): T {
|
|
16
|
+
try {
|
|
17
|
+
return parseConfig(JSON.parse(jsonText) as unknown);
|
|
18
|
+
} catch (error) {
|
|
19
|
+
if (error instanceof WorkbenchConfigValidationError) {
|
|
20
|
+
throw error;
|
|
21
|
+
}
|
|
22
|
+
throw new WorkbenchConfigValidationError(`Expected ${configLabel} to be valid JSON.`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
11
26
|
export function readRequiredString(record: Record<string, unknown>, key: string): string {
|
|
12
27
|
const value = record[key];
|
|
13
28
|
if (typeof value !== 'string' || value.trim().length === 0) {
|
package/src/settings-config.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { parseConfigJson } from './parse-helpers.js';
|
|
1
2
|
import { WorkbenchConfigValidationError } from './validation-error.js';
|
|
2
3
|
|
|
3
4
|
export type WorkbenchSettingsConfig = Readonly<Record<string, unknown>>;
|
|
@@ -7,17 +8,23 @@ export function parseWorkbenchSettingsConfig(input: unknown): WorkbenchSettingsC
|
|
|
7
8
|
throw new WorkbenchConfigValidationError('Expected settings config to be an object.');
|
|
8
9
|
}
|
|
9
10
|
|
|
10
|
-
|
|
11
|
+
const settings = { ...(input as Record<string, unknown>) };
|
|
12
|
+
const colorTheme = settings['workbench.colorTheme'];
|
|
13
|
+
if (colorTheme !== undefined && typeof colorTheme !== 'string') {
|
|
14
|
+
throw new WorkbenchConfigValidationError('Expected workbench.colorTheme to be a string.');
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const editorFontSize = settings['editor.fontSize'];
|
|
18
|
+
if (
|
|
19
|
+
editorFontSize !== undefined &&
|
|
20
|
+
(typeof editorFontSize !== 'number' || !Number.isFinite(editorFontSize) || editorFontSize < 1)
|
|
21
|
+
) {
|
|
22
|
+
throw new WorkbenchConfigValidationError('Expected editor.fontSize to be a number >= 1.');
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
return settings;
|
|
11
26
|
}
|
|
12
27
|
|
|
13
28
|
export function parseWorkbenchSettingsConfigJson(jsonText: string): WorkbenchSettingsConfig {
|
|
14
|
-
|
|
15
|
-
return parseWorkbenchSettingsConfig(JSON.parse(jsonText) as unknown);
|
|
16
|
-
} catch (error) {
|
|
17
|
-
if (error instanceof WorkbenchConfigValidationError) {
|
|
18
|
-
throw error;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
throw new WorkbenchConfigValidationError('Expected settings config to be valid JSON.');
|
|
22
|
-
}
|
|
29
|
+
return parseConfigJson(jsonText, parseWorkbenchSettingsConfig, 'settings config');
|
|
23
30
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
assertKnownKeys,
|
|
3
3
|
assertRecord,
|
|
4
|
+
parseConfigJson,
|
|
4
5
|
readOptionalString,
|
|
5
6
|
readRequiredString,
|
|
6
7
|
} from './parse-helpers.js';
|
|
@@ -52,15 +53,7 @@ export function parseWorkbenchUserCommandsConfig(input: unknown): WorkbenchUserC
|
|
|
52
53
|
export function parseWorkbenchUserCommandsConfigJson(
|
|
53
54
|
jsonText: string,
|
|
54
55
|
): WorkbenchUserCommandsConfig {
|
|
55
|
-
|
|
56
|
-
return parseWorkbenchUserCommandsConfig(JSON.parse(jsonText) as unknown);
|
|
57
|
-
} catch (error) {
|
|
58
|
-
if (error instanceof WorkbenchConfigValidationError) {
|
|
59
|
-
throw error;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
throw new WorkbenchConfigValidationError('Expected user commands config to be valid JSON.');
|
|
63
|
-
}
|
|
56
|
+
return parseConfigJson(jsonText, parseWorkbenchUserCommandsConfig, 'user commands config');
|
|
64
57
|
}
|
|
65
58
|
|
|
66
59
|
function parseUserCommandDefinition(input: unknown, index: number): WorkbenchUserCommandDefinition {
|