@likec4/config 1.40.0 → 1.42.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +2183 -1400
- package/dist/index.mjs +1 -1
- package/dist/node/index.d.mts +5 -1
- package/dist/node/index.mjs +10 -6
- package/dist/shared/config.C9KUVBb7.mjs +307 -0
- package/node/package.json +4 -0
- package/package.json +18 -15
- package/schema.json +532 -1
- package/src/define-config.ts +83 -3
- package/src/index.ts +9 -0
- package/src/node/load-config.ts +8 -4
- package/src/schema.image-alias.ts +1 -1
- package/src/schema.theme.ts +249 -0
- package/src/schema.ts +17 -7
- package/dist/shared/config.BgYO9fOn.mjs +0 -3251
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { C as ConfigFilenames, d as defineConfig, c as defineGenerators, i as isLikeC4Config, a as isLikeC4JsonConfig, b as isLikeC4NonJsonConfig, s as serializableLikeC4ProjectConfig, v as validateProjectConfig } from './shared/config.
|
|
1
|
+
export { C as ConfigFilenames, d as defineConfig, c as defineGenerators, e as defineStyle, f as defineTheme, g as defineThemeColor, i as isLikeC4Config, a as isLikeC4JsonConfig, b as isLikeC4NonJsonConfig, s as serializableLikeC4ProjectConfig, v as validateProjectConfig } from './shared/config.C9KUVBb7.mjs';
|
package/dist/node/index.d.mts
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { URI } from 'vscode-uri';
|
|
2
2
|
import { LikeC4ProjectConfig } from '../index.mjs';
|
|
3
|
-
export { ConfigFilenames, GeneratorFn, GeneratorFnContext, GeneratorFnParams, LikeC4ProjectJsonConfig, defineConfig, defineGenerators, isLikeC4Config, isLikeC4JsonConfig, isLikeC4NonJsonConfig, serializableLikeC4ProjectConfig, validateProjectConfig } from '../index.mjs';
|
|
3
|
+
export { ConfigFilenames, GeneratorFn, GeneratorFnContext, GeneratorFnParams, LikeC4ProjectConfigInput, LikeC4ProjectJsonConfig, LikeC4StylesConfig, LikeC4StylesConfigInput, defineConfig, defineGenerators, defineStyle, defineTheme, defineThemeColor, isLikeC4Config, isLikeC4JsonConfig, isLikeC4NonJsonConfig, serializableLikeC4ProjectConfig, validateProjectConfig } from '../index.mjs';
|
|
4
|
+
import '@likec4/core';
|
|
4
5
|
import '@likec4/core/model';
|
|
5
6
|
import '@likec4/core/types';
|
|
7
|
+
import 'type-fest';
|
|
8
|
+
import 'zod/v4';
|
|
9
|
+
import '@likec4/core/styles';
|
|
6
10
|
|
|
7
11
|
/**
|
|
8
12
|
* Load LikeC4 Project config file.
|
package/dist/node/index.mjs
CHANGED
|
@@ -2,8 +2,8 @@ import { invariant } from '@likec4/core';
|
|
|
2
2
|
import { bundleRequire } from 'bundle-require';
|
|
3
3
|
import * as fs from 'node:fs/promises';
|
|
4
4
|
import { dirname } from 'node:path';
|
|
5
|
-
import { a as isLikeC4JsonConfig, v as validateProjectConfig, b as isLikeC4NonJsonConfig, d as defineConfig } from '../shared/config.
|
|
6
|
-
export { C as ConfigFilenames, c as defineGenerators, i as isLikeC4Config, s as serializableLikeC4ProjectConfig } from '../shared/config.
|
|
5
|
+
import { a as isLikeC4JsonConfig, v as validateProjectConfig, b as isLikeC4NonJsonConfig, d as defineConfig } from '../shared/config.C9KUVBb7.mjs';
|
|
6
|
+
export { C as ConfigFilenames, c as defineGenerators, e as defineStyle, f as defineTheme, g as defineThemeColor, i as isLikeC4Config, s as serializableLikeC4ProjectConfig } from '../shared/config.C9KUVBb7.mjs';
|
|
7
7
|
import { rootLogger } from '@likec4/log';
|
|
8
8
|
|
|
9
9
|
const logger = rootLogger.getChild("config");
|
|
@@ -34,13 +34,17 @@ async function loadConfig(filepath) {
|
|
|
34
34
|
path: args.path,
|
|
35
35
|
namespace: "likec4-config"
|
|
36
36
|
}));
|
|
37
|
-
build.onLoad({ filter: /.*/, namespace: "likec4-config" }, (
|
|
37
|
+
build.onLoad({ filter: /.*/, namespace: "likec4-config" }, (_args) => {
|
|
38
38
|
return {
|
|
39
39
|
contents: `
|
|
40
|
-
|
|
40
|
+
// Mock implementation to allow loading config files without bundling @likec4/config
|
|
41
|
+
function mock(x) { return x }
|
|
41
42
|
export {
|
|
42
|
-
|
|
43
|
-
|
|
43
|
+
mock as defineConfig,
|
|
44
|
+
mock as defineGenerators,
|
|
45
|
+
mock as defineStyle,
|
|
46
|
+
mock as defineTheme,
|
|
47
|
+
mock as defineThemeColor,
|
|
44
48
|
}`,
|
|
45
49
|
loader: "js"
|
|
46
50
|
};
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
import JSON5 from 'json5';
|
|
2
|
+
import * as z from 'zod/v4';
|
|
3
|
+
import z__default from 'zod/v4';
|
|
4
|
+
import { computeColorValues, ElementShapes, Sizes, BorderStyles, RelationshipArrowTypes, ThemeColors } from '@likec4/core/styles';
|
|
5
|
+
import { exact } from '@likec4/core/types';
|
|
6
|
+
|
|
7
|
+
const IMAGE_ALIAS_KEY_REGEX = /^@[A-Za-z0-9_-]*$/;
|
|
8
|
+
const IMAGE_ALIAS_VALUE_REGEX = /^(?!\/|[A-Za-z]:[\\\/])(?!.*:\/\/).*$/;
|
|
9
|
+
const ImageAliasValue = z.string().nonempty("Image alias value cannot be empty").regex(
|
|
10
|
+
IMAGE_ALIAS_VALUE_REGEX,
|
|
11
|
+
"Image alias value must be a relative path (no leading slash or protocol)"
|
|
12
|
+
);
|
|
13
|
+
const ImageAliasesSchema = z.record(
|
|
14
|
+
z.string(),
|
|
15
|
+
// PLAIN key schema - valibot JSON schema export-safe.
|
|
16
|
+
ImageAliasValue
|
|
17
|
+
).meta({
|
|
18
|
+
description: "Map of image alias prefixes to relative paths (keys must match /^@\\w+$/; values must be relative paths without protocol or leading slash)."
|
|
19
|
+
});
|
|
20
|
+
function validateImageAliases(imageAliases) {
|
|
21
|
+
const invalidKeys = [];
|
|
22
|
+
const invalidValues = [];
|
|
23
|
+
if (imageAliases) {
|
|
24
|
+
for (const [key, value] of Object.entries(imageAliases)) {
|
|
25
|
+
if (!IMAGE_ALIAS_KEY_REGEX.test(key)) {
|
|
26
|
+
invalidKeys.push(key);
|
|
27
|
+
}
|
|
28
|
+
if (!IMAGE_ALIAS_VALUE_REGEX.test(value)) {
|
|
29
|
+
invalidValues.push(`${key} -> ${value}`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
if (invalidKeys.length || invalidValues.length) {
|
|
34
|
+
const parts = [];
|
|
35
|
+
if (invalidKeys.length) {
|
|
36
|
+
parts.push(
|
|
37
|
+
`Invalid image alias key(s): ${invalidKeys.map((k) => JSON.stringify(k)).join(", ")} (must match ${IMAGE_ALIAS_KEY_REGEX})`
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
if (invalidValues.length) {
|
|
41
|
+
parts.push(
|
|
42
|
+
`Invalid image alias value(s): ${invalidValues.map((kv) => JSON.stringify(kv)).join(", ")} (must match ${IMAGE_ALIAS_VALUE_REGEX})`
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
throw new Error(parts.join(" | "));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function e(e,t,n){let r=n=>e(n,...t);return n===void 0?r:Object.assign(r,{lazy:n,lazyArgs:t})}
|
|
50
|
+
|
|
51
|
+
function t$1(t,n,r){let i=t.length-n.length;if(i===0)return t(...n);if(i===1)return e(t,n,r);throw Error(`Wrong number of arguments`)}
|
|
52
|
+
|
|
53
|
+
function t(...t){return t$1(n,t)}function n(e,t){let n={};for(let[r,i]of e.entries())n[i]=t(i,r,e);return n}
|
|
54
|
+
|
|
55
|
+
const opacity = z__default.number().min(0, "Opacity must be between 0 and 100").max(100, "Opacity must be between 0 and 100").meta({
|
|
56
|
+
id: "Opacity",
|
|
57
|
+
description: "Opacity 0%-100%"
|
|
58
|
+
});
|
|
59
|
+
const shape = z__default.literal(ElementShapes).meta({
|
|
60
|
+
id: "ElementShape",
|
|
61
|
+
description: "Element shape"
|
|
62
|
+
});
|
|
63
|
+
const border = z__default.literal(BorderStyles).meta({
|
|
64
|
+
id: "BorderStyle",
|
|
65
|
+
description: "Border style"
|
|
66
|
+
});
|
|
67
|
+
const size = z__default.literal(Sizes).meta({
|
|
68
|
+
id: "ElementSize",
|
|
69
|
+
description: "Element size"
|
|
70
|
+
});
|
|
71
|
+
const arrow = z__default.literal(RelationshipArrowTypes).meta({
|
|
72
|
+
id: "ArrowType",
|
|
73
|
+
description: "Relationship arrow type"
|
|
74
|
+
});
|
|
75
|
+
const line = z__default.literal(["dashed", "solid", "dotted"]).meta({
|
|
76
|
+
id: "LineType",
|
|
77
|
+
description: "Default line type for relationships"
|
|
78
|
+
});
|
|
79
|
+
const themeColor = z__default.literal(ThemeColors).meta({
|
|
80
|
+
id: "ThemeColor",
|
|
81
|
+
description: "Reserved theme color name"
|
|
82
|
+
});
|
|
83
|
+
const color = z__default.union([
|
|
84
|
+
themeColor,
|
|
85
|
+
z__default.string().nonempty("Color name cannot be empty")
|
|
86
|
+
]).transform((value) => value).meta({
|
|
87
|
+
id: "ColorName",
|
|
88
|
+
description: "Color name (Theme color name or custom color name)"
|
|
89
|
+
});
|
|
90
|
+
const colorValue = z__default.string().nonempty("Color value cannot be empty").transform((value) => value).meta({
|
|
91
|
+
id: "ColorLiteral",
|
|
92
|
+
description: "Color value in any valid CSS format: hex, rgb, rgba, hsl, hsla ..."
|
|
93
|
+
});
|
|
94
|
+
const colorSchema = colorValue;
|
|
95
|
+
const ElementColorValuesSchema = z__default.object({
|
|
96
|
+
fill: colorSchema.meta({ description: "Background color" }),
|
|
97
|
+
stroke: colorSchema.meta({ description: "Stroke color (border, paths above background)" }),
|
|
98
|
+
hiContrast: colorSchema.meta({ description: "High contrast text color (title)" }),
|
|
99
|
+
loContrast: colorSchema.meta({ description: "Low contrast text color (description)" })
|
|
100
|
+
}).meta({
|
|
101
|
+
id: "ElementColorValues",
|
|
102
|
+
description: "Specific element colors"
|
|
103
|
+
}).transform((value) => value);
|
|
104
|
+
const RelationshipColorValuesSchema = z__default.object({
|
|
105
|
+
line: colorSchema.meta({ description: "Line color" }),
|
|
106
|
+
label: colorSchema.meta({ description: "Label text color" }),
|
|
107
|
+
labelBg: colorSchema.optional().default("rgba(0, 0, 0, 0)").meta({ description: "Label background color" })
|
|
108
|
+
}).meta({
|
|
109
|
+
id: "RelationshipColorValues",
|
|
110
|
+
description: "Specefic relationship colors"
|
|
111
|
+
}).transform((value) => value);
|
|
112
|
+
const ThemeColorValuesSchema = z__default.union([
|
|
113
|
+
colorSchema,
|
|
114
|
+
z__default.object({
|
|
115
|
+
elements: z__default.union([colorSchema, ElementColorValuesSchema]).transform((value) => {
|
|
116
|
+
if (typeof value === "string") {
|
|
117
|
+
return computeColorValues(value).elements;
|
|
118
|
+
}
|
|
119
|
+
return value;
|
|
120
|
+
}),
|
|
121
|
+
relationships: z__default.union([colorSchema, RelationshipColorValuesSchema]).transform((value) => {
|
|
122
|
+
if (typeof value === "string") {
|
|
123
|
+
return computeColorValues(value).relationships;
|
|
124
|
+
}
|
|
125
|
+
return value;
|
|
126
|
+
})
|
|
127
|
+
})
|
|
128
|
+
]).meta({
|
|
129
|
+
id: "ThemeColorValues",
|
|
130
|
+
description: "Exact value (hex, rgb, rgba, hsl, hsla ...) or break down of specific color values"
|
|
131
|
+
}).transform((value) => {
|
|
132
|
+
if (typeof value === "string") {
|
|
133
|
+
return computeColorValues(value);
|
|
134
|
+
}
|
|
135
|
+
return value;
|
|
136
|
+
});
|
|
137
|
+
const ThemeColorsSchema = z__default.union([
|
|
138
|
+
z__default.record(
|
|
139
|
+
color,
|
|
140
|
+
ThemeColorValuesSchema
|
|
141
|
+
),
|
|
142
|
+
z__default.object(
|
|
143
|
+
t(ThemeColors, () => ThemeColorValuesSchema.optional())
|
|
144
|
+
)
|
|
145
|
+
]).meta({
|
|
146
|
+
id: "ThemeColors",
|
|
147
|
+
description: "Override of theme colors"
|
|
148
|
+
});
|
|
149
|
+
const DimensionsSchema = z__default.object({
|
|
150
|
+
width: z__default.number(),
|
|
151
|
+
height: z__default.number()
|
|
152
|
+
}).meta({
|
|
153
|
+
id: "Dimensions",
|
|
154
|
+
description: "Dimensions"
|
|
155
|
+
});
|
|
156
|
+
const LikeC4Config_Styles_Theme = z__default.object({
|
|
157
|
+
colors: ThemeColorsSchema,
|
|
158
|
+
sizes: z__default.object(t(Sizes, () => DimensionsSchema.optional())).meta({ description: "Map of theme sizes." })
|
|
159
|
+
}).partial().meta({
|
|
160
|
+
id: "ThemeCustomization",
|
|
161
|
+
description: "Theme customization"
|
|
162
|
+
}).transform(({ colors, sizes }) => {
|
|
163
|
+
return exact({
|
|
164
|
+
colors: colors ? exact(colors) : void 0,
|
|
165
|
+
sizes: sizes ? exact(sizes) : void 0
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
const LikeC4Config_Styles_Defaults = z__default.object({
|
|
169
|
+
color,
|
|
170
|
+
opacity,
|
|
171
|
+
border,
|
|
172
|
+
size,
|
|
173
|
+
shape,
|
|
174
|
+
group: z__default.object({
|
|
175
|
+
color,
|
|
176
|
+
opacity,
|
|
177
|
+
border
|
|
178
|
+
}).partial(),
|
|
179
|
+
relationship: z__default.object({
|
|
180
|
+
color,
|
|
181
|
+
line,
|
|
182
|
+
arrow
|
|
183
|
+
}).partial()
|
|
184
|
+
}).partial().meta({
|
|
185
|
+
id: "DefaultStyleValues",
|
|
186
|
+
description: "Override default values for style properties\nThese values will be used if such property is not defined"
|
|
187
|
+
});
|
|
188
|
+
const LikeC4StylesConfigSchema = z__default.object({
|
|
189
|
+
theme: LikeC4Config_Styles_Theme,
|
|
190
|
+
defaults: LikeC4Config_Styles_Defaults
|
|
191
|
+
// customCss: z
|
|
192
|
+
// .array(z.string())
|
|
193
|
+
// .meta({ description: 'List of custom CSS files' }),
|
|
194
|
+
}).partial().meta({
|
|
195
|
+
id: "StylesConfiguration",
|
|
196
|
+
description: "Project styles customization"
|
|
197
|
+
}).transform(
|
|
198
|
+
({ theme, defaults }) => exact({
|
|
199
|
+
defaults: normalizeDefaults(defaults),
|
|
200
|
+
theme
|
|
201
|
+
})
|
|
202
|
+
);
|
|
203
|
+
function normalizeDefaults(defaults) {
|
|
204
|
+
if (!defaults) {
|
|
205
|
+
return void 0;
|
|
206
|
+
}
|
|
207
|
+
const { relationship, group, ...rest } = defaults;
|
|
208
|
+
return exact({
|
|
209
|
+
...rest,
|
|
210
|
+
relationship: relationship && exact(relationship),
|
|
211
|
+
group: group && exact(group)
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
const LikeC4ProjectJsonConfigSchema = z.object({
|
|
216
|
+
name: z.string().nonempty("Project name cannot be empty").refine((value) => value !== "default", {
|
|
217
|
+
abort: true,
|
|
218
|
+
error: 'Project name cannot be "default"'
|
|
219
|
+
}).refine((value) => !value.includes(".") && !value.includes("@") && !value.includes("#"), {
|
|
220
|
+
abort: true,
|
|
221
|
+
error: 'Project name cannot contain ".", "@" or "#", try to use A-z, 0-9, _ and -'
|
|
222
|
+
}).meta({ description: "Project name, must be unique in the workspace" }),
|
|
223
|
+
title: z.string().nonempty("Project title cannot be empty if specified").optional().meta({ description: "A human readable title for the project" }),
|
|
224
|
+
contactPerson: z.string().nonempty("Contact person cannot be empty if specified").optional().meta({ description: "A person who has been involved in creating or maintaining this project" }),
|
|
225
|
+
imageAliases: ImageAliasesSchema.optional(),
|
|
226
|
+
styles: LikeC4StylesConfigSchema.optional(),
|
|
227
|
+
exclude: z.array(z.string()).optional().meta({ description: 'List of file patterns to exclude from the project, default is ["**/node_modules/**"]' })
|
|
228
|
+
}).meta({
|
|
229
|
+
description: "LikeC4 project configuration"
|
|
230
|
+
});
|
|
231
|
+
const FunctionType = z.instanceof(Function);
|
|
232
|
+
const GeneratorsSchema = z.record(z.string(), FunctionType);
|
|
233
|
+
const LikeC4ProjectConfigSchema = LikeC4ProjectJsonConfigSchema.extend({
|
|
234
|
+
generators: GeneratorsSchema.optional()
|
|
235
|
+
});
|
|
236
|
+
function validateProjectConfig(config) {
|
|
237
|
+
const parsed = LikeC4ProjectConfigSchema.safeParse(
|
|
238
|
+
typeof config === "string" ? JSON5.parse(config) : config
|
|
239
|
+
);
|
|
240
|
+
if (!parsed.success) {
|
|
241
|
+
throw new Error("Config validation failed:\n" + z.prettifyError(parsed.error));
|
|
242
|
+
}
|
|
243
|
+
if (parsed.data.imageAliases) {
|
|
244
|
+
validateImageAliases(parsed.data.imageAliases);
|
|
245
|
+
}
|
|
246
|
+
return parsed.data;
|
|
247
|
+
}
|
|
248
|
+
function serializableLikeC4ProjectConfig({
|
|
249
|
+
generators: _,
|
|
250
|
+
// omit
|
|
251
|
+
...config
|
|
252
|
+
}) {
|
|
253
|
+
return LikeC4ProjectJsonConfigSchema.parse(config);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
const configJsonFilenames = [
|
|
257
|
+
".likec4rc",
|
|
258
|
+
".likec4.config.json",
|
|
259
|
+
"likec4.config.json"
|
|
260
|
+
];
|
|
261
|
+
const configNonJsonFilenames = [
|
|
262
|
+
"likec4.config.js",
|
|
263
|
+
"likec4.config.mjs",
|
|
264
|
+
"likec4.config.ts",
|
|
265
|
+
"likec4.config.mts"
|
|
266
|
+
];
|
|
267
|
+
const ConfigFilenames = [
|
|
268
|
+
...configJsonFilenames,
|
|
269
|
+
...configNonJsonFilenames
|
|
270
|
+
];
|
|
271
|
+
function isLikeC4JsonConfig(filename) {
|
|
272
|
+
for (const ext of configJsonFilenames) {
|
|
273
|
+
if (filename.endsWith(ext)) {
|
|
274
|
+
return true;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
return false;
|
|
278
|
+
}
|
|
279
|
+
function isLikeC4NonJsonConfig(filename) {
|
|
280
|
+
for (const ext of configNonJsonFilenames) {
|
|
281
|
+
if (filename.endsWith(ext)) {
|
|
282
|
+
return true;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
return false;
|
|
286
|
+
}
|
|
287
|
+
function isLikeC4Config(filename) {
|
|
288
|
+
return isLikeC4JsonConfig(filename) || isLikeC4NonJsonConfig(filename);
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
function defineConfig(config) {
|
|
292
|
+
return LikeC4ProjectConfigSchema.parse(config);
|
|
293
|
+
}
|
|
294
|
+
function defineGenerators(generators) {
|
|
295
|
+
return GeneratorsSchema.parse(generators);
|
|
296
|
+
}
|
|
297
|
+
function defineThemeColor(colors) {
|
|
298
|
+
return ThemeColorValuesSchema.parse(colors);
|
|
299
|
+
}
|
|
300
|
+
function defineTheme(theme) {
|
|
301
|
+
return LikeC4Config_Styles_Theme.parse(theme);
|
|
302
|
+
}
|
|
303
|
+
function defineStyle(styles) {
|
|
304
|
+
return LikeC4StylesConfigSchema.parse(styles);
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
export { ConfigFilenames as C, isLikeC4JsonConfig as a, isLikeC4NonJsonConfig as b, defineGenerators as c, defineConfig as d, defineStyle as e, defineTheme as f, defineThemeColor as g, isLikeC4Config as i, serializableLikeC4ProjectConfig as s, validateProjectConfig as v };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@likec4/config",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.42.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"homepage": "https://likec4.dev",
|
|
6
6
|
"author": "Denis Davydkov <denis@davydkov.com>",
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
"dist",
|
|
16
16
|
"src",
|
|
17
17
|
"schema.json",
|
|
18
|
+
"**/package.json",
|
|
18
19
|
"!**/*.spec.ts",
|
|
19
20
|
"!**/*.test-d.ts",
|
|
20
21
|
"!**/__*/*",
|
|
@@ -56,40 +57,42 @@
|
|
|
56
57
|
"dependencies": {
|
|
57
58
|
"bundle-require": "^5.1.0",
|
|
58
59
|
"defu": "^6.1.4",
|
|
59
|
-
"json5": "^2.2.3"
|
|
60
|
+
"json5": "^2.2.3",
|
|
61
|
+
"zod": "^3.25.76",
|
|
62
|
+
"type-fest": "^4.41.0"
|
|
60
63
|
},
|
|
61
64
|
"peerDependencies": {
|
|
62
65
|
"esbuild": "^0.25.9",
|
|
63
66
|
"vscode-uri": "3.1.0",
|
|
64
|
-
"@likec4/core": "1.
|
|
65
|
-
"@likec4/log": "1.
|
|
67
|
+
"@likec4/core": "1.42.0",
|
|
68
|
+
"@likec4/log": "1.42.0"
|
|
66
69
|
},
|
|
67
70
|
"peerDependenciesMeta": {
|
|
68
|
-
"@likec4/core": {
|
|
69
|
-
"optional": true
|
|
70
|
-
},
|
|
71
71
|
"vscode-uri": {
|
|
72
72
|
"optional": true
|
|
73
73
|
}
|
|
74
74
|
},
|
|
75
75
|
"devDependencies": {
|
|
76
76
|
"@types/node": "~20.19.11",
|
|
77
|
-
"
|
|
78
|
-
"
|
|
77
|
+
"remeda": "^2.31.1",
|
|
78
|
+
"tsx": "4.20.6",
|
|
79
|
+
"turbo": "2.5.8",
|
|
79
80
|
"typescript": "5.9.2",
|
|
80
81
|
"unbuild": "3.5.0",
|
|
81
|
-
"
|
|
82
|
+
"nano-spawn": "^1.0.3",
|
|
82
83
|
"vitest": "3.2.4",
|
|
83
|
-
"@likec4/
|
|
84
|
+
"@likec4/core": "1.42.0",
|
|
85
|
+
"@likec4/log": "1.42.0",
|
|
86
|
+
"@likec4/devops": "1.41.0",
|
|
87
|
+
"@likec4/tsconfig": "1.42.0"
|
|
84
88
|
},
|
|
85
89
|
"scripts": {
|
|
86
|
-
"generate": "tsx scripts/generate.mts",
|
|
87
90
|
"typecheck": "tsc -b --verbose",
|
|
88
91
|
"build": "unbuild",
|
|
89
92
|
"lint:package": "pnpx publint ./package.tgz",
|
|
90
|
-
"clean": "
|
|
93
|
+
"clean": "likec4ops clean",
|
|
91
94
|
"pack": "pnpm pack"
|
|
92
95
|
},
|
|
93
|
-
"types": "
|
|
94
|
-
"module": "
|
|
96
|
+
"types": "dist/index.d.mts",
|
|
97
|
+
"module": "dist/index.mjs"
|
|
95
98
|
}
|