@oddkin/analyzer 0.0.0-stage → 1.0.0-beta.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/LICENSE +21 -0
- package/README.md +17 -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 +26 -0
- package/dist/examples.d.ts.map +1 -0
- package/dist/examples.js +185 -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 +227 -0
- package/dist/index.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 +40 -4
package/dist/examples.js
ADDED
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Colocated `*.examples.ts` files (ADR 0021): find `defineExamples('tag', { name: { … } })`
|
|
3
|
+
* calls by parsing, never by executing, and record each example's name, fixture presence, and
|
|
4
|
+
* preview roles. Example files are development-only sources outside the package build, so they
|
|
5
|
+
* are discovered on disk rather than taken from the program.
|
|
6
|
+
*/
|
|
7
|
+
import { readdirSync, readFileSync } from 'node:fs';
|
|
8
|
+
import { join, relative, sep } from 'node:path';
|
|
9
|
+
import ts from 'typescript';
|
|
10
|
+
const EXAMPLE_FILE = /\.examples\.(m?ts|m?js)$/;
|
|
11
|
+
const SKIP = new Set(['node_modules', 'dist']);
|
|
12
|
+
/** Example files under `dir`, sorted. */
|
|
13
|
+
export function findExampleFiles(dir) {
|
|
14
|
+
const out = [];
|
|
15
|
+
const walk = (current) => {
|
|
16
|
+
let entries;
|
|
17
|
+
try {
|
|
18
|
+
entries = readdirSync(current, { withFileTypes: true });
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
for (const entry of entries) {
|
|
24
|
+
const path = join(current, entry.name);
|
|
25
|
+
if (entry.isDirectory()) {
|
|
26
|
+
if (!SKIP.has(entry.name))
|
|
27
|
+
walk(path);
|
|
28
|
+
}
|
|
29
|
+
else if (EXAMPLE_FILE.test(entry.name))
|
|
30
|
+
out.push(path);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
walk(dir);
|
|
34
|
+
return out.sort();
|
|
35
|
+
}
|
|
36
|
+
const text = (node) => node && (ts.isStringLiteral(node) || ts.isNoSubstitutionTemplateLiteral(node))
|
|
37
|
+
? node.text
|
|
38
|
+
: undefined;
|
|
39
|
+
const keyOf = (name) => ts.isIdentifier(name) || ts.isStringLiteral(name) ? name.text : undefined;
|
|
40
|
+
const TAG = /<([a-z][a-z0-9]*-[a-z0-9-]*)[\s>/]/g;
|
|
41
|
+
/** Custom-element tags written literally under `node`: markup in strings and templates, `createElement('x-y')`. */
|
|
42
|
+
function literalTags(node) {
|
|
43
|
+
const tags = new Set();
|
|
44
|
+
const visit = (child) => {
|
|
45
|
+
if (ts.isStringLiteral(child) ||
|
|
46
|
+
ts.isNoSubstitutionTemplateLiteral(child) ||
|
|
47
|
+
ts.isTemplateHead(child) ||
|
|
48
|
+
ts.isTemplateMiddle(child) ||
|
|
49
|
+
ts.isTemplateTail(child)) {
|
|
50
|
+
for (const match of `${child.text} `.matchAll(TAG))
|
|
51
|
+
tags.add(match[1]);
|
|
52
|
+
if (ts.isStringLiteral(child) &&
|
|
53
|
+
/^[a-z][a-z0-9]*-[a-z0-9-]*$/.test(child.text) &&
|
|
54
|
+
ts.isCallExpression(child.parent) &&
|
|
55
|
+
ts.isPropertyAccessExpression(child.parent.expression) &&
|
|
56
|
+
child.parent.expression.name.text === 'createElement')
|
|
57
|
+
tags.add(child.text);
|
|
58
|
+
}
|
|
59
|
+
ts.forEachChild(child, visit);
|
|
60
|
+
};
|
|
61
|
+
visit(node);
|
|
62
|
+
return tags;
|
|
63
|
+
}
|
|
64
|
+
export function extractExamples(files, root) {
|
|
65
|
+
const examples = [];
|
|
66
|
+
const diagnostics = [];
|
|
67
|
+
for (const path of files) {
|
|
68
|
+
const file = relative(root, path).split(sep).join('/');
|
|
69
|
+
const source = ts.createSourceFile(path, readFileSync(path, 'utf8'), ts.ScriptTarget.Latest, true);
|
|
70
|
+
const at = (node) => {
|
|
71
|
+
const { line, character } = source.getLineAndCharacterOfPosition(node.getStart(source));
|
|
72
|
+
return { file, line: line + 1, column: character + 1 };
|
|
73
|
+
};
|
|
74
|
+
const dynamic = (node, message) => diagnostics.push({
|
|
75
|
+
code: 'analyzer.examples.dynamic',
|
|
76
|
+
severity: 'warning',
|
|
77
|
+
message,
|
|
78
|
+
source: at(node),
|
|
79
|
+
suggestion: 'Use a string literal tag and an object literal of examples with literal names.',
|
|
80
|
+
});
|
|
81
|
+
// Local names bound to `defineExamples` from the Workbench examples entry.
|
|
82
|
+
const names = new Set();
|
|
83
|
+
for (const statement of source.statements) {
|
|
84
|
+
if (ts.isImportDeclaration(statement) &&
|
|
85
|
+
text(statement.moduleSpecifier) === '@oddkin/workbench/examples' &&
|
|
86
|
+
statement.importClause?.namedBindings &&
|
|
87
|
+
ts.isNamedImports(statement.importClause.namedBindings)) {
|
|
88
|
+
for (const element of statement.importClause.namedBindings.elements)
|
|
89
|
+
if ((element.propertyName ?? element.name).text === 'defineExamples')
|
|
90
|
+
names.add(element.name.text);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
const visit = (node) => {
|
|
94
|
+
if (ts.isCallExpression(node) &&
|
|
95
|
+
ts.isIdentifier(node.expression) &&
|
|
96
|
+
names.has(node.expression.text)) {
|
|
97
|
+
const [tagArg, setArg] = node.arguments;
|
|
98
|
+
const component = text(tagArg);
|
|
99
|
+
if (!component || !setArg || !ts.isObjectLiteralExpression(setArg)) {
|
|
100
|
+
dynamic(node, 'defineExamples() needs a literal tag and an object literal of examples.');
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
for (const property of setArg.properties) {
|
|
104
|
+
const name = property.name && keyOf(property.name);
|
|
105
|
+
if (!ts.isPropertyAssignment(property) ||
|
|
106
|
+
!name ||
|
|
107
|
+
!ts.isObjectLiteralExpression(property.initializer)) {
|
|
108
|
+
dynamic(property, `An example of <${component}> is not a literal entry.`);
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
let hasFixture = false;
|
|
112
|
+
let previewRoles;
|
|
113
|
+
let incorrect;
|
|
114
|
+
const texts = [];
|
|
115
|
+
const authored = (node, field) => {
|
|
116
|
+
const value = node && text(node);
|
|
117
|
+
if (node && value)
|
|
118
|
+
texts.push({
|
|
119
|
+
text: value,
|
|
120
|
+
subject: component,
|
|
121
|
+
at: `example:${component}/${name} ${field}`,
|
|
122
|
+
source: at(node),
|
|
123
|
+
});
|
|
124
|
+
};
|
|
125
|
+
for (const field of property.initializer.properties) {
|
|
126
|
+
const key = field.name && keyOf(field.name);
|
|
127
|
+
if (key === 'fixture')
|
|
128
|
+
hasFixture = true;
|
|
129
|
+
if ((key === 'label' || key === 'guidance') && ts.isPropertyAssignment(field))
|
|
130
|
+
authored(field.initializer, key);
|
|
131
|
+
if (key === 'incorrect') {
|
|
132
|
+
// Read literally: an example that cannot be shown to be a mistake is left out
|
|
133
|
+
// rather than listed as a usable one.
|
|
134
|
+
const value = ts.isPropertyAssignment(field) ? field.initializer : undefined;
|
|
135
|
+
const read = (name) => value && ts.isObjectLiteralExpression(value)
|
|
136
|
+
? value.properties
|
|
137
|
+
.filter(ts.isPropertyAssignment)
|
|
138
|
+
.map((p) => (keyOf(p.name) === name ? text(p.initializer) : undefined))
|
|
139
|
+
.find((v) => v !== undefined)
|
|
140
|
+
: undefined;
|
|
141
|
+
const diagnostic = read('diagnostic');
|
|
142
|
+
const correct = read('correct');
|
|
143
|
+
if (value && ts.isObjectLiteralExpression(value))
|
|
144
|
+
for (const p of value.properties)
|
|
145
|
+
if (ts.isPropertyAssignment(p) && keyOf(p.name) === 'explanation')
|
|
146
|
+
authored(p.initializer, 'explanation');
|
|
147
|
+
incorrect = diagnostic && correct ? { diagnostic, correct } : null;
|
|
148
|
+
if (!incorrect)
|
|
149
|
+
dynamic(field, `Incorrect example "${name}" of <${component}> needs literal diagnostic and correct names; it is left out.`);
|
|
150
|
+
}
|
|
151
|
+
if (key !== 'previewRoles')
|
|
152
|
+
continue;
|
|
153
|
+
const value = ts.isPropertyAssignment(field) ? field.initializer : undefined;
|
|
154
|
+
const roles = value && ts.isArrayLiteralExpression(value) ? value.elements.map(text) : undefined;
|
|
155
|
+
if (!roles || roles.some((role) => role === undefined))
|
|
156
|
+
dynamic(field, `Preview roles of example "${name}" of <${component}> are not literal.`);
|
|
157
|
+
else
|
|
158
|
+
previewRoles = roles;
|
|
159
|
+
}
|
|
160
|
+
if (incorrect === null)
|
|
161
|
+
continue;
|
|
162
|
+
const uses = [...literalTags(property.initializer)]
|
|
163
|
+
.filter((tag) => tag !== component)
|
|
164
|
+
.sort();
|
|
165
|
+
examples.push({
|
|
166
|
+
component,
|
|
167
|
+
name,
|
|
168
|
+
file,
|
|
169
|
+
hasFixture,
|
|
170
|
+
...(previewRoles ? { previewRoles } : {}),
|
|
171
|
+
...(incorrect ? { incorrect } : {}),
|
|
172
|
+
...(uses.length ? { uses } : {}),
|
|
173
|
+
...(texts.length ? { texts } : {}),
|
|
174
|
+
location: at(property),
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
ts.forEachChild(node, visit);
|
|
180
|
+
};
|
|
181
|
+
visit(source);
|
|
182
|
+
}
|
|
183
|
+
return { examples, diagnostics };
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=examples.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"examples.js","sourceRoot":"","sources":["../src/examples.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import { type StyleMapping, type TokenCss } from './style-mappings.js';
|
|
3
|
+
export interface SourceLocation {
|
|
4
|
+
readonly file: string;
|
|
5
|
+
readonly line: number;
|
|
6
|
+
readonly column: number;
|
|
7
|
+
}
|
|
8
|
+
export interface AnalyzerDiagnostic {
|
|
9
|
+
readonly code: string;
|
|
10
|
+
readonly severity: 'error' | 'warning' | 'info';
|
|
11
|
+
readonly message: string;
|
|
12
|
+
readonly source?: SourceLocation;
|
|
13
|
+
readonly suggestion?: string;
|
|
14
|
+
}
|
|
15
|
+
export type Known<T> = {
|
|
16
|
+
readonly known: true;
|
|
17
|
+
readonly value: T;
|
|
18
|
+
} | {
|
|
19
|
+
readonly known: false;
|
|
20
|
+
};
|
|
21
|
+
export interface PropertyInfo {
|
|
22
|
+
readonly name: string;
|
|
23
|
+
readonly kind: string;
|
|
24
|
+
readonly type: string;
|
|
25
|
+
readonly attribute: string | null;
|
|
26
|
+
readonly reflects: boolean;
|
|
27
|
+
/** JavaScript expression text of the default, when statically known. */
|
|
28
|
+
readonly default: Known<string>;
|
|
29
|
+
readonly values?: readonly string[];
|
|
30
|
+
readonly description?: string;
|
|
31
|
+
readonly deprecated?: Deprecation;
|
|
32
|
+
readonly inheritedFrom?: ClassRef;
|
|
33
|
+
}
|
|
34
|
+
/** `@deprecated` with its authored `@replacement` and `@migration` tags. */
|
|
35
|
+
export interface Deprecation {
|
|
36
|
+
readonly reason?: string;
|
|
37
|
+
/** As written: a tag, a member name, or a stable id. */
|
|
38
|
+
readonly replacement?: string;
|
|
39
|
+
readonly migration?: string;
|
|
40
|
+
readonly location?: SourceLocation;
|
|
41
|
+
}
|
|
42
|
+
export interface EventInfo {
|
|
43
|
+
readonly name: string;
|
|
44
|
+
readonly detailType: string;
|
|
45
|
+
readonly bubbles: boolean;
|
|
46
|
+
readonly composed: boolean;
|
|
47
|
+
readonly cancelable: boolean;
|
|
48
|
+
readonly syncs?: string;
|
|
49
|
+
/** Declared `intent`; absent when the definition does not state it (unknown). */
|
|
50
|
+
readonly intent?: {
|
|
51
|
+
readonly value: 'user' | 'notification';
|
|
52
|
+
readonly source?: SourceLocation;
|
|
53
|
+
};
|
|
54
|
+
readonly description?: string;
|
|
55
|
+
readonly deprecated?: Deprecation;
|
|
56
|
+
readonly inheritedFrom?: ClassRef;
|
|
57
|
+
}
|
|
58
|
+
export interface MemberInfo {
|
|
59
|
+
readonly kind: 'field' | 'method';
|
|
60
|
+
readonly name: string;
|
|
61
|
+
readonly type: string;
|
|
62
|
+
readonly readonly: boolean;
|
|
63
|
+
readonly description?: string;
|
|
64
|
+
}
|
|
65
|
+
export interface NamedDoc {
|
|
66
|
+
readonly name: string;
|
|
67
|
+
readonly description?: string;
|
|
68
|
+
}
|
|
69
|
+
export interface ClassRef {
|
|
70
|
+
readonly name: string;
|
|
71
|
+
/** Library-relative source path, or the module path in `package` when that is set. */
|
|
72
|
+
readonly file: string;
|
|
73
|
+
/** Package that publishes the class, when it is not the analyzed library. */
|
|
74
|
+
readonly package?: string;
|
|
75
|
+
}
|
|
76
|
+
export interface ComponentInfo {
|
|
77
|
+
readonly name: string;
|
|
78
|
+
readonly file: string;
|
|
79
|
+
/** Package that publishes this class, for a base read from another package's metadata. */
|
|
80
|
+
readonly package?: string;
|
|
81
|
+
readonly location: SourceLocation;
|
|
82
|
+
readonly description?: string;
|
|
83
|
+
readonly superclass: {
|
|
84
|
+
readonly name: string;
|
|
85
|
+
readonly package?: string;
|
|
86
|
+
readonly file?: string;
|
|
87
|
+
};
|
|
88
|
+
readonly properties: readonly PropertyInfo[];
|
|
89
|
+
readonly events: readonly EventInfo[];
|
|
90
|
+
readonly members: readonly MemberInfo[];
|
|
91
|
+
readonly slots: readonly NamedDoc[];
|
|
92
|
+
readonly parts: readonly NamedDoc[];
|
|
93
|
+
readonly cssProperties: readonly NamedDoc[];
|
|
94
|
+
readonly cssStates: readonly NamedDoc[];
|
|
95
|
+
readonly tokenReads: readonly {
|
|
96
|
+
readonly token: string;
|
|
97
|
+
readonly readThrough: 'stylesheet';
|
|
98
|
+
}[];
|
|
99
|
+
/** Option or state → part → CSS property → token, where the definition's styles state it. */
|
|
100
|
+
readonly styleMappings?: readonly StyleMapping[];
|
|
101
|
+
readonly tags: Readonly<Record<string, readonly {
|
|
102
|
+
value: string;
|
|
103
|
+
location: SourceLocation;
|
|
104
|
+
}[]>>;
|
|
105
|
+
readonly exported: boolean;
|
|
106
|
+
/** Facts supplied by explicit metadata (`@oddkin-metadata file.json`), as stable member ids. */
|
|
107
|
+
readonly authored?: {
|
|
108
|
+
readonly file: string;
|
|
109
|
+
readonly ids: readonly string[];
|
|
110
|
+
};
|
|
111
|
+
/**
|
|
112
|
+
* Names found only by scanning `render()` and `static styles` (here or in a base class), so a
|
|
113
|
+
* definition's template and styles can replace them. JSDoc-declared names are not included.
|
|
114
|
+
*/
|
|
115
|
+
readonly derived?: {
|
|
116
|
+
readonly slots: readonly string[];
|
|
117
|
+
readonly parts: readonly string[];
|
|
118
|
+
readonly cssProperties: readonly string[];
|
|
119
|
+
readonly tokens: readonly string[];
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
/** A named export in a source file (definition, template, or styles). */
|
|
123
|
+
export interface SourceRef {
|
|
124
|
+
readonly name: string;
|
|
125
|
+
/** Library-relative source path, the package specifier when `external`, or the module path in `package`. */
|
|
126
|
+
readonly file: string;
|
|
127
|
+
/** Imported from another package's published declarations (e.g. shared styles). */
|
|
128
|
+
readonly external?: true;
|
|
129
|
+
/** Inherited from a definition another package publishes; `file` is that package's module path. */
|
|
130
|
+
readonly package?: string;
|
|
131
|
+
}
|
|
132
|
+
/** What a style source reads: CSS custom properties and tokens (`var(--odd-…)` or `token('…')`). */
|
|
133
|
+
export interface StyleReads {
|
|
134
|
+
readonly cssProperties: readonly string[];
|
|
135
|
+
readonly tokens: readonly string[];
|
|
136
|
+
/** The CSS text, so packages that reuse the source can read its style mappings. */
|
|
137
|
+
readonly css?: TokenCss;
|
|
138
|
+
}
|
|
139
|
+
/** An exported template's anatomy, published so recomposing packages know what it provides. */
|
|
140
|
+
export interface TemplateSource {
|
|
141
|
+
readonly ref: SourceRef;
|
|
142
|
+
readonly slots: readonly string[];
|
|
143
|
+
readonly parts: readonly string[];
|
|
144
|
+
}
|
|
145
|
+
/** An exported style source and what it reads. */
|
|
146
|
+
export interface StyleSource extends StyleReads {
|
|
147
|
+
readonly ref: SourceRef;
|
|
148
|
+
}
|
|
149
|
+
/** A `compose()` definition resolved statically. */
|
|
150
|
+
export interface DefinitionInfo {
|
|
151
|
+
readonly tag: string;
|
|
152
|
+
readonly className: string;
|
|
153
|
+
readonly classFile: string;
|
|
154
|
+
/** The variable holding the definition, when it is one. */
|
|
155
|
+
readonly ref?: SourceRef;
|
|
156
|
+
readonly template?: SourceRef;
|
|
157
|
+
readonly styles: readonly SourceRef[];
|
|
158
|
+
/** Named roles → tag names of dependency definitions. */
|
|
159
|
+
readonly dependencies: Readonly<Record<string, string>>;
|
|
160
|
+
/** Tag of the definition this one was recomposed from (`...base`). */
|
|
161
|
+
readonly extends?: string;
|
|
162
|
+
readonly location: SourceLocation;
|
|
163
|
+
}
|
|
164
|
+
export interface Registration {
|
|
165
|
+
readonly tag: string;
|
|
166
|
+
readonly className: string;
|
|
167
|
+
readonly classFile: string;
|
|
168
|
+
readonly file: string;
|
|
169
|
+
readonly location: SourceLocation;
|
|
170
|
+
/** Present when registered with `define(definition)`. */
|
|
171
|
+
readonly definition?: DefinitionInfo;
|
|
172
|
+
}
|
|
173
|
+
export interface RecipeInfo {
|
|
174
|
+
readonly name: string;
|
|
175
|
+
readonly regions: Readonly<Record<string, string>>;
|
|
176
|
+
readonly variants: Readonly<Record<string, readonly string[]>>;
|
|
177
|
+
readonly conditions: readonly string[];
|
|
178
|
+
readonly parts: readonly string[];
|
|
179
|
+
readonly container?: {
|
|
180
|
+
readonly selector?: string;
|
|
181
|
+
readonly name?: string;
|
|
182
|
+
};
|
|
183
|
+
readonly location: SourceLocation;
|
|
184
|
+
}
|
|
185
|
+
export interface ModelInfo {
|
|
186
|
+
readonly name: string;
|
|
187
|
+
readonly version: number;
|
|
188
|
+
readonly kinds: readonly string[];
|
|
189
|
+
readonly location: SourceLocation;
|
|
190
|
+
}
|
|
191
|
+
export interface Extraction {
|
|
192
|
+
readonly components: readonly ComponentInfo[];
|
|
193
|
+
readonly registrations: readonly Registration[];
|
|
194
|
+
readonly recipes: readonly RecipeInfo[];
|
|
195
|
+
readonly models: readonly ModelInfo[];
|
|
196
|
+
readonly definitions: readonly DefinitionInfo[];
|
|
197
|
+
readonly exports: ReadonlyMap<string, readonly string[]>;
|
|
198
|
+
/** Exported templates and style sources of the analyzed library. */
|
|
199
|
+
readonly sources: {
|
|
200
|
+
readonly templates: readonly TemplateSource[];
|
|
201
|
+
readonly styles: readonly StyleSource[];
|
|
202
|
+
};
|
|
203
|
+
readonly diagnostics: readonly AnalyzerDiagnostic[];
|
|
204
|
+
}
|
|
205
|
+
export declare function extract(program: ts.Program, root: string): Extraction;
|
|
206
|
+
/** Resolve a path relative to `root` into an absolute path (helper for callers). */
|
|
207
|
+
export declare const absolute: (root: string, file: string) => string;
|
|
208
|
+
//# sourceMappingURL=extract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../src/extract.ts"],"names":[],"mappings":"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"}
|