@ethlete/cli 3.0.0-next.26 → 3.0.0-next.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +481 -0
- package/build-info.json +1 -0
- package/design/arrow-anchor.ts +55 -0
- package/design/define-call.ts +75 -30
- package/design/define-part.ts +64 -4
- package/design/icon-sheet.ts +1 -1
- package/design/interaction-rows.ts +13 -6
- package/design/mark-part.ts +51 -1
- package/design/token-sheet.ts +1 -1
- package/design/web/frame-fit.ts +7 -0
- package/design/web/frame-surfaces.ts +294 -0
- package/design/web/frame.ts +69 -15
- package/design/web/surface-interactive.css +42 -0
- package/design/with-action.ts +29 -0
- package/package.json +3 -1
- package/src/index.js +9 -1
- package/src/index.js.map +1 -1
- package/src/lib/api/compose.js +3 -2
- package/src/lib/api/compose.js.map +1 -1
- package/src/lib/api/git.js +2 -1
- package/src/lib/api/git.js.map +1 -1
- package/src/lib/api/setup.js +2 -2
- package/src/lib/api/setup.js.map +1 -1
- package/src/lib/design/asset-shot.js +4 -4
- package/src/lib/design/asset-shot.js.map +1 -1
- package/src/lib/design/blank-png.d.ts +2 -0
- package/src/lib/design/blank-png.js +28 -0
- package/src/lib/design/blank-png.js.map +1 -0
- package/src/lib/design/build-watch.d.ts +26 -0
- package/src/lib/design/build-watch.js +138 -0
- package/src/lib/design/build-watch.js.map +1 -0
- package/src/lib/design/cache-entry.d.ts +8 -0
- package/src/lib/design/cache-entry.js +30 -0
- package/src/lib/design/cache-entry.js.map +1 -0
- package/src/lib/design/calls-tsconfig.js +20 -13
- package/src/lib/design/calls-tsconfig.js.map +1 -1
- package/src/lib/design/calls.js +3 -3
- package/src/lib/design/calls.js.map +1 -1
- package/src/lib/design/changed-parts.d.ts +1 -1
- package/src/lib/design/check.d.ts +2 -0
- package/src/lib/design/check.js +217 -24
- package/src/lib/design/check.js.map +1 -1
- package/src/lib/design/code-hash.d.ts +30 -0
- package/src/lib/design/code-hash.js +118 -0
- package/src/lib/design/code-hash.js.map +1 -0
- package/src/lib/design/commit-hunks.d.ts +22 -0
- package/src/lib/design/commit-hunks.js +173 -0
- package/src/lib/design/commit-hunks.js.map +1 -0
- package/src/lib/design/design-command.d.ts +2 -0
- package/src/lib/design/design-command.js +271 -27
- package/src/lib/design/design-command.js.map +1 -1
- package/src/lib/design/{paths.d.ts → design-config.d.ts} +34 -28
- package/src/lib/design/design-config.js +35 -0
- package/src/lib/design/design-config.js.map +1 -0
- package/src/lib/design/design-lint.d.ts +68 -0
- package/src/lib/design/design-lint.js +183 -0
- package/src/lib/design/design-lint.js.map +1 -0
- package/src/lib/design/draw-ledger.d.ts +6 -0
- package/src/lib/design/draw-ledger.js +10 -0
- package/src/lib/design/draw-ledger.js.map +1 -1
- package/src/lib/design/force-interactions.d.ts +3 -1
- package/src/lib/design/force-interactions.js +8 -4
- package/src/lib/design/force-interactions.js.map +1 -1
- package/src/lib/design/generated-stylesheets.d.ts +1 -1
- package/src/lib/design/generated-stylesheets.js +2 -2
- package/src/lib/design/generated-stylesheets.js.map +1 -1
- package/src/lib/design/git-top.d.ts +5 -0
- package/src/lib/design/git-top.js +16 -0
- package/src/lib/design/git-top.js.map +1 -0
- package/src/lib/design/hooks-problem.d.ts +2 -0
- package/src/lib/design/hooks-problem.js +23 -0
- package/src/lib/design/hooks-problem.js.map +1 -0
- package/src/lib/design/inbox-command.js +9 -5
- package/src/lib/design/inbox-command.js.map +1 -1
- package/src/lib/design/index.d.ts +4 -1
- package/src/lib/design/index.js +4 -1
- package/src/lib/design/index.js.map +1 -1
- package/src/lib/design/is-running.d.ts +1 -0
- package/src/lib/design/is-running.js +14 -0
- package/src/lib/design/is-running.js.map +1 -0
- package/src/lib/design/legacy.js +3 -3
- package/src/lib/design/legacy.js.map +1 -1
- package/src/lib/design/mcp-command.d.ts +5 -1
- package/src/lib/design/mcp-command.js +27 -16
- package/src/lib/design/mcp-command.js.map +1 -1
- package/src/lib/design/merge-compare.d.ts +10 -2
- package/src/lib/design/merge-compare.js +63 -11
- package/src/lib/design/merge-compare.js.map +1 -1
- package/src/lib/design/motion-command.js +4 -4
- package/src/lib/design/motion-command.js.map +1 -1
- package/src/lib/design/motion-shot.js +3 -2
- package/src/lib/design/motion-shot.js.map +1 -1
- package/src/lib/design/new-call.js +22 -13
- package/src/lib/design/new-call.js.map +1 -1
- package/src/lib/design/old-shot-folders.d.ts +2 -0
- package/src/lib/design/old-shot-folders.js +26 -0
- package/src/lib/design/old-shot-folders.js.map +1 -0
- package/src/lib/design/package-root.d.ts +21 -0
- package/src/lib/design/package-root.js +79 -0
- package/src/lib/design/package-root.js.map +1 -0
- package/src/lib/design/parent-watch.d.ts +7 -0
- package/src/lib/design/parent-watch.js +23 -0
- package/src/lib/design/parent-watch.js.map +1 -0
- package/src/lib/design/part-marks.d.ts +3 -2
- package/src/lib/design/part-marks.js +15 -7
- package/src/lib/design/part-marks.js.map +1 -1
- package/src/lib/design/phase-timing.d.ts +5 -0
- package/src/lib/design/phase-timing.js +27 -0
- package/src/lib/design/phase-timing.js.map +1 -0
- package/src/lib/design/physical-cores.d.ts +12 -0
- package/src/lib/design/physical-cores.js +43 -0
- package/src/lib/design/physical-cores.js.map +1 -0
- package/src/lib/design/product-command.d.ts +1 -1
- package/src/lib/design/product-command.js +16 -18
- package/src/lib/design/product-command.js.map +1 -1
- package/src/lib/design/push-status.d.ts +30 -0
- package/src/lib/design/push-status.js +122 -0
- package/src/lib/design/push-status.js.map +1 -0
- package/src/lib/design/ready-shots.d.ts +21 -12
- package/src/lib/design/ready-shots.js +79 -44
- package/src/lib/design/ready-shots.js.map +1 -1
- package/src/lib/design/render-packages.d.ts +7 -18
- package/src/lib/design/render-packages.js +24 -63
- package/src/lib/design/render-packages.js.map +1 -1
- package/src/lib/design/render-worker.js +24 -6
- package/src/lib/design/render-worker.js.map +1 -1
- package/src/lib/design/render.d.ts +26 -3
- package/src/lib/design/render.js +52 -13
- package/src/lib/design/render.js.map +1 -1
- package/src/lib/design/resident/client.d.ts +52 -0
- package/src/lib/design/resident/client.js +263 -0
- package/src/lib/design/resident/client.js.map +1 -0
- package/src/lib/design/resident/discovery.d.ts +21 -0
- package/src/lib/design/resident/discovery.js +63 -0
- package/src/lib/design/resident/discovery.js.map +1 -0
- package/src/lib/design/resident/resident-process.d.ts +19 -0
- package/src/lib/design/resident/resident-process.js +189 -0
- package/src/lib/design/resident/resident-process.js.map +1 -0
- package/src/lib/design/resident/server.d.ts +52 -0
- package/src/lib/design/resident/server.js +212 -0
- package/src/lib/design/resident/server.js.map +1 -0
- package/src/lib/design/run-abort.d.ts +9 -0
- package/src/lib/design/run-abort.js +45 -0
- package/src/lib/design/run-abort.js.map +1 -0
- package/src/lib/design/run-deadline.d.ts +19 -0
- package/src/lib/design/run-deadline.js +104 -0
- package/src/lib/design/run-deadline.js.map +1 -0
- package/src/lib/design/run-yield.d.ts +8 -0
- package/src/lib/design/run-yield.js +43 -0
- package/src/lib/design/run-yield.js.map +1 -0
- package/src/lib/design/serve-state.d.ts +15 -0
- package/src/lib/design/serve-state.js +56 -0
- package/src/lib/design/serve-state.js.map +1 -0
- package/src/lib/design/serve.d.ts +41 -3
- package/src/lib/design/serve.js +272 -54
- package/src/lib/design/serve.js.map +1 -1
- package/src/lib/design/server-identity.d.ts +40 -0
- package/src/lib/design/server-identity.js +71 -0
- package/src/lib/design/server-identity.js.map +1 -0
- package/src/lib/design/settle-frames.d.ts +4 -0
- package/src/lib/design/settle-frames.js +22 -0
- package/src/lib/design/settle-frames.js.map +1 -0
- package/src/lib/design/shot-board.d.ts +26 -0
- package/src/lib/design/shot-board.js +80 -0
- package/src/lib/design/shot-board.js.map +1 -0
- package/src/lib/design/shot-command.d.ts +26 -5
- package/src/lib/design/shot-command.js +143 -50
- package/src/lib/design/shot-command.js.map +1 -1
- package/src/lib/design/shot-store.d.ts +29 -3
- package/src/lib/design/shot-store.js +206 -36
- package/src/lib/design/shot-store.js.map +1 -1
- package/src/lib/design/shot.d.ts +60 -2
- package/src/lib/design/shot.js +238 -28
- package/src/lib/design/shot.js.map +1 -1
- package/src/lib/design/sketch-at.js +2 -1
- package/src/lib/design/sketch-at.js.map +1 -1
- package/src/lib/design/sketch-command.d.ts +19 -1
- package/src/lib/design/sketch-command.js +664 -159
- package/src/lib/design/sketch-command.js.map +1 -1
- package/src/lib/design/ssr-shims.d.ts +1 -0
- package/src/lib/design/ssr-shims.js +3 -3
- package/src/lib/design/ssr-shims.js.map +1 -1
- package/src/lib/design/stale-cli-dist.d.ts +11 -0
- package/src/lib/design/stale-cli-dist.js +56 -0
- package/src/lib/design/stale-cli-dist.js.map +1 -0
- package/src/lib/design/stamp.d.ts +23 -1
- package/src/lib/design/stamp.js +56 -9
- package/src/lib/design/stamp.js.map +1 -1
- package/src/lib/design/started-by-studio.d.ts +1 -0
- package/src/lib/design/started-by-studio.js +6 -0
- package/src/lib/design/started-by-studio.js.map +1 -0
- package/src/lib/design/status.d.ts +1 -1
- package/src/lib/design/status.js +15 -4
- package/src/lib/design/status.js.map +1 -1
- package/src/lib/design/studio-api.d.ts +21 -10
- package/src/lib/design/studio-api.js +192 -88
- package/src/lib/design/studio-api.js.map +1 -1
- package/src/lib/design/system/accepted-pictures.d.ts +69 -0
- package/src/lib/design/system/accepted-pictures.js +346 -0
- package/src/lib/design/system/accepted-pictures.js.map +1 -0
- package/src/lib/design/system/action-cache.d.ts +45 -0
- package/src/lib/design/system/action-cache.js +72 -0
- package/src/lib/design/system/action-cache.js.map +1 -0
- package/src/lib/design/system/action-lost.d.ts +61 -0
- package/src/lib/design/system/action-lost.js +116 -0
- package/src/lib/design/system/action-lost.js.map +1 -0
- package/src/lib/design/system/action-press.d.ts +29 -0
- package/src/lib/design/system/action-press.js +88 -0
- package/src/lib/design/system/action-press.js.map +1 -0
- package/src/lib/design/system/action-undeclared.d.ts +34 -0
- package/src/lib/design/system/action-undeclared.js +81 -0
- package/src/lib/design/system/action-undeclared.js.map +1 -0
- package/src/lib/design/system/actions-command.d.ts +108 -0
- package/src/lib/design/system/actions-command.js +816 -0
- package/src/lib/design/system/actions-command.js.map +1 -0
- package/src/lib/design/system/actions.d.ts +181 -0
- package/src/lib/design/system/actions.js +333 -0
- package/src/lib/design/system/actions.js.map +1 -0
- package/src/lib/design/system/anti-alias.d.ts +2 -0
- package/src/lib/design/system/anti-alias.js +11 -0
- package/src/lib/design/system/anti-alias.js.map +1 -0
- package/src/lib/design/system/app-files.d.ts +10 -0
- package/src/lib/design/system/app-files.js +175 -0
- package/src/lib/design/system/app-files.js.map +1 -0
- package/src/lib/design/system/arrow-anchor.d.ts +9 -0
- package/src/lib/design/system/arrow-anchor.js +40 -0
- package/src/lib/design/system/arrow-anchor.js.map +1 -0
- package/src/lib/design/system/base-issues.d.ts +28 -0
- package/src/lib/design/system/base-issues.js +80 -0
- package/src/lib/design/system/base-issues.js.map +1 -0
- package/src/lib/design/system/base.d.ts +1 -1
- package/src/lib/design/system/base.js +2 -2
- package/src/lib/design/system/base.js.map +1 -1
- package/src/lib/design/system/baseline-history.d.ts +13 -0
- package/src/lib/design/system/baseline-history.js +40 -0
- package/src/lib/design/system/baseline-history.js.map +1 -0
- package/src/lib/design/system/bespoke-controls.d.ts +33 -0
- package/src/lib/design/system/bespoke-controls.js +149 -0
- package/src/lib/design/system/bespoke-controls.js.map +1 -0
- package/src/lib/design/system/build-ready-contract.d.ts +33 -0
- package/src/lib/design/system/build-ready-contract.js +18 -0
- package/src/lib/design/system/build-ready-contract.js.map +1 -0
- package/src/lib/design/system/build-running.d.ts +13 -0
- package/src/lib/design/system/build-running.js +48 -0
- package/src/lib/design/system/build-running.js.map +1 -0
- package/src/lib/design/system/check-record.d.ts +18 -0
- package/src/lib/design/system/check-record.js +47 -0
- package/src/lib/design/system/check-record.js.map +1 -0
- package/src/lib/design/system/check-rules.d.ts +1 -0
- package/src/lib/design/system/check-rules.js +100 -0
- package/src/lib/design/system/check-rules.js.map +1 -0
- package/src/lib/design/system/check-system.d.ts +83 -7
- package/src/lib/design/system/check-system.js +647 -68
- package/src/lib/design/system/check-system.js.map +1 -1
- package/src/lib/design/system/comments/comment.d.ts +4 -1
- package/src/lib/design/system/comments/comment.js +13 -4
- package/src/lib/design/system/comments/comment.js.map +1 -1
- package/src/lib/design/system/comments/inbox.d.ts +1 -1
- package/src/lib/design/system/comments/inbox.js +2 -2
- package/src/lib/design/system/comments/inbox.js.map +1 -1
- package/src/lib/design/system/compare-cache.d.ts +20 -0
- package/src/lib/design/system/compare-cache.js +92 -0
- package/src/lib/design/system/compare-cache.js.map +1 -0
- package/src/lib/design/system/compare-command.d.ts +150 -0
- package/src/lib/design/system/compare-command.js +580 -0
- package/src/lib/design/system/compare-command.js.map +1 -0
- package/src/lib/design/system/complete-command.js +1 -1
- package/src/lib/design/system/complete-command.js.map +1 -1
- package/src/lib/design/system/complete.d.ts +63 -2
- package/src/lib/design/system/complete.js +281 -71
- package/src/lib/design/system/complete.js.map +1 -1
- package/src/lib/design/system/component-outputs.d.ts +20 -0
- package/src/lib/design/system/component-outputs.js +86 -0
- package/src/lib/design/system/component-outputs.js.map +1 -0
- package/src/lib/design/system/contrast-check.d.ts +1 -1
- package/src/lib/design/system/contrast-check.js +14 -3
- package/src/lib/design/system/contrast-check.js.map +1 -1
- package/src/lib/design/system/decision-refs.d.ts +5 -0
- package/src/lib/design/system/decision-refs.js +21 -0
- package/src/lib/design/system/decision-refs.js.map +1 -0
- package/src/lib/design/system/demo-backdrop.d.ts +11 -0
- package/src/lib/design/system/demo-backdrop.js +41 -0
- package/src/lib/design/system/demo-backdrop.js.map +1 -0
- package/src/lib/design/system/design-hash.d.ts +52 -0
- package/src/lib/design/system/design-hash.js +132 -0
- package/src/lib/design/system/design-hash.js.map +1 -0
- package/src/lib/design/system/disabled-interaction.d.ts +8 -0
- package/src/lib/design/system/disabled-interaction.js +37 -0
- package/src/lib/design/system/disabled-interaction.js.map +1 -0
- package/src/lib/design/system/dom-command.d.ts +36 -0
- package/src/lib/design/system/dom-command.js +178 -0
- package/src/lib/design/system/dom-command.js.map +1 -0
- package/src/lib/design/system/drawn-open-points.d.ts +26 -4
- package/src/lib/design/system/drawn-open-points.js +65 -14
- package/src/lib/design/system/drawn-open-points.js.map +1 -1
- package/src/lib/design/system/dropped-props.d.ts +39 -0
- package/src/lib/design/system/dropped-props.js +271 -0
- package/src/lib/design/system/dropped-props.js.map +1 -0
- package/src/lib/design/system/embedded-actions.d.ts +21 -0
- package/src/lib/design/system/embedded-actions.js +37 -0
- package/src/lib/design/system/embedded-actions.js.map +1 -0
- package/src/lib/design/system/exceptions.js +2 -1
- package/src/lib/design/system/exceptions.js.map +1 -1
- package/src/lib/design/system/flows/flow.js +2 -1
- package/src/lib/design/system/flows/flow.js.map +1 -1
- package/src/lib/design/system/frozen-animations.d.ts +13 -0
- package/src/lib/design/system/frozen-animations.js +51 -0
- package/src/lib/design/system/frozen-animations.js.map +1 -0
- package/src/lib/design/system/grid-report.d.ts +5 -0
- package/src/lib/design/system/grid-report.js +78 -0
- package/src/lib/design/system/grid-report.js.map +1 -0
- package/src/lib/design/system/handoff.js +2 -1
- package/src/lib/design/system/handoff.js.map +1 -1
- package/src/lib/design/system/harness-build-cache.d.ts +49 -0
- package/src/lib/design/system/harness-build-cache.js +188 -0
- package/src/lib/design/system/harness-build-cache.js.map +1 -0
- package/src/lib/design/system/harness-command.d.ts +7 -0
- package/src/lib/design/system/harness-command.js +51 -0
- package/src/lib/design/system/harness-command.js.map +1 -0
- package/src/lib/design/system/harness-config.d.ts +9 -0
- package/src/lib/design/system/harness-config.js +65 -0
- package/src/lib/design/system/harness-config.js.map +1 -0
- package/src/lib/design/system/harness-inputs.d.ts +17 -0
- package/src/lib/design/system/harness-inputs.js +160 -0
- package/src/lib/design/system/harness-inputs.js.map +1 -0
- package/src/lib/design/system/harness-map.d.ts +44 -0
- package/src/lib/design/system/harness-map.js +126 -0
- package/src/lib/design/system/harness-map.js.map +1 -0
- package/src/lib/design/system/harness-samples.d.ts +20 -0
- package/src/lib/design/system/harness-samples.js +92 -0
- package/src/lib/design/system/harness-samples.js.map +1 -0
- package/src/lib/design/system/harness-server.d.ts +51 -0
- package/src/lib/design/system/harness-server.js +306 -0
- package/src/lib/design/system/harness-server.js.map +1 -0
- package/src/lib/design/system/harness-shot.d.ts +78 -0
- package/src/lib/design/system/harness-shot.js +349 -0
- package/src/lib/design/system/harness-shot.js.map +1 -0
- package/src/lib/design/system/harness-watch.d.ts +79 -0
- package/src/lib/design/system/harness-watch.js +334 -0
- package/src/lib/design/system/harness-watch.js.map +1 -0
- package/src/lib/design/system/implementation-baseline.d.ts +20 -0
- package/src/lib/design/system/implementation-baseline.js +44 -0
- package/src/lib/design/system/implementation-baseline.js.map +1 -0
- package/src/lib/design/system/imports.js +14 -1
- package/src/lib/design/system/imports.js.map +1 -1
- package/src/lib/design/system/in-order-at-once.d.ts +6 -0
- package/src/lib/design/system/in-order-at-once.js +28 -0
- package/src/lib/design/system/in-order-at-once.js.map +1 -0
- package/src/lib/design/system/inventory-approval.js +2 -1
- package/src/lib/design/system/inventory-approval.js.map +1 -1
- package/src/lib/design/system/inventory.d.ts +13 -4
- package/src/lib/design/system/inventory.js +36 -7
- package/src/lib/design/system/inventory.js.map +1 -1
- package/src/lib/design/system/leftover-gate-files.d.ts +2 -0
- package/src/lib/design/system/leftover-gate-files.js +15 -0
- package/src/lib/design/system/leftover-gate-files.js.map +1 -0
- package/src/lib/design/system/lib-build-lock.d.ts +18 -0
- package/src/lib/design/system/lib-build-lock.js +111 -0
- package/src/lib/design/system/lib-build-lock.js.map +1 -0
- package/src/lib/design/system/link-free.d.ts +12 -0
- package/src/lib/design/system/link-free.js +125 -0
- package/src/lib/design/system/link-free.js.map +1 -0
- package/src/lib/design/system/list-system.d.ts +8 -8
- package/src/lib/design/system/list-system.js +19 -80
- package/src/lib/design/system/list-system.js.map +1 -1
- package/src/lib/design/system/live-actions.d.ts +121 -0
- package/src/lib/design/system/live-actions.js +674 -0
- package/src/lib/design/system/live-actions.js.map +1 -0
- package/src/lib/design/system/live-compare.d.ts +136 -0
- package/src/lib/design/system/live-compare.js +441 -0
- package/src/lib/design/system/live-compare.js.map +1 -0
- package/src/lib/design/system/live-uncovered.d.ts +45 -0
- package/src/lib/design/system/live-uncovered.js +158 -0
- package/src/lib/design/system/live-uncovered.js.map +1 -0
- package/src/lib/design/system/nested-scroll.d.ts +7 -0
- package/src/lib/design/system/nested-scroll.js +25 -0
- package/src/lib/design/system/nested-scroll.js.map +1 -0
- package/src/lib/design/system/no-verdict.d.ts +13 -0
- package/src/lib/design/system/no-verdict.js +17 -0
- package/src/lib/design/system/no-verdict.js.map +1 -0
- package/src/lib/design/system/notes/note.js +2 -1
- package/src/lib/design/system/notes/note.js.map +1 -1
- package/src/lib/design/system/occluded.d.ts +13 -0
- package/src/lib/design/system/occluded.js +111 -0
- package/src/lib/design/system/occluded.js.map +1 -0
- package/src/lib/design/system/off-centre.d.ts +11 -0
- package/src/lib/design/system/off-centre.js +74 -0
- package/src/lib/design/system/off-centre.js.map +1 -0
- package/src/lib/design/system/open-points-cache.d.ts +11 -0
- package/src/lib/design/system/open-points-cache.js +27 -0
- package/src/lib/design/system/open-points-cache.js.map +1 -0
- package/src/lib/design/system/open-points-runner.d.ts +43 -0
- package/src/lib/design/system/open-points-runner.js +119 -0
- package/src/lib/design/system/open-points-runner.js.map +1 -0
- package/src/lib/design/system/open-points-worker.d.ts +1 -0
- package/src/lib/design/system/open-points-worker.js +28 -0
- package/src/lib/design/system/open-points-worker.js.map +1 -0
- package/src/lib/design/system/open-points.d.ts +24 -6
- package/src/lib/design/system/open-points.js +59 -30
- package/src/lib/design/system/open-points.js.map +1 -1
- package/src/lib/design/system/part-build-ready.d.ts +45 -0
- package/src/lib/design/system/part-build-ready.js +135 -0
- package/src/lib/design/system/part-build-ready.js.map +1 -0
- package/src/lib/design/system/part-command.js +2 -9
- package/src/lib/design/system/part-command.js.map +1 -1
- package/src/lib/design/system/part-compare.d.ts +139 -0
- package/src/lib/design/system/part-compare.js +501 -0
- package/src/lib/design/system/part-compare.js.map +1 -0
- package/src/lib/design/system/part-picture-cache.d.ts +23 -0
- package/src/lib/design/system/part-picture-cache.js +68 -0
- package/src/lib/design/system/part-picture-cache.js.map +1 -0
- package/src/lib/design/system/part-ready.d.ts +71 -7
- package/src/lib/design/system/part-ready.js +128 -19
- package/src/lib/design/system/part-ready.js.map +1 -1
- package/src/lib/design/system/part-task.d.ts +167 -0
- package/src/lib/design/system/part-task.js +331 -0
- package/src/lib/design/system/part-task.js.map +1 -0
- package/src/lib/design/system/pixel-cache.d.ts +16 -0
- package/src/lib/design/system/pixel-cache.js +79 -0
- package/src/lib/design/system/pixel-cache.js.map +1 -0
- package/src/lib/design/system/pointer-focus.d.ts +89 -0
- package/src/lib/design/system/pointer-focus.js +175 -0
- package/src/lib/design/system/pointer-focus.js.map +1 -0
- package/src/lib/design/system/prettier.d.ts +10 -0
- package/src/lib/design/system/prettier.js +37 -0
- package/src/lib/design/system/prettier.js.map +1 -0
- package/src/lib/design/system/problem.d.ts +6 -0
- package/src/lib/design/system/product.js +2 -2
- package/src/lib/design/system/product.js.map +1 -1
- package/src/lib/design/system/reach.d.ts +12 -0
- package/src/lib/design/system/reach.js +186 -0
- package/src/lib/design/system/reach.js.map +1 -0
- package/src/lib/design/system/reachable-controls.d.ts +6 -0
- package/src/lib/design/system/reachable-controls.js +19 -0
- package/src/lib/design/system/reachable-controls.js.map +1 -0
- package/src/lib/design/system/reachable-files.d.ts +14 -0
- package/src/lib/design/system/reachable-files.js +101 -0
- package/src/lib/design/system/reachable-files.js.map +1 -0
- package/src/lib/design/system/reached-state.d.ts +23 -0
- package/src/lib/design/system/reached-state.js +53 -0
- package/src/lib/design/system/reached-state.js.map +1 -0
- package/src/lib/design/system/read-open-points.d.ts +9 -3
- package/src/lib/design/system/read-open-points.js +38 -9
- package/src/lib/design/system/read-open-points.js.map +1 -1
- package/src/lib/design/system/ready-command.d.ts +6 -2
- package/src/lib/design/system/ready-command.js +52 -15
- package/src/lib/design/system/ready-command.js.map +1 -1
- package/src/lib/design/system/record-settled.d.ts +24 -0
- package/src/lib/design/system/record-settled.js +50 -0
- package/src/lib/design/system/record-settled.js.map +1 -0
- package/src/lib/design/system/render-check.d.ts +68 -1
- package/src/lib/design/system/render-check.js +427 -114
- package/src/lib/design/system/render-check.js.map +1 -1
- package/src/lib/design/system/render-issue-key.d.ts +9 -0
- package/src/lib/design/system/render-issue-key.js +27 -0
- package/src/lib/design/system/render-issue-key.js.map +1 -0
- package/src/lib/design/system/resolve-product.d.ts +4 -1
- package/src/lib/design/system/resolve-product.js +19 -3
- package/src/lib/design/system/resolve-product.js.map +1 -1
- package/src/lib/design/system/rule-baseline.d.ts +53 -0
- package/src/lib/design/system/rule-baseline.js +124 -0
- package/src/lib/design/system/rule-baseline.js.map +1 -0
- package/src/lib/design/system/rule-skips.d.ts +20 -0
- package/src/lib/design/system/rule-skips.js +36 -0
- package/src/lib/design/system/rule-skips.js.map +1 -0
- package/src/lib/design/system/rules/app-spec.d.ts +30 -0
- package/src/lib/design/system/rules/app-spec.js +87 -0
- package/src/lib/design/system/rules/app-spec.js.map +1 -0
- package/src/lib/design/system/rules/canonical-class.d.ts +6 -0
- package/src/lib/design/system/rules/canonical-class.js +92 -113
- package/src/lib/design/system/rules/canonical-class.js.map +1 -1
- package/src/lib/design/system/rules/capability-place.d.ts +46 -0
- package/src/lib/design/system/rules/capability-place.js +129 -0
- package/src/lib/design/system/rules/capability-place.js.map +1 -0
- package/src/lib/design/system/rules/command-text.d.ts +7 -0
- package/src/lib/design/system/rules/command-text.js +72 -0
- package/src/lib/design/system/rules/command-text.js.map +1 -0
- package/src/lib/design/system/rules/denied-class.d.ts +9 -0
- package/src/lib/design/system/rules/denied-class.js +121 -0
- package/src/lib/design/system/rules/denied-class.js.map +1 -0
- package/src/lib/design/system/rules/design-coverage.d.ts +30 -0
- package/src/lib/design/system/rules/design-coverage.js +205 -0
- package/src/lib/design/system/rules/design-coverage.js.map +1 -0
- package/src/lib/design/system/rules/exemptions.d.ts +18 -0
- package/src/lib/design/system/rules/exemptions.js +18 -0
- package/src/lib/design/system/rules/exemptions.js.map +1 -0
- package/src/lib/design/system/rules/flow.js +1 -1
- package/src/lib/design/system/rules/flow.js.map +1 -1
- package/src/lib/design/system/rules/glued-interpolation.d.ts +8 -0
- package/src/lib/design/system/rules/glued-interpolation.js +77 -0
- package/src/lib/design/system/rules/glued-interpolation.js.map +1 -0
- package/src/lib/design/system/rules/hard-coded-colour.js +2 -1
- package/src/lib/design/system/rules/hard-coded-colour.js.map +1 -1
- package/src/lib/design/system/rules/implemented-components.d.ts +22 -0
- package/src/lib/design/system/rules/implemented-components.js +45 -0
- package/src/lib/design/system/rules/implemented-components.js.map +1 -0
- package/src/lib/design/system/rules/implements-unrendered.d.ts +13 -0
- package/src/lib/design/system/rules/implements-unrendered.js +63 -0
- package/src/lib/design/system/rules/implements-unrendered.js.map +1 -0
- package/src/lib/design/system/rules/implements.d.ts +2 -1
- package/src/lib/design/system/rules/implements.js +26 -21
- package/src/lib/design/system/rules/implements.js.map +1 -1
- package/src/lib/design/system/rules/inline-svg.js +4 -1
- package/src/lib/design/system/rules/inline-svg.js.map +1 -1
- package/src/lib/design/system/rules/inline-ui-in-page-open.d.ts +13 -0
- package/src/lib/design/system/rules/inline-ui-in-page-open.js +5 -0
- package/src/lib/design/system/rules/inline-ui-in-page-open.js.map +1 -0
- package/src/lib/design/system/rules/inline-ui-in-page.d.ts +18 -0
- package/src/lib/design/system/rules/inline-ui-in-page.js +123 -0
- package/src/lib/design/system/rules/inline-ui-in-page.js.map +1 -0
- package/src/lib/design/system/rules/inline-ui.d.ts +16 -0
- package/src/lib/design/system/rules/inline-ui.js +100 -0
- package/src/lib/design/system/rules/inline-ui.js.map +1 -0
- package/src/lib/design/system/rules/motion.d.ts +1 -1
- package/src/lib/design/system/rules/motion.js +31 -17
- package/src/lib/design/system/rules/motion.js.map +1 -1
- package/src/lib/design/system/rules/native-title.d.ts +7 -0
- package/src/lib/design/system/rules/native-title.js +74 -0
- package/src/lib/design/system/rules/native-title.js.map +1 -0
- package/src/lib/design/system/rules/option-values.d.ts +1 -1
- package/src/lib/design/system/rules/orphan-endpoint-known.d.ts +12 -0
- package/src/lib/design/system/rules/orphan-endpoint-known.js +20 -0
- package/src/lib/design/system/rules/orphan-endpoint-known.js.map +1 -0
- package/src/lib/design/system/rules/orphan-endpoint.d.ts +23 -0
- package/src/lib/design/system/rules/orphan-endpoint.js +166 -0
- package/src/lib/design/system/rules/orphan-endpoint.js.map +1 -0
- package/src/lib/design/system/rules/part-rewrite.d.ts +13 -0
- package/src/lib/design/system/rules/part-rewrite.js +125 -0
- package/src/lib/design/system/rules/part-rewrite.js.map +1 -0
- package/src/lib/design/system/rules/pending-state.d.ts +39 -0
- package/src/lib/design/system/rules/pending-state.js +289 -0
- package/src/lib/design/system/rules/pending-state.js.map +1 -0
- package/src/lib/design/system/rules/sample-default-known.d.ts +5 -0
- package/src/lib/design/system/rules/sample-default-known.js +17 -0
- package/src/lib/design/system/rules/sample-default-known.js.map +1 -0
- package/src/lib/design/system/rules/sample-default.d.ts +22 -0
- package/src/lib/design/system/rules/sample-default.js +92 -0
- package/src/lib/design/system/rules/sample-default.js.map +1 -0
- package/src/lib/design/system/rules/sdk-attribute-value.d.ts +10 -0
- package/src/lib/design/system/rules/sdk-attribute-value.js +78 -0
- package/src/lib/design/system/rules/sdk-attribute-value.js.map +1 -0
- package/src/lib/design/system/rules/sdk-private-var.d.ts +9 -0
- package/src/lib/design/system/rules/sdk-private-var.js +54 -0
- package/src/lib/design/system/rules/sdk-private-var.js.map +1 -0
- package/src/lib/design/system/rules/skips.d.ts +4 -0
- package/src/lib/design/system/rules/skips.js +27 -0
- package/src/lib/design/system/rules/skips.js.map +1 -0
- package/src/lib/design/system/rules/stale-replace.js +5 -0
- package/src/lib/design/system/rules/stale-replace.js.map +1 -1
- package/src/lib/design/system/rules/state-in-component.d.ts +16 -0
- package/src/lib/design/system/rules/state-in-component.js +101 -0
- package/src/lib/design/system/rules/state-in-component.js.map +1 -0
- package/src/lib/design/system/rules/tailwind-classes.d.ts +52 -0
- package/src/lib/design/system/rules/tailwind-classes.js +237 -0
- package/src/lib/design/system/rules/tailwind-classes.js.map +1 -0
- package/src/lib/design/system/rules/token-selectors.js +10 -3
- package/src/lib/design/system/rules/token-selectors.js.map +1 -1
- package/src/lib/design/system/rules/top-level-await.d.ts +9 -0
- package/src/lib/design/system/rules/top-level-await.js +62 -0
- package/src/lib/design/system/rules/top-level-await.js.map +1 -0
- package/src/lib/design/system/rules/unbound-input-known.d.ts +7 -0
- package/src/lib/design/system/rules/unbound-input-known.js +44 -0
- package/src/lib/design/system/rules/unbound-input-known.js.map +1 -0
- package/src/lib/design/system/rules/unbound-input.d.ts +24 -0
- package/src/lib/design/system/rules/unbound-input.js +67 -0
- package/src/lib/design/system/rules/unbound-input.js.map +1 -0
- package/src/lib/design/system/rules/uncovered-region.d.ts +13 -0
- package/src/lib/design/system/rules/uncovered-region.js +36 -0
- package/src/lib/design/system/rules/uncovered-region.js.map +1 -0
- package/src/lib/design/system/rules/undefined-class.d.ts +9 -0
- package/src/lib/design/system/rules/undefined-class.js +41 -0
- package/src/lib/design/system/rules/undefined-class.js.map +1 -0
- package/src/lib/design/system/rules/undefined-token.d.ts +1 -1
- package/src/lib/design/system/rules/undefined-token.js +7 -61
- package/src/lib/design/system/rules/undefined-token.js.map +1 -1
- package/src/lib/design/system/rules/utility-css.d.ts +2 -1
- package/src/lib/design/system/rules/utility-css.js +40 -13
- package/src/lib/design/system/rules/utility-css.js.map +1 -1
- package/src/lib/design/system/rules/view-coverage.d.ts +8 -0
- package/src/lib/design/system/rules/view-coverage.js +51 -0
- package/src/lib/design/system/rules/view-coverage.js.map +1 -0
- package/src/lib/design/system/rules/visible-change.d.ts +19 -0
- package/src/lib/design/system/rules/visible-change.js +48 -0
- package/src/lib/design/system/rules/visible-change.js.map +1 -0
- package/src/lib/design/system/sdk-declarations.d.ts +10 -0
- package/src/lib/design/system/sdk-declarations.js +177 -0
- package/src/lib/design/system/sdk-declarations.js.map +1 -0
- package/src/lib/design/system/sdk-errors.d.ts +14 -0
- package/src/lib/design/system/sdk-errors.js +38 -0
- package/src/lib/design/system/sdk-errors.js.map +1 -0
- package/src/lib/design/system/sdk-selectors.d.ts +18 -0
- package/src/lib/design/system/sdk-selectors.js +131 -0
- package/src/lib/design/system/sdk-selectors.js.map +1 -0
- package/src/lib/design/system/see-through.d.ts +12 -0
- package/src/lib/design/system/see-through.js +112 -0
- package/src/lib/design/system/see-through.js.map +1 -0
- package/src/lib/design/system/served-cache.d.ts +99 -0
- package/src/lib/design/system/served-cache.js +202 -0
- package/src/lib/design/system/served-cache.js.map +1 -0
- package/src/lib/design/system/settled-panes.d.ts +23 -0
- package/src/lib/design/system/settled-panes.js +71 -0
- package/src/lib/design/system/settled-panes.js.map +1 -0
- package/src/lib/design/system/sketch/after-merge.d.ts +11 -0
- package/src/lib/design/system/sketch/after-merge.js +51 -0
- package/src/lib/design/system/sketch/after-merge.js.map +1 -0
- package/src/lib/design/system/sketch/aktuell-placeholders.d.ts +30 -0
- package/src/lib/design/system/sketch/aktuell-placeholders.js +87 -0
- package/src/lib/design/system/sketch/aktuell-placeholders.js.map +1 -0
- package/src/lib/design/system/sketch/baseline.d.ts +36 -2
- package/src/lib/design/system/sketch/baseline.js +76 -13
- package/src/lib/design/system/sketch/baseline.js.map +1 -1
- package/src/lib/design/system/sketch/check-format.js +3 -9
- package/src/lib/design/system/sketch/check-format.js.map +1 -1
- package/src/lib/design/system/sketch/check-sketches.d.ts +10 -0
- package/src/lib/design/system/sketch/check-sketches.js +50 -4
- package/src/lib/design/system/sketch/check-sketches.js.map +1 -1
- package/src/lib/design/system/sketch/clean-copy.d.ts +18 -0
- package/src/lib/design/system/sketch/clean-copy.js +104 -0
- package/src/lib/design/system/sketch/clean-copy.js.map +1 -0
- package/src/lib/design/system/sketch/cli-args.d.ts +13 -3
- package/src/lib/design/system/sketch/cli-args.js +20 -5
- package/src/lib/design/system/sketch/cli-args.js.map +1 -1
- package/src/lib/design/system/sketch/covered-diffs.d.ts +40 -0
- package/src/lib/design/system/sketch/covered-diffs.js +106 -0
- package/src/lib/design/system/sketch/covered-diffs.js.map +1 -0
- package/src/lib/design/system/sketch/edit-sketch.d.ts +29 -0
- package/src/lib/design/system/sketch/edit-sketch.js +169 -0
- package/src/lib/design/system/sketch/edit-sketch.js.map +1 -0
- package/src/lib/design/system/sketch/frame-budget.d.ts +24 -0
- package/src/lib/design/system/sketch/frame-budget.js +23 -0
- package/src/lib/design/system/sketch/frame-budget.js.map +1 -0
- package/src/lib/design/system/sketch/identical-renders.d.ts +31 -0
- package/src/lib/design/system/sketch/identical-renders.js +143 -0
- package/src/lib/design/system/sketch/identical-renders.js.map +1 -0
- package/src/lib/design/system/sketch/merge-commit.d.ts +20 -0
- package/src/lib/design/system/sketch/merge-commit.js +72 -0
- package/src/lib/design/system/sketch/merge-commit.js.map +1 -0
- package/src/lib/design/system/sketch/merge-runner.d.ts +20 -0
- package/src/lib/design/system/sketch/merge-runner.js +73 -0
- package/src/lib/design/system/sketch/merge-runner.js.map +1 -0
- package/src/lib/design/system/sketch/merge-shared.d.ts +2 -0
- package/src/lib/design/system/sketch/merge-shared.js +7 -10
- package/src/lib/design/system/sketch/merge-shared.js.map +1 -1
- package/src/lib/design/system/sketch/merge-step.d.ts +47 -0
- package/src/lib/design/system/sketch/merge-step.js +110 -0
- package/src/lib/design/system/sketch/merge-step.js.map +1 -0
- package/src/lib/design/system/sketch/merge-worker.d.ts +1 -0
- package/src/lib/design/system/sketch/merge-worker.js +14 -0
- package/src/lib/design/system/sketch/merge-worker.js.map +1 -0
- package/src/lib/design/system/sketch/merge.d.ts +19 -5
- package/src/lib/design/system/sketch/merge.js +245 -82
- package/src/lib/design/system/sketch/merge.js.map +1 -1
- package/src/lib/design/system/sketch/merged-layout.d.ts +17 -0
- package/src/lib/design/system/sketch/merged-layout.js +57 -0
- package/src/lib/design/system/sketch/merged-layout.js.map +1 -0
- package/src/lib/design/system/sketch/merged-parts.d.ts +31 -30
- package/src/lib/design/system/sketch/merged-parts.js +99 -84
- package/src/lib/design/system/sketch/merged-parts.js.map +1 -1
- package/src/lib/design/system/sketch/no-visible-change.d.ts +10 -0
- package/src/lib/design/system/sketch/no-visible-change.js +16 -6
- package/src/lib/design/system/sketch/no-visible-change.js.map +1 -1
- package/src/lib/design/system/sketch/note-language.d.ts +7 -0
- package/src/lib/design/system/sketch/note-language.js +83 -0
- package/src/lib/design/system/sketch/note-language.js.map +1 -0
- package/src/lib/design/system/sketch/part-definition.d.ts +27 -1
- package/src/lib/design/system/sketch/part-definition.js +109 -17
- package/src/lib/design/system/sketch/part-definition.js.map +1 -1
- package/src/lib/design/system/sketch/rebase-port.d.ts +24 -0
- package/src/lib/design/system/sketch/rebase-port.js +215 -0
- package/src/lib/design/system/sketch/rebase-port.js.map +1 -0
- package/src/lib/design/system/sketch/sample-mark-drift.d.ts +33 -0
- package/src/lib/design/system/sketch/sample-mark-drift.js +88 -0
- package/src/lib/design/system/sketch/sample-mark-drift.js.map +1 -0
- package/src/lib/design/system/sketch/sketch-check-cache.d.ts +11 -0
- package/src/lib/design/system/sketch/sketch-check-cache.js +22 -0
- package/src/lib/design/system/sketch/sketch-check-cache.js.map +1 -0
- package/src/lib/design/system/sketch/sketch-check-worker.d.ts +1 -0
- package/src/lib/design/system/sketch/sketch-check-worker.js +32 -0
- package/src/lib/design/system/sketch/sketch-check-worker.js.map +1 -0
- package/src/lib/design/system/sketch/sketch-checker.d.ts +40 -0
- package/src/lib/design/system/sketch/sketch-checker.js +109 -0
- package/src/lib/design/system/sketch/sketch-checker.js.map +1 -0
- package/src/lib/design/system/sketch/sketch.d.ts +100 -8
- package/src/lib/design/system/sketch/sketch.js +279 -36
- package/src/lib/design/system/sketch/sketch.js.map +1 -1
- package/src/lib/design/system/sketch/stale-base.d.ts +22 -0
- package/src/lib/design/system/sketch/stale-base.js +56 -0
- package/src/lib/design/system/sketch/stale-base.js.map +1 -0
- package/src/lib/design/system/sketch/unchanged-states.d.ts +39 -3
- package/src/lib/design/system/sketch/unchanged-states.js +75 -23
- package/src/lib/design/system/sketch/unchanged-states.js.map +1 -1
- package/src/lib/design/system/sketch/unused-closure.js +16 -4
- package/src/lib/design/system/sketch/unused-closure.js.map +1 -1
- package/src/lib/design/system/sketch/viewed-shots.d.ts +32 -0
- package/src/lib/design/system/sketch/viewed-shots.js +54 -0
- package/src/lib/design/system/sketch/viewed-shots.js.map +1 -0
- package/src/lib/design/system/skip-classes.d.ts +3 -0
- package/src/lib/design/system/skip-classes.js +17 -0
- package/src/lib/design/system/skip-classes.js.map +1 -0
- package/src/lib/design/system/slot-hosts.d.ts +38 -0
- package/src/lib/design/system/slot-hosts.js +93 -0
- package/src/lib/design/system/slot-hosts.js.map +1 -0
- package/src/lib/design/system/slow-checks.d.ts +44 -0
- package/src/lib/design/system/slow-checks.js +250 -0
- package/src/lib/design/system/slow-checks.js.map +1 -0
- package/src/lib/design/system/slow-run.d.ts +67 -0
- package/src/lib/design/system/slow-run.js +312 -0
- package/src/lib/design/system/slow-run.js.map +1 -0
- package/src/lib/design/system/stale-design-mocks.d.ts +20 -0
- package/src/lib/design/system/stale-design-mocks.js +59 -0
- package/src/lib/design/system/stale-design-mocks.js.map +1 -0
- package/src/lib/design/system/stale-dist.d.ts +61 -0
- package/src/lib/design/system/stale-dist.js +141 -0
- package/src/lib/design/system/stale-dist.js.map +1 -0
- package/src/lib/design/system/stale-parts.d.ts +45 -0
- package/src/lib/design/system/stale-parts.js +168 -0
- package/src/lib/design/system/stale-parts.js.map +1 -0
- package/src/lib/design/system/surface-nesting.d.ts +11 -0
- package/src/lib/design/system/surface-nesting.js +86 -0
- package/src/lib/design/system/surface-nesting.js.map +1 -0
- package/src/lib/design/system/system-command.js +11 -9
- package/src/lib/design/system/system-command.js.map +1 -1
- package/src/lib/design/system/system-modules.d.ts +17 -2
- package/src/lib/design/system/system-modules.js +18 -2
- package/src/lib/design/system/system-modules.js.map +1 -1
- package/src/lib/design/system/system-tsconfig.d.ts +9 -2
- package/src/lib/design/system/system-tsconfig.js +73 -13
- package/src/lib/design/system/system-tsconfig.js.map +1 -1
- package/src/lib/design/system/task-command.d.ts +52 -0
- package/src/lib/design/system/task-command.js +271 -0
- package/src/lib/design/system/task-command.js.map +1 -0
- package/src/lib/design/system/theming-text.d.ts +2 -0
- package/src/lib/design/system/theming-text.js +6 -0
- package/src/lib/design/system/theming-text.js.map +1 -0
- package/src/lib/design/system/touched-parts.d.ts +16 -0
- package/src/lib/design/system/touched-parts.js +121 -0
- package/src/lib/design/system/touched-parts.js.map +1 -0
- package/src/lib/design/system/tracked-reads.d.ts +27 -0
- package/src/lib/design/system/tracked-reads.js +100 -0
- package/src/lib/design/system/tracked-reads.js.map +1 -0
- package/src/lib/design/system/ts-source.d.ts +2 -0
- package/src/lib/design/system/ts-source.js +15 -1
- package/src/lib/design/system/ts-source.js.map +1 -1
- package/src/lib/design/system/unchanged-rows.d.ts +24 -0
- package/src/lib/design/system/unchanged-rows.js +212 -0
- package/src/lib/design/system/unchanged-rows.js.map +1 -0
- package/src/lib/design/system/uncommitted-decisions.d.ts +4 -0
- package/src/lib/design/system/uncommitted-decisions.js +35 -0
- package/src/lib/design/system/uncommitted-decisions.js.map +1 -0
- package/src/lib/design/system/uncovered-regions.d.ts +61 -0
- package/src/lib/design/system/uncovered-regions.js +171 -0
- package/src/lib/design/system/uncovered-regions.js.map +1 -0
- package/src/lib/design/system/unused-base-parts.d.ts +7 -0
- package/src/lib/design/system/unused-base-parts.js +76 -0
- package/src/lib/design/system/unused-base-parts.js.map +1 -0
- package/src/lib/design/system/visible-change-command.d.ts +60 -0
- package/src/lib/design/system/visible-change-command.js +310 -0
- package/src/lib/design/system/visible-change-command.js.map +1 -0
- package/src/lib/design/system/visible-change-parts.d.ts +28 -0
- package/src/lib/design/system/visible-change-parts.js +96 -0
- package/src/lib/design/system/visible-change-parts.js.map +1 -0
- package/src/lib/design/system/visible-change.d.ts +82 -0
- package/src/lib/design/system/visible-change.js +149 -0
- package/src/lib/design/system/visible-change.js.map +1 -0
- package/src/lib/design/system/write-origin.d.ts +12 -0
- package/src/lib/design/system/write-origin.js +18 -0
- package/src/lib/design/system/write-origin.js.map +1 -0
- package/src/lib/design/system-use.js +4 -4
- package/src/lib/design/system-use.js.map +1 -1
- package/src/lib/design/thumb.d.ts +37 -4
- package/src/lib/design/thumb.js +118 -21
- package/src/lib/design/thumb.js.map +1 -1
- package/src/lib/design/timings-command.d.ts +22 -0
- package/src/lib/design/timings-command.js +175 -0
- package/src/lib/design/timings-command.js.map +1 -0
- package/src/lib/design/timings.d.ts +117 -0
- package/src/lib/design/timings.js +296 -0
- package/src/lib/design/timings.js.map +1 -0
- package/src/lib/design/typecheck.d.ts +1 -1
- package/src/lib/design/typecheck.js +5 -5
- package/src/lib/design/typecheck.js.map +1 -1
- package/src/lib/design/unstable-cells.d.ts +23 -0
- package/src/lib/design/unstable-cells.js +40 -0
- package/src/lib/design/unstable-cells.js.map +1 -0
- package/src/lib/design/variant-diff.js +1 -1
- package/src/lib/design/variant-diff.js.map +1 -1
- package/src/lib/design/vite-cache.d.ts +11 -0
- package/src/lib/design/vite-cache.js +61 -0
- package/src/lib/design/vite-cache.js.map +1 -0
- package/src/lib/design/wait.d.ts +15 -0
- package/src/lib/design/wait.js +30 -0
- package/src/lib/design/wait.js.map +1 -0
- package/src/lib/design/warm-draw.d.ts +33 -0
- package/src/lib/design/warm-draw.js +74 -0
- package/src/lib/design/warm-draw.js.map +1 -0
- package/src/lib/design/warm-pages.d.ts +10 -2
- package/src/lib/design/warm-pages.js +6 -2
- package/src/lib/design/warm-pages.js.map +1 -1
- package/src/lib/design/work-root.d.ts +2 -0
- package/src/lib/design/work-root.js +8 -0
- package/src/lib/design/work-root.js.map +1 -0
- package/src/lib/json-file.d.ts +11 -0
- package/src/lib/json-file.js +21 -0
- package/src/lib/json-file.js.map +1 -0
- package/src/lib/plain-output.d.ts +27 -0
- package/src/lib/plain-output.js +66 -0
- package/src/lib/plain-output.js.map +1 -0
- package/src/lib/release.js +11 -3
- package/src/lib/release.js.map +1 -1
- package/src/lib/source-hash.d.ts +7 -0
- package/src/lib/source-hash.js +62 -0
- package/src/lib/source-hash.js.map +1 -0
- package/src/lib/update/agent-setup.js +2 -1
- package/src/lib/update/agent-setup.js.map +1 -1
- package/src/lib/update/commits.js +2 -2
- package/src/lib/update/commits.js.map +1 -1
- package/src/lib/update/migration-manifest.d.ts +12 -0
- package/src/lib/update/migration-manifest.js +13 -0
- package/src/lib/update/migration-manifest.js.map +1 -1
- package/src/lib/update/migration-record.js +2 -1
- package/src/lib/update/migration-record.js.map +1 -1
- package/src/lib/update/packages.js +4 -2
- package/src/lib/update/packages.js.map +1 -1
- package/src/lib/update/pending.js +2 -1
- package/src/lib/update/pending.js.map +1 -1
- package/src/lib/update/run-migrations.d.ts +3 -2
- package/src/lib/update/run-migrations.js +38 -5
- package/src/lib/update/run-migrations.js.map +1 -1
- package/src/lib/update/scan.js +8 -2
- package/src/lib/update/scan.js.map +1 -1
- package/src/lib/update/tasks.js +2 -1
- package/src/lib/update/tasks.js.map +1 -1
- package/src/lib/design/paths.js +0 -138
- package/src/lib/design/paths.js.map +0 -1
- package/src/lib/design/system/accept-command.d.ts +0 -7
- package/src/lib/design/system/accept-command.js +0 -55
- package/src/lib/design/system/accept-command.js.map +0 -1
|
@@ -20,61 +20,93 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
20
20
|
return t;
|
|
21
21
|
};
|
|
22
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
-
exports.designSketch = exports.verdictLinesOf = exports.sketchFlagHelpOf = exports.SKETCH_USAGE = void 0;
|
|
23
|
+
exports.designSketch = exports.verdictLinesOf = exports.beforeLinesOf = exports.retriedHeldMerges = exports.sketchFlagHelpOf = exports.SKETCH_USAGE = void 0;
|
|
24
24
|
const unused_closure_1 = require("./system/sketch/unused-closure");
|
|
25
|
+
const crypto_1 = require("crypto");
|
|
26
|
+
const fs_1 = require("fs");
|
|
27
|
+
const os_1 = require("os");
|
|
25
28
|
const path_1 = require("path");
|
|
29
|
+
const phase_timing_1 = require("./phase-timing");
|
|
30
|
+
const write_origin_1 = require("./system/write-origin");
|
|
26
31
|
const assets_1 = require("./system/assets");
|
|
27
32
|
const comment_1 = require("./system/comments/comment");
|
|
28
33
|
const product_1 = require("./system/product");
|
|
29
34
|
const resolve_product_1 = require("./system/resolve-product");
|
|
30
35
|
const check_format_1 = require("./system/sketch/check-format");
|
|
36
|
+
const frame_budget_1 = require("./system/sketch/frame-budget");
|
|
37
|
+
const note_language_1 = require("./system/sketch/note-language");
|
|
31
38
|
const check_sketches_1 = require("./system/sketch/check-sketches");
|
|
32
39
|
const cli_args_1 = require("./system/sketch/cli-args");
|
|
33
40
|
const ready_shots_1 = require("./ready-shots");
|
|
41
|
+
const no_visible_change_1 = require("./system/sketch/no-visible-change");
|
|
42
|
+
const covered_diffs_1 = require("./system/sketch/covered-diffs");
|
|
43
|
+
const viewed_shots_1 = require("./system/sketch/viewed-shots");
|
|
44
|
+
const complete_1 = require("./system/complete");
|
|
34
45
|
const merge_1 = require("./system/sketch/merge");
|
|
46
|
+
const merge_step_1 = require("./system/sketch/merge-step");
|
|
47
|
+
const check_system_1 = require("./system/check-system");
|
|
48
|
+
const stale_base_1 = require("./system/sketch/stale-base");
|
|
49
|
+
const invocation_1 = require("../invocation");
|
|
35
50
|
const merged_parts_1 = require("./system/sketch/merged-parts");
|
|
51
|
+
const no_verdict_1 = require("./system/no-verdict");
|
|
36
52
|
const render_check_1 = require("./system/render-check");
|
|
37
53
|
const merge_preview_1 = require("./system/sketch/merge-preview");
|
|
38
54
|
const open_points_1 = require("./system/open-points");
|
|
39
55
|
const read_open_points_1 = require("./system/read-open-points");
|
|
40
56
|
const overlay_1 = require("./system/sketch/overlay");
|
|
57
|
+
const system_modules_1 = require("./system/system-modules");
|
|
58
|
+
const unchanged_states_1 = require("./system/sketch/unchanged-states");
|
|
59
|
+
const rebase_port_1 = require("./system/sketch/rebase-port");
|
|
60
|
+
const theming_text_1 = require("./system/theming-text");
|
|
61
|
+
const warm_draw_1 = require("./warm-draw");
|
|
41
62
|
const sketch_1 = require("./system/sketch/sketch");
|
|
63
|
+
const plain_output_1 = require("../plain-output");
|
|
64
|
+
const design_lint_1 = require("./design-lint");
|
|
42
65
|
exports.SKETCH_USAGE = [
|
|
43
|
-
'sketch new <layer>/<name> [<layer>/<name>…] --variants a,b --by <model id> [--like <layer>/<name>[:<variant>]] [--round <title>] [--note <text>] [--variant-note <variant>=<text>]… [--override | --into-base] [--product <name>]',
|
|
66
|
+
'sketch new <layer>/<name> [<layer>/<name>…] --variants a,b --by <model id> [--like <layer>/<name>[:<variant>]] [--name <sketch name>] [--round <title>] [--note <text>] [--variant-note <variant>=<text>]… [--override | --into-base] [--ready] [--product <name>]',
|
|
44
67
|
'sketch variant <layer>/<name> <variant>[,<variant>…] --from <variant> --by <model id> [--round <title> --note <why the running round lost> [--round-note <what the new round shows>]] [--product <name>]',
|
|
45
68
|
'sketch round <layer>/<name> <round> [--title <text>] [--note <text>] [--drops <state,state>] --by <model id> [--product <name>]',
|
|
46
|
-
'sketch
|
|
69
|
+
'sketch covers <layer>/<name> [[<layer>/<name>:]<state>[@<x>,<y>,<w>,<h>]…] --by <model id> [--product <name>]',
|
|
70
|
+
'sketch note <layer>/<name> [<variant>] <text> [--round <round>] --by <model id> [--product <name>]',
|
|
47
71
|
'sketch target add <layer>/<name> <layer>/<name> --by <model id> [--product <name>]',
|
|
72
|
+
'sketch target remove <layer>/<name> <layer>/<name> --by <model id> [--product <name>]',
|
|
48
73
|
'sketch list [--product <name>] [--json]',
|
|
49
|
-
'sketch report <layer>/<name> --variant <key> --by <model id> (<text> | --done) [--product <name>]',
|
|
74
|
+
'sketch report <layer>/<name> --variant <key> --by <model id> (<text> | --done) [--reopen] [--product <name>]',
|
|
50
75
|
'sketch ready <layer>/<name> --by <model id> [--product <name>]',
|
|
51
76
|
'sketch hold <layer>/<name> --until <what the change waits on> --by <model id> [--product <name>]',
|
|
52
77
|
'sketch release <layer>/<name> --by <model id> [--product <name>]',
|
|
53
78
|
'sketch check [<layer>/<name>] [--fix] [--product <name>]',
|
|
54
79
|
'sketch preview <layer>/<name> <variant> [--product <name>] [--json]',
|
|
55
|
-
'sketch rebase <layer>/<name> --by <model id> [--product <name>]',
|
|
56
|
-
'sketch merge <layer>/<name> [--note <reason>] [--variant <key> --allowed-by <plan ref>] --by <model id> [--product <name>]',
|
|
80
|
+
'sketch rebase <layer>/<name> [--ported] --by <model id> [--product <name>]',
|
|
81
|
+
'sketch merge <layer>/<name> [--note <reason> [--replace-note]] [--variant <key> --allowed-by <plan ref>] [--decided-by <name>] --by <model id> [--product <name>]',
|
|
57
82
|
'sketch discard <layer>/<name> --by <model id> [--product <name>]',
|
|
58
83
|
'sketch reject <layer>/<name> --variant <key> [--reason <text>] --by <model id | designer> [--product <name>]',
|
|
59
84
|
'sketch reopen <layer>/<name> --variant <key> [--reason <text>] --by <model id | designer> [--product <name>]',
|
|
85
|
+
'sketch withdraw <layer>/<name> --variant <key> --by <model id> [--product <name>]',
|
|
60
86
|
];
|
|
61
87
|
const FLAG_HELP = {
|
|
62
88
|
'--variants': 'the variant folders to open, a comma list: a,b,c',
|
|
63
89
|
'--variant-note': "the note of one variant, kept in sketch.json apart from the part's merged note; repeat it per variant: a=<text>",
|
|
64
90
|
'--by': 'the exact model id the coordinator gave you, e.g. claude-opus-5-5',
|
|
91
|
+
'--name': 'a second sketch on a part that has one: it lives in its own folder and is addressed as <layer>/<name>@<sketch name>',
|
|
65
92
|
'--like': 'start each variant from another part, or from a variant of the open sketch on it',
|
|
66
93
|
'--override': 'on a base part: merge into a product copy that overrides the base, not into the base; on a product override: sketch that copy',
|
|
67
94
|
'--into-base': 'on a part the product overrides: start from the product copy, merge into the base and remove the copy',
|
|
68
|
-
'--
|
|
95
|
+
'--ready': 'on new: run sketch ready (its gates are the check) right after opening the sketch; it fails when either refuses and the sketch stays in progress',
|
|
96
|
+
'--ported': 'on rebase: the conflicting files hold the product change already, ported by hand - keep them and rebase',
|
|
97
|
+
'--round': 'the title of a new round; on note: the key of the round whose note to rewrite',
|
|
69
98
|
'--round-note': 'what the new round shows',
|
|
70
99
|
'--from': 'the variant to copy',
|
|
71
100
|
'--title': 'the new title of the round',
|
|
72
101
|
'--drops': 'the states the round drops on purpose, a comma list',
|
|
73
102
|
'--variant': 'the variant the command is about; on merge, the only live variant of a sketch with no pick',
|
|
74
|
-
'--allowed-by': 'the plan entry that lets the merge go without a pick in Studio;
|
|
103
|
+
'--allowed-by': 'the plan entry that lets the merge go without a pick in Studio; noted in merged.json, needs --variant',
|
|
104
|
+
'--decided-by': 'on merge: who picked the variant, as merged.json records it (default user); a name the designer gave you at this terminal, e.g. tom - not with --allowed-by',
|
|
105
|
+
'--replace-note': "on merge: also write --note over each target part's note",
|
|
75
106
|
'--reason': 'why; on reject of a variant that is rejected already it sets the reason of that rejection; stored with who wrote it',
|
|
76
107
|
'--until': 'what the pending change waits on: an open decision, a helper still to land',
|
|
77
108
|
'--done': 'end the live report of the variant',
|
|
109
|
+
'--reopen': 'on report: move a ready sketch back to in progress',
|
|
78
110
|
'--product': 'the product; needed only when config.json declares more than one and no other product has the sketch',
|
|
79
111
|
'--json': 'print JSON',
|
|
80
112
|
'--fix': "write the variants in the checkout's Prettier format first",
|
|
@@ -84,7 +116,7 @@ const NOTE_HELP = {
|
|
|
84
116
|
new: 'what the first round shows',
|
|
85
117
|
variant: 'why the running round lost; needed with --round',
|
|
86
118
|
round: 'what the round shows',
|
|
87
|
-
merge:
|
|
119
|
+
merge: "why this variant; noted in merged.json, the part's note stays",
|
|
88
120
|
};
|
|
89
121
|
/** One line per flag the usage line names, for `sketch <command> --help`. */
|
|
90
122
|
const sketchFlagHelpOf = (usage) => {
|
|
@@ -94,13 +126,14 @@ const sketchFlagHelpOf = (usage) => {
|
|
|
94
126
|
return [...new Set((_b = usage.match(/--[a-z-]+/gu)) !== null && _b !== void 0 ? _b : [])].flatMap((flag) => help[flag] === undefined ? [] : [` ${flag.padEnd(16)}${help[flag]}`]);
|
|
95
127
|
};
|
|
96
128
|
exports.sketchFlagHelpOf = sketchFlagHelpOf;
|
|
97
|
-
const VERDICTS = new Set(['reject', 'reopen']);
|
|
129
|
+
const VERDICTS = new Set(['reject', 'reopen', 'withdraw']);
|
|
98
130
|
const WRITES = new Set([
|
|
99
131
|
'new',
|
|
100
132
|
'target',
|
|
101
133
|
'variant',
|
|
102
134
|
'round',
|
|
103
135
|
'note',
|
|
136
|
+
'covers',
|
|
104
137
|
'report',
|
|
105
138
|
'ready',
|
|
106
139
|
'hold',
|
|
@@ -110,6 +143,11 @@ const WRITES = new Set([
|
|
|
110
143
|
'discard',
|
|
111
144
|
...VERDICTS,
|
|
112
145
|
]);
|
|
146
|
+
const RETRIES = new Set([...WRITES, 'check']);
|
|
147
|
+
const staleBasesOf = (context, options) => {
|
|
148
|
+
var _a;
|
|
149
|
+
return (0, check_system_1.staleSketchBasesOf)(Object.assign(Object.assign({}, options), { invocation: (_a = context.invocation) !== null && _a !== void 0 ? _a : (0, invocation_1.repoInvocation)({ root: context.target, subcommand: 'design' }) }));
|
|
150
|
+
};
|
|
113
151
|
const fail = (message) => {
|
|
114
152
|
console.error(message);
|
|
115
153
|
return 1;
|
|
@@ -168,7 +206,7 @@ const variantLineOf = (options) => {
|
|
|
168
206
|
const files = sketch.targets.map((part) => partFileOf(Object.assign(Object.assign({}, options), { part }))).join(', ');
|
|
169
207
|
return ` ${variant}: ${files} assets: ${(0, path_1.relative)(root, (0, path_1.resolve)(sketch.dir, variant, assets_1.ASSETS_FOLDER))}/`;
|
|
170
208
|
};
|
|
171
|
-
const
|
|
209
|
+
const opened = (context) => {
|
|
172
210
|
var _a, _b, _c, _d, _e;
|
|
173
211
|
const { target, config, args } = context;
|
|
174
212
|
const product = (0, cli_args_1.oneProductOf)({ target, config, asked: args.values['--product'] });
|
|
@@ -180,6 +218,10 @@ const created = (context) => {
|
|
|
180
218
|
return fail(unknown);
|
|
181
219
|
if (parsed === undefined || typeof parsed === 'string')
|
|
182
220
|
return fail((_a = exports.SKETCH_USAGE[0]) !== null && _a !== void 0 ? _a : '');
|
|
221
|
+
const name = args.values['--name'];
|
|
222
|
+
const named = name === undefined ? parsed : (0, sketch_1.parseTarget)(`${parsed.layer}/${parsed.name}@${name}`);
|
|
223
|
+
if (typeof named === 'string')
|
|
224
|
+
return fail(named);
|
|
183
225
|
const variants = ((_b = args.values['--variants']) !== null && _b !== void 0 ? _b : '').split(',').filter((variant) => variant !== '');
|
|
184
226
|
const notes = variantNotesOf((_c = args.repeated['--variant-note']) !== null && _c !== void 0 ? _c : [], variants);
|
|
185
227
|
if (typeof notes === 'string')
|
|
@@ -196,7 +238,7 @@ const created = (context) => {
|
|
|
196
238
|
return fail('pass --override or --into-base, not both');
|
|
197
239
|
const sketch = (0, sketch_1.createSketch)({
|
|
198
240
|
product,
|
|
199
|
-
sketch:
|
|
241
|
+
sketch: named,
|
|
200
242
|
others: others.filter((entry) => typeof entry !== 'string'),
|
|
201
243
|
variants,
|
|
202
244
|
roundTitle: args.values['--round'],
|
|
@@ -217,25 +259,53 @@ const created = (context) => {
|
|
|
217
259
|
console.log(` shared by every variant, imported as @shared/<path>; edit it here, not in a copy:`);
|
|
218
260
|
shared.forEach((file) => console.log(` ${(0, path_1.relative)(target, file)}`));
|
|
219
261
|
}
|
|
220
|
-
nextStepsOf(sketch, product
|
|
262
|
+
nextStepsOf(sketch, product).forEach((line) => console.log(line));
|
|
221
263
|
return 0;
|
|
222
264
|
};
|
|
223
|
-
const
|
|
265
|
+
const created = (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
266
|
+
const code = opened(context);
|
|
267
|
+
if (code !== 0 || !context.args.flags.has('--ready'))
|
|
268
|
+
return code;
|
|
269
|
+
const found = productAndSketchOf(Object.assign(Object.assign({}, context), { args: Object.assign(Object.assign({}, context.args), { positional: [openedTargetOf(context)] }) }));
|
|
270
|
+
if (typeof found === 'string')
|
|
271
|
+
return fail(found);
|
|
272
|
+
const again = Object.assign(Object.assign({}, context), { args: Object.assign(Object.assign({}, context.args), { positional: [found.sketch.target] }) });
|
|
273
|
+
const readyCode = yield readied(again);
|
|
274
|
+
return readyCode === 0
|
|
275
|
+
? 0
|
|
276
|
+
: fail(`${found.sketch.target} is still in progress: sketch ready refused - fix it, then run sketch ready`);
|
|
277
|
+
});
|
|
278
|
+
const openedTargetOf = ({ args }) => {
|
|
279
|
+
const [first] = args.positional;
|
|
280
|
+
const name = args.values['--name'];
|
|
281
|
+
return name === undefined ? (first !== null && first !== void 0 ? first : '') : `${first}@${name}`;
|
|
282
|
+
};
|
|
283
|
+
const noteLanguageLineOf = (product) => product.config.noteLanguage === undefined
|
|
284
|
+
? []
|
|
285
|
+
: [
|
|
286
|
+
` write every round and variant note in ${note_language_1.NOTE_LANGUAGE_NAMES[product.config.noteLanguage]}: that is the product's UI language`,
|
|
287
|
+
];
|
|
288
|
+
const nextStepsOf = (sketch, productSource) => {
|
|
224
289
|
var _a;
|
|
290
|
+
const product = productSource.name;
|
|
225
291
|
const at = `${sketch.target} --product ${product}`;
|
|
226
292
|
const first = (_a = sketch.variants[0]) !== null && _a !== void 0 ? _a : '<key>';
|
|
227
293
|
const running = (0, sketch_1.runningRoundOf)(sketch);
|
|
228
294
|
return [
|
|
229
295
|
'Next:',
|
|
230
296
|
` sketch report ${at} --variant ${first} --by <model id> "<what you draw>" while you draw a variant`,
|
|
231
|
-
` sketch report ${at} --variant ${first} --by <model id> --done when you stop drawing it; no report runs yet, so none is needed now`,
|
|
232
297
|
...(running.note.trim() === ''
|
|
233
298
|
? [
|
|
234
299
|
` sketch round ${sketch.target} ${running.key} --product ${product} --note "<what the round shows>" --by <model id>`,
|
|
235
300
|
]
|
|
236
301
|
: []),
|
|
237
302
|
` sketch check ${at}`,
|
|
303
|
+
...noteLanguageLineOf(productSource),
|
|
304
|
+
` shot ${sketch.targets[0]} --states --variants --product ${product} look at it: ready refuses a pixel diff without a viewed shot`,
|
|
238
305
|
` sketch ready ${at} --by <model id>`,
|
|
306
|
+
` sketch report ${at} --variant ${first} --by <model id> --done after ready, once you stop drawing a variant; no report runs yet, so none is needed now`,
|
|
307
|
+
` a shared JSON file ready wrote (merged.json): commit it with \`et design commit-hunks <file> --part ${sketch.targets[0]}\`, never as a whole file another session also edits`,
|
|
308
|
+
theming_text_1.THEMING_TEXT,
|
|
239
309
|
];
|
|
240
310
|
};
|
|
241
311
|
const variantNotesOf = (pairs, variants) => {
|
|
@@ -253,7 +323,7 @@ const VARIANT_USAGE = 'usage: sketch variant <layer>/<name> <variant>[,<variant>
|
|
|
253
323
|
const varied = (context) => {
|
|
254
324
|
var _a;
|
|
255
325
|
return withSketch(Object.assign(Object.assign({}, context), { noSketchHint: ` - start one with: sketch new ${(_a = context.args.positional[0]) !== null && _a !== void 0 ? _a : '<layer>/<name>'} --variants a,b,c --round "<title>"` }), ({ sketch }) => {
|
|
256
|
-
var _a, _b, _c, _d, _e;
|
|
326
|
+
var _a, _b, _c, _d, _e, _f;
|
|
257
327
|
const { positional, values } = context.args;
|
|
258
328
|
const variant = positional[1];
|
|
259
329
|
const from = values['--from'];
|
|
@@ -300,6 +370,8 @@ const varied = (context) => {
|
|
|
300
370
|
for (const name of variants) {
|
|
301
371
|
console.log(`${added.target} in progress: variant ${name} from ${from} in round ${(_c = round === null || round === void 0 ? void 0 : round.key) !== null && _c !== void 0 ? _c : ''}`);
|
|
302
372
|
console.log(variantLineOf({ root: context.target, sketch: added, variant: name }));
|
|
373
|
+
if (((_d = (0, sketch_1.rejectionOf)(added, from)) === null || _d === void 0 ? void 0 : _d.status) === 'withdrawn')
|
|
374
|
+
console.log(` ${name}: from withdrawn ${from}`);
|
|
303
375
|
}
|
|
304
376
|
if (title !== undefined && (round === null || round === void 0 ? void 0 : round.note) === '')
|
|
305
377
|
console.log(`round ${round.key} has no note yet - sketch ready needs one: sketch round ${added.target} ${round.key} --note "<what the round shows>" --by <model id>`);
|
|
@@ -309,12 +381,12 @@ const varied = (context) => {
|
|
|
309
381
|
sketch,
|
|
310
382
|
variant: from,
|
|
311
383
|
reason: 'round',
|
|
312
|
-
author: (
|
|
384
|
+
author: (_e = (0, cli_args_1.authorOf)(context.args)) !== null && _e !== void 0 ? _e : undefined,
|
|
313
385
|
note: lostNote,
|
|
314
386
|
round: round === null || round === void 0 ? void 0 : round.key,
|
|
315
387
|
});
|
|
316
388
|
if (addressed.length > 0)
|
|
317
|
-
console.log(`addressed ${addressed.length} comment(s) on variant ${from} in round ${(
|
|
389
|
+
console.log(`addressed ${addressed.length} comment(s) on variant ${from} in round ${(_f = round === null || round === void 0 ? void 0 : round.key) !== null && _f !== void 0 ? _f : ''}: ${addressed.map(({ id }) => id).join(', ')}`);
|
|
318
390
|
return 0;
|
|
319
391
|
});
|
|
320
392
|
};
|
|
@@ -339,9 +411,10 @@ const listed = (context) => {
|
|
|
339
411
|
? `, picked ${sketch.decision.variant}`
|
|
340
412
|
: ', discard asked'
|
|
341
413
|
: '';
|
|
342
|
-
const rejected = sketch.variants.filter((variant) => (0, sketch_1.rejectionOf)(sketch, variant));
|
|
414
|
+
const rejected = sketch.variants.filter((variant) => { var _a; return ((_a = (0, sketch_1.rejectionOf)(sketch, variant)) === null || _a === void 0 ? void 0 : _a.status) !== 'withdrawn' && (0, sketch_1.rejectionOf)(sketch, variant); });
|
|
415
|
+
const withdrawnKeys = sketch.variants.filter((variant) => { var _a; return ((_a = (0, sketch_1.rejectionOf)(sketch, variant)) === null || _a === void 0 ? void 0 : _a.status) === 'withdrawn'; });
|
|
343
416
|
const extra = sketch.targets.slice(1);
|
|
344
|
-
console.log(`${sketch.product} ${sketch.target}${extra.length > 0 ? ` (+ ${extra.join(', ')})` : ''} ${sketch.status} ${sketch.variants.join(', ')}${decided}${rejected.length > 0 ? `, rejected ${rejected.join(', ')}` : ''}${sketch.hold ? `, held until: ${sketch.hold.until}` : ''}`);
|
|
417
|
+
console.log(`${sketch.product} ${sketch.target}${extra.length > 0 ? ` (+ ${extra.join(', ')})` : ''} ${sketch.status} ${sketch.variants.join(', ')}${decided}${rejected.length > 0 ? `, rejected ${rejected.join(', ')}` : ''}${withdrawnKeys.length > 0 ? `, withdrawn ${withdrawnKeys.join(', ')}` : ''}${sketch.hold ? `, held until: ${sketch.hold.until}` : ''}`);
|
|
345
418
|
for (const round of sketch.rounds) {
|
|
346
419
|
const variants = sketch.variants.filter((variant) => { var _a; return ((_a = sketch.variantInfo[variant]) === null || _a === void 0 ? void 0 : _a.round) === round.key; });
|
|
347
420
|
console.log(` ${round.key} ${round.title} ${variants.join(', ')}${round.note === '' ? '' : ` - ${round.note}`}${round.lost ? ` - lost: ${round.lost}` : ''}`);
|
|
@@ -358,13 +431,23 @@ const reported = (context) => withSketch(context, ({ sketch }) => {
|
|
|
358
431
|
const author = (0, cli_args_1.authorOf)(context.args);
|
|
359
432
|
const done = context.args.flags.has('--done');
|
|
360
433
|
if ((message === '' && !done) || !variant || !author)
|
|
361
|
-
return fail(`usage: sketch report <layer>/<name> --variant <key> --by <model id> (<text> | --done) [--product <name>] - --product is needed when config.json declares more than one product`);
|
|
434
|
+
return fail(`usage: sketch report <layer>/<name> --variant <key> --by <model id> (<text> | --done) [--reopen] [--product <name>] - --product is needed when config.json declares more than one product`);
|
|
362
435
|
if (done) {
|
|
436
|
+
const notReady = roundNoteRefusalOf(sketch) === null ? roundNotReadyProblemOf(sketch) : null;
|
|
437
|
+
if (notReady !== null)
|
|
438
|
+
return fail(notReady);
|
|
363
439
|
(0, sketch_1.finishSketchReport)({ checkout: context.target, sketch, variant });
|
|
364
440
|
console.log(`${sketch.target} variant ${variant} marked done`);
|
|
365
441
|
return 0;
|
|
366
442
|
}
|
|
367
|
-
const reported = (0, sketch_1.reportSketch)({
|
|
443
|
+
const reported = (0, sketch_1.reportSketch)({
|
|
444
|
+
checkout: context.target,
|
|
445
|
+
sketch,
|
|
446
|
+
variant,
|
|
447
|
+
author,
|
|
448
|
+
message,
|
|
449
|
+
reopen: context.args.flags.has('--reopen'),
|
|
450
|
+
});
|
|
368
451
|
if (typeof reported === 'string')
|
|
369
452
|
return fail(reported);
|
|
370
453
|
console.log(`reported on ${sketch.target} variant ${variant}: ${message}${sketch.status === 'ready' ? ' - back in progress, mark it ready again when done' : ''}`);
|
|
@@ -391,6 +474,17 @@ const roundEdited = (context) => withSketch(context, ({ sketch }) => {
|
|
|
391
474
|
return 0;
|
|
392
475
|
});
|
|
393
476
|
const noteEdited = (context) => withSketch(context, ({ sketch }) => {
|
|
477
|
+
const round = context.args.values['--round'];
|
|
478
|
+
if (round !== undefined) {
|
|
479
|
+
const roundNote = context.args.positional.slice(1).join(' ').trim();
|
|
480
|
+
if (roundNote === '')
|
|
481
|
+
return fail('usage: sketch note <layer>/<name> --round <round> <text> --by <model id>');
|
|
482
|
+
const reworded = (0, sketch_1.editRound)({ sketch, round, note: roundNote });
|
|
483
|
+
if (typeof reworded === 'string')
|
|
484
|
+
return fail(reworded);
|
|
485
|
+
console.log(`${reworded.target} round ${round}: ${roundNote}`);
|
|
486
|
+
return 0;
|
|
487
|
+
}
|
|
394
488
|
const [, variant, ...words] = context.args.positional;
|
|
395
489
|
const note = words.join(' ').trim();
|
|
396
490
|
if (!variant || note === '')
|
|
@@ -401,10 +495,46 @@ const noteEdited = (context) => withSketch(context, ({ sketch }) => {
|
|
|
401
495
|
console.log(`${edited.target} variant ${variant}: ${note}`);
|
|
402
496
|
return 0;
|
|
403
497
|
});
|
|
498
|
+
const coversEdited = (context) => withSketch(context, ({ sketch }) => {
|
|
499
|
+
var _a, _b;
|
|
500
|
+
const covers = context.args.positional.slice(1);
|
|
501
|
+
const partProblem = (0, covered_diffs_1.coverPartProblemOf)({ sketch, covers });
|
|
502
|
+
if (partProblem !== null) {
|
|
503
|
+
console.error(partProblem);
|
|
504
|
+
return 2;
|
|
505
|
+
}
|
|
506
|
+
const edited = (0, covered_diffs_1.editCovers)({ sketch, covers });
|
|
507
|
+
if (typeof edited === 'string')
|
|
508
|
+
return fail(edited);
|
|
509
|
+
console.log(((_a = edited.covers) !== null && _a !== void 0 ? _a : []).length === 0
|
|
510
|
+
? `${edited.target} covers no compare DIFF`
|
|
511
|
+
: `${edited.target} covers the compare DIFFs of ${((_b = edited.covers) !== null && _b !== void 0 ? _b : []).join(', ')} while it is open (ADR 0222)`);
|
|
512
|
+
return 0;
|
|
513
|
+
});
|
|
514
|
+
const targetRemoved = (context) => {
|
|
515
|
+
const usage = `usage: ${exports.SKETCH_USAGE.find((line) => line.startsWith('sketch target remove'))}`;
|
|
516
|
+
const rest = context.args.positional.slice(1);
|
|
517
|
+
const [, part] = rest;
|
|
518
|
+
if (rest.length !== 2 || !part)
|
|
519
|
+
return fail(usage);
|
|
520
|
+
const parsed = (0, sketch_1.parseTarget)(part);
|
|
521
|
+
if (typeof parsed === 'string')
|
|
522
|
+
return fail(parsed);
|
|
523
|
+
return withSketch(Object.assign(Object.assign({}, context), { args: Object.assign(Object.assign({}, context.args), { positional: rest }) }), ({ sketch }) => {
|
|
524
|
+
const removed = (0, sketch_1.removeTarget)({ sketch, part: parsed });
|
|
525
|
+
if (typeof removed === 'string')
|
|
526
|
+
return fail(removed);
|
|
527
|
+
(0, check_format_1.formatSketch)({ target: context.target, sketch: removed, variants: removed.variants });
|
|
528
|
+
console.log(`${removed.target} now targets ${removed.targets.join(', ')}`);
|
|
529
|
+
return 0;
|
|
530
|
+
});
|
|
531
|
+
};
|
|
404
532
|
const targetAdded = (context) => {
|
|
405
533
|
const [action, ...rest] = context.args.positional;
|
|
406
534
|
const [, part] = rest;
|
|
407
535
|
const usage = `usage: ${exports.SKETCH_USAGE.find((line) => line.startsWith('sketch target '))}`;
|
|
536
|
+
if (action === 'remove')
|
|
537
|
+
return targetRemoved(context);
|
|
408
538
|
if (action !== 'add' || rest.length !== 2 || !part)
|
|
409
539
|
return fail(usage);
|
|
410
540
|
const parsed = (0, sketch_1.parseTarget)(part);
|
|
@@ -420,6 +550,31 @@ const targetAdded = (context) => {
|
|
|
420
550
|
return 0;
|
|
421
551
|
});
|
|
422
552
|
};
|
|
553
|
+
const readyLockOf = (sketch) => (0, path_1.resolve)((0, os_1.tmpdir)(), `et-sketch-ready-${(0, crypto_1.createHash)('sha256').update(sketch.dir).digest('hex').slice(0, 16)}.lock`);
|
|
554
|
+
const isRunning = (pid) => {
|
|
555
|
+
try {
|
|
556
|
+
process.kill(pid, 0);
|
|
557
|
+
return true;
|
|
558
|
+
}
|
|
559
|
+
catch (_a) {
|
|
560
|
+
return false;
|
|
561
|
+
}
|
|
562
|
+
};
|
|
563
|
+
const lockedReady = (sketch) => {
|
|
564
|
+
const lock = readyLockOf(sketch);
|
|
565
|
+
const holder = Number(contentOf(lock));
|
|
566
|
+
if (holder > 0 && isRunning(holder))
|
|
567
|
+
return null;
|
|
568
|
+
(0, fs_1.writeFileSync)(lock, String(process.pid));
|
|
569
|
+
return () => (0, fs_1.rmSync)(lock, { force: true });
|
|
570
|
+
};
|
|
571
|
+
const reportedReopen = (sketch) => {
|
|
572
|
+
const reopened = (0, sketch_1.reopenChangedReady)(sketch);
|
|
573
|
+
if (!reopened)
|
|
574
|
+
return sketch;
|
|
575
|
+
console.log(`${sketch.target} was ready; ${reopened.changed.join(', ')} changed since - back to in progress`);
|
|
576
|
+
return reopened.sketch;
|
|
577
|
+
};
|
|
423
578
|
const readied = (context) => {
|
|
424
579
|
const found = productAndSketchOf(context);
|
|
425
580
|
if (typeof found === 'string')
|
|
@@ -427,39 +582,122 @@ const readied = (context) => {
|
|
|
427
582
|
const hold = (0, sketch_1.heldProblemOf)(found.sketch);
|
|
428
583
|
if (hold !== null)
|
|
429
584
|
return fail(hold);
|
|
430
|
-
const
|
|
585
|
+
const reopened = reportedReopen(found.sketch);
|
|
586
|
+
const current = { product: found.product, sketch: reopened };
|
|
587
|
+
const refused = (0, phase_timing_1.timedPhase)('gates', () => readyRefusalOf(context, current));
|
|
431
588
|
if (refused !== null)
|
|
432
589
|
return refused;
|
|
433
|
-
|
|
590
|
+
const unlinted = (0, phase_timing_1.timedPhase)('lint', () => (0, design_lint_1.lintGateLinesOf)({
|
|
591
|
+
target: context.target,
|
|
592
|
+
productDir: current.product.dir,
|
|
593
|
+
files: (0, design_lint_1.variantLintFilesOf)(reopened, reopened.variants.filter((variant) => !(0, sketch_1.rejectionOf)(reopened, variant))),
|
|
594
|
+
}));
|
|
595
|
+
if (unlinted.length > 0)
|
|
596
|
+
return fail(`${unlinted.join('\n')}\n${reopened.target} adds lint warnings - fix them before ready`);
|
|
597
|
+
const unlock = lockedReady(reopened);
|
|
598
|
+
if (!unlock)
|
|
599
|
+
return fail(`another sketch ready run on ${reopened.target} is going - wait for it`);
|
|
600
|
+
const run = context.warm
|
|
601
|
+
? { warm: Object.assign(Object.assign({}, context.warm), { perRun: true }), close: () => __awaiter(void 0, void 0, void 0, function* () { return undefined; }) }
|
|
602
|
+
: (0, warm_draw_1.createRunDraw)(context.target);
|
|
603
|
+
return renderedAndReady(Object.assign(Object.assign({}, context), { warm: run.warm }), current).finally(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
604
|
+
unlock();
|
|
605
|
+
yield run.close();
|
|
606
|
+
}));
|
|
434
607
|
};
|
|
435
608
|
const renderedAndReady = (context, found) => __awaiter(void 0, void 0, void 0, function* () {
|
|
609
|
+
var _a;
|
|
436
610
|
const { product, sketch } = found;
|
|
437
|
-
const rendered = yield renderedVariantsOf({
|
|
611
|
+
const rendered = yield (0, phase_timing_1.timedPhase)('render-check', () => renderedVariantsOf({
|
|
438
612
|
target: context.target,
|
|
439
613
|
config: context.config,
|
|
440
614
|
product,
|
|
441
|
-
entries: sketch.variants
|
|
615
|
+
entries: sketch.variants
|
|
616
|
+
.filter((variant) => !(0, sketch_1.rejectionOf)(sketch, variant))
|
|
617
|
+
.map((variant) => ({ sketch, variant })),
|
|
442
618
|
drawn: false,
|
|
443
|
-
|
|
619
|
+
warm: context.warm,
|
|
620
|
+
}));
|
|
621
|
+
if ('issues' in rendered && rendered.noVerdict)
|
|
622
|
+
return 1;
|
|
444
623
|
if ('issues' in rendered && rendered.issues.length > 0)
|
|
445
624
|
return fail(`${sketch.target} has problems - fix them before ready`);
|
|
625
|
+
const busyAdded = 'issues' in rendered ? openPointLinesOf({ product, sketch, busy: (_a = rendered.busy) !== null && _a !== void 0 ? _a : [] }).added : [];
|
|
626
|
+
if (busyAdded.length > 0)
|
|
627
|
+
return fail(`${busyAdded.join('\n')}\n${sketch.target} adds open points - close them before ready`);
|
|
446
628
|
return loadedAndReady(context, found);
|
|
447
629
|
});
|
|
448
630
|
const loadedAndReady = (context_1, _a) => __awaiter(void 0, [context_1, _a], void 0, function* (context, { product, sketch }) {
|
|
449
|
-
var _b;
|
|
450
|
-
const unloaded = yield (0,
|
|
631
|
+
var _b, _c;
|
|
632
|
+
const unloaded = yield (0, phase_timing_1.timedPhase)('load', () => unloadedLinesOf({ target: context.target, config: context.config, product, sketch, warm: context.warm }));
|
|
451
633
|
if (unloaded.length > 0)
|
|
452
|
-
return fail(`${unloaded.
|
|
634
|
+
return fail(`${unloaded.join('\n')}\n${sketch.target} does not load - fix it before ready`);
|
|
635
|
+
const drifts = yield (0, phase_timing_1.timedPhase)('mark-drift', () => (0, ready_shots_1.sampleMarkDriftLines)({ target: context.target, config: context.config, product, sketch, warm: context.warm }));
|
|
636
|
+
if (drifts.length > 0)
|
|
637
|
+
return fail(`${drifts.join('\n')}\n${sketch.target} draws one sample with different marks - align them before ready`);
|
|
638
|
+
const identical = yield (0, phase_timing_1.timedPhase)('identical', () => (0, ready_shots_1.identicalRenderLines)({ target: context.target, config: context.config, product, sketch, warm: context.warm }));
|
|
639
|
+
if (identical.length > 0)
|
|
640
|
+
return fail(`${identical.join('\n')}\n${sketch.target} draws variants alike - fix them before ready`);
|
|
641
|
+
const undeclared = yield (0, phase_timing_1.timedPhase)('undeclared', () => undeclaredLinesOf({ target: context.target, config: context.config, product, sketch, warm: context.warm }));
|
|
642
|
+
if (typeof undeclared === 'string')
|
|
643
|
+
return fail(undeclared);
|
|
644
|
+
if (undeclared.length > 0)
|
|
645
|
+
return fail(`${undeclared.join('\n')}\n${sketch.target} draws controls no controls entry declares - declare them before ready`);
|
|
646
|
+
const changes = sketch.targets.every((key) => product.parts.some((part) => (0, resolve_product_1.partKeyOf)(part) === key))
|
|
647
|
+
? yield (0, phase_timing_1.timedPhase)('changes-shot', () => (0, ready_shots_1.variantChangesShown)({ target: context.target, config: context.config, product, sketch, warm: context.warm }))
|
|
648
|
+
: null;
|
|
649
|
+
const unviewed = Array.isArray(changes)
|
|
650
|
+
? (0, viewed_shots_1.unviewedShotLinesOf)({
|
|
651
|
+
target: context.target,
|
|
652
|
+
invocation: (_b = context.invocation) !== null && _b !== void 0 ? _b : (0, invocation_1.repoInvocation)({ root: context.target, subcommand: 'design' }),
|
|
653
|
+
sketch,
|
|
654
|
+
changes,
|
|
655
|
+
})
|
|
656
|
+
: [];
|
|
657
|
+
if (unviewed.length > 0)
|
|
658
|
+
return fail(`${unviewed.join('\n')}\n${sketch.target} draws a pixel diff - view its shot before ready`);
|
|
659
|
+
if (!(0, fs_1.existsSync)((0, path_1.resolve)(sketch.dir, sketch_1.SKETCH_FILE)))
|
|
660
|
+
return fail(`${sketch.target} is gone: another run merged or discarded it while this one checked it`);
|
|
453
661
|
const ready = sketch.status === 'ready'
|
|
454
662
|
? sketch
|
|
455
|
-
: (0, sketch_1.markSketchReady)({ checkout: context.target, sketch, author: (
|
|
663
|
+
: (0, sketch_1.markSketchReady)({ checkout: context.target, sketch, author: (_c = (0, cli_args_1.authorOf)(context.args)) !== null && _c !== void 0 ? _c : undefined });
|
|
456
664
|
if (typeof ready === 'string')
|
|
457
665
|
return fail(ready);
|
|
458
|
-
return autoMerged({ context, product, sketch: ready, again: sketch.status === 'ready' });
|
|
666
|
+
return (0, phase_timing_1.timedPhase)('auto-merge', () => autoMerged({ context, product, sketch: ready, again: sketch.status === 'ready', changes }));
|
|
459
667
|
});
|
|
460
|
-
const
|
|
461
|
-
|
|
462
|
-
|
|
668
|
+
const stillReady = (options) => {
|
|
669
|
+
(0, sketch_1.writeSketchFile)(Object.assign(Object.assign({}, options.sketch), { mergeHold: { reason: options.reason, at: new Date().toISOString() } }));
|
|
670
|
+
if (options.again)
|
|
671
|
+
console.log(`${options.sketch.target} is still ready`);
|
|
672
|
+
return 0;
|
|
673
|
+
};
|
|
674
|
+
const gitIn = (target, ...args) => (0, plain_output_1.spawnPlain)(['git', ...args], { cwd: target });
|
|
675
|
+
const mergeDirsOf = (product) => [product.dir, ...(product.base ? [product.base.dir] : [])];
|
|
676
|
+
const cleanBesideSketch = (options) => {
|
|
677
|
+
const status = gitIn(options.target, 'status', '--porcelain', '-z', '--untracked-files=all', '--', ...mergeDirsOf(options.product));
|
|
678
|
+
const root = gitIn(options.target, 'rev-parse', '--show-toplevel');
|
|
679
|
+
if (status.status !== 0 || root.status !== 0)
|
|
680
|
+
return false;
|
|
681
|
+
const top = root.stdout.trim();
|
|
682
|
+
const sketchDir = (0, fs_1.realpathSync)(options.sketch.dir);
|
|
683
|
+
return status.stdout
|
|
684
|
+
.split('\0')
|
|
685
|
+
.filter((entry) => /^.. /.test(entry))
|
|
686
|
+
.every((entry) => (0, path_1.resolve)(top, entry.slice(3)).startsWith(`${sketchDir}/`));
|
|
687
|
+
};
|
|
688
|
+
const committedMerge = (options) => {
|
|
689
|
+
const dirs = mergeDirsOf(options.product);
|
|
690
|
+
const added = gitIn(options.target, 'add', '--all', '--', ...dirs);
|
|
691
|
+
const committed = added.status === 0
|
|
692
|
+
? gitIn(options.target, 'commit', '-m', `feat(repo): Merge ${options.sketch.target}, no visible change`, '--', ...dirs)
|
|
693
|
+
: added;
|
|
694
|
+
if (committed.status !== 0)
|
|
695
|
+
console.warn(`Could not commit the merge: ${(committed.stderr || committed.stdout).trim()}`);
|
|
696
|
+
return committed.status === 0;
|
|
697
|
+
};
|
|
698
|
+
const autoMerged = (options) => {
|
|
699
|
+
var _a;
|
|
700
|
+
const { context, product, sketch, again, changes } = options;
|
|
463
701
|
if (!again)
|
|
464
702
|
console.log(`${sketch.target} is ready`);
|
|
465
703
|
for (const variant of sketch.variants.filter((candidate) => !(0, sketch_1.rejectionOf)(sketch, candidate))) {
|
|
@@ -467,70 +705,191 @@ const autoMerged = (options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
467
705
|
if (shared.length > 0)
|
|
468
706
|
console.log(`variant ${variant}: a shared/ edit reaches ${shared.join(', ')}`);
|
|
469
707
|
}
|
|
470
|
-
|
|
471
|
-
console.log('auto-merge skipped: new part, the user merges');
|
|
472
|
-
return again ? fail(`${sketch.target} is ready, not in progress`) : 0;
|
|
473
|
-
}
|
|
474
|
-
const noChange = yield (0, ready_shots_1.shotsShowNoChange)({ target: context.target, config: context.config, product, sketch });
|
|
708
|
+
const noChange = changes === null ? 'new part, the user merges' : typeof changes === 'string' ? changes : (0, no_visible_change_1.noChangeOf)(changes);
|
|
475
709
|
if (noChange !== true) {
|
|
476
710
|
console.log(`auto-merge skipped: ${noChange}`);
|
|
477
|
-
return
|
|
711
|
+
return stillReady({ sketch, again, reason: noChange });
|
|
478
712
|
}
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
713
|
+
return mergedUnchanged({
|
|
714
|
+
target: context.target,
|
|
715
|
+
config: context.config,
|
|
716
|
+
author: (_a = (0, cli_args_1.authorOf)(context.args)) !== null && _a !== void 0 ? _a : undefined,
|
|
717
|
+
product,
|
|
718
|
+
sketch,
|
|
719
|
+
});
|
|
720
|
+
};
|
|
721
|
+
const mergedUnchanged = (options) => {
|
|
722
|
+
var _a;
|
|
723
|
+
const { target, config, author, product, sketch } = options;
|
|
724
|
+
const variant = (_a = sketch.variants.find((candidate) => !(0, sketch_1.rejectionOf)(sketch, candidate))) !== null && _a !== void 0 ? _a : '';
|
|
725
|
+
const commit = cleanBesideSketch({ target, product, sketch });
|
|
726
|
+
const decided = (0, sketch_1.decideSketch)({ sketch, decision: Object.assign({ kind: 'pick', variant }, (0, write_origin_1.originOf)(author !== null && author !== void 0 ? author : '')) });
|
|
482
727
|
if (typeof decided === 'string')
|
|
483
728
|
return fail(decided);
|
|
484
|
-
const
|
|
729
|
+
const written = sharedFilesOf(product);
|
|
730
|
+
const before = written.map((file) => contentOf(file));
|
|
731
|
+
const result = (0, merge_1.mergeSketch)({
|
|
732
|
+
target,
|
|
733
|
+
config,
|
|
734
|
+
product,
|
|
735
|
+
sketch: decided,
|
|
736
|
+
author,
|
|
737
|
+
decidedBy: 'auto: no visible change',
|
|
738
|
+
});
|
|
485
739
|
if (!Array.isArray(result)) {
|
|
740
|
+
(0, sketch_1.writeSketchFile)(Object.assign(Object.assign({}, sketch), { mergeHold: Object.assign({ reason: result.reason, at: new Date().toISOString() }, (result.dirty ? { dirty: result.dirty } : {})) }));
|
|
486
741
|
console.warn(`${sketch.target} shows no visible change but did not merge: ${result.reason}`);
|
|
487
742
|
return 0;
|
|
488
743
|
}
|
|
489
|
-
for (const part of sketch.targets)
|
|
490
|
-
(0, merged_parts_1.recordAutoMerge)({ product, part, by: author !== null && author !== void 0 ? author : 'user' });
|
|
491
744
|
console.log(`No visible change in any state: merged ${sketch.targets.join(', ')} automatically.`);
|
|
745
|
+
if (commit && committedMerge({ target, product, sketch })) {
|
|
746
|
+
console.log(`Committed: feat(repo): Merge ${sketch.target}, no visible change`);
|
|
747
|
+
return 0;
|
|
748
|
+
}
|
|
749
|
+
commitHunksLines({
|
|
750
|
+
target,
|
|
751
|
+
files: written.filter((file, index) => contentOf(file) !== before[index]),
|
|
752
|
+
parts: sketch.targets,
|
|
753
|
+
}).forEach((line) => console.log(line));
|
|
492
754
|
return 0;
|
|
755
|
+
};
|
|
756
|
+
const stillDirtyOf = (options) => {
|
|
757
|
+
const status = gitIn(options.target, 'status', '--porcelain', '--untracked-files=all', '--', ...options.dirty);
|
|
758
|
+
return status.status !== 0 || status.stdout.trim() !== '';
|
|
759
|
+
};
|
|
760
|
+
/**
|
|
761
|
+
* Merges every ready sketch whose automatic merge uncommitted files refused, once those files are committed or
|
|
762
|
+
* reverted; `except` is a sketch target to leave alone.
|
|
763
|
+
*/
|
|
764
|
+
const retriedHeldMerges = (options) => {
|
|
765
|
+
var _a;
|
|
766
|
+
const { target, config, author, except } = options;
|
|
767
|
+
for (const name of Object.keys((_a = config.products) !== null && _a !== void 0 ? _a : {})) {
|
|
768
|
+
const productDir = (0, product_1.productDirOf)({ target, product: name });
|
|
769
|
+
const held = (0, sketch_1.listSketches)({ productDir, product: name }).filter((sketch) => {
|
|
770
|
+
var _a;
|
|
771
|
+
return typeof sketch !== 'string' &&
|
|
772
|
+
sketch.status === 'ready' &&
|
|
773
|
+
!!((_a = sketch.mergeHold) === null || _a === void 0 ? void 0 : _a.dirty) &&
|
|
774
|
+
sketch.target !== except &&
|
|
775
|
+
!stillDirtyOf({ target, dirty: sketch.mergeHold.dirty });
|
|
776
|
+
});
|
|
777
|
+
if (held.length === 0)
|
|
778
|
+
continue;
|
|
779
|
+
const product = (0, cli_args_1.oneProductOf)({ target, config, asked: name });
|
|
780
|
+
if (typeof product === 'string')
|
|
781
|
+
continue;
|
|
782
|
+
for (const sketch of held) {
|
|
783
|
+
console.log(`${sketch.target}: the uncommitted edits that held its automatic merge are gone - merging it now`);
|
|
784
|
+
mergedUnchanged({ target, config, author, product, sketch });
|
|
785
|
+
}
|
|
786
|
+
}
|
|
787
|
+
};
|
|
788
|
+
exports.retriedHeldMerges = retriedHeldMerges;
|
|
789
|
+
const contentOf = (file) => ((0, fs_1.existsSync)(file) ? (0, fs_1.readFileSync)(file, 'utf8') : null);
|
|
790
|
+
const sharedFilesOf = (product) => [
|
|
791
|
+
(0, path_1.resolve)(product.dir, merged_parts_1.MERGED_FILE),
|
|
792
|
+
...(product.base ? [(0, path_1.resolve)(product.base.dir, merged_parts_1.MERGED_FILE)] : []),
|
|
793
|
+
];
|
|
794
|
+
const commitHunksLines = ({ target, files, parts }) => files.length === 0
|
|
795
|
+
? []
|
|
796
|
+
: [
|
|
797
|
+
'Shared files written; commit only the hunks of this sketch, never the whole file another session also edits:',
|
|
798
|
+
...files.map((file) => ` et design commit-hunks ${(0, path_1.relative)(target, file)} ${parts.map((part) => `--part ${part}`).join(' ')}`),
|
|
799
|
+
];
|
|
800
|
+
const noteProblemsBefore = ({ target, sketch, variant, before, }) => before.forEach((problem) => console.warn(`NOTE ${sketch.target} ${variant}: ${problem.rule} ${(0, path_1.relative)(target, problem.file)}: ${problem.message} (there before)`));
|
|
801
|
+
const variantGateProblemsOf = (options) => [...options.problems, ...(0, check_format_1.formatProblemsOf)(options), ...(0, unused_closure_1.unusedInVariantOf)(options)];
|
|
802
|
+
const busyOfVariant = (busy, sketch) => busy
|
|
803
|
+
.filter((entry) => { var _a; return ((_a = entry.sketch) === null || _a === void 0 ? void 0 : _a.target) === sketch.target && entry.sketch.variant === sketch.variant; })
|
|
804
|
+
.map(({ part, state }) => ({ part, state }));
|
|
805
|
+
const openPointLinesOf = ({ product, sketch, busy = [], }) => {
|
|
806
|
+
const pointLinesOf = (variant, list) => (0, open_points_1.openPointsText)(product.name, list)
|
|
807
|
+
.slice(1)
|
|
808
|
+
.map((line) => `${sketch.target} ${variant}: ${line.trim()}`);
|
|
809
|
+
const points = sketch.variants
|
|
810
|
+
.filter((variant) => !(0, sketch_1.rejectionOf)(sketch, variant))
|
|
811
|
+
.map((variant) => (Object.assign({ variant }, (0, read_open_points_1.sketchOpenPointsOf)({
|
|
812
|
+
merged: product,
|
|
813
|
+
variant: (0, overlay_1.overlaySketch)({ product, sketch, variant }),
|
|
814
|
+
targets: sketch.targets,
|
|
815
|
+
busy: { merged: [], variant: busyOfVariant(busy, { target: sketch.target, variant }) },
|
|
816
|
+
}))));
|
|
817
|
+
return {
|
|
818
|
+
added: points.flatMap(({ variant, added }) => pointLinesOf(variant, added)),
|
|
819
|
+
inherited: points.flatMap(({ variant, inherited }) => pointLinesOf(variant, inherited)),
|
|
820
|
+
};
|
|
821
|
+
};
|
|
822
|
+
const roundNoteRefusalOf = (sketch) => {
|
|
823
|
+
const running = (0, sketch_1.runningRoundOf)(sketch);
|
|
824
|
+
return running.note.trim() === ''
|
|
825
|
+
? `${sketch.target} round ${running.key} has no note - set it with: sketch round ${sketch.target} ${running.key} --note "<what the round shows>" --by <model id>`
|
|
826
|
+
: null;
|
|
827
|
+
};
|
|
828
|
+
const roundNotReadyProblemOf = (sketch) => sketch.status === 'ready' || sketch.hold
|
|
829
|
+
? null
|
|
830
|
+
: `ROUND-NOT-READY ${sketch.target}: round ${(0, sketch_1.runningRoundOf)(sketch).key} is drawn but still in progress - run \`design sketch ready ${sketch.target}\``;
|
|
831
|
+
const unloadedLinesOf = (options) => __awaiter(void 0, void 0, void 0, function* () { return (yield (0, ready_shots_1.variantsThatDoNotLoad)(options)).map((line) => `${options.sketch.target} ${line}`); });
|
|
832
|
+
const undeclaredLinesOf = (options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
833
|
+
const { sketch } = options;
|
|
834
|
+
const lines = [];
|
|
835
|
+
for (const variant of sketch.variants.filter((name) => !(0, sketch_1.rejectionOf)(sketch, name))) {
|
|
836
|
+
const { changed } = (0, merge_preview_1.mergePreviewOf)({ product: options.product, sketch, variant });
|
|
837
|
+
const added = yield (0, complete_1.addedUndeclaredControlsOf)(Object.assign(Object.assign({}, options), { sketch: { target: sketch.target, variant }, parts: changed }));
|
|
838
|
+
if ('unavailable' in added)
|
|
839
|
+
return added.unavailable;
|
|
840
|
+
lines.push(...added.lines);
|
|
841
|
+
}
|
|
842
|
+
return lines;
|
|
493
843
|
});
|
|
494
|
-
const
|
|
495
|
-
|
|
496
|
-
|
|
844
|
+
const baseCommitOf = (options) => {
|
|
845
|
+
var _a;
|
|
846
|
+
const { context, product, sketch } = options;
|
|
847
|
+
const dirs = ((_a = (0, stale_base_1.staleBaseOf)({ product, sketch })) !== null && _a !== void 0 ? _a : []).flatMap((key) => {
|
|
848
|
+
const part = product.parts.find((candidate) => (0, resolve_product_1.partKeyOf)(candidate) === key);
|
|
849
|
+
return part ? [(0, path_1.dirname)(part.file)] : [];
|
|
850
|
+
});
|
|
851
|
+
if (dirs.length === 0)
|
|
852
|
+
return null;
|
|
853
|
+
const log = (0, plain_output_1.spawnPlain)(['git', 'log', '-1', '--format=%h', '--', ...dirs], { cwd: context.target });
|
|
854
|
+
return log.status === 0 && log.stdout.trim() ? log.stdout.trim() : null;
|
|
497
855
|
};
|
|
498
856
|
const readyRefusalOf = (context, { product, sketch }) => {
|
|
499
857
|
const lineOf = (variant, problem) => `${sketch.target} ${variant}: ${problem.rule} ${(0, path_1.relative)(context.target, problem.file)}: ${problem.message}`;
|
|
858
|
+
const stale = staleBasesOf(context, { product, targets: new Set([sketch.target]) });
|
|
859
|
+
if (stale.length > 0) {
|
|
860
|
+
const commit = baseCommitOf({ context, product, sketch });
|
|
861
|
+
return fail(`${stale.map((problem) => problem.line).join('\n')}\n${sketch.target} is stale${commit ? ` (base changed in ${commit})` : ''} - rebase it before ready`);
|
|
862
|
+
}
|
|
500
863
|
const found = (0, check_sketches_1.variantProblemsOf)({ product, sketch });
|
|
501
|
-
found.forEach(noteProblemsBefore);
|
|
502
|
-
const problems = found
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
...((0, sketch_1.rejectionOf)(sketch, variant) ? [] : (0, unused_closure_1.unusedInVariantOf)({ product, sketch, variant })),
|
|
506
|
-
].map((problem) => lineOf(variant, problem)));
|
|
864
|
+
found.forEach((entry) => noteProblemsBefore(Object.assign({ target: context.target }, entry)));
|
|
865
|
+
const problems = found
|
|
866
|
+
.filter(({ variant }) => !(0, sketch_1.rejectionOf)(sketch, variant))
|
|
867
|
+
.flatMap(({ variant, problems }) => variantGateProblemsOf({ target: context.target, product, sketch, variant, problems }).map((problem) => lineOf(variant, problem)));
|
|
507
868
|
sketch.variants.forEach((variant) => (0, check_sketches_1.variantWarningsOf)({ target: context.target, product, sketch, variant }).forEach((warning) => console.warn(`${sketch.target} ${variant}: ${warning}`)));
|
|
508
869
|
if (problems.length > 0)
|
|
509
870
|
return fail(`${problems.join('\n')}\n${sketch.target} has problems - fix them before ready`);
|
|
510
|
-
const
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
const open = sketch.variants
|
|
871
|
+
const { added, inherited } = openPointLinesOf({ product, sketch });
|
|
872
|
+
inherited.forEach((line) => console.log(`NOTE ${line} (inherited from the merged part)`));
|
|
873
|
+
sketch.variants
|
|
514
874
|
.filter((variant) => !(0, sketch_1.rejectionOf)(sketch, variant))
|
|
515
|
-
.
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
});
|
|
521
|
-
pointLinesOf(variant, inherited).forEach((line) => console.log(`NOTE ${line} (inherited from the merged part)`));
|
|
522
|
-
return pointLinesOf(variant, added);
|
|
523
|
-
});
|
|
524
|
-
if (open.length > 0)
|
|
525
|
-
return fail(`${open.join('\n')}\n${sketch.target} adds open points - close them before ready`);
|
|
526
|
-
const running = (0, sketch_1.runningRoundOf)(sketch);
|
|
527
|
-
if (running.note.trim() === '')
|
|
528
|
-
return fail(`${sketch.target} round ${running.key} has no note - set it with: sketch round ${sketch.target} ${running.key} --note "<what the round shows>" --by <model id>`);
|
|
529
|
-
return null;
|
|
875
|
+
.forEach((variant) => (0, read_open_points_1.instantLinesOf)((0, overlay_1.overlaySketch)({ product, sketch, variant }), sketch.targets).forEach((line) => console.log(`NOTE ${sketch.target} ${variant}: ${line}`)));
|
|
876
|
+
if (added.length > 0)
|
|
877
|
+
return fail(`${added.join('\n')}\n${sketch.target} adds open points - close them before ready`);
|
|
878
|
+
const noNote = roundNoteRefusalOf(sketch);
|
|
879
|
+
return noNote === null ? null : fail(noNote);
|
|
530
880
|
};
|
|
531
881
|
const rebased = (context) => withSketch(context, ({ product, sketch }) => {
|
|
882
|
+
const kept = context.args.flags.has('--ported');
|
|
883
|
+
const { ported, conflicts } = (0, rebase_port_1.portBaseChanges)({ target: context.target, product, sketch, keepConflicts: kept });
|
|
884
|
+
if (kept)
|
|
885
|
+
conflicts.forEach((line) => console.log(`KEPT ${line} (ported by hand)`));
|
|
886
|
+
else if (conflicts.length > 0)
|
|
887
|
+
return fail(`${conflicts.join('\n')}\n${sketch.target} not rebased - port these by hand, then run sketch rebase again`);
|
|
888
|
+
ported.forEach(({ variant, file, how }) => console.log(`PORTED ${variant}: ${file} (${how})`));
|
|
532
889
|
(0, sketch_1.rebaseSketch)({ product, sketch });
|
|
533
890
|
console.log(`${sketch.target} now compares with the product as it is`);
|
|
891
|
+
if (ported.length > 0 && sketch.status === 'ready')
|
|
892
|
+
console.log(`variants changed - run sketch ready ${sketch.target} to check them again`);
|
|
534
893
|
return 0;
|
|
535
894
|
});
|
|
536
895
|
const held = (context) => withSketch(context, ({ sketch }) => {
|
|
@@ -552,19 +911,44 @@ const released = (context) => withSketch(context, ({ sketch }) => {
|
|
|
552
911
|
console.log(`${freed.target} is no longer held - mark it ready once the change is in`);
|
|
553
912
|
return 0;
|
|
554
913
|
});
|
|
555
|
-
const
|
|
556
|
-
|
|
914
|
+
const beforeLinesOf = ({ sketches, before }) => [...new Set(sketches)].flatMap((sketch) => (0, render_check_1.groupedIssueLinesOf)(before
|
|
915
|
+
.filter((issue) => sketch.targets.includes(issue.part))
|
|
916
|
+
.map((issue) => (Object.assign(Object.assign({}, issue), { sketch: { target: sketch.target, variant: 'before' } })))));
|
|
917
|
+
exports.beforeLinesOf = beforeLinesOf;
|
|
918
|
+
const unchangedAffectedOf = (options) => (0, warm_draw_1.loadingOn)(options, (server) => __awaiter(void 0, void 0, void 0, function* () {
|
|
919
|
+
return Object.fromEntries(yield Promise.all(options.affected.map((part) => __awaiter(void 0, void 0, void 0, function* () {
|
|
920
|
+
return [
|
|
921
|
+
part,
|
|
922
|
+
yield (0, unchanged_states_1.unchangedStatesOf)(Object.assign(Object.assign({}, options), { part, load: ({ file, product, sketch }) => server.ssrLoadModule((0, system_modules_1.productModuleIdOf)({ file, product, sketch })) })),
|
|
923
|
+
];
|
|
924
|
+
}))));
|
|
925
|
+
}));
|
|
926
|
+
const renderedVariantsOf = (_a) => __awaiter(void 0, [_a], void 0, function* ({ target, config, product, entries, drawn, warm, }) {
|
|
927
|
+
var _b, _c, _d;
|
|
928
|
+
const jobs = yield Promise.all(entries.map((_a) => __awaiter(void 0, [_a], void 0, function* ({ sketch, variant }) {
|
|
929
|
+
const preview = (0, merge_preview_1.mergePreviewOf)({ product, sketch, variant });
|
|
930
|
+
return {
|
|
931
|
+
product: product.name,
|
|
932
|
+
sketch: { target: sketch.target, variant },
|
|
933
|
+
parts: [...preview.changed, ...preview.affected],
|
|
934
|
+
unchanged: warm
|
|
935
|
+
? yield unchangedAffectedOf({ target, config, warm, product, sketch, variant, affected: preview.affected })
|
|
936
|
+
: {},
|
|
937
|
+
};
|
|
938
|
+
})));
|
|
939
|
+
for (const { sketch, unchanged } of jobs)
|
|
940
|
+
for (const [part, states] of Object.entries(unchanged).filter(([, states]) => states.length > 0))
|
|
941
|
+
console.log(`NOTE ${sketch.target} ${sketch.variant}: ${part} draws ${states.length} state${states.length === 1 ? '' : 's'} as merged, not inspected`);
|
|
557
942
|
const rendered = yield (0, render_check_1.renderIssuesOf)({
|
|
558
943
|
target,
|
|
559
944
|
config,
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
}),
|
|
945
|
+
warm,
|
|
946
|
+
jobs,
|
|
947
|
+
onProgress: (line) => console.error(line),
|
|
948
|
+
before: [...new Set(entries.flatMap(({ sketch }) => sketch.targets))].map((part) => ({
|
|
949
|
+
product: product.name,
|
|
950
|
+
part,
|
|
951
|
+
})),
|
|
568
952
|
});
|
|
569
953
|
if ('unavailable' in rendered)
|
|
570
954
|
console.log(`RENDER CHECK SKIPPED - ${rendered.unavailable}`);
|
|
@@ -587,36 +971,55 @@ const renderedVariantsOf = (_a) => __awaiter(void 0, [_a], void 0, function* ({
|
|
|
587
971
|
if (drawn)
|
|
588
972
|
rendered.grids.forEach(({ sketch, part, line }) => { var _a, _b; return console.log(`${(_a = sketch === null || sketch === void 0 ? void 0 : sketch.target) !== null && _a !== void 0 ? _a : ''} ${(_b = sketch === null || sketch === void 0 ? void 0 : sketch.variant) !== null && _b !== void 0 ? _b : ''}: ${part} ${line}`); });
|
|
589
973
|
rendered.warnings.forEach((issue) => { var _a, _b, _c, _d; return console.warn(`${(_b = (_a = issue.sketch) === null || _a === void 0 ? void 0 : _a.target) !== null && _b !== void 0 ? _b : ''} ${(_d = (_c = issue.sketch) === null || _c === void 0 ? void 0 : _c.variant) !== null && _d !== void 0 ? _d : ''}: WARNING ${(0, render_check_1.renderIssueLineOf)(issue)}`); });
|
|
590
|
-
|
|
974
|
+
const { noVerdict } = rendered;
|
|
975
|
+
if (noVerdict)
|
|
976
|
+
[...new Set(entries.map((entry) => entry.sketch.target))].forEach((sketchTarget) => console.error((0, no_verdict_1.noVerdictLineOf)(sketchTarget, noVerdict)));
|
|
977
|
+
else
|
|
978
|
+
(0, render_check_1.groupedIssueLinesOf)(rendered.issues).forEach((line) => console.error(line));
|
|
979
|
+
(0, exports.beforeLinesOf)({ sketches: entries.map((entry) => entry.sketch), before: (_d = rendered.before) !== null && _d !== void 0 ? _d : [] }).forEach((line) => console.log(line));
|
|
591
980
|
}
|
|
592
981
|
return rendered;
|
|
593
982
|
});
|
|
594
983
|
const checked = (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
984
|
+
var _a, _b;
|
|
595
985
|
const { target, config, args } = context;
|
|
596
986
|
const product = sketchProductOf(context);
|
|
597
987
|
if (typeof product === 'string')
|
|
598
988
|
return fail(product);
|
|
599
989
|
const asked = args.positional[0];
|
|
600
|
-
const { unreadable, variants } = (0, check_sketches_1.openSketchProblemsOf)(product);
|
|
601
|
-
const
|
|
602
|
-
if (asked !== undefined &&
|
|
990
|
+
const { unreadable, variants } = (0, phase_timing_1.timedPhase)('gates', () => (0, check_sketches_1.openSketchProblemsOf)(product));
|
|
991
|
+
const named = asked === undefined ? variants : variants.filter((entry) => entry.sketch.target === asked);
|
|
992
|
+
if (asked !== undefined && named.length === 0)
|
|
603
993
|
return fail(`NO SKETCH on ${asked} in ${product.name}`);
|
|
994
|
+
const isSkipped = ({ sketch, variant }) => Boolean((0, sketch_1.rejectionOf)(sketch, variant));
|
|
995
|
+
const chosen = named.filter((entry) => !isSkipped(entry));
|
|
996
|
+
named
|
|
997
|
+
.filter(isSkipped)
|
|
998
|
+
.forEach(({ sketch, variant }) => {
|
|
999
|
+
var _a;
|
|
1000
|
+
return console.log(`NOTE ${sketch.target} ${variant}: ${((_a = (0, sketch_1.rejectionOf)(sketch, variant)) === null || _a === void 0 ? void 0 : _a.status) === 'withdrawn' ? 'withdrawn' : 'rejected'}, not checked`);
|
|
1001
|
+
});
|
|
604
1002
|
if (args.flags.has('--fix'))
|
|
605
1003
|
new Set(chosen.map((entry) => entry.sketch)).forEach((sketch) => (0, check_format_1.formatSketch)({ target, sketch, variants: sketch.variants }));
|
|
606
1004
|
let failed = asked === undefined && unreadable.length > 0;
|
|
607
1005
|
if (asked === undefined)
|
|
608
1006
|
unreadable.forEach((problem) => console.error(`${problem.rule} ${(0, path_1.relative)(target, problem.file)}: ${problem.message}`));
|
|
609
1007
|
new Set(chosen.map((entry) => entry.sketch)).forEach((sketch) => {
|
|
1008
|
+
reportedReopen(sketch);
|
|
1009
|
+
if (product.config.noteLanguage)
|
|
1010
|
+
(0, note_language_1.noteLanguageWarningsOf)(sketch, product.config.noteLanguage).forEach((warning) => console.warn(warning));
|
|
610
1011
|
if (sketch.hold)
|
|
611
1012
|
console.warn(`HELD ${sketch.target}: until ${sketch.hold.until}`);
|
|
612
1013
|
});
|
|
1014
|
+
const stale = staleBasesOf(context, { product, targets: new Set(chosen.map((entry) => entry.sketch.target)) });
|
|
1015
|
+
stale.forEach((problem) => console.error(problem.line));
|
|
1016
|
+
failed || (failed = stale.length > 0);
|
|
613
1017
|
for (const { sketch, variant, problems, before } of chosen) {
|
|
614
|
-
const typed = (0, check_sketches_1.typecheckVariant)({ target, product, sketch, variant });
|
|
615
|
-
noteProblemsBefore({ sketch, variant, before });
|
|
1018
|
+
const typed = (0, phase_timing_1.timedPhase)(`tsc ${variant}`, () => (0, check_sketches_1.typecheckVariant)({ target, product, sketch, variant }));
|
|
1019
|
+
noteProblemsBefore({ target, sketch, variant, before });
|
|
616
1020
|
(0, check_sketches_1.variantWarningsOf)({ target, product, sketch, variant }).forEach((warning) => console.warn(`${sketch.target} ${variant}: ${warning}`));
|
|
617
1021
|
const all = [
|
|
618
|
-
...problems,
|
|
619
|
-
...(0, check_format_1.formatProblemsOf)({ target, sketch, variant }),
|
|
1022
|
+
...variantGateProblemsOf({ target, product, sketch, variant, problems }),
|
|
620
1023
|
...(typed.kind === 'failed' ? [{ rule: 'TYPE-ERROR', file: sketch.dir, message: `\n${typed.output}` }] : []),
|
|
621
1024
|
...(typed.kind === 'unavailable' ? [{ rule: 'NO-TYPE-CHECKER', file: sketch.dir, message: typed.message }] : []),
|
|
622
1025
|
];
|
|
@@ -625,18 +1028,68 @@ const checked = (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
625
1028
|
}
|
|
626
1029
|
failed || (failed = all.length > 0);
|
|
627
1030
|
}
|
|
628
|
-
if (failed)
|
|
1031
|
+
if (!failed)
|
|
1032
|
+
for (const sketch of new Set(chosen.map((entry) => entry.sketch)))
|
|
1033
|
+
(yield (0, phase_timing_1.timedPhase)('aktuell', () => (0, ready_shots_1.aktuellPlaceholderWarnings)({ target, config, product, sketch, warm: context.warm }))).forEach((warning) => console.warn(warning));
|
|
1034
|
+
const rendered = failed
|
|
1035
|
+
? null
|
|
1036
|
+
: yield (0, phase_timing_1.timedPhase)('render-check', () => renderedVariantsOf({
|
|
1037
|
+
target,
|
|
1038
|
+
config,
|
|
1039
|
+
product,
|
|
1040
|
+
entries: chosen,
|
|
1041
|
+
drawn: true,
|
|
1042
|
+
warm: context.warm,
|
|
1043
|
+
}));
|
|
1044
|
+
const busy = rendered !== null && 'issues' in rendered ? ((_a = rendered.busy) !== null && _a !== void 0 ? _a : []) : [];
|
|
1045
|
+
if (rendered !== null && 'issues' in rendered)
|
|
1046
|
+
(0, frame_budget_1.frameBudgetWarningsOf)({
|
|
1047
|
+
drawn: rendered.drawn,
|
|
1048
|
+
targets: [...new Set(chosen.map((entry) => entry.sketch))].map((sketch) => {
|
|
1049
|
+
var _a;
|
|
1050
|
+
return ({
|
|
1051
|
+
target: sketch.target,
|
|
1052
|
+
part: (_a = sketch.targets[0]) !== null && _a !== void 0 ? _a : sketch.target,
|
|
1053
|
+
});
|
|
1054
|
+
}),
|
|
1055
|
+
}).forEach((warning) => console.warn(warning));
|
|
1056
|
+
let refused = 0;
|
|
1057
|
+
let notReady = false;
|
|
1058
|
+
const refuse = (lines) => {
|
|
1059
|
+
lines.forEach((line) => console.warn(`ready will refuse: ${line}`));
|
|
1060
|
+
refused += lines.length;
|
|
1061
|
+
};
|
|
1062
|
+
for (const sketch of new Set(chosen.map((entry) => entry.sketch))) {
|
|
1063
|
+
const unloaded = yield (0, phase_timing_1.timedPhase)('load', () => unloadedLinesOf({ target, config, product, sketch, warm: context.warm }));
|
|
1064
|
+
const before = refused;
|
|
1065
|
+
refuse([
|
|
1066
|
+
...unloaded,
|
|
1067
|
+
...openPointLinesOf({ product, sketch, busy }).added,
|
|
1068
|
+
...[(_b = roundNoteRefusalOf(sketch)) !== null && _b !== void 0 ? _b : []].flat(),
|
|
1069
|
+
]);
|
|
1070
|
+
if (!failed && unloaded.length === 0) {
|
|
1071
|
+
refuse(yield (0, phase_timing_1.timedPhase)('mark-drift', () => (0, ready_shots_1.sampleMarkDriftLines)({ target, config, product, sketch, warm: context.warm })));
|
|
1072
|
+
refuse(yield (0, phase_timing_1.timedPhase)('identical', () => (0, ready_shots_1.identicalRenderLines)({ target, config, product, sketch, warm: context.warm })));
|
|
1073
|
+
}
|
|
1074
|
+
if (!failed && refused === before) {
|
|
1075
|
+
const problem = roundNotReadyProblemOf(sketch);
|
|
1076
|
+
if (problem !== null) {
|
|
1077
|
+
console.error(problem);
|
|
1078
|
+
notReady = true;
|
|
1079
|
+
}
|
|
1080
|
+
}
|
|
1081
|
+
}
|
|
1082
|
+
const staleSince = rendered === null
|
|
1083
|
+
? []
|
|
1084
|
+
: staleBasesOf(context, { product, targets: new Set(chosen.map((entry) => entry.sketch.target)) }).filter((problem) => !stale.some((before) => before.line === problem.line));
|
|
1085
|
+
staleSince.forEach((problem) => console.error(problem.line));
|
|
1086
|
+
if (failed || staleSince.length > 0)
|
|
629
1087
|
return 1;
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
product,
|
|
634
|
-
entries: chosen,
|
|
635
|
-
drawn: true,
|
|
636
|
-
});
|
|
637
|
-
if ('issues' in rendered && rendered.issues.length > 0)
|
|
1088
|
+
if (rendered !== null && 'issues' in rendered && (rendered.noVerdict || rendered.issues.length > 0))
|
|
1089
|
+
return 1;
|
|
1090
|
+
if (notReady)
|
|
638
1091
|
return 1;
|
|
639
|
-
console.log('ok');
|
|
1092
|
+
console.log(refused > 0 ? `check ok - ready will refuse ${refused} (see above)` : 'ok');
|
|
640
1093
|
return 0;
|
|
641
1094
|
});
|
|
642
1095
|
const previewed = (context) => withSketch(context, ({ product, sketch }) => {
|
|
@@ -655,39 +1108,36 @@ const previewed = (context) => withSketch(context, ({ product, sketch }) => {
|
|
|
655
1108
|
}
|
|
656
1109
|
return 0;
|
|
657
1110
|
});
|
|
658
|
-
const allowedMergeOf = (options) => {
|
|
659
|
-
const { sketch, variant } = options;
|
|
660
|
-
const live = sketch.variants.filter((candidate) => !(0, sketch_1.rejectionOf)(sketch, candidate));
|
|
661
|
-
if (live.length !== 1 || live[0] !== variant)
|
|
662
|
-
return `${sketch.target} has ${live.length} live variants (${live.join(', ') || 'none'}), not only "${variant}" - the user picks in Studio`;
|
|
663
|
-
return (0, sketch_1.decideSketch)({ sketch, decision: { kind: 'pick', variant } });
|
|
664
|
-
};
|
|
665
1111
|
const merged = (context) => withSketch(context, ({ product, sketch }) => {
|
|
666
|
-
var _a, _b
|
|
667
|
-
const { '--note': note, '--variant': flagVariant, '--allowed-by': planRef } = context.args.values;
|
|
1112
|
+
var _a, _b;
|
|
1113
|
+
const { '--note': note, '--variant': flagVariant, '--allowed-by': planRef, '--decided-by': decidedBy, } = context.args.values;
|
|
1114
|
+
const replaceNote = context.args.flags.has('--replace-note');
|
|
668
1115
|
if (context.args.positional.length > 1)
|
|
669
1116
|
return fail(`usage: sketch merge <layer>/<name> [--note <reason>] - it merges the variant the user picked`);
|
|
1117
|
+
if (replaceNote && (note !== null && note !== void 0 ? note : '').trim() === '')
|
|
1118
|
+
return fail('--replace-note needs --note <the new part note>');
|
|
670
1119
|
if ((flagVariant === undefined) !== (planRef === undefined))
|
|
671
1120
|
return fail('--variant and --allowed-by go together: name the only live variant and the plan that allows the merge');
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
1121
|
+
if (decidedBy !== undefined && (decidedBy.trim() === '' || planRef !== undefined))
|
|
1122
|
+
return fail('--decided-by needs a name and does not go with --allowed-by, which records the plan');
|
|
1123
|
+
const by = (_a = (0, cli_args_1.authorOf)(context.args)) !== null && _a !== void 0 ? _a : undefined;
|
|
1124
|
+
const allowed = flagVariant !== undefined && planRef !== undefined && ((_b = sketch.decision) === null || _b === void 0 ? void 0 : _b.kind) !== 'pick'
|
|
1125
|
+
? { variant: flagVariant, planRef, editRef: (0, merge_step_1.editRefOf)({ target: context.target, sketch, planRef }) }
|
|
1126
|
+
: undefined;
|
|
1127
|
+
const result = (0, phase_timing_1.timedPhase)('merge', () => (0, merge_step_1.mergeAndRecord)({
|
|
677
1128
|
target: context.target,
|
|
678
1129
|
config: context.config,
|
|
679
1130
|
product,
|
|
680
|
-
sketch
|
|
1131
|
+
sketch,
|
|
681
1132
|
note,
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
console.log(`merged ${sketch.target} variant ${variant} into ${product.name}: ${result.join(', ')}`);
|
|
1133
|
+
replaceNote,
|
|
1134
|
+
by,
|
|
1135
|
+
decidedBy: decidedBy === null || decidedBy === void 0 ? void 0 : decidedBy.trim(),
|
|
1136
|
+
allowed,
|
|
1137
|
+
}));
|
|
1138
|
+
if (typeof result === 'string')
|
|
1139
|
+
return fail(result);
|
|
1140
|
+
console.log(`merged ${sketch.target} variant ${result.variant} into ${product.name}: ${result.parts.join(', ')}`);
|
|
691
1141
|
return 0;
|
|
692
1142
|
});
|
|
693
1143
|
const discarded = (context) => withSketch(context, ({ sketch }) => {
|
|
@@ -701,27 +1151,37 @@ const discarded = (context) => withSketch(context, ({ sketch }) => {
|
|
|
701
1151
|
const verdictOriginOf = (by, of) => of && of !== by ? ` (reason by the ${of})` : '';
|
|
702
1152
|
/** The verdicts a variant had, oldest first, and whether it is rejected now. */
|
|
703
1153
|
const verdictLinesOf = (sketch, variant) => {
|
|
704
|
-
var _a, _b;
|
|
1154
|
+
var _a, _b, _c;
|
|
705
1155
|
const history = (_b = (_a = sketch.rejections) === null || _a === void 0 ? void 0 : _a[variant]) !== null && _b !== void 0 ? _b : [];
|
|
706
|
-
const lines = history.flatMap((rejection) =>
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
?
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
1156
|
+
const lines = history.flatMap((rejection) => {
|
|
1157
|
+
var _a;
|
|
1158
|
+
return [
|
|
1159
|
+
` ${rejection.status === 'withdrawn' ? `withdrawn by ${(_a = rejection.withdrawnBy) !== null && _a !== void 0 ? _a : 'the agent'}` : `rejected by the ${rejection.by}`} at ${rejection.decidedAt}${verdictOriginOf(rejection.by, rejection.reasonBy)}${rejection.reason ? `: ${rejection.reason}` : ''}`,
|
|
1160
|
+
...(rejection.reopened
|
|
1161
|
+
? [
|
|
1162
|
+
` reopened by the ${rejection.reopened.by} at ${rejection.reopened.decidedAt}${rejection.reopened.reason ? `: ${rejection.reopened.reason}` : ''}`,
|
|
1163
|
+
]
|
|
1164
|
+
: []),
|
|
1165
|
+
];
|
|
1166
|
+
});
|
|
1167
|
+
return [
|
|
1168
|
+
`${sketch.target} variant ${variant}: ${(0, sketch_1.rejectionOf)(sketch, variant) ? (((_c = (0, sketch_1.rejectionOf)(sketch, variant)) === null || _c === void 0 ? void 0 : _c.status) === 'withdrawn' ? 'withdrawn' : 'rejected') : 'live'}`,
|
|
1169
|
+
...lines,
|
|
1170
|
+
];
|
|
715
1171
|
};
|
|
716
1172
|
exports.verdictLinesOf = verdictLinesOf;
|
|
717
1173
|
const judged = (kind) => (context) => withSketch(context, ({ sketch }) => {
|
|
718
|
-
var _a;
|
|
1174
|
+
var _a, _b;
|
|
719
1175
|
const { positional, values } = context.args;
|
|
720
1176
|
const variant = values['--variant'];
|
|
721
1177
|
const reason = ((_a = values['--reason']) === null || _a === void 0 ? void 0 : _a.trim()) || undefined;
|
|
722
|
-
const
|
|
1178
|
+
const author = (_b = (0, cli_args_1.authorOf)(context.args)) !== null && _b !== void 0 ? _b : '';
|
|
1179
|
+
const by = author === 'designer' ? 'designer' : 'agent';
|
|
723
1180
|
if (positional.length !== 1 || !variant)
|
|
724
1181
|
return fail(`usage: sketch ${kind} <layer>/<name> --variant <key> [--reason <text>] --by <model id | designer> [--product <name>]`);
|
|
1182
|
+
const invalid = (0, cli_args_1.verdictByProblemOf)(author);
|
|
1183
|
+
if (invalid)
|
|
1184
|
+
return fail(invalid);
|
|
725
1185
|
const decision = kind === 'reject' && reason && (0, sketch_1.rejectionOf)(sketch, variant)
|
|
726
1186
|
? { kind: 'reason', variant, reason, by }
|
|
727
1187
|
: Object.assign(Object.assign({ kind, variant }, (reason ? { reason } : {})), { by });
|
|
@@ -731,11 +1191,50 @@ const judged = (kind) => (context) => withSketch(context, ({ sketch }) => {
|
|
|
731
1191
|
(0, exports.verdictLinesOf)(decided, variant).forEach((line) => console.log(line));
|
|
732
1192
|
return 0;
|
|
733
1193
|
});
|
|
1194
|
+
const withdrawn = (context) => {
|
|
1195
|
+
const found = productAndSketchOf(context);
|
|
1196
|
+
if (typeof found === 'string')
|
|
1197
|
+
return fail(found);
|
|
1198
|
+
return withdrawnVariant(context, found);
|
|
1199
|
+
};
|
|
1200
|
+
const withdrawnVariant = (context_1, _a) => __awaiter(void 0, [context_1, _a], void 0, function* (context, { product, sketch }) {
|
|
1201
|
+
var _b;
|
|
1202
|
+
const { positional, values } = context.args;
|
|
1203
|
+
const variant = values['--variant'];
|
|
1204
|
+
const by = (_b = (0, cli_args_1.authorOf)(context.args)) !== null && _b !== void 0 ? _b : '';
|
|
1205
|
+
if (positional.length !== 1 || !variant)
|
|
1206
|
+
return fail('usage: sketch withdraw <layer>/<name> --variant <key> --by <model id> [--product <name>]');
|
|
1207
|
+
if (by === 'designer')
|
|
1208
|
+
return fail('sketch withdraw is for the agent that drew the variant: --by must be a model id, not designer');
|
|
1209
|
+
const invalid = (0, cli_args_1.verdictByProblemOf)(by);
|
|
1210
|
+
if (invalid)
|
|
1211
|
+
return fail(invalid);
|
|
1212
|
+
if (!sketch.variants.includes(variant))
|
|
1213
|
+
return fail(`${sketch.target} has no variant "${variant}" - it has ${sketch.variants.join(', ')}`);
|
|
1214
|
+
if (!(0, sketch_1.authorsOf)(sketch, variant).includes(by))
|
|
1215
|
+
return fail(`${sketch.target} variant ${variant} was not drawn by ${by} - only the agent that drew it withdraws it`);
|
|
1216
|
+
const identical = yield (0, ready_shots_1.identicalRenders)({
|
|
1217
|
+
target: context.target,
|
|
1218
|
+
config: context.config,
|
|
1219
|
+
product,
|
|
1220
|
+
sketch,
|
|
1221
|
+
warm: context.warm,
|
|
1222
|
+
});
|
|
1223
|
+
const twin = identical.find((render) => render.variant === variant && render.sibling !== null);
|
|
1224
|
+
if (!twin)
|
|
1225
|
+
return fail(`${sketch.target} variant ${variant} does not draw the same pixels as a sibling variant in its first changed state - redraw it or ask for a reject`);
|
|
1226
|
+
const result = (0, sketch_1.withdrawVariant)({ sketch, variant, by, reason: `identisch mit ${twin.sibling}` });
|
|
1227
|
+
if (typeof result === 'string')
|
|
1228
|
+
return fail(result);
|
|
1229
|
+
console.log(`withdrew ${sketch.target} variant ${variant} (identisch mit ${twin.sibling})`);
|
|
1230
|
+
return 0;
|
|
1231
|
+
});
|
|
734
1232
|
const COMMANDS = {
|
|
735
1233
|
new: created,
|
|
736
1234
|
variant: varied,
|
|
737
1235
|
round: roundEdited,
|
|
738
1236
|
note: noteEdited,
|
|
1237
|
+
covers: coversEdited,
|
|
739
1238
|
list: listed,
|
|
740
1239
|
report: reported,
|
|
741
1240
|
ready: readied,
|
|
@@ -749,32 +1248,29 @@ const COMMANDS = {
|
|
|
749
1248
|
target: targetAdded,
|
|
750
1249
|
reject: judged('reject'),
|
|
751
1250
|
reopen: judged('reopen'),
|
|
1251
|
+
withdraw: withdrawn,
|
|
1252
|
+
};
|
|
1253
|
+
/** The value flags and switches the usage line of a sketch command names. */
|
|
1254
|
+
const flagsOf = (command) => {
|
|
1255
|
+
var _a;
|
|
1256
|
+
const line = (_a = exports.SKETCH_USAGE.find((usage) => usage.startsWith(`sketch ${command} `))) !== null && _a !== void 0 ? _a : '';
|
|
1257
|
+
const named = [...line.matchAll(/(--[a-z-]+)( (?=[<a-z0-9]))?/gu)];
|
|
1258
|
+
const unique = (flags) => [...new Set(flags)];
|
|
1259
|
+
return {
|
|
1260
|
+
values: unique(named.filter(([, , value]) => value).map(([, flag]) => flag !== null && flag !== void 0 ? flag : '')),
|
|
1261
|
+
switches: unique(named.filter(([, , value]) => !value).map(([, flag]) => flag !== null && flag !== void 0 ? flag : '')),
|
|
1262
|
+
};
|
|
752
1263
|
};
|
|
753
1264
|
/**
|
|
754
1265
|
* `et design sketch <command> …` opens, adds variants to, reports on, readies, checks, previews, rebases, merges and
|
|
755
|
-
* discards sketches, and rejects and
|
|
1266
|
+
* discards sketches, and rejects, reopens and withdraws their variants.
|
|
756
1267
|
*/
|
|
757
1268
|
const designSketch = (options) => {
|
|
758
|
-
|
|
1269
|
+
var _a, _b;
|
|
1270
|
+
const { target, argv, invocation, warm } = options;
|
|
759
1271
|
const [command = '', ...rest] = argv;
|
|
760
1272
|
const run = COMMANDS[command];
|
|
761
|
-
const args = (0, cli_args_1.argsOf)(rest,
|
|
762
|
-
'--product',
|
|
763
|
-
'--variants',
|
|
764
|
-
'--note',
|
|
765
|
-
'--variant',
|
|
766
|
-
'--by',
|
|
767
|
-
'--from',
|
|
768
|
-
'--round',
|
|
769
|
-
'--round-note',
|
|
770
|
-
'--title',
|
|
771
|
-
'--like',
|
|
772
|
-
'--drops',
|
|
773
|
-
'--variant-note',
|
|
774
|
-
'--reason',
|
|
775
|
-
'--allowed-by',
|
|
776
|
-
'--until',
|
|
777
|
-
]);
|
|
1273
|
+
const args = (0, cli_args_1.argsOf)(rest, flagsOf(command));
|
|
778
1274
|
const unauthored = typeof args !== 'string' && WRITES.has(command) && (0, cli_args_1.authorOf)(args) === null;
|
|
779
1275
|
if (!run || typeof args === 'string' || unauthored) {
|
|
780
1276
|
if (typeof args === 'string')
|
|
@@ -789,7 +1285,16 @@ const designSketch = (options) => {
|
|
|
789
1285
|
const config = (0, cli_args_1.configOf)(target);
|
|
790
1286
|
if (typeof config === 'string')
|
|
791
1287
|
return fail(config);
|
|
792
|
-
|
|
1288
|
+
if (RETRIES.has(command)) {
|
|
1289
|
+
const named = (0, sketch_1.parseTarget)((_a = args.positional[0]) !== null && _a !== void 0 ? _a : '');
|
|
1290
|
+
(0, exports.retriedHeldMerges)({
|
|
1291
|
+
target,
|
|
1292
|
+
config,
|
|
1293
|
+
author: (_b = (0, cli_args_1.authorOf)(args)) !== null && _b !== void 0 ? _b : undefined,
|
|
1294
|
+
except: typeof named === 'string' ? undefined : (0, resolve_product_1.partKeyOf)(named),
|
|
1295
|
+
});
|
|
1296
|
+
}
|
|
1297
|
+
return run({ target, config, args, invocation, warm });
|
|
793
1298
|
};
|
|
794
1299
|
exports.designSketch = designSketch;
|
|
795
1300
|
//# sourceMappingURL=sketch-command.js.map
|