create-kerf-component 5.0.0-beta.5 → 5.0.0-beta.51

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.
@@ -0,0 +1,330 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://raw.githubusercontent.com/brianwestphal/kerf/main/ui/ai/component-catalog-v2.schema.json",
4
+ "title": "Kerf UI composition catalog v2",
5
+ "type": "object",
6
+ "required": ["schemaVersion", "package", "compatibility", "entries"],
7
+ "properties": {
8
+ "$schema": { "type": "string" },
9
+ "schemaVersion": { "const": 2 },
10
+ "package": { "type": "string", "minLength": 1 },
11
+ "compatibility": {
12
+ "type": "object",
13
+ "required": ["v1Catalog", "identity"],
14
+ "properties": {
15
+ "v1Catalog": { "type": "string", "minLength": 1 },
16
+ "identity": { "const": "package:id" }
17
+ },
18
+ "additionalProperties": false
19
+ },
20
+ "entries": { "type": "array", "items": { "$ref": "#/$defs/entry" } }
21
+ },
22
+ "additionalProperties": false,
23
+ "$defs": {
24
+ "stateAttribute": {
25
+ "type": "object",
26
+ "required": ["name", "on", "helper", "meaning"],
27
+ "properties": {
28
+ "name": {
29
+ "type": "string",
30
+ "minLength": 1,
31
+ "pattern": "^data-[a-z0-9]+(-[a-z0-9]+)*$"
32
+ },
33
+ "on": {
34
+ "type": "string",
35
+ "minLength": 1,
36
+ "description": "The element that carries it: a public class, or the element passed to the helper."
37
+ },
38
+ "helper": {
39
+ "type": "string",
40
+ "minLength": 1,
41
+ "description": "The helper, one of wiring.helpers, that writes it."
42
+ },
43
+ "meaning": {
44
+ "type": "string",
45
+ "minLength": 1,
46
+ "description": "What its presence or value means."
47
+ }
48
+ },
49
+ "additionalProperties": false
50
+ },
51
+ "stringList": {
52
+ "type": "array",
53
+ "items": { "type": "string", "minLength": 1 },
54
+ "uniqueItems": true
55
+ },
56
+ "cardinality": {
57
+ "type": "object",
58
+ "required": ["min", "max"],
59
+ "properties": {
60
+ "min": { "type": "integer", "minimum": 0 },
61
+ "max": {
62
+ "anyOf": [
63
+ { "type": "integer", "minimum": 1 },
64
+ { "const": "unbounded" }
65
+ ]
66
+ }
67
+ },
68
+ "additionalProperties": false
69
+ },
70
+ "zone": {
71
+ "type": "object",
72
+ "required": ["id", "accepts", "cardinality", "exclusiveWith"],
73
+ "properties": {
74
+ "id": { "type": "string", "minLength": 1 },
75
+ "jsx": {
76
+ "type": "object",
77
+ "required": ["prop"],
78
+ "properties": {
79
+ "prop": { "type": "string", "minLength": 1 }
80
+ },
81
+ "additionalProperties": false
82
+ },
83
+ "accepts": { "$ref": "#/$defs/stringList" },
84
+ "cardinality": { "$ref": "#/$defs/cardinality" },
85
+ "exclusiveWith": { "$ref": "#/$defs/stringList" }
86
+ },
87
+ "additionalProperties": false
88
+ },
89
+ "state": {
90
+ "type": "object",
91
+ "required": ["id", "owner", "required"],
92
+ "properties": {
93
+ "id": { "type": "string", "minLength": 1 },
94
+ "owner": { "enum": ["application", "controlled", "component"] },
95
+ "required": { "type": "boolean" }
96
+ },
97
+ "additionalProperties": false
98
+ },
99
+ "diagnostic": {
100
+ "type": "object",
101
+ "required": ["id", "severity", "when", "message"],
102
+ "properties": {
103
+ "id": { "type": "string", "pattern": "^KUI-C[0-9]{3}$" },
104
+ "severity": { "enum": ["error", "warning"] },
105
+ "when": { "type": "string", "minLength": 1 },
106
+ "message": { "type": "string", "minLength": 1 }
107
+ },
108
+ "additionalProperties": false
109
+ },
110
+ "entry": {
111
+ "type": "object",
112
+ "required": [
113
+ "key",
114
+ "package",
115
+ "id",
116
+ "name",
117
+ "kind",
118
+ "source",
119
+ "parents",
120
+ "contexts",
121
+ "zones",
122
+ "children",
123
+ "state",
124
+ "wiring",
125
+ "responsive",
126
+ "layout",
127
+ "accessibility",
128
+ "boundaries",
129
+ "diagnostics",
130
+ "provenance"
131
+ ],
132
+ "properties": {
133
+ "key": { "type": "string", "minLength": 3 },
134
+ "package": { "type": "string", "minLength": 1 },
135
+ "id": { "type": "string", "minLength": 1 },
136
+ "name": { "type": "string", "minLength": 1 },
137
+ "kind": { "enum": ["component", "composition", "recipe"] },
138
+ "purpose": { "type": "string", "minLength": 1 },
139
+ "publicExports": {
140
+ "type": "array",
141
+ "items": {
142
+ "type": "object",
143
+ "required": ["name", "subpath"],
144
+ "properties": {
145
+ "name": { "type": "string", "minLength": 1 },
146
+ "subpath": { "type": "string", "pattern": "^\\." }
147
+ },
148
+ "additionalProperties": false
149
+ },
150
+ "minItems": 1
151
+ },
152
+ "sourceLinks": { "$ref": "#/$defs/stringList" },
153
+ "source": { "type": "string", "minLength": 1 },
154
+ "parents": {
155
+ "type": "object",
156
+ "required": ["mode", "entries"],
157
+ "properties": {
158
+ "mode": { "enum": ["any", "root", "listed"] },
159
+ "entries": { "$ref": "#/$defs/stringList" }
160
+ },
161
+ "additionalProperties": false
162
+ },
163
+ "contexts": { "$ref": "#/$defs/stringList" },
164
+ "zones": { "type": "array", "items": { "$ref": "#/$defs/zone" } },
165
+ "children": {
166
+ "type": "object",
167
+ "required": ["mode", "concepts", "requiredConcepts"],
168
+ "properties": {
169
+ "mode": { "enum": ["any", "none", "listed"] },
170
+ "concepts": { "$ref": "#/$defs/stringList" },
171
+ "requiredConcepts": { "$ref": "#/$defs/stringList" }
172
+ },
173
+ "additionalProperties": false
174
+ },
175
+ "state": { "type": "array", "items": { "$ref": "#/$defs/state" } },
176
+ "wiring": {
177
+ "type": "object",
178
+ "required": ["required", "helpers", "obligations"],
179
+ "properties": {
180
+ "required": { "type": "boolean" },
181
+ "helpers": { "$ref": "#/$defs/stringList" },
182
+ "obligations": { "$ref": "#/$defs/stringList" },
183
+ "stateAttributes": {
184
+ "description": "Wiring-owned state attributes: data-* attributes a wiring helper writes at runtime, which the application must not render, remove, or treat as its own state. Optional for extension catalogs; first-party entries always list it, empty when their helpers write none.",
185
+ "type": "array",
186
+ "items": { "$ref": "#/$defs/stateAttribute" }
187
+ }
188
+ },
189
+ "additionalProperties": false
190
+ },
191
+ "responsive": {
192
+ "type": "object",
193
+ "required": ["owner", "behaviors"],
194
+ "properties": {
195
+ "owner": {
196
+ "enum": ["application", "component", "shared", "not-applicable"]
197
+ },
198
+ "behaviors": { "$ref": "#/$defs/stringList" }
199
+ },
200
+ "additionalProperties": false
201
+ },
202
+ "layout": {
203
+ "type": "object",
204
+ "required": ["roles", "geometry"],
205
+ "properties": {
206
+ "roles": { "$ref": "#/$defs/stringList" },
207
+ "geometry": {
208
+ "type": "object",
209
+ "required": ["margin", "border", "padding"],
210
+ "properties": {
211
+ "margin": {
212
+ "enum": [
213
+ "self",
214
+ "parent",
215
+ "child",
216
+ "none",
217
+ "conditional",
218
+ "composed"
219
+ ]
220
+ },
221
+ "border": {
222
+ "enum": [
223
+ "self",
224
+ "parent",
225
+ "child",
226
+ "none",
227
+ "conditional",
228
+ "composed"
229
+ ]
230
+ },
231
+ "padding": {
232
+ "enum": [
233
+ "self",
234
+ "parent",
235
+ "child",
236
+ "none",
237
+ "conditional",
238
+ "composed"
239
+ ]
240
+ },
241
+ "notes": { "$ref": "#/$defs/stringList" }
242
+ },
243
+ "additionalProperties": false
244
+ }
245
+ },
246
+ "additionalProperties": false
247
+ },
248
+ "accessibility": {
249
+ "type": "object",
250
+ "required": ["obligations"],
251
+ "properties": { "obligations": { "$ref": "#/$defs/stringList" } },
252
+ "additionalProperties": false
253
+ },
254
+ "cssValueProps": {
255
+ "type": "array",
256
+ "items": { "$ref": "#/$defs/cssValueProp" }
257
+ },
258
+ "boundaries": {
259
+ "type": "object",
260
+ "required": ["rootClass", "publicClasses", "publicTokens"],
261
+ "properties": {
262
+ "rootClass": {
263
+ "oneOf": [
264
+ { "type": "string", "minLength": 1 },
265
+ { "type": "null" }
266
+ ]
267
+ },
268
+ "publicClasses": { "$ref": "#/$defs/stringList" },
269
+ "publicTokens": { "$ref": "#/$defs/stringList" },
270
+ "publicParts": { "$ref": "#/$defs/stringList" }
271
+ },
272
+ "additionalProperties": false
273
+ },
274
+ "diagnostics": {
275
+ "type": "array",
276
+ "items": { "$ref": "#/$defs/diagnostic" }
277
+ },
278
+ "provenance": {
279
+ "type": "object",
280
+ "required": ["selection", "composition"],
281
+ "properties": {
282
+ "selection": { "type": "string", "minLength": 1 },
283
+ "composition": { "type": "string", "minLength": 1 }
284
+ },
285
+ "additionalProperties": false
286
+ }
287
+ },
288
+ "additionalProperties": false
289
+ },
290
+ "cssValueProp": {
291
+ "type": "object",
292
+ "required": [
293
+ "path",
294
+ "grammar",
295
+ "helpers",
296
+ "shorthands",
297
+ "canonicalShorthands",
298
+ "exceptionalShorthands",
299
+ "rawPolicy",
300
+ "examples"
301
+ ],
302
+ "properties": {
303
+ "path": {
304
+ "type": "string",
305
+ "pattern": "^[A-Za-z][A-Za-z0-9]*(?:\\[\\]\\.[A-Za-z][A-Za-z0-9]*)?$"
306
+ },
307
+ "grammar": {
308
+ "enum": [
309
+ "length",
310
+ "size",
311
+ "flex",
312
+ "color",
313
+ "declarations",
314
+ "media-query",
315
+ "pixels"
316
+ ]
317
+ },
318
+ "helpers": { "$ref": "#/$defs/stringList" },
319
+ "nonStandaloneHelpers": { "$ref": "#/$defs/stringList" },
320
+ "shorthands": { "$ref": "#/$defs/stringList" },
321
+ "canonicalShorthands": { "$ref": "#/$defs/stringList" },
322
+ "exceptionalShorthands": { "$ref": "#/$defs/stringList" },
323
+ "rawPolicy": { "enum": ["forbid", "allow", "unsafe-only"] },
324
+ "unsafeHelper": { "type": "string", "minLength": 1 },
325
+ "examples": { "$ref": "#/$defs/stringList" }
326
+ },
327
+ "additionalProperties": false
328
+ }
329
+ }
330
+ }
@@ -0,0 +1,261 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://raw.githubusercontent.com/brianwestphal/kerf/main/create-kerf-component/component-metadata.schema.json",
4
+ "title": "Kerf consumer component metadata source",
5
+ "type": "object",
6
+ "required": ["schemaVersion", "components"],
7
+ "properties": {
8
+ "$schema": { "type": "string" },
9
+ "schemaVersion": { "const": 1 },
10
+ "v1Catalog": { "type": "string", "minLength": 1 },
11
+ "components": {
12
+ "type": "array",
13
+ "items": { "$ref": "#/$defs/component" }
14
+ }
15
+ },
16
+ "additionalProperties": false,
17
+ "$defs": {
18
+ "stateAttribute": {
19
+ "type": "object",
20
+ "required": ["name", "on", "helper", "meaning"],
21
+ "properties": {
22
+ "name": {
23
+ "type": "string",
24
+ "minLength": 1,
25
+ "pattern": "^data-[a-z0-9]+(-[a-z0-9]+)*$"
26
+ },
27
+ "on": {
28
+ "type": "string",
29
+ "minLength": 1,
30
+ "description": "The element that carries it: a public class, or the element passed to the helper."
31
+ },
32
+ "helper": {
33
+ "type": "string",
34
+ "minLength": 1,
35
+ "description": "The helper, one of wiring.helpers, that writes it."
36
+ },
37
+ "meaning": {
38
+ "type": "string",
39
+ "minLength": 1,
40
+ "description": "What its presence or value means."
41
+ }
42
+ },
43
+ "additionalProperties": false
44
+ },
45
+ "stringList": {
46
+ "type": "array",
47
+ "items": { "type": "string", "minLength": 1 },
48
+ "uniqueItems": true
49
+ },
50
+ "cardinality": {
51
+ "type": "object",
52
+ "required": ["min", "max"],
53
+ "properties": {
54
+ "min": { "type": "integer", "minimum": 0 },
55
+ "max": {
56
+ "anyOf": [
57
+ { "type": "integer", "minimum": 1 },
58
+ { "const": "unbounded" }
59
+ ]
60
+ }
61
+ },
62
+ "additionalProperties": false
63
+ },
64
+ "diagnostic": {
65
+ "type": "object",
66
+ "required": ["id", "severity", "when", "message"],
67
+ "properties": {
68
+ "id": { "type": "string", "pattern": "^KUI-C[0-9]{3}$" },
69
+ "severity": { "enum": ["error", "warning"] },
70
+ "when": { "type": "string", "minLength": 1 },
71
+ "message": { "type": "string", "minLength": 1 }
72
+ },
73
+ "additionalProperties": false
74
+ },
75
+ "component": {
76
+ "type": "object",
77
+ "required": [
78
+ "id",
79
+ "name",
80
+ "kind",
81
+ "purpose",
82
+ "source",
83
+ "publicExports",
84
+ "sourceLinks",
85
+ "composition",
86
+ "boundaries",
87
+ "accessibility",
88
+ "diagnostics",
89
+ "provenance"
90
+ ],
91
+ "properties": {
92
+ "id": { "type": "string", "minLength": 1 },
93
+ "name": { "type": "string", "minLength": 1 },
94
+ "kind": { "enum": ["component", "composition", "recipe"] },
95
+ "purpose": { "type": "string", "minLength": 1 },
96
+ "source": { "type": "string", "minLength": 1 },
97
+ "publicExports": {
98
+ "type": "array",
99
+ "minItems": 1,
100
+ "items": {
101
+ "type": "object",
102
+ "required": ["name", "subpath"],
103
+ "properties": {
104
+ "name": { "type": "string", "minLength": 1 },
105
+ "subpath": { "type": "string", "pattern": "^\\." }
106
+ },
107
+ "additionalProperties": false
108
+ }
109
+ },
110
+ "sourceLinks": { "$ref": "#/$defs/stringList" },
111
+ "composition": { "$ref": "#/$defs/composition" },
112
+ "boundaries": {
113
+ "type": "object",
114
+ "required": ["rootClass", "publicClasses", "publicTokens"],
115
+ "properties": {
116
+ "rootClass": {
117
+ "oneOf": [
118
+ { "type": "string", "minLength": 1 },
119
+ { "type": "null" }
120
+ ]
121
+ },
122
+ "publicClasses": { "$ref": "#/$defs/stringList" },
123
+ "publicTokens": { "$ref": "#/$defs/stringList" }
124
+ },
125
+ "additionalProperties": false
126
+ },
127
+ "accessibility": {
128
+ "type": "object",
129
+ "required": ["obligations"],
130
+ "properties": { "obligations": { "$ref": "#/$defs/stringList" } },
131
+ "additionalProperties": false
132
+ },
133
+ "diagnostics": {
134
+ "type": "array",
135
+ "items": { "$ref": "#/$defs/diagnostic" }
136
+ },
137
+ "provenance": {
138
+ "type": "object",
139
+ "required": ["selection", "composition"],
140
+ "properties": {
141
+ "selection": { "type": "string", "minLength": 1 },
142
+ "composition": { "type": "string", "minLength": 1 }
143
+ },
144
+ "additionalProperties": false
145
+ }
146
+ },
147
+ "additionalProperties": false
148
+ },
149
+ "composition": {
150
+ "type": "object",
151
+ "required": [
152
+ "parents",
153
+ "contexts",
154
+ "zones",
155
+ "children",
156
+ "state",
157
+ "wiring",
158
+ "responsive",
159
+ "layout"
160
+ ],
161
+ "properties": {
162
+ "parents": {
163
+ "type": "object",
164
+ "required": ["mode", "entries"],
165
+ "properties": {
166
+ "mode": { "enum": ["any", "root", "listed"] },
167
+ "entries": { "$ref": "#/$defs/stringList" }
168
+ },
169
+ "additionalProperties": false
170
+ },
171
+ "contexts": { "$ref": "#/$defs/stringList" },
172
+ "zones": {
173
+ "type": "array",
174
+ "items": {
175
+ "type": "object",
176
+ "required": ["id", "accepts", "cardinality", "exclusiveWith"],
177
+ "properties": {
178
+ "id": { "type": "string", "minLength": 1 },
179
+ "accepts": { "$ref": "#/$defs/stringList" },
180
+ "cardinality": { "$ref": "#/$defs/cardinality" },
181
+ "exclusiveWith": { "$ref": "#/$defs/stringList" }
182
+ },
183
+ "additionalProperties": false
184
+ }
185
+ },
186
+ "children": {
187
+ "type": "object",
188
+ "required": ["mode", "concepts", "requiredConcepts"],
189
+ "properties": {
190
+ "mode": { "enum": ["any", "none", "listed"] },
191
+ "concepts": { "$ref": "#/$defs/stringList" },
192
+ "requiredConcepts": { "$ref": "#/$defs/stringList" }
193
+ },
194
+ "additionalProperties": false
195
+ },
196
+ "state": {
197
+ "type": "array",
198
+ "items": {
199
+ "type": "object",
200
+ "required": ["id", "owner", "required"],
201
+ "properties": {
202
+ "id": { "type": "string", "minLength": 1 },
203
+ "owner": { "enum": ["application", "controlled", "component"] },
204
+ "required": { "type": "boolean" }
205
+ },
206
+ "additionalProperties": false
207
+ }
208
+ },
209
+ "wiring": {
210
+ "type": "object",
211
+ "required": ["required", "helpers", "obligations"],
212
+ "properties": {
213
+ "required": { "type": "boolean" },
214
+ "helpers": { "$ref": "#/$defs/stringList" },
215
+ "obligations": { "$ref": "#/$defs/stringList" },
216
+ "stateAttributes": {
217
+ "description": "Optional wiring-owned state attributes: data-* attributes a wiring helper writes at runtime, which the application must not render, remove, or treat as its own state.",
218
+ "type": "array",
219
+ "items": { "$ref": "#/$defs/stateAttribute" }
220
+ }
221
+ },
222
+ "additionalProperties": false
223
+ },
224
+ "responsive": {
225
+ "type": "object",
226
+ "required": ["owner", "behaviors"],
227
+ "properties": {
228
+ "owner": {
229
+ "enum": ["application", "component", "shared", "not-applicable"]
230
+ },
231
+ "behaviors": { "$ref": "#/$defs/stringList" }
232
+ },
233
+ "additionalProperties": false
234
+ },
235
+ "layout": {
236
+ "type": "object",
237
+ "required": ["roles", "geometry"],
238
+ "properties": {
239
+ "roles": { "$ref": "#/$defs/stringList" },
240
+ "geometry": {
241
+ "type": "object",
242
+ "required": ["margin", "border", "padding"],
243
+ "properties": {
244
+ "margin": { "$ref": "#/$defs/geometryOwner" },
245
+ "border": { "$ref": "#/$defs/geometryOwner" },
246
+ "padding": { "$ref": "#/$defs/geometryOwner" },
247
+ "notes": { "$ref": "#/$defs/stringList" }
248
+ },
249
+ "additionalProperties": false
250
+ }
251
+ },
252
+ "additionalProperties": false
253
+ }
254
+ },
255
+ "additionalProperties": false
256
+ },
257
+ "geometryOwner": {
258
+ "enum": ["self", "parent", "child", "none", "conditional", "composed"]
259
+ }
260
+ }
261
+ }
package/index.js CHANGED
@@ -17,8 +17,18 @@
17
17
  // kerf-component` alone just works. No third-party dependencies — the
