@design-parity/action 0.1.70 → 0.1.72

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.
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env node
2
+ import type { PlaceholderFill } from "../placeholder.js";
2
3
  export declare const USAGE: string;
3
4
  export interface ImportArgs {
4
5
  repoRoot: string;
@@ -9,6 +10,7 @@ export interface ImportArgs {
9
10
  format: "png" | "svg";
10
11
  scale?: number;
11
12
  contentsOnly: boolean;
13
+ placeholderFill: PlaceholderFill;
12
14
  }
13
15
  export declare function parseArgs(args: string[]): ImportArgs;
14
16
  export declare function main(rawArgs?: string[]): Promise<number>;
@@ -1 +1 @@
1
- {"version":3,"file":"import-cli.d.ts","sourceRoot":"","sources":["../../src/cli/import-cli.ts"],"names":[],"mappings":";AA0CA,eAAO,MAAM,KAAK,QAE2D,CAAC;AAE9E,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,KAAK,GAAG,KAAK,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAiDpD;AAED,wBAAsB,IAAI,CAAC,OAAO,GAAE,MAAM,EAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiE7E"}
1
+ {"version":3,"file":"import-cli.d.ts","sourceRoot":"","sources":["../../src/cli/import-cli.ts"],"names":[],"mappings":";AAuCA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIzD,eAAO,MAAM,KAAK,QAG8C,CAAC;AAEjE,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,KAAK,GAAG,KAAK,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,eAAe,CAAC;CAClC;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CA2DpD;AAED,wBAAsB,IAAI,CAAC,OAAO,GAAE,MAAM,EAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAqE7E"}
@@ -14,9 +14,9 @@
14
14
  * Run it on a schedule, on dispatch, or when the kit changes. It is safe to run
15
15
  * as often as you like: an unchanged file costs one request.
16
16
  *
17
- * Prints `refreshed=`, `carried=`, `failed=`, `unchanged=`, `pruned=` and
18
- * `complete=` — one `name=value` per line, readable in a log and appendable to
19
- * `$GITHUB_OUTPUT` verbatim.
17
+ * Prints `refreshed=`, `carried=`, `failed=`, `unchanged=`, `pruned=`,
18
+ * `placeholders=` and `complete=` — one `name=value` per line, readable in a log
19
+ * and appendable to `$GITHUB_OUTPUT` verbatim.
20
20
  *
21
21
  * Exit code is 0 for a partial import. That is the designed outcome, not a
22
22
  * failure: the cache is strictly better than it was, and the next run finishes
@@ -30,7 +30,8 @@ import { resolveRunConfig } from "../config.js";
30
30
  import { figmaContentsOnlyByNodeOf, figmaRefsOf, importReferences, } from "../import.js";
31
31
  const TOKEN_ENV = ["FIGMA_TOKEN", "FIGMA_PAT", "FIGMA_ACCESS_TOKEN"];
32
32
  export const USAGE = "design-parity import --cache <dir> [--repo .] [--max <n>] [--force] " +
33
- "[--format svg|png] [--scale <n>] [--contents-only true|false] [--prune]\n";
33
+ "[--format svg|png] [--scale <n>] [--contents-only true|false] [--prune] " +
34
+ "[--placeholder-fill flat|checkerboard|transparent|#rrggbb]\n";
34
35
  export function parseArgs(args) {
35
36
  const out = {
36
37
  repoRoot: cwd(),
@@ -39,6 +40,7 @@ export function parseArgs(args) {
39
40
  prune: false,
40
41
  format: "svg",
41
42
  contentsOnly: true,
43
+ placeholderFill: "flat",
42
44
  };
43
45
  for (let i = 0; i < args.length; i++) {
44
46
  const a = args[i];
@@ -76,6 +78,17 @@ export function parseArgs(args) {
76
78
  case "--contents-only":
77
79
  out.contentsOnly = next() !== "false";
78
80
  break;
81
+ case "--placeholder-fill": {
82
+ const v = next();
83
+ // An unrecognised value keeps the default rather than failing the run:
84
+ // an import that refuses to start leaves the cache stale, which is a
85
+ // worse outcome than one placeholder painted the usual grey.
86
+ if (v === "flat" || v === "checkerboard" || v === "transparent")
87
+ out.placeholderFill = v;
88
+ else if (v && /^#[0-9a-fA-F]{3,8}$/.test(v))
89
+ out.placeholderFill = v;
90
+ break;
91
+ }
79
92
  default:
80
93
  break;
81
94
  }
@@ -102,7 +115,7 @@ export async function main(rawArgs = argv.slice(2)) {
102
115
  stdout.write("No figma references in design-map.json — nothing to import.\n");
103
116
  // Not an error: a repo can map every component to another source, and a
104
117
  // scheduled import that fails on it would be noise for a correct config.
105
- stdout.write("refreshed=0\ncarried=0\nfailed=0\nunchanged=\npruned=0\ncomplete=true\n");
118
+ stdout.write("refreshed=0\ncarried=0\nfailed=0\nunchanged=\npruned=0\nplaceholders=0\ncomplete=true\n");
106
119
  return 0;
107
120
  }
108
121
  const clientOpts = {};
@@ -120,6 +133,7 @@ export async function main(rawArgs = argv.slice(2)) {
120
133
  imageFormat: args.format,
121
134
  imageContentsOnly: args.contentsOnly,
122
135
  imageContentsOnlyByNode: figmaContentsOnlyByNodeOf(designMap, args.contentsOnly),
136
+ placeholderFill: args.placeholderFill,
123
137
  ...(args.scale !== undefined ? { imageScale: args.scale } : {}),
124
138
  log: (m) => stdout.write(m + "\n"),
125
139
  });
@@ -137,6 +151,7 @@ export async function main(rawArgs = argv.slice(2)) {
137
151
  stdout.write(`failed=${result.failed}\n`);
138
152
  stdout.write(`unchanged=${result.unchanged.join(",")}\n`);
139
153
  stdout.write(`pruned=${result.pruned.length}\n`);
154
+ stdout.write(`placeholders=${result.placeholders}\n`);
140
155
  stdout.write(`complete=${result.complete}\n`);
141
156
  return 0;
142
157
  }
@@ -1 +1 @@
1
- {"version":3,"file":"import-cli.js","sourceRoot":"","sources":["../../src/cli/import-cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"import-cli.js","sourceRoot":"","sources":["../../src/cli/import-cli.ts"],"names":[],"mappings":"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"}
package/dist/import.d.ts CHANGED
@@ -28,6 +28,7 @@
28
28
  */
29
29
  import { type FigmaRestClient, type ReferenceCacheEntry } from "@design-parity/adapter-figma";
30
30
  import type { DesignMap } from "@design-parity/core";
31
+ import { type PlaceholderFill } from "./placeholder.js";
31
32
  /** One node the import is responsible for. */
32
33
  export interface ImportTarget {
33
34
  fileKey: string;
@@ -51,6 +52,19 @@ export interface ImportOptions {
51
52
  force?: boolean;
52
53
  imageFormat?: "png" | "svg";
53
54
  imageScale?: number;
55
+ /**
56
+ * What to paint where the kit left an image slot empty — a Figma `IMAGE` fill
57
+ * with no image behind it, which Figma renders as its checkerboard.
58
+ *
59
+ * Defaults to `flat`, because a checkerboard is a bad thing to measure
60
+ * against: it amplifies a small geometry error ~8x and then saturates, and
61
+ * two checkerboards at different pitches differ in ~50% of pixels however
62
+ * small the real error. Only the paint is replaced, so the path keeps its
63
+ * geometry and a wrong frame still diffs. `checkerboard` caches Figma's
64
+ * output verbatim. SVG imports only — a PNG render carries no pattern to
65
+ * rewrite. See `placeholder.ts`.
66
+ */
67
+ placeholderFill?: PlaceholderFill;
54
68
  /**
55
69
  * Figma `contents_only` export mode. Defaults to true; false includes
56
70
  * overlapping layers such as component-sheet backgrounds.
@@ -72,6 +86,8 @@ export interface ImportOptions {
72
86
  export interface ImportResult {
73
87
  /** Nodes re-read from Figma and rewritten. */
74
88
  refreshed: number;
89
+ /** Nodes whose empty-image placeholder was normalised (see `placeholderFill`). */
90
+ placeholders: number;
75
91
  /**
76
92
  * Component sets cached alongside them (issue #296). Not catalog nodes: they
77
93
  * are what tells a cache-only run what its references *depict* and what their
@@ -117,7 +133,7 @@ export declare function importTargets(refs: readonly string[]): {
117
133
  * so it sorts ahead of everything else. Ties break on node id purely so the
118
134
  * order is deterministic — two imports of the same cache queue the same work.
119
135
  */
120
- export declare function refreshOrder(nodeIds: readonly string[], entryOf: (nodeId: string) => ReferenceCacheEntry | undefined, fileVersion: string, force: boolean, imageContentsOnly?: boolean | ((nodeId: string) => boolean)): string[];
136
+ export declare function refreshOrder(nodeIds: readonly string[], entryOf: (nodeId: string) => ReferenceCacheEntry | undefined, fileVersion: string, force: boolean, imageContentsOnly?: boolean | ((nodeId: string) => boolean), placeholderFill?: PlaceholderFill): string[];
121
137
  /**
122
138
  * Refresh `cacheDir` towards `refs`. Never throws for a source-side failure —
123
139
  * a partial import is the designed outcome, not an error state.
@@ -1 +1 @@
1
- {"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../src/import.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,EAOL,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACzB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAiBrD,8CAA8C;AAC9C,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,eAAe,CAAC;IACxB,0EAA0E;IAC1E,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,uBAAuB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvD;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,gCAAgC;IAChC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB;;;OAGG;IACH,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,4EAA4E;AAC5E,wBAAgB,WAAW,CAAC,GAAG,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,EAAE,CAWhE;AAED,4DAA4D;AAC5D,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,SAAS,GAAG,SAAS,EAC1B,QAAQ,UAAO,GACd,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAyBtB;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,SAAS,MAAM,EAAE,GACtB;IAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAgBtD;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,mBAAmB,GAAG,SAAS,EAC5D,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,OAAO,EACd,iBAAiB,GAAE,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAQ,GAChE,MAAM,EAAE,CAcV;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAoOjF"}
1
+ {"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../src/import.ts"],"names":[],"mappings":"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"}
package/dist/import.js CHANGED
@@ -28,6 +28,7 @@
28
28
  */
29
29
  import { FigmaNodeNotFoundError, FigmaRateLimitError, ReferenceCacheWriter, cacheKeyOf, parseFigmaRef, } from "@design-parity/adapter-figma";
30
30
  import { entryRefs } from "@design-parity/core";
31
+ import { normalisePlaceholders } from "./placeholder.js";
31
32
  /**
32
33
  * Node ids per `GET /v1/files/:key/nodes`. Mirrors the adapter's own batch
33
34
  * size: small enough that a chunk which fails is cheap to lose, large enough
@@ -121,7 +122,7 @@ export function importTargets(refs) {
121
122
  * so it sorts ahead of everything else. Ties break on node id purely so the
122
123
  * order is deterministic — two imports of the same cache queue the same work.
123
124
  */
124
- export function refreshOrder(nodeIds, entryOf, fileVersion, force, imageContentsOnly = true) {
125
+ export function refreshOrder(nodeIds, entryOf, fileVersion, force, imageContentsOnly = true, placeholderFill = "checkerboard") {
125
126
  const due = nodeIds.filter((id) => {
126
127
  const entry = entryOf(id);
127
128
  if (!entry || !entry.image)
@@ -129,6 +130,13 @@ export function refreshOrder(nodeIds, entryOf, fileVersion, force, imageContents
129
130
  const desired = typeof imageContentsOnly === "function" ? imageContentsOnly(id) : imageContentsOnly;
130
131
  if ((entry.imageContentsOnly ?? true) !== desired)
131
132
  return true;
133
+ // A mode change is a reason to refresh, exactly as `contentsOnly` above is:
134
+ // the paint is applied at download, so without this the new mode reaches
135
+ // only nodes re-read for some other reason and the cache ends up half
136
+ // normalised, with nothing on it saying which half is which. An entry
137
+ // written before the option existed carries a checkerboard.
138
+ if ((entry.imagePlaceholderFill ?? "checkerboard") !== placeholderFill)
139
+ return true;
132
140
  return force || entry.fileVersion !== fileVersion;
133
141
  });
134
142
  return due.sort((a, b) => {
@@ -148,8 +156,10 @@ export async function importReferences(opts) {
148
156
  const contentsOnlyFor = (fileKey, nodeId) => opts.imageContentsOnlyByNode?.get(cacheKeyOf(fileKey, nodeId)) ?? imageContentsOnly;
149
157
  const format = opts.imageFormat ?? "svg";
150
158
  const limit = opts.limit && opts.limit > 0 ? opts.limit : Infinity;
159
+ const placeholderFill = opts.placeholderFill ?? "flat";
151
160
  const result = {
152
161
  refreshed: 0,
162
+ placeholders: 0,
153
163
  sets: 0,
154
164
  carried: 0,
155
165
  failed: 0,
@@ -187,7 +197,7 @@ export async function importReferences(opts) {
187
197
  continue;
188
198
  }
189
199
  writer.setFile(fileKey, { version, fetchedAt: now().toISOString(), ...(lastModified ? { lastModified } : {}) });
190
- const due = refreshOrder(nodeIds, (id) => writer.entry(fileKey, id), version, opts.force === true, (id) => contentsOnlyFor(fileKey, id));
200
+ const due = refreshOrder(nodeIds, (id) => writer.entry(fileKey, id), version, opts.force === true, (id) => contentsOnlyFor(fileKey, id), placeholderFill);
191
201
  if (due.length === 0) {
192
202
  result.unchanged.push(fileKey);
193
203
  result.carried += nodeIds.length;
@@ -319,14 +329,29 @@ export async function importReferences(opts) {
319
329
  }
320
330
  try {
321
331
  const nodeContentsOnly = contentsOnlyFor(fileKey, nodeId);
322
- const bytes = await opts.client.downloadImage(url, nodeId);
332
+ let bytes = await opts.client.downloadImage(url, nodeId);
333
+ if (format === "svg" && placeholderFill !== "checkerboard") {
334
+ // Normalise before the bytes are cached, so the committed reference
335
+ // and every run reading it see the same thing. Reported per node
336
+ // rather than applied silently: the reference deliberately stops
337
+ // matching what Figma renders for these, and that is worth saying.
338
+ const { svg, rewrites } = normalisePlaceholders(Buffer.from(bytes).toString("utf8"), placeholderFill);
339
+ if (rewrites.length > 0) {
340
+ bytes = new Uint8Array(Buffer.from(svg, "utf8"));
341
+ result.placeholders += 1;
342
+ for (const r of rewrites) {
343
+ log(`${fileKey}/${nodeId}: empty image fill ${r.colors.join("/")} ` +
344
+ `(${r.sha256.slice(0, 12)}) painted ${r.paint}.`);
345
+ }
346
+ }
347
+ }
323
348
  await writer.put({
324
349
  fileKey,
325
350
  nodeId,
326
351
  fileVersion: version,
327
352
  fetchedAt: now().toISOString(),
328
353
  node,
329
- image: { bytes, format, contentsOnly: nodeContentsOnly },
354
+ image: { bytes, format, contentsOnly: nodeContentsOnly, placeholderFill },
330
355
  });
331
356
  result.refreshed += 1;
332
357
  }
@@ -1 +1 @@
1
- {"version":3,"file":"import.js","sourceRoot":"","sources":["../src/import.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"import.js","sourceRoot":"","sources":["../src/import.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import { PNG } from "pngjs";
2
+ /**
3
+ * What to paint where the kit left an image slot empty.
4
+ *
5
+ * `flat` is the default because it is the only option whose reported difference
6
+ * stays monotonic across the whole error range. A bordered, transparent box is
7
+ * the mirror failure of the checkerboard: sensitive at 1dp (2.5%) but flat by
8
+ * 10dp (4.4%), because once the two outlines separate the difference stops
9
+ * growing.
10
+ */
11
+ export type PlaceholderFill = "flat" | "checkerboard" | "transparent"
12
+ /** An explicit `#RGB`, `#RRGGBB` or `#RRGGBBAA`. */
13
+ | `#${string}`;
14
+ /** One placeholder the normaliser replaced, for the import's log. */
15
+ export interface PlaceholderRewrite {
16
+ /** `<image>` element id carrying the tile. */
17
+ imageId: string;
18
+ /** Pattern ids that painted with it, and so the fills that were rewritten. */
19
+ patternIds: string[];
20
+ /** Tile checksum, so a kit whose placeholder changes is identifiable. */
21
+ sha256: string;
22
+ /** The tile's two colours, as `#rrggbb`. */
23
+ colors: [string, string];
24
+ /** What was painted instead: a colour, or `none` for transparent. */
25
+ paint: string;
26
+ }
27
+ export interface NormaliseResult {
28
+ svg: string;
29
+ rewrites: PlaceholderRewrite[];
30
+ }
31
+ /**
32
+ * Is this tile a regular two-colour checkerboard?
33
+ *
34
+ * Structural rather than a checksum list: Figma is free to change the asset,
35
+ * and a kit is free to ship its own. The checksum is reported, not matched on.
36
+ */
37
+ export declare function isCheckerboard(png: PNG): {
38
+ colors: [string, string];
39
+ } | null;
40
+ /**
41
+ * Replace every empty-image placeholder in `svg` with `fill`.
42
+ *
43
+ * Returns the SVG unchanged, with no rewrites, when `fill` is `checkerboard` or
44
+ * the document carries no placeholder — so a caller can apply it unconditionally.
45
+ */
46
+ export declare function normalisePlaceholders(svg: string, fill: PlaceholderFill): NormaliseResult;
47
+ //# sourceMappingURL=placeholder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"placeholder.d.ts","sourceRoot":"","sources":["../src/placeholder.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,GACvB,MAAM,GACN,cAAc,GACd,aAAa;AACf,oDAAoD;GAClD,IAAI,MAAM,EAAE,CAAC;AAEjB,qEAAqE;AACrE,MAAM,WAAW,kBAAkB;IACjC,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,yEAAyE;IACzE,MAAM,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzB,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,kBAAkB,EAAE,CAAC;CAChC;AA2CD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG;IAAE,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,IAAI,CAkD5E;AAYD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,eAAe,CAgEzF"}
@@ -0,0 +1,201 @@
1
+ /**
2
+ * Normalise Figma's empty-image placeholder in a cached reference SVG.
3
+ *
4
+ * A Figma `IMAGE` fill with no image behind it renders as Figma's checkerboard,
5
+ * and caching that verbatim makes the reference a bad measuring instrument. A
6
+ * checkerboard converts a SMALL geometry error into a LARGE pixel difference and
7
+ * then stops responding: measured over a 236x132 region against the kit's own
8
+ * grid, a 1dp shift reports 6.8% of pixels differing where a flat fill reports
9
+ * 0.8%, a 3dp shift 20.3% against 2.5%, and a 10dp shift 67.8% against 8.5% —
10
+ * by which point it is indistinguishable from a component that is entirely
11
+ * wrong. Worse, two checkerboards at different PITCHES differ in ~50% of pixels
12
+ * however small the underlying error, because the grids decorrelate. A consumer
13
+ * whose slot is 42dp against the kit's 64dp scores the same as one drawing
14
+ * nothing at all.
15
+ *
16
+ * So the paint is replaced and nothing else. The path keeps its geometry —
17
+ * position, size, corner radius, the clip it sits in — so the shape is still
18
+ * fully compared and a wrong frame still diffs, in proportion to how wrong it
19
+ * is. This is the opposite of masking the region, which would answer the
20
+ * saturation problem by discarding the measurement.
21
+ *
22
+ * The reference then no longer matches what Figma renders for those nodes. That
23
+ * is the trade, and it is why every rewrite is reported per node rather than
24
+ * applied silently.
25
+ */
26
+ import { createHash } from "node:crypto";
27
+ import { PNG } from "pngjs";
28
+ /**
29
+ * The fewest bands per axis worth calling a checkerboard.
30
+ *
31
+ * A two-colour image is not remarkable — a mask, a duotone icon and a
32
+ * half-and-half swatch are all two colours. Requiring a repeating grid is what
33
+ * separates Figma's placeholder from artwork that happens to be flat.
34
+ */
35
+ const MIN_BANDS = 4;
36
+ /** Largest tile worth decoding. Figma's is 400x400; artwork is far bigger. */
37
+ const MAX_TILE = 1024;
38
+ const IMAGE_ELEMENT = /<image\s+id="([^"]+)"[^>]*?\swidth="(\d+)"\s+height="(\d+)"[^>]*?xlink:href="data:image\/png;base64,([^"]+)"[^>]*\/>/g;
39
+ const hex = (r, g, b) => `#${[r, g, b].map((v) => v.toString(16).padStart(2, "0")).join("")}`;
40
+ /**
41
+ * Band boundaries along one axis, or null where the runs are not uniform.
42
+ *
43
+ * Figma's own tile does not start its grid at its edge — the bands break at
44
+ * 26px then every 50px in a 400px image — so the first and last runs are
45
+ * allowed to be short and only the interior ones have to agree.
46
+ */
47
+ function bands(at, length) {
48
+ const edges = [];
49
+ for (let i = 1; i < length; i++)
50
+ if (at(i) !== at(i - 1))
51
+ edges.push(i);
52
+ if (edges.length + 1 < MIN_BANDS)
53
+ return null;
54
+ const interior = [];
55
+ for (let i = 1; i < edges.length; i++)
56
+ interior.push(edges[i] - edges[i - 1]);
57
+ if (interior.length === 0)
58
+ return null;
59
+ const first = interior[0];
60
+ if (first <= 0)
61
+ return null;
62
+ if (interior.some((run) => run !== first))
63
+ return null;
64
+ // The leading and trailing partial runs must fit inside one full band, or
65
+ // this is a stripe pattern with an unrelated margin rather than a grid.
66
+ if (edges[0] > first || length - edges[edges.length - 1] > first)
67
+ return null;
68
+ return edges;
69
+ }
70
+ /**
71
+ * Is this tile a regular two-colour checkerboard?
72
+ *
73
+ * Structural rather than a checksum list: Figma is free to change the asset,
74
+ * and a kit is free to ship its own. The checksum is reported, not matched on.
75
+ */
76
+ export function isCheckerboard(png) {
77
+ const { width, height, data } = png;
78
+ if (width < MIN_BANDS || height < MIN_BANDS)
79
+ return null;
80
+ if (width > MAX_TILE || height > MAX_TILE)
81
+ return null;
82
+ const seen = new Map();
83
+ for (let i = 0; i < data.length; i += 4) {
84
+ const a = data[i + 3];
85
+ if (a !== 255)
86
+ return null; // A translucent tile is not the placeholder.
87
+ const r = data[i];
88
+ const g = data[i + 1];
89
+ const b = data[i + 2];
90
+ const key = (r << 16) | (g << 8) | b;
91
+ if (!seen.has(key)) {
92
+ if (seen.size === 2)
93
+ return null;
94
+ seen.set(key, [r, g, b]);
95
+ }
96
+ }
97
+ if (seen.size !== 2)
98
+ return null;
99
+ const keys = [...seen.keys()];
100
+ const at = (x, y) => {
101
+ const i = (y * width + x) * 4;
102
+ return ((data[i] << 16) | (data[i + 1] << 8) | data[i + 2]) === keys[0] ? 0 : 1;
103
+ };
104
+ const mid = { x: Math.floor(width / 2), y: Math.floor(height / 2) };
105
+ const cols = bands((i) => at(i, mid.y), width);
106
+ const rows = bands((i) => at(mid.x, i), height);
107
+ if (!cols || !rows)
108
+ return null;
109
+ // Every pixel must agree with the grid the two mid-lines imply. A tile that
110
+ // is two colours in regular bands but not ALTERNATING them — vertical stripes
111
+ // — fails here rather than being normalised away.
112
+ const pitchX = cols.length > 1 ? cols[1] - cols[0] : width;
113
+ const pitchY = rows.length > 1 ? rows[1] - rows[0] : height;
114
+ const originX = cols[0] - pitchX;
115
+ const originY = rows[0] - pitchY;
116
+ const base = at(0, 0);
117
+ for (let y = 0; y < height; y++) {
118
+ const row = Math.floor((y - originY) / pitchY);
119
+ for (let x = 0; x < width; x++) {
120
+ const col = Math.floor((x - originX) / pitchX);
121
+ const expected = (row + col) % 2 === 0 ? base : 1 - base;
122
+ if (at(x, y) !== expected)
123
+ return null;
124
+ }
125
+ }
126
+ const [c0, c1] = keys.map((k) => seen.get(k));
127
+ return { colors: [hex(...c0), hex(...c1)] };
128
+ }
129
+ /** The mean of the tile's two colours — the checkerboard, blurred. */
130
+ function meanColor(a, b) {
131
+ const part = (s, i) => parseInt(s.slice(1 + i * 2, 3 + i * 2), 16);
132
+ return hex(Math.round((part(a, 0) + part(b, 0)) / 2), Math.round((part(a, 1) + part(b, 1)) / 2), Math.round((part(a, 2) + part(b, 2)) / 2));
133
+ }
134
+ /**
135
+ * Replace every empty-image placeholder in `svg` with `fill`.
136
+ *
137
+ * Returns the SVG unchanged, with no rewrites, when `fill` is `checkerboard` or
138
+ * the document carries no placeholder — so a caller can apply it unconditionally.
139
+ */
140
+ export function normalisePlaceholders(svg, fill) {
141
+ if (fill === "checkerboard")
142
+ return { svg, rewrites: [] };
143
+ const tiles = new Map();
144
+ for (const match of svg.matchAll(IMAGE_ELEMENT)) {
145
+ const [, id, , , b64] = match;
146
+ let png;
147
+ let bytes;
148
+ try {
149
+ bytes = Buffer.from(b64, "base64");
150
+ png = PNG.sync.read(bytes);
151
+ }
152
+ catch {
153
+ continue; // Not a PNG we can read is not a placeholder we can identify.
154
+ }
155
+ const checker = isCheckerboard(png);
156
+ if (!checker)
157
+ continue;
158
+ tiles.set(id, {
159
+ sha256: createHash("sha256").update(bytes).digest("hex"),
160
+ colors: checker.colors,
161
+ });
162
+ }
163
+ if (tiles.size === 0)
164
+ return { svg, rewrites: [] };
165
+ // Which patterns paint with those tiles. A pattern wraps a <use> of the
166
+ // <image>, and a path names the pattern — so the fill is two hops from the
167
+ // pixels, and both have to be walked to reach it.
168
+ const byImage = new Map();
169
+ for (const match of svg.matchAll(/<pattern\s+id="([^"]+)"[^>]*>([\s\S]*?)<\/pattern>/g)) {
170
+ const [, patternId, body] = match;
171
+ for (const use of body.matchAll(/xlink:href="#([^"]+)"/g)) {
172
+ const imageId = use[1];
173
+ if (!tiles.has(imageId))
174
+ continue;
175
+ byImage.set(imageId, [...(byImage.get(imageId) ?? []), patternId]);
176
+ }
177
+ }
178
+ const rewrites = [];
179
+ let out = svg;
180
+ for (const [imageId, tile] of tiles) {
181
+ const patternIds = byImage.get(imageId) ?? [];
182
+ if (patternIds.length === 0)
183
+ continue; // Cached but unpainted: leave it be.
184
+ const paint = fill === "transparent"
185
+ ? "none"
186
+ : fill === "flat"
187
+ ? meanColor(tile.colors[0], tile.colors[1])
188
+ : fill;
189
+ for (const patternId of patternIds) {
190
+ out = out.split(`url(#${patternId})`).join(paint);
191
+ // The pattern and its tile are now unreferenced, and the tile is the bulk
192
+ // of the file — a 400x400 PNG per placeholder, base64'd.
193
+ out = out.replace(new RegExp(`<pattern\\s+id="${escapeId(patternId)}"[^>]*>[\\s\\S]*?</pattern>\\n?`), "");
194
+ }
195
+ out = out.replace(new RegExp(`<image\\s+id="${escapeId(imageId)}"[^>]*?/>\\n?`), "");
196
+ rewrites.push({ imageId, patternIds, sha256: tile.sha256, colors: tile.colors, paint });
197
+ }
198
+ return { svg: out, rewrites };
199
+ }
200
+ const escapeId = (id) => id.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
201
+ //# sourceMappingURL=placeholder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"placeholder.js","sourceRoot":"","sources":["../src/placeholder.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@design-parity/action",
3
- "version": "0.1.70",
3
+ "version": "0.1.72",
4
4
  "description": "Integration layer: wires resolver, adapters, candidate, checks, diff, and policy into a parity run, and surfaces the verdict (CLI now; GitHub Action surface to follow).",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -28,18 +28,19 @@
28
28
  },
29
29
  "dependencies": {
30
30
  "ajv": "8.20.0",
31
- "@design-parity/core": "0.1.70",
32
- "@design-parity/resolver": "0.1.70",
33
- "@design-parity/policy": "0.1.70",
34
- "@design-parity/diff": "0.1.70",
35
- "@design-parity/report-html": "0.1.70",
36
- "@design-parity/catalog-export": "0.1.70",
37
- "@design-parity/checks": "0.1.70",
38
- "@design-parity/candidate": "0.1.70",
39
- "@design-parity/adapter-figma": "0.1.70",
40
- "@design-parity/adapter-stitch": "0.1.70",
41
- "@design-parity/adapter-claude-design": "0.1.70",
42
- "@design-parity/adapter-bundle": "0.1.70"
31
+ "@design-parity/core": "0.1.72",
32
+ "@design-parity/resolver": "0.1.72",
33
+ "@design-parity/policy": "0.1.72",
34
+ "@design-parity/diff": "0.1.72",
35
+ "@design-parity/report-html": "0.1.72",
36
+ "@design-parity/catalog-export": "0.1.72",
37
+ "@design-parity/checks": "0.1.72",
38
+ "@design-parity/candidate": "0.1.72",
39
+ "@design-parity/adapter-figma": "0.1.72",
40
+ "@design-parity/adapter-stitch": "0.1.72",
41
+ "@design-parity/adapter-claude-design": "0.1.72",
42
+ "@design-parity/adapter-bundle": "0.1.72",
43
+ "pngjs": "7.0.0"
43
44
  },
44
45
  "repository": {
45
46
  "type": "git",
@@ -47,5 +48,8 @@
47
48
  "directory": "packages/action"
48
49
  },
49
50
  "homepage": "https://github.com/yschimke/design-parity/tree/main/packages/action#readme",
50
- "bugs": "https://github.com/yschimke/design-parity/issues"
51
+ "bugs": "https://github.com/yschimke/design-parity/issues",
52
+ "devDependencies": {
53
+ "@types/pngjs": "6.0.5"
54
+ }
51
55
  }