@ethlete/cli 3.0.0-next.25 → 3.0.0-next.27
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 +417 -0
- package/build-info.json +1 -0
- package/design/define-call.ts +99 -31
- package/design/define-part.ts +50 -3
- package/design/icon-sheet.ts +1 -1
- package/design/interaction-rows.ts +13 -6
- package/design/logo-sheet.ts +52 -0
- package/design/mark-part.ts +51 -1
- package/design/motion-drive.ts +215 -0
- package/design/motion-runtime.ts +14 -2
- package/design/motion-tokens.ts +177 -0
- package/design/token-sheet.ts +1 -1
- package/design/web/frame-fill.ts +4 -0
- package/design/web/frame-fit.ts +7 -0
- package/design/web/frame-scheme.ts +44 -0
- package/design/web/frame-surfaces.ts +294 -0
- package/design/web/frame.ts +162 -43
- 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/design/asset-shot.js +2 -2
- package/src/lib/design/asset-shot.js.map +1 -1
- 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/calls-tsconfig.d.ts +2 -0
- package/src/lib/design/calls-tsconfig.js +10 -3
- package/src/lib/design/calls-tsconfig.js.map +1 -1
- package/src/lib/design/check.d.ts +1 -0
- package/src/lib/design/check.js +195 -13
- package/src/lib/design/check.js.map +1 -1
- 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/contact-sheet.d.ts +9 -0
- package/src/lib/design/contact-sheet.js +38 -4
- package/src/lib/design/contact-sheet.js.map +1 -1
- package/src/lib/design/design-command.d.ts +2 -0
- package/src/lib/design/design-command.js +183 -15
- package/src/lib/design/design-command.js.map +1 -1
- package/src/lib/design/draw-ledger.d.ts +36 -0
- package/src/lib/design/draw-ledger.js +52 -0
- package/src/lib/design/draw-ledger.js.map +1 -0
- package/src/lib/design/force-interactions.d.ts +1 -1
- package/src/lib/design/force-interactions.js +4 -2
- package/src/lib/design/force-interactions.js.map +1 -1
- package/src/lib/design/inbox-command.js +9 -5
- package/src/lib/design/inbox-command.js.map +1 -1
- package/src/lib/design/mcp-command.d.ts +28 -3
- package/src/lib/design/mcp-command.js +134 -21
- 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 +10 -16
- 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 +19 -10
- package/src/lib/design/new-call.js.map +1 -1
- package/src/lib/design/part-marks.d.ts +3 -2
- package/src/lib/design/part-marks.js +13 -5
- package/src/lib/design/part-marks.js.map +1 -1
- package/src/lib/design/paths.d.ts +42 -0
- package/src/lib/design/paths.js +50 -1
- package/src/lib/design/paths.js.map +1 -1
- package/src/lib/design/product-command.d.ts +1 -1
- package/src/lib/design/product-command.js +12 -14
- package/src/lib/design/product-command.js.map +1 -1
- package/src/lib/design/ready-shots.d.ts +29 -3
- package/src/lib/design/ready-shots.js +105 -5
- package/src/lib/design/ready-shots.js.map +1 -1
- package/src/lib/design/render-packages.d.ts +9 -17
- package/src/lib/design/render-packages.js +25 -63
- package/src/lib/design/render-packages.js.map +1 -1
- package/src/lib/design/render-worker.js +2 -3
- package/src/lib/design/render-worker.js.map +1 -1
- package/src/lib/design/render.d.ts +2 -0
- package/src/lib/design/render.js +32 -7
- package/src/lib/design/render.js.map +1 -1
- package/src/lib/design/serve.d.ts +23 -3
- package/src/lib/design/serve.js +288 -35
- package/src/lib/design/serve.js.map +1 -1
- package/src/lib/design/server-identity.d.ts +36 -0
- package/src/lib/design/server-identity.js +68 -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-command.d.ts +30 -6
- package/src/lib/design/shot-command.js +144 -56
- package/src/lib/design/shot-command.js.map +1 -1
- package/src/lib/design/shot-store.d.ts +24 -0
- package/src/lib/design/shot-store.js +120 -0
- package/src/lib/design/shot-store.js.map +1 -0
- package/src/lib/design/shot.d.ts +71 -1
- package/src/lib/design/shot.js +253 -40
- package/src/lib/design/shot.js.map +1 -1
- package/src/lib/design/sketch-command.d.ts +6 -1
- package/src/lib/design/sketch-command.js +452 -136
- package/src/lib/design/sketch-command.js.map +1 -1
- package/src/lib/design/ssr-shims.d.ts +2 -0
- package/src/lib/design/ssr-shims.js +12 -1
- 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 +18 -1
- package/src/lib/design/stamp.js +53 -7
- 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/studio-api.d.ts +35 -4
- package/src/lib/design/studio-api.js +312 -41
- package/src/lib/design/studio-api.js.map +1 -1
- package/src/lib/design/system/accept-command.d.ts +39 -5
- package/src/lib/design/system/accept-command.js +109 -25
- package/src/lib/design/system/accept-command.js.map +1 -1
- package/src/lib/design/system/accepted-pictures.d.ts +83 -0
- package/src/lib/design/system/accepted-pictures.js +324 -0
- package/src/lib/design/system/accepted-pictures.js.map +1 -0
- package/src/lib/design/system/action-lost.d.ts +59 -0
- package/src/lib/design/system/action-lost.js +120 -0
- package/src/lib/design/system/action-lost.js.map +1 -0
- package/src/lib/design/system/action-press.d.ts +23 -0
- package/src/lib/design/system/action-press.js +76 -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 +101 -0
- package/src/lib/design/system/actions-command.js +695 -0
- package/src/lib/design/system/actions-command.js.map +1 -0
- package/src/lib/design/system/actions.d.ts +158 -0
- package/src/lib/design/system/actions.js +295 -0
- package/src/lib/design/system/actions.js.map +1 -0
- package/src/lib/design/system/app-files.d.ts +10 -0
- package/src/lib/design/system/app-files.js +159 -0
- package/src/lib/design/system/app-files.js.map +1 -0
- package/src/lib/design/system/bespoke-controls.d.ts +30 -0
- package/src/lib/design/system/bespoke-controls.js +147 -0
- package/src/lib/design/system/bespoke-controls.js.map +1 -0
- package/src/lib/design/system/build-ready-contract.d.ts +27 -0
- package/src/lib/design/system/build-ready-contract.js +12 -0
- package/src/lib/design/system/build-ready-contract.js.map +1 -0
- package/src/lib/design/system/check-rules.d.ts +1 -0
- package/src/lib/design/system/check-rules.js +82 -0
- package/src/lib/design/system/check-rules.js.map +1 -0
- package/src/lib/design/system/check-system.d.ts +62 -3
- package/src/lib/design/system/check-system.js +527 -34
- package/src/lib/design/system/check-system.js.map +1 -1
- package/src/lib/design/system/colour.d.ts +4 -1
- package/src/lib/design/system/colour.js +54 -2
- package/src/lib/design/system/colour.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.js +2 -2
- package/src/lib/design/system/comments/inbox.js.map +1 -1
- package/src/lib/design/system/compare-command.d.ts +119 -0
- package/src/lib/design/system/compare-command.js +558 -0
- package/src/lib/design/system/compare-command.js.map +1 -0
- package/src/lib/design/system/complete-command.js +7 -3
- package/src/lib/design/system/complete-command.js.map +1 -1
- package/src/lib/design/system/complete.d.ts +99 -3
- package/src/lib/design/system/complete.js +358 -88
- 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 +6 -1
- package/src/lib/design/system/contrast-check.js +179 -13
- package/src/lib/design/system/contrast-check.js.map +1 -1
- 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 +31 -0
- package/src/lib/design/system/design-hash.js +73 -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 +175 -0
- package/src/lib/design/system/dom-command.js.map +1 -0
- package/src/lib/design/system/drawn-open-points.d.ts +38 -0
- package/src/lib/design/system/drawn-open-points.js +94 -0
- package/src/lib/design/system/drawn-open-points.js.map +1 -0
- package/src/lib/design/system/dropped-props.d.ts +25 -0
- package/src/lib/design/system/dropped-props.js +159 -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/go-batch.d.ts +24 -0
- package/src/lib/design/system/go-batch.js +110 -0
- package/src/lib/design/system/go-batch.js.map +1 -0
- package/src/lib/design/system/go-command.d.ts +4 -0
- package/src/lib/design/system/go-command.js +64 -0
- package/src/lib/design/system/go-command.js.map +1 -0
- package/src/lib/design/system/go-guard.d.ts +26 -0
- package/src/lib/design/system/go-guard.js +70 -0
- package/src/lib/design/system/go-guard.js.map +1 -0
- package/src/lib/design/system/go-step.d.ts +13 -0
- package/src/lib/design/system/go-step.js +84 -0
- package/src/lib/design/system/go-step.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 +35 -0
- package/src/lib/design/system/harness-build-cache.js +175 -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-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 +40 -0
- package/src/lib/design/system/harness-server.js +296 -0
- package/src/lib/design/system/harness-server.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/list-system.d.ts +8 -1
- package/src/lib/design/system/list-system.js +13 -3
- 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 +665 -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 +40 -0
- package/src/lib/design/system/live-uncovered.js +123 -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/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/open-points.d.ts +119 -0
- package/src/lib/design/system/open-points.js +185 -0
- package/src/lib/design/system/open-points.js.map +1 -0
- package/src/lib/design/system/part-build-ready.d.ts +39 -0
- package/src/lib/design/system/part-build-ready.js +107 -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 +123 -0
- package/src/lib/design/system/part-compare.js +396 -0
- package/src/lib/design/system/part-compare.js.map +1 -0
- package/src/lib/design/system/part-go.d.ts +70 -0
- package/src/lib/design/system/part-go.js +94 -0
- package/src/lib/design/system/part-go.js.map +1 -0
- package/src/lib/design/system/part-ready.d.ts +90 -0
- package/src/lib/design/system/part-ready.js +172 -0
- package/src/lib/design/system/part-ready.js.map +1 -0
- package/src/lib/design/system/part-task.d.ts +147 -0
- package/src/lib/design/system/part-task.js +285 -0
- package/src/lib/design/system/part-task.js.map +1 -0
- package/src/lib/design/system/pointer-focus.d.ts +81 -0
- package/src/lib/design/system/pointer-focus.js +152 -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 +36 -0
- package/src/lib/design/system/prettier.js.map +1 -0
- 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 +33 -0
- package/src/lib/design/system/read-open-points.js +110 -0
- package/src/lib/design/system/read-open-points.js.map +1 -0
- package/src/lib/design/system/ready-command.d.ts +11 -0
- package/src/lib/design/system/ready-command.js +82 -0
- package/src/lib/design/system/ready-command.js.map +1 -0
- package/src/lib/design/system/render-check.d.ts +52 -0
- package/src/lib/design/system/render-check.js +479 -60
- package/src/lib/design/system/render-check.js.map +1 -1
- package/src/lib/design/system/resolve-product.d.ts +2 -1
- package/src/lib/design/system/resolve-product.js +25 -3
- package/src/lib/design/system/resolve-product.js.map +1 -1
- 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 +2 -0
- package/src/lib/design/system/rules/canonical-class.js +36 -110
- package/src/lib/design/system/rules/canonical-class.js.map +1 -1
- package/src/lib/design/system/rules/capability-place.d.ts +44 -0
- package/src/lib/design/system/rules/capability-place.js +116 -0
- package/src/lib/design/system/rules/capability-place.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/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 +61 -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.d.ts +8 -0
- package/src/lib/design/system/rules/implements.js +48 -0
- package/src/lib/design/system/rules/implements.js.map +1 -0
- 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 +2 -0
- package/src/lib/design/system/rules/motion.js +35 -2
- 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 +64 -0
- package/src/lib/design/system/rules/native-title.js.map +1 -0
- package/src/lib/design/system/rules/option-values.d.ts +15 -0
- package/src/lib/design/system/rules/option-values.js +145 -0
- package/src/lib/design/system/rules/option-values.js.map +1 -0
- 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/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/stale-replace.js +45 -3
- 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 +51 -0
- package/src/lib/design/system/rules/tailwind-classes.js +232 -0
- package/src/lib/design/system/rules/tailwind-classes.js.map +1 -0
- 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 +5 -0
- package/src/lib/design/system/rules/unbound-input-known.js +47 -0
- package/src/lib/design/system/rules/unbound-input-known.js.map +1 -0
- package/src/lib/design/system/rules/unbound-input.d.ts +22 -0
- package/src/lib/design/system/rules/unbound-input.js +61 -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 +32 -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 +29 -14
- 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 +20 -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-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/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/settled-panes.d.ts +18 -0
- package/src/lib/design/system/settled-panes.js +70 -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 +29 -2
- package/src/lib/design/system/sketch/baseline.js +33 -9
- package/src/lib/design/system/sketch/baseline.js.map +1 -1
- package/src/lib/design/system/sketch/check-sketches.d.ts +11 -0
- package/src/lib/design/system/sketch/check-sketches.js +54 -6
- package/src/lib/design/system/sketch/check-sketches.js.map +1 -1
- package/src/lib/design/system/sketch/cli-args.d.ts +12 -2
- package/src/lib/design/system/sketch/cli-args.js +18 -3
- package/src/lib/design/system/sketch/cli-args.js.map +1 -1
- package/src/lib/design/system/sketch/edit-sketch.d.ts +21 -0
- package/src/lib/design/system/sketch/edit-sketch.js +117 -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 +137 -0
- package/src/lib/design/system/sketch/identical-renders.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 +35 -0
- package/src/lib/design/system/sketch/merge-step.js +98 -0
- package/src/lib/design/system/sketch/merge-step.js.map +1 -0
- package/src/lib/design/system/sketch/merge.d.ts +10 -3
- package/src/lib/design/system/sketch/merge.js +122 -17
- 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 +41 -11
- package/src/lib/design/system/sketch/merged-parts.js +113 -50
- 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/part-definition.d.ts +56 -0
- package/src/lib/design/system/sketch/part-definition.js +129 -13
- 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 +170 -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-worker.d.ts +1 -0
- package/src/lib/design/system/sketch/sketch-check-worker.js +27 -0
- package/src/lib/design/system/sketch/sketch-check-worker.js.map +1 -0
- package/src/lib/design/system/sketch/sketch-checker.d.ts +27 -0
- package/src/lib/design/system/sketch/sketch-checker.js +99 -0
- package/src/lib/design/system/sketch/sketch-checker.js.map +1 -0
- package/src/lib/design/system/sketch/sketch.d.ts +78 -2
- package/src/lib/design/system/sketch/sketch.js +247 -54
- 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 +36 -1
- package/src/lib/design/system/sketch/unchanged-states.js +60 -17
- package/src/lib/design/system/sketch/unchanged-states.js.map +1 -1
- package/src/lib/design/system/sketch/unused-closure.js +26 -4
- package/src/lib/design/system/sketch/unused-closure.js.map +1 -1
- package/src/lib/design/system/sketch/unused-files.d.ts +1 -1
- package/src/lib/design/system/sketch/unused-files.js +6 -3
- package/src/lib/design/system/sketch/unused-files.js.map +1 -1
- package/src/lib/design/system/sketch/viewed-shots.d.ts +24 -0
- package/src/lib/design/system/sketch/viewed-shots.js +61 -0
- package/src/lib/design/system/sketch/viewed-shots.js.map +1 -0
- package/src/lib/design/system/slow-checks.d.ts +40 -0
- package/src/lib/design/system/slow-checks.js +197 -0
- package/src/lib/design/system/slow-checks.js.map +1 -0
- package/src/lib/design/system/slow-run.d.ts +57 -0
- package/src/lib/design/system/slow-run.js +253 -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 +25 -0
- package/src/lib/design/system/stale-dist.js +91 -0
- package/src/lib/design/system/stale-dist.js.map +1 -0
- package/src/lib/design/system/stale-parts.d.ts +30 -0
- package/src/lib/design/system/stale-parts.js +106 -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 +8 -6
- package/src/lib/design/system/system-command.js.map +1 -1
- package/src/lib/design/system/system-modules.d.ts +16 -1
- 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.js +2 -2
- package/src/lib/design/system/system-tsconfig.js.map +1 -1
- package/src/lib/design/system/task-command.d.ts +51 -0
- package/src/lib/design/system/task-command.js +233 -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/tom-confirm.d.ts +40 -0
- package/src/lib/design/system/tom-confirm.js +55 -0
- package/src/lib/design/system/tom-confirm.js.map +1 -0
- package/src/lib/design/system/touched-parts.d.ts +16 -0
- package/src/lib/design/system/touched-parts.js +122 -0
- package/src/lib/design/system/touched-parts.js.map +1 -0
- package/src/lib/design/system/ts-source.d.ts +5 -0
- package/src/lib/design/system/ts-source.js +35 -4
- package/src/lib/design/system/ts-source.js.map +1 -1
- package/src/lib/design/system/unchanged-rows.d.ts +15 -0
- package/src/lib/design/system/unchanged-rows.js +134 -0
- package/src/lib/design/system/unchanged-rows.js.map +1 -0
- package/src/lib/design/system/uncommitted-decisions.d.ts +6 -0
- package/src/lib/design/system/uncommitted-decisions.js +38 -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 +48 -0
- package/src/lib/design/system/visible-change-command.js +308 -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/thumb.d.ts +50 -6
- package/src/lib/design/thumb.js +154 -54
- package/src/lib/design/thumb.js.map +1 -1
- package/src/lib/design/typecheck.d.ts +1 -1
- package/src/lib/design/typecheck.js +3 -3
- 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/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/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/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/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/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/tasks.js +2 -1
- package/src/lib/update/tasks.js.map +1 -1
|
@@ -20,56 +20,76 @@ 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.sketchFlagHelpOf = exports.SKETCH_USAGE = void 0;
|
|
24
24
|
const unused_closure_1 = require("./system/sketch/unused-closure");
|
|
25
|
+
const fs_1 = require("fs");
|
|
25
26
|
const path_1 = require("path");
|
|
26
27
|
const assets_1 = require("./system/assets");
|
|
27
28
|
const comment_1 = require("./system/comments/comment");
|
|
28
29
|
const product_1 = require("./system/product");
|
|
29
30
|
const resolve_product_1 = require("./system/resolve-product");
|
|
30
31
|
const check_format_1 = require("./system/sketch/check-format");
|
|
32
|
+
const frame_budget_1 = require("./system/sketch/frame-budget");
|
|
31
33
|
const check_sketches_1 = require("./system/sketch/check-sketches");
|
|
32
34
|
const cli_args_1 = require("./system/sketch/cli-args");
|
|
33
35
|
const ready_shots_1 = require("./ready-shots");
|
|
36
|
+
const no_visible_change_1 = require("./system/sketch/no-visible-change");
|
|
37
|
+
const viewed_shots_1 = require("./system/sketch/viewed-shots");
|
|
34
38
|
const merge_1 = require("./system/sketch/merge");
|
|
39
|
+
const merge_step_1 = require("./system/sketch/merge-step");
|
|
40
|
+
const check_system_1 = require("./system/check-system");
|
|
41
|
+
const invocation_1 = require("../invocation");
|
|
35
42
|
const merged_parts_1 = require("./system/sketch/merged-parts");
|
|
36
43
|
const render_check_1 = require("./system/render-check");
|
|
37
44
|
const merge_preview_1 = require("./system/sketch/merge-preview");
|
|
45
|
+
const open_points_1 = require("./system/open-points");
|
|
46
|
+
const read_open_points_1 = require("./system/read-open-points");
|
|
47
|
+
const overlay_1 = require("./system/sketch/overlay");
|
|
48
|
+
const rebase_port_1 = require("./system/sketch/rebase-port");
|
|
49
|
+
const theming_text_1 = require("./system/theming-text");
|
|
38
50
|
const sketch_1 = require("./system/sketch/sketch");
|
|
39
51
|
exports.SKETCH_USAGE = [
|
|
40
|
-
'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>]',
|
|
52
|
+
'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] [--product <name>]',
|
|
41
53
|
'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>]',
|
|
42
54
|
'sketch round <layer>/<name> <round> [--title <text>] [--note <text>] [--drops <state,state>] --by <model id> [--product <name>]',
|
|
55
|
+
'sketch note <layer>/<name> <variant> <text> --by <model id> [--product <name>]',
|
|
56
|
+
'sketch target add <layer>/<name> <layer>/<name> --by <model id> [--product <name>]',
|
|
57
|
+
'sketch target remove <layer>/<name> <layer>/<name> --by <model id> [--product <name>]',
|
|
43
58
|
'sketch list [--product <name>] [--json]',
|
|
44
|
-
'sketch report <layer>/<name> --variant <key> --by <model id> (<text> | --done) [--product <name>]',
|
|
59
|
+
'sketch report <layer>/<name> --variant <key> --by <model id> (<text> | --done) [--reopen] [--product <name>]',
|
|
45
60
|
'sketch ready <layer>/<name> --by <model id> [--product <name>]',
|
|
46
61
|
'sketch hold <layer>/<name> --until <what the change waits on> --by <model id> [--product <name>]',
|
|
47
62
|
'sketch release <layer>/<name> --by <model id> [--product <name>]',
|
|
48
63
|
'sketch check [<layer>/<name>] [--fix] [--product <name>]',
|
|
49
64
|
'sketch preview <layer>/<name> <variant> [--product <name>] [--json]',
|
|
50
|
-
'sketch rebase <layer>/<name> --by <model id> [--product <name>]',
|
|
51
|
-
'sketch merge <layer>/<name> [--note <reason>] [--variant <key> --allowed-by <plan ref>] --by <model id> [--product <name>]',
|
|
65
|
+
'sketch rebase <layer>/<name> [--ported] --by <model id> [--product <name>]',
|
|
66
|
+
'sketch merge <layer>/<name> [--note <reason> [--replace-note]] [--variant <key> --allowed-by <plan ref>] --by <model id> [--product <name>]',
|
|
52
67
|
'sketch discard <layer>/<name> --by <model id> [--product <name>]',
|
|
53
68
|
'sketch reject <layer>/<name> --variant <key> [--reason <text>] --by <model id | designer> [--product <name>]',
|
|
54
69
|
'sketch reopen <layer>/<name> --variant <key> [--reason <text>] --by <model id | designer> [--product <name>]',
|
|
70
|
+
'sketch withdraw <layer>/<name> --variant <key> --by <model id> [--product <name>]',
|
|
55
71
|
];
|
|
56
72
|
const FLAG_HELP = {
|
|
57
73
|
'--variants': 'the variant folders to open, a comma list: a,b,c',
|
|
58
74
|
'--variant-note': "the note of one variant, kept in sketch.json apart from the part's merged note; repeat it per variant: a=<text>",
|
|
59
75
|
'--by': 'the exact model id the coordinator gave you, e.g. claude-opus-5-5',
|
|
76
|
+
'--name': 'a second sketch on a part that has one: it lives in its own folder and is addressed as <layer>/<name>@<sketch name>',
|
|
60
77
|
'--like': 'start each variant from another part, or from a variant of the open sketch on it',
|
|
61
78
|
'--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',
|
|
62
79
|
'--into-base': 'on a part the product overrides: start from the product copy, merge into the base and remove the copy',
|
|
80
|
+
'--ported': 'on rebase: the conflicting files hold the product change already, ported by hand - keep them and rebase',
|
|
63
81
|
'--round': 'the title of a new round',
|
|
64
82
|
'--round-note': 'what the new round shows',
|
|
65
83
|
'--from': 'the variant to copy',
|
|
66
84
|
'--title': 'the new title of the round',
|
|
67
85
|
'--drops': 'the states the round drops on purpose, a comma list',
|
|
68
86
|
'--variant': 'the variant the command is about; on merge, the only live variant of a sketch with no pick',
|
|
69
|
-
'--allowed-by': 'the plan entry that lets the merge go without a pick in Studio;
|
|
87
|
+
'--allowed-by': 'the plan entry that lets the merge go without a pick in Studio; noted in merged.json, needs --variant',
|
|
88
|
+
'--replace-note': "on merge: also write --note over each target part's note",
|
|
70
89
|
'--reason': 'why; on reject of a variant that is rejected already it sets the reason of that rejection; stored with who wrote it',
|
|
71
90
|
'--until': 'what the pending change waits on: an open decision, a helper still to land',
|
|
72
91
|
'--done': 'end the live report of the variant',
|
|
92
|
+
'--reopen': 'on report: move a ready sketch back to in progress',
|
|
73
93
|
'--product': 'the product; needed only when config.json declares more than one and no other product has the sketch',
|
|
74
94
|
'--json': 'print JSON',
|
|
75
95
|
'--fix': "write the variants in the checkout's Prettier format first",
|
|
@@ -79,7 +99,7 @@ const NOTE_HELP = {
|
|
|
79
99
|
new: 'what the first round shows',
|
|
80
100
|
variant: 'why the running round lost; needed with --round',
|
|
81
101
|
round: 'what the round shows',
|
|
82
|
-
merge:
|
|
102
|
+
merge: "why this variant; noted in merged.json, the part's note stays",
|
|
83
103
|
};
|
|
84
104
|
/** One line per flag the usage line names, for `sketch <command> --help`. */
|
|
85
105
|
const sketchFlagHelpOf = (usage) => {
|
|
@@ -89,11 +109,13 @@ const sketchFlagHelpOf = (usage) => {
|
|
|
89
109
|
return [...new Set((_b = usage.match(/--[a-z-]+/gu)) !== null && _b !== void 0 ? _b : [])].flatMap((flag) => help[flag] === undefined ? [] : [` ${flag.padEnd(16)}${help[flag]}`]);
|
|
90
110
|
};
|
|
91
111
|
exports.sketchFlagHelpOf = sketchFlagHelpOf;
|
|
92
|
-
const VERDICTS = new Set(['reject', 'reopen']);
|
|
112
|
+
const VERDICTS = new Set(['reject', 'reopen', 'withdraw']);
|
|
93
113
|
const WRITES = new Set([
|
|
94
114
|
'new',
|
|
115
|
+
'target',
|
|
95
116
|
'variant',
|
|
96
117
|
'round',
|
|
118
|
+
'note',
|
|
97
119
|
'report',
|
|
98
120
|
'ready',
|
|
99
121
|
'hold',
|
|
@@ -173,6 +195,10 @@ const created = (context) => {
|
|
|
173
195
|
return fail(unknown);
|
|
174
196
|
if (parsed === undefined || typeof parsed === 'string')
|
|
175
197
|
return fail((_a = exports.SKETCH_USAGE[0]) !== null && _a !== void 0 ? _a : '');
|
|
198
|
+
const name = args.values['--name'];
|
|
199
|
+
const named = name === undefined ? parsed : (0, sketch_1.parseTarget)(`${parsed.layer}/${parsed.name}@${name}`);
|
|
200
|
+
if (typeof named === 'string')
|
|
201
|
+
return fail(named);
|
|
176
202
|
const variants = ((_b = args.values['--variants']) !== null && _b !== void 0 ? _b : '').split(',').filter((variant) => variant !== '');
|
|
177
203
|
const notes = variantNotesOf((_c = args.repeated['--variant-note']) !== null && _c !== void 0 ? _c : [], variants);
|
|
178
204
|
if (typeof notes === 'string')
|
|
@@ -189,7 +215,7 @@ const created = (context) => {
|
|
|
189
215
|
return fail('pass --override or --into-base, not both');
|
|
190
216
|
const sketch = (0, sketch_1.createSketch)({
|
|
191
217
|
product,
|
|
192
|
-
sketch:
|
|
218
|
+
sketch: named,
|
|
193
219
|
others: others.filter((entry) => typeof entry !== 'string'),
|
|
194
220
|
variants,
|
|
195
221
|
roundTitle: args.values['--round'],
|
|
@@ -221,14 +247,17 @@ const nextStepsOf = (sketch, product) => {
|
|
|
221
247
|
return [
|
|
222
248
|
'Next:',
|
|
223
249
|
` sketch report ${at} --variant ${first} --by <model id> "<what you draw>" while you draw a variant`,
|
|
224
|
-
` sketch report ${at} --variant ${first} --by <model id> --done when you stop drawing it; no report runs yet, so none is needed now`,
|
|
225
250
|
...(running.note.trim() === ''
|
|
226
251
|
? [
|
|
227
252
|
` sketch round ${sketch.target} ${running.key} --product ${product} --note "<what the round shows>" --by <model id>`,
|
|
228
253
|
]
|
|
229
254
|
: []),
|
|
230
255
|
` sketch check ${at}`,
|
|
256
|
+
` shot ${sketch.targets[0]} --states --variants --product ${product} look at it: ready refuses a pixel diff without a viewed shot`,
|
|
231
257
|
` sketch ready ${at} --by <model id>`,
|
|
258
|
+
` 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`,
|
|
259
|
+
` a shared JSON file ready wrote (merged.json, go.json): commit it with \`et design commit-hunks <file> --part ${sketch.targets[0]}\`, never as a whole file another session also edits`,
|
|
260
|
+
theming_text_1.THEMING_TEXT,
|
|
232
261
|
];
|
|
233
262
|
};
|
|
234
263
|
const variantNotesOf = (pairs, variants) => {
|
|
@@ -332,8 +361,10 @@ const listed = (context) => {
|
|
|
332
361
|
? `, picked ${sketch.decision.variant}`
|
|
333
362
|
: ', discard asked'
|
|
334
363
|
: '';
|
|
335
|
-
const rejected = sketch.variants.filter((variant) => (0, sketch_1.rejectionOf)(sketch, variant));
|
|
336
|
-
|
|
364
|
+
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); });
|
|
365
|
+
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'; });
|
|
366
|
+
const extra = sketch.targets.slice(1);
|
|
367
|
+
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}` : ''}`);
|
|
337
368
|
for (const round of sketch.rounds) {
|
|
338
369
|
const variants = sketch.variants.filter((variant) => { var _a; return ((_a = sketch.variantInfo[variant]) === null || _a === void 0 ? void 0 : _a.round) === round.key; });
|
|
339
370
|
console.log(` ${round.key} ${round.title} ${variants.join(', ')}${round.note === '' ? '' : ` - ${round.note}`}${round.lost ? ` - lost: ${round.lost}` : ''}`);
|
|
@@ -350,16 +381,26 @@ const reported = (context) => withSketch(context, ({ sketch }) => {
|
|
|
350
381
|
const author = (0, cli_args_1.authorOf)(context.args);
|
|
351
382
|
const done = context.args.flags.has('--done');
|
|
352
383
|
if ((message === '' && !done) || !variant || !author)
|
|
353
|
-
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`);
|
|
384
|
+
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`);
|
|
354
385
|
if (done) {
|
|
386
|
+
const notReady = roundNoteRefusalOf(sketch) === null ? roundNotReadyProblemOf(sketch) : null;
|
|
387
|
+
if (notReady !== null)
|
|
388
|
+
return fail(notReady);
|
|
355
389
|
(0, sketch_1.finishSketchReport)({ checkout: context.target, sketch, variant });
|
|
356
390
|
console.log(`${sketch.target} variant ${variant} marked done`);
|
|
357
391
|
return 0;
|
|
358
392
|
}
|
|
359
|
-
const reported = (0, sketch_1.reportSketch)({
|
|
393
|
+
const reported = (0, sketch_1.reportSketch)({
|
|
394
|
+
checkout: context.target,
|
|
395
|
+
sketch,
|
|
396
|
+
variant,
|
|
397
|
+
author,
|
|
398
|
+
message,
|
|
399
|
+
reopen: context.args.flags.has('--reopen'),
|
|
400
|
+
});
|
|
360
401
|
if (typeof reported === 'string')
|
|
361
402
|
return fail(reported);
|
|
362
|
-
console.log(`reported on ${sketch.target} variant ${variant}: ${message}`);
|
|
403
|
+
console.log(`reported on ${sketch.target} variant ${variant}: ${message}${sketch.status === 'ready' ? ' - back in progress, mark it ready again when done' : ''}`);
|
|
363
404
|
return 0;
|
|
364
405
|
});
|
|
365
406
|
const ROUND_USAGE = 'usage: sketch round <layer>/<name> <round> [--title <text>] [--note <text>] [--drops <state,state>] --by <model id>';
|
|
@@ -382,6 +423,56 @@ const roundEdited = (context) => withSketch(context, ({ sketch }) => {
|
|
|
382
423
|
console.log(`${edited.target} round ${round}: ${(_b = entry === null || entry === void 0 ? void 0 : entry.title) !== null && _b !== void 0 ? _b : ''}${(entry === null || entry === void 0 ? void 0 : entry.note) ? ` - ${entry.note}` : ''}${(entry === null || entry === void 0 ? void 0 : entry.lost) ? ` - lost: ${entry.lost}` : ''}${(entry === null || entry === void 0 ? void 0 : entry.drops) ? ` - drops ${entry.drops.join(', ')}` : ''}`);
|
|
383
424
|
return 0;
|
|
384
425
|
});
|
|
426
|
+
const noteEdited = (context) => withSketch(context, ({ sketch }) => {
|
|
427
|
+
const [, variant, ...words] = context.args.positional;
|
|
428
|
+
const note = words.join(' ').trim();
|
|
429
|
+
if (!variant || note === '')
|
|
430
|
+
return fail(`usage: ${exports.SKETCH_USAGE.find((line) => line.startsWith('sketch note '))}`);
|
|
431
|
+
const edited = (0, sketch_1.editVariantNote)({ sketch, variant, note });
|
|
432
|
+
if (typeof edited === 'string')
|
|
433
|
+
return fail(edited);
|
|
434
|
+
console.log(`${edited.target} variant ${variant}: ${note}`);
|
|
435
|
+
return 0;
|
|
436
|
+
});
|
|
437
|
+
const targetRemoved = (context) => {
|
|
438
|
+
const usage = `usage: ${exports.SKETCH_USAGE.find((line) => line.startsWith('sketch target remove'))}`;
|
|
439
|
+
const rest = context.args.positional.slice(1);
|
|
440
|
+
const [, part] = rest;
|
|
441
|
+
if (rest.length !== 2 || !part)
|
|
442
|
+
return fail(usage);
|
|
443
|
+
const parsed = (0, sketch_1.parseTarget)(part);
|
|
444
|
+
if (typeof parsed === 'string')
|
|
445
|
+
return fail(parsed);
|
|
446
|
+
return withSketch(Object.assign(Object.assign({}, context), { args: Object.assign(Object.assign({}, context.args), { positional: rest }) }), ({ sketch }) => {
|
|
447
|
+
const removed = (0, sketch_1.removeTarget)({ sketch, part: parsed });
|
|
448
|
+
if (typeof removed === 'string')
|
|
449
|
+
return fail(removed);
|
|
450
|
+
(0, check_format_1.formatSketch)({ target: context.target, sketch: removed, variants: removed.variants });
|
|
451
|
+
console.log(`${removed.target} now targets ${removed.targets.join(', ')}`);
|
|
452
|
+
return 0;
|
|
453
|
+
});
|
|
454
|
+
};
|
|
455
|
+
const targetAdded = (context) => {
|
|
456
|
+
const [action, ...rest] = context.args.positional;
|
|
457
|
+
const [, part] = rest;
|
|
458
|
+
const usage = `usage: ${exports.SKETCH_USAGE.find((line) => line.startsWith('sketch target '))}`;
|
|
459
|
+
if (action === 'remove')
|
|
460
|
+
return targetRemoved(context);
|
|
461
|
+
if (action !== 'add' || rest.length !== 2 || !part)
|
|
462
|
+
return fail(usage);
|
|
463
|
+
const parsed = (0, sketch_1.parseTarget)(part);
|
|
464
|
+
if (typeof parsed === 'string')
|
|
465
|
+
return fail(parsed);
|
|
466
|
+
return withSketch(Object.assign(Object.assign({}, context), { args: Object.assign(Object.assign({}, context.args), { positional: rest }) }), ({ product, sketch }) => {
|
|
467
|
+
var _a;
|
|
468
|
+
const added = (0, sketch_1.addTarget)({ product, sketch, part: parsed, author: (_a = (0, cli_args_1.authorOf)(context.args)) !== null && _a !== void 0 ? _a : undefined });
|
|
469
|
+
if (typeof added === 'string')
|
|
470
|
+
return fail(added);
|
|
471
|
+
(0, check_format_1.formatSketch)({ target: context.target, sketch: added, variants: added.variants });
|
|
472
|
+
console.log(`${added.target} now targets ${added.targets.join(', ')}`);
|
|
473
|
+
return 0;
|
|
474
|
+
});
|
|
475
|
+
};
|
|
385
476
|
const readied = (context) => {
|
|
386
477
|
const found = productAndSketchOf(context);
|
|
387
478
|
if (typeof found === 'string')
|
|
@@ -392,23 +483,64 @@ const readied = (context) => {
|
|
|
392
483
|
const refused = readyRefusalOf(context, found);
|
|
393
484
|
if (refused !== null)
|
|
394
485
|
return refused;
|
|
395
|
-
return
|
|
486
|
+
return renderedAndReady(context, found);
|
|
396
487
|
};
|
|
488
|
+
const renderedAndReady = (context, found) => __awaiter(void 0, void 0, void 0, function* () {
|
|
489
|
+
var _a;
|
|
490
|
+
const { product, sketch } = found;
|
|
491
|
+
const rendered = yield renderedVariantsOf({
|
|
492
|
+
target: context.target,
|
|
493
|
+
config: context.config,
|
|
494
|
+
product,
|
|
495
|
+
entries: sketch.variants.filter((variant) => !(0, sketch_1.rejectionOf)(sketch, variant)).map((variant) => ({ sketch, variant })),
|
|
496
|
+
drawn: false,
|
|
497
|
+
});
|
|
498
|
+
if ('issues' in rendered && rendered.issues.length > 0)
|
|
499
|
+
return fail(`${sketch.target} has problems - fix them before ready`);
|
|
500
|
+
const busyAdded = 'issues' in rendered ? openPointLinesOf({ product, sketch, busy: (_a = rendered.busy) !== null && _a !== void 0 ? _a : [] }).added : [];
|
|
501
|
+
if (busyAdded.length > 0)
|
|
502
|
+
return fail(`${busyAdded.join('\n')}\n${sketch.target} adds open points - close them before ready`);
|
|
503
|
+
return loadedAndReady(context, found);
|
|
504
|
+
});
|
|
397
505
|
const loadedAndReady = (context_1, _a) => __awaiter(void 0, [context_1, _a], void 0, function* (context, { product, sketch }) {
|
|
398
|
-
var _b;
|
|
399
|
-
const unloaded = yield (
|
|
506
|
+
var _b, _c;
|
|
507
|
+
const unloaded = yield unloadedLinesOf({ target: context.target, config: context.config, product, sketch });
|
|
400
508
|
if (unloaded.length > 0)
|
|
401
|
-
return fail(`${unloaded.
|
|
509
|
+
return fail(`${unloaded.join('\n')}\n${sketch.target} does not load - fix it before ready`);
|
|
510
|
+
const drifts = yield (0, ready_shots_1.sampleMarkDriftLines)({ target: context.target, config: context.config, product, sketch });
|
|
511
|
+
if (drifts.length > 0)
|
|
512
|
+
return fail(`${drifts.join('\n')}\n${sketch.target} draws one sample with different marks - align them before ready`);
|
|
513
|
+
const identical = yield (0, ready_shots_1.identicalRenderLines)({ target: context.target, config: context.config, product, sketch });
|
|
514
|
+
if (identical.length > 0)
|
|
515
|
+
return fail(`${identical.join('\n')}\n${sketch.target} draws variants alike - fix them before ready`);
|
|
516
|
+
const changes = sketch.targets.every((key) => product.parts.some((part) => (0, resolve_product_1.partKeyOf)(part) === key))
|
|
517
|
+
? yield (0, ready_shots_1.variantChangesShown)({ target: context.target, config: context.config, product, sketch })
|
|
518
|
+
: null;
|
|
519
|
+
const unviewed = Array.isArray(changes)
|
|
520
|
+
? (0, viewed_shots_1.unviewedShotLinesOf)({
|
|
521
|
+
target: context.target,
|
|
522
|
+
invocation: (_b = context.invocation) !== null && _b !== void 0 ? _b : (0, invocation_1.repoInvocation)({ root: context.target, subcommand: 'design' }),
|
|
523
|
+
sketch,
|
|
524
|
+
changes,
|
|
525
|
+
})
|
|
526
|
+
: [];
|
|
527
|
+
if (unviewed.length > 0)
|
|
528
|
+
return fail(`${unviewed.join('\n')}\n${sketch.target} draws a pixel diff - view its shot before ready`);
|
|
402
529
|
const ready = sketch.status === 'ready'
|
|
403
530
|
? sketch
|
|
404
|
-
: (0, sketch_1.markSketchReady)({ checkout: context.target, sketch, author: (
|
|
531
|
+
: (0, sketch_1.markSketchReady)({ checkout: context.target, sketch, author: (_c = (0, cli_args_1.authorOf)(context.args)) !== null && _c !== void 0 ? _c : undefined });
|
|
405
532
|
if (typeof ready === 'string')
|
|
406
533
|
return fail(ready);
|
|
407
|
-
return autoMerged({ context, product, sketch: ready, again: sketch.status === 'ready' });
|
|
534
|
+
return autoMerged({ context, product, sketch: ready, again: sketch.status === 'ready', changes });
|
|
408
535
|
});
|
|
409
|
-
const
|
|
536
|
+
const stillReady = (options) => {
|
|
537
|
+
if (options.again)
|
|
538
|
+
console.log(`${options.sketch.target} is still ready`);
|
|
539
|
+
return 0;
|
|
540
|
+
};
|
|
541
|
+
const autoMerged = (options) => {
|
|
410
542
|
var _a, _b;
|
|
411
|
-
const { context, product, sketch, again } = options;
|
|
543
|
+
const { context, product, sketch, again, changes } = options;
|
|
412
544
|
if (!again)
|
|
413
545
|
console.log(`${sketch.target} is ready`);
|
|
414
546
|
for (const variant of sketch.variants.filter((candidate) => !(0, sketch_1.rejectionOf)(sketch, candidate))) {
|
|
@@ -416,50 +548,120 @@ const autoMerged = (options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
416
548
|
if (shared.length > 0)
|
|
417
549
|
console.log(`variant ${variant}: a shared/ edit reaches ${shared.join(', ')}`);
|
|
418
550
|
}
|
|
419
|
-
if (
|
|
551
|
+
if (changes === null) {
|
|
420
552
|
console.log('auto-merge skipped: new part, the user merges');
|
|
421
|
-
return
|
|
553
|
+
return stillReady({ sketch, again });
|
|
422
554
|
}
|
|
423
|
-
const noChange =
|
|
555
|
+
const noChange = typeof changes === 'string' ? changes : (0, no_visible_change_1.noChangeOf)(changes);
|
|
424
556
|
if (noChange !== true) {
|
|
425
557
|
console.log(`auto-merge skipped: ${noChange}`);
|
|
426
|
-
return
|
|
558
|
+
return stillReady({ sketch, again });
|
|
427
559
|
}
|
|
428
560
|
const author = (_a = (0, cli_args_1.authorOf)(context.args)) !== null && _a !== void 0 ? _a : undefined;
|
|
429
561
|
const variant = (_b = sketch.variants.find((candidate) => !(0, sketch_1.rejectionOf)(sketch, candidate))) !== null && _b !== void 0 ? _b : '';
|
|
562
|
+
const sketchFile = (0, path_1.resolve)(sketch.dir, sketch_1.SKETCH_FILE);
|
|
563
|
+
const undecided = (0, fs_1.readFileSync)(sketchFile, 'utf8');
|
|
430
564
|
const decided = (0, sketch_1.decideSketch)({ sketch, decision: { kind: 'pick', variant } });
|
|
431
565
|
if (typeof decided === 'string')
|
|
432
566
|
return fail(decided);
|
|
433
|
-
const
|
|
567
|
+
const written = sharedFilesOf(product);
|
|
568
|
+
const before = written.map((file) => contentOf(file));
|
|
569
|
+
const result = (0, merge_1.mergeSketch)({
|
|
570
|
+
target: context.target,
|
|
571
|
+
config: context.config,
|
|
572
|
+
product,
|
|
573
|
+
sketch: decided,
|
|
574
|
+
author,
|
|
575
|
+
decidedBy: 'auto: no visible change',
|
|
576
|
+
});
|
|
434
577
|
if (!Array.isArray(result)) {
|
|
578
|
+
(0, fs_1.writeFileSync)(sketchFile, undecided);
|
|
435
579
|
console.warn(`${sketch.target} shows no visible change but did not merge: ${result.reason}`);
|
|
436
580
|
return 0;
|
|
437
581
|
}
|
|
438
|
-
for (const part of sketch.targets)
|
|
439
|
-
(0, merged_parts_1.recordAutoMerge)({ product, part, by: author !== null && author !== void 0 ? author : 'user' });
|
|
440
582
|
console.log(`No visible change in any state: merged ${sketch.targets.join(', ')} automatically.`);
|
|
583
|
+
commitHunksLines({
|
|
584
|
+
target: context.target,
|
|
585
|
+
files: written.filter((file, index) => contentOf(file) !== before[index]),
|
|
586
|
+
parts: sketch.targets,
|
|
587
|
+
}).forEach((line) => console.log(line));
|
|
441
588
|
return 0;
|
|
442
|
-
}
|
|
589
|
+
};
|
|
590
|
+
const contentOf = (file) => ((0, fs_1.existsSync)(file) ? (0, fs_1.readFileSync)(file, 'utf8') : null);
|
|
591
|
+
const sharedFilesOf = (product) => [
|
|
592
|
+
(0, path_1.resolve)(product.dir, merged_parts_1.MERGED_FILE),
|
|
593
|
+
...(product.base ? [(0, path_1.resolve)(product.base.dir, merged_parts_1.MERGED_FILE)] : []),
|
|
594
|
+
];
|
|
595
|
+
const commitHunksLines = ({ target, files, parts }) => files.length === 0
|
|
596
|
+
? []
|
|
597
|
+
: [
|
|
598
|
+
'Shared files written; commit only the hunks of this sketch, never the whole file another session also edits:',
|
|
599
|
+
...files.map((file) => ` et design commit-hunks ${(0, path_1.relative)(target, file)} ${parts.map((part) => `--part ${part}`).join(' ')}`),
|
|
600
|
+
];
|
|
601
|
+
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)`));
|
|
602
|
+
const variantGateProblemsOf = (options) => [...options.problems, ...(0, check_format_1.formatProblemsOf)(options), ...(0, unused_closure_1.unusedInVariantOf)(options)];
|
|
603
|
+
const busyOfVariant = (busy, sketch) => busy
|
|
604
|
+
.filter((entry) => { var _a; return ((_a = entry.sketch) === null || _a === void 0 ? void 0 : _a.target) === sketch.target && entry.sketch.variant === sketch.variant; })
|
|
605
|
+
.map(({ part, state }) => ({ part, state }));
|
|
606
|
+
const openPointLinesOf = ({ product, sketch, busy = [], }) => {
|
|
607
|
+
const pointLinesOf = (variant, list) => (0, open_points_1.openPointsText)(product.name, list)
|
|
608
|
+
.slice(1)
|
|
609
|
+
.map((line) => `${sketch.target} ${variant}: ${line.trim()}`);
|
|
610
|
+
const points = sketch.variants
|
|
611
|
+
.filter((variant) => !(0, sketch_1.rejectionOf)(sketch, variant))
|
|
612
|
+
.map((variant) => (Object.assign({ variant }, (0, read_open_points_1.sketchOpenPointsOf)({
|
|
613
|
+
merged: product,
|
|
614
|
+
variant: (0, overlay_1.overlaySketch)({ product, sketch, variant }),
|
|
615
|
+
targets: sketch.targets,
|
|
616
|
+
busy: { merged: [], variant: busyOfVariant(busy, { target: sketch.target, variant }) },
|
|
617
|
+
}))));
|
|
618
|
+
return {
|
|
619
|
+
added: points.flatMap(({ variant, added }) => pointLinesOf(variant, added)),
|
|
620
|
+
inherited: points.flatMap(({ variant, inherited }) => pointLinesOf(variant, inherited)),
|
|
621
|
+
};
|
|
622
|
+
};
|
|
623
|
+
const roundNoteRefusalOf = (sketch) => {
|
|
624
|
+
const running = (0, sketch_1.runningRoundOf)(sketch);
|
|
625
|
+
return running.note.trim() === ''
|
|
626
|
+
? `${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>`
|
|
627
|
+
: null;
|
|
628
|
+
};
|
|
629
|
+
const roundNotReadyProblemOf = (sketch) => sketch.status === 'ready' || sketch.hold
|
|
630
|
+
? null
|
|
631
|
+
: `ROUND-NOT-READY ${sketch.target}: round ${(0, sketch_1.runningRoundOf)(sketch).key} is drawn but still in progress - run \`design sketch ready ${sketch.target}\``;
|
|
632
|
+
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}`); });
|
|
443
633
|
const readyRefusalOf = (context, { product, sketch }) => {
|
|
444
634
|
const lineOf = (variant, problem) => `${sketch.target} ${variant}: ${problem.rule} ${(0, path_1.relative)(context.target, problem.file)}: ${problem.message}`;
|
|
445
635
|
const found = (0, check_sketches_1.variantProblemsOf)({ product, sketch });
|
|
446
|
-
found.forEach((
|
|
447
|
-
const problems = found
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
...((0, sketch_1.rejectionOf)(sketch, variant) ? [] : (0, unused_closure_1.unusedInVariantOf)({ product, sketch, variant })),
|
|
451
|
-
].map((problem) => lineOf(variant, problem)));
|
|
636
|
+
found.forEach((entry) => noteProblemsBefore(Object.assign({ target: context.target }, entry)));
|
|
637
|
+
const problems = found
|
|
638
|
+
.filter(({ variant }) => !(0, sketch_1.rejectionOf)(sketch, variant))
|
|
639
|
+
.flatMap(({ variant, problems }) => variantGateProblemsOf({ target: context.target, product, sketch, variant, problems }).map((problem) => lineOf(variant, problem)));
|
|
452
640
|
sketch.variants.forEach((variant) => (0, check_sketches_1.variantWarningsOf)({ target: context.target, product, sketch, variant }).forEach((warning) => console.warn(`${sketch.target} ${variant}: ${warning}`)));
|
|
453
641
|
if (problems.length > 0)
|
|
454
642
|
return fail(`${problems.join('\n')}\n${sketch.target} has problems - fix them before ready`);
|
|
455
|
-
const
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
643
|
+
const { added, inherited } = openPointLinesOf({ product, sketch });
|
|
644
|
+
inherited.forEach((line) => console.log(`NOTE ${line} (inherited from the merged part)`));
|
|
645
|
+
sketch.variants
|
|
646
|
+
.filter((variant) => !(0, sketch_1.rejectionOf)(sketch, variant))
|
|
647
|
+
.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}`)));
|
|
648
|
+
if (added.length > 0)
|
|
649
|
+
return fail(`${added.join('\n')}\n${sketch.target} adds open points - close them before ready`);
|
|
650
|
+
const noNote = roundNoteRefusalOf(sketch);
|
|
651
|
+
return noNote === null ? null : fail(noNote);
|
|
459
652
|
};
|
|
460
653
|
const rebased = (context) => withSketch(context, ({ product, sketch }) => {
|
|
654
|
+
const kept = context.args.flags.has('--ported');
|
|
655
|
+
const { ported, conflicts } = (0, rebase_port_1.portBaseChanges)({ target: context.target, product, sketch, keepConflicts: kept });
|
|
656
|
+
if (kept)
|
|
657
|
+
conflicts.forEach((line) => console.log(`KEPT ${line} (ported by hand)`));
|
|
658
|
+
else if (conflicts.length > 0)
|
|
659
|
+
return fail(`${conflicts.join('\n')}\n${sketch.target} not rebased - port these by hand, then run sketch rebase again`);
|
|
660
|
+
ported.forEach(({ variant, file, how }) => console.log(`PORTED ${variant}: ${file} (${how})`));
|
|
461
661
|
(0, sketch_1.rebaseSketch)({ product, sketch });
|
|
462
662
|
console.log(`${sketch.target} now compares with the product as it is`);
|
|
663
|
+
if (ported.length > 0 && sketch.status === 'ready')
|
|
664
|
+
console.log(`variants changed - run sketch ready ${sketch.target} to check them again`);
|
|
463
665
|
return 0;
|
|
464
666
|
});
|
|
465
667
|
const held = (context) => withSketch(context, ({ sketch }) => {
|
|
@@ -481,17 +683,73 @@ const released = (context) => withSketch(context, ({ sketch }) => {
|
|
|
481
683
|
console.log(`${freed.target} is no longer held - mark it ready once the change is in`);
|
|
482
684
|
return 0;
|
|
483
685
|
});
|
|
686
|
+
const beforeLinesOf = ({ sketches, before }) => [...new Set(sketches)].flatMap((sketch) => (0, render_check_1.groupedIssueLinesOf)(before
|
|
687
|
+
.filter((issue) => sketch.targets.includes(issue.part))
|
|
688
|
+
.map((issue) => (Object.assign(Object.assign({}, issue), { sketch: { target: sketch.target, variant: 'before' } })))));
|
|
689
|
+
exports.beforeLinesOf = beforeLinesOf;
|
|
690
|
+
const renderedVariantsOf = (_a) => __awaiter(void 0, [_a], void 0, function* ({ target, config, product, entries, drawn, }) {
|
|
691
|
+
var _b, _c, _d;
|
|
692
|
+
const rendered = yield (0, render_check_1.renderIssuesOf)({
|
|
693
|
+
target,
|
|
694
|
+
config,
|
|
695
|
+
jobs: entries.map(({ sketch, variant }) => {
|
|
696
|
+
const preview = (0, merge_preview_1.mergePreviewOf)({ product, sketch, variant });
|
|
697
|
+
return {
|
|
698
|
+
product: product.name,
|
|
699
|
+
sketch: { target: sketch.target, variant },
|
|
700
|
+
parts: [...preview.changed, ...preview.affected],
|
|
701
|
+
};
|
|
702
|
+
}),
|
|
703
|
+
before: [...new Set(entries.flatMap(({ sketch }) => sketch.targets))].map((part) => ({
|
|
704
|
+
product: product.name,
|
|
705
|
+
part,
|
|
706
|
+
})),
|
|
707
|
+
});
|
|
708
|
+
if ('unavailable' in rendered)
|
|
709
|
+
console.log(`RENDER CHECK SKIPPED - ${rendered.unavailable}`);
|
|
710
|
+
else {
|
|
711
|
+
for (const { sketch, part, state, size } of drawn ? rendered.drawn : []) {
|
|
712
|
+
const rules = [
|
|
713
|
+
...new Set(rendered.issues
|
|
714
|
+
.filter((issue) => {
|
|
715
|
+
var _a, _b;
|
|
716
|
+
return ((_a = issue.sketch) === null || _a === void 0 ? void 0 : _a.target) === (sketch === null || sketch === void 0 ? void 0 : sketch.target) &&
|
|
717
|
+
((_b = issue.sketch) === null || _b === void 0 ? void 0 : _b.variant) === (sketch === null || sketch === void 0 ? void 0 : sketch.variant) &&
|
|
718
|
+
issue.part === part &&
|
|
719
|
+
issue.state === state &&
|
|
720
|
+
issue.size === size;
|
|
721
|
+
})
|
|
722
|
+
.map((issue) => issue.rule)),
|
|
723
|
+
];
|
|
724
|
+
console.log(`${(_b = sketch === null || sketch === void 0 ? void 0 : sketch.target) !== null && _b !== void 0 ? _b : ''} ${(_c = sketch === null || sketch === void 0 ? void 0 : sketch.variant) !== null && _c !== void 0 ? _c : ''}: ${part} ${state} at ${size} ${rules.join(' ') || 'ok'}`);
|
|
725
|
+
}
|
|
726
|
+
if (drawn)
|
|
727
|
+
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}`); });
|
|
728
|
+
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)}`); });
|
|
729
|
+
(0, render_check_1.groupedIssueLinesOf)(rendered.issues).forEach((line) => console.error(line));
|
|
730
|
+
(0, exports.beforeLinesOf)({ sketches: entries.map((entry) => entry.sketch), before: (_d = rendered.before) !== null && _d !== void 0 ? _d : [] }).forEach((line) => console.log(line));
|
|
731
|
+
}
|
|
732
|
+
return rendered;
|
|
733
|
+
});
|
|
484
734
|
const checked = (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
485
|
-
var _a, _b;
|
|
735
|
+
var _a, _b, _c;
|
|
486
736
|
const { target, config, args } = context;
|
|
487
737
|
const product = sketchProductOf(context);
|
|
488
738
|
if (typeof product === 'string')
|
|
489
739
|
return fail(product);
|
|
490
740
|
const asked = args.positional[0];
|
|
491
741
|
const { unreadable, variants } = (0, check_sketches_1.openSketchProblemsOf)(product);
|
|
492
|
-
const
|
|
493
|
-
if (asked !== undefined &&
|
|
742
|
+
const named = asked === undefined ? variants : variants.filter((entry) => entry.sketch.target === asked);
|
|
743
|
+
if (asked !== undefined && named.length === 0)
|
|
494
744
|
return fail(`NO SKETCH on ${asked} in ${product.name}`);
|
|
745
|
+
const isSkipped = ({ sketch, variant }) => Boolean((0, sketch_1.rejectionOf)(sketch, variant));
|
|
746
|
+
const chosen = named.filter((entry) => !isSkipped(entry));
|
|
747
|
+
named
|
|
748
|
+
.filter(isSkipped)
|
|
749
|
+
.forEach(({ sketch, variant }) => {
|
|
750
|
+
var _a;
|
|
751
|
+
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`);
|
|
752
|
+
});
|
|
495
753
|
if (args.flags.has('--fix'))
|
|
496
754
|
new Set(chosen.map((entry) => entry.sketch)).forEach((sketch) => (0, check_format_1.formatSketch)({ target, sketch, variants: sketch.variants }));
|
|
497
755
|
let failed = asked === undefined && unreadable.length > 0;
|
|
@@ -501,13 +759,19 @@ const checked = (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
501
759
|
if (sketch.hold)
|
|
502
760
|
console.warn(`HELD ${sketch.target}: until ${sketch.hold.until}`);
|
|
503
761
|
});
|
|
762
|
+
const stale = (0, check_system_1.staleSketchBasesOf)({
|
|
763
|
+
product,
|
|
764
|
+
invocation: (_a = context.invocation) !== null && _a !== void 0 ? _a : (0, invocation_1.repoInvocation)({ root: target, subcommand: 'design' }),
|
|
765
|
+
targets: new Set(chosen.map((entry) => entry.sketch.target)),
|
|
766
|
+
});
|
|
767
|
+
stale.forEach((problem) => console.error(problem.line));
|
|
768
|
+
failed || (failed = stale.length > 0);
|
|
504
769
|
for (const { sketch, variant, problems, before } of chosen) {
|
|
505
770
|
const typed = (0, check_sketches_1.typecheckVariant)({ target, product, sketch, variant });
|
|
506
|
-
|
|
771
|
+
noteProblemsBefore({ target, sketch, variant, before });
|
|
507
772
|
(0, check_sketches_1.variantWarningsOf)({ target, product, sketch, variant }).forEach((warning) => console.warn(`${sketch.target} ${variant}: ${warning}`));
|
|
508
773
|
const all = [
|
|
509
|
-
...problems,
|
|
510
|
-
...(0, check_format_1.formatProblemsOf)({ target, sketch, variant }),
|
|
774
|
+
...variantGateProblemsOf({ target, product, sketch, variant, problems }),
|
|
511
775
|
...(typed.kind === 'failed' ? [{ rule: 'TYPE-ERROR', file: sketch.dir, message: `\n${typed.output}` }] : []),
|
|
512
776
|
...(typed.kind === 'unavailable' ? [{ rule: 'NO-TYPE-CHECKER', file: sketch.dir, message: typed.message }] : []),
|
|
513
777
|
];
|
|
@@ -516,45 +780,63 @@ const checked = (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
516
780
|
}
|
|
517
781
|
failed || (failed = all.length > 0);
|
|
518
782
|
}
|
|
519
|
-
if (failed)
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
.
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
783
|
+
if (!failed)
|
|
784
|
+
for (const sketch of new Set(chosen.map((entry) => entry.sketch)))
|
|
785
|
+
(yield (0, ready_shots_1.aktuellPlaceholderWarnings)({ target, config, product, sketch })).forEach((warning) => console.warn(warning));
|
|
786
|
+
const rendered = failed
|
|
787
|
+
? null
|
|
788
|
+
: yield renderedVariantsOf({
|
|
789
|
+
target,
|
|
790
|
+
config,
|
|
791
|
+
product,
|
|
792
|
+
entries: chosen,
|
|
793
|
+
drawn: true,
|
|
794
|
+
});
|
|
795
|
+
const busy = rendered !== null && 'issues' in rendered ? ((_b = rendered.busy) !== null && _b !== void 0 ? _b : []) : [];
|
|
796
|
+
if (rendered !== null && 'issues' in rendered)
|
|
797
|
+
(0, frame_budget_1.frameBudgetWarningsOf)({
|
|
798
|
+
drawn: rendered.drawn,
|
|
799
|
+
targets: [...new Set(chosen.map((entry) => entry.sketch))].map((sketch) => {
|
|
800
|
+
var _a;
|
|
801
|
+
return ({
|
|
802
|
+
target: sketch.target,
|
|
803
|
+
part: (_a = sketch.targets[0]) !== null && _a !== void 0 ? _a : sketch.target,
|
|
804
|
+
});
|
|
805
|
+
}),
|
|
806
|
+
}).forEach((warning) => console.warn(warning));
|
|
807
|
+
let refused = 0;
|
|
808
|
+
let notReady = false;
|
|
809
|
+
const refuse = (lines) => {
|
|
810
|
+
lines.forEach((line) => console.warn(`ready will refuse: ${line}`));
|
|
811
|
+
refused += lines.length;
|
|
812
|
+
};
|
|
813
|
+
for (const sketch of new Set(chosen.map((entry) => entry.sketch))) {
|
|
814
|
+
const unloaded = yield unloadedLinesOf({ target, config, product, sketch });
|
|
815
|
+
const before = refused;
|
|
816
|
+
refuse([
|
|
817
|
+
...unloaded,
|
|
818
|
+
...openPointLinesOf({ product, sketch, busy }).added,
|
|
819
|
+
...[(_c = roundNoteRefusalOf(sketch)) !== null && _c !== void 0 ? _c : []].flat(),
|
|
820
|
+
]);
|
|
821
|
+
if (!failed && unloaded.length === 0) {
|
|
822
|
+
refuse(yield (0, ready_shots_1.sampleMarkDriftLines)({ target, config, product, sketch }));
|
|
823
|
+
refuse(yield (0, ready_shots_1.identicalRenderLines)({ target, config, product, sketch }));
|
|
824
|
+
}
|
|
825
|
+
if (!failed && refused === before) {
|
|
826
|
+
const problem = roundNotReadyProblemOf(sketch);
|
|
827
|
+
if (problem !== null) {
|
|
828
|
+
console.error(problem);
|
|
829
|
+
notReady = true;
|
|
830
|
+
}
|
|
550
831
|
}
|
|
551
|
-
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}`); });
|
|
552
|
-
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)}`); });
|
|
553
|
-
rendered.issues.forEach((issue) => { var _a, _b, _c, _d; return console.error(`${(_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 : ''}: ${(0, render_check_1.renderIssueLineOf)(issue)}`); });
|
|
554
832
|
}
|
|
555
|
-
if (
|
|
833
|
+
if (failed)
|
|
556
834
|
return 1;
|
|
557
|
-
|
|
835
|
+
if (rendered !== null && 'issues' in rendered && rendered.issues.length > 0)
|
|
836
|
+
return 1;
|
|
837
|
+
if (notReady)
|
|
838
|
+
return 1;
|
|
839
|
+
console.log(refused > 0 ? `check ok - ready will refuse ${refused} (see above)` : 'ok');
|
|
558
840
|
return 0;
|
|
559
841
|
});
|
|
560
842
|
const previewed = (context) => withSketch(context, ({ product, sketch }) => {
|
|
@@ -573,39 +855,33 @@ const previewed = (context) => withSketch(context, ({ product, sketch }) => {
|
|
|
573
855
|
}
|
|
574
856
|
return 0;
|
|
575
857
|
});
|
|
576
|
-
const allowedMergeOf = (options) => {
|
|
577
|
-
const { sketch, variant } = options;
|
|
578
|
-
const live = sketch.variants.filter((candidate) => !(0, sketch_1.rejectionOf)(sketch, candidate));
|
|
579
|
-
if (live.length !== 1 || live[0] !== variant)
|
|
580
|
-
return `${sketch.target} has ${live.length} live variants (${live.join(', ') || 'none'}), not only "${variant}" - the user picks in Studio`;
|
|
581
|
-
return (0, sketch_1.decideSketch)({ sketch, decision: { kind: 'pick', variant } });
|
|
582
|
-
};
|
|
583
858
|
const merged = (context) => withSketch(context, ({ product, sketch }) => {
|
|
584
|
-
var _a, _b
|
|
859
|
+
var _a, _b;
|
|
585
860
|
const { '--note': note, '--variant': flagVariant, '--allowed-by': planRef } = context.args.values;
|
|
861
|
+
const replaceNote = context.args.flags.has('--replace-note');
|
|
586
862
|
if (context.args.positional.length > 1)
|
|
587
863
|
return fail(`usage: sketch merge <layer>/<name> [--note <reason>] - it merges the variant the user picked`);
|
|
864
|
+
if (replaceNote && (note !== null && note !== void 0 ? note : '').trim() === '')
|
|
865
|
+
return fail('--replace-note needs --note <the new part note>');
|
|
588
866
|
if ((flagVariant === undefined) !== (planRef === undefined))
|
|
589
867
|
return fail('--variant and --allowed-by go together: name the only live variant and the plan that allows the merge');
|
|
590
|
-
const
|
|
591
|
-
const
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
const result = (0,
|
|
868
|
+
const by = (_a = (0, cli_args_1.authorOf)(context.args)) !== null && _a !== void 0 ? _a : undefined;
|
|
869
|
+
const allowed = flagVariant !== undefined && planRef !== undefined && ((_b = sketch.decision) === null || _b === void 0 ? void 0 : _b.kind) !== 'pick'
|
|
870
|
+
? { variant: flagVariant, planRef }
|
|
871
|
+
: undefined;
|
|
872
|
+
const result = (0, merge_step_1.mergeAndRecord)({
|
|
595
873
|
target: context.target,
|
|
596
874
|
config: context.config,
|
|
597
875
|
product,
|
|
598
|
-
sketch
|
|
876
|
+
sketch,
|
|
599
877
|
note,
|
|
600
|
-
|
|
878
|
+
replaceNote,
|
|
879
|
+
by,
|
|
880
|
+
allowed,
|
|
601
881
|
});
|
|
602
|
-
if (
|
|
603
|
-
return fail(result
|
|
604
|
-
|
|
605
|
-
for (const part of sketch.targets)
|
|
606
|
-
(0, merged_parts_1.recordAllowedMerge)({ product, part, by: (_c = (0, cli_args_1.authorOf)(context.args)) !== null && _c !== void 0 ? _c : 'user', planRef: planRef.trim() });
|
|
607
|
-
const variant = ((_d = decidedSketch.decision) === null || _d === void 0 ? void 0 : _d.kind) === 'pick' ? decidedSketch.decision.variant : '';
|
|
608
|
-
console.log(`merged ${sketch.target} variant ${variant} into ${product.name}: ${result.join(', ')}`);
|
|
882
|
+
if (typeof result === 'string')
|
|
883
|
+
return fail(result);
|
|
884
|
+
console.log(`merged ${sketch.target} variant ${result.variant} into ${product.name}: ${result.parts.join(', ')}`);
|
|
609
885
|
return 0;
|
|
610
886
|
});
|
|
611
887
|
const discarded = (context) => withSketch(context, ({ sketch }) => {
|
|
@@ -619,27 +895,37 @@ const discarded = (context) => withSketch(context, ({ sketch }) => {
|
|
|
619
895
|
const verdictOriginOf = (by, of) => of && of !== by ? ` (reason by the ${of})` : '';
|
|
620
896
|
/** The verdicts a variant had, oldest first, and whether it is rejected now. */
|
|
621
897
|
const verdictLinesOf = (sketch, variant) => {
|
|
622
|
-
var _a, _b;
|
|
898
|
+
var _a, _b, _c;
|
|
623
899
|
const history = (_b = (_a = sketch.rejections) === null || _a === void 0 ? void 0 : _a[variant]) !== null && _b !== void 0 ? _b : [];
|
|
624
|
-
const lines = history.flatMap((rejection) =>
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
?
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
900
|
+
const lines = history.flatMap((rejection) => {
|
|
901
|
+
var _a;
|
|
902
|
+
return [
|
|
903
|
+
` ${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}` : ''}`,
|
|
904
|
+
...(rejection.reopened
|
|
905
|
+
? [
|
|
906
|
+
` reopened by the ${rejection.reopened.by} at ${rejection.reopened.decidedAt}${rejection.reopened.reason ? `: ${rejection.reopened.reason}` : ''}`,
|
|
907
|
+
]
|
|
908
|
+
: []),
|
|
909
|
+
];
|
|
910
|
+
});
|
|
911
|
+
return [
|
|
912
|
+
`${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'}`,
|
|
913
|
+
...lines,
|
|
914
|
+
];
|
|
633
915
|
};
|
|
634
916
|
exports.verdictLinesOf = verdictLinesOf;
|
|
635
917
|
const judged = (kind) => (context) => withSketch(context, ({ sketch }) => {
|
|
636
|
-
var _a;
|
|
918
|
+
var _a, _b;
|
|
637
919
|
const { positional, values } = context.args;
|
|
638
920
|
const variant = values['--variant'];
|
|
639
921
|
const reason = ((_a = values['--reason']) === null || _a === void 0 ? void 0 : _a.trim()) || undefined;
|
|
640
|
-
const
|
|
922
|
+
const author = (_b = (0, cli_args_1.authorOf)(context.args)) !== null && _b !== void 0 ? _b : '';
|
|
923
|
+
const by = author === 'designer' ? 'designer' : 'agent';
|
|
641
924
|
if (positional.length !== 1 || !variant)
|
|
642
925
|
return fail(`usage: sketch ${kind} <layer>/<name> --variant <key> [--reason <text>] --by <model id | designer> [--product <name>]`);
|
|
926
|
+
const invalid = (0, cli_args_1.verdictByProblemOf)(author);
|
|
927
|
+
if (invalid)
|
|
928
|
+
return fail(invalid);
|
|
643
929
|
const decision = kind === 'reject' && reason && (0, sketch_1.rejectionOf)(sketch, variant)
|
|
644
930
|
? { kind: 'reason', variant, reason, by }
|
|
645
931
|
: Object.assign(Object.assign({ kind, variant }, (reason ? { reason } : {})), { by });
|
|
@@ -649,10 +935,43 @@ const judged = (kind) => (context) => withSketch(context, ({ sketch }) => {
|
|
|
649
935
|
(0, exports.verdictLinesOf)(decided, variant).forEach((line) => console.log(line));
|
|
650
936
|
return 0;
|
|
651
937
|
});
|
|
938
|
+
const withdrawn = (context) => {
|
|
939
|
+
const found = productAndSketchOf(context);
|
|
940
|
+
if (typeof found === 'string')
|
|
941
|
+
return fail(found);
|
|
942
|
+
return withdrawnVariant(context, found);
|
|
943
|
+
};
|
|
944
|
+
const withdrawnVariant = (context_1, _a) => __awaiter(void 0, [context_1, _a], void 0, function* (context, { product, sketch }) {
|
|
945
|
+
var _b;
|
|
946
|
+
const { positional, values } = context.args;
|
|
947
|
+
const variant = values['--variant'];
|
|
948
|
+
const by = (_b = (0, cli_args_1.authorOf)(context.args)) !== null && _b !== void 0 ? _b : '';
|
|
949
|
+
if (positional.length !== 1 || !variant)
|
|
950
|
+
return fail('usage: sketch withdraw <layer>/<name> --variant <key> --by <model id> [--product <name>]');
|
|
951
|
+
if (by === 'designer')
|
|
952
|
+
return fail('sketch withdraw is for the agent that drew the variant: --by must be a model id, not designer');
|
|
953
|
+
const invalid = (0, cli_args_1.verdictByProblemOf)(by);
|
|
954
|
+
if (invalid)
|
|
955
|
+
return fail(invalid);
|
|
956
|
+
if (!sketch.variants.includes(variant))
|
|
957
|
+
return fail(`${sketch.target} has no variant "${variant}" - it has ${sketch.variants.join(', ')}`);
|
|
958
|
+
if (!(0, sketch_1.authorsOf)(sketch, variant).includes(by))
|
|
959
|
+
return fail(`${sketch.target} variant ${variant} was not drawn by ${by} - only the agent that drew it withdraws it`);
|
|
960
|
+
const identical = yield (0, ready_shots_1.identicalRenders)({ target: context.target, config: context.config, product, sketch });
|
|
961
|
+
const twin = identical.find((render) => render.variant === variant && render.sibling !== null);
|
|
962
|
+
if (!twin)
|
|
963
|
+
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`);
|
|
964
|
+
const result = (0, sketch_1.withdrawVariant)({ sketch, variant, by, reason: `identisch mit ${twin.sibling}` });
|
|
965
|
+
if (typeof result === 'string')
|
|
966
|
+
return fail(result);
|
|
967
|
+
console.log(`withdrew ${sketch.target} variant ${variant} (identisch mit ${twin.sibling})`);
|
|
968
|
+
return 0;
|
|
969
|
+
});
|
|
652
970
|
const COMMANDS = {
|
|
653
971
|
new: created,
|
|
654
972
|
variant: varied,
|
|
655
973
|
round: roundEdited,
|
|
974
|
+
note: noteEdited,
|
|
656
975
|
list: listed,
|
|
657
976
|
report: reported,
|
|
658
977
|
ready: readied,
|
|
@@ -663,34 +982,31 @@ const COMMANDS = {
|
|
|
663
982
|
rebase: rebased,
|
|
664
983
|
merge: merged,
|
|
665
984
|
discard: discarded,
|
|
985
|
+
target: targetAdded,
|
|
666
986
|
reject: judged('reject'),
|
|
667
987
|
reopen: judged('reopen'),
|
|
988
|
+
withdraw: withdrawn,
|
|
989
|
+
};
|
|
990
|
+
/** The value flags and switches the usage line of a sketch command names. */
|
|
991
|
+
const flagsOf = (command) => {
|
|
992
|
+
var _a;
|
|
993
|
+
const line = (_a = exports.SKETCH_USAGE.find((usage) => usage.startsWith(`sketch ${command} `))) !== null && _a !== void 0 ? _a : '';
|
|
994
|
+
const named = [...line.matchAll(/(--[a-z-]+)( (?=[<a-z0-9]))?/gu)];
|
|
995
|
+
const unique = (flags) => [...new Set(flags)];
|
|
996
|
+
return {
|
|
997
|
+
values: unique(named.filter(([, , value]) => value).map(([, flag]) => flag !== null && flag !== void 0 ? flag : '')),
|
|
998
|
+
switches: unique(named.filter(([, , value]) => !value).map(([, flag]) => flag !== null && flag !== void 0 ? flag : '')),
|
|
999
|
+
};
|
|
668
1000
|
};
|
|
669
1001
|
/**
|
|
670
1002
|
* `et design sketch <command> …` opens, adds variants to, reports on, readies, checks, previews, rebases, merges and
|
|
671
|
-
* discards sketches, and rejects and
|
|
1003
|
+
* discards sketches, and rejects, reopens and withdraws their variants.
|
|
672
1004
|
*/
|
|
673
1005
|
const designSketch = (options) => {
|
|
674
1006
|
const { target, argv, invocation } = options;
|
|
675
1007
|
const [command = '', ...rest] = argv;
|
|
676
1008
|
const run = COMMANDS[command];
|
|
677
|
-
const args = (0, cli_args_1.argsOf)(rest,
|
|
678
|
-
'--product',
|
|
679
|
-
'--variants',
|
|
680
|
-
'--note',
|
|
681
|
-
'--variant',
|
|
682
|
-
'--by',
|
|
683
|
-
'--from',
|
|
684
|
-
'--round',
|
|
685
|
-
'--round-note',
|
|
686
|
-
'--title',
|
|
687
|
-
'--like',
|
|
688
|
-
'--drops',
|
|
689
|
-
'--variant-note',
|
|
690
|
-
'--reason',
|
|
691
|
-
'--allowed-by',
|
|
692
|
-
'--until',
|
|
693
|
-
]);
|
|
1009
|
+
const args = (0, cli_args_1.argsOf)(rest, flagsOf(command));
|
|
694
1010
|
const unauthored = typeof args !== 'string' && WRITES.has(command) && (0, cli_args_1.authorOf)(args) === null;
|
|
695
1011
|
if (!run || typeof args === 'string' || unauthored) {
|
|
696
1012
|
if (typeof args === 'string')
|
|
@@ -705,7 +1021,7 @@ const designSketch = (options) => {
|
|
|
705
1021
|
const config = (0, cli_args_1.configOf)(target);
|
|
706
1022
|
if (typeof config === 'string')
|
|
707
1023
|
return fail(config);
|
|
708
|
-
return run({ target, config, args });
|
|
1024
|
+
return run({ target, config, args, invocation });
|
|
709
1025
|
};
|
|
710
1026
|
exports.designSketch = designSketch;
|
|
711
1027
|
//# sourceMappingURL=sketch-command.js.map
|