@ethlete/cli 3.0.0-next.26 → 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 +328 -0
- package/build-info.json +1 -0
- package/design/define-call.ts +72 -30
- package/design/define-part.ts +37 -4
- package/design/icon-sheet.ts +1 -1
- package/design/interaction-rows.ts +13 -6
- package/design/mark-part.ts +51 -1
- package/design/token-sheet.ts +1 -1
- package/design/web/frame-fit.ts +7 -0
- package/design/web/frame-surfaces.ts +294 -0
- package/design/web/frame.ts +41 -15
- package/design/web/surface-interactive.css +42 -0
- package/design/with-action.ts +29 -0
- package/package.json +3 -1
- package/src/index.js +9 -1
- package/src/index.js.map +1 -1
- package/src/lib/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/check.js +142 -16
- 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/design-command.d.ts +2 -0
- package/src/lib/design/design-command.js +160 -11
- package/src/lib/design/design-command.js.map +1 -1
- 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 +5 -1
- package/src/lib/design/mcp-command.js +29 -11
- 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 +1 -1
- 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 +28 -0
- 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 +4 -17
- package/src/lib/design/render-packages.js +20 -63
- package/src/lib/design/render-packages.js.map +1 -1
- package/src/lib/design/render-worker.js +1 -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 +21 -1
- package/src/lib/design/serve.js +133 -19
- 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 +25 -4
- package/src/lib/design/shot-command.js +132 -46
- package/src/lib/design/shot-command.js.map +1 -1
- package/src/lib/design/shot.d.ts +50 -0
- package/src/lib/design/shot.js +143 -17
- 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 +358 -126
- package/src/lib/design/sketch-command.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 +27 -8
- package/src/lib/design/studio-api.js +263 -58
- 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 +61 -6
- package/src/lib/design/system/check-system.js +479 -68
- package/src/lib/design/system/check-system.js.map +1 -1
- package/src/lib/design/system/comments/comment.d.ts +4 -1
- package/src/lib/design/system/comments/comment.js +13 -4
- package/src/lib/design/system/comments/comment.js.map +1 -1
- package/src/lib/design/system/comments/inbox.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 +1 -1
- package/src/lib/design/system/complete-command.js.map +1 -1
- package/src/lib/design/system/complete.d.ts +32 -1
- package/src/lib/design/system/complete.js +144 -48
- package/src/lib/design/system/complete.js.map +1 -1
- package/src/lib/design/system/component-outputs.d.ts +20 -0
- package/src/lib/design/system/component-outputs.js +86 -0
- package/src/lib/design/system/component-outputs.js.map +1 -0
- package/src/lib/design/system/contrast-check.d.ts +1 -1
- package/src/lib/design/system/contrast-check.js +14 -3
- package/src/lib/design/system/contrast-check.js.map +1 -1
- package/src/lib/design/system/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 +25 -3
- package/src/lib/design/system/drawn-open-points.js +65 -14
- package/src/lib/design/system/drawn-open-points.js.map +1 -1
- package/src/lib/design/system/dropped-props.d.ts +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 +4 -0
- package/src/lib/design/system/list-system.js +12 -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 +24 -6
- package/src/lib/design/system/open-points.js +59 -30
- package/src/lib/design/system/open-points.js.map +1 -1
- package/src/lib/design/system/part-build-ready.d.ts +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 +44 -6
- package/src/lib/design/system/part-ready.js +88 -17
- package/src/lib/design/system/part-ready.js.map +1 -1
- 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 +9 -3
- package/src/lib/design/system/read-open-points.js +38 -9
- package/src/lib/design/system/read-open-points.js.map +1 -1
- package/src/lib/design/system/ready-command.d.ts +6 -2
- package/src/lib/design/system/ready-command.js +32 -15
- package/src/lib/design/system/ready-command.js.map +1 -1
- package/src/lib/design/system/render-check.d.ts +50 -0
- package/src/lib/design/system/render-check.js +341 -88
- package/src/lib/design/system/render-check.js.map +1 -1
- package/src/lib/design/system/resolve-product.js +5 -0
- 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 +2 -1
- package/src/lib/design/system/rules/implements.js +26 -21
- package/src/lib/design/system/rules/implements.js.map +1 -1
- package/src/lib/design/system/rules/inline-svg.js +4 -1
- package/src/lib/design/system/rules/inline-svg.js.map +1 -1
- package/src/lib/design/system/rules/inline-ui-in-page-open.d.ts +13 -0
- package/src/lib/design/system/rules/inline-ui-in-page-open.js +5 -0
- package/src/lib/design/system/rules/inline-ui-in-page-open.js.map +1 -0
- package/src/lib/design/system/rules/inline-ui-in-page.d.ts +18 -0
- package/src/lib/design/system/rules/inline-ui-in-page.js +123 -0
- package/src/lib/design/system/rules/inline-ui-in-page.js.map +1 -0
- package/src/lib/design/system/rules/inline-ui.d.ts +16 -0
- package/src/lib/design/system/rules/inline-ui.js +100 -0
- package/src/lib/design/system/rules/inline-ui.js.map +1 -0
- package/src/lib/design/system/rules/motion.d.ts +1 -1
- package/src/lib/design/system/rules/motion.js +25 -17
- package/src/lib/design/system/rules/motion.js.map +1 -1
- package/src/lib/design/system/rules/native-title.d.ts +7 -0
- package/src/lib/design/system/rules/native-title.js +64 -0
- package/src/lib/design/system/rules/native-title.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 +4 -0
- package/src/lib/design/system/rules/stale-replace.js.map +1 -1
- package/src/lib/design/system/rules/state-in-component.d.ts +16 -0
- package/src/lib/design/system/rules/state-in-component.js +101 -0
- package/src/lib/design/system/rules/state-in-component.js.map +1 -0
- package/src/lib/design/system/rules/tailwind-classes.d.ts +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 +19 -1
- package/src/lib/design/system/sketch/baseline.js +29 -7
- package/src/lib/design/system/sketch/baseline.js.map +1 -1
- package/src/lib/design/system/sketch/check-sketches.d.ts +10 -0
- package/src/lib/design/system/sketch/check-sketches.js +50 -4
- package/src/lib/design/system/sketch/check-sketches.js.map +1 -1
- package/src/lib/design/system/sketch/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 +103 -30
- 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 +40 -10
- package/src/lib/design/system/sketch/merged-parts.js +112 -49
- 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 +21 -1
- package/src/lib/design/system/sketch/part-definition.js +79 -17
- package/src/lib/design/system/sketch/part-definition.js.map +1 -1
- package/src/lib/design/system/sketch/rebase-port.d.ts +24 -0
- package/src/lib/design/system/sketch/rebase-port.js +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 +63 -2
- package/src/lib/design/system/sketch/sketch.js +185 -30
- 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 +32 -0
- package/src/lib/design/system/sketch/unchanged-states.js +52 -13
- package/src/lib/design/system/sketch/unchanged-states.js.map +1 -1
- package/src/lib/design/system/sketch/unused-closure.js +16 -4
- package/src/lib/design/system/sketch/unused-closure.js.map +1 -1
- package/src/lib/design/system/sketch/viewed-shots.d.ts +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/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 +2 -0
- package/src/lib/design/system/ts-source.js +15 -1
- package/src/lib/design/system/ts-source.js.map +1 -1
- package/src/lib/design/system/unchanged-rows.d.ts +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 +19 -2
- package/src/lib/design/thumb.js +50 -15
- 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,134 @@
|
|
|
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.drawnStateNamesOf = exports.unchangedRowStatesOf = exports.forcesOnlyUnchangedControls = void 0;
|
|
13
|
+
const force_interactions_1 = require("../force-interactions");
|
|
14
|
+
const TAG = /<(\/?)([a-zA-Z][\w:.-]*)((?:[^>"']|"[^"]*"|'[^']*')*)>/g;
|
|
15
|
+
const ATTRIBUTE = /([^\s=/"'>]+)(?:\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s>]+)))?/g;
|
|
16
|
+
const VOID_ELEMENTS = new Set([
|
|
17
|
+
'area',
|
|
18
|
+
'base',
|
|
19
|
+
'br',
|
|
20
|
+
'col',
|
|
21
|
+
'embed',
|
|
22
|
+
'hr',
|
|
23
|
+
'img',
|
|
24
|
+
'input',
|
|
25
|
+
'link',
|
|
26
|
+
'meta',
|
|
27
|
+
'param',
|
|
28
|
+
'source',
|
|
29
|
+
'track',
|
|
30
|
+
'wbr',
|
|
31
|
+
]);
|
|
32
|
+
const tagsOf = (markup) => [...markup.replace(/<!--[\s\S]*?-->/g, '').matchAll(TAG)].map(([, slash, name = '', rest = '']) => ({
|
|
33
|
+
name: name.toLowerCase(),
|
|
34
|
+
closing: slash === '/',
|
|
35
|
+
selfClosing: rest.trimEnd().endsWith('/') || VOID_ELEMENTS.has(name.toLowerCase()),
|
|
36
|
+
attributes: new Map([...rest.matchAll(ATTRIBUTE)].map(([, attribute = '', double, single, bare]) => {
|
|
37
|
+
var _a, _b;
|
|
38
|
+
return [
|
|
39
|
+
attribute.toLowerCase(),
|
|
40
|
+
(_b = (_a = double !== null && double !== void 0 ? double : single) !== null && _a !== void 0 ? _a : bare) !== null && _b !== void 0 ? _b : '',
|
|
41
|
+
];
|
|
42
|
+
})),
|
|
43
|
+
}));
|
|
44
|
+
const customClassesOf = (tag) => { var _a; return ((_a = tag.attributes.get('class')) !== null && _a !== void 0 ? _a : '').split(/\s+/u).filter((name) => name !== '' && !name.startsWith('et-')); };
|
|
45
|
+
const isStyled = (tag) => { var _a; return customClassesOf(tag).length > 0 || ((_a = tag.attributes.get('style')) !== null && _a !== void 0 ? _a : '').trim() !== ''; };
|
|
46
|
+
const isSdkComponent = (tag) => tag.attributes.has('data-et-ng') &&
|
|
47
|
+
(tag.name.startsWith('et-') || [...tag.attributes.keys()].some((name) => name.startsWith('et-')));
|
|
48
|
+
/** The open tags inside the element opened at `start`, leaving out `svg` and embedded `data-et-part` subtrees. */
|
|
49
|
+
const contentOf = (tags, start) => {
|
|
50
|
+
const content = [];
|
|
51
|
+
let depth = 0;
|
|
52
|
+
let skippedAt = null;
|
|
53
|
+
for (const tag of tags.slice(start + 1)) {
|
|
54
|
+
if (tag.closing) {
|
|
55
|
+
if (depth === 0)
|
|
56
|
+
break;
|
|
57
|
+
depth--;
|
|
58
|
+
if (skippedAt === depth)
|
|
59
|
+
skippedAt = null;
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
if (skippedAt === null && (tag.name === 'svg' || tag.attributes.has('data-et-part')))
|
|
63
|
+
skippedAt = depth;
|
|
64
|
+
if (skippedAt === null)
|
|
65
|
+
content.push(tag);
|
|
66
|
+
if (!tag.selfClosing)
|
|
67
|
+
depth++;
|
|
68
|
+
else if (skippedAt === depth)
|
|
69
|
+
skippedAt = null;
|
|
70
|
+
}
|
|
71
|
+
return content;
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* Whether every element a body forces into an interaction is an SDK component the part renders through `ng()` and does
|
|
75
|
+
* not style: an `et-` element or attribute with no custom class or inline style, and no styled content outside icons and
|
|
76
|
+
* embedded parts. `body` is the markup a part draws outside a browser, where `ng()` marks each element `data-et-ng`.
|
|
77
|
+
* `false` when the body forces nothing.
|
|
78
|
+
*/
|
|
79
|
+
const forcesOnlyUnchangedControls = (markup) => {
|
|
80
|
+
const tags = tagsOf(markup);
|
|
81
|
+
const forced = tags.flatMap((tag, index) => (!tag.closing && tag.attributes.has(force_interactions_1.FORCE_ATTRIBUTE) ? [index] : []));
|
|
82
|
+
return (forced.length > 0 &&
|
|
83
|
+
forced.every((index) => {
|
|
84
|
+
const tag = tags[index];
|
|
85
|
+
return isSdkComponent(tag) && !isStyled(tag) && !contentOf(tags, index).some(isStyled);
|
|
86
|
+
}));
|
|
87
|
+
};
|
|
88
|
+
exports.forcesOnlyUnchangedControls = forcesOnlyUnchangedControls;
|
|
89
|
+
const isRecord = (value) => typeof value === 'object' && value !== null;
|
|
90
|
+
const bodyOf = (render, props) => __awaiter(void 0, void 0, void 0, function* () {
|
|
91
|
+
const drawn = yield render(props);
|
|
92
|
+
return isRecord(drawn) && typeof drawn['body'] === 'string' ? drawn['body'] : null;
|
|
93
|
+
});
|
|
94
|
+
/**
|
|
95
|
+
* The interaction states of each grid row whose forced elements are only SDK components the part leaves unchanged, so
|
|
96
|
+
* the row draws nothing the part styles: the grid shows such a row at rest only, and no tool draws or judges its
|
|
97
|
+
* interaction states. Read from the unrendered markup of the row's first interaction state.
|
|
98
|
+
*/
|
|
99
|
+
const unchangedRowStatesOf = (definition) => __awaiter(void 0, void 0, void 0, function* () {
|
|
100
|
+
const dropped = new Set();
|
|
101
|
+
if (!isRecord(definition) || typeof definition['render'] !== 'function')
|
|
102
|
+
return dropped;
|
|
103
|
+
const { states, grid } = definition;
|
|
104
|
+
const render = definition['render'];
|
|
105
|
+
if (!isRecord(states) || !isRecord(grid) || !Array.isArray(grid['columns']) || !isRecord(grid['rows']))
|
|
106
|
+
return dropped;
|
|
107
|
+
const interactions = grid['columns'].filter((column) => typeof column === 'string' && column !== 'rest');
|
|
108
|
+
for (const cells of Object.values(grid['rows'])) {
|
|
109
|
+
if (!isRecord(cells))
|
|
110
|
+
continue;
|
|
111
|
+
const forced = interactions
|
|
112
|
+
.map((column) => cells[column])
|
|
113
|
+
.filter((state) => typeof state === 'string' && state in states);
|
|
114
|
+
const first = forced[0];
|
|
115
|
+
if (first === undefined)
|
|
116
|
+
continue;
|
|
117
|
+
const body = yield bodyOf(render, states[first]).catch(() => null);
|
|
118
|
+
if (body !== null && (0, exports.forcesOnlyUnchangedControls)(body))
|
|
119
|
+
for (const state of forced)
|
|
120
|
+
dropped.add(state);
|
|
121
|
+
}
|
|
122
|
+
return dropped;
|
|
123
|
+
});
|
|
124
|
+
exports.unchangedRowStatesOf = unchangedRowStatesOf;
|
|
125
|
+
/** The names of the states of a part definition every tool draws: its `states` without the unchanged row states. */
|
|
126
|
+
const drawnStateNamesOf = (definition) => __awaiter(void 0, void 0, void 0, function* () {
|
|
127
|
+
const states = isRecord(definition) ? definition['states'] : undefined;
|
|
128
|
+
if (!isRecord(states) || Array.isArray(states))
|
|
129
|
+
return [];
|
|
130
|
+
const dropped = yield (0, exports.unchangedRowStatesOf)(definition);
|
|
131
|
+
return Object.keys(states).filter((state) => !dropped.has(state));
|
|
132
|
+
});
|
|
133
|
+
exports.drawnStateNamesOf = drawnStateNamesOf;
|
|
134
|
+
//# sourceMappingURL=unchanged-rows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unchanged-rows.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/design/system/unchanged-rows.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ResolvedProduct } from './resolve-product';
|
|
2
|
+
/** The decision files at the root of a product folder; none of them is an input of a drawing. */
|
|
3
|
+
export declare const ROOT_DECISION_FILES: string[];
|
|
4
|
+
/** The decision files of a product, relative to its folder, that differ from HEAD or are untracked; none outside git. */
|
|
5
|
+
export declare const uncommittedDecisionsOf: (product: ResolvedProduct) => string[];
|
|
6
|
+
export declare const uncommittedDecisionsWarningOf: (product: ResolvedProduct) => string | null;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.uncommittedDecisionsWarningOf = exports.uncommittedDecisionsOf = exports.ROOT_DECISION_FILES = void 0;
|
|
4
|
+
const child_process_1 = require("child_process");
|
|
5
|
+
/** The decision files at the root of a product folder; none of them is an input of a drawing. */
|
|
6
|
+
exports.ROOT_DECISION_FILES = ['go.json', 'accepted.json', 'merged.json', 'pictures.json'];
|
|
7
|
+
const DECISION_FILES = [...exports.ROOT_DECISION_FILES, ':(glob)sketches/*/sketch.json'];
|
|
8
|
+
const gitLines = (cwd, args) => (0, child_process_1.execFileSync)('git', [...args, '--', ...DECISION_FILES], {
|
|
9
|
+
cwd,
|
|
10
|
+
encoding: 'utf8',
|
|
11
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
12
|
+
})
|
|
13
|
+
.split('\n')
|
|
14
|
+
.filter(Boolean);
|
|
15
|
+
/** The decision files of a product, relative to its folder, that differ from HEAD or are untracked; none outside git. */
|
|
16
|
+
const uncommittedDecisionsOf = (product) => {
|
|
17
|
+
try {
|
|
18
|
+
return [
|
|
19
|
+
...new Set([
|
|
20
|
+
...gitLines(product.dir, ['diff', '--name-only', '--relative', 'HEAD']),
|
|
21
|
+
...gitLines(product.dir, ['ls-files', '--others', '--exclude-standard']),
|
|
22
|
+
]),
|
|
23
|
+
].sort();
|
|
24
|
+
}
|
|
25
|
+
catch (_a) {
|
|
26
|
+
return [];
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
exports.uncommittedDecisionsOf = uncommittedDecisionsOf;
|
|
30
|
+
const uncommittedDecisionsWarningOf = (product) => {
|
|
31
|
+
const files = (0, exports.uncommittedDecisionsOf)(product);
|
|
32
|
+
return files.length === 0
|
|
33
|
+
? null
|
|
34
|
+
: `WARNING UNCOMMITTED-DECISIONS ${product.name}: ${files.join(', ')} differ from HEAD - Studio or Tom commits ` +
|
|
35
|
+
'them; an agent never commits go.json';
|
|
36
|
+
};
|
|
37
|
+
exports.uncommittedDecisionsWarningOf = uncommittedDecisionsWarningOf;
|
|
38
|
+
//# sourceMappingURL=uncommitted-decisions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uncommitted-decisions.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/design/system/uncommitted-decisions.ts"],"names":[],"mappings":";;;AAAA,iDAA6C;AAG7C,iGAAiG;AACpF,QAAA,mBAAmB,GAAG,CAAC,SAAS,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;AAEhG,MAAM,cAAc,GAAG,CAAC,GAAG,2BAAmB,EAAE,+BAA+B,CAAC,CAAC;AAEjF,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,IAAc,EAAE,EAAE,CAC/C,IAAA,4BAAY,EAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC,EAAE;IACtD,GAAG;IACH,QAAQ,EAAE,MAAM;IAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;CACpC,CAAC;KACC,KAAK,CAAC,IAAI,CAAC;KACX,MAAM,CAAC,OAAO,CAAC,CAAC;AAErB,yHAAyH;AAClH,MAAM,sBAAsB,GAAG,CAAC,OAAwB,EAAY,EAAE;IAC3E,IAAI,CAAC;QACH,OAAO;YACL,GAAG,IAAI,GAAG,CAAC;gBACT,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;gBACvE,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,oBAAoB,CAAC,CAAC;aACzE,CAAC;SACH,CAAC,IAAI,EAAE,CAAC;IACX,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC,CAAC;AAXW,QAAA,sBAAsB,0BAWjC;AAEK,MAAM,6BAA6B,GAAG,CAAC,OAAwB,EAAiB,EAAE;IACvF,MAAM,KAAK,GAAG,IAAA,8BAAsB,EAAC,OAAO,CAAC,CAAC;IAE9C,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;QACvB,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,iCAAiC,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,4CAA4C;YAC5G,sCAAsC,CAAC;AAC/C,CAAC,CAAC;AAPW,QAAA,6BAA6B,iCAOxC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Browser } from '../thumb';
|
|
2
|
+
import { ResolvedProduct } from './resolve-product';
|
|
3
|
+
type Page = Awaited<ReturnType<Awaited<ReturnType<Browser['newContext']>>['newPage']>>;
|
|
4
|
+
export type RegionBox = {
|
|
5
|
+
x: number;
|
|
6
|
+
y: number;
|
|
7
|
+
width: number;
|
|
8
|
+
height: number;
|
|
9
|
+
};
|
|
10
|
+
/** One visible element of the app page as the uncovered-region check reads it. */
|
|
11
|
+
export type RegionNode = {
|
|
12
|
+
tag: string;
|
|
13
|
+
className: string;
|
|
14
|
+
box: RegionBox;
|
|
15
|
+
covered: boolean;
|
|
16
|
+
paints: boolean;
|
|
17
|
+
children: RegionNode[];
|
|
18
|
+
};
|
|
19
|
+
export type UncoveredRegion = {
|
|
20
|
+
element: string;
|
|
21
|
+
component: string | null;
|
|
22
|
+
box: RegionBox;
|
|
23
|
+
};
|
|
24
|
+
/** An app region that is meant to have no part, with the reason the live spec gives. */
|
|
25
|
+
export type Partless = {
|
|
26
|
+
selector: string;
|
|
27
|
+
reason: string;
|
|
28
|
+
};
|
|
29
|
+
export declare const MIN_REGION_SIDE = 4;
|
|
30
|
+
/**
|
|
31
|
+
* The topmost visible regions of `tree` that no covered element holds: an element with no covered element inside that
|
|
32
|
+
* paints something and measures at least `minSide` on both sides. An element that holds a covered one is a layout
|
|
33
|
+
* wrapper, so the check looks at its children instead.
|
|
34
|
+
*/
|
|
35
|
+
export declare const uncoveredRegionsOf: (tree: RegionNode, minSide?: number) => UncoveredRegion[];
|
|
36
|
+
/** What covers an app region: part component selectors, and the names of sketched parts no component implements yet. */
|
|
37
|
+
export type PartCover = {
|
|
38
|
+
selectors: string[];
|
|
39
|
+
names: string[];
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* What covers the app regions of `product`: the selector of each component a part implements, by route or by
|
|
43
|
+
* component, and for each target of an open sketch the selector its variants implement or, without one, its name,
|
|
44
|
+
* which matches an element named `<name>` or `<prefix>-<name>`.
|
|
45
|
+
*/
|
|
46
|
+
export declare const partCoverOf: (options: {
|
|
47
|
+
target: string;
|
|
48
|
+
product: ResolvedProduct;
|
|
49
|
+
}) => PartCover;
|
|
50
|
+
/** The element, its component and its box, as a report names one uncovered region. */
|
|
51
|
+
export declare const regionTextOf: (region: UncoveredRegion) => string;
|
|
52
|
+
export declare const UNCOVERED_HINT = "no part covers this visible app region; add a part that implements its component, or list it under \"partless\" in the live spec with a reason if it stays undesigned";
|
|
53
|
+
/** The line that reports one uncovered region of the page at `address`. */
|
|
54
|
+
export declare const uncoveredLineOf: (region: UncoveredRegion, address: string) => string;
|
|
55
|
+
/** The visible regions of the open app page that no part, no open sketch's part and no `partless` selector covers. */
|
|
56
|
+
export declare const uncoveredRegionsOnPage: (options: {
|
|
57
|
+
page: Page;
|
|
58
|
+
parts: PartCover;
|
|
59
|
+
partless: Partless[];
|
|
60
|
+
}) => Promise<UncoveredRegion[]>;
|
|
61
|
+
export {};
|
|
@@ -0,0 +1,171 @@
|
|
|
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.uncoveredRegionsOnPage = exports.uncoveredLineOf = exports.UNCOVERED_HINT = exports.regionTextOf = exports.partCoverOf = exports.uncoveredRegionsOf = exports.MIN_REGION_SIDE = void 0;
|
|
13
|
+
const fs_1 = require("fs");
|
|
14
|
+
const path_1 = require("path");
|
|
15
|
+
const actions_1 = require("./actions");
|
|
16
|
+
const part_definition_1 = require("./sketch/part-definition");
|
|
17
|
+
const sketch_1 = require("./sketch/sketch");
|
|
18
|
+
exports.MIN_REGION_SIDE = 4;
|
|
19
|
+
const REGION_TREE_SCRIPT = `(({ covered, named }) => {
|
|
20
|
+
const SKIP = new Set(['script', 'style', 'template', 'link', 'meta', 'noscript']);
|
|
21
|
+
const PAINTED = new Set(['img', 'svg', 'canvas', 'video', 'iframe', 'input', 'textarea', 'select', 'picture']);
|
|
22
|
+
const matches = (element) => named.some((name) => element.localName === name || element.localName.endsWith('-' + name)) ||
|
|
23
|
+
covered.some((selector) => {
|
|
24
|
+
try {
|
|
25
|
+
return element.matches(selector);
|
|
26
|
+
} catch {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
const visibleBoxOf = (element) => {
|
|
31
|
+
const box = element.getBoundingClientRect();
|
|
32
|
+
let left = Math.max(box.left, 0);
|
|
33
|
+
let top = Math.max(box.top, 0);
|
|
34
|
+
let right = Math.min(box.right, innerWidth);
|
|
35
|
+
let bottom = Math.min(box.bottom, innerHeight);
|
|
36
|
+
|
|
37
|
+
for (let current = element.parentElement; current; current = current.parentElement) {
|
|
38
|
+
const style = getComputedStyle(current);
|
|
39
|
+
|
|
40
|
+
if (style.overflowX === 'visible' && style.overflowY === 'visible') continue;
|
|
41
|
+
|
|
42
|
+
const clip = current.getBoundingClientRect();
|
|
43
|
+
|
|
44
|
+
left = Math.max(left, clip.left);
|
|
45
|
+
top = Math.max(top, clip.top);
|
|
46
|
+
right = Math.min(right, clip.right);
|
|
47
|
+
bottom = Math.min(bottom, clip.bottom);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return { x: left, y: top, width: Math.max(right - left, 0), height: Math.max(bottom - top, 0) };
|
|
51
|
+
};
|
|
52
|
+
const transparent = (color) => color === 'transparent' || /rgba\\([^)]*,\\s*0\\)$/.test(color);
|
|
53
|
+
const paints = (element) => {
|
|
54
|
+
if (PAINTED.has(element.localName)) return true;
|
|
55
|
+
|
|
56
|
+
const style = getComputedStyle(element);
|
|
57
|
+
|
|
58
|
+
if (!transparent(style.backgroundColor) || style.backgroundImage !== 'none' || style.boxShadow !== 'none')
|
|
59
|
+
return true;
|
|
60
|
+
if (['Top', 'Right', 'Bottom', 'Left'].some((side) =>
|
|
61
|
+
parseFloat(style['border' + side + 'Width']) > 0 && style['border' + side + 'Style'] !== 'none' &&
|
|
62
|
+
!transparent(style['border' + side + 'Color'])))
|
|
63
|
+
return true;
|
|
64
|
+
|
|
65
|
+
return [...element.childNodes].some((node) => node.nodeType === Node.TEXT_NODE && node.textContent.trim() !== '');
|
|
66
|
+
};
|
|
67
|
+
const nodeOf = (element) => {
|
|
68
|
+
if (SKIP.has(element.localName)) return null;
|
|
69
|
+
if (!element.checkVisibility({ opacityProperty: true, visibilityProperty: true })) return null;
|
|
70
|
+
|
|
71
|
+
const isCovered = matches(element);
|
|
72
|
+
|
|
73
|
+
return {
|
|
74
|
+
tag: element.localName,
|
|
75
|
+
className: (element.getAttribute('class') ?? '').trim(),
|
|
76
|
+
box: visibleBoxOf(element),
|
|
77
|
+
covered: isCovered,
|
|
78
|
+
paints: !isCovered && paints(element),
|
|
79
|
+
children: isCovered ? [] : [...element.children].map(nodeOf).filter((node) => node !== null),
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
return nodeOf(document.body);
|
|
84
|
+
})`;
|
|
85
|
+
const hasCovered = (node) => node.covered || node.children.some(hasCovered);
|
|
86
|
+
const paintsAny = (node) => node.paints || node.children.some(paintsAny);
|
|
87
|
+
const describe = (node) => `<${node.tag}${node.className ? ` class="${node.className}"` : ''}>`;
|
|
88
|
+
/**
|
|
89
|
+
* The topmost visible regions of `tree` that no covered element holds: an element with no covered element inside that
|
|
90
|
+
* paints something and measures at least `minSide` on both sides. An element that holds a covered one is a layout
|
|
91
|
+
* wrapper, so the check looks at its children instead.
|
|
92
|
+
*/
|
|
93
|
+
const uncoveredRegionsOf = (tree, minSide = exports.MIN_REGION_SIDE) => {
|
|
94
|
+
const visit = (node, component) => {
|
|
95
|
+
if (node.covered)
|
|
96
|
+
return [];
|
|
97
|
+
const owner = node.tag.includes('-') ? node.tag : component;
|
|
98
|
+
const big = node.box.width >= minSide && node.box.height >= minSide;
|
|
99
|
+
if (!hasCovered(node) && big)
|
|
100
|
+
return paintsAny(node)
|
|
101
|
+
? [
|
|
102
|
+
{
|
|
103
|
+
element: describe(node),
|
|
104
|
+
component: owner,
|
|
105
|
+
box: {
|
|
106
|
+
x: Math.round(node.box.x),
|
|
107
|
+
y: Math.round(node.box.y),
|
|
108
|
+
width: Math.round(node.box.width),
|
|
109
|
+
height: Math.round(node.box.height),
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
]
|
|
113
|
+
: [];
|
|
114
|
+
return node.children.flatMap((child) => visit(child, owner));
|
|
115
|
+
};
|
|
116
|
+
return visit(tree, null);
|
|
117
|
+
};
|
|
118
|
+
exports.uncoveredRegionsOf = uncoveredRegionsOf;
|
|
119
|
+
const selectorOfLink = (target, source) => {
|
|
120
|
+
const link = (0, part_definition_1.partLinkOf)(source);
|
|
121
|
+
const path = link.kind === 'component' ? link.path : link.kind === 'route' ? link.component : null;
|
|
122
|
+
const file = path === null ? null : (0, path_1.resolve)(target, path);
|
|
123
|
+
return file && (0, fs_1.existsSync)(file) ? (0, actions_1.componentSelectorOf)((0, fs_1.readFileSync)(file, 'utf8')) : null;
|
|
124
|
+
};
|
|
125
|
+
/**
|
|
126
|
+
* What covers the app regions of `product`: the selector of each component a part implements, by route or by
|
|
127
|
+
* component, and for each target of an open sketch the selector its variants implement or, without one, its name,
|
|
128
|
+
* which matches an element named `<name>` or `<prefix>-<name>`.
|
|
129
|
+
*/
|
|
130
|
+
const partCoverOf = (options) => {
|
|
131
|
+
const { target, product } = options;
|
|
132
|
+
const selectors = product.parts.flatMap((part) => { var _a; return (_a = selectorOfLink(target, part.source)) !== null && _a !== void 0 ? _a : []; });
|
|
133
|
+
const names = [];
|
|
134
|
+
for (const sketch of (0, sketch_1.listSketches)({ productDir: product.dir, product: product.name })) {
|
|
135
|
+
if (typeof sketch === 'string')
|
|
136
|
+
continue;
|
|
137
|
+
for (const key of sketch.targets) {
|
|
138
|
+
const parsed = (0, sketch_1.parseTarget)(key);
|
|
139
|
+
if (typeof parsed === 'string')
|
|
140
|
+
continue;
|
|
141
|
+
const linked = sketch.variants.flatMap((variant) => {
|
|
142
|
+
var _a;
|
|
143
|
+
const file = (0, path_1.resolve)((0, sketch_1.variantDirOf)(sketch, variant), parsed.layer, parsed.name, `${parsed.name}.ts`);
|
|
144
|
+
return (0, fs_1.existsSync)(file) ? ((_a = selectorOfLink(target, (0, fs_1.readFileSync)(file, 'utf8'))) !== null && _a !== void 0 ? _a : []) : [];
|
|
145
|
+
});
|
|
146
|
+
if (linked.length > 0)
|
|
147
|
+
selectors.push(...linked);
|
|
148
|
+
else
|
|
149
|
+
names.push(parsed.name);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return { selectors: [...new Set(selectors)], names: [...new Set(names)] };
|
|
153
|
+
};
|
|
154
|
+
exports.partCoverOf = partCoverOf;
|
|
155
|
+
/** The element, its component and its box, as a report names one uncovered region. */
|
|
156
|
+
const regionTextOf = (region) => `${region.element}${region.component && !region.element.startsWith(`<${region.component}`) ? ` in <${region.component}>` : ''} at ${region.box.x},${region.box.y} ${region.box.width}x${region.box.height}`;
|
|
157
|
+
exports.regionTextOf = regionTextOf;
|
|
158
|
+
exports.UNCOVERED_HINT = 'no part covers this visible app region; add a part that implements its component, or list it under "partless" in the live spec with a reason if it stays undesigned';
|
|
159
|
+
/** The line that reports one uncovered region of the page at `address`. */
|
|
160
|
+
const uncoveredLineOf = (region, address) => `UNCOVERED: ${(0, exports.regionTextOf)(region)} on ${address} - ${exports.UNCOVERED_HINT}`;
|
|
161
|
+
exports.uncoveredLineOf = uncoveredLineOf;
|
|
162
|
+
/** The visible regions of the open app page that no part, no open sketch's part and no `partless` selector covers. */
|
|
163
|
+
const uncoveredRegionsOnPage = (options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
164
|
+
const tree = (yield options.page.evaluate(`${REGION_TREE_SCRIPT}(${JSON.stringify({
|
|
165
|
+
covered: [...options.parts.selectors, ...options.partless.map((entry) => entry.selector)],
|
|
166
|
+
named: options.parts.names,
|
|
167
|
+
})})`));
|
|
168
|
+
return tree ? (0, exports.uncoveredRegionsOf)(tree) : [];
|
|
169
|
+
});
|
|
170
|
+
exports.uncoveredRegionsOnPage = uncoveredRegionsOnPage;
|
|
171
|
+
//# sourceMappingURL=uncovered-regions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uncovered-regions.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/design/system/uncovered-regions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ResolvedProduct } from './resolve-product';
|
|
2
|
+
/**
|
|
3
|
+
* The keys of the base parts that no own part or token part of the product imports, directly or
|
|
4
|
+
* through other parts, and whose same-named `@ethlete/<lib>/design` module none of them reaches either. A
|
|
5
|
+
* `controls[*].part` ref or an `ng(…, { imports: ['X_IMPORTS'] })` name in such a part counts as use too.
|
|
6
|
+
*/
|
|
7
|
+
export declare const unusedBasePartsOf: (product: ResolvedProduct) => Set<string>;
|
|
@@ -0,0 +1,76 @@
|
|
|
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.unusedBasePartsOf = void 0;
|
|
7
|
+
const typescript_1 = __importDefault(require("typescript"));
|
|
8
|
+
const reachable_files_1 = require("./reachable-files");
|
|
9
|
+
const resolve_product_1 = require("./resolve-product");
|
|
10
|
+
const ts_source_1 = require("./ts-source");
|
|
11
|
+
const drawsReachedModule = (options) => (0, ts_source_1.importsOf)(options.part.source).some((specifier) => {
|
|
12
|
+
const file = (0, reachable_files_1.sdkDesignFileOf)(options.root, specifier);
|
|
13
|
+
return file !== null && specifier.endsWith(`/${options.part.name}`) && options.reached.has(file);
|
|
14
|
+
});
|
|
15
|
+
const propertyNameOf = (node) => typescript_1.default.isPropertyAssignment(node) && (typescript_1.default.isIdentifier(node.name) || typescript_1.default.isStringLiteral(node.name))
|
|
16
|
+
? node.name.text
|
|
17
|
+
: null;
|
|
18
|
+
const kebabOf = (name) => name.toLowerCase().replace(/_/gu, '-');
|
|
19
|
+
/** The part keys a source names in a `controls[*].part` and the `X_IMPORTS` names of its `ng(…, { imports })` calls. */
|
|
20
|
+
const namedUsesOf = (source) => {
|
|
21
|
+
const parts = new Set();
|
|
22
|
+
const imports = new Set();
|
|
23
|
+
const visit = (node, inControls) => {
|
|
24
|
+
if (typescript_1.default.isPropertyAssignment(node) && propertyNameOf(node) === 'controls')
|
|
25
|
+
inControls = true;
|
|
26
|
+
if (inControls && typescript_1.default.isPropertyAssignment(node) && propertyNameOf(node) === 'part') {
|
|
27
|
+
if (typescript_1.default.isStringLiteralLike(node.initializer))
|
|
28
|
+
parts.add(node.initializer.text);
|
|
29
|
+
}
|
|
30
|
+
if (typescript_1.default.isCallExpression(node) && typescript_1.default.isIdentifier(node.expression) && node.expression.text === 'ng') {
|
|
31
|
+
for (const argument of node.arguments) {
|
|
32
|
+
if (!typescript_1.default.isObjectLiteralExpression(argument))
|
|
33
|
+
continue;
|
|
34
|
+
for (const property of argument.properties) {
|
|
35
|
+
if (propertyNameOf(property) !== 'imports' || !typescript_1.default.isPropertyAssignment(property))
|
|
36
|
+
continue;
|
|
37
|
+
if (!typescript_1.default.isArrayLiteralExpression(property.initializer))
|
|
38
|
+
continue;
|
|
39
|
+
for (const element of property.initializer.elements) {
|
|
40
|
+
if (typescript_1.default.isStringLiteralLike(element) && element.text.endsWith('_IMPORTS')) {
|
|
41
|
+
imports.add(kebabOf(element.text.slice(0, -'_IMPORTS'.length)));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
typescript_1.default.forEachChild(node, (child) => visit(child, inControls));
|
|
48
|
+
};
|
|
49
|
+
visit((0, ts_source_1.sourceFileOf)(source), false);
|
|
50
|
+
return { parts, imports };
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* The keys of the base parts that no own part or token part of the product imports, directly or
|
|
54
|
+
* through other parts, and whose same-named `@ethlete/<lib>/design` module none of them reaches either. A
|
|
55
|
+
* `controls[*].part` ref or an `ng(…, { imports: ['X_IMPORTS'] })` name in such a part counts as use too.
|
|
56
|
+
*/
|
|
57
|
+
const unusedBasePartsOf = (product) => {
|
|
58
|
+
const base = product.parts.filter((part) => part.origin === 'base');
|
|
59
|
+
if (base.length === 0)
|
|
60
|
+
return new Set();
|
|
61
|
+
const tokens = new Set(product.tokens);
|
|
62
|
+
const roots = product.parts.filter((part) => part.origin !== 'base' || tokens.has((0, resolve_product_1.partKeyOf)(part)));
|
|
63
|
+
const { files, sdkDesign } = (0, reachable_files_1.reachableFilesOf)(product, roots);
|
|
64
|
+
const named = [...files].filter(([file]) => !file.endsWith('.css')).map(([, source]) => namedUsesOf(source));
|
|
65
|
+
const namedKeys = new Set(named.flatMap((uses) => [...uses.parts]));
|
|
66
|
+
const namedImports = new Set(named.flatMap((uses) => [...uses.imports]));
|
|
67
|
+
const root = (0, reachable_files_1.repoRootOf)(product);
|
|
68
|
+
return new Set(base
|
|
69
|
+
.filter((part) => !files.has(part.file) &&
|
|
70
|
+
!drawsReachedModule({ part, root, reached: sdkDesign }) &&
|
|
71
|
+
!namedKeys.has((0, resolve_product_1.partKeyOf)(part)) &&
|
|
72
|
+
!(part.layer === 'components' && namedImports.has(part.name)))
|
|
73
|
+
.map(resolve_product_1.partKeyOf));
|
|
74
|
+
};
|
|
75
|
+
exports.unusedBasePartsOf = unusedBasePartsOf;
|
|
76
|
+
//# sourceMappingURL=unused-base-parts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unused-base-parts.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/design/system/unused-base-parts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { DesignConfig } from '../paths';
|
|
2
|
+
import { ShootStates } from './compare-command';
|
|
3
|
+
import { StartHarnessServer } from './harness-server';
|
|
4
|
+
import { SketchEvidence, VisibleChangeVerdict } from './visible-change';
|
|
5
|
+
/**
|
|
6
|
+
* The commit the gate compares HEAD with: `base`, else the merge base of HEAD and `branch` (a product's
|
|
7
|
+
* `harness.baseBranch`), else of HEAD and the branch `origin/HEAD` names.
|
|
8
|
+
*/
|
|
9
|
+
export declare const baseCommitOf: (options: {
|
|
10
|
+
root: string;
|
|
11
|
+
base: string | undefined;
|
|
12
|
+
branch?: string;
|
|
13
|
+
}) => string;
|
|
14
|
+
/** Each `sketch.json` of the product a commit in base..HEAD touched, as that commit left it or, if it deleted it, as before. */
|
|
15
|
+
export declare const sketchEvidenceOf: (options: {
|
|
16
|
+
root: string;
|
|
17
|
+
base: string;
|
|
18
|
+
productDir: string;
|
|
19
|
+
}) => SketchEvidence[];
|
|
20
|
+
/** The parts a sketch merge recorded in the product's `merged.json` in base..HEAD, also of a sketch never committed. */
|
|
21
|
+
export declare const mergedInRangeOf: (options: {
|
|
22
|
+
root: string;
|
|
23
|
+
base: string;
|
|
24
|
+
productDir: string;
|
|
25
|
+
}) => Set<string>;
|
|
26
|
+
/**
|
|
27
|
+
* `et design check --product <name>… --visible-change [--base <rev>] [--part <part>…]` draws each harness part's states in the app at
|
|
28
|
+
* the base commit and at HEAD, against HEAD's design, and fails a part that looks different unless a picked or merged
|
|
29
|
+
* sketch of it is in base..HEAD or every changed state moved closer to the design.
|
|
30
|
+
*/
|
|
31
|
+
export declare const checkVisibleChange: (options: {
|
|
32
|
+
target: string;
|
|
33
|
+
config: DesignConfig;
|
|
34
|
+
products: string[];
|
|
35
|
+
base: string | undefined;
|
|
36
|
+
parts?: string[];
|
|
37
|
+
shoot?: ShootStates;
|
|
38
|
+
start?: StartHarnessServer;
|
|
39
|
+
onVerdict?: (options: {
|
|
40
|
+
product: string;
|
|
41
|
+
verdict: VisibleChangeVerdict;
|
|
42
|
+
line: string;
|
|
43
|
+
}) => void;
|
|
44
|
+
onProblem?: (options: {
|
|
45
|
+
product: string;
|
|
46
|
+
line: string;
|
|
47
|
+
}) => void;
|
|
48
|
+
}) => Promise<number>;
|