@ethlete/cli 3.0.0-next.23 → 3.0.0-next.25

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 (202) hide show
  1. package/CHANGELOG.md +85 -0
  2. package/design/contrast.ts +49 -0
  3. package/design/define-call.ts +48 -8
  4. package/design/define-part.ts +83 -1
  5. package/design/embed-page.ts +37 -4
  6. package/design/icon-sheet.ts +151 -0
  7. package/design/mark-part.ts +79 -2
  8. package/design/morph.ts +67 -0
  9. package/design/motion-runtime.ts +407 -0
  10. package/design/spring.ts +53 -0
  11. package/design/token-sheet.ts +87 -0
  12. package/design/web/env.d.ts +6 -2
  13. package/design/web/frame.ts +159 -6
  14. package/package.json +2 -1
  15. package/src/lib/design/calls-tsconfig.js +1 -2
  16. package/src/lib/design/calls-tsconfig.js.map +1 -1
  17. package/src/lib/design/changed-parts.d.ts +4 -4
  18. package/src/lib/design/changed-parts.js +10 -6
  19. package/src/lib/design/changed-parts.js.map +1 -1
  20. package/src/lib/design/contact-sheet.d.ts +26 -13
  21. package/src/lib/design/contact-sheet.js +122 -40
  22. package/src/lib/design/contact-sheet.js.map +1 -1
  23. package/src/lib/design/design-command.js +50 -2
  24. package/src/lib/design/design-command.js.map +1 -1
  25. package/src/lib/design/force-interactions.d.ts +2 -1
  26. package/src/lib/design/force-interactions.js +7 -4
  27. package/src/lib/design/force-interactions.js.map +1 -1
  28. package/src/lib/design/generated-stylesheets.d.ts +15 -0
  29. package/src/lib/design/generated-stylesheets.js +52 -0
  30. package/src/lib/design/generated-stylesheets.js.map +1 -0
  31. package/src/lib/design/inbox-command.d.ts +1 -0
  32. package/src/lib/design/inbox-command.js +15 -0
  33. package/src/lib/design/inbox-command.js.map +1 -1
  34. package/src/lib/design/mcp-command.d.ts +60 -0
  35. package/src/lib/design/mcp-command.js +327 -0
  36. package/src/lib/design/mcp-command.js.map +1 -0
  37. package/src/lib/design/merge-compare.d.ts +10 -0
  38. package/src/lib/design/merge-compare.js +17 -4
  39. package/src/lib/design/merge-compare.js.map +1 -1
  40. package/src/lib/design/motion-command.d.ts +71 -0
  41. package/src/lib/design/motion-command.js +314 -0
  42. package/src/lib/design/motion-command.js.map +1 -0
  43. package/src/lib/design/motion-endpoint.d.ts +61 -0
  44. package/src/lib/design/motion-endpoint.js +133 -0
  45. package/src/lib/design/motion-endpoint.js.map +1 -0
  46. package/src/lib/design/motion-flow.d.ts +5 -0
  47. package/src/lib/design/motion-flow.js +29 -0
  48. package/src/lib/design/motion-flow.js.map +1 -0
  49. package/src/lib/design/motion-shot.d.ts +43 -0
  50. package/src/lib/design/motion-shot.js +97 -0
  51. package/src/lib/design/motion-shot.js.map +1 -0
  52. package/src/lib/design/paths.d.ts +11 -0
  53. package/src/lib/design/paths.js.map +1 -1
  54. package/src/lib/design/ready-shots.d.ts +7 -0
  55. package/src/lib/design/ready-shots.js +22 -1
  56. package/src/lib/design/ready-shots.js.map +1 -1
  57. package/src/lib/design/render-packages.d.ts +9 -0
  58. package/src/lib/design/render-packages.js +13 -3
  59. package/src/lib/design/render-packages.js.map +1 -1
  60. package/src/lib/design/render.js +3 -3
  61. package/src/lib/design/render.js.map +1 -1
  62. package/src/lib/design/serve.js +108 -21
  63. package/src/lib/design/serve.js.map +1 -1
  64. package/src/lib/design/shot-command.d.ts +12 -6
  65. package/src/lib/design/shot-command.js +60 -48
  66. package/src/lib/design/shot-command.js.map +1 -1
  67. package/src/lib/design/shot.d.ts +30 -4
  68. package/src/lib/design/shot.js +138 -53
  69. package/src/lib/design/shot.js.map +1 -1
  70. package/src/lib/design/sketch-command.js +132 -39
  71. package/src/lib/design/sketch-command.js.map +1 -1
  72. package/src/lib/design/sketch-stylesheets.d.ts +7 -0
  73. package/src/lib/design/sketch-stylesheets.js +63 -0
  74. package/src/lib/design/sketch-stylesheets.js.map +1 -0
  75. package/src/lib/design/studio-api.d.ts +28 -6
  76. package/src/lib/design/studio-api.js +102 -17
  77. package/src/lib/design/studio-api.js.map +1 -1
  78. package/src/lib/design/system/check-system.js +8 -0
  79. package/src/lib/design/system/check-system.js.map +1 -1
  80. package/src/lib/design/system/comments/comment.d.ts +17 -0
  81. package/src/lib/design/system/comments/comment.js +35 -1
  82. package/src/lib/design/system/comments/comment.js.map +1 -1
  83. package/src/lib/design/system/comments/complete.js +4 -2
  84. package/src/lib/design/system/comments/complete.js.map +1 -1
  85. package/src/lib/design/system/complete-command.d.ts +9 -0
  86. package/src/lib/design/system/complete-command.js +134 -0
  87. package/src/lib/design/system/complete-command.js.map +1 -0
  88. package/src/lib/design/system/complete.d.ts +171 -0
  89. package/src/lib/design/system/complete.js +1106 -0
  90. package/src/lib/design/system/complete.js.map +1 -0
  91. package/src/lib/design/system/contrast-check.d.ts +26 -0
  92. package/src/lib/design/system/contrast-check.js +153 -0
  93. package/src/lib/design/system/contrast-check.js.map +1 -0
  94. package/src/lib/design/system/exceptions.d.ts +59 -0
  95. package/src/lib/design/system/exceptions.js +132 -0
  96. package/src/lib/design/system/exceptions.js.map +1 -0
  97. package/src/lib/design/system/flows/flow.d.ts +3 -0
  98. package/src/lib/design/system/flows/flow.js +5 -3
  99. package/src/lib/design/system/flows/flow.js.map +1 -1
  100. package/src/lib/design/system/handoff.d.ts +11 -0
  101. package/src/lib/design/system/handoff.js +30 -0
  102. package/src/lib/design/system/handoff.js.map +1 -0
  103. package/src/lib/design/system/imports.d.ts +28 -3
  104. package/src/lib/design/system/imports.js +84 -7
  105. package/src/lib/design/system/imports.js.map +1 -1
  106. package/src/lib/design/system/inventory-approval.d.ts +41 -0
  107. package/src/lib/design/system/inventory-approval.js +71 -0
  108. package/src/lib/design/system/inventory-approval.js.map +1 -0
  109. package/src/lib/design/system/inventory.d.ts +65 -0
  110. package/src/lib/design/system/inventory.js +168 -0
  111. package/src/lib/design/system/inventory.js.map +1 -0
  112. package/src/lib/design/system/list-system.d.ts +11 -0
  113. package/src/lib/design/system/list-system.js +26 -3
  114. package/src/lib/design/system/list-system.js.map +1 -1
  115. package/src/lib/design/system/product-stylesheets.d.ts +3 -0
  116. package/src/lib/design/system/product-stylesheets.js +40 -0
  117. package/src/lib/design/system/product-stylesheets.js.map +1 -0
  118. package/src/lib/design/system/render-check.js +30 -4
  119. package/src/lib/design/system/render-check.js.map +1 -1
  120. package/src/lib/design/system/resolve-product.d.ts +2 -3
  121. package/src/lib/design/system/resolve-product.js +4 -6
  122. package/src/lib/design/system/resolve-product.js.map +1 -1
  123. package/src/lib/design/system/rules/canonical-class.d.ts +9 -0
  124. package/src/lib/design/system/rules/canonical-class.js +132 -0
  125. package/src/lib/design/system/rules/canonical-class.js.map +1 -0
  126. package/src/lib/design/system/rules/inline-svg.d.ts +7 -0
  127. package/src/lib/design/system/rules/inline-svg.js +28 -0
  128. package/src/lib/design/system/rules/inline-svg.js.map +1 -0
  129. package/src/lib/design/system/rules/motion.d.ts +4 -0
  130. package/src/lib/design/system/rules/motion.js +46 -2
  131. package/src/lib/design/system/rules/motion.js.map +1 -1
  132. package/src/lib/design/system/rules/stale-replace.js +41 -2
  133. package/src/lib/design/system/rules/stale-replace.js.map +1 -1
  134. package/src/lib/design/system/rules/token-selectors.js +1 -1
  135. package/src/lib/design/system/rules/token-selectors.js.map +1 -1
  136. package/src/lib/design/system/rules/utility-css.d.ts +11 -0
  137. package/src/lib/design/system/rules/utility-css.js +290 -0
  138. package/src/lib/design/system/rules/utility-css.js.map +1 -0
  139. package/src/lib/design/system/sketch/baseline.d.ts +3 -2
  140. package/src/lib/design/system/sketch/baseline.js +10 -4
  141. package/src/lib/design/system/sketch/baseline.js.map +1 -1
  142. package/src/lib/design/system/sketch/host-edit.d.ts +4 -0
  143. package/src/lib/design/system/sketch/host-edit.js +68 -0
  144. package/src/lib/design/system/sketch/host-edit.js.map +1 -0
  145. package/src/lib/design/system/sketch/merge-preview.d.ts +4 -2
  146. package/src/lib/design/system/sketch/merge-preview.js +20 -3
  147. package/src/lib/design/system/sketch/merge-preview.js.map +1 -1
  148. package/src/lib/design/system/sketch/merge-shared.d.ts +42 -6
  149. package/src/lib/design/system/sketch/merge-shared.js +122 -24
  150. package/src/lib/design/system/sketch/merge-shared.js.map +1 -1
  151. package/src/lib/design/system/sketch/merge.d.ts +6 -5
  152. package/src/lib/design/system/sketch/merge.js +95 -35
  153. package/src/lib/design/system/sketch/merge.js.map +1 -1
  154. package/src/lib/design/system/sketch/merged-parts.d.ts +17 -0
  155. package/src/lib/design/system/sketch/merged-parts.js +35 -2
  156. package/src/lib/design/system/sketch/merged-parts.js.map +1 -1
  157. package/src/lib/design/system/sketch/no-visible-change.d.ts +10 -3
  158. package/src/lib/design/system/sketch/no-visible-change.js +75 -20
  159. package/src/lib/design/system/sketch/no-visible-change.js.map +1 -1
  160. package/src/lib/design/system/sketch/overlay.js +16 -3
  161. package/src/lib/design/system/sketch/overlay.js.map +1 -1
  162. package/src/lib/design/system/sketch/part-definition.d.ts +12 -0
  163. package/src/lib/design/system/sketch/part-definition.js +40 -1
  164. package/src/lib/design/system/sketch/part-definition.js.map +1 -1
  165. package/src/lib/design/system/sketch/sketch.d.ts +40 -3
  166. package/src/lib/design/system/sketch/sketch.js +147 -50
  167. package/src/lib/design/system/sketch/sketch.js.map +1 -1
  168. package/src/lib/design/system/sketch/unchanged-states.d.ts +10 -4
  169. package/src/lib/design/system/sketch/unchanged-states.js +37 -23
  170. package/src/lib/design/system/sketch/unchanged-states.js.map +1 -1
  171. package/src/lib/design/system/sketch/unused-closure.d.ts +12 -0
  172. package/src/lib/design/system/sketch/unused-closure.js +185 -0
  173. package/src/lib/design/system/sketch/unused-closure.js.map +1 -0
  174. package/src/lib/design/system/system-modules.d.ts +5 -1
  175. package/src/lib/design/system/system-modules.js +32 -17
  176. package/src/lib/design/system/system-modules.js.map +1 -1
  177. package/src/lib/design/system/system-tsconfig.d.ts +2 -1
  178. package/src/lib/design/system/system-tsconfig.js +11 -6
  179. package/src/lib/design/system/system-tsconfig.js.map +1 -1
  180. package/src/lib/design/thumb.d.ts +6 -2
  181. package/src/lib/design/thumb.js +36 -15
  182. package/src/lib/design/thumb.js.map +1 -1
  183. package/src/lib/design/variant-diff.d.ts +12 -10
  184. package/src/lib/design/variant-diff.js +14 -13
  185. package/src/lib/design/variant-diff.js.map +1 -1
  186. package/src/lib/design/warm-pages.d.ts +20 -0
  187. package/src/lib/design/warm-pages.js +78 -0
  188. package/src/lib/design/warm-pages.js.map +1 -0
  189. package/src/lib/update/commits.d.ts +9 -0
  190. package/src/lib/update/commits.js +15 -1
  191. package/src/lib/update/commits.js.map +1 -1
  192. package/src/lib/update/migration-manifest.d.ts +6 -0
  193. package/src/lib/update/migration-manifest.js +7 -0
  194. package/src/lib/update/migration-manifest.js.map +1 -1
  195. package/src/lib/update/migrations-command.js +1 -0
  196. package/src/lib/update/migrations-command.js.map +1 -1
  197. package/src/lib/update/run-migrations.d.ts +22 -0
  198. package/src/lib/update/run-migrations.js +60 -1
  199. package/src/lib/update/run-migrations.js.map +1 -1
  200. package/src/lib/update/update-command.d.ts +10 -0
  201. package/src/lib/update/update-command.js +28 -2
  202. package/src/lib/update/update-command.js.map +1 -1