18
18
  // initializer is plain Node so `npm create` runs it with zero install latency.
19
19
 
20
- import { cpSync, existsSync, mkdirSync, readdirSync, readFileSync, renameSync, writeFileSync } from 'node:fs';
20
+ import {
21
+ copyFileSync,
22
+ cpSync,
23
+ existsSync,
24
+ mkdirSync,
25
+ readdirSync,
26
+ readFileSync,
27
+ renameSync,
28
+ writeFileSync,
29
+ } from 'node:fs';
21
30
  import { basename, dirname, join, resolve } from 'node:path';
31
+ import process from 'node:process';
22
32
  import { createInterface } from 'node:readline/promises';
23
33
  import { fileURLToPath } from 'node:url';
24
34
 
@@ -41,7 +51,9 @@ const USAGE =
41
51
  async function promptForTarget() {
42
52
  const rl = createInterface({ input: process.stdin, output: process.stdout });
43
53
  try {
44
- const answer = await rl.question(`Directory (\`.\` for current) [${DEFAULT_NAME}]: `);
54
+ const answer = await rl.question(
55
+ `Directory (\`.\` for current) [${DEFAULT_NAME}]: `,
56
+ );
45
57
  return answer.trim() || DEFAULT_NAME;
46
58
  } finally {
47
59
  rl.close();
@@ -117,6 +129,19 @@ async function main(argv) {
117
129
  // verbatim (`_gitignore` → `.gitignore`).
118
130
  mkdirSync(targetDir, { recursive: true });
119
131
  cpSync(TEMPLATE_DIR, targetDir, { recursive: true });
132
+ mkdirSync(join(targetDir, 'scripts'), { recursive: true });
133
+ copyFileSync(
134
+ join(dirname(fileURLToPath(import.meta.url)), 'catalog.js'),
135
+ join(targetDir, 'scripts', 'kerf-component-catalog.mjs'),
136
+ );
137
+ for (const schema of [
138
+ 'component-metadata.schema.json',
139
+ 'component-catalog-v2.schema.json',
140
+ ])
141
+ copyFileSync(
142
+ join(dirname(fileURLToPath(import.meta.url)), schema),
143
+ join(targetDir, 'scripts', schema),
144
+ );
120
145
 
121
146
  for (const file of walk(targetDir)) {
122
147
  const text = readFileSync(file, 'utf8');
@@ -136,8 +161,9 @@ async function main(argv) {
136
161
  cdHint +
137
162
  ' npm install\n' +
138
163
  ' npm run build # tsup → ESM + .d.ts (kerfjs stays external)\n' +
164
+ ' npm run catalog:check # verify AI metadata and public exports\n' +
139
165
  ' npm run typecheck\n\n' +
140
- 'Edit src/counter.tsx, then publish with `npm publish --access public`.\n',
166
+ 'Edit src/counter.tsx and kerf.components.json, then publish with `npm publish --access public`.\n',
141
167
  );
142
168
  }
143
169
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-kerf-component",
3
- "version": "5.0.0-beta.5",
3
+ "version": "5.0.0-beta.51",
4
4
  "description": "Scaffold a publishable kerf component package that already follows kerf's hard packaging rules.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -26,15 +26,22 @@
26
26
  "node": ">=18.0.0"
27
27
  },
28
28
  "bin": {
29
- "create-kerf-component": "index.js"
29
+ "create-kerf-component": "index.js",
30
+ "kerf-component-catalog": "catalog.js"
30
31
  },
31
32
  "files": [
32
33
  "index.js",
34
+ "catalog.js",
35
+ "component-metadata.schema.json",
36
+ "component-catalog-v2.schema.json",
33
37
  "template",
34
38
  "README.md",
35
39
  "LICENSE"
36
40
  ],
37
41
  "scripts": {
38
42
  "test": "node --test tests/*.test.js"
43
+ },
44
+ "dependencies": {
45
+ "typescript": "^5.0.0 || ^6.0.0"
39
46
  }
40
47
  }