@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
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.REACH_STATEMENTS = exports.UNREACHABLE_RULE = exports.COVERED_RULE = void 0;
|
|
4
|
+
const see_through_1 = require("./see-through");
|
|
5
|
+
/** The rule a declared action or a projected region breaks when an opaque element of another subtree paints above it. */
|
|
6
|
+
exports.COVERED_RULE = 'COVERED';
|
|
7
|
+
/** The rule a declared action breaks when the state that draws it hides it, fades it out, shrinks it to nothing or buries it. */
|
|
8
|
+
exports.UNREACHABLE_RULE = 'UNREACHABLE';
|
|
9
|
+
const ACTION_SAMPLES_PER_SIDE = 3;
|
|
10
|
+
const REGION_SAMPLES_PER_SIDE = 5;
|
|
11
|
+
const OPAQUE = 0.95;
|
|
12
|
+
const PAN_STEP = 32;
|
|
13
|
+
const PAN_MAX_STEPS = 200;
|
|
14
|
+
/**
|
|
15
|
+
* The statements of the reach check inside the frame script of `render-check`. They use `root`, `report` and
|
|
16
|
+
* `pathOf` of that script. Each `data-et-action` element must be shown, sized and hit by a click at some point of its
|
|
17
|
+
* unclipped box; each point where an opaque element of another subtree paints above an action, or above a projected
|
|
18
|
+
* region nested in another projected region from inside that outer region, is a cover. An action inside such a nested
|
|
19
|
+
* region is preview content and is not judged. The click pass runs before `pointer-events` is forced on for the paint pass, and the force is removed.
|
|
20
|
+
*/
|
|
21
|
+
exports.REACH_STATEMENTS = `
|
|
22
|
+
{
|
|
23
|
+
const floating = ${JSON.stringify(see_through_1.OVERLAY_PANE_SELECTOR + ', [role="tooltip"]')};
|
|
24
|
+
const alphaOf = (colour) => {
|
|
25
|
+
if (colour === 'transparent') return 0;
|
|
26
|
+
const slash = /\\/\\s*([\\d.]+)(%?)\\s*\\)$/.exec(colour);
|
|
27
|
+
if (slash) return parseFloat(slash[1]) / (slash[2] ? 100 : 1);
|
|
28
|
+
const rgba = /^rgba\\([^,]+,[^,]+,[^,]+,\\s*([\\d.]+)\\s*\\)$/.exec(colour);
|
|
29
|
+
return rgba ? parseFloat(rgba[1]) : 1;
|
|
30
|
+
};
|
|
31
|
+
const opacityOf = (element) => {
|
|
32
|
+
let opacity = 1;
|
|
33
|
+
for (let at = element; at; at = at.parentElement) opacity *= parseFloat(getComputedStyle(at).opacity);
|
|
34
|
+
return opacity;
|
|
35
|
+
};
|
|
36
|
+
const solid = (element) => {
|
|
37
|
+
const style = getComputedStyle(element);
|
|
38
|
+
const paints = element.matches('img, video, canvas, iframe, object, embed') || style.backgroundImage !== 'none' || alphaOf(style.backgroundColor) >= ${OPAQUE};
|
|
39
|
+
return paints && style.visibility === 'visible' && opacityOf(element) >= ${OPAQUE};
|
|
40
|
+
};
|
|
41
|
+
const layer = '[aria-modal="true"]';
|
|
42
|
+
let passive = new Set();
|
|
43
|
+
const coverOf = (hit, target, opaqueOnly, within) => {
|
|
44
|
+
if (!hit || target.contains(hit) || hit.contains(target) || hit.closest(floating) || hit.closest(layer) || !within.contains(hit)) return null;
|
|
45
|
+
if (passive.has(hit) && hit.closest('[aria-hidden="true"]')) return null;
|
|
46
|
+
const skip = hit.closest('[data-et-skip~="COVERED"]');
|
|
47
|
+
if (skip && !skip.contains(target)) return null;
|
|
48
|
+
for (let at = hit; at && !at.contains(target); at = at.parentElement) if (!opaqueOnly || solid(at)) return at;
|
|
49
|
+
return null;
|
|
50
|
+
};
|
|
51
|
+
const visibleBoxOf = (element) => {
|
|
52
|
+
const rect = element.getBoundingClientRect();
|
|
53
|
+
const box = { left: Math.max(rect.left, 0), top: Math.max(rect.top, 0), right: Math.min(rect.right, innerWidth), bottom: Math.min(rect.bottom, innerHeight) };
|
|
54
|
+
for (let at = element.parentElement; at && at !== document.documentElement; at = at.parentElement) {
|
|
55
|
+
const style = getComputedStyle(at);
|
|
56
|
+
if (style.overflowX === 'visible' && style.overflowY === 'visible') continue;
|
|
57
|
+
const clip = at.getBoundingClientRect();
|
|
58
|
+
const left = clip.left + at.clientLeft;
|
|
59
|
+
const top = clip.top + at.clientTop;
|
|
60
|
+
if (style.overflowX !== 'visible') [box.left, box.right] = [Math.max(box.left, left), Math.min(box.right, left + at.clientWidth)];
|
|
61
|
+
if (style.overflowY !== 'visible') [box.top, box.bottom] = [Math.max(box.top, top), Math.min(box.bottom, top + at.clientHeight)];
|
|
62
|
+
}
|
|
63
|
+
return box.right - box.left > 2 && box.bottom - box.top > 2 ? box : null;
|
|
64
|
+
};
|
|
65
|
+
const pointsOf = (box, perSide) => {
|
|
66
|
+
const points = [];
|
|
67
|
+
for (let x = 0; x < perSide; x++)
|
|
68
|
+
for (let y = 0; y < perSide; y++)
|
|
69
|
+
points.push([box.left + 1 + ((box.right - box.left - 2) * (x + 0.5)) / perSide, box.top + 1 + ((box.bottom - box.top - 2) * (y + 0.5)) / perSide]);
|
|
70
|
+
return points;
|
|
71
|
+
};
|
|
72
|
+
const coversOf = (target, box, perSide, opaqueOnly, within = document.documentElement) => {
|
|
73
|
+
const covers = new Map();
|
|
74
|
+
const points = pointsOf(box, perSide);
|
|
75
|
+
for (const [x, y] of points) {
|
|
76
|
+
const cover = coverOf(document.elementFromPoint(x, y), target, opaqueOnly, within);
|
|
77
|
+
if (cover) covers.set(cover, (covers.get(cover) ?? 0) + 1);
|
|
78
|
+
}
|
|
79
|
+
const hits = [...covers.values()].reduce((sum, count) => sum + count, 0);
|
|
80
|
+
const most = [...covers.entries()].sort((a, b) => b[1] - a[1])[0]?.[0] ?? null;
|
|
81
|
+
return { hits, total: points.length, most };
|
|
82
|
+
};
|
|
83
|
+
const labelOf = (element) => {
|
|
84
|
+
const text = (element.getAttribute('aria-label') || element.textContent || '').trim().replace(/\\s+/g, ' ');
|
|
85
|
+
const short = text.length > 32 ? text.slice(0, 31) + '…' : text;
|
|
86
|
+
return (short ? '"' + short + '" ' : '') + '(' + element.getAttribute('data-et-action') + ')';
|
|
87
|
+
};
|
|
88
|
+
const hiddenOf = (element) => {
|
|
89
|
+
let gone = null;
|
|
90
|
+
for (let at = element; at && at !== root; at = at.parentElement) {
|
|
91
|
+
if (at.hasAttribute('hidden') || at.matches('template')) return { skip: true };
|
|
92
|
+
if (!gone && getComputedStyle(at).display === 'none') gone = at;
|
|
93
|
+
}
|
|
94
|
+
if (gone) return { why: 'not displayed (display: none on ' + pathOf(gone) + ')' };
|
|
95
|
+
const style = getComputedStyle(element);
|
|
96
|
+
if (style.visibility !== 'visible') return { why: 'hidden (visibility: ' + style.visibility + ')' };
|
|
97
|
+
for (let at = element; at && at !== root; at = at.parentElement)
|
|
98
|
+
if (parseFloat(getComputedStyle(at).opacity) === 0) return { why: 'invisible (opacity 0 on ' + pathOf(at) + ')' };
|
|
99
|
+
const rect = element.getBoundingClientRect();
|
|
100
|
+
if (rect.width < 1 || rect.height < 1) return { why: 'zero-size (' + Math.round(rect.width) + 'x' + Math.round(rect.height) + ')' };
|
|
101
|
+
if (style.pointerEvents === 'none') return { why: 'not clickable (pointer-events: none)' };
|
|
102
|
+
return null;
|
|
103
|
+
};
|
|
104
|
+
const previewed = (element) => element.closest('[data-et-projected]')?.parentElement?.closest('[data-et-projected]');
|
|
105
|
+
const actions = reachableControlsOf(root, '[data-et-action]', true).filter((element) => !previewed(element));
|
|
106
|
+
const shownActions = [];
|
|
107
|
+
for (const element of actions) {
|
|
108
|
+
const hidden = hiddenOf(element);
|
|
109
|
+
if (hidden?.skip) continue;
|
|
110
|
+
if (hidden) report('${exports.UNREACHABLE_RULE}', element, labelOf(element) + ' is ' + hidden.why + ' in a state that declares it, so it can not be pressed');
|
|
111
|
+
else shownActions.push(element);
|
|
112
|
+
}
|
|
113
|
+
const force = document.createElement('style');
|
|
114
|
+
force.textContent = '* { pointer-events: auto !important; }';
|
|
115
|
+
const judge = (pose) => {
|
|
116
|
+
passive = new Set([...root.querySelectorAll('*')].filter((element) => getComputedStyle(element).pointerEvents === 'none'));
|
|
117
|
+
const sampled = [];
|
|
118
|
+
for (const element of shownActions) {
|
|
119
|
+
const box = visibleBoxOf(element);
|
|
120
|
+
if (box) sampled.push({ element, points: pointsOf(box, ${ACTION_SAMPLES_PER_SIDE}).map((point) => ({ point, click: null, cover: null })) });
|
|
121
|
+
}
|
|
122
|
+
for (const { points, element } of sampled)
|
|
123
|
+
for (const sample of points) sample.click = coverOf(document.elementFromPoint(...sample.point), element, false, document.documentElement);
|
|
124
|
+
document.head.append(force);
|
|
125
|
+
try {
|
|
126
|
+
for (const { points, element } of sampled)
|
|
127
|
+
for (const sample of points) sample.cover = coverOf(document.elementFromPoint(...sample.point), element, true, document.documentElement) ?? sample.click;
|
|
128
|
+
} finally {
|
|
129
|
+
force.remove();
|
|
130
|
+
}
|
|
131
|
+
for (const { element, points } of sampled) {
|
|
132
|
+
const counts = new Map();
|
|
133
|
+
for (const { cover } of points) if (cover) counts.set(cover, (counts.get(cover) ?? 0) + 1);
|
|
134
|
+
const hits = [...counts.values()].reduce((sum, count) => sum + count, 0);
|
|
135
|
+
if (hits === 0) continue;
|
|
136
|
+
const most = [...counts.entries()].sort((a, b) => b[1] - a[1])[0][0];
|
|
137
|
+
if (points.every(({ click }) => click)) {
|
|
138
|
+
report('${exports.UNREACHABLE_RULE}', element, labelOf(element) + ' is covered: a click at any point of it lands on ' + pathOf(most) + pose);
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
const under = solid(most) ? 'the opaque ' + pathOf(most) : pathOf(most) + ', which takes the click there';
|
|
142
|
+
report('${exports.COVERED_RULE}', element, labelOf(element) + ': ' + hits + ' of ' + points.length + ' points lie under ' + under + pose);
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
judge('');
|
|
146
|
+
const placesOf = (elements) => elements.map((element) => element.getBoundingClientRect()).map((rect) => [rect.left, rect.top]);
|
|
147
|
+
const wheel = (canvas, x, y) => canvas.dispatchEvent(new WheelEvent('wheel', { deltaX: x, deltaY: y, bubbles: true, cancelable: true }));
|
|
148
|
+
const canvases = new Set();
|
|
149
|
+
for (const element of shownActions)
|
|
150
|
+
for (let at = element.parentElement; at && at !== root; at = at.parentElement) {
|
|
151
|
+
const style = getComputedStyle(at);
|
|
152
|
+
if (style.overflowX !== 'visible' || style.overflowY !== 'visible') canvases.add(at);
|
|
153
|
+
}
|
|
154
|
+
for (const canvas of canvases) {
|
|
155
|
+
const inside = shownActions.filter((element) => canvas.contains(element));
|
|
156
|
+
for (const [dx, dy, way] of [[1, 0, 'right'], [-1, 0, 'left'], [0, 1, 'down'], [0, -1, 'up']]) {
|
|
157
|
+
const start = placesOf(inside);
|
|
158
|
+
for (let step = 1; step <= ${PAN_MAX_STEPS}; step++) {
|
|
159
|
+
const before = placesOf(inside).join(' ');
|
|
160
|
+
wheel(canvas, dx * ${PAN_STEP}, dy * ${PAN_STEP});
|
|
161
|
+
if (placesOf(inside).join(' ') === before) break;
|
|
162
|
+
judge(' when ' + pathOf(canvas) + ' is panned ' + step * ${PAN_STEP} + 'px ' + way);
|
|
163
|
+
}
|
|
164
|
+
const back = placesOf(inside)
|
|
165
|
+
.map(([left, top], index) => [left - start[index][0], top - start[index][1]])
|
|
166
|
+
.sort((a, b) => Math.abs(b[0]) + Math.abs(b[1]) - Math.abs(a[0]) - Math.abs(a[1]))[0];
|
|
167
|
+
if (back[0] || back[1]) wheel(canvas, back[0], back[1]);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
document.head.append(force);
|
|
171
|
+
try {
|
|
172
|
+
for (const element of root.querySelectorAll('[data-et-projected]')) {
|
|
173
|
+
const outer = element.parentElement?.closest('[data-et-projected]');
|
|
174
|
+
if (!outer || element.closest('[inert], [aria-hidden="true"]') || element.getClientRects().length === 0) continue;
|
|
175
|
+
const box = visibleBoxOf(element);
|
|
176
|
+
if (!box) continue;
|
|
177
|
+
const covered = coversOf(element, box, ${REGION_SAMPLES_PER_SIDE}, true, outer);
|
|
178
|
+
if (covered.hits > 0)
|
|
179
|
+
report('${exports.COVERED_RULE}', element, 'the projected region "' + element.getAttribute('data-et-projected') + '": ' + covered.hits + ' of ' + covered.total + ' points lie under the opaque ' + pathOf(covered.most));
|
|
180
|
+
}
|
|
181
|
+
} finally {
|
|
182
|
+
force.remove();
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
`;
|
|
186
|
+
//# sourceMappingURL=reach.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reach.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/design/system/reach.ts"],"names":[],"mappings":";;;AAAA,+CAAsD;AAEtD,yHAAyH;AAC5G,QAAA,YAAY,GAAG,SAAS,CAAC;AAEtC,iIAAiI;AACpH,QAAA,gBAAgB,GAAG,aAAa,CAAC;AAE9C,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAClC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAClC,MAAM,MAAM,GAAG,IAAI,CAAC;AACpB,MAAM,QAAQ,GAAG,EAAE,CAAC;AACpB,MAAM,aAAa,GAAG,GAAG,CAAC;AAE1B;;;;;;GAMG;AACU,QAAA,gBAAgB,GAAG;;uBAET,IAAI,CAAC,SAAS,CAAC,mCAAqB,GAAG,oBAAoB,CAAC;;;;;;;;;;;;;;;6JAe0E,MAAM;iFAClF,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAuE3D,wBAAgB;;;;;;;;;;iEAUqB,uBAAuB;;;;;;;;;;;;;;;;;;oBAkBpE,wBAAgB;;;;kBAIlB,oBAAY;;;;;;;;;;;;;;;;qCAgBO,aAAa;;+BAEnB,QAAQ,UAAU,QAAQ;;qEAEY,QAAQ;;;;;;;;;;;;;;;iDAe5B,uBAAuB;;oBAEpD,oBAAY;;;;;;CAM/B,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-page statements that define `reachableControlsOf(scope, selector, keepHidden)`: the elements of `scope` matching
|
|
3
|
+
* `selector` that a render rule may judge. Subtrees under `[inert]` or `[aria-hidden="true"]` never count; elements
|
|
4
|
+
* under `hidden` or `display: none` are dropped unless `keepHidden` is set, for rules that report them as unreachable.
|
|
5
|
+
*/
|
|
6
|
+
export declare const REACHABLE_CONTROLS_STATEMENTS = "\n const reachableControlsOf = (scope, selector, keepHidden) =>\n [...scope.querySelectorAll(selector)].filter((control) => {\n if (control.closest('[inert], [aria-hidden=\"true\"]')) return false;\n if (keepHidden) return true;\n for (let at = control; at && at !== scope.parentElement; at = at.parentElement)\n if (at.hasAttribute('hidden') || getComputedStyle(at).display === 'none') return false;\n return true;\n });\n";
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.REACHABLE_CONTROLS_STATEMENTS = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* In-page statements that define `reachableControlsOf(scope, selector, keepHidden)`: the elements of `scope` matching
|
|
6
|
+
* `selector` that a render rule may judge. Subtrees under `[inert]` or `[aria-hidden="true"]` never count; elements
|
|
7
|
+
* under `hidden` or `display: none` are dropped unless `keepHidden` is set, for rules that report them as unreachable.
|
|
8
|
+
*/
|
|
9
|
+
exports.REACHABLE_CONTROLS_STATEMENTS = `
|
|
10
|
+
const reachableControlsOf = (scope, selector, keepHidden) =>
|
|
11
|
+
[...scope.querySelectorAll(selector)].filter((control) => {
|
|
12
|
+
if (control.closest('[inert], [aria-hidden="true"]')) return false;
|
|
13
|
+
if (keepHidden) return true;
|
|
14
|
+
for (let at = control; at && at !== scope.parentElement; at = at.parentElement)
|
|
15
|
+
if (at.hasAttribute('hidden') || getComputedStyle(at).display === 'none') return false;
|
|
16
|
+
return true;
|
|
17
|
+
});
|
|
18
|
+
`;
|
|
19
|
+
//# sourceMappingURL=reachable-controls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reachable-controls.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/design/system/reachable-controls.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACU,QAAA,6BAA6B,GAAG;;;;;;;;;CAS5C,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ProductSource } from './base';
|
|
2
|
+
import { SharedDirs } from './imports';
|
|
3
|
+
import { ResolvedPart, ResolvedProduct } from './resolve-product';
|
|
4
|
+
export declare const repoRootOf: (source: ProductSource) => string;
|
|
5
|
+
/** The source file of an `@ethlete/<lib>/design[/<path>]` specifier in the repo at `root`, or `null` for any other specifier. */
|
|
6
|
+
export declare const sdkDesignFileOf: (root: string, specifier: string) => string | null;
|
|
7
|
+
/**
|
|
8
|
+
* The files the parts in `from` reach through relative, shared and system imports, with their
|
|
9
|
+
* sources, and the `@ethlete/<lib>/design` module files they reach. `from` defaults to every part.
|
|
10
|
+
*/
|
|
11
|
+
export declare const reachableFilesOf: (product: ResolvedProduct & SharedDirs, from?: ResolvedPart[]) => {
|
|
12
|
+
files: Map<string, string>;
|
|
13
|
+
sdkDesign: Map<string, string>;
|
|
14
|
+
};
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.reachableFilesOf = exports.sdkDesignFileOf = exports.repoRootOf = void 0;
|
|
7
|
+
const fs_1 = require("fs");
|
|
8
|
+
const path_1 = require("path");
|
|
9
|
+
const postcss_1 = __importDefault(require("postcss"));
|
|
10
|
+
const vite_paths_1 = require("../vite-paths");
|
|
11
|
+
const imports_1 = require("./imports");
|
|
12
|
+
const resolve_product_1 = require("./resolve-product");
|
|
13
|
+
const ts_source_1 = require("./ts-source");
|
|
14
|
+
const SDK_DESIGN_MODULE = /^@ethlete\/([\w-]+)\/design((?:\/[\w-]+)*)$/u;
|
|
15
|
+
const repoRootOf = (source) => (0, path_1.resolve)((0, path_1.dirname)(source.configFile), '../..');
|
|
16
|
+
exports.repoRootOf = repoRootOf;
|
|
17
|
+
const stylesheetImportsOf = (css) => {
|
|
18
|
+
const imports = [];
|
|
19
|
+
try {
|
|
20
|
+
postcss_1.default.parse(css).walkAtRules('import', (rule) => {
|
|
21
|
+
var _a;
|
|
22
|
+
const match = /^(?:url\(\s*)?(?:['"]([^'"]+)['"]|([^'"\s)]+))/u.exec(rule.params.trim());
|
|
23
|
+
const specifier = (_a = match === null || match === void 0 ? void 0 : match[1]) !== null && _a !== void 0 ? _a : match === null || match === void 0 ? void 0 : match[2];
|
|
24
|
+
if (specifier)
|
|
25
|
+
imports.push(specifier);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
catch (_a) {
|
|
29
|
+
return [];
|
|
30
|
+
}
|
|
31
|
+
return imports;
|
|
32
|
+
};
|
|
33
|
+
const relativeFileOf = (file, specifier) => {
|
|
34
|
+
var _a;
|
|
35
|
+
const path = (0, path_1.resolve)((0, path_1.dirname)(file), (_a = specifier.split('?')[0]) !== null && _a !== void 0 ? _a : specifier);
|
|
36
|
+
return path.endsWith('.css') ? ((0, fs_1.existsSync)(path) ? path : null) : (0, vite_paths_1.sourceFileOf)(path);
|
|
37
|
+
};
|
|
38
|
+
/** The source file of an `@ethlete/<lib>/design[/<path>]` specifier in the repo at `root`, or `null` for any other specifier. */
|
|
39
|
+
const sdkDesignFileOf = (root, specifier) => {
|
|
40
|
+
var _a, _b;
|
|
41
|
+
const match = SDK_DESIGN_MODULE.exec(specifier);
|
|
42
|
+
return match ? (0, vite_paths_1.sourceFileOf)((0, path_1.resolve)(root, 'libs', (_a = match[1]) !== null && _a !== void 0 ? _a : '', `design${(_b = match[2]) !== null && _b !== void 0 ? _b : ''}`)) : null;
|
|
43
|
+
};
|
|
44
|
+
exports.sdkDesignFileOf = sdkDesignFileOf;
|
|
45
|
+
const sdkDesignFilesOf = (root, specifiers) => {
|
|
46
|
+
const files = new Map();
|
|
47
|
+
const queue = specifiers.flatMap((specifier) => { var _a; return (_a = (0, exports.sdkDesignFileOf)(root, specifier)) !== null && _a !== void 0 ? _a : []; });
|
|
48
|
+
for (let file = queue.shift(); file !== undefined; file = queue.shift()) {
|
|
49
|
+
if (files.has(file) || !(0, fs_1.existsSync)(file))
|
|
50
|
+
continue;
|
|
51
|
+
const source = (0, fs_1.readFileSync)(file, 'utf8');
|
|
52
|
+
files.set(file, source);
|
|
53
|
+
const imports = file.endsWith('.css') ? stylesheetImportsOf(source) : (0, ts_source_1.importsOf)(source);
|
|
54
|
+
for (const specifier of imports) {
|
|
55
|
+
const found = specifier.startsWith('.') ? relativeFileOf(file, specifier) : (0, exports.sdkDesignFileOf)(root, specifier);
|
|
56
|
+
if (found && !files.has(found))
|
|
57
|
+
queue.push(found);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return files;
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* The files the parts in `from` reach through relative, shared and system imports, with their
|
|
64
|
+
* sources, and the `@ethlete/<lib>/design` module files they reach. `from` defaults to every part.
|
|
65
|
+
*/
|
|
66
|
+
const reachableFilesOf = (product, from = product.parts) => {
|
|
67
|
+
var _a, _b;
|
|
68
|
+
const parts = new Map(product.parts.map((part) => [(0, resolve_product_1.partKeyOf)(part), part]));
|
|
69
|
+
const files = new Map();
|
|
70
|
+
const packages = new Set();
|
|
71
|
+
const queue = from.flatMap((part) => [part.file, ...(part.css ? [part.css] : [])]);
|
|
72
|
+
for (let file = queue.shift(); file !== undefined; file = queue.shift()) {
|
|
73
|
+
if (files.has(file) || !(0, fs_1.existsSync)(file))
|
|
74
|
+
continue;
|
|
75
|
+
const source = (0, fs_1.readFileSync)(file, 'utf8');
|
|
76
|
+
files.set(file, source);
|
|
77
|
+
const specifiers = file.endsWith('.css') ? stylesheetImportsOf(source) : (0, ts_source_1.importsOf)(source);
|
|
78
|
+
for (const specifier of specifiers) {
|
|
79
|
+
const imported = (0, imports_1.classifyImport)(specifier);
|
|
80
|
+
let found = null;
|
|
81
|
+
if (imported.kind === 'relative') {
|
|
82
|
+
found = relativeFileOf(file, specifier);
|
|
83
|
+
}
|
|
84
|
+
else if (imported.kind === 'other') {
|
|
85
|
+
packages.add(specifier);
|
|
86
|
+
}
|
|
87
|
+
else if (imported.kind === 'shared') {
|
|
88
|
+
found = (0, imports_1.sharedFileOf)({ dirs: (0, imports_1.sharedDirsOf)(product), path: imported.path });
|
|
89
|
+
}
|
|
90
|
+
else if (imported.kind === 'part') {
|
|
91
|
+
const part = parts.get((0, resolve_product_1.partKeyOf)(imported));
|
|
92
|
+
found = imported.stylesheet ? ((_a = part === null || part === void 0 ? void 0 : part.css) !== null && _a !== void 0 ? _a : null) : ((_b = part === null || part === void 0 ? void 0 : part.file) !== null && _b !== void 0 ? _b : null);
|
|
93
|
+
}
|
|
94
|
+
if (found && !files.has(found))
|
|
95
|
+
queue.push(found);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return { files, sdkDesign: sdkDesignFilesOf((0, exports.repoRootOf)(product), [...packages]) };
|
|
99
|
+
};
|
|
100
|
+
exports.reachableFilesOf = reachableFilesOf;
|
|
101
|
+
//# sourceMappingURL=reachable-files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reachable-files.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/design/system/reachable-files.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { PixelCompare } from './part-compare';
|
|
2
|
+
/**
|
|
3
|
+
* What an app drawing that missed `goal` reached instead: the declared state it matches exactly, or the closest one by
|
|
4
|
+
* differing pixels. `compare` compares the app drawing with one state's design; a state it fails to draw is skipped.
|
|
5
|
+
*/
|
|
6
|
+
export declare const reachedStateOf: (options: {
|
|
7
|
+
goal: string;
|
|
8
|
+
states: readonly string[];
|
|
9
|
+
compare: (state: string) => Promise<PixelCompare | null>;
|
|
10
|
+
}) => Promise<string>;
|
|
11
|
+
/**
|
|
12
|
+
* What a live page that missed `goal` reached instead, read from its `aria-expanded` controls: the declared states whose
|
|
13
|
+
* drawn controls it all shows, or the closest one by differing controls. A state that draws none is never reached.
|
|
14
|
+
*/
|
|
15
|
+
export declare const reachedExpandedStateOf: (options: {
|
|
16
|
+
goal: string;
|
|
17
|
+
states: readonly string[];
|
|
18
|
+
expectedOf: (state: string) => Promise<Record<string, string>>;
|
|
19
|
+
after: readonly {
|
|
20
|
+
key: string;
|
|
21
|
+
expanded: string | null;
|
|
22
|
+
}[];
|
|
23
|
+
}) => Promise<string>;
|
|
@@ -0,0 +1,53 @@
|
|
|
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
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.reachedExpandedStateOf = exports.reachedStateOf = void 0;
|
|
13
|
+
/**
|
|
14
|
+
* What an app drawing that missed `goal` reached instead: the declared state it matches exactly, or the closest one by
|
|
15
|
+
* differing pixels. `compare` compares the app drawing with one state's design; a state it fails to draw is skipped.
|
|
16
|
+
*/
|
|
17
|
+
const reachedStateOf = (options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
18
|
+
const { goal, states, compare } = options;
|
|
19
|
+
const compared = yield Promise.all(states.map((state) => __awaiter(void 0, void 0, void 0, function* () { return ({ state, result: yield compare(state).catch(() => null) }); })));
|
|
20
|
+
const exact = compared.find(({ state, result }) => state !== goal && (result === null || result === void 0 ? void 0 : result.kind) === 'ok');
|
|
21
|
+
if (exact)
|
|
22
|
+
return `reaches state ${exact.state} instead`;
|
|
23
|
+
const closest = compared
|
|
24
|
+
.flatMap(({ state, result }) => ((result === null || result === void 0 ? void 0 : result.kind) === 'diff' ? [{ state, pixels: result.pixels }] : []))
|
|
25
|
+
.sort((a, b) => a.pixels - b.pixels)[0];
|
|
26
|
+
return closest
|
|
27
|
+
? `reaches no declared state (closest ${closest.state}, ${closest.pixels} px)`
|
|
28
|
+
: 'reaches no declared state';
|
|
29
|
+
});
|
|
30
|
+
exports.reachedStateOf = reachedStateOf;
|
|
31
|
+
/**
|
|
32
|
+
* What a live page that missed `goal` reached instead, read from its `aria-expanded` controls: the declared states whose
|
|
33
|
+
* drawn controls it all shows, or the closest one by differing controls. A state that draws none is never reached.
|
|
34
|
+
*/
|
|
35
|
+
const reachedExpandedStateOf = (options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
36
|
+
const { goal, states, expectedOf, after } = options;
|
|
37
|
+
const compared = (yield Promise.all(states.map((state) => __awaiter(void 0, void 0, void 0, function* () { return ({ state, expected: yield expectedOf(state).catch(() => null) }); })))).flatMap(({ state, expected }) => {
|
|
38
|
+
const keys = Object.keys(expected !== null && expected !== void 0 ? expected : {});
|
|
39
|
+
if (!expected || keys.length === 0)
|
|
40
|
+
return [];
|
|
41
|
+
const differing = keys.filter((key) => { var _a, _b; return ((_b = (_a = after.find((control) => control.key === key)) === null || _a === void 0 ? void 0 : _a.expanded) !== null && _b !== void 0 ? _b : 'absent') !== expected[key]; }).length;
|
|
42
|
+
return [{ state, differing }];
|
|
43
|
+
});
|
|
44
|
+
const exact = compared.filter(({ state, differing }) => state !== goal && differing === 0).map(({ state }) => state);
|
|
45
|
+
if (exact.length > 0)
|
|
46
|
+
return `reaches state ${exact.join(' or ')} instead`;
|
|
47
|
+
const closest = compared.sort((a, b) => a.differing - b.differing)[0];
|
|
48
|
+
return closest
|
|
49
|
+
? `reaches no declared state (closest ${closest.state}, ${closest.differing} control${closest.differing === 1 ? ' differs' : 's differ'})`
|
|
50
|
+
: 'reaches no declared state';
|
|
51
|
+
});
|
|
52
|
+
exports.reachedExpandedStateOf = reachedExpandedStateOf;
|
|
53
|
+
//# sourceMappingURL=reached-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reached-state.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/design/system/reached-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { CompletenessGap } from './complete';
|
|
2
|
+
import { OpenPoint, OpenPointsInput, PartOpenPoints } from './open-points';
|
|
3
|
+
import { RenderIssue } from './render-check';
|
|
4
|
+
import { ResolvedProduct } from './resolve-product';
|
|
5
|
+
/**
|
|
6
|
+
* The open points of every part of a product, read from its part files, comments and sketches, plus the
|
|
7
|
+
* `rendered` findings of a check that drew the parts.
|
|
8
|
+
*/
|
|
9
|
+
export declare const readOpenPoints: (product: ResolvedProduct, rendered?: Pick<OpenPointsInput, "missingStates" | "contrasts" | "busyStates">) => PartOpenPoints[];
|
|
10
|
+
/** The points of one part, or none when it has no open point. */
|
|
11
|
+
export declare const partPointsOf: (list: PartOpenPoints[], part: string) => OpenPoint[];
|
|
12
|
+
/** The `CONTRAST` findings of a render check, once per part, state and path. */
|
|
13
|
+
export declare const contrastsOf: (issues: RenderIssue[]) => NonNullable<OpenPointsInput["contrasts"]>;
|
|
14
|
+
/** The controls of each part that lack a drawn state, from the gaps of a completeness check. */
|
|
15
|
+
export declare const missingStatesOf: (gaps: Map<string, CompletenessGap[] | string>) => NonNullable<OpenPointsInput["missingStates"]>;
|
|
16
|
+
/**
|
|
17
|
+
* The open points of `targets` as a sketch variant draws them, of the kinds the sketch closes itself, split into the
|
|
18
|
+
* ones the variant adds to the merged parts and the ones it inherits from them. `busy` names the drawn states of each
|
|
19
|
+
* side whose render shows ongoing work.
|
|
20
|
+
*/
|
|
21
|
+
export declare const sketchOpenPointsOf: ({ merged, variant, targets, busy, }: {
|
|
22
|
+
merged: ResolvedProduct;
|
|
23
|
+
variant: ResolvedProduct;
|
|
24
|
+
targets: string[];
|
|
25
|
+
busy?: Record<"merged" | "variant", NonNullable<OpenPointsInput["busyStates"]>>;
|
|
26
|
+
}) => {
|
|
27
|
+
added: PartOpenPoints[];
|
|
28
|
+
inherited: PartOpenPoints[];
|
|
29
|
+
};
|
|
30
|
+
/** The own parts outside `foundations/` that have no `implements` link; parts from the base product are left out. */
|
|
31
|
+
export declare const unlinkedPartsOf: (product: ResolvedProduct) => string[];
|
|
32
|
+
/** One line per part of `targets` that declares instant state switches, with its reason. */
|
|
33
|
+
export declare const instantLinesOf: (product: ResolvedProduct, targets: string[]) => string[];
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.instantLinesOf = exports.unlinkedPartsOf = exports.sketchOpenPointsOf = exports.missingStatesOf = exports.contrastsOf = exports.partPointsOf = exports.readOpenPoints = void 0;
|
|
4
|
+
const comment_1 = require("./comments/comment");
|
|
5
|
+
const complete_1 = require("./complete");
|
|
6
|
+
const open_points_1 = require("./open-points");
|
|
7
|
+
const resolve_product_1 = require("./resolve-product");
|
|
8
|
+
const part_definition_1 = require("./sketch/part-definition");
|
|
9
|
+
const merged_parts_1 = require("./sketch/merged-parts");
|
|
10
|
+
const sketch_1 = require("./sketch/sketch");
|
|
11
|
+
const isPair = (pair) => pair.from !== null && pair.to !== null;
|
|
12
|
+
const motionOf = (source) => {
|
|
13
|
+
var _a;
|
|
14
|
+
const states = (0, part_definition_1.stateNamesOf)(source);
|
|
15
|
+
if (!states)
|
|
16
|
+
return {};
|
|
17
|
+
return {
|
|
18
|
+
motion: {
|
|
19
|
+
states,
|
|
20
|
+
motions: (0, part_definition_1.motionRefsOf)(source).motions.filter(isPair),
|
|
21
|
+
unreachable: ((_a = (0, part_definition_1.unreachableOf)(source)) !== null && _a !== void 0 ? _a : []).filter((pair) => { var _a; return !!((_a = pair.reason) === null || _a === void 0 ? void 0 : _a.trim()); }).filter(isPair),
|
|
22
|
+
instant: (0, part_definition_1.instantOf)(source).kind === 'declared',
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
const partInputsOf = (product) => product.parts.map((part) => (Object.assign({ key: (0, resolve_product_1.partKeyOf)(part), layer: part.layer, controls: (0, part_definition_1.declaresControlsOf)(part.source), declaredNoControls: (0, part_definition_1.declaresNoControlsOf)(part.source) }, motionOf(part.source))));
|
|
27
|
+
/**
|
|
28
|
+
* The open points of every part of a product, read from its part files, comments and sketches, plus the
|
|
29
|
+
* `rendered` findings of a check that drew the parts.
|
|
30
|
+
*/
|
|
31
|
+
const readOpenPoints = (product, rendered = {}) => {
|
|
32
|
+
const source = { productDir: product.dir, product: product.name };
|
|
33
|
+
const directEdits = (0, merged_parts_1.directEditsOf)(product);
|
|
34
|
+
const editSketches = new Set(directEdits.flatMap(({ sketch }) => (sketch ? [sketch] : [])));
|
|
35
|
+
return (0, open_points_1.openPointsOf)(Object.assign({ parts: partInputsOf(product), comments: (0, comment_1.listComments)(Object.assign(Object.assign({}, source), { all: true })).comments.map((comment) => ({
|
|
36
|
+
id: comment.id,
|
|
37
|
+
part: comment.part,
|
|
38
|
+
state: comment.state,
|
|
39
|
+
answered: comment.addressed !== undefined,
|
|
40
|
+
resolved: comment.resolved !== undefined,
|
|
41
|
+
})), sketches: (0, sketch_1.listSketches)(source).flatMap((sketch) => {
|
|
42
|
+
var _a, _b;
|
|
43
|
+
return typeof sketch === 'string' || editSketches.has(sketch.target)
|
|
44
|
+
? []
|
|
45
|
+
: [
|
|
46
|
+
{
|
|
47
|
+
name: sketch.name,
|
|
48
|
+
target: sketch.target,
|
|
49
|
+
targets: sketch.targets,
|
|
50
|
+
status: sketch.status,
|
|
51
|
+
decision: (_b = (_a = sketch.decision) === null || _a === void 0 ? void 0 : _a.kind) !== null && _b !== void 0 ? _b : null,
|
|
52
|
+
},
|
|
53
|
+
];
|
|
54
|
+
}), directEdits }, rendered));
|
|
55
|
+
};
|
|
56
|
+
exports.readOpenPoints = readOpenPoints;
|
|
57
|
+
/** The points of one part, or none when it has no open point. */
|
|
58
|
+
const partPointsOf = (list, part) => { var _a, _b; return (_b = (_a = list.find((entry) => entry.part === part)) === null || _a === void 0 ? void 0 : _a.points) !== null && _b !== void 0 ? _b : []; };
|
|
59
|
+
exports.partPointsOf = partPointsOf;
|
|
60
|
+
/** The `CONTRAST` findings of a render check, once per part, state and path. */
|
|
61
|
+
const contrastsOf = (issues) => {
|
|
62
|
+
const seen = new Set();
|
|
63
|
+
return issues.flatMap(({ rule, part, state, path }) => {
|
|
64
|
+
const key = `${part} ${state} ${path}`;
|
|
65
|
+
if (rule !== 'CONTRAST' || seen.has(key))
|
|
66
|
+
return [];
|
|
67
|
+
seen.add(key);
|
|
68
|
+
return [{ part, state, path }];
|
|
69
|
+
});
|
|
70
|
+
};
|
|
71
|
+
exports.contrastsOf = contrastsOf;
|
|
72
|
+
/** The controls of each part that lack a drawn state, from the gaps of a completeness check. */
|
|
73
|
+
const missingStatesOf = (gaps) => [...gaps].flatMap(([part, found]) => typeof found === 'string'
|
|
74
|
+
? []
|
|
75
|
+
: [...new Set(found.filter(complete_1.isMissingStateGap).map((gap) => gap.target.slice(part.length + 1)))].map((control) => ({ part, control })));
|
|
76
|
+
exports.missingStatesOf = missingStatesOf;
|
|
77
|
+
/**
|
|
78
|
+
* The open points of `targets` as a sketch variant draws them, of the kinds the sketch closes itself, split into the
|
|
79
|
+
* ones the variant adds to the merged parts and the ones it inherits from them. `busy` names the drawn states of each
|
|
80
|
+
* side whose render shows ongoing work.
|
|
81
|
+
*/
|
|
82
|
+
const sketchOpenPointsOf = ({ merged, variant, targets, busy = { merged: [], variant: [] }, }) => {
|
|
83
|
+
const ownOf = (product, busyStates) => (0, open_points_1.openPointsOf)({
|
|
84
|
+
parts: partInputsOf(product).filter((part) => targets.includes(part.key)),
|
|
85
|
+
comments: [],
|
|
86
|
+
sketches: [],
|
|
87
|
+
busyStates,
|
|
88
|
+
}).flatMap(({ part, points }) => {
|
|
89
|
+
const own = points.filter((point) => open_points_1.SKETCH_KINDS.includes(point.kind));
|
|
90
|
+
return own.length > 0 ? [{ part, points: own }] : [];
|
|
91
|
+
});
|
|
92
|
+
return (0, open_points_1.sketchAddedPointsOf)(ownOf(merged, busy.merged), ownOf(variant, busy.variant));
|
|
93
|
+
};
|
|
94
|
+
exports.sketchOpenPointsOf = sketchOpenPointsOf;
|
|
95
|
+
/** The own parts outside `foundations/` that have no `implements` link; parts from the base product are left out. */
|
|
96
|
+
const unlinkedPartsOf = (product) => product.parts
|
|
97
|
+
.filter((part) => part.origin !== 'base' && part.layer !== 'foundations' && (0, part_definition_1.partLinkOf)(part.source).kind === 'none')
|
|
98
|
+
.map(resolve_product_1.partKeyOf);
|
|
99
|
+
exports.unlinkedPartsOf = unlinkedPartsOf;
|
|
100
|
+
/** One line per part of `targets` that declares instant state switches, with its reason. */
|
|
101
|
+
const instantLinesOf = (product, targets) => product.parts
|
|
102
|
+
.filter((part) => targets.includes((0, resolve_product_1.partKeyOf)(part)))
|
|
103
|
+
.flatMap((part) => {
|
|
104
|
+
const instant = (0, part_definition_1.instantOf)(part.source);
|
|
105
|
+
return instant.kind === 'declared'
|
|
106
|
+
? [`${(0, resolve_product_1.partKeyOf)(part)} declares instant state switches (no motion between its states): ${instant.reason}`]
|
|
107
|
+
: [];
|
|
108
|
+
});
|
|
109
|
+
exports.instantLinesOf = instantLinesOf;
|
|
110
|
+
//# sourceMappingURL=read-open-points.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-open-points.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/design/system/read-open-points.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const READY_USAGE = "ready <layer>/<name> --product <name> [--url <app dev server url>]";
|
|
2
|
+
/**
|
|
3
|
+
* `et design ready <layer>/<name> …` checks a part and writes its check record, and exits 1 with its open points, its
|
|
4
|
+
* other blockers or its failed `design actions` lines while it has any. It runs the slow rules of the part first when
|
|
5
|
+
* their result is missing or stale.
|
|
6
|
+
*/
|
|
7
|
+
export declare const designReady: (options: {
|
|
8
|
+
target: string;
|
|
9
|
+
argv: string[];
|
|
10
|
+
invocation: string;
|
|
11
|
+
}) => Promise<0 | 1 | 2>;
|