@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
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
2
11
|
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
12
|
var t = {};
|
|
4
13
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
@@ -11,9 +20,10 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
11
20
|
return t;
|
|
12
21
|
};
|
|
13
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
-
exports.editRound = exports.addVariant = exports.rebaseSketch = exports.decideSketch = exports.releaseSketch = exports.holdSketch = exports.heldProblemOf = exports.markSketchReady = exports.finishSketchReport = exports.clearSketchReport = exports.readSketchReport = exports.reportSketch = exports.sketchReportPath = exports.withAuthor = exports.createSketch = exports.sketchSourceOf = exports.writeSketchFile = exports.findSketch = exports.listSketches = exports.readSketch = exports.authorsOf = exports.rejectedProblemOf = exports.rejectionOf = exports.runningRoundOf = exports.isVariantName = exports.parseTarget = exports.sourceFilesIn = exports.variantSharedDirOf = exports.sharedDirOf = exports.SHARED_FOLDER = exports.variantDirOf = exports.sketchDirOf = exports.sketchFolderOf = exports.sketchesDirOf = exports.SKETCH_FILE = exports.SKETCH_MERGES = exports.SKETCH_STATUSES = void 0;
|
|
23
|
+
exports.editRound = exports.editVariantNote = exports.addVariant = exports.rebaseSketch = exports.decideSketch = exports.withdrawVariant = exports.releaseSketch = exports.holdSketch = exports.heldProblemOf = exports.markSketchReady = exports.finishSketchReport = exports.clearSketchReport = exports.readSketchReport = exports.reportSketch = exports.sketchReportPath = exports.withAuthor = exports.removeTarget = exports.addTarget = exports.createSketch = exports.sketchSourceOf = exports.writeSketchFile = exports.findSketch = exports.listSketchesInTurns = exports.listSketches = exports.readSketch = exports.authorsOf = exports.rejectedProblemOf = exports.rejectionOf = exports.runningRoundOf = exports.isVariantName = exports.parseTarget = exports.rewriteSharedImports = exports.rebaseOutsideImports = exports.relativeSpecifierOf = exports.withSharedImports = exports.sourceFilesIn = exports.SOURCE_FILE = exports.variantSharedDirOf = exports.sharedDirOf = exports.SHARED_FOLDER = exports.variantDirOf = exports.sketchDirOf = exports.sketchIdOf = exports.sketchFolderOf = exports.sketchesDirOf = exports.SKETCH_FILE = exports.SKETCH_MERGES = exports.SKETCH_STATUSES = void 0;
|
|
15
24
|
const fs_1 = require("fs");
|
|
16
25
|
const path_1 = require("path");
|
|
26
|
+
const promises_1 = require("timers/promises");
|
|
17
27
|
const json_layout_1 = require("../../json-layout");
|
|
18
28
|
const status_1 = require("../../status");
|
|
19
29
|
const assets_1 = require("../assets");
|
|
@@ -30,8 +40,10 @@ const NAME = /^[a-z0-9][a-z0-9-]*$/u;
|
|
|
30
40
|
exports.SKETCH_FILE = 'sketch.json';
|
|
31
41
|
const sketchesDirOf = (productDir) => (0, path_1.resolve)(productDir, 'sketches');
|
|
32
42
|
exports.sketchesDirOf = sketchesDirOf;
|
|
33
|
-
const sketchFolderOf = (target) => `${target.layer}-${target.name}`;
|
|
43
|
+
const sketchFolderOf = (target) => `${target.layer}-${target.name}${target.sketch ? `.${target.sketch}` : ''}`;
|
|
34
44
|
exports.sketchFolderOf = sketchFolderOf;
|
|
45
|
+
const sketchIdOf = (target) => `${(0, resolve_product_1.partKeyOf)(target)}${target.sketch ? `@${target.sketch}` : ''}`;
|
|
46
|
+
exports.sketchIdOf = sketchIdOf;
|
|
35
47
|
const sketchDirOf = (options) => (0, path_1.resolve)((0, exports.sketchesDirOf)(options.productDir), (0, exports.sketchFolderOf)(options.sketch));
|
|
36
48
|
exports.sketchDirOf = sketchDirOf;
|
|
37
49
|
const variantDirOf = (sketch, variant) => (0, path_1.resolve)(sketch.dir, variant);
|
|
@@ -41,29 +53,70 @@ exports.sharedDirOf = sharedDirOf;
|
|
|
41
53
|
/** A variant's own `shared/` folder: a file there wins over the sketch's `shared/` file of the same path. */
|
|
42
54
|
const variantSharedDirOf = (sketch, variant) => (0, path_1.resolve)((0, exports.variantDirOf)(sketch, variant), imports_1.SHARED_FOLDER);
|
|
43
55
|
exports.variantSharedDirOf = variantSharedDirOf;
|
|
44
|
-
|
|
56
|
+
exports.SOURCE_FILE = /\.(?:ts|js|mjs)$/u;
|
|
45
57
|
const sourceFilesIn = (dir) => (0, fs_1.existsSync)(dir)
|
|
46
58
|
? (0, fs_1.readdirSync)(dir, { recursive: true })
|
|
47
|
-
.filter((path) =>
|
|
59
|
+
.filter((path) => exports.SOURCE_FILE.test(path))
|
|
48
60
|
.map((path) => (0, path_1.resolve)(dir, path))
|
|
49
61
|
: [];
|
|
50
62
|
exports.sourceFilesIn = sourceFilesIn;
|
|
51
|
-
|
|
52
|
-
|
|
63
|
+
/** `source`, the file `file` of the part in `partDir`, with its relative imports of the part's own `shared/` folder as `@shared/`. */
|
|
64
|
+
const withSharedImports = (options) => {
|
|
65
|
+
const { source, file, partDir } = options;
|
|
53
66
|
const shared = (0, path_1.resolve)(partDir, imports_1.SHARED_FOLDER);
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
67
|
+
return source.replace(/(['"])(\.{1,2}\/[^'"]+)\1/gu, (...[match = '', quote = '', specifier = '']) => {
|
|
68
|
+
const path = (0, path_1.relative)(shared, (0, path_1.resolve)((0, path_1.dirname)(file), specifier));
|
|
69
|
+
return path.startsWith('..') || (0, path_1.isAbsolute)(path)
|
|
70
|
+
? match
|
|
71
|
+
: `${quote}${imports_1.SHARED_PREFIX}${path.split(path_1.sep).join('/')}${quote}`;
|
|
72
|
+
});
|
|
73
|
+
};
|
|
74
|
+
exports.withSharedImports = withSharedImports;
|
|
75
|
+
const insideOf = (dir, path) => {
|
|
76
|
+
const rest = (0, path_1.relative)(dir, path);
|
|
77
|
+
return !rest.startsWith('..') && !(0, path_1.isAbsolute)(rest);
|
|
78
|
+
};
|
|
79
|
+
const relativeSpecifierOf = (options) => {
|
|
80
|
+
const path = (0, path_1.relative)((0, path_1.dirname)(options.from), options.to).split(path_1.sep).join('/');
|
|
81
|
+
return path.startsWith('.') ? path : `./${path}`;
|
|
82
|
+
};
|
|
83
|
+
exports.relativeSpecifierOf = relativeSpecifierOf;
|
|
84
|
+
/**
|
|
85
|
+
* Rewrites the relative imports of the files in `dir`, a copy of the folder `from`, that leave `from` - and `within`,
|
|
86
|
+
* when given - so they reach the same files from `dir`.
|
|
87
|
+
*/
|
|
88
|
+
const rebaseOutsideImports = (options) => {
|
|
89
|
+
const { dir, from, within } = options;
|
|
90
|
+
for (const file of (0, exports.sourceFilesIn)(dir)) {
|
|
91
|
+
const original = (0, path_1.resolve)(from, (0, path_1.relative)(dir, file));
|
|
57
92
|
const source = (0, fs_1.readFileSync)(file, 'utf8');
|
|
58
93
|
const rewritten = source.replace(/(['"])(\.{1,2}\/[^'"]+)\1/gu, (...[match = '', quote = '', specifier = '']) => {
|
|
59
|
-
const path = (0, path_1.
|
|
60
|
-
return path
|
|
94
|
+
const path = (0, path_1.resolve)((0, path_1.dirname)(original), specifier);
|
|
95
|
+
return insideOf(from, path) || (within !== undefined && insideOf(within, path))
|
|
61
96
|
? match
|
|
62
|
-
: `${quote}${
|
|
97
|
+
: `${quote}${(0, exports.relativeSpecifierOf)({ from: file, to: path })}${quote}`;
|
|
63
98
|
});
|
|
64
99
|
if (rewritten !== source)
|
|
65
100
|
(0, fs_1.writeFileSync)(file, rewritten);
|
|
66
101
|
}
|
|
102
|
+
};
|
|
103
|
+
exports.rebaseOutsideImports = rebaseOutsideImports;
|
|
104
|
+
/** Rewrites the relative imports of the part's own `shared/` folder in its files to `@shared/`. */
|
|
105
|
+
const rewriteSharedImports = (partDir) => {
|
|
106
|
+
for (const file of (0, exports.sourceFilesIn)(partDir)) {
|
|
107
|
+
const source = (0, fs_1.readFileSync)(file, 'utf8');
|
|
108
|
+
const rewritten = (0, exports.withSharedImports)({ source, file, partDir });
|
|
109
|
+
if (rewritten !== source)
|
|
110
|
+
(0, fs_1.writeFileSync)(file, rewritten);
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
exports.rewriteSharedImports = rewriteSharedImports;
|
|
114
|
+
const liftShared = (options) => {
|
|
115
|
+
const { partDir, sketchSharedDir } = options;
|
|
116
|
+
const shared = (0, path_1.resolve)(partDir, imports_1.SHARED_FOLDER);
|
|
117
|
+
if (!(0, fs_1.existsSync)(shared))
|
|
118
|
+
return;
|
|
119
|
+
(0, exports.rewriteSharedImports)(partDir);
|
|
67
120
|
(0, fs_1.cpSync)(shared, sketchSharedDir, { recursive: true });
|
|
68
121
|
(0, fs_1.rmSync)(shared, { recursive: true });
|
|
69
122
|
};
|
|
@@ -86,17 +139,22 @@ const sharedClashOf = (parts) => {
|
|
|
86
139
|
};
|
|
87
140
|
/** Reads `<layer>/<name>` as a sketch target, or answers with why it is not one. */
|
|
88
141
|
const parseTarget = (value) => {
|
|
89
|
-
const [
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
142
|
+
const [asked = '', sketch, ...more] = (value !== null && value !== void 0 ? value : '').split('@');
|
|
143
|
+
const [layer = '', name = '', ...rest] = asked.split('/');
|
|
144
|
+
if (!(0, layers_1.isLayer)(layer) ||
|
|
145
|
+
!NAME.test(name) ||
|
|
146
|
+
rest.length > 0 ||
|
|
147
|
+
more.length > 0 ||
|
|
148
|
+
(sketch !== undefined && !NAME.test(sketch)))
|
|
149
|
+
return `"${value !== null && value !== void 0 ? value : ''}" is no target - pass <layer>/<name>[@<sketch name>], the layer one of foundations, components, elements, pages`;
|
|
150
|
+
return sketch === undefined ? { layer, name } : { layer, name, sketch };
|
|
93
151
|
};
|
|
94
152
|
exports.parseTarget = parseTarget;
|
|
95
153
|
const isVariantName = (name) => NAME.test(name) && name !== imports_1.SHARED_FOLDER;
|
|
96
154
|
exports.isVariantName = isVariantName;
|
|
97
155
|
const foldersOf = (dir) => (0, fs_1.existsSync)(dir)
|
|
98
156
|
? (0, fs_1.readdirSync)(dir)
|
|
99
|
-
.filter((name) => (0, fs_1.statSync)((0, path_1.resolve)(dir, name)).isDirectory())
|
|
157
|
+
.filter((name) => { var _a; return (_a = (0, fs_1.statSync)((0, path_1.resolve)(dir, name), { throwIfNoEntry: false })) === null || _a === void 0 ? void 0 : _a.isDirectory(); })
|
|
100
158
|
.sort()
|
|
101
159
|
: [];
|
|
102
160
|
const isStatus = (value) => exports.SKETCH_STATUSES.includes(value);
|
|
@@ -128,6 +186,8 @@ const isRejection = (value) => {
|
|
|
128
186
|
typeof rejection.decidedAt === 'string' &&
|
|
129
187
|
isOptionalText(rejection.reason) &&
|
|
130
188
|
(rejection.reasonBy === undefined || isVerdictBy(rejection.reasonBy)) &&
|
|
189
|
+
(rejection.status === undefined || rejection.status === 'withdrawn') &&
|
|
190
|
+
(rejection.withdrawnBy === undefined || typeof rejection.withdrawnBy === 'string') &&
|
|
131
191
|
(rejection.reopened === undefined || isReopening(rejection.reopened)));
|
|
132
192
|
};
|
|
133
193
|
const isRejections = (value) => typeof value === 'object' &&
|
|
@@ -154,6 +214,16 @@ const isHold = (value) => {
|
|
|
154
214
|
typeof hold.by === 'string' &&
|
|
155
215
|
typeof hold.heldAt === 'string');
|
|
156
216
|
};
|
|
217
|
+
const isStringList = (value) => Array.isArray(value) && value.every((entry) => typeof entry === 'string');
|
|
218
|
+
const isPortMark = (value) => {
|
|
219
|
+
const mark = value;
|
|
220
|
+
return (typeof mark === 'object' &&
|
|
221
|
+
mark !== null &&
|
|
222
|
+
isStringList(mark.merged) &&
|
|
223
|
+
isStringList(mark.parts) &&
|
|
224
|
+
isStringList(mark.reasons) &&
|
|
225
|
+
typeof mark.at === 'string');
|
|
226
|
+
};
|
|
157
227
|
const FIRST_ROUND = 'r1';
|
|
158
228
|
const firstRoundOf = (title = '', note = '') => ({ key: FIRST_ROUND, title, note: note.trim() });
|
|
159
229
|
const nextRoundKeyOf = (rounds) => `r${Math.max(0, ...rounds.map((round) => { var _a, _b; return Number((_b = (_a = /^r(\d+)$/u.exec(round.key)) === null || _a === void 0 ? void 0 : _a[1]) !== null && _b !== void 0 ? _b : 0); })) + 1}`;
|
|
@@ -207,7 +277,7 @@ const readSketch = (options) => {
|
|
|
207
277
|
if (parsed.variantInfo !== undefined && !isVariantInfo(parsed.variantInfo))
|
|
208
278
|
return `${file}: variantInfo must be { <variant>: { authors?: string[], round?: string, note?: string } }`;
|
|
209
279
|
if (parsed.rejections !== undefined && !isRejections(parsed.rejections))
|
|
210
|
-
return `${file}: rejections must be { <variant>: [{ by: designer | agent, decidedAt, reason?, reasonBy?, reopened?: { by, decidedAt, reason? } }] }, each but the last reopened`;
|
|
280
|
+
return `${file}: rejections must be { <variant>: [{ by: designer | agent, decidedAt, reason?, reasonBy?, status?: withdrawn, withdrawnBy?, reopened?: { by, decidedAt, reason? } }] }, each but the last reopened`;
|
|
211
281
|
if (parsed.rounds !== undefined && !isRounds(parsed.rounds))
|
|
212
282
|
return `${file}: rounds must be a non-empty list of { key, title, note } with unique keys`;
|
|
213
283
|
if (parsed.merge !== undefined && !exports.SKETCH_MERGES.includes(parsed.merge))
|
|
@@ -216,6 +286,8 @@ const readSketch = (options) => {
|
|
|
216
286
|
return `${file}: hold must be { until, by, heldAt }`;
|
|
217
287
|
if (parsed.hold !== undefined && parsed.status !== 'in progress')
|
|
218
288
|
return `${file}: a held sketch must be in progress`;
|
|
289
|
+
if (parsed.portAfterMerge !== undefined && !isPortMark(parsed.portAfterMerge))
|
|
290
|
+
return `${file}: portAfterMerge must be { merged: string[], parts: string[], reasons: string[], at }`;
|
|
219
291
|
const rounds = (_b = parsed.rounds) !== null && _b !== void 0 ? _b : [firstRoundOf()];
|
|
220
292
|
const running = (0, exports.runningRoundOf)({ rounds }).key;
|
|
221
293
|
const variants = foldersOf(dir).filter((folder) => folder !== imports_1.SHARED_FOLDER);
|
|
@@ -235,6 +307,16 @@ exports.readSketch = readSketch;
|
|
|
235
307
|
/** Every sketch folder of a product, read; a folder that cannot be read answers with its problem. */
|
|
236
308
|
const listSketches = (options) => foldersOf((0, exports.sketchesDirOf)(options.productDir)).map((folder) => (0, exports.readSketch)({ product: options.product, dir: (0, path_1.resolve)((0, exports.sketchesDirOf)(options.productDir), folder) }));
|
|
237
309
|
exports.listSketches = listSketches;
|
|
310
|
+
/** `listSketches`, letting the server answer other requests before each sketch it reads. */
|
|
311
|
+
const listSketchesInTurns = (options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
312
|
+
const listed = [];
|
|
313
|
+
for (const folder of foldersOf((0, exports.sketchesDirOf)(options.productDir))) {
|
|
314
|
+
yield (0, promises_1.setImmediate)();
|
|
315
|
+
listed.push((0, exports.readSketch)({ product: options.product, dir: (0, path_1.resolve)((0, exports.sketchesDirOf)(options.productDir), folder) }));
|
|
316
|
+
}
|
|
317
|
+
return listed;
|
|
318
|
+
});
|
|
319
|
+
exports.listSketchesInTurns = listSketchesInTurns;
|
|
238
320
|
/** The open sketch that targets `sketch`, found by its first target or by any other it names; `null` when none does. */
|
|
239
321
|
const findSketch = (options) => {
|
|
240
322
|
var _a;
|
|
@@ -242,11 +324,14 @@ const findSketch = (options) => {
|
|
|
242
324
|
if ((0, fs_1.existsSync)(dir))
|
|
243
325
|
return (0, exports.readSketch)({ product: options.product, dir });
|
|
244
326
|
const key = (0, resolve_product_1.partKeyOf)(options.sketch);
|
|
245
|
-
return ((_a = (0, exports.listSketches)(options).find((sketch) => typeof sketch !== 'string' &&
|
|
327
|
+
return ((_a = (0, exports.listSketches)(options).find((sketch) => typeof sketch !== 'string' &&
|
|
328
|
+
sketch.targets.includes(key) &&
|
|
329
|
+
parseSketchName(sketch.target) === options.sketch.sketch)) !== null && _a !== void 0 ? _a : null);
|
|
246
330
|
};
|
|
247
331
|
exports.findSketch = findSketch;
|
|
332
|
+
const parseSketchName = (target) => target.split('@')[1];
|
|
248
333
|
const writeSketchFile = (sketch) => {
|
|
249
|
-
const file = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ target:
|
|
334
|
+
const file = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ target: sketch.target }, (sketch.targets.length > 1 ? { targets: sketch.targets } : {})), { status: sketch.status, createdAt: sketch.createdAt }), (sketch.baseline ? { baseline: sketch.baseline } : {})), (sketch.decision ? { decision: sketch.decision } : {})), { rounds: sketch.rounds }), (Object.keys(sketch.variantInfo).length > 0 ? { variantInfo: sketch.variantInfo } : {})), (sketch.rejections && Object.keys(sketch.rejections).length > 0 ? { rejections: sketch.rejections } : {})), (sketch.merge ? { merge: sketch.merge } : {})), (sketch.hold ? { hold: sketch.hold } : {})), (sketch.portAfterMerge ? { portAfterMerge: sketch.portAfterMerge } : {}));
|
|
250
335
|
(0, fs_1.writeFileSync)((0, path_1.resolve)(sketch.dir, exports.SKETCH_FILE), (0, json_layout_1.jsonLayoutOf)(file));
|
|
251
336
|
};
|
|
252
337
|
exports.writeSketchFile = writeSketchFile;
|
|
@@ -344,20 +429,44 @@ const variantInfoOf = (options) => {
|
|
|
344
429
|
var _a;
|
|
345
430
|
return (Object.assign(Object.assign(Object.assign({}, (options.author ? { authors: [options.author] } : {})), { round: options.round }), (((_a = options.note) === null || _a === void 0 ? void 0 : _a.trim()) ? { note: options.note.trim() } : {})));
|
|
346
431
|
};
|
|
432
|
+
const seedTarget = (options) => {
|
|
433
|
+
const { product, dir, variant, target, author, like } = options;
|
|
434
|
+
const folder = (0, path_1.resolve)(dir, variant, target.layer, target.name);
|
|
435
|
+
const existing = product.parts.find((part) => (0, resolve_product_1.partKeyOf)(part) === (0, resolve_product_1.partKeyOf)(target));
|
|
436
|
+
(0, fs_1.mkdirSync)(folder, { recursive: true });
|
|
437
|
+
if (like) {
|
|
438
|
+
copyPartAs({ from: like, to: folder, name: target.name });
|
|
439
|
+
(0, exports.rebaseOutsideImports)({ dir: folder, from: like.folder });
|
|
440
|
+
liftShared({ partDir: folder, sketchSharedDir: (0, path_1.resolve)(dir, imports_1.SHARED_FOLDER) });
|
|
441
|
+
}
|
|
442
|
+
else if (existing) {
|
|
443
|
+
(0, fs_1.cpSync)((0, path_1.resolve)(existing.file, '..'), folder, { recursive: true });
|
|
444
|
+
(0, exports.rebaseOutsideImports)({ dir: folder, from: (0, path_1.resolve)(existing.file, '..') });
|
|
445
|
+
liftShared({ partDir: folder, sketchSharedDir: (0, path_1.resolve)(dir, imports_1.SHARED_FOLDER) });
|
|
446
|
+
}
|
|
447
|
+
else if (target.layer === 'pages') {
|
|
448
|
+
const widths = [...new Set(Object.values(product.presets).map((preset) => preset.width))].sort((a, b) => a - b);
|
|
449
|
+
(0, fs_1.writeFileSync)((0, path_1.resolve)(folder, `${target.name}.ts`), pageStubOf({ name: target.name, madeBy: author, widths }));
|
|
450
|
+
}
|
|
451
|
+
else {
|
|
452
|
+
(0, fs_1.writeFileSync)((0, path_1.resolve)(folder, `${target.name}.ts`), stubOf(target.name));
|
|
453
|
+
(0, fs_1.writeFileSync)((0, path_1.resolve)(folder, `${target.name}.css`), '');
|
|
454
|
+
}
|
|
455
|
+
};
|
|
456
|
+
const alreadySketched = (target) => `${target} already has an open sketch - merge or discard it first, or extract the region into a part and sketch that`;
|
|
347
457
|
/**
|
|
348
458
|
* Opens a sketch on a target, in progress, with one folder per variant, all in round 1 and with `author` as their
|
|
349
459
|
* author. Each variant starts from `like` when given - renamed to the target, without its `madeBy`, and with its
|
|
350
460
|
* sketch's `shared/` folder - else from the part the product resolves for the target, or from an empty part when the
|
|
351
461
|
* target is new. A part's own `shared/` folder becomes the sketch's, imported as `@shared/`. A target holds one open
|
|
352
|
-
* sketch at a time. Each of `others` joins every variant the same way, as a further target; `like` takes one target only.
|
|
462
|
+
* sketch at a time, or one per sketch name when `sketch.sketch` names it. Each of `others` joins every variant the same way, as a further target; `like` takes one target only.
|
|
353
463
|
* A target the product overrides in its base needs `merge`: `override` or `into-base`.
|
|
354
464
|
*/
|
|
355
465
|
const createSketch = (options) => {
|
|
356
466
|
var _a;
|
|
357
467
|
const { product, sketch, variants, roundTitle, roundNote, author, like, variantNotes, merge } = options;
|
|
358
468
|
const dir = (0, exports.sketchDirOf)({ productDir: product.dir, sketch });
|
|
359
|
-
const
|
|
360
|
-
const all = [sketch, ...((_a = options.others) !== null && _a !== void 0 ? _a : [])];
|
|
469
|
+
const all = [sketch, ...((_a = options.others) !== null && _a !== void 0 ? _a : []).map((other) => (Object.assign(Object.assign({}, other), { sketch: sketch.sketch })))];
|
|
361
470
|
const targets = all.map(resolve_product_1.partKeyOf);
|
|
362
471
|
if (new Set(targets).size !== targets.length)
|
|
363
472
|
return 'name each target once';
|
|
@@ -365,7 +474,7 @@ const createSketch = (options) => {
|
|
|
365
474
|
return '--like starts one target - open a sketch with several targets without it';
|
|
366
475
|
const taken = all.find((target) => (0, exports.findSketch)({ productDir: product.dir, product: product.name, sketch: target }) !== null);
|
|
367
476
|
if ((0, fs_1.existsSync)(dir) || taken)
|
|
368
|
-
return
|
|
477
|
+
return alreadySketched((0, exports.sketchIdOf)(taken !== null && taken !== void 0 ? taken : sketch));
|
|
369
478
|
if (variants.length === 0)
|
|
370
479
|
return 'name at least one variant';
|
|
371
480
|
const mergeProblem = mergeProblemOf({ product, targets, merge });
|
|
@@ -383,31 +492,12 @@ const createSketch = (options) => {
|
|
|
383
492
|
return clash;
|
|
384
493
|
for (const variant of variants) {
|
|
385
494
|
(0, fs_1.mkdirSync)((0, path_1.resolve)(dir, variant, assets_1.ASSETS_FOLDER), { recursive: true });
|
|
386
|
-
for (const target of all)
|
|
387
|
-
|
|
388
|
-
const existing = product.parts.find((part) => (0, resolve_product_1.partKeyOf)(part) === (0, resolve_product_1.partKeyOf)(target));
|
|
389
|
-
(0, fs_1.mkdirSync)(folder, { recursive: true });
|
|
390
|
-
if (like) {
|
|
391
|
-
copyPartAs({ from: like, to: folder, name: target.name });
|
|
392
|
-
liftShared({ partDir: folder, sketchSharedDir: (0, path_1.resolve)(dir, imports_1.SHARED_FOLDER) });
|
|
393
|
-
}
|
|
394
|
-
else if (existing) {
|
|
395
|
-
(0, fs_1.cpSync)((0, path_1.resolve)(existing.file, '..'), folder, { recursive: true });
|
|
396
|
-
liftShared({ partDir: folder, sketchSharedDir: (0, path_1.resolve)(dir, imports_1.SHARED_FOLDER) });
|
|
397
|
-
}
|
|
398
|
-
else if (target.layer === 'pages') {
|
|
399
|
-
const widths = [...new Set(Object.values(product.presets).map((preset) => preset.width))].sort((a, b) => a - b);
|
|
400
|
-
(0, fs_1.writeFileSync)((0, path_1.resolve)(folder, `${target.name}.ts`), pageStubOf({ name: target.name, madeBy: author, widths }));
|
|
401
|
-
}
|
|
402
|
-
else {
|
|
403
|
-
(0, fs_1.writeFileSync)((0, path_1.resolve)(folder, `${target.name}.ts`), stubOf(target.name));
|
|
404
|
-
(0, fs_1.writeFileSync)((0, path_1.resolve)(folder, `${target.name}.css`), '');
|
|
405
|
-
}
|
|
406
|
-
}
|
|
495
|
+
for (const target of all)
|
|
496
|
+
seedTarget({ product, dir, variant, target, author, like });
|
|
407
497
|
}
|
|
408
498
|
if (like === null || like === void 0 ? void 0 : like.shared)
|
|
409
499
|
(0, fs_1.cpSync)(like.shared, (0, path_1.resolve)(dir, imports_1.SHARED_FOLDER), { recursive: true });
|
|
410
|
-
const created = Object.assign({ target:
|
|
500
|
+
const created = Object.assign({ target: (0, exports.sketchIdOf)(sketch), targets, status: 'in progress', createdAt: new Date().toISOString(), baseline: (0, baseline_1.baselineOf)(product), rounds: [firstRoundOf(roundTitle, roundNote)], variantInfo: Object.fromEntries(variants.map((variant) => [
|
|
411
501
|
variant,
|
|
412
502
|
variantInfoOf({ round: FIRST_ROUND, author, note: variantNotes === null || variantNotes === void 0 ? void 0 : variantNotes.get(variant) }),
|
|
413
503
|
])), product: product.name, layer: sketch.layer, name: sketch.name, dir, variants: [...variants].sort() }, (merge ? { merge } : {}));
|
|
@@ -415,6 +505,66 @@ const createSketch = (options) => {
|
|
|
415
505
|
return created;
|
|
416
506
|
};
|
|
417
507
|
exports.createSketch = createSketch;
|
|
508
|
+
/**
|
|
509
|
+
* Adds `part` as a further target of an open sketch, seeding it into every variant like `createSketch` does. The part
|
|
510
|
+
* must not be a target of an open sketch already, and follows the sketch's merge mode.
|
|
511
|
+
*/
|
|
512
|
+
const addTarget = (options) => {
|
|
513
|
+
const { product, sketch, part, author } = options;
|
|
514
|
+
const key = (0, resolve_product_1.partKeyOf)(part);
|
|
515
|
+
if (sketch.targets.includes(key))
|
|
516
|
+
return `${sketch.target} targets ${key} already`;
|
|
517
|
+
const layerProblem = layerProblemOf({ sketch, part });
|
|
518
|
+
if (layerProblem)
|
|
519
|
+
return layerProblem;
|
|
520
|
+
const taken = (0, exports.findSketch)({
|
|
521
|
+
productDir: product.dir,
|
|
522
|
+
product: product.name,
|
|
523
|
+
sketch: Object.assign(Object.assign({}, part), { sketch: parseSketchName(sketch.target) }),
|
|
524
|
+
});
|
|
525
|
+
if (taken !== null)
|
|
526
|
+
return alreadySketched(key);
|
|
527
|
+
const mergeProblem = mergeProblemOf({ product, targets: [key], merge: sketch.merge });
|
|
528
|
+
if (mergeProblem)
|
|
529
|
+
return mergeProblem;
|
|
530
|
+
const clash = sharedClashOf([product.parts.find((existing) => (0, resolve_product_1.partKeyOf)(existing) === key)]);
|
|
531
|
+
if (clash)
|
|
532
|
+
return clash;
|
|
533
|
+
for (const variant of sketch.variants)
|
|
534
|
+
seedTarget({ product, dir: sketch.dir, variant, target: part, author });
|
|
535
|
+
const added = Object.assign(Object.assign({}, sketch), { targets: [...sketch.targets, key] });
|
|
536
|
+
(0, exports.writeSketchFile)(added);
|
|
537
|
+
return added;
|
|
538
|
+
};
|
|
539
|
+
exports.addTarget = addTarget;
|
|
540
|
+
const layerProblemOf = (options) => {
|
|
541
|
+
const { sketch, part } = options;
|
|
542
|
+
const layers = sketch.targets.map((key) => { var _a; return (_a = key.split('/')[0]) !== null && _a !== void 0 ? _a : ''; }).filter(layers_1.isLayer);
|
|
543
|
+
if (!(0, layers_1.isLayer)(part.layer) ||
|
|
544
|
+
layers.some((layer) => (0, layers_1.mayUse)({ from: layer, to: part.layer }) || (0, layers_1.mayUse)({ from: part.layer, to: layer }))) {
|
|
545
|
+
return undefined;
|
|
546
|
+
}
|
|
547
|
+
const [first = part.layer] = layers;
|
|
548
|
+
return `${sketch.target} cannot target ${(0, resolve_product_1.partKeyOf)(part)} (UPWARD-DEPENDENCY): ${first} may use ${layers_1.LAYER_USES[first].join(', ')}, not ${part.layer}`;
|
|
549
|
+
};
|
|
550
|
+
/**
|
|
551
|
+
* Removes `part` from the targets of an open sketch and deletes its folder in every variant. The first target
|
|
552
|
+
* cannot be removed.
|
|
553
|
+
*/
|
|
554
|
+
const removeTarget = (options) => {
|
|
555
|
+
const { sketch, part } = options;
|
|
556
|
+
const key = (0, resolve_product_1.partKeyOf)(part);
|
|
557
|
+
if (!sketch.targets.includes(key))
|
|
558
|
+
return `${sketch.target} does not target ${key}`;
|
|
559
|
+
if (sketch.targets[0] === key)
|
|
560
|
+
return `${key} is the main target of ${sketch.target} - discard the sketch instead`;
|
|
561
|
+
for (const variant of sketch.variants)
|
|
562
|
+
(0, fs_1.rmSync)((0, path_1.resolve)(sketch.dir, variant, part.layer, part.name), { recursive: true, force: true });
|
|
563
|
+
const removed = Object.assign(Object.assign({}, sketch), { targets: sketch.targets.filter((target) => target !== key) });
|
|
564
|
+
(0, exports.writeSketchFile)(removed);
|
|
565
|
+
return removed;
|
|
566
|
+
};
|
|
567
|
+
exports.removeTarget = removeTarget;
|
|
418
568
|
const reportSlugOf = (sketch) => `sketches/${sketch.product}/${(0, exports.sketchFolderOf)(sketch)}`;
|
|
419
569
|
/** The sketch with `author` among the authors of `variant`; the same sketch when it is there already. */
|
|
420
570
|
const withAuthor = (options) => {
|
|
@@ -432,17 +582,21 @@ exports.sketchReportPath = sketchReportPath;
|
|
|
432
582
|
const REPORT_LIMIT = 400;
|
|
433
583
|
/**
|
|
434
584
|
* Records what an agent builds on a variant of a sketch right now ("phone, outline state"), for Studio to show,
|
|
435
|
-
* and adds the agent's model id to the variant's authors in `sketch.json` unless it is there already.
|
|
585
|
+
* and adds the agent's model id to the variant's authors in `sketch.json` unless it is there already. A ready sketch
|
|
586
|
+
* refuses a report unless `reopen` moves it back to in progress.
|
|
436
587
|
*/
|
|
437
588
|
const reportSketch = (options) => {
|
|
438
|
-
const { checkout, sketch, variant, author, message } = options;
|
|
589
|
+
const { checkout, sketch, variant, author, message, reopen } = options;
|
|
439
590
|
if (!sketch.variants.includes(variant))
|
|
440
591
|
return `${sketch.target} has no variant "${variant}" - it has ${sketch.variants.join(', ') || 'none'}`;
|
|
441
592
|
if (author.trim() === '')
|
|
442
593
|
return 'a report needs --by <model id>';
|
|
443
|
-
if (sketch.status
|
|
444
|
-
return `${sketch.target} is ${sketch.
|
|
445
|
-
|
|
594
|
+
if (sketch.status === 'ready' && sketch.decision)
|
|
595
|
+
return `${sketch.target} is decided (${sketch.decision.kind}) - a report would reopen it, so nothing was recorded`;
|
|
596
|
+
if (sketch.status === 'ready' && !reopen)
|
|
597
|
+
return `${sketch.target} is ready - a report moves it back to in progress, so nothing was recorded; add --reopen if the user asked for a change`;
|
|
598
|
+
const open = sketch.status === 'ready' ? Object.assign(Object.assign({}, sketch), { status: 'in progress' }) : sketch;
|
|
599
|
+
const reported = (0, exports.withAuthor)({ sketch: open, variant, author });
|
|
446
600
|
if (reported !== sketch)
|
|
447
601
|
(0, exports.writeSketchFile)(reported);
|
|
448
602
|
const path = (0, exports.sketchReportPath)({ checkout, sketch });
|
|
@@ -513,7 +667,9 @@ const markSketchReady = (options) => {
|
|
|
513
667
|
};
|
|
514
668
|
exports.markSketchReady = markSketchReady;
|
|
515
669
|
/** Why a held sketch cannot be ready, or `null` when it holds nothing. */
|
|
516
|
-
const heldProblemOf = (sketch) => sketch.hold
|
|
670
|
+
const heldProblemOf = (sketch) => sketch.hold
|
|
671
|
+
? `${sketch.target} is held until: ${sketch.hold.until} - make the change, then run \`et design sketch release ${sketch.target} --by <name>\``
|
|
672
|
+
: null;
|
|
517
673
|
exports.heldProblemOf = heldProblemOf;
|
|
518
674
|
/**
|
|
519
675
|
* Holds a sketch until a change that waits on something is made: it goes back to in progress, which drops a pick
|
|
@@ -570,6 +726,33 @@ const withVerdict = (sketch, verdict) => {
|
|
|
570
726
|
const { decision } = sketch, rest = __rest(sketch, ["decision"]);
|
|
571
727
|
return Object.assign(Object.assign(Object.assign({}, rest), (decision && !unpicked ? { decision } : {})), { rejections: Object.assign(Object.assign({}, sketch.rejections), { [variant]: next }) });
|
|
572
728
|
};
|
|
729
|
+
/**
|
|
730
|
+
* Takes a variant out of the open set as `withdrawn` by the agent `by`, with `reason`; refused when `by` did not draw
|
|
731
|
+
* the variant or it is rejected already. Writes sketch.json.
|
|
732
|
+
*/
|
|
733
|
+
const withdrawVariant = (options) => {
|
|
734
|
+
var _a, _b;
|
|
735
|
+
const { sketch, variant, by, reason } = options;
|
|
736
|
+
if (!sketch.variants.includes(variant))
|
|
737
|
+
return `${sketch.target} has no variant "${variant}" - it has ${sketch.variants.join(', ')}`;
|
|
738
|
+
if ((0, exports.rejectionOf)(sketch, variant))
|
|
739
|
+
return `${sketch.target} variant ${variant} is rejected or withdrawn already`;
|
|
740
|
+
if (!(0, exports.authorsOf)(sketch, variant).includes(by))
|
|
741
|
+
return `${sketch.target} variant ${variant} was not drawn by ${by}${drawerNote(sketch, variant)} - only its author withdraws it`;
|
|
742
|
+
const withdrawn = withVerdict(sketch, { kind: 'reject', variant, reason, by: 'agent' });
|
|
743
|
+
if (typeof withdrawn === 'string')
|
|
744
|
+
return withdrawn;
|
|
745
|
+
const history = (_b = (_a = withdrawn.rejections) === null || _a === void 0 ? void 0 : _a[variant]) !== null && _b !== void 0 ? _b : [];
|
|
746
|
+
const last = history[history.length - 1];
|
|
747
|
+
const marked = Object.assign(Object.assign({}, withdrawn), { rejections: Object.assign(Object.assign({}, withdrawn.rejections), { [variant]: [...history.slice(0, -1), Object.assign(Object.assign({}, last), { status: 'withdrawn', withdrawnBy: by })] }) });
|
|
748
|
+
(0, exports.writeSketchFile)(marked);
|
|
749
|
+
return marked;
|
|
750
|
+
};
|
|
751
|
+
exports.withdrawVariant = withdrawVariant;
|
|
752
|
+
const drawerNote = (sketch, variant) => {
|
|
753
|
+
const authors = (0, exports.authorsOf)(sketch, variant);
|
|
754
|
+
return authors.length > 0 ? ` (drawn by ${authors.join(', ')})` : '';
|
|
755
|
+
};
|
|
573
756
|
/**
|
|
574
757
|
* Records the user's pick or discard on a sketch, the decision Studio writes and the agent acts on, or a verdict on
|
|
575
758
|
* one variant. A rejected variant cannot be picked; rejecting the picked variant clears the pick.
|
|
@@ -601,7 +784,8 @@ exports.decideSketch = decideSketch;
|
|
|
601
784
|
* up to date with the parts that changed in the product since the sketch was created.
|
|
602
785
|
*/
|
|
603
786
|
const rebaseSketch = (options) => {
|
|
604
|
-
const
|
|
787
|
+
const _a = options.sketch, { portAfterMerge: _ported } = _a, sketch = __rest(_a, ["portAfterMerge"]);
|
|
788
|
+
const rebased = Object.assign(Object.assign({}, sketch), { baseline: (0, baseline_1.baselineOf)(options.product) });
|
|
605
789
|
(0, exports.writeSketchFile)(rebased);
|
|
606
790
|
return rebased;
|
|
607
791
|
};
|
|
@@ -631,7 +815,7 @@ const addVariant = (options) => {
|
|
|
631
815
|
{ key: nextRoundKeyOf(sketch.rounds), title: round.title.trim(), note: (_c = (_b = round.note) === null || _b === void 0 ? void 0 : _b.trim()) !== null && _c !== void 0 ? _c : '' },
|
|
632
816
|
]
|
|
633
817
|
: sketch.rounds;
|
|
634
|
-
(0, fs_1.cpSync)((0, exports.variantDirOf)(sketch, from), (0, exports.variantDirOf)(sketch, variant), { recursive: true });
|
|
818
|
+
(0, fs_1.cpSync)((0, exports.variantDirOf)(sketch, from), (0, exports.variantDirOf)(sketch, variant), { recursive: true, verbatimSymlinks: true });
|
|
635
819
|
(0, fs_1.mkdirSync)((0, path_1.resolve)((0, exports.variantDirOf)(sketch, variant), assets_1.ASSETS_FOLDER), { recursive: true });
|
|
636
820
|
const { decision: _decision } = sketch, undecided = __rest(sketch, ["decision"]);
|
|
637
821
|
const added = Object.assign(Object.assign({}, undecided), { status: 'in progress', rounds, variantInfo: Object.assign(Object.assign({}, sketch.variantInfo), { [variant]: variantInfoOf({ round: (0, exports.runningRoundOf)({ rounds }).key, author }) }), variants: [...sketch.variants, variant].sort() });
|
|
@@ -644,6 +828,15 @@ const withDrops = (round, drops) => {
|
|
|
644
828
|
return drops && drops.length > 0 ? Object.assign(Object.assign({}, rest), { drops }) : rest;
|
|
645
829
|
};
|
|
646
830
|
/** Changes the title, the note and the dropped states of the round with key `round`; a field left out stays as it is. */
|
|
831
|
+
const editVariantNote = (options) => {
|
|
832
|
+
const { sketch, variant, note } = options;
|
|
833
|
+
if (!sketch.variants.includes(variant))
|
|
834
|
+
return `${sketch.target} has no variant "${variant}" - it has ${sketch.variants.join(', ')}`;
|
|
835
|
+
const edited = Object.assign(Object.assign({}, sketch), { variantInfo: Object.assign(Object.assign({}, sketch.variantInfo), { [variant]: Object.assign(Object.assign({}, sketch.variantInfo[variant]), { note: note.trim() }) }) });
|
|
836
|
+
(0, exports.writeSketchFile)(edited);
|
|
837
|
+
return edited;
|
|
838
|
+
};
|
|
839
|
+
exports.editVariantNote = editVariantNote;
|
|
647
840
|
const editRound = (options) => {
|
|
648
841
|
const { sketch, round, title, note, drops } = options;
|
|
649
842
|
if (!sketch.rounds.some((entry) => entry.key === round))
|