@@ -8,6 +8,7 @@ const check_system_1 = require("../check-system");
8
8
  const comment_1 = require("../comments/comment");
9
9
  const assets_1 = require("../assets");
10
10
  const product_1 = require("../product");
11
+ const base_1 = require("../base");
11
12
  const resolve_product_1 = require("../resolve-product");
12
13
  const baseline_1 = require("./baseline");
13
14
  const merge_shared_1 = require("./merge-shared");
@@ -24,6 +25,8 @@ const swap = (entries) => {
24
25
  });
25
26
  for (const { from, to } of entries) {
26
27
  (0, fs_1.rmSync)(to, { recursive: true, force: true });
28
+ if (from === null)
29
+ continue;
27
30
  (0, fs_1.mkdirSync)((0, path_1.dirname)(to), { recursive: true });
28
31
  (0, fs_1.cpSync)(from, to, { recursive: true });
29
32
  }
@@ -47,8 +50,40 @@ const pickOf = (sketch) => {
47
50
  return `${sketch.target} has no variant "${decision.variant}", the one picked - it has ${sketch.variants.join(', ') || 'none'}`;
48
51
  return { variant: decision.variant };
49
52
  };
53
+ const notedTargetOf = (options) => {
54
+ var _a, _b, _c, _d, _e;
55
+ const { sketch, variant, parts, product, root, key, note } = options;
56
+ const name = (_a = key.split('/')[1]) !== null && _a !== void 0 ? _a : '';
57
+ const targetDir = (0, path_1.resolve)(root, key);
58
+ const noteFile = (0, path_1.resolve)(targetDir, `${name}.ts`);
59
+ const carried = (_b = parts.find((part) => (0, resolve_product_1.partKeyOf)(part) === key)) === null || _b === void 0 ? void 0 : _b.file;
60
+ const inherited = carried || (0, fs_1.existsSync)(noteFile) ? null : ((_c = product.parts.find((part) => (0, resolve_product_1.partKeyOf)(part) === key)) !== null && _c !== void 0 ? _c : null);
61
+ const held = carried !== null && carried !== void 0 ? carried : (inherited ? inherited.file : noteFile);
62
+ if (!(0, fs_1.existsSync)(held))
63
+ return `variant "${variant}" holds no ${key}, and the product has no ${key} to carry the note`;
64
+ const source = (0, fs_1.readFileSync)(held, 'utf8');
65
+ const variantNote = (_d = sketch.variantInfo[variant]) === null || _d === void 0 ? void 0 : _d.note;
66
+ const newNote = (note === null || note === void 0 ? void 0 : note.trim()) || (((_e = (0, part_definition_1.noteOf)(source)) === null || _e === void 0 ? void 0 : _e.trim()) === '' ? variantNote : undefined);
67
+ const withNewNote = newNote ? (0, part_definition_1.withNote)(source, newNote) : source;
68
+ const madeBy = [...new Set([...(0, part_definition_1.madeByOf)(source), ...(0, sketch_1.authorsOf)(sketch, variant)])];
69
+ const noted = withNewNote === null || madeBy.length === 0 ? withNewNote : (0, part_definition_1.withMadeBy)(withNewNote, madeBy);
70
+ if (noted === null)
71
+ return `${held} holds no definePart({ note: '…' }) to set the note on`;
72
+ return { key, targetDir, noteFile, inherited, noted };
73
+ };
74
+ /** The parts of `keys` the merge writes into the product's base instead of the product. */
75
+ const baseKeysOf = (options) => {
76
+ const { product, sketch, keys } = options;
77
+ return keys.filter((key) => {
78
+ var _a;
79
+ const origin = (_a = product.parts.find((part) => (0, resolve_product_1.partKeyOf)(part) === key)) === null || _a === void 0 ? void 0 : _a.origin;
80
+ return sketch.merge === 'into-base'
81
+ ? origin === 'base' || origin === 'overridden'
82
+ : sketch.merge !== 'override' && origin === 'base';
83
+ });
84
+ };
50
85
  const mergeOrReason = (options) => {
51
- var _a, _b, _c;
86
+ var _a, _b;
52
87
  const { target, config, product, sketch, note, author } = options;
53
88
  if (sketch.status !== 'ready')
54
89
  return `${sketch.target} is ${sketch.status} - mark it ready before a merge`;
@@ -63,8 +98,8 @@ const mergeOrReason = (options) => {
63
98
  const { parts, problems } = (0, product_1.partFilesOf)(dir);
64
99
  if (problems.length > 0)
65
100
  return problems.map((problem) => `${problem.file}: ${problem.message}`).join('\n');
66
- const shared = (0, merge_shared_1.sharedPlanOf)({ sketch, parts });
67
- if (shared !== 'carry' && shared !== 'drop')
101
+ const shared = (0, merge_shared_1.sharedPlanOf)({ sketch, variant, parts, product });
102
+ if (typeof shared === 'string')
68
103
  return shared;
69
104
  const fixtures = (0, product_1.fixturesOf)(dir);
70
105
  if (!sketch.baseline)
@@ -78,57 +113,78 @@ const mergeOrReason = (options) => {
78
113
  reason: `${conflicts.join(', ')} changed in the product since the sketch on ${sketch.target} was created - bring variant "${variant}" up to date, then run sketch rebase ${sketch.target}`,
79
114
  changed: conflicts,
80
115
  };
81
- const targetDir = (0, path_1.resolve)(product.dir, sketch.layer, sketch.name);
82
- const noteFile = (0, path_1.resolve)(targetDir, `${sketch.name}.ts`);
83
- const carried = (_a = parts.find((part) => (0, resolve_product_1.partKeyOf)(part) === sketch.target)) === null || _a === void 0 ? void 0 : _a.file;
84
- const inherited = carried || (0, fs_1.existsSync)(noteFile) ? null : product.parts.find((part) => (0, resolve_product_1.partKeyOf)(part) === sketch.target);
85
- const held = carried !== null && carried !== void 0 ? carried : (inherited ? inherited.file : noteFile);
86
- if (!(0, fs_1.existsSync)(held))
87
- return `variant "${variant}" holds no ${sketch.target}, and the product has no ${sketch.target} to carry the note`;
88
- const source = (0, fs_1.readFileSync)(held, 'utf8');
89
- const variantNote = (_b = sketch.variantInfo[variant]) === null || _b === void 0 ? void 0 : _b.note;
90
- const newNote = (note === null || note === void 0 ? void 0 : note.trim()) || (((_c = (0, part_definition_1.noteOf)(source)) === null || _c === void 0 ? void 0 : _c.trim()) === '' ? variantNote : undefined);
91
- const withNewNote = newNote ? (0, part_definition_1.withNote)(source, newNote) : source;
92
- const madeBy = [...new Set([...(0, part_definition_1.madeByOf)(source), ...(0, sketch_1.authorsOf)(sketch, variant)])];
93
- const noted = withNewNote === null || madeBy.length === 0 ? withNewNote : (0, part_definition_1.withMadeBy)(withNewNote, madeBy);
94
- if (noted === null)
95
- return `${held} holds no definePart({ note: '…' }) to set the note on`;
96
- const mergedKeys = [...new Set([sketch.target, ...parts.map(resolve_product_1.partKeyOf)])];
116
+ const mergedKeys = [...new Set([...sketch.targets, ...parts.map(resolve_product_1.partKeyOf)])];
117
+ const baseKeys = baseKeysOf({ product, sketch, keys: mergedKeys });
118
+ const base = product.base;
119
+ if (baseKeys.length > 0 && (!base || (0, base_1.isBuiltInBase)((_a = product.config.base) !== null && _a !== void 0 ? _a : '')))
120
+ return `${baseKeys.join(', ')} comes from the built-in base ${product.config.base} - only a sketch opened with --override merges it, as a product copy`;
121
+ const rootOf = (key) => (base && baseKeys.includes(key) ? base.dir : product.dir);
122
+ const removedKeys = baseKeys.filter((key) => { var _a; return ((_a = product.parts.find((part) => (0, resolve_product_1.partKeyOf)(part) === key)) === null || _a === void 0 ? void 0 : _a.origin) === 'overridden'; });
123
+ const notedTargets = [];
124
+ for (const key of sketch.targets) {
125
+ const noted = notedTargetOf({ sketch, variant, parts, product, root: rootOf(key), key, note });
126
+ if (typeof noted === 'string')
127
+ return noted;
128
+ notedTargets.push(noted);
129
+ }
130
+ const inheritedKeys = notedTargets.flatMap((entry) => (entry.inherited ? [entry.key] : []));
97
131
  const assetFiles = (0, assets_1.filesBelow)((0, path_1.resolve)(dir, assets_1.ASSETS_FOLDER));
98
- const untouched = assetFiles.length > 0 ? (0, merged_parts_1.unchangedMergedOf)({ product, except: mergedKeys }) : [];
99
- const known = (0, check_system_1.ruleLinesOf)(target, product);
132
+ const sharedChanges = (0, merge_shared_1.productSharedChangesOf)({ sketch, variant, product });
133
+ const untouched = assetFiles.length > 0 || sharedChanges.length > 0 ? (0, merged_parts_1.unchangedMergedOf)({ product, except: mergedKeys }) : [];
134
+ const baseProduct = base && baseKeys.length > 0 && base.configFile === product.configFile && ((_b = config.products) === null || _b === void 0 ? void 0 : _b[base.name])
135
+ ? (0, resolve_product_1.resolveProduct)({ target, name: base.name, config: base.config })
136
+ : null;
137
+ const known = [...(0, check_system_1.ruleLinesOf)(target, product), ...(baseProduct ? (0, check_system_1.ruleLinesOf)(target, baseProduct) : [])];
100
138
  const swapped = swap([
101
- ...(inherited ? [{ from: (0, path_1.dirname)(inherited.file), to: targetDir }] : []),
102
- ...parts.map((part) => ({ from: (0, path_1.dirname)(part.file), to: (0, path_1.resolve)(product.dir, part.layer, part.name) })),
139
+ ...notedTargets.flatMap(({ inherited, targetDir }) => inherited ? [{ from: (0, path_1.dirname)(inherited.file), to: targetDir }] : []),
140
+ ...parts.map((part) => ({ from: (0, path_1.dirname)(part.file), to: (0, path_1.resolve)(rootOf((0, resolve_product_1.partKeyOf)(part)), part.layer, part.name) })),
141
+ ...removedKeys.map((key) => ({ from: null, to: (0, path_1.resolve)(product.dir, key) })),
103
142
  ...(fixtures ? [{ from: fixtures, to: (0, path_1.resolve)(product.dir, 'fixtures.ts') }] : []),
104
143
  ...assetFiles.map((file) => ({
105
144
  from: file,
106
145
  to: (0, path_1.resolve)(product.dir, assets_1.ASSETS_FOLDER, (0, path_1.relative)((0, path_1.resolve)(dir, assets_1.ASSETS_FOLDER), file)),
107
146
  })),
147
+ ...sharedChanges,
108
148
  ]);
109
- (0, fs_1.writeFileSync)(noteFile, noted);
110
- if (shared === 'carry')
111
- (0, merge_shared_1.carryShared)({ sketch, variant, targetDir });
112
- if ((0, check_system_1.checkSystem)({ target, config, products: [product.name], known }) !== 0) {
149
+ for (const { noteFile, noted } of notedTargets)
150
+ (0, fs_1.writeFileSync)(noteFile, noted);
151
+ for (const { targetDir, paths } of shared.carry) {
152
+ const key = (0, path_1.relative)(product.dir, targetDir);
153
+ (0, merge_shared_1.carryShared)({ sketch, variant, targetDir: (0, path_1.resolve)(rootOf(key), key), paths, product });
154
+ }
155
+ const checked = [product.name, ...(baseProduct ? [baseProduct.name] : [])];
156
+ if ((0, check_system_1.checkSystem)({ target, config, products: checked, known }) !== 0) {
113
157
  swapped.restore();
114
158
  return `the check failed after the merge of ${sketch.target} variant "${variant}" - the product's old files are back, the sketch stays`;
115
159
  }
116
160
  swapped.drop();
117
- (0, merged_parts_1.recordMerged)({ product, parts: mergedKeys });
161
+ const productKeys = mergedKeys.filter((key) => !baseKeys.includes(key));
162
+ if (productKeys.length > 0)
163
+ (0, merged_parts_1.recordMerged)({ product, parts: productKeys });
164
+ if (base && baseKeys.length > 0) {
165
+ (0, merged_parts_1.recordMerged)({ product: { dir: base.dir, base: null }, parts: baseKeys });
166
+ (0, merged_parts_1.forgetMerged)({ productDir: product.dir, parts: removedKeys });
167
+ }
118
168
  const alsoChanged = (0, merged_parts_1.rerecordChangedMerged)({ product, before: untouched });
119
169
  if (alsoChanged.length > 0)
120
- console.log(`Asset change also updates: ${alsoChanged.join(', ')}`);
170
+ console.log(`Asset or shared/ change also updates: ${alsoChanged.join(', ')}`);
171
+ (0, comment_1.resolveSketchEndComments)({
172
+ sketch,
173
+ parts: mergedKeys,
174
+ note: `resolved by the merge of ${sketch.target} variant ${variant}`,
175
+ });
121
176
  (0, comment_1.addressSketchComments)({ sketch, reason: 'merge', author, note });
122
177
  (0, fs_1.rmSync)(sketch.dir, { recursive: true, force: true });
123
178
  (0, sketch_1.clearSketchReport)({ checkout: target, sketch });
124
- return [...(inherited ? [sketch.target] : []), ...parts.map(resolve_product_1.partKeyOf)];
179
+ return [...new Set([...inheritedKeys, ...parts.map(resolve_product_1.partKeyOf)])];
125
180
  };
126
181
  /**
127
182
  * Merges the variant the user picked in a ready sketch into the product: copies each part it holds
128
- * over the product's, sets `note` (when given) and `madeBy` (the file's own plus the variant's authors) on the target, runs the check
129
- * records each merged part's hash in `merged.json` and deletes the sketch. A target the product only takes from its base is copied into the product first. When the check fails, the
130
- * product's old files come back and the sketch stays. Each file in the variant's `assets/` goes into the product's `assets/`. The sketch's `shared/` folder goes into the target's folder when the
131
- * target imports it, with its `@shared/` imports made relative; any other part that imports it stops the merge. Otherwise the open comments on its variants are addressed, by `author` or the user. Refuses without a
183
+ * over the product's - a part the product takes from its base over the base's, unless the sketch was opened with
184
+ * `override`; `into-base` also removes the product copy and its `merged.json` entry - sets `note` (when given) and `madeBy` (the file's own plus the variant's authors) on the target, runs the check
185
+ * records each merged part's hash in `merged.json` and deletes the sketch. With `override`, a target the product only takes from its base is copied into the product first. When the check fails, the
186
+ * product's old files come back and the sketch stays. Each file in the variant's `assets/` goes into the product's `assets/`. A file of the sketch's `shared/` folder whose path the product's `shared/` holds
187
+ * replaces it there; the rest goes into the target's folder when the target imports it, with its `@shared/` imports made relative; any other part that imports it stops the merge. Otherwise the addressed comments on its variants, and those on the merged parts that have no sketch, are resolved, and the open ones on its variants are addressed, by `author` or the user. Refuses without a
132
188
  * pick, and when a part the variant replaces changed in the product since the sketch's baseline. Answers with the merged part keys, or with why nothing was merged - and, when a rebase
133
189
  * would let it, the parts that changed (`[]` without a baseline).
134
190
  */
@@ -137,8 +193,12 @@ const mergeSketch = (options) => {
137
193
  return typeof merged === 'string' ? { reason: merged } : merged;
138
194
  };
139
195
  exports.mergeSketch = mergeSketch;
140
- /** Deletes a sketch with all its variants and marks the open comments on them addressed, by `author` or the user. */
196
+ /** Deletes a sketch with all its variants and resolves the addressed comments on them and marks the open ones addressed, by `author` or the user. */
141
197
  const discardSketch = (options) => {
198
+ (0, comment_1.resolveSketchEndComments)({
199
+ sketch: options.sketch,
200
+ note: `resolved by the discard of ${options.sketch.target}`,
201
+ });
142
202
  (0, comment_1.addressSketchComments)({ sketch: options.sketch, reason: 'discard', author: options.author });
143
203
  (0, fs_1.rmSync)(options.sketch.dir, { recursive: true, force: true });
144
204
  (0, sketch_1.clearSketchReport)({ checkout: options.target, sketch: options.sketch });
@@ -1 +1 @@
1
- {"version":3,"file":"merge.js","sourceRoot":"","sources":["../../../../../../../libs/cli/src/lib/design/system/sketch/merge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"merge.js","sourceRoot":"","sources":["../../../../../../../libs/cli/src/lib/design/system/sketch/merge.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,16 @@ export declare const recordMerged: (options: {
8
8
  product: HashedProduct;
9
9
  parts: string[];
10
10
  }) => void;
11
+ /** Drops the named parts from the product's `merged.json`. */
12
+ export declare const forgetMerged: (options: {
13
+ productDir: string;
14
+ parts: string[];
15
+ }) => void;
16
+ /** The product folder that holds the part now: the product's own, else its base's. */
17
+ export declare const holderOf: (options: {
18
+ product: HashedProduct;
19
+ part: string;
20
+ }) => HashedProduct;
11
21
  /** The recorded parts of the product, outside `except`, whose files still match their recorded hash, with that hash. */
12
22
  export declare const unchangedMergedOf: (options: {
13
23
  product: ResolvedProduct;
@@ -46,6 +56,13 @@ export declare const recordAutoMerge: (options: {
46
56
  part: string;
47
57
  by: string;
48
58
  }) => void;
59
+ /** Logs a sketch merged without a pick in Studio because a plan entry allows it, in `accepted.json`. */
60
+ export declare const recordAllowedMerge: (options: {
61
+ product: HashedProduct;
62
+ part: string;
63
+ by: string;
64
+ planRef: string;
65
+ }) => void;
49
66
  /**
50
67
  * Records a direct edit of a merged part the user approved: writes the part's current hash to `merged.json` and
51
68
  * logs who accepted it and why in `accepted.json`. Answers with why nothing was accepted, or `null`.
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.acceptPart = exports.recordAutoMerge = exports.readAccepted = exports.ACCEPTED_FILE = exports.changedOutsideSketchOf = exports.sketchedPartsOf = exports.rerecordChangedMerged = exports.unchangedMergedOf = exports.recordMerged = exports.readMerged = exports.MERGED_FILE = void 0;
3
+ exports.acceptPart = exports.recordAllowedMerge = exports.recordAutoMerge = exports.readAccepted = exports.ACCEPTED_FILE = exports.changedOutsideSketchOf = exports.sketchedPartsOf = exports.rerecordChangedMerged = exports.unchangedMergedOf = exports.holderOf = exports.forgetMerged = exports.recordMerged = exports.readMerged = exports.MERGED_FILE = void 0;
4
4
  const fs_1 = require("fs");
5
5
  const path_1 = require("path");
6
6
  const product_1 = require("../product");
@@ -36,6 +36,25 @@ const recordMerged = (options) => {
36
36
  (0, fs_1.writeFileSync)(mergedFileOf(productDir), `${JSON.stringify(sorted, null, 2)}\n`);
37
37
  };
38
38
  exports.recordMerged = recordMerged;
39
+ /** Drops the named parts from the product's `merged.json`. */
40
+ const forgetMerged = (options) => {
41
+ const { productDir, parts } = options;
42
+ const merged = (0, exports.readMerged)(productDir);
43
+ if (!parts.some((part) => part in merged))
44
+ return;
45
+ for (const part of parts)
46
+ delete merged[part];
47
+ (0, fs_1.writeFileSync)(mergedFileOf(productDir), `${JSON.stringify(merged, null, 2)}\n`);
48
+ };
49
+ exports.forgetMerged = forgetMerged;
50
+ /** The product folder that holds the part now: the product's own, else its base's. */
51
+ const holderOf = (options) => {
52
+ const { product, part } = options;
53
+ return !(0, fs_1.existsSync)((0, path_1.resolve)(product.dir, part)) && product.base && (0, fs_1.existsSync)((0, path_1.resolve)(product.base.dir, part))
54
+ ? { dir: product.base.dir, base: null }
55
+ : product;
56
+ };
57
+ exports.holderOf = holderOf;
39
58
  /** The recorded parts of the product, outside `except`, whose files still match their recorded hash, with that hash. */
40
59
  const unchangedMergedOf = (options) => {
41
60
  const { product, except } = options;
@@ -100,7 +119,8 @@ exports.readAccepted = readAccepted;
100
119
  const logAcceptance = (productDir, entry) => (0, fs_1.writeFileSync)((0, path_1.resolve)(productDir, exports.ACCEPTED_FILE), `${JSON.stringify([...(0, exports.readAccepted)(productDir), entry], null, 2)}\n`);
101
120
  /** Logs a sketch merged by itself because no state showed a visible change, as an `auto` entry in `accepted.json`. */
102
121
  const recordAutoMerge = (options) => {
103
- const { product, part, by } = options;
122
+ const { part, by } = options;
123
+ const product = (0, exports.holderOf)(options);
104
124
  logAcceptance(product.dir, {
105
125
  part,
106
126
  by,
@@ -111,6 +131,19 @@ const recordAutoMerge = (options) => {
111
131
  });
112
132
  };
113
133
  exports.recordAutoMerge = recordAutoMerge;
134
+ /** Logs a sketch merged without a pick in Studio because a plan entry allows it, in `accepted.json`. */
135
+ const recordAllowedMerge = (options) => {
136
+ const { part, by, planRef } = options;
137
+ const product = (0, exports.holderOf)(options);
138
+ logAcceptance(product.dir, {
139
+ part,
140
+ by,
141
+ note: `merged without a pick: allowed by ${planRef}`,
142
+ hash: (0, baseline_1.partHashOf)({ product, dir: (0, path_1.resolve)(product.dir, part) }),
143
+ at: new Date().toISOString(),
144
+ });
145
+ };
146
+ exports.recordAllowedMerge = recordAllowedMerge;
114
147
  /**
115
148
  * Records a direct edit of a merged part the user approved: writes the part's current hash to `merged.json` and
116
149
  * logs who accepted it and why in `accepted.json`. Answers with why nothing was accepted, or `null`.
@@ -1 +1 @@
1
- {"version":3,"file":"merged-parts.js","sourceRoot":"","sources":["../../../../../../../libs/cli/src/lib/design/system/sketch/merged-parts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"merged-parts.js","sourceRoot":"","sources":["../../../../../../../libs/cli/src/lib/design/system/sketch/merged-parts.ts"],"names":[],"mappings":"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"}
@@ -3,9 +3,10 @@ import { ResolvedProduct } from '../resolve-product';
3
3
  import { Sketch } from './sketch';
4
4
  import { SketchPartLoader } from './unchanged-states';
5
5
  /**
6
- * `true` when every state of every variant of the sketch draws the same pixels as the product does now, in
7
- * every frame; otherwise why not. A variant that holds another part than the target, or a state that fails to
8
- * draw, counts as a change.
6
+ * `true` when every state of every target of every live variant of the sketch draws the same pixels as the product
7
+ * does now, in every frame, and so does each state of every part a `shared/` edit of the variant reaches and of every
8
+ * part that shows one of them; otherwise why not. A variant that holds a part other than a target, or a state that
9
+ * fails to draw, counts as a change.
9
10
  */
10
11
  export declare const sketchShowsNoChange: (options: {
11
12
  product: ResolvedProduct;
@@ -13,3 +14,9 @@ export declare const sketchShowsNoChange: (options: {
13
14
  load: SketchPartLoader;
14
15
  pictureOf: PictureOf;
15
16
  }) => Promise<true | string>;
17
+ /** Why each target of each live variant of the sketch fails to load, one line each; `[]` when all of them load. */
18
+ export declare const variantLoadProblemsOf: (options: {
19
+ product: ResolvedProduct;
20
+ sketch: Sketch;
21
+ load: SketchPartLoader;
22
+ }) => Promise<string[]>;
@@ -9,33 +9,47 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.sketchShowsNoChange = void 0;
12
+ exports.variantLoadProblemsOf = exports.sketchShowsNoChange = void 0;
13
+ const merge_compare_1 = require("../../merge-compare");
13
14
  const list_system_1 = require("../list-system");
14
15
  const product_1 = require("../product");
15
16
  const resolve_product_1 = require("../resolve-product");
17
+ const merge_preview_1 = require("./merge-preview");
16
18
  const overlay_1 = require("./overlay");
17
19
  const sketch_1 = require("./sketch");
18
20
  const unchanged_states_1 = require("./unchanged-states");
19
- const variantChangeOf = (options) => __awaiter(void 0, void 0, void 0, function* () {
20
- var _a;
21
+ const affectedChangeOf = (options) => __awaiter(void 0, void 0, void 0, function* () {
21
22
  const { product, sketch, variant, load, pictureOf } = options;
22
- const others = (0, product_1.partFilesOf)((0, sketch_1.variantDirOf)(sketch, variant))
23
- .parts.map(resolve_product_1.partKeyOf)
24
- .filter((key) => key !== sketch.target);
25
- if (others.length > 0)
26
- return `variant ${variant} also holds ${others.join(', ')}`;
27
- const file = (_a = (0, overlay_1.overlaySketch)({ product, sketch, variant }).parts.find((part) => (0, resolve_product_1.partKeyOf)(part) === sketch.target)) === null || _a === void 0 ? void 0 : _a.file;
23
+ const { changed } = yield (0, merge_compare_1.compareMerge)({
24
+ product,
25
+ sketch,
26
+ variant,
27
+ size: null,
28
+ params: new URLSearchParams(),
29
+ pictureOf,
30
+ load: (part) => load(Object.assign(Object.assign({}, part), { sketch: null })),
31
+ });
32
+ if (changed.length === 0)
33
+ return null;
34
+ const rows = changed.map((row) => [row.part, row.state, row.error ? `(${row.error})` : ''].filter((entry) => entry !== '').join(' '));
35
+ return `variant ${variant} changes ${rows.join(', ')}`;
36
+ });
37
+ const partChangeOf = (options) => __awaiter(void 0, void 0, void 0, function* () {
38
+ var _a;
39
+ const { product, sketch, variant, load, pictureOf, part, named } = options;
40
+ const file = (_a = (0, overlay_1.overlaySketch)({ product, sketch, variant }).parts.find((entry) => (0, resolve_product_1.partKeyOf)(entry) === part)) === null || _a === void 0 ? void 0 : _a.file;
28
41
  if (!file)
29
- return `variant ${variant} does not draw ${sketch.target}`;
42
+ return `variant ${variant} does not draw ${part}`;
30
43
  const read = yield (0, list_system_1.readPartModule)({
31
44
  part: { file },
32
45
  product: product.name,
33
46
  load: () => load({ file, product: product.name, sketch: { target: sketch.target, variant } }),
34
47
  });
48
+ const of = named ? ` ${part}` : '';
35
49
  if (read.problem)
36
- return `variant ${variant} does not load: ${read.problem}`;
50
+ return `variant ${variant}${of} does not load: ${read.problem}`;
37
51
  if (read.states.length === 0)
38
- return `variant ${variant} has no states`;
52
+ return `variant ${variant}${of} has no states`;
39
53
  const failures = new Set();
40
54
  const recording = (picture) => __awaiter(void 0, void 0, void 0, function* () {
41
55
  try {
@@ -46,25 +60,66 @@ const variantChangeOf = (options) => __awaiter(void 0, void 0, void 0, function*
46
60
  throw error;
47
61
  }
48
62
  });
49
- const unchanged = yield (0, unchanged_states_1.unchangedStatesOf)({ product, sketch, variant, load, pictureOf: recording });
63
+ const unchanged = yield (0, unchanged_states_1.unchangedStatesOf)({ product, sketch, variant, load, pictureOf: recording, part });
50
64
  const changed = read.states.filter((state) => !unchanged.includes(state));
51
65
  if (changed.length === 0)
52
66
  return null;
53
67
  const failed = failures.size > 0 ? ` - a shot failed: ${[...failures].join('; ')}` : '';
54
- return `variant ${variant} changes ${changed.join(', ')}${failed}`;
68
+ return `variant ${variant} changes${of} ${changed.join(', ')}${failed}`;
69
+ });
70
+ const variantChangeOf = (options) => __awaiter(void 0, void 0, void 0, function* () {
71
+ const { product, sketch, variant } = options;
72
+ const others = (0, product_1.partFilesOf)((0, sketch_1.variantDirOf)(sketch, variant))
73
+ .parts.map(resolve_product_1.partKeyOf)
74
+ .filter((key) => !sketch.targets.includes(key));
75
+ if (others.length > 0)
76
+ return `variant ${variant} also holds ${others.join(', ')}`;
77
+ const parts = [...sketch.targets, ...(0, merge_preview_1.mergePreviewOf)({ product, sketch, variant }).shared];
78
+ for (const part of parts) {
79
+ const change = yield partChangeOf(Object.assign(Object.assign({}, options), { part, named: parts.length > 1 }));
80
+ if (change !== null)
81
+ return change;
82
+ }
83
+ return affectedChangeOf(options);
55
84
  });
56
85
  /**
57
- * `true` when every state of every variant of the sketch draws the same pixels as the product does now, in
58
- * every frame; otherwise why not. A variant that holds another part than the target, or a state that fails to
59
- * draw, counts as a change.
86
+ * `true` when every state of every target of every live variant of the sketch draws the same pixels as the product
87
+ * does now, in every frame, and so does each state of every part a `shared/` edit of the variant reaches and of every
88
+ * part that shows one of them; otherwise why not. A variant that holds a part other than a target, or a state that
89
+ * fails to draw, counts as a change.
60
90
  */
61
91
  const sketchShowsNoChange = (options) => __awaiter(void 0, void 0, void 0, function* () {
62
92
  const { sketch } = options;
63
- if (sketch.variants.length === 0)
64
- return 'the sketch has no variant';
65
- const changes = yield Promise.all(sketch.variants.map((variant) => variantChangeOf(Object.assign(Object.assign({}, options), { variant }))));
93
+ const live = sketch.variants.filter((variant) => !(0, sketch_1.rejectionOf)(sketch, variant));
94
+ if (live.length === 0)
95
+ return 'the sketch has no live variant';
96
+ const changes = yield Promise.all(live.map((variant) => variantChangeOf(Object.assign(Object.assign({}, options), { variant }))));
66
97
  const found = changes.filter((change) => change !== null);
67
98
  return found.length === 0 ? true : found.join('; ');
68
99
  });
69
100
  exports.sketchShowsNoChange = sketchShowsNoChange;
101
+ /** Why each target of each live variant of the sketch fails to load, one line each; `[]` when all of them load. */
102
+ const variantLoadProblemsOf = (options) => __awaiter(void 0, void 0, void 0, function* () {
103
+ var _a;
104
+ const { product, sketch, load } = options;
105
+ const live = sketch.variants.filter((variant) => !(0, sketch_1.rejectionOf)(sketch, variant));
106
+ const problems = [];
107
+ for (const variant of live) {
108
+ const parts = (0, overlay_1.overlaySketch)({ product, sketch, variant }).parts;
109
+ for (const target of sketch.targets) {
110
+ const file = (_a = parts.find((entry) => (0, resolve_product_1.partKeyOf)(entry) === target)) === null || _a === void 0 ? void 0 : _a.file;
111
+ if (!file)
112
+ continue;
113
+ const read = yield (0, list_system_1.readPartModule)({
114
+ part: { file },
115
+ product: product.name,
116
+ load: () => load({ file, product: product.name, sketch: { target: sketch.target, variant } }),
117
+ });
118
+ if (read.problem)
119
+ problems.push(`variant ${variant} ${target} does not load: ${read.problem}`);
120
+ }
121
+ }
122
+ return problems;
123
+ });
124
+ exports.variantLoadProblemsOf = variantLoadProblemsOf;
70
125
  //# sourceMappingURL=no-visible-change.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"no-visible-change.js","sourceRoot":"","sources":["../../../../../../../libs/cli/src/lib/design/system/sketch/no-visible-change.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"no-visible-change.js","sourceRoot":"","sources":["../../../../../../../libs/cli/src/lib/design/system/sketch/no-visible-change.ts"],"names":[],"mappings":"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"}
@@ -7,8 +7,12 @@ const assets_1 = require("../assets");
7
7
  const layers_1 = require("../layers");
8
8
  const product_1 = require("../product");
9
9
  const resolve_product_1 = require("../resolve-product");
10
+ const host_edit_1 = require("./host-edit");
10
11
  const sketch_1 = require("./sketch");
11
- const mayChange = (sketch, part) => (0, resolve_product_1.partKeyOf)(part) === sketch.target || part.layer === sketch.layer || layers_1.LAYER_USES[sketch.layer].includes(part.layer);
12
+ const mayChange = (sketch, part) => sketch.targets.some((key) => {
13
+ const layer = key.split('/')[0];
14
+ return key === (0, resolve_product_1.partKeyOf)(part) || part.layer === layer || layers_1.LAYER_USES[layer].includes(part.layer);
15
+ });
12
16
  /**
13
17
  * The product as one variant of a sketch draws it: each part the variant holds replaces the part the
14
18
  * product resolves under the same name, or joins it when the product has none. `sketched` names the
@@ -25,12 +29,21 @@ const overlaySketch = (options) => {
25
29
  const sketched = own.parts.map((file) => (Object.assign(Object.assign({}, file), { origin: baseKeys.has((0, resolve_product_1.partKeyOf)(file)) ? 'overridden' : 'product', source: (0, fs_1.readFileSync)(file.file, 'utf8'), cssSource: file.css && (0, fs_1.existsSync)(file.css) ? (0, fs_1.readFileSync)(file.css, 'utf8') : null })));
26
30
  const keys = new Set(sketched.map(resolve_product_1.partKeyOf));
27
31
  const parts = [...product.parts.filter((part) => !keys.has((0, resolve_product_1.partKeyOf)(part))), ...sketched].sort((a, b) => layers_1.LAYERS.indexOf(a.layer) - layers_1.LAYERS.indexOf(b.layer) || a.name.localeCompare(b.name));
32
+ const isImportOnlyHostEdit = (part) => {
33
+ const before = product.parts.find((candidate) => (0, resolve_product_1.partKeyOf)(candidate) === (0, resolve_product_1.partKeyOf)(part));
34
+ return (before !== undefined &&
35
+ before.cssSource === part.cssSource &&
36
+ (0, host_edit_1.importsAnyOf)(before.source, sketch.targets) &&
37
+ (0, host_edit_1.changesOnlyImports)(before.source, part.source));
38
+ };
28
39
  const outside = sketched
29
- .filter((part) => !mayChange(sketch, part))
40
+ .filter((part) => !mayChange(sketch, part) && !isImportOnlyHostEdit(part))
30
41
  .map((part) => ({
31
42
  rule: 'SKETCH',
32
43
  file: part.file,
33
- message: `a sketch on ${sketch.target} may change ${sketch.layer} and the layers below it, not ${(0, resolve_product_1.partKeyOf)(part)}`,
44
+ message: `${sketch.targets.length > 1
45
+ ? `a sketch on ${sketch.targets.join(', ')} may change their layers and the layers below them, not ${(0, resolve_product_1.partKeyOf)(part)}`
46
+ : `a sketch on ${sketch.target} may change ${sketch.layer} and the layers below it, not ${(0, resolve_product_1.partKeyOf)(part)}`}${(0, host_edit_1.importsAnyOf)(part.source, sketch.targets) ? ' - a host of it may change only its imports' : ''}`,
34
47
  }));
35
48
  return Object.assign(Object.assign({}, product), { parts, fixtures: (_a = (0, product_1.fixturesOf)(dir)) !== null && _a !== void 0 ? _a : product.fixtures, problems: [...product.problems, ...own.problems, ...outside], sketched: [...keys], sharedDir: (0, sketch_1.sharedDirOf)(sketch), variantSharedDir: (0, sketch_1.variantSharedDirOf)(sketch, variant), assetsDir: (0, path_1.resolve)(dir, assets_1.ASSETS_FOLDER) });
36
49
  };