@oddkin/analyzer 0.0.0-stage → 1.0.0-beta.1
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/LICENSE +21 -0
- package/README.md +40 -2
- package/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +65 -0
- package/dist/bin.js.map +1 -0
- package/dist/contracts.d.ts +29 -0
- package/dist/contracts.d.ts.map +1 -0
- package/dist/contracts.js +57 -0
- package/dist/contracts.js.map +1 -0
- package/dist/docs.d.ts +34 -0
- package/dist/docs.d.ts.map +1 -0
- package/dist/docs.js +63 -0
- package/dist/docs.js.map +1 -0
- package/dist/emit.d.ts +38 -0
- package/dist/emit.d.ts.map +1 -0
- package/dist/emit.js +406 -0
- package/dist/emit.js.map +1 -0
- package/dist/examples.d.ts +35 -0
- package/dist/examples.d.ts.map +1 -0
- package/dist/examples.js +345 -0
- package/dist/examples.js.map +1 -0
- package/dist/extract.d.ts +208 -0
- package/dist/extract.d.ts.map +1 -0
- package/dist/extract.js +1570 -0
- package/dist/extract.js.map +1 -0
- package/dist/foundations.d.ts +36 -0
- package/dist/foundations.d.ts.map +1 -0
- package/dist/foundations.js +108 -0
- package/dist/foundations.js.map +1 -0
- package/dist/history.d.ts +10 -0
- package/dist/history.d.ts.map +1 -0
- package/dist/history.js +62 -0
- package/dist/history.js.map +1 -0
- package/dist/impact-bin.d.ts +3 -0
- package/dist/impact-bin.d.ts.map +1 -0
- package/dist/impact-bin.js +7 -0
- package/dist/impact-bin.js.map +1 -0
- package/dist/impact-cli.d.ts +8 -0
- package/dist/impact-cli.d.ts.map +1 -0
- package/dist/impact-cli.js +121 -0
- package/dist/impact-cli.js.map +1 -0
- package/dist/impact.d.ts +282 -0
- package/dist/impact.d.ts.map +1 -0
- package/dist/impact.js +744 -0
- package/dist/impact.js.map +1 -0
- package/dist/index.d.ts +82 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +228 -0
- package/dist/index.js.map +1 -0
- package/dist/kit/agents-md.d.ts +10 -0
- package/dist/kit/agents-md.d.ts.map +1 -0
- package/dist/kit/agents-md.js +64 -0
- package/dist/kit/agents-md.js.map +1 -0
- package/dist/kit/cli.d.ts +8 -0
- package/dist/kit/cli.d.ts.map +1 -0
- package/dist/kit/cli.js +214 -0
- package/dist/kit/cli.js.map +1 -0
- package/dist/kit/context.d.ts +104 -0
- package/dist/kit/context.d.ts.map +1 -0
- package/dist/kit/context.js +323 -0
- package/dist/kit/context.js.map +1 -0
- package/dist/kit/index.d.ts +12 -0
- package/dist/kit/index.d.ts.map +1 -0
- package/dist/kit/index.js +12 -0
- package/dist/kit/index.js.map +1 -0
- package/dist/kit/kit.d.ts +62 -0
- package/dist/kit/kit.d.ts.map +1 -0
- package/dist/kit/kit.js +626 -0
- package/dist/kit/kit.js.map +1 -0
- package/dist/kit/llms.d.ts +22 -0
- package/dist/kit/llms.d.ts.map +1 -0
- package/dist/kit/llms.js +58 -0
- package/dist/kit/llms.js.map +1 -0
- package/dist/kit/package-kit.d.ts +18 -0
- package/dist/kit/package-kit.d.ts.map +1 -0
- package/dist/kit/package-kit.js +224 -0
- package/dist/kit/package-kit.js.map +1 -0
- package/dist/kit-bin.d.ts +3 -0
- package/dist/kit-bin.d.ts.map +1 -0
- package/dist/kit-bin.js +7 -0
- package/dist/kit-bin.js.map +1 -0
- package/dist/published.d.ts +43 -0
- package/dist/published.d.ts.map +1 -0
- package/dist/published.js +62 -0
- package/dist/published.js.map +1 -0
- package/dist/references.d.ts +70 -0
- package/dist/references.d.ts.map +1 -0
- package/dist/references.js +255 -0
- package/dist/references.js.map +1 -0
- package/dist/style-mappings.d.ts +46 -0
- package/dist/style-mappings.d.ts.map +1 -0
- package/dist/style-mappings.js +246 -0
- package/dist/style-mappings.js.map +1 -0
- package/dist/stylesheets.d.ts +56 -0
- package/dist/stylesheets.d.ts.map +1 -0
- package/dist/stylesheets.js +83 -0
- package/dist/stylesheets.js.map +1 -0
- package/dist/verification.d.ts +62 -0
- package/dist/verification.d.ts.map +1 -0
- package/dist/verification.js +115 -0
- package/dist/verification.js.map +1 -0
- package/package.json +45 -4
package/dist/emit.js
ADDED
|
@@ -0,0 +1,406 @@
|
|
|
1
|
+
const byName = (a, b) => a.name < b.name ? -1 : a.name > b.name ? 1 : 0;
|
|
2
|
+
const optional = (key, value) => value === undefined || value === false || (Array.isArray(value) && value.length === 0)
|
|
3
|
+
? {}
|
|
4
|
+
: { [key]: value };
|
|
5
|
+
const knownDefault = (value) => (value.known ? value.value : undefined);
|
|
6
|
+
const categoryId = (label) => `category:${label.toLowerCase().replace(/\s+/g, '-')}`;
|
|
7
|
+
const authoredCategory = (component) => {
|
|
8
|
+
const tag = component?.tags['category']?.[0];
|
|
9
|
+
const label = tag?.value.trim();
|
|
10
|
+
return tag && label ? { label, location: tag.location } : undefined;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Category records from the `@category` tags of registered components: the label is the first
|
|
14
|
+
* spelling in tag order, and a different spelling of the same id is reported, not merged.
|
|
15
|
+
*/
|
|
16
|
+
export function categoryRecords(extraction) {
|
|
17
|
+
const byClass = new Map(extraction.components.map((c) => [`${c.file}#${c.name}`, c]));
|
|
18
|
+
const first = new Map();
|
|
19
|
+
const diagnostics = [];
|
|
20
|
+
for (const registration of [...extraction.registrations].sort((a, b) => a.tag < b.tag ? -1 : 1)) {
|
|
21
|
+
const authored = authoredCategory(byClass.get(`${registration.classFile}#${registration.className}`));
|
|
22
|
+
if (!authored)
|
|
23
|
+
continue;
|
|
24
|
+
const { label } = authored;
|
|
25
|
+
const id = categoryId(label);
|
|
26
|
+
const known = first.get(id);
|
|
27
|
+
if (!known)
|
|
28
|
+
first.set(id, { label, tag: registration.tag });
|
|
29
|
+
else if (known.label !== label)
|
|
30
|
+
diagnostics.push({
|
|
31
|
+
code: 'analyzer.category.conflict',
|
|
32
|
+
severity: 'warning',
|
|
33
|
+
message: `<${registration.tag}> writes @category "${label}", but <${known.tag}> writes the same category as "${known.label}"; the label "${known.label}" is used.`,
|
|
34
|
+
source: authored.location,
|
|
35
|
+
suggestion: `Write @category ${known.label}.`,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
const categories = Object.fromEntries([...first]
|
|
39
|
+
.sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0))
|
|
40
|
+
.map(([id, { label }]) => [id, { label }]));
|
|
41
|
+
return { categories, diagnostics };
|
|
42
|
+
}
|
|
43
|
+
export function buildManifest(extraction, paths) {
|
|
44
|
+
const tags = new Map(extraction.registrations.map((r) => [`${r.classFile}#${r.className}`, r.tag]));
|
|
45
|
+
const modules = new Map();
|
|
46
|
+
const moduleEntry = (path) => {
|
|
47
|
+
let entry = modules.get(path);
|
|
48
|
+
if (!entry) {
|
|
49
|
+
entry = { declarations: [], exports: [] };
|
|
50
|
+
modules.set(path, entry);
|
|
51
|
+
}
|
|
52
|
+
return entry;
|
|
53
|
+
};
|
|
54
|
+
const reference = (from) => from
|
|
55
|
+
? from.package
|
|
56
|
+
? { name: from.name, package: from.package, module: from.file }
|
|
57
|
+
: { name: from.name, module: paths.moduleOf(from.file) }
|
|
58
|
+
: undefined;
|
|
59
|
+
for (const component of extraction.components) {
|
|
60
|
+
const module = paths.moduleOf(component.file);
|
|
61
|
+
const tagName = tags.get(`${component.file}#${component.name}`);
|
|
62
|
+
const superclass = component.superclass.package
|
|
63
|
+
? { name: component.superclass.name, package: component.superclass.package }
|
|
64
|
+
: {
|
|
65
|
+
name: component.superclass.name,
|
|
66
|
+
module: paths.moduleOf(component.superclass.file),
|
|
67
|
+
};
|
|
68
|
+
const fields = component.properties.map((p) => ({
|
|
69
|
+
kind: 'field',
|
|
70
|
+
name: p.name,
|
|
71
|
+
type: { text: p.type },
|
|
72
|
+
...optional('default', knownDefault(p.default)),
|
|
73
|
+
...optional('description', p.description),
|
|
74
|
+
...optional('deprecated', p.deprecated && (p.deprecated.reason ?? true)),
|
|
75
|
+
...optional('attribute', p.attribute ?? undefined),
|
|
76
|
+
...optional('reflects', p.reflects || undefined),
|
|
77
|
+
...optional('inheritedFrom', reference(p.inheritedFrom)),
|
|
78
|
+
}));
|
|
79
|
+
const members = component.members.map((m) => m.kind === 'field'
|
|
80
|
+
? {
|
|
81
|
+
kind: 'field',
|
|
82
|
+
name: m.name,
|
|
83
|
+
type: { text: m.type },
|
|
84
|
+
...optional('readonly', m.readonly || undefined),
|
|
85
|
+
...optional('description', m.description),
|
|
86
|
+
}
|
|
87
|
+
: { kind: 'method', name: m.name, ...optional('description', m.description) });
|
|
88
|
+
const declaration = {
|
|
89
|
+
kind: 'class',
|
|
90
|
+
name: component.name,
|
|
91
|
+
...optional('description', component.description),
|
|
92
|
+
...optional('deprecated', component.tags['deprecated'] && (component.tags['deprecated'][0]?.value || true)),
|
|
93
|
+
customElement: true,
|
|
94
|
+
...optional('tagName', tagName),
|
|
95
|
+
superclass,
|
|
96
|
+
members: [...fields, ...members],
|
|
97
|
+
attributes: component.properties
|
|
98
|
+
.filter((p) => p.attribute)
|
|
99
|
+
.map((p) => ({
|
|
100
|
+
name: p.attribute,
|
|
101
|
+
type: { text: p.type },
|
|
102
|
+
fieldName: p.name,
|
|
103
|
+
...optional('default', knownDefault(p.default)),
|
|
104
|
+
...optional('description', p.description),
|
|
105
|
+
...optional('deprecated', p.deprecated && (p.deprecated.reason ?? true)),
|
|
106
|
+
...optional('inheritedFrom', reference(p.inheritedFrom)),
|
|
107
|
+
})),
|
|
108
|
+
events: component.events.map((e) => ({
|
|
109
|
+
name: e.name,
|
|
110
|
+
type: { text: e.detailType === 'void' ? 'CustomEvent' : `CustomEvent<${e.detailType}>` },
|
|
111
|
+
...optional('description', e.description),
|
|
112
|
+
...optional('deprecated', e.deprecated && (e.deprecated.reason ?? true)),
|
|
113
|
+
...optional('inheritedFrom', reference(e.inheritedFrom)),
|
|
114
|
+
})),
|
|
115
|
+
slots: [...component.slots]
|
|
116
|
+
.sort(byName)
|
|
117
|
+
.map((s) => ({ name: s.name, description: s.description ?? '' })),
|
|
118
|
+
cssParts: [...component.parts]
|
|
119
|
+
.sort(byName)
|
|
120
|
+
.map((s) => ({ name: s.name, description: s.description ?? '' })),
|
|
121
|
+
cssProperties: [...component.cssProperties]
|
|
122
|
+
.sort(byName)
|
|
123
|
+
.map((s) => ({ name: s.name, description: s.description ?? '' })),
|
|
124
|
+
cssStates: [...component.cssStates]
|
|
125
|
+
.sort(byName)
|
|
126
|
+
.map((s) => ({ name: s.name, description: s.description ?? '' })),
|
|
127
|
+
};
|
|
128
|
+
const entry = moduleEntry(module);
|
|
129
|
+
entry.declarations.push(declaration);
|
|
130
|
+
if (component.exported)
|
|
131
|
+
entry.exports.push({
|
|
132
|
+
kind: 'js',
|
|
133
|
+
name: component.name,
|
|
134
|
+
declaration: { name: component.name, module },
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
for (const registration of extraction.registrations) {
|
|
138
|
+
moduleEntry(paths.moduleOf(registration.file)).exports.push({
|
|
139
|
+
kind: 'custom-element-definition',
|
|
140
|
+
name: registration.tag,
|
|
141
|
+
declaration: { name: registration.className, module: paths.moduleOf(registration.classFile) },
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
// Re-exports: a module exporting a component class declared in another module.
|
|
145
|
+
const declaredIn = new Map();
|
|
146
|
+
for (const component of extraction.components)
|
|
147
|
+
declaredIn.set(component.name, [...(declaredIn.get(component.name) ?? []), component.file]);
|
|
148
|
+
for (const [file, names] of [...extraction.exports].sort(([a], [b]) => (a < b ? -1 : 1))) {
|
|
149
|
+
for (const name of names) {
|
|
150
|
+
const sources = declaredIn.get(name);
|
|
151
|
+
if (!sources || sources.length !== 1 || sources[0] === file)
|
|
152
|
+
continue;
|
|
153
|
+
moduleEntry(paths.moduleOf(file)).exports.push({
|
|
154
|
+
kind: 'js',
|
|
155
|
+
name,
|
|
156
|
+
declaration: { name, module: paths.moduleOf(sources[0]) },
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return {
|
|
161
|
+
schemaVersion: '2.1.0',
|
|
162
|
+
modules: [...modules.entries()]
|
|
163
|
+
.sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0))
|
|
164
|
+
.map(([path, entry]) => ({
|
|
165
|
+
kind: 'javascript-module',
|
|
166
|
+
path,
|
|
167
|
+
declarations: entry.declarations,
|
|
168
|
+
exports: entry.exports,
|
|
169
|
+
})),
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
const definitionOf = (definition, paths) => {
|
|
173
|
+
if (!definition)
|
|
174
|
+
return undefined;
|
|
175
|
+
const ref = (source) => source.package
|
|
176
|
+
? { package: source.package, module: source.file, name: source.name }
|
|
177
|
+
: { module: source.external ? source.file : paths.moduleOf(source.file), name: source.name };
|
|
178
|
+
return {
|
|
179
|
+
...optional('ref', definition.ref && ref(definition.ref)),
|
|
180
|
+
...optional('extends', definition.extends && `component:${definition.extends}`),
|
|
181
|
+
...optional('template', definition.template && ref(definition.template)),
|
|
182
|
+
...optional('styles', definition.styles.map(ref)),
|
|
183
|
+
...optional('dependencies', Object.keys(definition.dependencies).length
|
|
184
|
+
? Object.fromEntries(Object.entries(definition.dependencies)
|
|
185
|
+
.sort(([a], [b]) => (a < b ? -1 : 1))
|
|
186
|
+
.map(([role, tag]) => [role, `component:${tag}`]))
|
|
187
|
+
: undefined),
|
|
188
|
+
};
|
|
189
|
+
};
|
|
190
|
+
const FACT_TAGS = {
|
|
191
|
+
a11y: 'a11y',
|
|
192
|
+
keyboard: 'keyboard',
|
|
193
|
+
useFor: 'useFor',
|
|
194
|
+
notFor: 'notFor',
|
|
195
|
+
limitation: 'limitations',
|
|
196
|
+
};
|
|
197
|
+
/**
|
|
198
|
+
* Deprecations (component, properties, events) with their authored replacement and migration,
|
|
199
|
+
* `@since`, and the customization paths: authored ladder levels (unknown when not declared) and
|
|
200
|
+
* the documented variables, parts, and slots that level 2 works through.
|
|
201
|
+
*/
|
|
202
|
+
function lifecycle(component, tag) {
|
|
203
|
+
const authored = (location) => location
|
|
204
|
+
? {
|
|
205
|
+
provenance: 'authored',
|
|
206
|
+
source: { file: location.file, line: location.line, column: location.column },
|
|
207
|
+
}
|
|
208
|
+
: { provenance: 'authored' };
|
|
209
|
+
const first = (name) => component.tags[name]?.[0];
|
|
210
|
+
// A replacement is written as a tag, a member name, or a stable id; ids are kept as written.
|
|
211
|
+
const id = (value, kind) => !value
|
|
212
|
+
? undefined
|
|
213
|
+
: value.includes(':')
|
|
214
|
+
? value
|
|
215
|
+
: kind === 'component'
|
|
216
|
+
? `component:${value.replace(/^<|>$/g, '')}`
|
|
217
|
+
: `${kind}:${tag}#${value}`;
|
|
218
|
+
const entry = (subject, kind, d) => ({
|
|
219
|
+
id: subject,
|
|
220
|
+
...optional('reason', d.reason),
|
|
221
|
+
...optional('replacement', id(d.replacement, kind)),
|
|
222
|
+
...optional('migration', d.migration),
|
|
223
|
+
...authored(d.location),
|
|
224
|
+
});
|
|
225
|
+
const deprecated = first('deprecated');
|
|
226
|
+
const deprecations = [
|
|
227
|
+
...(deprecated
|
|
228
|
+
? [
|
|
229
|
+
entry(`component:${tag}`, 'component', {
|
|
230
|
+
...(deprecated.value ? { reason: deprecated.value } : {}),
|
|
231
|
+
...(first('replacement') ? { replacement: first('replacement').value } : {}),
|
|
232
|
+
...(first('migration') ? { migration: first('migration').value } : {}),
|
|
233
|
+
location: deprecated.location,
|
|
234
|
+
}),
|
|
235
|
+
]
|
|
236
|
+
: []),
|
|
237
|
+
...component.properties
|
|
238
|
+
.filter((p) => p.deprecated)
|
|
239
|
+
.map((p) => entry(`property:${tag}#${p.name}`, 'property', p.deprecated)),
|
|
240
|
+
...component.events
|
|
241
|
+
.filter((e) => e.deprecated)
|
|
242
|
+
.map((e) => entry(`event:${tag}#${e.name}`, 'event', e.deprecated)),
|
|
243
|
+
];
|
|
244
|
+
const since = first('since');
|
|
245
|
+
const levels = first('customization');
|
|
246
|
+
const valid = levels && /^[1-5]( [1-5])*$/.test(levels.value.replace(/\s+/g, ' '));
|
|
247
|
+
return {
|
|
248
|
+
...optional('since', since && { value: since.value, ...authored(since.location) }),
|
|
249
|
+
...optional('deprecations', deprecations),
|
|
250
|
+
customization: {
|
|
251
|
+
levels: valid
|
|
252
|
+
? {
|
|
253
|
+
value: [...new Set(levels.value.split(/\s+/).map(Number))].sort(),
|
|
254
|
+
...authored(levels.location),
|
|
255
|
+
}
|
|
256
|
+
: { known: false, provenance: 'extracted' },
|
|
257
|
+
variables: [...component.cssProperties].sort(byName).map((c) => `cssprop:${tag}#${c.name}`),
|
|
258
|
+
parts: [...component.parts].sort(byName).map((p) => `part:${tag}#${p.name}`),
|
|
259
|
+
slots: [...component.slots].sort(byName).map((s) => `slot:${tag}#${s.name || 'default'}`),
|
|
260
|
+
},
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
export function buildMetadata(extraction, paths, library, oddkinVersion) {
|
|
264
|
+
const components = {};
|
|
265
|
+
const byClass = new Map(extraction.components.map((c) => [`${c.file}#${c.name}`, c]));
|
|
266
|
+
for (const registration of [...extraction.registrations].sort((a, b) => a.tag < b.tag ? -1 : 1)) {
|
|
267
|
+
const component = byClass.get(`${registration.classFile}#${registration.className}`);
|
|
268
|
+
if (!component)
|
|
269
|
+
continue;
|
|
270
|
+
const facts = {};
|
|
271
|
+
for (const [tag, entries] of Object.entries(component.tags)) {
|
|
272
|
+
const key = FACT_TAGS[tag];
|
|
273
|
+
if (!key)
|
|
274
|
+
continue;
|
|
275
|
+
facts[key] = entries.map((e) => ({
|
|
276
|
+
value: e.value,
|
|
277
|
+
provenance: 'authored',
|
|
278
|
+
source: { file: e.location.file, line: e.location.line, column: e.location.column },
|
|
279
|
+
}));
|
|
280
|
+
}
|
|
281
|
+
const category = authoredCategory(component)?.label;
|
|
282
|
+
const related = (component.tags['related'] ?? [])
|
|
283
|
+
.flatMap((e) => e.value.split(/[\s,]+/))
|
|
284
|
+
.filter(Boolean)
|
|
285
|
+
.map((tag) => `component:${tag.replace(/^<|>$/g, '')}`);
|
|
286
|
+
const module = paths.moduleOf(registration.file);
|
|
287
|
+
components[`component:${registration.tag}`] = {
|
|
288
|
+
tag: registration.tag,
|
|
289
|
+
cem: { module: paths.moduleOf(component.file), name: component.name },
|
|
290
|
+
registration: paths.specifierOf(module) ?? module,
|
|
291
|
+
...optional('definition', definitionOf(registration.definition, paths)),
|
|
292
|
+
...optional('category', category ? categoryId(category) : undefined),
|
|
293
|
+
...optional('syncPairs', component.events
|
|
294
|
+
.filter((e) => e.syncs)
|
|
295
|
+
.map((e) => ({ property: e.syncs, event: e.name }))),
|
|
296
|
+
// Rich values (arrays, objects, functions) and accessors have no attribute.
|
|
297
|
+
...optional('propertyOnly', [
|
|
298
|
+
...component.properties.filter((p) => p.attribute === null).map((p) => p.name),
|
|
299
|
+
...component.members.filter((m) => m.kind === 'field' && !m.readonly).map((m) => m.name),
|
|
300
|
+
]
|
|
301
|
+
.sort()
|
|
302
|
+
.map((name) => ({
|
|
303
|
+
property: `property:${registration.tag}#${name}`,
|
|
304
|
+
provenance: 'extracted',
|
|
305
|
+
}))),
|
|
306
|
+
...optional('events', [...component.events].sort(byName).map((e) => ({
|
|
307
|
+
event: `event:${registration.tag}#${e.name}`,
|
|
308
|
+
intent: e.intent
|
|
309
|
+
? {
|
|
310
|
+
value: e.intent.value,
|
|
311
|
+
provenance: 'authored',
|
|
312
|
+
...(e.intent.source ? { source: e.intent.source } : {}),
|
|
313
|
+
}
|
|
314
|
+
: { known: false, provenance: 'extracted' },
|
|
315
|
+
}))),
|
|
316
|
+
...optional('tokenReads', component.tokenReads.map((t) => ({
|
|
317
|
+
token: t.token,
|
|
318
|
+
kind: 'declared',
|
|
319
|
+
readThrough: t.readThrough,
|
|
320
|
+
}))),
|
|
321
|
+
...optional('styleMappings', [...(component.styleMappings ?? [])]),
|
|
322
|
+
...optional('previewRoles', (component.tags['previewRole'] ?? [])
|
|
323
|
+
.flatMap((e) => e.value.split(/[\s,]+/))
|
|
324
|
+
.filter(Boolean)
|
|
325
|
+
.map((role) => `role:${role}`)),
|
|
326
|
+
...facts,
|
|
327
|
+
...lifecycle(component, registration.tag),
|
|
328
|
+
...optional('related', related),
|
|
329
|
+
...optional('authored', component.authored?.ids.map((id) => {
|
|
330
|
+
const [kind, name] = id.split('#');
|
|
331
|
+
return {
|
|
332
|
+
id: `${kind}:${registration.tag}#${name}`,
|
|
333
|
+
provenance: 'authored',
|
|
334
|
+
source: { file: component.authored?.file, line: 1 },
|
|
335
|
+
};
|
|
336
|
+
})),
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
const recipes = Object.fromEntries([...extraction.recipes].sort(byName).map((r) => [
|
|
340
|
+
`recipe:${r.name}`,
|
|
341
|
+
{
|
|
342
|
+
name: r.name,
|
|
343
|
+
...optional('container', r.container),
|
|
344
|
+
regions: Object.fromEntries(Object.entries(r.regions).map(([region, helper]) => [
|
|
345
|
+
region,
|
|
346
|
+
{
|
|
347
|
+
helper: ['stack', 'row', 'grid', 'autoGrid', 'split'].includes(helper)
|
|
348
|
+
? helper
|
|
349
|
+
: 'custom',
|
|
350
|
+
},
|
|
351
|
+
])),
|
|
352
|
+
...optional('variants', Object.keys(r.variants).length ? r.variants : undefined),
|
|
353
|
+
...optional('conditions', r.conditions),
|
|
354
|
+
...optional('parts', r.parts),
|
|
355
|
+
layers: ['recipe.base', 'recipe.variant', 'recipe.condition'],
|
|
356
|
+
},
|
|
357
|
+
]));
|
|
358
|
+
const models = Object.fromEntries([...extraction.models].sort(byName).map((m) => [
|
|
359
|
+
`model:${m.name}`,
|
|
360
|
+
{
|
|
361
|
+
name: m.name,
|
|
362
|
+
version: m.version,
|
|
363
|
+
schema: `schemas/${m.name}.v${m.version}.json`,
|
|
364
|
+
...optional('kinds', m.kinds),
|
|
365
|
+
},
|
|
366
|
+
]));
|
|
367
|
+
const sourceEntries = (list, facts) => Object.fromEntries(list
|
|
368
|
+
.map((source) => {
|
|
369
|
+
const module = paths.moduleOf(source.ref.file);
|
|
370
|
+
return [
|
|
371
|
+
`${module}#${source.ref.name}`,
|
|
372
|
+
{ module, name: source.ref.name, ...facts(source) },
|
|
373
|
+
];
|
|
374
|
+
})
|
|
375
|
+
.sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0)));
|
|
376
|
+
const unique = (list) => [...new Set(list)].sort();
|
|
377
|
+
const templates = sourceEntries(extraction.sources.templates, (t) => ({
|
|
378
|
+
...optional('slots', unique(t.slots)),
|
|
379
|
+
...optional('parts', unique(t.parts)),
|
|
380
|
+
}));
|
|
381
|
+
const styles = sourceEntries(extraction.sources.styles, (s) => ({
|
|
382
|
+
...optional('cssProperties', unique(s.cssProperties)),
|
|
383
|
+
...optional('tokens', unique(s.tokens)),
|
|
384
|
+
...optional('css', s.css),
|
|
385
|
+
}));
|
|
386
|
+
const { categories } = categoryRecords(extraction);
|
|
387
|
+
return {
|
|
388
|
+
schema: 'https://oddkin.dev/schemas/oddkin-metadata/v1.json',
|
|
389
|
+
oddkinVersion,
|
|
390
|
+
library,
|
|
391
|
+
components,
|
|
392
|
+
...optional('categories', Object.keys(categories).length ? categories : undefined),
|
|
393
|
+
...optional('recipes', Object.keys(recipes).length ? recipes : undefined),
|
|
394
|
+
...optional('models', Object.keys(models).length ? models : undefined),
|
|
395
|
+
...optional('templates', Object.keys(templates).length ? templates : undefined),
|
|
396
|
+
...optional('styles', Object.keys(styles).length ? styles : undefined),
|
|
397
|
+
diagnostics: sortDiagnostics(extraction.diagnostics),
|
|
398
|
+
};
|
|
399
|
+
}
|
|
400
|
+
export function sortDiagnostics(diagnostics) {
|
|
401
|
+
const key = (d) => `${d.source?.file ?? ''}\u0000${String(d.source?.line ?? 0).padStart(8, '0')}\u0000${String(d.source?.column ?? 0).padStart(8, '0')}\u0000${d.code}`;
|
|
402
|
+
return [...diagnostics].sort((a, b) => (key(a) < key(b) ? -1 : key(a) > key(b) ? 1 : 0));
|
|
403
|
+
}
|
|
404
|
+
/** Stable JSON text: two-space indentation and a trailing newline. */
|
|
405
|
+
export const stableJson = (value) => `${JSON.stringify(value, null, 2)}\n`;
|
|
406
|
+
//# sourceMappingURL=emit.js.map
|
package/dist/emit.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emit.js","sourceRoot":"","sources":["../src/emit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { AnalyzerDiagnostic, SourceLocation } from './extract.js';
|
|
2
|
+
import type { AuthoredText } from './references.js';
|
|
3
|
+
export interface ExampleInfo {
|
|
4
|
+
readonly component: string;
|
|
5
|
+
readonly name: string;
|
|
6
|
+
readonly file: string;
|
|
7
|
+
readonly hasFixture: boolean;
|
|
8
|
+
readonly previewRoles?: readonly string[];
|
|
9
|
+
/** A common mistake: the diagnostic it demonstrates and the correct example to use instead. */
|
|
10
|
+
readonly incorrect?: {
|
|
11
|
+
readonly diagnostic: string;
|
|
12
|
+
readonly correct: string;
|
|
13
|
+
};
|
|
14
|
+
/** Other custom elements its fixture renders, read from literal markup and `createElement()`. */
|
|
15
|
+
readonly uses?: readonly string[];
|
|
16
|
+
/** Literal label, guidance, and mistake explanation, for the authored-reference check. */
|
|
17
|
+
readonly texts?: readonly AuthoredText[];
|
|
18
|
+
/**
|
|
19
|
+
* The example's values as `toExamplesJSON()` serializes them (label, props, attributes, slots,
|
|
20
|
+
* preset, guidance, and `hasFixture` for a fixture), when every one is spelled out in the source.
|
|
21
|
+
*/
|
|
22
|
+
readonly definition?: Readonly<Record<string, JsonValue>>;
|
|
23
|
+
readonly location: SourceLocation;
|
|
24
|
+
}
|
|
25
|
+
type JsonValue = null | boolean | number | string | JsonValue[] | {
|
|
26
|
+
[key: string]: JsonValue;
|
|
27
|
+
};
|
|
28
|
+
/** Example files under `dir`, sorted. */
|
|
29
|
+
export declare function findExampleFiles(dir: string): string[];
|
|
30
|
+
export declare function extractExamples(files: readonly string[], root: string): {
|
|
31
|
+
examples: ExampleInfo[];
|
|
32
|
+
diagnostics: AnalyzerDiagnostic[];
|
|
33
|
+
};
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=examples.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"examples.d.ts","sourceRoot":"","sources":["../src/examples.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,+FAA+F;IAC/F,QAAQ,CAAC,SAAS,CAAC,EAAE;QAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/E,iGAAiG;IACjG,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,0FAA0F;IAC1F,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IACzC;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IAC1D,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;CACnC;AAED,KAAK,SAAS,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,EAAE,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AA6J/F,yCAAyC;AACzC,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAkBtD;AAqCD,wBAAgB,eAAe,CAC7B,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,IAAI,EAAE,MAAM,GACX;IAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;IAAC,WAAW,EAAE,kBAAkB,EAAE,CAAA;CAAE,CA8IhE"}
|