@design-parity/baseline 0.1.3 → 0.1.4
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/README.md +9 -3
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +9 -3
- package/dist/bootstrap.js.map +1 -1
- package/dist/seed.d.ts +15 -8
- package/dist/seed.d.ts.map +1 -1
- package/dist/seed.js +78 -15
- package/dist/seed.js.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -28,9 +28,15 @@ gets a concrete parity direction in policy's committed `.design-parity.json` —
|
|
|
28
28
|
- `design-tokens.json` — Material 3 + WCAG AA + i18n-ready token baseline,
|
|
29
29
|
- `design-parity.checks.json` — `@design-parity/checks`'s `ChecksConfig`
|
|
30
30
|
(WCAG AA, hardcoded-string lint on),
|
|
31
|
-
- `design-map.json` — a
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
- `design-map.json` — components that authored a binding next to them — a
|
|
32
|
+
`@DesignRef("figma:…")` annotation or a `design-ref:` comment — become **real,
|
|
33
|
+
high-confidence entries** (source inferred from the ref). The rest, discovered
|
|
34
|
+
by name convention, are surfaced as **low-confidence review items** to wire to
|
|
35
|
+
a design source later. With no authored refs the manifest is an empty scaffold.
|
|
36
|
+
|
|
37
|
+
This is the design→code half of the binding: the code references its design
|
|
38
|
+
element, and the resolver's `buildReverseIndex` inverts the manifest so a design
|
|
39
|
+
node can answer "what implements me?" without Code Connect.
|
|
34
40
|
|
|
35
41
|
## Compose Multiplatform (Principle 6)
|
|
36
42
|
|
package/dist/bootstrap.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAW7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAGrD,qCAAqC;AACrC,MAAM,WAAW,eAAe;IAC9B,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,cAAc,CAAC;IACzB,sEAAsE;IACtE,SAAS,EAAE,iBAAiB,CAAC;IAC7B,4EAA4E;IAC5E,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,6EAA6E;IAC7E,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,wEAAwE;IACxE,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAaD;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,WAAgB,GACrB,OAAO,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAW7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAGrD,qCAAqC;AACrC,MAAM,WAAW,eAAe;IAC9B,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,cAAc,CAAC;IACzB,sEAAsE;IACtE,SAAS,EAAE,iBAAiB,CAAC;IAC7B,4EAA4E;IAC5E,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,6EAA6E;IAC7E,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,wEAAwE;IACxE,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAaD;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,WAAgB,GACrB,OAAO,CAAC,aAAa,CAAC,CA2DxB;AAED,MAAM,WAAW,YAAY;IAC3B,kEAAkE;IAClE,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,mCAAmC;IACnC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gEAAgE;IAChE,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,aAAa,EACnB,IAAI,GAAE,YAAiB,GACtB,OAAO,CAAC,WAAW,CAAC,CActB"}
|
package/dist/bootstrap.js
CHANGED
|
@@ -54,16 +54,22 @@ export async function planBootstrap(repoRoot, opts = {}) {
|
|
|
54
54
|
});
|
|
55
55
|
let review = [];
|
|
56
56
|
if (maturity.rung === "bootstrap") {
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
const discovered = await discoverCodeComponents(repoRoot);
|
|
58
|
+
// Components that authored a @DesignRef are wired in the manifest already;
|
|
59
|
+
// only the unbound ones need a human to link them.
|
|
60
|
+
review = discovered.filter((c) => c.ref === undefined);
|
|
61
|
+
const designMap = seedDesignMap(discovered);
|
|
59
62
|
const check = validateDesignMap(designMap);
|
|
60
63
|
if (!check.valid) {
|
|
61
64
|
// The seeded map is hand-built; an invalid one is a bug in this package.
|
|
62
65
|
throw new Error(`seeded design-map failed schema validation: ${check.errors.join("; ")}`);
|
|
63
66
|
}
|
|
67
|
+
const bound = designMap.components.length;
|
|
64
68
|
await add(TOKENS_FILE, "Material 3 + WCAG AA token baseline", materialBaselineTokens());
|
|
65
69
|
await add(CHECKS_FILE, "a11y + i18n checks config", defaultCheckConfig());
|
|
66
|
-
await add(DESIGN_MAP_FILE,
|
|
70
|
+
await add(DESIGN_MAP_FILE, bound
|
|
71
|
+
? `design-map (${bound} authored via @DesignRef)`
|
|
72
|
+
: "starter design-map (empty scaffold)", designMap);
|
|
67
73
|
}
|
|
68
74
|
return {
|
|
69
75
|
repoRoot,
|
package/dist/bootstrap.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,EACL,WAAW,EACX,WAAW,EACX,eAAe,EACf,WAAW,GACZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAElE,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAqCrD,MAAM,IAAI,GAAG,CAAC,KAAc,EAAU,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AAE/E,KAAK,UAAU,UAAU,CAAC,IAAY;IACpC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAAgB,EAChB,OAAoB,EAAE;IAEtB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEpE,MAAM,SAAS,GAAsB,EAAE,CAAC;IACxC,MAAM,GAAG,GAAG,KAAK,EAAE,IAAY,EAAE,WAAmB,EAAE,KAAc,EAAE,EAAE;QACtE,SAAS,CAAC,IAAI,CAAC;YACb,IAAI;YACJ,WAAW;YACX,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC;YACrB,MAAM,EAAE,MAAM,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;SAC/C,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,4EAA4E;IAC5E,8EAA8E;IAC9E,8EAA8E;IAC9E,cAAc;IACd,MAAM,GAAG,CAAC,WAAW,EAAE,qBAAqB,SAAS,GAAG,EAAE;QACxD,SAAS;QACT,UAAU,EAAE,QAAQ,CAAC,UAAU;KAChC,CAAC,CAAC;IAEH,IAAI,MAAM,GAA0B,EAAE,CAAC;IACvC,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAClC,MAAM,GAAG,MAAM,sBAAsB,CAAC,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
|
package/dist/seed.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { DesignMap } from "@design-parity/core";
|
|
2
|
-
/** One UI component discovered by name convention
|
|
2
|
+
/** One UI component discovered in the repo, by name convention or annotation. */
|
|
3
3
|
export interface DiscoveredComponent {
|
|
4
4
|
/** Code handle in `design-map` form, e.g. `ui/Button.kt#PrimaryButton`. */
|
|
5
5
|
code: string;
|
|
@@ -7,8 +7,14 @@ export interface DiscoveredComponent {
|
|
|
7
7
|
symbol: string;
|
|
8
8
|
/** Repo-relative source file. */
|
|
9
9
|
file: string;
|
|
10
|
-
/**
|
|
11
|
-
|
|
10
|
+
/**
|
|
11
|
+
* The design ref the code authored next to the component — a `@DesignRef("…")`
|
|
12
|
+
* annotation or a `design-ref:` comment. When present the binding is explicit,
|
|
13
|
+
* so {@link seedDesignMap} emits a real manifest entry instead of a review item.
|
|
14
|
+
*/
|
|
15
|
+
ref?: string;
|
|
16
|
+
/** `high` when the code authored a ref; `low` for a name-convention match. */
|
|
17
|
+
confidence: "low" | "high";
|
|
12
18
|
}
|
|
13
19
|
/**
|
|
14
20
|
* Scan `repoRoot` for UI components by name convention. Deterministic: results
|
|
@@ -16,10 +22,11 @@ export interface DiscoveredComponent {
|
|
|
16
22
|
*/
|
|
17
23
|
export declare function discoverCodeComponents(repoRoot: string): Promise<DiscoveredComponent[]>;
|
|
18
24
|
/**
|
|
19
|
-
* Build the starter design-map.
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
25
|
+
* Build the starter design-map. Components that authored a `@DesignRef` become
|
|
26
|
+
* real, schema-valid entries (the code references its design element); the rest
|
|
27
|
+
* stay review items in the bootstrap report. With no authored refs the manifest
|
|
28
|
+
* is an empty scaffold, as before. The `$schema` points at the schema shipped by
|
|
29
|
+
* `@design-parity/core` so editors validate the file in-place.
|
|
23
30
|
*/
|
|
24
|
-
export declare function seedDesignMap(): DesignMap;
|
|
31
|
+
export declare function seedDesignMap(discovered?: DiscoveredComponent[]): DesignMap;
|
|
25
32
|
//# sourceMappingURL=seed.d.ts.map
|
package/dist/seed.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../src/seed.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../src/seed.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,SAAS,EAAgC,MAAM,qBAAqB,CAAC;AAEnF,iFAAiF;AACjF,MAAM,WAAW,mBAAmB;IAClC,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,UAAU,EAAE,KAAK,GAAG,MAAM,CAAC;CAC5B;AA2CD;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAKhC;AA6HD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,UAAU,GAAE,mBAAmB,EAAO,GACrC,SAAS,CAUX"}
|
package/dist/seed.js
CHANGED
|
@@ -93,36 +93,99 @@ async function walk(repoRoot, dir, depth, budget, out) {
|
|
|
93
93
|
continue;
|
|
94
94
|
}
|
|
95
95
|
const rel = relative(repoRoot, full);
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
}
|
|
96
|
+
const markers = extractRefMarkers(text);
|
|
97
|
+
const hits = extractSymbolHits(text, matcher.symbols);
|
|
98
|
+
const symbolIndexes = hits.map((h) => h.index);
|
|
99
|
+
for (const hit of hits) {
|
|
100
|
+
const code = `${rel}#${hit.symbol}`;
|
|
101
|
+
if (out.has(code))
|
|
102
|
+
continue;
|
|
103
|
+
const ref = nearestPrecedingRef(hit.index, markers, symbolIndexes);
|
|
104
|
+
out.set(code, ref
|
|
105
|
+
? { code, symbol: hit.symbol, file: rel, ref, confidence: "high" }
|
|
106
|
+
: { code, symbol: hit.symbol, file: rel, confidence: "low" });
|
|
101
107
|
}
|
|
102
108
|
}
|
|
103
109
|
}
|
|
104
|
-
function
|
|
105
|
-
const
|
|
110
|
+
function extractSymbolHits(text, patterns) {
|
|
111
|
+
const hits = [];
|
|
106
112
|
for (const pattern of patterns) {
|
|
107
113
|
pattern.lastIndex = 0;
|
|
108
114
|
let m;
|
|
109
115
|
while ((m = pattern.exec(text)) !== null) {
|
|
110
116
|
if (m[1])
|
|
111
|
-
|
|
117
|
+
hits.push({ symbol: m[1], index: m.index });
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return hits;
|
|
121
|
+
}
|
|
122
|
+
/** How far before a component a `design-ref` marker may sit (annotations, KDoc). */
|
|
123
|
+
const REF_WINDOW = 300;
|
|
124
|
+
/** A `@DesignRef("…")` annotation or a `design-ref:` comment, any language. */
|
|
125
|
+
const REF_MARKERS = [
|
|
126
|
+
/@DesignRef\s*\(\s*"([^"]+)"\s*\)/g,
|
|
127
|
+
/(?:\/\/|\*|#)\s*@?design-ref[:=\s]\s*(\S+)/gi,
|
|
128
|
+
];
|
|
129
|
+
function extractRefMarkers(text) {
|
|
130
|
+
const markers = [];
|
|
131
|
+
for (const pattern of REF_MARKERS) {
|
|
132
|
+
pattern.lastIndex = 0;
|
|
133
|
+
let m;
|
|
134
|
+
while ((m = pattern.exec(text)) !== null) {
|
|
135
|
+
if (m[1])
|
|
136
|
+
markers.push({ ref: m[1], index: m.index });
|
|
112
137
|
}
|
|
113
138
|
}
|
|
114
|
-
return
|
|
139
|
+
return markers;
|
|
115
140
|
}
|
|
116
141
|
/**
|
|
117
|
-
*
|
|
118
|
-
*
|
|
119
|
-
*
|
|
120
|
-
* by `@design-parity/core` so editors validate the file in-place.
|
|
142
|
+
* The `design-ref` marker bound to the component at `symbolIndex`: the closest
|
|
143
|
+
* marker just before it within the window, but only when no *other* component
|
|
144
|
+
* sits between them (a marker binds to the component it immediately precedes).
|
|
121
145
|
*/
|
|
122
|
-
|
|
146
|
+
function nearestPrecedingRef(symbolIndex, markers, symbolIndexes) {
|
|
147
|
+
let best;
|
|
148
|
+
for (const marker of markers) {
|
|
149
|
+
if (marker.index >= symbolIndex)
|
|
150
|
+
continue;
|
|
151
|
+
if (symbolIndex - marker.index > REF_WINDOW)
|
|
152
|
+
continue;
|
|
153
|
+
if (!best || marker.index > best.index)
|
|
154
|
+
best = marker;
|
|
155
|
+
}
|
|
156
|
+
if (!best)
|
|
157
|
+
return undefined;
|
|
158
|
+
// Reject if another component declaration sits between the marker and this one.
|
|
159
|
+
if (symbolIndexes.some((idx) => idx > best.index && idx < symbolIndex)) {
|
|
160
|
+
return undefined;
|
|
161
|
+
}
|
|
162
|
+
return best.ref;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Build the starter design-map. Components that authored a `@DesignRef` become
|
|
166
|
+
* real, schema-valid entries (the code references its design element); the rest
|
|
167
|
+
* stay review items in the bootstrap report. With no authored refs the manifest
|
|
168
|
+
* is an empty scaffold, as before. The `$schema` points at the schema shipped by
|
|
169
|
+
* `@design-parity/core` so editors validate the file in-place.
|
|
170
|
+
*/
|
|
171
|
+
export function seedDesignMap(discovered = []) {
|
|
172
|
+
const components = discovered
|
|
173
|
+
.filter((c) => c.ref !== undefined)
|
|
174
|
+
.map((c) => ({ code: c.code, source: inferSource(c.ref), ref: c.ref }))
|
|
175
|
+
.sort((a, b) => a.code.localeCompare(b.code));
|
|
123
176
|
return {
|
|
124
177
|
$schema: "./node_modules/@design-parity/core/schema/design-map.schema.json",
|
|
125
|
-
components
|
|
178
|
+
components,
|
|
126
179
|
};
|
|
127
180
|
}
|
|
181
|
+
/** Infer the design source from an authored ref's shape. */
|
|
182
|
+
function inferSource(ref) {
|
|
183
|
+
if (ref.startsWith("figma:") || /figma\.com/.test(ref))
|
|
184
|
+
return "figma";
|
|
185
|
+
if (ref.startsWith("stitch:"))
|
|
186
|
+
return "stitch";
|
|
187
|
+
if (/\.html?(?:$|[?#])/i.test(ref))
|
|
188
|
+
return "claude-design";
|
|
189
|
+
return "bundle";
|
|
190
|
+
}
|
|
128
191
|
//# sourceMappingURL=seed.js.map
|
package/dist/seed.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seed.js","sourceRoot":"","sources":["../src/seed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"seed.js","sourceRoot":"","sources":["../src/seed.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@design-parity/baseline",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "Detect a repo's design-system maturity and, for a repo with no design system, bootstrap an opinionated committed baseline (tokens, design-map, check config, parity direction).",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -20,9 +20,9 @@
|
|
|
20
20
|
"test": "vitest run"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@design-parity/checks": "^0.1.
|
|
24
|
-
"@design-parity/core": "^0.1.
|
|
25
|
-
"@design-parity/policy": "^0.1.
|
|
23
|
+
"@design-parity/checks": "^0.1.4",
|
|
24
|
+
"@design-parity/core": "^0.1.4",
|
|
25
|
+
"@design-parity/policy": "^0.1.4"
|
|
26
26
|
},
|
|
27
27
|
"repository": {
|
|
28
28
|
"type": "git",
|