@ethlete/cli 3.0.0-next.24 → 3.0.0-next.26

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 (194) hide show
  1. package/CHANGELOG.md +126 -0
  2. package/design/define-call.ts +69 -0
  3. package/design/define-part.ts +43 -9
  4. package/design/embed-page.ts +37 -4
  5. package/design/icon-sheet.ts +151 -0
  6. package/design/logo-sheet.ts +52 -0
  7. package/design/mark-part.ts +79 -2
  8. package/design/motion-drive.ts +215 -0
  9. package/design/motion-runtime.ts +224 -5
  10. package/design/motion-tokens.ts +177 -0
  11. package/design/spring.ts +53 -0
  12. package/design/token-sheet.ts +87 -0
  13. package/design/web/frame-fill.ts +4 -0
  14. package/design/web/frame-scheme.ts +44 -0
  15. package/design/web/frame.ts +239 -31
  16. package/package.json +1 -1
  17. package/src/lib/design/calls-tsconfig.d.ts +2 -0
  18. package/src/lib/design/calls-tsconfig.js +11 -5
  19. package/src/lib/design/calls-tsconfig.js.map +1 -1
  20. package/src/lib/design/check.d.ts +1 -0
  21. package/src/lib/design/check.js +62 -6
  22. package/src/lib/design/check.js.map +1 -1
  23. package/src/lib/design/contact-sheet.d.ts +9 -0
  24. package/src/lib/design/contact-sheet.js +38 -4
  25. package/src/lib/design/contact-sheet.js.map +1 -1
  26. package/src/lib/design/design-command.js +56 -7
  27. package/src/lib/design/design-command.js.map +1 -1
  28. package/src/lib/design/draw-ledger.d.ts +36 -0
  29. package/src/lib/design/draw-ledger.js +52 -0
  30. package/src/lib/design/draw-ledger.js.map +1 -0
  31. package/src/lib/design/force-interactions.d.ts +2 -1
  32. package/src/lib/design/force-interactions.js +7 -4
  33. package/src/lib/design/force-interactions.js.map +1 -1
  34. package/src/lib/design/mcp-command.d.ts +81 -0
  35. package/src/lib/design/mcp-command.js +422 -0
  36. package/src/lib/design/mcp-command.js.map +1 -0
  37. package/src/lib/design/motion-command.d.ts +71 -0
  38. package/src/lib/design/motion-command.js +308 -0
  39. package/src/lib/design/motion-command.js.map +1 -0
  40. package/src/lib/design/motion-endpoint.d.ts +61 -0
  41. package/src/lib/design/motion-endpoint.js +133 -0
  42. package/src/lib/design/motion-endpoint.js.map +1 -0
  43. package/src/lib/design/motion-flow.d.ts +5 -0
  44. package/src/lib/design/motion-flow.js +29 -0
  45. package/src/lib/design/motion-flow.js.map +1 -0
  46. package/src/lib/design/motion-shot.d.ts +43 -0
  47. package/src/lib/design/motion-shot.js +97 -0
  48. package/src/lib/design/motion-shot.js.map +1 -0
  49. package/src/lib/design/paths.d.ts +14 -0
  50. package/src/lib/design/paths.js +50 -1
  51. package/src/lib/design/paths.js.map +1 -1
  52. package/src/lib/design/ready-shots.d.ts +7 -0
  53. package/src/lib/design/ready-shots.js +22 -1
  54. package/src/lib/design/ready-shots.js.map +1 -1
  55. package/src/lib/design/render-packages.d.ts +14 -0
  56. package/src/lib/design/render-packages.js +18 -3
  57. package/src/lib/design/render-packages.js.map +1 -1
  58. package/src/lib/design/render-worker.js +1 -0
  59. package/src/lib/design/render-worker.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.d.ts +2 -2
  63. package/src/lib/design/serve.js +191 -21
  64. package/src/lib/design/serve.js.map +1 -1
  65. package/src/lib/design/shot-command.d.ts +13 -4
  66. package/src/lib/design/shot-command.js +30 -24
  67. package/src/lib/design/shot-command.js.map +1 -1
  68. package/src/lib/design/shot-store.d.ts +24 -0
  69. package/src/lib/design/shot-store.js +120 -0
  70. package/src/lib/design/shot-store.js.map +1 -0
  71. package/src/lib/design/shot.d.ts +37 -1
  72. package/src/lib/design/shot.js +185 -34
  73. package/src/lib/design/shot.js.map +1 -1
  74. package/src/lib/design/sketch-command.js +197 -51
  75. package/src/lib/design/sketch-command.js.map +1 -1
  76. package/src/lib/design/ssr-shims.d.ts +2 -0
  77. package/src/lib/design/ssr-shims.js +12 -1
  78. package/src/lib/design/ssr-shims.js.map +1 -1
  79. package/src/lib/design/studio-api.d.ts +31 -0
  80. package/src/lib/design/studio-api.js +118 -1
  81. package/src/lib/design/studio-api.js.map +1 -1
  82. package/src/lib/design/system/check-system.d.ts +6 -2
  83. package/src/lib/design/system/check-system.js +102 -20
  84. package/src/lib/design/system/check-system.js.map +1 -1
  85. package/src/lib/design/system/colour.d.ts +4 -1
  86. package/src/lib/design/system/colour.js +54 -2
  87. package/src/lib/design/system/colour.js.map +1 -1
  88. package/src/lib/design/system/complete-command.d.ts +1 -1
  89. package/src/lib/design/system/complete-command.js +80 -6
  90. package/src/lib/design/system/complete-command.js.map +1 -1
  91. package/src/lib/design/system/complete.d.ts +172 -9
  92. package/src/lib/design/system/complete.js +792 -167
  93. package/src/lib/design/system/complete.js.map +1 -1
  94. package/src/lib/design/system/contrast-check.d.ts +6 -1
  95. package/src/lib/design/system/contrast-check.js +167 -12
  96. package/src/lib/design/system/contrast-check.js.map +1 -1
  97. package/src/lib/design/system/drawn-open-points.d.ts +16 -0
  98. package/src/lib/design/system/drawn-open-points.js +43 -0
  99. package/src/lib/design/system/drawn-open-points.js.map +1 -0
  100. package/src/lib/design/system/exceptions.d.ts +59 -0
  101. package/src/lib/design/system/exceptions.js +132 -0
  102. package/src/lib/design/system/exceptions.js.map +1 -0
  103. package/src/lib/design/system/flows/flow.d.ts +3 -0
  104. package/src/lib/design/system/flows/flow.js +5 -3
  105. package/src/lib/design/system/flows/flow.js.map +1 -1
  106. package/src/lib/design/system/handoff.d.ts +11 -0
  107. package/src/lib/design/system/handoff.js +30 -0
  108. package/src/lib/design/system/handoff.js.map +1 -0
  109. package/src/lib/design/system/inventory-approval.d.ts +41 -0
  110. package/src/lib/design/system/inventory-approval.js +71 -0
  111. package/src/lib/design/system/inventory-approval.js.map +1 -0
  112. package/src/lib/design/system/inventory.d.ts +65 -0
  113. package/src/lib/design/system/inventory.js +168 -0
  114. package/src/lib/design/system/inventory.js.map +1 -0
  115. package/src/lib/design/system/list-system.d.ts +4 -1
  116. package/src/lib/design/system/list-system.js +11 -3
  117. package/src/lib/design/system/list-system.js.map +1 -1
  118. package/src/lib/design/system/open-points.d.ts +101 -0
  119. package/src/lib/design/system/open-points.js +156 -0
  120. package/src/lib/design/system/open-points.js.map +1 -0
  121. package/src/lib/design/system/part-ready.d.ts +52 -0
  122. package/src/lib/design/system/part-ready.js +101 -0
  123. package/src/lib/design/system/part-ready.js.map +1 -0
  124. package/src/lib/design/system/read-open-points.d.ts +27 -0
  125. package/src/lib/design/system/read-open-points.js +81 -0
  126. package/src/lib/design/system/read-open-points.js.map +1 -0
  127. package/src/lib/design/system/ready-command.d.ts +7 -0
  128. package/src/lib/design/system/ready-command.js +65 -0
  129. package/src/lib/design/system/ready-command.js.map +1 -0
  130. package/src/lib/design/system/render-check.d.ts +2 -0
  131. package/src/lib/design/system/render-check.js +216 -32
  132. package/src/lib/design/system/render-check.js.map +1 -1
  133. package/src/lib/design/system/resolve-product.d.ts +4 -4
  134. package/src/lib/design/system/resolve-product.js +22 -7
  135. package/src/lib/design/system/resolve-product.js.map +1 -1
  136. package/src/lib/design/system/rules/implements.d.ts +7 -0
  137. package/src/lib/design/system/rules/implements.js +43 -0
  138. package/src/lib/design/system/rules/implements.js.map +1 -0
  139. package/src/lib/design/system/rules/motion.d.ts +2 -0
  140. package/src/lib/design/system/rules/motion.js +26 -1
  141. package/src/lib/design/system/rules/motion.js.map +1 -1
  142. package/src/lib/design/system/rules/option-values.d.ts +15 -0
  143. package/src/lib/design/system/rules/option-values.js +145 -0
  144. package/src/lib/design/system/rules/option-values.js.map +1 -0
  145. package/src/lib/design/system/rules/stale-replace.js +80 -3
  146. package/src/lib/design/system/rules/stale-replace.js.map +1 -1
  147. package/src/lib/design/system/rules/token-selectors.js +1 -1
  148. package/src/lib/design/system/rules/token-selectors.js.map +1 -1
  149. package/src/lib/design/system/sketch/baseline.d.ts +11 -2
  150. package/src/lib/design/system/sketch/baseline.js +4 -2
  151. package/src/lib/design/system/sketch/baseline.js.map +1 -1
  152. package/src/lib/design/system/sketch/check-sketches.d.ts +1 -0
  153. package/src/lib/design/system/sketch/check-sketches.js +4 -2
  154. package/src/lib/design/system/sketch/check-sketches.js.map +1 -1
  155. package/src/lib/design/system/sketch/host-edit.d.ts +4 -0
  156. package/src/lib/design/system/sketch/host-edit.js +68 -0
  157. package/src/lib/design/system/sketch/host-edit.js.map +1 -0
  158. package/src/lib/design/system/sketch/merge.d.ts +3 -2
  159. package/src/lib/design/system/sketch/merge.js +79 -12
  160. package/src/lib/design/system/sketch/merge.js.map +1 -1
  161. package/src/lib/design/system/sketch/merged-parts.d.ts +11 -1
  162. package/src/lib/design/system/sketch/merged-parts.js +24 -3
  163. package/src/lib/design/system/sketch/merged-parts.js.map +1 -1
  164. package/src/lib/design/system/sketch/no-visible-change.d.ts +6 -0
  165. package/src/lib/design/system/sketch/no-visible-change.js +25 -1
  166. package/src/lib/design/system/sketch/no-visible-change.js.map +1 -1
  167. package/src/lib/design/system/sketch/overlay.js +11 -3
  168. package/src/lib/design/system/sketch/overlay.js.map +1 -1
  169. package/src/lib/design/system/sketch/part-definition.d.ts +36 -0
  170. package/src/lib/design/system/sketch/part-definition.js +56 -2
  171. package/src/lib/design/system/sketch/part-definition.js.map +1 -1
  172. package/src/lib/design/system/sketch/sketch.d.ts +47 -0
  173. package/src/lib/design/system/sketch/sketch.js +137 -44
  174. package/src/lib/design/system/sketch/sketch.js.map +1 -1
  175. package/src/lib/design/system/sketch/unchanged-states.d.ts +4 -1
  176. package/src/lib/design/system/sketch/unchanged-states.js +9 -5
  177. package/src/lib/design/system/sketch/unchanged-states.js.map +1 -1
  178. package/src/lib/design/system/sketch/unused-closure.d.ts +12 -0
  179. package/src/lib/design/system/sketch/unused-closure.js +195 -0
  180. package/src/lib/design/system/sketch/unused-closure.js.map +1 -0
  181. package/src/lib/design/system/sketch/unused-files.d.ts +1 -1
  182. package/src/lib/design/system/sketch/unused-files.js +6 -3
  183. package/src/lib/design/system/sketch/unused-files.js.map +1 -1
  184. package/src/lib/design/system/system-modules.js +6 -9
  185. package/src/lib/design/system/system-modules.js.map +1 -1
  186. package/src/lib/design/system/system-tsconfig.d.ts +2 -1
  187. package/src/lib/design/system/system-tsconfig.js +10 -6
  188. package/src/lib/design/system/system-tsconfig.js.map +1 -1
  189. package/src/lib/design/system/ts-source.d.ts +3 -0
  190. package/src/lib/design/system/ts-source.js +21 -4
  191. package/src/lib/design/system/ts-source.js.map +1 -1
  192. package/src/lib/design/thumb.d.ts +31 -4
  193. package/src/lib/design/thumb.js +105 -40
  194. package/src/lib/design/thumb.js.map +1 -1
