@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.
Files changed (71) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +17 -2
  3. package/dist/bin.d.ts +3 -0
  4. package/dist/bin.d.ts.map +1 -0
  5. package/dist/bin.js +65 -0
  6. package/dist/bin.js.map +1 -0
  7. package/dist/contracts.d.ts +29 -0
  8. package/dist/contracts.d.ts.map +1 -0
  9. package/dist/contracts.js +57 -0
  10. package/dist/contracts.js.map +1 -0
  11. package/dist/docs.d.ts +34 -0
  12. package/dist/docs.d.ts.map +1 -0
  13. package/dist/docs.js +63 -0
  14. package/dist/docs.js.map +1 -0
  15. package/dist/emit.d.ts +38 -0
  16. package/dist/emit.d.ts.map +1 -0
  17. package/dist/emit.js +406 -0
  18. package/dist/emit.js.map +1 -0
  19. package/dist/examples.d.ts +26 -0
  20. package/dist/examples.d.ts.map +1 -0
  21. package/dist/examples.js +185 -0
  22. package/dist/examples.js.map +1 -0
  23. package/dist/extract.d.ts +208 -0
  24. package/dist/extract.d.ts.map +1 -0
  25. package/dist/extract.js +1570 -0
  26. package/dist/extract.js.map +1 -0
  27. package/dist/foundations.d.ts +36 -0
  28. package/dist/foundations.d.ts.map +1 -0
  29. package/dist/foundations.js +108 -0
  30. package/dist/foundations.js.map +1 -0
  31. package/dist/history.d.ts +10 -0
  32. package/dist/history.d.ts.map +1 -0
  33. package/dist/history.js +62 -0
  34. package/dist/history.js.map +1 -0
  35. package/dist/impact-bin.d.ts +3 -0
  36. package/dist/impact-bin.d.ts.map +1 -0
  37. package/dist/impact-bin.js +7 -0
  38. package/dist/impact-bin.js.map +1 -0
  39. package/dist/impact-cli.d.ts +8 -0
  40. package/dist/impact-cli.d.ts.map +1 -0
  41. package/dist/impact-cli.js +121 -0
  42. package/dist/impact-cli.js.map +1 -0
  43. package/dist/impact.d.ts +282 -0
  44. package/dist/impact.d.ts.map +1 -0
  45. package/dist/impact.js +744 -0
  46. package/dist/impact.js.map +1 -0
  47. package/dist/index.d.ts +82 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +227 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/published.d.ts +43 -0
  52. package/dist/published.d.ts.map +1 -0
  53. package/dist/published.js +62 -0
  54. package/dist/published.js.map +1 -0
  55. package/dist/references.d.ts +70 -0
  56. package/dist/references.d.ts.map +1 -0
  57. package/dist/references.js +255 -0
  58. package/dist/references.js.map +1 -0
  59. package/dist/style-mappings.d.ts +46 -0
  60. package/dist/style-mappings.d.ts.map +1 -0
  61. package/dist/style-mappings.js +246 -0
  62. package/dist/style-mappings.js.map +1 -0
  63. package/dist/stylesheets.d.ts +56 -0
  64. package/dist/stylesheets.d.ts.map +1 -0
  65. package/dist/stylesheets.js +83 -0
  66. package/dist/stylesheets.js.map +1 -0
  67. package/dist/verification.d.ts +62 -0
  68. package/dist/verification.d.ts.map +1 -0
  69. package/dist/verification.js +115 -0
  70. package/dist/verification.js.map +1 -0
  71. package/package.json +40 -4