@@ -0,0 +1,59 @@
1
+ import { ResolvedProduct } from './resolve-product';
2
+ export declare const EXCEPTIONS_FILE = "exceptions.json";
3
+ export type ExceptionApproval = {
4
+ by: string;
5
+ at: string;
6
+ hash: string;
7
+ };
8
+ /** An exception to one requirement of a part, keyed `<layer>/<name>.<control>.<requirement>`; only Studio sets `approval`. */
9
+ export type DesignException = {
10
+ reason: string;
11
+ requested: string;
12
+ approval?: ExceptionApproval;
13
+ };
14
+ export type ExceptionState = 'approved' | 'pending' | 'reopened';
15
+ export type ListedException = {
16
+ key: string;
17
+ state: ExceptionState;
18
+ reason: string;
19
+ approval?: ExceptionApproval;
20
+ };
21
+ /** The part key of an exception key, or why the key is not `<layer>/<name>.<control>.<requirement>`. */
22
+ export declare const exceptionPartOf: (key: string) => string;
23
+ export declare const readExceptions: (productDir: string) => Record<string, DesignException>;
24
+ /** Writes a pending exception, which still fails `design complete` until Studio approves it, or answers why not. */
25
+ export declare const requestException: (options: {
26
+ product: ResolvedProduct;
27
+ key: string;
28
+ reason: string;
29
+ at?: string;
30
+ }) => string | DesignException;
31
+ /** Records the user's approval of a requested exception at the part's current hash, or answers why it is refused. */
32
+ export declare const approveException: (options: {
33
+ product: ResolvedProduct;
34
+ key: unknown;
35
+ by: unknown;
36
+ at?: string;
37
+ }) => {
38
+ status: number;
39
+ error: string;
40
+ } | DesignException;
41
+ /** Every exception of a product's own and base parts with its state at each part's current hash, for Studio. */
42
+ export declare const listExceptions: (product: ResolvedProduct) => ListedException[];
43
+ /**
44
+ * Drops each gap an approved exception at `hash` covers, and marks the gaps of a pending or reopened one, which
45
+ * still fail. `listed` holds every exception of the part, for the report.
46
+ */
47
+ export declare const withExceptions: <T extends {
48
+ target: string;
49
+ detail: string;
50
+ }>(options: {
51
+ part: string;
52
+ gaps: T[];
53
+ exceptions: Record<string, DesignException>;
54
+ hash: string;
55
+ }) => {
56
+ gaps: T[];
57
+ listed: ListedException[];
58
+ };
59
+ export declare const exceptionLineOf: ({ key, state, reason, approval }: ListedException) => string;
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.exceptionLineOf = exports.withExceptions = exports.listExceptions = exports.approveException = exports.requestException = exports.readExceptions = exports.exceptionPartOf = exports.EXCEPTIONS_FILE = void 0;
4
+ const fs_1 = require("fs");
5
+ const path_1 = require("path");
6
+ const inventory_approval_1 = require("./inventory-approval");
7
+ const resolve_product_1 = require("./resolve-product");
8
+ const baseline_1 = require("./sketch/baseline");
9
+ exports.EXCEPTIONS_FILE = 'exceptions.json';
10
+ const KEY = /^([a-z0-9-]+\/[a-z0-9-]+)\.([^.\s]+)\.([^.\s]+)$/;
11
+ const exceptionsFileOf = (productDir) => (0, path_1.resolve)(productDir, exports.EXCEPTIONS_FILE);
12
+ const isApproval = (value) => {
13
+ if (!value || typeof value !== 'object')
14
+ return false;
15
+ const { by, at, hash } = value;
16
+ return typeof by === 'string' && typeof at === 'string' && typeof hash === 'string';
17
+ };
18
+ const isException = (value) => {
19
+ if (!value || typeof value !== 'object' || Array.isArray(value))
20
+ return false;
21
+ const { reason, requested, approval } = value;
22
+ return (typeof reason === 'string' && typeof requested === 'string' && (approval === undefined || isApproval(approval)));
23
+ };
24
+ /** The part key of an exception key, or why the key is not `<layer>/<name>.<control>.<requirement>`. */
25
+ const exceptionPartOf = (key) => { var _a, _b; return (_b = (_a = KEY.exec(key)) === null || _a === void 0 ? void 0 : _a[1]) !== null && _b !== void 0 ? _b : `"${key}" is not <layer>/<name>.<control>.<requirement>`; };
26
+ exports.exceptionPartOf = exceptionPartOf;
27
+ const readExceptions = (productDir) => {
28
+ const file = exceptionsFileOf(productDir);
29
+ if (!(0, fs_1.existsSync)(file))
30
+ return {};
31
+ try {
32
+ const parsed = JSON.parse((0, fs_1.readFileSync)(file, 'utf8'));
33
+ return parsed && typeof parsed === 'object' && !Array.isArray(parsed)
34
+ ? Object.fromEntries(Object.entries(parsed).filter((entry) => isException(entry[1])))
35
+ : {};
36
+ }
37
+ catch (_a) {
38
+ return {};
39
+ }
40
+ };
41
+ exports.readExceptions = readExceptions;
42
+ const writeExceptions = (productDir, exceptions) => {
43
+ const sorted = Object.fromEntries(Object.entries(exceptions).sort(([a], [b]) => a.localeCompare(b)));
44
+ (0, fs_1.writeFileSync)(exceptionsFileOf(productDir), `${JSON.stringify(sorted, null, 2)}\n`);
45
+ };
46
+ const ownedPartOf = (options) => {
47
+ const part = (0, exports.exceptionPartOf)(options.key);
48
+ if (part.startsWith('"'))
49
+ return part;
50
+ const resolved = options.product.parts.find((candidate) => (0, resolve_product_1.partKeyOf)(candidate) === part);
51
+ if (!resolved)
52
+ return `product "${options.product.name}" has no part "${part}"`;
53
+ const owner = (0, inventory_approval_1.partOwnerOf)({ product: options.product, part: resolved });
54
+ return { owner, hash: () => (0, baseline_1.partHashOf)({ product: owner, dir: (0, path_1.dirname)(resolved.file) }) };
55
+ };
56
+ /** Writes a pending exception, which still fails `design complete` until Studio approves it, or answers why not. */
57
+ const requestException = (options) => {
58
+ var _a;
59
+ const { product, key } = options;
60
+ const reason = options.reason.trim();
61
+ if (reason === '')
62
+ return 'an exception needs a --reason';
63
+ const owned = ownedPartOf({ product, key });
64
+ if (typeof owned === 'string')
65
+ return owned;
66
+ const exception = { reason, requested: (_a = options.at) !== null && _a !== void 0 ? _a : new Date().toISOString() };
67
+ writeExceptions(owned.owner.dir, Object.assign(Object.assign({}, (0, exports.readExceptions)(owned.owner.dir)), { [key]: exception }));
68
+ return exception;
69
+ };
70
+ exports.requestException = requestException;
71
+ /** Records the user's approval of a requested exception at the part's current hash, or answers why it is refused. */
72
+ const approveException = (options) => {
73
+ var _a;
74
+ const { product, key, by } = options;
75
+ if (typeof by !== 'string' || by.trim() === '')
76
+ return { status: 400, error: 'by is required' };
77
+ if (typeof key !== 'string' || key === '')
78
+ return { status: 400, error: 'key is required' };
79
+ const owned = ownedPartOf({ product, key });
80
+ if (typeof owned === 'string')
81
+ return { status: 422, error: owned };
82
+ const exceptions = (0, exports.readExceptions)(owned.owner.dir);
83
+ const requested = exceptions[key];
84
+ if (!requested)
85
+ return { status: 404, error: `no exception "${key}" was requested` };
86
+ const approved = Object.assign(Object.assign({}, requested), { approval: { by: by.trim(), at: (_a = options.at) !== null && _a !== void 0 ? _a : new Date().toISOString(), hash: owned.hash() } });
87
+ writeExceptions(owned.owner.dir, Object.assign(Object.assign({}, exceptions), { [key]: approved }));
88
+ return approved;
89
+ };
90
+ exports.approveException = approveException;
91
+ const stateOf = (exception, hash) => !exception.approval ? 'pending' : exception.approval.hash === hash ? 'approved' : 'reopened';
92
+ /** Every exception of a product's own and base parts with its state at each part's current hash, for Studio. */
93
+ const listExceptions = (product) => [product.dir, ...(product.base ? [product.base.dir] : [])].flatMap((dir) => Object.entries((0, exports.readExceptions)(dir)).flatMap(([key, exception]) => {
94
+ const owned = ownedPartOf({ product, key });
95
+ return typeof owned === 'string' || owned.owner.dir !== dir
96
+ ? []
97
+ : [{ key, state: stateOf(exception, owned.hash()), reason: exception.reason, approval: exception.approval }];
98
+ }));
99
+ exports.listExceptions = listExceptions;
100
+ const NOTES = {
101
+ pending: 'its exception is pending - approve it in Studio',
102
+ reopened: 'its approved exception reopened: the part changed - approve it again in Studio',
103
+ };
104
+ /**
105
+ * Drops each gap an approved exception at `hash` covers, and marks the gaps of a pending or reopened one, which
106
+ * still fail. `listed` holds every exception of the part, for the report.
107
+ */
108
+ const withExceptions = (options) => {
109
+ const { part, exceptions, hash } = options;
110
+ const listed = Object.entries(exceptions)
111
+ .filter(([key]) => (0, exports.exceptionPartOf)(key) === part)
112
+ .map(([key, exception]) => ({
113
+ key,
114
+ state: stateOf(exception, hash),
115
+ reason: exception.reason,
116
+ approval: exception.approval,
117
+ }));
118
+ const byKey = new Map(listed.map((exception) => [exception.key, exception]));
119
+ const gaps = options.gaps.flatMap((gap) => {
120
+ const exception = byKey.get(gap.target);
121
+ if (!exception)
122
+ return [gap];
123
+ if (exception.state === 'approved')
124
+ return [];
125
+ return [Object.assign(Object.assign({}, gap), { detail: `${gap.detail} - ${NOTES[exception.state]} ("${exception.reason}")` })];
126
+ });
127
+ return { gaps, listed };
128
+ };
129
+ exports.withExceptions = withExceptions;
130
+ const exceptionLineOf = ({ key, state, reason, approval }) => `EXCEPTION ${key} ${state}${approval ? ` (approved by ${approval.by} at ${approval.at})` : ''} - ${reason}`;
131
+ exports.exceptionLineOf = exceptionLineOf;
132
+ //# sourceMappingURL=exceptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exceptions.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/design/system/exceptions.ts"],"names":[],"mappings":";;;AAAA,2BAA6D;AAC7D,+BAAwC;AACxC,6DAAmD;AACnD,uDAA+D;AAC/D,gDAA+C;AAElC,QAAA,eAAe,GAAG,iBAAiB,CAAC;AAWjD,MAAM,GAAG,GAAG,kDAAkD,CAAC;AAE/D,MAAM,gBAAgB,GAAG,CAAC,UAAkB,EAAE,EAAE,CAAC,IAAA,cAAO,EAAC,UAAU,EAAE,uBAAe,CAAC,CAAC;AAEtF,MAAM,UAAU,GAAG,CAAC,KAAc,EAA8B,EAAE;IAChE,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAEtD,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,KAAgC,CAAC;IAE1D,OAAO,OAAO,EAAE,KAAK,QAAQ,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC;AACtF,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,KAAc,EAA4B,EAAE;IAC/D,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAE9E,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAgC,CAAC;IAEzE,OAAO,CACL,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,CAChH,CAAC;AACJ,CAAC,CAAC;AAEF,wGAAwG;AACjG,MAAM,eAAe,GAAG,CAAC,GAAW,EAAE,EAAE,eAC7C,OAAA,MAAA,MAAA,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,0CAAG,CAAC,CAAC,mCAAI,IAAI,GAAG,iDAAiD,CAAA,EAAA,CAAC;AADpE,QAAA,eAAe,mBACqD;AAE1E,MAAM,cAAc,GAAG,CAAC,UAAkB,EAAmC,EAAE;IACpF,MAAM,IAAI,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAE1C,IAAI,CAAC,IAAA,eAAU,EAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAEjC,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAE/D,OAAO,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YACnE,CAAC,CAAC,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAsC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CACpG;YACH,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC,CAAC;AAhBW,QAAA,cAAc,kBAgBzB;AAEF,MAAM,eAAe,GAAG,CAAC,UAAkB,EAAE,UAA2C,EAAE,EAAE;IAC1F,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAErG,IAAA,kBAAa,EAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACtF,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,OAAkD,EAAE,EAAE;IACzE,MAAM,IAAI,GAAG,IAAA,uBAAe,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAE1C,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAEtC,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAA,2BAAS,EAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC;IAE1F,IAAI,CAAC,QAAQ;QAAE,OAAO,YAAY,OAAO,CAAC,OAAO,CAAC,IAAI,kBAAkB,IAAI,GAAG,CAAC;IAEhF,MAAM,KAAK,GAAG,IAAA,gCAAW,EAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IAExE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,IAAA,qBAAU,EAAC,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAA,cAAO,EAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AAC5F,CAAC,CAAC;AAEF,oHAAoH;AAC7G,MAAM,gBAAgB,GAAG,CAAC,OAA+E,EAAE,EAAE;;IAClH,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IACjC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAErC,IAAI,MAAM,KAAK,EAAE;QAAE,OAAO,+BAA+B,CAAC;IAE1D,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IAE5C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE5C,MAAM,SAAS,GAAoB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAA,OAAO,CAAC,EAAE,mCAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;IAEjG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,kCAAO,IAAA,sBAAc,EAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAE,CAAC,GAAG,CAAC,EAAE,SAAS,IAAG,CAAC;IAE3F,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAfW,QAAA,gBAAgB,oBAe3B;AAEF,qHAAqH;AAC9G,MAAM,gBAAgB,GAAG,CAAC,OAKhC,EAAuD,EAAE;;IACxD,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC;IAErC,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAChG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAE5F,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IAE5C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAEpE,MAAM,UAAU,GAAG,IAAA,sBAAc,EAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAElC,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,iBAAiB,GAAG,iBAAiB,EAAE,CAAC;IAErF,MAAM,QAAQ,mCACT,SAAS,KACZ,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,MAAA,OAAO,CAAC,EAAE,mCAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,GAC5F,CAAC;IAEF,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,kCAAO,UAAU,KAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,IAAG,CAAC;IAErE,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AA5BW,QAAA,gBAAgB,oBA4B3B;AAEF,MAAM,OAAO,GAAG,CAAC,SAA0B,EAAE,IAAY,EAAkB,EAAE,CAC3E,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;AAE/F,gHAAgH;AACzG,MAAM,cAAc,GAAG,CAAC,OAAwB,EAAqB,EAAE,CAC5E,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CACzE,MAAM,CAAC,OAAO,CAAC,IAAA,sBAAc,EAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE;IAC/D,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IAE5C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG;QACzD,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjH,CAAC,CAAC,CACH,CAAC;AATS,QAAA,cAAc,kBASvB;AAEJ,MAAM,KAAK,GAAwD;IACjE,OAAO,EAAE,iDAAiD;IAC1D,QAAQ,EAAE,gFAAgF;CAC3F,CAAC;AAEF;;;GAGG;AACI,MAAM,cAAc,GAAG,CAA+C,OAK5E,EAAE,EAAE;IACH,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAC3C,MAAM,MAAM,GAAsB,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;SACzD,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,IAAA,uBAAe,EAAC,GAAG,CAAC,KAAK,IAAI,CAAC;SAChD,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1B,GAAG;QACH,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC;QAC/B,MAAM,EAAE,SAAS,CAAC,MAAM;QACxB,QAAQ,EAAE,SAAS,CAAC,QAAQ;KAC7B,CAAC,CAAC,CAAC;IACN,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAC7E,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACxC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAExC,IAAI,CAAC,SAAS;YAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,SAAS,CAAC,KAAK,KAAK,UAAU;YAAE,OAAO,EAAE,CAAC;QAE9C,OAAO,iCAAM,GAAG,KAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,MAAM,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,SAAS,CAAC,MAAM,IAAI,IAAG,CAAC;IACnG,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1B,CAAC,CAAC;AA1BW,QAAA,cAAc,kBA0BzB;AAEK,MAAM,eAAe,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAmB,EAAE,EAAE,CACnF,aAAa,GAAG,IAAI,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,iBAAiB,QAAQ,CAAC,EAAE,OAAO,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,MAAM,EAAE,CAAC;AADjG,QAAA,eAAe,mBACkF"}
@@ -7,10 +7,13 @@ export type FlowState = {
7
7
  export type FlowFrame = FlowState & {
8
8
  position?: CommentPoint;
9
9
  };
10
+ /** `transition: 'view'` makes `et design motion flow` animate the line as a same-document View Transition; `id` names it there. */
10
11
  export type FlowLine = {
11
12
  from: FlowState;
12
13
  to: FlowState;
13
14
  label?: string;
15
+ id?: string;
16
+ transition?: 'view';
14
17
  };
15
18
  /** A note of the flow itself, such as a heading over a group of frames; `at` is its top-left corner on the flow canvas, and may be negative. */
16
19
  export type FlowNote = {
@@ -36,9 +36,11 @@ const frameProblemOf = (frame, index) => {
36
36
  const lineProblemOf = (line, index) => isRecord(line) &&
37
37
  isState(line['from']) &&
38
38
  isState(line['to']) &&
39
- (line['label'] === undefined || isText(line['label']))
39
+ (line['label'] === undefined || isText(line['label'])) &&
40
+ (line['id'] === undefined || isText(line['id'])) &&
41
+ (line['transition'] === undefined || line['transition'] === 'view')
40
42
  ? null
41
- : `lines[${index}] must be { from: { part, state }, to: { part, state }, label? }`;
43
+ : `lines[${index}] must be { from: { part, state }, to: { part, state }, label?, id?, transition?: "view" }`;
42
44
  const noteProblemOf = (note, index) => isRecord(note) &&
43
45
  isText(note['id']) &&
44
46
  isText(note['text']) &&
@@ -64,7 +66,7 @@ const flowOf = ({ parsed, name, file }) => {
64
66
  name,
65
67
  file,
66
68
  frames: parsed.frames.map(({ part, state, position }) => (Object.assign({ part, state }, (position ? { position } : {})))),
67
- lines: ((_a = parsed.lines) !== null && _a !== void 0 ? _a : []).map(({ from, to, label }) => (Object.assign({ from: { part: from.part, state: from.state }, to: { part: to.part, state: to.state } }, (label ? { label } : {})))),
69
+ lines: ((_a = parsed.lines) !== null && _a !== void 0 ? _a : []).map(({ from, to, label, id, transition }) => (Object.assign(Object.assign(Object.assign({ from: { part: from.part, state: from.state }, to: { part: to.part, state: to.state } }, (label ? { label } : {})), (id ? { id } : {})), (transition ? { transition } : {})))),
68
70
  notes: ((_b = parsed.notes) !== null && _b !== void 0 ? _b : []).map(({ id, text, at }) => (Object.assign({ id, text }, (at ? { at } : {})))),
69
71
  });
70
72
  };
@@ -1 +1 @@
1
- {"version":3,"file":"flow.js","sourceRoot":"","sources":["../../../../../../../libs/cli/src/lib/design/system/flows/flow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"flow.js","sourceRoot":"","sources":["../../../../../../../libs/cli/src/lib/design/system/flows/flow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export declare const HANDOFF_FILE = "handoff.json";
2
+ /** A part that passed `design complete --handoff`, so app work may build it; CI re-checks it on every run. */
3
+ export type HandoffEntry = {
4
+ at: string;
5
+ };
6
+ export declare const readHandoff: (productDir: string) => Record<string, HandoffEntry>;
7
+ export declare const recordHandoff: (options: {
8
+ productDir: string;
9
+ part: string;
10
+ at?: string;
11
+ }) => void;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.recordHandoff = exports.readHandoff = exports.HANDOFF_FILE = void 0;
4
+ const fs_1 = require("fs");
5
+ const path_1 = require("path");
6
+ exports.HANDOFF_FILE = 'handoff.json';
7
+ const handoffFileOf = (productDir) => (0, path_1.resolve)(productDir, exports.HANDOFF_FILE);
8
+ const readHandoff = (productDir) => {
9
+ const file = handoffFileOf(productDir);
10
+ if (!(0, fs_1.existsSync)(file))
11
+ return {};
12
+ try {
13
+ const parsed = JSON.parse((0, fs_1.readFileSync)(file, 'utf8'));
14
+ return parsed && typeof parsed === 'object' && !Array.isArray(parsed)
15
+ ? Object.fromEntries(Object.entries(parsed).filter((entry) => !!entry[1] && typeof entry[1] === 'object' && typeof entry[1].at === 'string'))
16
+ : {};
17
+ }
18
+ catch (_a) {
19
+ return {};
20
+ }
21
+ };
22
+ exports.readHandoff = readHandoff;
23
+ const recordHandoff = (options) => {
24
+ var _a;
25
+ const entries = Object.assign(Object.assign({}, (0, exports.readHandoff)(options.productDir)), { [options.part]: { at: (_a = options.at) !== null && _a !== void 0 ? _a : new Date().toISOString() } });
26
+ const sorted = Object.fromEntries(Object.entries(entries).sort(([a], [b]) => a.localeCompare(b)));
27
+ (0, fs_1.writeFileSync)(handoffFileOf(options.productDir), `${JSON.stringify(sorted, null, 2)}\n`);
28
+ };
29
+ exports.recordHandoff = recordHandoff;
30
+ //# sourceMappingURL=handoff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handoff.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/design/system/handoff.ts"],"names":[],"mappings":";;;AAAA,2BAA6D;AAC7D,+BAA+B;AAElB,QAAA,YAAY,GAAG,cAAc,CAAC;AAK3C,MAAM,aAAa,GAAG,CAAC,UAAkB,EAAE,EAAE,CAAC,IAAA,cAAO,EAAC,UAAU,EAAE,oBAAY,CAAC,CAAC;AAEzE,MAAM,WAAW,GAAG,CAAC,UAAkB,EAAgC,EAAE;IAC9E,MAAM,IAAI,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IAEvC,IAAI,CAAC,IAAA,eAAU,EAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAEjC,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAE/D,OAAO,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YACnE,CAAC,CAAC,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAC3B,CAAC,KAAK,EAAmC,EAAE,CACzC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAQ,KAAK,CAAC,CAAC,CAAkB,CAAC,EAAE,KAAK,QAAQ,CAClG,CACF;YACH,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC,CAAC;AAnBW,QAAA,WAAW,eAmBtB;AAEK,MAAM,aAAa,GAAG,CAAC,OAA0D,EAAE,EAAE;;IAC1F,MAAM,OAAO,mCACR,IAAA,mBAAW,EAAC,OAAO,CAAC,UAAU,CAAC,KAClC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,MAAA,OAAO,CAAC,EAAE,mCAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,GAC/D,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAElG,IAAA,kBAAa,EAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3F,CAAC,CAAC;AARW,QAAA,aAAa,iBAQxB"}
@@ -0,0 +1,41 @@
1
+ import { ResolvedPart, ResolvedProduct } from './resolve-product';
2
+ export declare const INVENTORY_FILE = "inventory.json";
3
+ /** The control ids of a page and its part hash, as the user approved them in Studio. */
4
+ export type InventoryApproval = {
5
+ ids: string[];
6
+ hash: string;
7
+ by: string;
8
+ at: string;
9
+ };
10
+ /** Whether the approved inventory of a page still holds: its ids and hash match, it reopened, or it never was approved. */
11
+ export type InventoryState = {
12
+ state: 'approved';
13
+ } | {
14
+ state: 'reopened';
15
+ added: string[];
16
+ removed: string[];
17
+ changed: boolean;
18
+ } | {
19
+ state: 'none';
20
+ };
21
+ /** The directory whose merged.json and inventory.json hold a part: its base's for a part the product takes from its base. */
22
+ export declare const partOwnerOf: (options: {
23
+ product: ResolvedProduct;
24
+ part: ResolvedPart;
25
+ }) => ResolvedProduct | {
26
+ dir: string;
27
+ base: null;
28
+ };
29
+ export declare const readInventory: (productDir: string) => Record<string, InventoryApproval>;
30
+ export declare const writeInventoryApproval: (options: {
31
+ productDir: string;
32
+ part: string;
33
+ approval: InventoryApproval;
34
+ }) => void;
35
+ export declare const inventoryStateOf: (options: {
36
+ approval: InventoryApproval | undefined;
37
+ ids: string[];
38
+ hash: string;
39
+ }) => InventoryState;
40
+ /** Why a page's inventory is not approved, for a gap line or Studio, or `null` when it is. */
41
+ export declare const inventoryReasonOf: (state: InventoryState) => string | null;
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.inventoryReasonOf = exports.inventoryStateOf = exports.writeInventoryApproval = exports.readInventory = exports.partOwnerOf = exports.INVENTORY_FILE = void 0;
4
+ const fs_1 = require("fs");
5
+ const path_1 = require("path");
6
+ exports.INVENTORY_FILE = 'inventory.json';
7
+ const inventoryFileOf = (productDir) => (0, path_1.resolve)(productDir, exports.INVENTORY_FILE);
8
+ const isApproval = (value) => {
9
+ if (!value || typeof value !== 'object' || Array.isArray(value))
10
+ return false;
11
+ const { ids, hash, by, at } = value;
12
+ return (Array.isArray(ids) &&
13
+ ids.every((id) => typeof id === 'string') &&
14
+ typeof hash === 'string' &&
15
+ typeof by === 'string' &&
16
+ typeof at === 'string');
17
+ };
18
+ /** The directory whose merged.json and inventory.json hold a part: its base's for a part the product takes from its base. */
19
+ const partOwnerOf = (options) => options.part.origin === 'base' && options.product.base
20
+ ? { dir: options.product.base.dir, base: null }
21
+ : options.product;
22
+ exports.partOwnerOf = partOwnerOf;
23
+ const readInventory = (productDir) => {
24
+ const file = inventoryFileOf(productDir);
25
+ if (!(0, fs_1.existsSync)(file))
26
+ return {};
27
+ try {
28
+ const parsed = JSON.parse((0, fs_1.readFileSync)(file, 'utf8'));
29
+ return parsed && typeof parsed === 'object' && !Array.isArray(parsed)
30
+ ? Object.fromEntries(Object.entries(parsed).filter((entry) => isApproval(entry[1])))
31
+ : {};
32
+ }
33
+ catch (_a) {
34
+ return {};
35
+ }
36
+ };
37
+ exports.readInventory = readInventory;
38
+ const writeInventoryApproval = (options) => {
39
+ const { productDir, part, approval } = options;
40
+ const approvals = Object.assign(Object.assign({}, (0, exports.readInventory)(productDir)), { [part]: Object.assign(Object.assign({}, approval), { ids: [...approval.ids].sort() }) });
41
+ const sorted = Object.fromEntries(Object.entries(approvals).sort(([a], [b]) => a.localeCompare(b)));
42
+ (0, fs_1.writeFileSync)(inventoryFileOf(productDir), `${JSON.stringify(sorted, null, 2)}\n`);
43
+ };
44
+ exports.writeInventoryApproval = writeInventoryApproval;
45
+ const inventoryStateOf = (options) => {
46
+ const { approval, ids, hash } = options;
47
+ if (!approval)
48
+ return { state: 'none' };
49
+ const added = ids.filter((id) => !approval.ids.includes(id)).sort();
50
+ const removed = approval.ids.filter((id) => !ids.includes(id)).sort();
51
+ const changed = approval.hash !== hash;
52
+ return added.length > 0 || removed.length > 0 || changed
53
+ ? { state: 'reopened', added, removed, changed }
54
+ : { state: 'approved' };
55
+ };
56
+ exports.inventoryStateOf = inventoryStateOf;
57
+ /** Why a page's inventory is not approved, for a gap line or Studio, or `null` when it is. */
58
+ const inventoryReasonOf = (state) => {
59
+ if (state.state === 'approved')
60
+ return null;
61
+ if (state.state === 'none')
62
+ return 'its control inventory is not approved';
63
+ const reasons = [
64
+ ...(state.added.length > 0 ? [`added ${state.added.join(', ')}`] : []),
65
+ ...(state.removed.length > 0 ? [`removed ${state.removed.join(', ')}`] : []),
66
+ ...(state.changed ? ['the part changed'] : []),
67
+ ];
68
+ return `its approved control inventory reopened: ${reasons.join('; ')}`;
69
+ };
70
+ exports.inventoryReasonOf = inventoryReasonOf;
71
+ //# sourceMappingURL=inventory-approval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inventory-approval.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/design/system/inventory-approval.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import { Browser } from '../thumb';
2
+ import { FrameAddress, FrameBox, SeenFrame } from './complete';
3
+ import { InventoryApproval, InventoryState } from './inventory-approval';
4
+ import { ResolvedProduct } from './resolve-product';
5
+ import { SystemModules } from './system-modules';
6
+ /** `declared` is marked and declared; `undeclared` (red) is a control without a declaration; `unclassified` (amber) only looks interactive. */
7
+ export type InventoryStatus = 'declared' | 'undeclared' | 'unclassified';
8
+ /** One numbered control in a rest frame. A control keeps its number in every frame that draws it. */
9
+ export type InventoryControl = {
10
+ number: number;
11
+ id: string;
12
+ status: InventoryStatus;
13
+ kind: string;
14
+ inputs: string[];
15
+ surfaces: string[];
16
+ states: number;
17
+ box: FrameBox | null;
18
+ };
19
+ /** A rest frame of a page, the URL of its picture and the controls it draws, in its pixels. */
20
+ export type InventoryFrame = FrameAddress & {
21
+ shot: string;
22
+ controls: InventoryControl[];
23
+ };
24
+ /** The control inventory of a page, its part hash, and whether its approval holds. `dir` holds its inventory.json. */
25
+ export type Inventory = {
26
+ part: string;
27
+ dir: string;
28
+ hash: string;
29
+ ids: string[];
30
+ findings: number;
31
+ approval: InventoryApproval | null;
32
+ state: InventoryState;
33
+ reason: string | null;
34
+ frames: InventoryFrame[];
35
+ };
36
+ /** Numbers the declared, undeclared and unclassified controls each rest frame draws, top to bottom. */
37
+ export declare const inventoryFramesOf: (options: {
38
+ product: string;
39
+ part: string;
40
+ controls: unknown;
41
+ frames: SeenFrame[];
42
+ addresses: FrameAddress[];
43
+ }) => InventoryFrame[];
44
+ /** Draws the rest frames of a page and answers its control inventory and approval state, or why it cannot. */
45
+ export declare const inventoryOf: (options: {
46
+ product: ResolvedProduct;
47
+ part: string;
48
+ system: SystemModules;
49
+ base: string;
50
+ load: (id: string) => Promise<unknown>;
51
+ draw: <T>(job: (browser: Browser) => Promise<T>) => Promise<T>;
52
+ }) => Promise<Inventory | string>;
53
+ /**
54
+ * Records the user's approval of the inventory Studio showed, or answers why it is refused: `hash` is the part hash
55
+ * that inventory had, and a page with an undeclared or unclassified control cannot be approved.
56
+ */
57
+ export declare const approveInventory: (options: {
58
+ inventory: Inventory;
59
+ hash: unknown;
60
+ by: unknown;
61
+ at?: string;
62
+ }) => {
63
+ status: number;
64
+ error: string;
65
+ } | InventoryApproval;