@@ -0,0 +1,282 @@
1
+ export declare const SNAPSHOT_SCHEMA = "https://oddkin.dev/schemas/comparison-snapshot/v1.json";
2
+ export declare const IMPACT_SCHEMA = "https://oddkin.dev/schemas/impact-report/v1.json";
3
+ interface Text {
4
+ readonly text?: string;
5
+ }
6
+ interface Named {
7
+ readonly name: string;
8
+ readonly description?: string;
9
+ }
10
+ interface CemMember extends Named {
11
+ readonly kind: string;
12
+ readonly type?: Text;
13
+ readonly default?: string;
14
+ readonly attribute?: string;
15
+ readonly reflects?: boolean;
16
+ readonly readonly?: boolean;
17
+ readonly static?: boolean;
18
+ readonly privacy?: string;
19
+ }
20
+ interface CemDeclaration extends Named {
21
+ readonly tagName?: string;
22
+ readonly members?: readonly CemMember[];
23
+ readonly attributes?: readonly (Named & {
24
+ type?: Text;
25
+ fieldName?: string;
26
+ default?: string;
27
+ })[];
28
+ readonly events?: readonly (Named & {
29
+ type?: Text;
30
+ })[];
31
+ readonly slots?: readonly Named[];
32
+ readonly cssParts?: readonly Named[];
33
+ readonly cssProperties?: readonly (Named & {
34
+ default?: string;
35
+ syntax?: string;
36
+ })[];
37
+ readonly cssStates?: readonly Named[];
38
+ }
39
+ export interface CemManifest {
40
+ readonly modules: readonly {
41
+ readonly path?: string;
42
+ readonly declarations?: readonly CemDeclaration[];
43
+ }[];
44
+ }
45
+ interface SourceRef {
46
+ readonly package?: string;
47
+ readonly module: string;
48
+ readonly name: string;
49
+ }
50
+ export interface MetadataInput {
51
+ readonly components?: Readonly<Record<string, {
52
+ readonly tag: string;
53
+ readonly registration?: string;
54
+ readonly definition?: {
55
+ readonly extends?: string;
56
+ readonly template?: SourceRef;
57
+ readonly styles?: readonly SourceRef[];
58
+ readonly dependencies?: Readonly<Record<string, string>>;
59
+ };
60
+ }>>;
61
+ readonly templates?: Readonly<Record<string, unknown>>;
62
+ readonly styles?: Readonly<Record<string, {
63
+ readonly tokens?: readonly string[];
64
+ }>>;
65
+ readonly examples?: Readonly<Record<string, {
66
+ readonly component: string;
67
+ readonly name: string;
68
+ readonly file?: string;
69
+ readonly incorrect?: unknown;
70
+ /** Other components its fixture renders. */
71
+ readonly uses?: readonly string[];
72
+ }>>;
73
+ readonly diagnostics?: readonly {
74
+ readonly code: string;
75
+ readonly message?: string;
76
+ readonly source?: {
77
+ readonly file?: string;
78
+ readonly line?: number;
79
+ };
80
+ }[];
81
+ }
82
+ export interface TokenInspection {
83
+ readonly theme?: string;
84
+ readonly tokens: readonly {
85
+ readonly name: string;
86
+ readonly cssVariable?: string;
87
+ readonly type?: string;
88
+ readonly definition: unknown;
89
+ readonly value?: unknown;
90
+ readonly description?: string;
91
+ readonly provenance?: string;
92
+ }[];
93
+ readonly scopes?: readonly {
94
+ readonly selector: string;
95
+ readonly changed: readonly string[];
96
+ readonly redeclared?: readonly string[];
97
+ }[];
98
+ }
99
+ /** `product.v1` fields used here. */
100
+ export interface ProductManifest {
101
+ readonly id: string;
102
+ readonly version?: string;
103
+ readonly theme?: {
104
+ readonly config?: string;
105
+ readonly product?: string;
106
+ readonly overrides?: Readonly<Record<string, unknown>>;
107
+ };
108
+ /** Applicable component tags; omitted means all. */
109
+ readonly components?: readonly string[];
110
+ readonly examples?: readonly string[];
111
+ }
112
+ /** An authoritative rename: a migration entry, `@renamedFrom`, or a token replacement. */
113
+ export interface Migration {
114
+ readonly from: string;
115
+ readonly to: string;
116
+ /** Where the record lives, e.g. `migrations/0.5.md` or `token deprecation`. */
117
+ readonly source: string;
118
+ }
119
+ export interface SnapshotInputs {
120
+ readonly packages: readonly {
121
+ readonly name: string;
122
+ readonly version: string;
123
+ readonly manifest: CemManifest;
124
+ readonly metadata: MetadataInput;
125
+ /** `package.json` `exports`; each key becomes an `export:<package>/<key>` item. */
126
+ readonly exports?: Readonly<Record<string, unknown>>;
127
+ /** Source text of published modules and example files by path; only hashes are kept. */
128
+ readonly modules?: Readonly<Record<string, string>>;
129
+ }[];
130
+ readonly theme?: {
131
+ readonly inspection: TokenInspection;
132
+ /** The ThemeConfig; `products` entries are hashed per product, the rest as `theme:base`. */
133
+ readonly config?: Readonly<Record<string, unknown>>;
134
+ };
135
+ readonly products?: readonly ProductManifest[];
136
+ readonly suites?: readonly {
137
+ readonly id: string;
138
+ readonly version: string;
139
+ /** Component tags the suite verifies. */
140
+ readonly targets: readonly string[];
141
+ }[];
142
+ readonly migrations?: readonly Migration[];
143
+ /** Versions of what produced the inputs (analyzer, generator, core, schemas). */
144
+ readonly versions?: Readonly<Record<string, string>>;
145
+ }
146
+ export type ItemKind = 'component' | 'class' | 'property' | 'attribute' | 'event' | 'method' | 'slot' | 'part' | 'cssprop' | 'state' | 'registration' | 'export' | 'definition' | 'template' | 'style' | 'token' | 'theme' | 'product' | 'example' | 'suite';
147
+ export interface SnapshotItem {
148
+ readonly kind: ItemKind;
149
+ /** SHA-256 of the item's contract facts (descriptions excluded). */
150
+ readonly hash: string;
151
+ /** SHA-256 of its descriptions, so documentation-only changes are told apart. */
152
+ readonly docs?: string;
153
+ readonly package?: string;
154
+ /** Declared type text (properties, attributes, tokens). */
155
+ readonly type?: string;
156
+ /** Units of a dimension token's values, e.g. `rem`. */
157
+ readonly unit?: string;
158
+ }
159
+ /** `from` depends on `to`. */
160
+ export interface SnapshotEdge {
161
+ readonly from: string;
162
+ readonly to: string;
163
+ readonly kind: 'class' | 'member' | 'definition' | 'template' | 'style' | 'dependency' | 'foundation' | 'reads' | 'alias' | 'example' | 'applies' | 'sets' | 'theme' | 'suite' | 'uses';
164
+ readonly provenance: 'extracted' | 'declared' | 'authored' | 'configuration';
165
+ }
166
+ export interface ComparisonSnapshot {
167
+ readonly schema: typeof SNAPSHOT_SCHEMA;
168
+ readonly versions: Readonly<Record<string, string>>;
169
+ /** Packages read, with the hashes of the artifacts the items came from. */
170
+ readonly packages: readonly {
171
+ name: string;
172
+ version: string;
173
+ artifacts: Record<string, string>;
174
+ }[];
175
+ readonly items: Readonly<Record<string, SnapshotItem>>;
176
+ readonly edges: readonly SnapshotEdge[];
177
+ /** Dependencies that could not be resolved; they widen selection for their package. */
178
+ readonly unresolved: readonly {
179
+ item: string;
180
+ package?: string;
181
+ reason: string;
182
+ }[];
183
+ /** Product contexts: id and the tokens its scope sets. */
184
+ readonly products: readonly {
185
+ id: string;
186
+ sets: string[];
187
+ components?: string[];
188
+ }[];
189
+ readonly migrations: readonly Migration[];
190
+ }
191
+ /** Build a snapshot from existing artifacts. Never executes the analyzed code. */
192
+ export declare function createSnapshot(inputs: SnapshotInputs): ComparisonSnapshot;
193
+ export type Classification = 'incompatible' | 'review' | 'informational';
194
+ export interface Change {
195
+ readonly id: string;
196
+ readonly kind: ItemKind;
197
+ readonly change: 'added' | 'removed' | 'changed' | 'renamed';
198
+ readonly classification: Classification;
199
+ readonly reason: string;
200
+ /** For `renamed`: the base id and the record that says so. */
201
+ readonly from?: string;
202
+ readonly migration?: string;
203
+ /** An added item that looks like this removed one; never treated as a match. */
204
+ readonly possibleRename?: string;
205
+ }
206
+ export type CheckState = 'selected' | 'passed' | 'failed' | 'reused' | 'not-executed' | 'unresolved';
207
+ export interface Check {
208
+ /** `example:<tag>/<name>` or `suite:<id>#<tag>`. */
209
+ readonly id: string;
210
+ readonly product?: string;
211
+ readonly state: CheckState;
212
+ readonly reason: string;
213
+ /** Edge path from a changed item to the check, root first. */
214
+ readonly via?: readonly string[];
215
+ /** For `reused`: the baseline's conditions. */
216
+ readonly conditions?: Readonly<Record<string, unknown>>;
217
+ }
218
+ export interface Affected {
219
+ readonly id: string;
220
+ readonly product?: string;
221
+ readonly via: readonly string[];
222
+ }
223
+ export interface ImpactReport {
224
+ readonly schema: typeof IMPACT_SCHEMA;
225
+ readonly base: {
226
+ readonly versions: Readonly<Record<string, string>>;
227
+ };
228
+ readonly head: {
229
+ readonly versions: Readonly<Record<string, string>>;
230
+ };
231
+ /** Present when item-level selection was replaced by full verification. */
232
+ readonly fallback?: {
233
+ readonly kind: 'full';
234
+ readonly reasons: readonly string[];
235
+ };
236
+ readonly changes: readonly Change[];
237
+ readonly affected: {
238
+ readonly products: readonly Affected[];
239
+ readonly components: readonly Affected[];
240
+ };
241
+ readonly coverageGaps: readonly {
242
+ readonly item: string;
243
+ readonly reason: string;
244
+ }[];
245
+ readonly checks: readonly Check[];
246
+ }
247
+ /** A result from an earlier run, offered for reuse when nothing on its path changed. */
248
+ export interface BaselineResult {
249
+ readonly check: string;
250
+ readonly product?: string;
251
+ readonly state: 'passed' | 'failed';
252
+ readonly conditions: Readonly<Record<string, unknown>>;
253
+ }
254
+ /** Compare two snapshots: classified changes, affected items with reasons, and selected checks. */
255
+ export declare function compareSnapshots(base: ComparisonSnapshot, head: ComparisonSnapshot, options?: {
256
+ readonly baseline?: readonly BaselineResult[];
257
+ }): ImpactReport;
258
+ /** One run's outcome for a selected check, e.g. per browser. */
259
+ export interface CheckResult {
260
+ readonly check: string;
261
+ readonly product?: string;
262
+ readonly state: 'passed' | 'failed' | 'not-executed';
263
+ readonly message?: string;
264
+ /** What ran: browser and version, configuration, input hashes. */
265
+ readonly conditions: Readonly<Record<string, unknown>>;
266
+ }
267
+ /**
268
+ * Merge executed results into the report. A selected check passes only when every run of it
269
+ * passed; any failure fails it; with no run it is `not-executed`. Conditions of every run are
270
+ * listed. Reused checks keep their baseline state and conditions.
271
+ */
272
+ export declare function mergeResults(report: ImpactReport, results: readonly CheckResult[]): ImpactReport;
273
+ /**
274
+ * The snapshot inputs of a built package directory: `package.json` (name, version, exports),
275
+ * its `customElements` manifest, `oddkin.metadata.json`, and the sources of every module its
276
+ * elements, definitions, and examples name. Missing sources stay missing (coverage gaps).
277
+ */
278
+ export declare function readPackage(dir: string): SnapshotInputs['packages'][number];
279
+ /** A readable rendering of the report for terminals, pull requests, and Workbench. */
280
+ export declare function renderImpactMarkdown(report: ImpactReport): string;
281
+ export {};
282
+ //# sourceMappingURL=impact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"impact.d.ts","sourceRoot":"","sources":["../src/impact.ts"],"names":[],"mappings":"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"}