@aceshooting/lyra-ui 27.0.0 → 28.0.0
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 +55 -63
- package/README.md +7 -3
- package/dist/cli/css-declarations.mjs +1 -0
- package/dist/cli/lyra-rename-ledger.mjs +1 -1
- package/dist/cli/migrate-wa.mjs +9 -4
- package/dist/cli/migration-contract.json +1 -1
- package/dist/cli/migration-renames.mjs +2 -2
- package/dist/cli/migration-theme-scopes.mjs +3 -0
- package/dist/cli/theme-scope-vocabulary.generated.mjs +1 -0
- package/dist/components/agent-tools/activity-feed/activity-feed.class.js +1 -1
- package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.class.js +1 -1
- package/dist/components/agent-tools/agent-question/agent-question.class.js +1 -1
- package/dist/components/agent-tools/agent-run/agent-run.class.js +1 -1
- package/dist/components/agent-tools/agent-trace/agent-trace.class.js +1 -1
- package/dist/components/agent-tools/approval-queue/approval-queue.class.js +1 -1
- package/dist/components/agent-tools/artifact-panel/artifact-panel.class.js +1 -1
- package/dist/components/agent-tools/background-runs/background-runs.class.js +1 -1
- package/dist/components/agent-tools/browser-frame/browser-frame.class.js +1 -1
- package/dist/components/agent-tools/budget-meter/budget-meter.class.js +1 -1
- package/dist/components/agent-tools/change-review/change-review.class.js +1 -1
- package/dist/components/agent-tools/commit-card/commit-card.class.js +1 -1
- package/dist/components/agent-tools/compare-panel/compare-panel.class.js +1 -1
- package/dist/components/agent-tools/confirm-bar/confirm-bar.class.js +1 -1
- package/dist/components/agent-tools/connector-manager/connector-manager.class.js +1 -1
- package/dist/components/agent-tools/context-inspector/context-inspector.class.js +1 -1
- package/dist/components/agent-tools/eval-dataset/eval-dataset.class.js +1 -1
- package/dist/components/agent-tools/eval-result/eval-result.class.js +1 -1
- package/dist/components/agent-tools/evaluation-run/evaluation-run.class.js +1 -1
- package/dist/components/agent-tools/mcp-app/mcp-app.class.js +1 -1
- package/dist/components/agent-tools/permission-grant/permission-grant.class.js +1 -1
- package/dist/components/agent-tools/permission-rules/permission-rules.class.js +1 -1
- package/dist/components/agent-tools/policy-summary/policy-summary.class.js +1 -1
- package/dist/components/agent-tools/prompt-studio/prompt-studio.class.js +1 -1
- package/dist/components/agent-tools/result-card/result-field.class.js +1 -1
- package/dist/components/agent-tools/schema-viewer/schema-viewer.class.js +1 -1
- package/dist/components/agent-tools/span-waterfall/span-waterfall.class.js +1 -1
- package/dist/components/agent-tools/stack-trace/stack-trace.class.js +1 -1
- package/dist/components/agent-tools/subagent-panel/subagent-panel.class.js +2 -2
- package/dist/components/agent-tools/task-list/task-list.class.js +2 -2
- package/dist/components/agent-tools/terminal/terminal.class.js +1 -1
- package/dist/components/agent-tools/test-results/test-results.class.js +1 -1
- package/dist/components/agent-tools/thinking-panel/thinking-panel.class.js +1 -1
- package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.js +1 -1
- package/dist/components/agent-tools/tool-call-block/tool-call-block.class.js +1 -1
- package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.js +1 -1
- package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +1 -1
- package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.class.js +1 -1
- package/dist/components/agent-tools/tool-result-view/tool-result-view.class.js +1 -1
- package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.js +1 -1
- package/dist/components/agent-tools/tool-timeline/tool-timeline.class.js +1 -1
- package/dist/components/agent-tools/trace-tree/trace-tree.class.js +2 -2
- package/dist/components/charts/chart/box-plot.class.js +1 -1
- package/dist/components/charts/chart/chart-token-cache.js +2 -2
- package/dist/components/charts/chart/chart.class.d.ts +1 -1
- package/dist/components/charts/chart/chart.class.js +3 -3
- package/dist/components/charts/chart/histogram.class.js +1 -1
- package/dist/components/charts/chart/lite-chart.class.js +1 -1
- package/dist/components/conversation/agent-workspace/agent-workspace.class.js +1 -1
- package/dist/components/conversation/audio-visualizer/audio-visualizer.class.js +1 -1
- package/dist/components/conversation/branch-picker/branch-picker.class.js +1 -1
- package/dist/components/conversation/chat-composer/chat-composer.class.js +1 -1
- package/dist/components/conversation/chat-message/chat-message.class.js +1 -1
- package/dist/components/conversation/chat-viewport/chat-viewport.class.js +1 -1
- package/dist/components/conversation/checkpoint/checkpoint.class.js +1 -1
- package/dist/components/conversation/code-block/code-block-base.class.js +1 -1
- package/dist/components/conversation/code-block/code-block-core.class.js +1 -1
- package/dist/components/conversation/code-block/code-block.class.js +1 -1
- package/dist/components/conversation/conversation-item/conversation-item.class.js +1 -1
- package/dist/components/conversation/generation-metrics/generation-metrics.class.js +1 -1
- package/dist/components/conversation/handoff-divider/handoff-divider.class.js +1 -1
- package/dist/components/conversation/markdown/markdown-base.class.js +1 -1
- package/dist/components/conversation/markdown/markdown-core.class.js +1 -1
- package/dist/components/conversation/markdown/markdown.class.js +1 -1
- package/dist/components/conversation/message-actions/message-actions.class.js +1 -1
- package/dist/components/conversation/message-feedback/message-feedback.class.js +1 -1
- package/dist/components/conversation/message-parts/message-parts.class.js +1 -1
- package/dist/components/conversation/model-select/model-select.class.js +1 -1
- package/dist/components/conversation/model-settings-panel/model-settings-panel.class.js +1 -1
- package/dist/components/conversation/prompt-input/prompt-input.class.js +1 -1
- package/dist/components/conversation/prompt-queue/prompt-queue.class.js +1 -1
- package/dist/components/conversation/push-to-talk/push-to-talk.class.js +1 -1
- package/dist/components/conversation/realtime-session/realtime-session.class.js +1 -1
- package/dist/components/conversation/selection-toolbar/selection-toolbar.class.js +1 -1
- package/dist/components/conversation/stream-status/stream-status.class.js +1 -1
- package/dist/components/conversation/suggestion-chips/suggestion-chips.class.js +1 -1
- package/dist/components/conversation/thread-list/thread-list.class.js +1 -1
- package/dist/components/conversation/transcript-feed/transcript-feed.class.js +1 -1
- package/dist/components/conversation/typing-indicator/typing-indicator.class.js +1 -1
- package/dist/components/conversation/usage-badge/usage-badge.class.js +1 -1
- package/dist/components/conversation/voice-picker/voice-picker.class.js +1 -1
- package/dist/components/data/calendar/calendar.class.js +1 -1
- package/dist/components/data/condition-builder/condition-builder.class.js +1 -1
- package/dist/components/data/context-meter/context-meter.class.js +1 -1
- package/dist/components/data/data-grid/data-grid.class.d.ts +2 -2
- package/dist/components/data/data-grid/data-grid.class.js +3 -3
- package/dist/components/data/document-library/document-library.class.js +1 -1
- package/dist/components/data/env-list/env-list.class.js +1 -1
- package/dist/components/data/file-tree/file-tree.class.d.ts +2 -2
- package/dist/components/data/file-tree/file-tree.class.js +1 -1
- package/dist/components/data/flow-canvas/flow-canvas.class.js +1 -1
- package/dist/components/data/flow-controls/flow-controls.class.js +1 -1
- package/dist/components/data/flow-minimap/flow-minimap.class.js +1 -1
- package/dist/components/data/flow-node/flow-node.class.js +1 -1
- package/dist/components/data/flow-run-status/flow-run-status.class.js +1 -1
- package/dist/components/data/funnel/funnel.class.js +1 -1
- package/dist/components/data/gauge/gauge.class.js +1 -1
- package/dist/components/data/graph-query-builder/graph-query-builder.class.js +1 -1
- package/dist/components/data/heatmap/heatmap.class.js +1 -1
- package/dist/components/data/pagination/pagination.class.d.ts +2 -0
- package/dist/components/data/pagination/pagination.class.js +1 -1
- package/dist/components/data/pagination/pagination.styles.js +1 -1
- package/dist/components/data/sequence-strip/sequence-strip.class.js +1 -1
- package/dist/components/data/sparkline/sparkline.class.js +1 -1
- package/dist/components/data/stat/stat.class.js +1 -1
- package/dist/components/data/table/table.class.d.ts +23 -2
- package/dist/components/data/table/table.class.js +5 -3
- package/dist/components/data/table/table.styles.js +1 -1
- package/dist/components/data/timeline/timeline.class.js +1 -1
- package/dist/components/data/tree/tree.class.js +1 -1
- package/dist/components/data/word-cloud/word-cloud.class.js +1 -1
- package/dist/components/forms/button/button.class.js +1 -1
- package/dist/components/forms/checkbox/checkbox.class.js +1 -1
- package/dist/components/forms/checkbox-group/checkbox-group.class.js +1 -1
- package/dist/components/forms/code-editor/code-editor.class.js +1 -1
- package/dist/components/forms/color-picker/color-picker.class.d.ts +8 -4
- package/dist/components/forms/color-picker/color-picker.class.js +2 -2
- package/dist/components/forms/combobox/combobox.class.js +1 -1
- package/dist/components/forms/country-picker/country-picker.class.js +1 -1
- package/dist/components/forms/currency-picker/currency-picker.class.js +1 -1
- package/dist/components/forms/date-picker/date-input.class.js +1 -1
- package/dist/components/forms/date-picker/date-picker.class.js +1 -1
- package/dist/components/forms/emoji-picker/emoji-data-loader.js +1 -1
- package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts +7 -4
- package/dist/components/forms/emoji-picker/emoji-picker.class.js +5 -5
- package/dist/components/forms/icon-button/icon-button.class.d.ts +4 -0
- package/dist/components/forms/icon-button/icon-button.class.js +1 -1
- package/dist/components/forms/icon-button/icon-button.styles.js +1 -1
- package/dist/components/forms/input/input-shared.js +1 -1
- package/dist/components/forms/input/input.class.js +1 -1
- package/dist/components/forms/input/native-time-input.class.js +1 -1
- package/dist/components/forms/input/number-input.class.js +1 -1
- package/dist/components/forms/input/time-input.class.js +1 -1
- package/dist/components/forms/locale-picker/locale-picker.class.js +1 -1
- package/dist/components/forms/otp-input/otp-input.class.js +1 -1
- package/dist/components/forms/phone-input/phone-input.class.js +1 -1
- package/dist/components/forms/radio/radio-group.class.js +1 -1
- package/dist/components/forms/radio/radio.class.js +1 -1
- package/dist/components/forms/rubric-form/rubric-form.class.js +4 -4
- package/dist/components/forms/select/select.class.js +1 -1
- package/dist/components/forms/signature-pad/signature-pad.class.js +1 -1
- package/dist/components/forms/slider/slider.class.js +1 -1
- package/dist/components/forms/switch/switch.class.js +1 -1
- package/dist/components/forms/textarea/textarea.class.js +1 -1
- package/dist/components/forms/time-range/time-range.class.js +1 -1
- package/dist/components/forms/time-zone-picker/time-zone-picker.class.js +1 -1
- package/dist/components/forms/token-input/token-input.class.js +1 -1
- package/dist/components/forms/unit-picker/unit-picker.class.js +1 -1
- package/dist/components/layout/app-rail/app-rail-item.class.js +1 -1
- package/dist/components/layout/app-rail/app-rail.class.d.ts +70 -7
- package/dist/components/layout/app-rail/app-rail.class.js +16 -4
- package/dist/components/layout/app-rail/app-rail.styles.js +1 -1
- package/dist/components/layout/app-rail-group/app-rail-group.class.js +1 -1
- package/dist/components/layout/breadcrumb/breadcrumb.class.js +1 -1
- package/dist/components/layout/card/card.class.js +1 -1
- package/dist/components/layout/carousel/carousel.class.js +1 -1
- package/dist/components/layout/command-palette/command-palette.class.js +1 -1
- package/dist/components/layout/dashboard-grid/dashboard-grid.class.js +1 -1
- package/dist/components/layout/details/accordion-item.class.js +1 -1
- package/dist/components/layout/details/details.class.js +1 -1
- package/dist/components/layout/dock-panel/dock-panel.class.js +1 -1
- package/dist/components/layout/drilldown-panel/drilldown-panel.class.js +1 -1
- package/dist/components/layout/filter-bar/filter-bar.class.js +1 -1
- package/dist/components/layout/menu/menu.class.js +1 -1
- package/dist/components/layout/menubar/menubar.class.js +1 -1
- package/dist/components/layout/multi-split/multi-split.class.js +1 -1
- package/dist/components/layout/navigation-menu/navigation-menu.class.js +1 -1
- package/dist/components/layout/page/page.class.js +1 -1
- package/dist/components/layout/reorder-list/reorder-item.class.js +1 -1
- package/dist/components/layout/reorder-list/reorder-list.class.js +1 -1
- package/dist/components/layout/responsive-panel/responsive-panel.class.js +1 -1
- package/dist/components/layout/scroller/scroller.class.js +1 -1
- package/dist/components/layout/segmented/segmented.class.d.ts +7 -4
- package/dist/components/layout/segmented/segmented.styles.js +1 -1
- package/dist/components/layout/split-panel/split-panel.class.js +1 -1
- package/dist/components/layout/tab-group/tab-group.class.js +1 -1
- package/dist/components/layout/tab-group/tab.class.js +1 -1
- package/dist/components/layout/virtual-list/virtual-list.styles.js +1 -1
- package/dist/components/layout/widget/widget.class.js +1 -1
- package/dist/components/media/animated-image/animated-image.class.js +1 -1
- package/dist/components/media/attachment-chip/attachment-chip.class.js +1 -1
- package/dist/components/media/attachment-trigger/attachment-trigger.class.js +2 -2
- package/dist/components/media/av-player/av-player.class.js +1 -1
- package/dist/components/media/avatar-group/avatar-group.class.js +1 -1
- package/dist/components/media/drop-zone/drop-zone.class.js +1 -1
- package/dist/components/media/file-icon/file-icon.class.js +1 -1
- package/dist/components/media/file-input/file-input.class.js +1 -1
- package/dist/components/media/flag/flag.class.js +1 -1
- package/dist/components/media/image-comparer/image-comparer.class.js +1 -1
- package/dist/components/media/image-viewer/image-viewer.class.d.ts +2 -1
- package/dist/components/media/image-viewer/image-viewer.class.js +4 -2
- package/dist/components/media/image-viewer/image-viewer.styles.js +1 -1
- package/dist/components/media/lightbox/lightbox.class.js +1 -1
- package/dist/components/media/map/map.class.js +1 -1
- package/dist/components/media/media-card/media-card.class.js +1 -1
- package/dist/components/media/pan-zoom/pan-zoom.class.js +1 -1
- package/dist/components/media/qr-code/qr-code.class.d.ts +2 -2
- package/dist/components/media/qr-code/qr-code.class.js +1 -1
- package/dist/components/media/sequence-playback/sequence-playback.class.js +1 -1
- package/dist/components/media/video/video.class.js +1 -1
- package/dist/components/media/video-playlist/video-playlist.class.js +1 -1
- package/dist/components/media/zoomable-frame/zoomable-frame.class.js +1 -1
- package/dist/components/overlays/alert/alert.class.js +1 -1
- package/dist/components/overlays/badge/tag.class.js +1 -1
- package/dist/components/overlays/callout/callout.class.js +1 -1
- package/dist/components/overlays/chip/chip-group.class.js +1 -1
- package/dist/components/overlays/chip/chip.class.js +1 -1
- package/dist/components/overlays/context-menu/context-menu.class.js +1 -1
- package/dist/components/overlays/dialog/confirm.js +1 -1
- package/dist/components/overlays/dialog/dialog.class.js +1 -1
- package/dist/components/overlays/kbd/kbd.class.js +1 -1
- package/dist/components/overlays/overlay/popover.class.js +1 -1
- package/dist/components/overlays/overlay/tooltip.class.js +1 -1
- package/dist/components/overlays/progress/progress-bar.class.js +1 -1
- package/dist/components/overlays/progress/progress-ring.class.js +1 -1
- package/dist/components/overlays/rating/rating.class.js +1 -1
- package/dist/components/overlays/skeleton/skeleton.class.js +1 -1
- package/dist/components/overlays/spinner/spinner.class.js +1 -1
- package/dist/components/overlays/toast/toast-item.class.js +1 -1
- package/dist/components/overlays/toast/toast.class.js +1 -1
- package/dist/components/retrieval/chunk-inspector/chunk-inspector.class.js +1 -1
- package/dist/components/retrieval/citation-badge/citation-badge.class.js +1 -1
- package/dist/components/retrieval/claim-evidence/claim-evidence.class.js +1 -1
- package/dist/components/retrieval/community-card/community-card.class.js +1 -1
- package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.js +1 -1
- package/dist/components/retrieval/entity-card/entity-card.class.js +1 -1
- package/dist/components/retrieval/entity-chip/entity-chip.class.js +1 -1
- package/dist/components/retrieval/entity-dossier/entity-dossier.class.js +1 -1
- package/dist/components/retrieval/graph/graph.class.js +1 -1
- package/dist/components/retrieval/graph-legend/graph-legend.class.js +1 -1
- package/dist/components/retrieval/grounding-summary/grounding-summary.class.js +2 -2
- package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.js +1 -1
- package/dist/components/retrieval/knowledge-base/knowledge-base.class.js +1 -1
- package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.class.js +1 -1
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js +1 -1
- package/dist/components/retrieval/memory-panel/memory-panel.class.js +1 -1
- package/dist/components/retrieval/mind-map/mind-map.class.js +1 -1
- package/dist/components/retrieval/neighbor-list/neighbor-list.class.js +1 -1
- package/dist/components/retrieval/node-palette/node-palette.class.js +1 -1
- package/dist/components/retrieval/path-strip/path-strip.class.js +1 -1
- package/dist/components/retrieval/provenance-panel/provenance-panel.class.js +1 -1
- package/dist/components/retrieval/rag-answer/rag-answer.class.js +1 -1
- package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.js +1 -1
- package/dist/components/retrieval/research-progress/research-progress.class.js +1 -1
- package/dist/components/retrieval/retrieval-compare/retrieval-compare.class.js +1 -1
- package/dist/components/retrieval/retrieval-results/retrieval-results.class.js +1 -1
- package/dist/components/retrieval/retrieval-search/retrieval-search.class.js +1 -1
- package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.js +1 -1
- package/dist/components/retrieval/source-card/source-card.class.js +1 -1
- package/dist/components/retrieval/source-list/source-list.class.js +1 -1
- package/dist/components/retrieval/source-picker/source-picker.class.js +1 -1
- package/dist/components/utility/copy-button/copy-button.class.js +1 -1
- package/dist/components/utility/diff-view/diff-view.class.js +1 -1
- package/dist/components/utility/export-button/export-button.class.js +1 -1
- package/dist/components/utility/icon/icon.class.js +1 -1
- package/dist/components/utility/json-viewer/json-viewer.class.js +1 -1
- package/dist/components/utility/known-date/known-date.class.js +1 -1
- package/dist/components/utility/mention-popover/mention-popover.class.js +1 -1
- package/dist/components/utility/poll-status/poll-status.class.js +1 -1
- package/dist/components/utility/random-content/random-content.class.js +1 -1
- package/dist/components/utility/tour/tour.class.js +1 -1
- package/dist/components/viewers/archive-viewer/archive-viewer.class.js +1 -1
- package/dist/components/viewers/calendar-viewer/calendar-viewer.class.js +1 -1
- package/dist/components/viewers/contact-viewer/contact-viewer.class.js +1 -1
- package/dist/components/viewers/csv-viewer/csv-viewer.class.js +1 -1
- package/dist/components/viewers/dataset-viewer/dataset-viewer.class.js +2 -2
- package/dist/components/viewers/document-compare/document-compare.class.js +1 -1
- package/dist/components/viewers/document-preview/document-preview.class.js +1 -1
- package/dist/components/viewers/document-viewer/document-viewer.class.js +1 -1
- package/dist/components/viewers/docx-viewer/docx-viewer.class.js +1 -1
- package/dist/components/viewers/ebook-viewer/ebook-viewer.class.js +1 -1
- package/dist/components/viewers/email-viewer/email-viewer.class.js +1 -1
- package/dist/components/viewers/geojson-view/geojson-view.class.js +1 -1
- package/dist/components/viewers/geojson-view/geojson-viewer.class.js +1 -1
- package/dist/components/viewers/highlight-layer/highlight-layer.class.js +1 -1
- package/dist/components/viewers/html-viewer/html-viewer.class.js +1 -1
- package/dist/components/viewers/include/include.class.js +1 -1
- package/dist/components/viewers/notebook-viewer/notebook-viewer.class.js +1 -1
- package/dist/components/viewers/page-rail/page-rail.class.d.ts +1 -1
- package/dist/components/viewers/page-rail/page-rail.class.js +3 -3
- package/dist/components/viewers/pdf-viewer/pdf-viewer.class.d.ts +2 -2
- package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js +2 -2
- package/dist/components/viewers/pptx-viewer/pptx-viewer.class.js +1 -1
- package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.js +1 -1
- package/dist/components/viewers/svg-viewer/svg-viewer.class.js +1 -1
- package/dist/components/viewers/xml-viewer/xml-viewer.class.js +1 -1
- package/dist/events.d.ts +6 -1
- package/dist/framework-types.d.ts +1 -1
- package/dist/internal/accessibility-visibility.js +1 -1
- package/dist/internal/collection-snapshot.js +1 -1
- package/dist/internal/default-strings/agent-tools.generated.js +1 -0
- package/dist/internal/default-strings/charts.generated.js +1 -0
- package/dist/internal/default-strings/conversation.generated.js +1 -0
- package/dist/internal/default-strings/data.generated.js +1 -0
- package/dist/internal/default-strings/forms.generated.js +1 -0
- package/dist/internal/default-strings/layout.generated.js +1 -0
- package/dist/internal/default-strings/media.generated.js +1 -0
- package/dist/internal/default-strings/overlays.generated.js +1 -0
- package/dist/internal/default-strings/retrieval.generated.js +1 -0
- package/dist/internal/default-strings/shared.generated.js +1 -0
- package/dist/internal/default-strings/utility.generated.js +1 -0
- package/dist/internal/default-strings/viewers.generated.js +5 -0
- package/dist/internal/dev-mode-attribute-warning.development.js +1 -1
- package/dist/internal/dev-mode-attribute-warning.production.js +1 -1
- package/dist/internal/document-tokens.d.ts +11 -0
- package/dist/internal/document-tokens.generated.js +15 -0
- package/dist/internal/document-tokens.js +3 -0
- package/dist/internal/form-associated.d.ts +1 -1
- package/dist/internal/form-associated.js +1 -1
- package/dist/internal/glass-surface.styles.js +1 -1
- package/dist/internal/host-tokens.styles.js +1 -0
- package/dist/internal/image-zoom.js +1 -0
- package/dist/internal/intl-cache.js +1 -1
- package/dist/internal/localization-types.d.ts +1 -1
- package/dist/internal/localization.js +2 -2
- package/dist/internal/lyra-element.d.ts +4 -2
- package/dist/internal/lyra-element.js +2 -2
- package/dist/internal/opaque-content-border.styles.js +1 -1
- package/dist/internal/open-overlay-raise.styles.js +1 -0
- package/dist/internal/optional-peer-failure.js +1 -0
- package/dist/internal/package-metadata.js +1 -1
- package/dist/internal/prefix.js +1 -1
- package/dist/internal/specialist-host-tokens.styles.js +1 -0
- package/dist/internal/specialist-tokens.generated.js +2 -0
- package/dist/internal/step-value.js +1 -1
- package/dist/internal/theme-observation.js +1 -1
- package/dist/internal/theme-scopes.d.ts +11 -0
- package/dist/internal/theme-scopes.js +1 -0
- package/dist/looks/shadcn.css +1 -1
- package/dist/lyra.d.ts +1 -1
- package/dist/lyra.js +1 -1
- package/dist/styles/design-tokens.css +1 -1
- package/dist/styles/tokens-root.css +1 -1
- package/dist/surfaces/glass.css +1 -1
- package/dist/testing/happy-dom-shims.d.ts +21 -2
- package/dist/testing/happy-dom-shims.js +1 -1
- package/dist/testing/index.d.ts +1 -1
- package/dist/testing/index.js +1 -1
- package/dist/testing/interaction-drivers.d.ts +66 -7
- package/dist/testing/interaction-drivers.js +1 -1
- package/dist/testing/jsdom-shims.d.ts +70 -0
- package/dist/testing/jsdom-shims.js +1 -0
- package/dist/theme/look-inputs.d.ts +1 -1
- package/dist/theme/look-inputs.js +37 -41
- package/dist/theme/theme.d.ts +13 -0
- package/dist/theme/theme.js +1 -1
- package/dist/theme.css +1 -1
- package/dist/utilities/index.d.ts +1 -1
- package/dist/utilities/index.js +1 -1
- package/dist/utilities/scoped-registry.d.ts +3 -0
- package/dist/utilities/scoped-registry.js +1 -1
- package/dist/utilities/theme-scopes.d.ts +1 -0
- package/dist/utilities/theme-scopes.js +1 -0
- package/dist/utilities/tokens.d.ts +1 -0
- package/dist/utilities/tokens.js +1 -0
- package/llms/components/lr-app-rail.md +51 -4
- package/llms/components/lr-emoji-picker.md +13 -8
- package/llms/components/lr-icon-button.md +13 -1
- package/llms/components/lr-image-viewer.md +8 -0
- package/llms/components/lr-pagination.md +4 -2
- package/llms/components/lr-segmented.md +7 -3
- package/llms/components/lr-table.md +14 -12
- package/llms/components/lr-thread-list.md +4 -3
- package/llms/migration.md +9 -0
- package/llms/peers.md +1 -1
- package/llms/shared/events-and-types.md +41 -0
- package/llms/shared/frameworks-and-ssr.md +16 -0
- package/llms/shared/imports-and-registration.md +4 -3
- package/llms/shared/native-styles-and-utilities.md +38 -3
- package/llms/shared/styles-and-tokens.md +242 -102
- package/llms/shared/testing-and-utilities.md +90 -6
- package/llms/shared.md +431 -114
- package/llms/tokens.md +31 -49
- package/locales.json +138 -138
- package/package.json +14 -7
- package/registrations.json +1 -1
- package/dist/internal/default-strings.generated.js +0 -5
- package/dist/internal/specialist-tokens.styles.js +0 -1
- package/dist/internal/tokens/palette.styles.js +0 -1
- package/dist/internal/tokens.styles.js +0 -1
package/dist/cli/migrate-wa.mjs
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import fs from"node:fs";import path from"node:path";import{fileURLToPath}from"node:url";import{LYRA_RENAME_ORIGINS,compareVersions}from"./lyra-rename-ledger.mjs";import{MIGRATION_ORIGINS,buildMigrationContract,invariant,inventoryPath,packagedRuntime,readExportDeprecations,readRenameLedger}from"./migration-contract.mjs";import{migrateText}from"./migration-transforms.mjs";import{buildProjectDomFactoryBindings}from"./migration-analysis.mjs";import{MIGRATION_RUNTIME_SCHEMA_VERSION,MIGRATION_ORIGINS as MIGRATION_ORIGINS2,buildMigrationContract as buildMigrationContract2,createMigrationRuntimeInventory,readRenameLedger as readRenameLedger2,readExportDeprecations as readExportDeprecations2,buildMirrorMap}from"./migration-contract.mjs";import{scanUnrewrittenUpstreamReferences,migrateText as migrateText2}from"./migration-transforms.mjs";const
|
|
2
|
+
import fs from"node:fs";import path from"node:path";import{fileURLToPath}from"node:url";import{LYRA_RENAME_ORIGINS,compareVersions}from"./lyra-rename-ledger.mjs";import{MIGRATION_ORIGINS,buildMigrationContract,invariant,inventoryPath,packagedRuntime,readExportDeprecations,readRenameLedger}from"./migration-contract.mjs";import{migrateText}from"./migration-transforms.mjs";import{buildProjectDomFactoryBindings}from"./migration-analysis.mjs";import{THEME_SCOPE_RULE,migrateThemeScopes}from"./migration-theme-scopes.mjs";import{MIGRATION_RUNTIME_SCHEMA_VERSION,MIGRATION_ORIGINS as MIGRATION_ORIGINS2,buildMigrationContract as buildMigrationContract2,createMigrationRuntimeInventory,readRenameLedger as readRenameLedger2,readExportDeprecations as readExportDeprecations2,buildMirrorMap}from"./migration-contract.mjs";import{scanUnrewrittenUpstreamReferences,migrateText as migrateText2}from"./migration-transforms.mjs";import{migrateThemeScopes as migrateThemeScopes2}from"./migration-theme-scopes.mjs";const MIGRATION_RULES=Object.freeze([THEME_SCOPE_RULE]);function migrateRuleFiles({files,rule,dryRun=!1,reportPath=null,cwd=process.cwd(),collectDiff=!1}){invariant(MIGRATION_RULES.includes(rule),`unknown migration rule ${String(rule)}`);const changes=[],warnings=[],diffs=[];let filesChanged=0;for(const file of files){const original=fs.readFileSync(file,"utf8"),result=migrateThemeScopes(original,{file:reportPathName(file,cwd)});changes.push(...result.changes),warnings.push(...result.warnings),result.content!==original&&(filesChanged+=1,collectDiff&&diffs.push(unifiedDiff(reportPathName(file,cwd),original,result.content)),dryRun||fs.writeFileSync(file,result.content,"utf8"))}const report={schemaVersion:MIGRATION_REPORT_SCHEMA_VERSION,rule,dryRun,filesScanned:files.length,filesChanged,changes,warnings,summary:{rewrites:changes.length,warnings:warnings.length}};return reportPath&&fs.writeFileSync(reportPath,`${JSON.stringify(report,null,2)}
|
|
3
|
+
`,"utf8"),collectDiff?{...report,diff:diffs.join("")}:report}const MIGRATION_REPORT_SCHEMA_VERSION=1,DEFAULT_EXTENSIONS=new Set(["html","htm","ts","tsx","js","jsx","mjs","cjs","css","vue","svelte","mdx","md"]),IGNORE_DIR_NAMES=new Set(["node_modules","dist","build","coverage",".turbo",".cache"]);function diffLines(text){const lines=text.split(`
|
|
3
4
|
`),eol=lines.at(-1)==="";return eol&&lines.pop(),lines.map((line,index)=>{const terminated=index<lines.length-1||eol;return{line,eol:terminated,key:terminated?line:`${line}\0`}})}function diffOperations(before,after){let prefix=0;for(;prefix<before.length&&prefix<after.length&&before[prefix].key===after[prefix].key;)prefix+=1;let suffix=0;for(;suffix<before.length-prefix&&suffix<after.length-prefix&&before[before.length-1-suffix].key===after[after.length-1-suffix].key;)suffix+=1;const a=before.slice(prefix,before.length-suffix),b=after.slice(prefix,after.length-suffix),goesDown=(frontier2,diagonal,depth)=>diagonal===-depth||diagonal!==depth&&frontier2.get(diagonal-1)<frontier2.get(diagonal+1),trace=[];let frontier=new Map([[1,0]]);search:for(let depth=0;depth<=a.length+b.length;depth+=1){trace.push(frontier);const next=new Map;for(let diagonal=-depth;diagonal<=depth;diagonal+=2){let x2=goesDown(frontier,diagonal,depth)?frontier.get(diagonal+1):frontier.get(diagonal-1)+1,y2=x2-diagonal;for(;x2<a.length&&y2<b.length&&a[x2].key===b[y2].key;)x2+=1,y2+=1;if(next.set(diagonal,x2),x2>=a.length&&y2>=b.length)break search}frontier=next}const middle=[];let x=a.length,y=b.length;for(let depth=trace.length-1;depth>=0;depth-=1){const previous=trace[depth],diagonal=x-y,previousDiagonal=goesDown(previous,diagonal,depth)?diagonal+1:diagonal-1,previousX=previous.get(previousDiagonal),previousY=previousX-previousDiagonal;for(;x>previousX&&y>previousY;)x-=1,y-=1,middle.push({type:" ",before:prefix+x,after:prefix+y});depth>0&&(x===previousX?middle.push({type:"+",after:prefix+y-1}):middle.push({type:"-",before:prefix+x-1})),x=previousX,y=previousY}middle.reverse();const operations=[];for(let index=0;index<prefix;index+=1)operations.push({type:" ",before:index,after:index});operations.push(...middle);for(let index=suffix;index>0;index-=1)operations.push({type:" ",before:before.length-index,after:after.length-index});return operations}function quoteDiffPath(file){if(/^[\x21-\x7e]+$/.test(file)&&!/["\\]/.test(file))return file;let quoted='"';for(const byte of Buffer.from(file,"utf8"))byte===34||byte===92?quoted+=`\\${String.fromCharCode(byte)}`:byte>=32&&byte<=126?quoted+=String.fromCharCode(byte):quoted+=`\\${byte.toString(8).padStart(3,"0")}`;return`${quoted}"`}function unifiedDiff(file,original,content,context=3){if(original===content)return"";const before=diffLines(original),after=diffLines(content),operations=diffOperations(before,after),beforeSeen=[0],afterSeen=[0];for(const operation of operations)beforeSeen.push(beforeSeen.at(-1)+(operation.type==="+"?0:1)),afterSeen.push(afterSeen.at(-1)+(operation.type==="-"?0:1));const hunks=[];operations.forEach((operation,index)=>{if(operation.type===" ")return;const last=hunks.at(-1);last&&index-last.end<=context*2+1?last.end=index:hunks.push({start:index,end:index})});const output=[`--- ${quoteDiffPath(`a/${file}`)}
|
|
4
5
|
`,`+++ ${quoteDiffPath(`b/${file}`)}
|
|
5
6
|
`];for(const hunk of hunks){const start=Math.max(0,hunk.start-context),end=Math.min(operations.length,hunk.end+context+1),beforeCount=beforeSeen[end]-beforeSeen[start],afterCount=afterSeen[end]-afterSeen[start],beforeStart=beforeSeen[start]+(beforeCount?1:0),afterStart=afterSeen[start]+(afterCount?1:0);output.push(`@@ -${beforeStart},${beforeCount} +${afterStart},${afterCount} @@
|
|
6
7
|
`);for(const operation of operations.slice(start,end)){const record=operation.type==="+"?after[operation.after]:before[operation.before];output.push(`${operation.type}${record.line}
|
|
7
8
|
`),record.eol||output.push(`\
|
|
8
9
|
`)}}return output.join("")}function reportPathName(file,cwd){return(path.relative(cwd,file)||path.basename(file)).split(path.sep).join("/")}function migrateFiles({files,inventory,dryRun=!1,reportPath=null,cwd=process.cwd(),origin=null,renameLedger=null,exportDeprecations=[],lyraVersion=null,collectDiff=!1,compatibilityContext=null}){if(collectDiff){const outside=files.filter(file=>{const relative=path.relative(cwd,file);return relative===".."||relative.startsWith(`..${path.sep}`)||path.isAbsolute(relative)});if(outside.length)throw new Error(`--diff needs every target inside the working directory; run it from a common parent of ${outside.join(", ")}.`)}const contract=buildMigrationContract(inventory,{renameLedger,exportDeprecations,lyraVersion,compatibilityContext}),originals=new Map(files.map(file=>[file,fs.readFileSync(file,"utf8")])),diffs=[],noteDiff=(file,original,content)=>{collectDiff&&content!==original&&diffs.push(unifiedDiff(reportPathName(file,cwd),original,content))},finish=report=>(reportPath&&fs.writeFileSync(reportPath,`${JSON.stringify(report,null,2)}
|
|
9
|
-
`,"utf8"),collectDiff?{...report,diff:diffs.join("")}:report);if(origin!==null){const renameProfile=contract.renameProfiles.has(origin);invariant(contract.localMigrations.has(origin)||renameProfile,`unknown local migration origin ${String(origin)}`);const blockedLocalMigrations=new Set,constructedEvents=new Set;for(const[file,original]of originals){const analysis=migrateText(original,contract,{file:reportPathName(file,cwd),origin});for(const key of analysis.blockedLocalMigrations)blockedLocalMigrations.add(key);for(const name of analysis.constructedEvents??[])constructedEvents.add(name)}const changes2=[],warnings2=[];let filesChanged2=0,acknowledged=0;for(const[file,original]of originals){const result=migrateText(original,contract,{file:reportPathName(file,cwd),origin,blockedLocalMigrations,constructedEvents});changes2.push(...result.changes),warnings2.push(...result.warnings),acknowledged+=result.acknowledged??0,result.content!==original&&(filesChanged2+=1,noteDiff(file,original,result.content),dryRun||fs.writeFileSync(file,result.content,"utf8"))}const sortEntries2=entries=>entries.sort((left,right)=>left.file.localeCompare(right.file)||left.line-right.line||left.column-right.column||left.action.localeCompare(right.action));sortEntries2(changes2),sortEntries2(warnings2);const summary={rewrites:changes2.length,warnings:warnings2.length};return renameProfile&&(summary.acknowledged=acknowledged,lyraVersion!==null&&(summary.skipped=contract.renameProfiles.get(origin).skipped.length)),finish({schemaVersion:MIGRATION_REPORT_SCHEMA_VERSION,origin,dryRun,filesScanned:files.length,filesChanged:filesChanged2,changes:changes2,warnings:warnings2,summary})}const domFactoryBindings=buildProjectDomFactoryBindings(originals),blockedMappings=new Set,blockedEcosystems=new Set,bareImportPackages=new Set,automaticMappings=new Set,deepRegistrationMappings=new Set,usage={webawesome:{automatic:0,manual:0},shoelace:{automatic:0,manual:0}};for(const[file,original]of originals){const analysis=migrateText(original,contract,{file:reportPathName(file,cwd),rewriteBarePackages:new Set,domFactoryBindings:domFactoryBindings.get(path.resolve(file))});for(const ecosystem of Object.keys(usage))usage[ecosystem].automatic+=analysis.usage[ecosystem].automatic,usage[ecosystem].manual+=analysis.usage[ecosystem].manual;for(const upstreamTag of analysis.blockedMappings)blockedMappings.add(upstreamTag);for(const ecosystem of analysis.blockedEcosystems)blockedEcosystems.add(ecosystem);for(const packageName of analysis.bareImportPackages)bareImportPackages.add(packageName);for(const upstreamTag of analysis.automaticMappings)automaticMappings.add(upstreamTag);for(const upstreamTag of analysis.deepRegistrationMappings)deepRegistrationMappings.add(upstreamTag)}for(const packageName of bareImportPackages){const identity=contract.packageIdentities.get(packageName);identity&&usage[identity.ecosystem].manual>0&&blockedEcosystems.add(identity.ecosystem)}const rewriteBarePackages=new Set([...bareImportPackages].filter(packageName=>{const identity=contract.packageIdentities.get(packageName);if(!identity)return!1;const counts=usage[identity.ecosystem];return counts.automatic>0&&counts.manual===0&&!blockedEcosystems.has(identity.ecosystem)})),rootRegistrationMappings=new Map([...bareImportPackages].map(packageName=>{const identity=contract.packageIdentities.get(packageName),relevant=new Set([...automaticMappings].filter(upstreamTag=>{const mapping=contract.mappings.get(upstreamTag);return!!(identity&&mapping?.upstream===identity.ecosystem&&(!mapping.source?.tier||identity.tiers.has(mapping.source.tier)))}));return[packageName,relevant]})),provenRegistrationMappings=new Set(deepRegistrationMappings);for(const packageName of rewriteBarePackages)for(const upstreamTag of rootRegistrationMappings.get(packageName)??[])provenRegistrationMappings.add(upstreamTag);const registrationBlockedMappings=new Set([...automaticMappings].filter(upstreamTag=>!provenRegistrationMappings.has(upstreamTag))),changes=[],warnings=[];let filesChanged=0;for(const[file,original]of originals){const result=migrateText(original,contract,{file:reportPathName(file,cwd),rewriteBarePackages,rootRegistrationMappings,blockedMappings,blockedEcosystems,registrationBlockedMappings,domFactoryBindings:domFactoryBindings.get(path.resolve(file))});changes.push(...result.changes),warnings.push(...result.warnings),result.content!==original&&(filesChanged+=1,noteDiff(file,original,result.content),dryRun||fs.writeFileSync(file,result.content,"utf8"))}const sortEntries=entries=>entries.sort((left,right)=>left.file.localeCompare(right.file)||left.line-right.line||left.column-right.column||left.action.localeCompare(right.action));return sortEntries(changes),sortEntries(warnings),finish({schemaVersion:MIGRATION_REPORT_SCHEMA_VERSION,origin:null,dryRun,filesScanned:files.length,filesChanged,changes,warnings,summary:{rewrites:changes.length,warnings:warnings.length}})}function parseArgs(argv){const options={check:!1,diff:!1,dryRun:!1,help:!1,extensions:DEFAULT_EXTENSIONS,lyraVersion:null,origin:null,report:null,targets:[]};let positional=!1;for(const argument of argv)if(!positional&&argument==="--")positional=!0;else if(!positional&&(argument==="--dry-run"||argument==="-n"))options.dryRun=!0;else if(!positional&&argument==="--check")options.check=!0,options.dryRun=!0;else if(!positional&&argument==="--diff")options.diff=!0,options.dryRun=!0;else if(!positional&&(argument==="--help"||argument==="-h"))options.help=!0;else if(!positional&&argument.startsWith("--ext="))options.extensions=new Set(argument.slice(6).split(",").map(extension=>extension.trim().replace(/^\./,"").toLowerCase()).filter(Boolean));else if(!positional&&argument.startsWith("--report=")){if(options.report=argument.slice(9),!options.report)throw new Error("--report requires a path")}else if(!positional&&argument.startsWith("--lyra-version=")){if(options.lyraVersion=argument.slice(15),compareVersions(options.lyraVersion,options.lyraVersion)!==0)throw new Error(`--lyra-version needs a version such as 22.0.0, got ${options.lyraVersion||"nothing"}`)}else if(!positional&&argument.startsWith("--origin=")){if(options.origin=argument.slice(9),!options.origin)throw new Error("--origin requires a value");if(!MIGRATION_ORIGINS.includes(options.origin))throw new Error(`Unknown migration origin: ${options.origin}`)}else{if(!positional&&argument.startsWith("-"))throw new Error(`Unknown option: ${argument}`);options.targets.push(argument)}return options}function printUsage(){console.log(`Usage: lyra-ui-migrate [--check] [--dry-run] [--diff] [--origin=${MIGRATION_ORIGINS.join("|")}] [--lyra-version=x.y.z] [--report=path] [--ext=html,ts,...] targets...
|
|
10
|
+
`,"utf8"),collectDiff?{...report,diff:diffs.join("")}:report);if(origin!==null){const renameProfile=contract.renameProfiles.has(origin);invariant(contract.localMigrations.has(origin)||renameProfile,`unknown local migration origin ${String(origin)}`);const blockedLocalMigrations=new Set,constructedEvents=new Set;for(const[file,original]of originals){const analysis=migrateText(original,contract,{file:reportPathName(file,cwd),origin});for(const key of analysis.blockedLocalMigrations)blockedLocalMigrations.add(key);for(const name of analysis.constructedEvents??[])constructedEvents.add(name)}const changes2=[],warnings2=[];let filesChanged2=0,acknowledged=0;for(const[file,original]of originals){const result=migrateText(original,contract,{file:reportPathName(file,cwd),origin,blockedLocalMigrations,constructedEvents});changes2.push(...result.changes),warnings2.push(...result.warnings),acknowledged+=result.acknowledged??0,result.content!==original&&(filesChanged2+=1,noteDiff(file,original,result.content),dryRun||fs.writeFileSync(file,result.content,"utf8"))}const sortEntries2=entries=>entries.sort((left,right)=>left.file.localeCompare(right.file)||left.line-right.line||left.column-right.column||left.action.localeCompare(right.action));sortEntries2(changes2),sortEntries2(warnings2);const summary={rewrites:changes2.length,warnings:warnings2.length};return renameProfile&&(summary.acknowledged=acknowledged,lyraVersion!==null&&(summary.skipped=contract.renameProfiles.get(origin).skipped.length)),finish({schemaVersion:MIGRATION_REPORT_SCHEMA_VERSION,origin,dryRun,filesScanned:files.length,filesChanged:filesChanged2,changes:changes2,warnings:warnings2,summary})}const domFactoryBindings=buildProjectDomFactoryBindings(originals),blockedMappings=new Set,blockedEcosystems=new Set,bareImportPackages=new Set,automaticMappings=new Set,deepRegistrationMappings=new Set,usage={webawesome:{automatic:0,manual:0},shoelace:{automatic:0,manual:0}};for(const[file,original]of originals){const analysis=migrateText(original,contract,{file:reportPathName(file,cwd),rewriteBarePackages:new Set,domFactoryBindings:domFactoryBindings.get(path.resolve(file))});for(const ecosystem of Object.keys(usage))usage[ecosystem].automatic+=analysis.usage[ecosystem].automatic,usage[ecosystem].manual+=analysis.usage[ecosystem].manual;for(const upstreamTag of analysis.blockedMappings)blockedMappings.add(upstreamTag);for(const ecosystem of analysis.blockedEcosystems)blockedEcosystems.add(ecosystem);for(const packageName of analysis.bareImportPackages)bareImportPackages.add(packageName);for(const upstreamTag of analysis.automaticMappings)automaticMappings.add(upstreamTag);for(const upstreamTag of analysis.deepRegistrationMappings)deepRegistrationMappings.add(upstreamTag)}for(const packageName of bareImportPackages){const identity=contract.packageIdentities.get(packageName);identity&&usage[identity.ecosystem].manual>0&&blockedEcosystems.add(identity.ecosystem)}const rewriteBarePackages=new Set([...bareImportPackages].filter(packageName=>{const identity=contract.packageIdentities.get(packageName);if(!identity)return!1;const counts=usage[identity.ecosystem];return counts.automatic>0&&counts.manual===0&&!blockedEcosystems.has(identity.ecosystem)})),rootRegistrationMappings=new Map([...bareImportPackages].map(packageName=>{const identity=contract.packageIdentities.get(packageName),relevant=new Set([...automaticMappings].filter(upstreamTag=>{const mapping=contract.mappings.get(upstreamTag);return!!(identity&&mapping?.upstream===identity.ecosystem&&(!mapping.source?.tier||identity.tiers.has(mapping.source.tier)))}));return[packageName,relevant]})),provenRegistrationMappings=new Set(deepRegistrationMappings);for(const packageName of rewriteBarePackages)for(const upstreamTag of rootRegistrationMappings.get(packageName)??[])provenRegistrationMappings.add(upstreamTag);const registrationBlockedMappings=new Set([...automaticMappings].filter(upstreamTag=>!provenRegistrationMappings.has(upstreamTag))),changes=[],warnings=[];let filesChanged=0;for(const[file,original]of originals){const result=migrateText(original,contract,{file:reportPathName(file,cwd),rewriteBarePackages,rootRegistrationMappings,blockedMappings,blockedEcosystems,registrationBlockedMappings,domFactoryBindings:domFactoryBindings.get(path.resolve(file))});changes.push(...result.changes),warnings.push(...result.warnings),result.content!==original&&(filesChanged+=1,noteDiff(file,original,result.content),dryRun||fs.writeFileSync(file,result.content,"utf8"))}const sortEntries=entries=>entries.sort((left,right)=>left.file.localeCompare(right.file)||left.line-right.line||left.column-right.column||left.action.localeCompare(right.action));return sortEntries(changes),sortEntries(warnings),finish({schemaVersion:MIGRATION_REPORT_SCHEMA_VERSION,origin:null,dryRun,filesScanned:files.length,filesChanged,changes,warnings,summary:{rewrites:changes.length,warnings:warnings.length}})}function parseArgs(argv){const options={check:!1,diff:!1,dryRun:!1,help:!1,extensions:DEFAULT_EXTENSIONS,lyraVersion:null,origin:null,report:null,rule:null,targets:[]};let positional=!1;for(const argument of argv)if(!positional&&argument==="--")positional=!0;else if(!positional&&(argument==="--dry-run"||argument==="-n"))options.dryRun=!0;else if(!positional&&argument==="--check")options.check=!0,options.dryRun=!0;else if(!positional&&argument==="--diff")options.diff=!0,options.dryRun=!0;else if(!positional&&(argument==="--help"||argument==="-h"))options.help=!0;else if(!positional&&argument.startsWith("--ext="))options.extensions=new Set(argument.slice(6).split(",").map(extension=>extension.trim().replace(/^\./,"").toLowerCase()).filter(Boolean));else if(!positional&&argument.startsWith("--report=")){if(options.report=argument.slice(9),!options.report)throw new Error("--report requires a path")}else if(!positional&&argument.startsWith("--lyra-version=")){if(options.lyraVersion=argument.slice(15),compareVersions(options.lyraVersion,options.lyraVersion)!==0)throw new Error(`--lyra-version needs a version such as 22.0.0, got ${options.lyraVersion||"nothing"}`)}else if(!positional&&argument.startsWith("--origin=")){if(options.origin=argument.slice(9),!options.origin)throw new Error("--origin requires a value");if(!MIGRATION_ORIGINS.includes(options.origin))throw new Error(`Unknown migration origin: ${options.origin}`)}else if(!positional&&argument.startsWith("--rule=")){if(options.rule=argument.slice(7),!MIGRATION_RULES.includes(options.rule))throw new Error(`Unknown migration rule: ${options.rule}`)}else{if(!positional&&argument.startsWith("-"))throw new Error(`Unknown option: ${argument}`);options.targets.push(argument)}return options}function printUsage(){console.log(`Usage: lyra-ui-migrate [--check] [--dry-run] [--diff] [--origin=${MIGRATION_ORIGINS.join("|")}] [--rule=theme-scopes] [--lyra-version=x.y.z] [--report=path] [--ext=html,ts,...] targets...
|
|
10
11
|
|
|
11
12
|
Only exact and fully rewritten inventory mappings change automatically. Conceptual, unsafe,
|
|
12
13
|
unsupported, unknown, and unresolved deep-import uses remain unchanged with source-located
|
|
@@ -19,7 +20,7 @@ change what a site reaches, preserves changed defaults, and reports everything e
|
|
|
19
20
|
listeners of events whose detail changed. --origin=lyra-v22 reports deprecated theme APIs,
|
|
20
21
|
stylesheets, window events and root attributes; review their replacement semantics explicitly.
|
|
21
22
|
--origin=lyra-v26 moves the package specifiers and root-barrel types that Lyra 27 relocated,
|
|
22
|
-
reports removed localization keys. Lyra profiles never rewrite
|
|
23
|
+
reports removed localization keys, and runs the theme-scopes rule. Lyra profiles never rewrite
|
|
23
24
|
tags. Run a Lyra profile with the CLI of the installed release, after upgrading.
|
|
24
25
|
|
|
25
26
|
--dry-run, -n report changes without writing source files
|
|
@@ -28,6 +29,10 @@ tags. Run a Lyra profile with the CLI of the installed release, after upgrading.
|
|
|
28
29
|
--origin=lyra-v21 migrate names and defaults that change from Lyra 21 to Lyra 22
|
|
29
30
|
--origin=lyra-v22 review Lyra 22 module contracts retained through Lyra 23
|
|
30
31
|
--origin=lyra-v26 move specifiers and types relocated in Lyra 27, report removed locale keys
|
|
32
|
+
and apply --rule=theme-scopes
|
|
33
|
+
--rule=theme-scopes Lyra 27: mark elements whose inline style sets a token-layer input with
|
|
34
|
+
data-lr-theme-scope; report dynamic inputs, markers in loops, and CSS that
|
|
35
|
+
sets inputs or shared outputs outside a theme scope (runs without --origin)
|
|
31
36
|
--lyra-version=x.y.z apply only rename entries available in this release (default: the
|
|
32
37
|
@aceshooting/lyra-ui installed under the working directory, when found)
|
|
33
38
|
--report=path write the stable JSON migration report
|
|
@@ -36,4 +41,4 @@ tags. Run a Lyra profile with the CLI of the installed release, after upgrading.
|
|
|
36
41
|
|
|
37
42
|
A reviewed rename-profile warning is acknowledged by a "lyra-migrate-reviewed: CODE:name" comment
|
|
38
43
|
(for example DETAIL_SHAPE_REVIEW:lr-close) on the reported line, alone on the line above it, or
|
|
39
|
-
directly before the reported element's opening tag.`)}function detectInstalledLyraVersion(directory=process.cwd()){let current=path.resolve(directory);for(;;){const manifest=path.join(current,"node_modules","@aceshooting","lyra-ui","package.json");if(fs.existsSync(manifest))try{const version=JSON.parse(fs.readFileSync(manifest,"utf8")).version;return compareVersions(version,version)===0?version:null}catch{return null}const parent=path.dirname(current);if(parent===current)return null;current=parent}}function walkDir(directory,filter){const files=[];for(const entry of fs.readdirSync(directory,{withFileTypes:!0})){if(entry.name.startsWith("."))continue;const target=path.join(directory,entry.name);entry.isDirectory()?IGNORE_DIR_NAMES.has(entry.name)||files.push(...walkDir(target,filter)):entry.isFile()&&filter(target,entry.name)&&files.push(target)}return files}function globToRegExp(segments){let source="^";for(let index=0;index<segments.length;index+=1){const segment=segments[index];segment==="**"?source+="(?:.*/)?":(source+=segment.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,"[^/]*").replace(/\?/g,"[^/]"),index<segments.length-1&&(source+="/"))}return new RegExp(`${source}$`)}function expandGlob(pattern){const segments=pattern.split(path.sep).join("/").split("/");let split=0;for(;split<segments.length&&!/[*?]/.test(segments[split]);)split+=1;const base=path.resolve(segments.slice(0,split).join("/")||".");if(!fs.existsSync(base)||!fs.statSync(base).isDirectory())return[];const regex=globToRegExp(segments.slice(split));return walkDir(base,()=>!0).filter(file=>regex.test(path.relative(base,file).split(path.sep).join("/")))}function collectFiles(targets,extensions){const files=new Set;for(const target of targets){if(/[*?]/.test(target)){for(const file of expandGlob(target))files.add(file);continue}const resolved=path.resolve(target);if(!fs.existsSync(resolved)){console.error(`warning: path not found, skipping: ${target}`);continue}if(fs.statSync(resolved).isDirectory())for(const file of walkDir(resolved,(_file,name)=>extensions.has(path.extname(name).slice(1).toLowerCase())))files.add(file);else files.add(resolved)}return[...files].sort()}function run(argv,{compatibilityContext=null,currentExportDeprecations=null}={}){let options;try{options=parseArgs(argv)}catch(error){return console.error(error instanceof Error?error.message:error),1}if(options.help||!options.targets.length)return printUsage(),options.help?0:1;const files=collectFiles(options.targets,options.extensions);if(!files.length)return console.error("No files matched the given path(s)/pattern(s)."),1;try{const inventory=JSON.parse(fs.readFileSync(inventoryPath,"utf8")),renameOrigin=LYRA_RENAME_ORIGINS.includes(options.origin),lyraVersion=renameOrigin?options.lyraVersion??detectInstalledLyraVersion():null,report=migrateFiles({files,inventory,dryRun:options.dryRun,origin:options.origin,renameLedger:packagedRuntime?null:readRenameLedger(),exportDeprecations:packagedRuntime?[]:currentExportDeprecations??readExportDeprecations(),compatibilityContext,lyraVersion,reportPath:options.report?path.resolve(options.report):null,collectDiff:options.diff}),log=options.diff?console.error:console.log;options.diff&&process.stdout.write(report.diff),renameOrigin&&log(lyraVersion===null?"No installed @aceshooting/lyra-ui found under the working directory; applying every entry of the profile.":`Applying entries available in @aceshooting/lyra-ui ${lyraVersion}`+(report.summary.skipped?`; ${report.summary.skipped} entr${report.summary.skipped===1?"y needs":"ies need"} a later release.`:"."));for(const entry of report.changes)log(`${entry.file}:${entry.line}:${entry.column} ${entry.action}: ${entry.message}`);for(const entry of report.warnings)log(`${entry.file}:${entry.line}:${entry.column} warning ${entry.warningCode}: ${entry.message}`);if(log(`${report.filesScanned} file(s) scanned, ${report.filesChanged} changed, ${report.summary.rewrites} rewrite(s), ${report.summary.warnings} warning(s)`+(Object.hasOwn(report.summary,"acknowledged")?`, ${report.summary.acknowledged} acknowledged.`:".")),options.dryRun&&report.filesChanged&&log("Dry run only -- no source files were written."),options.report&&log(`JSON report written to ${options.report}.`),options.check){const remaining=report.filesChanged>0||report.summary.warnings>0;return log(remaining?`Migration check failed: ${report.filesChanged} file(s) need changes and ${report.summary.warnings} warning(s) require review.`:"Migration check passed: no rewrites or warnings remain."),remaining?1:0}return 0}catch(error){return console.error(error instanceof Error?error.message:error),1}}function invokedAsCli(){const invoked=process.argv[1];if(!invoked)return!1;const here=fileURLToPath(import.meta.url);try{return fs.realpathSync(invoked)===fs.realpathSync(here)}catch{return path.resolve(invoked)===here}}if(invokedAsCli())if(packagedRuntime||process.argv.includes("--help")||process.argv.length<3)process.exitCode=run(process.argv.slice(2));else{const{readCurrentCompatibilityContext}=await import("./check-published-compatibility.mjs"),{readComponentMetadataSources,assembleComponentMetadata}=await import("./component-metadata-source.mjs"),packageRoot=path.resolve(path.dirname(fileURLToPath(import.meta.url)),".."),compatibilityContext=await readCurrentCompatibilityContext(packageRoot);process.exitCode=run(process.argv.slice(2),{compatibilityContext,currentExportDeprecations:assembleComponentMetadata(readComponentMetadataSources(packageRoot)).exportDeprecations})}export{MIGRATION_ORIGINS2 as MIGRATION_ORIGINS,MIGRATION_REPORT_SCHEMA_VERSION,MIGRATION_RUNTIME_SCHEMA_VERSION,buildMigrationContract2 as buildMigrationContract,buildMirrorMap,collectFiles,createMigrationRuntimeInventory,detectInstalledLyraVersion,migrateFiles,migrateText2 as migrateText,parseArgs,readExportDeprecations2 as readExportDeprecations,readRenameLedger2 as readRenameLedger,run,scanUnrewrittenUpstreamReferences,unifiedDiff};
|
|
44
|
+
directly before the reported element's opening tag.`)}function detectInstalledLyraVersion(directory=process.cwd()){let current=path.resolve(directory);for(;;){const manifest=path.join(current,"node_modules","@aceshooting","lyra-ui","package.json");if(fs.existsSync(manifest))try{const version=JSON.parse(fs.readFileSync(manifest,"utf8")).version;return compareVersions(version,version)===0?version:null}catch{return null}const parent=path.dirname(current);if(parent===current)return null;current=parent}}function walkDir(directory,filter){const files=[];for(const entry of fs.readdirSync(directory,{withFileTypes:!0})){if(entry.name.startsWith("."))continue;const target=path.join(directory,entry.name);entry.isDirectory()?IGNORE_DIR_NAMES.has(entry.name)||files.push(...walkDir(target,filter)):entry.isFile()&&filter(target,entry.name)&&files.push(target)}return files}function globToRegExp(segments){let source="^";for(let index=0;index<segments.length;index+=1){const segment=segments[index];segment==="**"?source+="(?:.*/)?":(source+=segment.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,"[^/]*").replace(/\?/g,"[^/]"),index<segments.length-1&&(source+="/"))}return new RegExp(`${source}$`)}function expandGlob(pattern){const segments=pattern.split(path.sep).join("/").split("/");let split=0;for(;split<segments.length&&!/[*?]/.test(segments[split]);)split+=1;const base=path.resolve(segments.slice(0,split).join("/")||".");if(!fs.existsSync(base)||!fs.statSync(base).isDirectory())return[];const regex=globToRegExp(segments.slice(split));return walkDir(base,()=>!0).filter(file=>regex.test(path.relative(base,file).split(path.sep).join("/")))}function collectFiles(targets,extensions){const files=new Set;for(const target of targets){if(/[*?]/.test(target)){for(const file of expandGlob(target))files.add(file);continue}const resolved=path.resolve(target);if(!fs.existsSync(resolved)){console.error(`warning: path not found, skipping: ${target}`);continue}if(fs.statSync(resolved).isDirectory())for(const file of walkDir(resolved,(_file,name)=>extensions.has(path.extname(name).slice(1).toLowerCase())))files.add(file);else files.add(resolved)}return[...files].sort()}function run(argv,{compatibilityContext=null,currentExportDeprecations=null}={}){let options;try{options=parseArgs(argv)}catch(error){return console.error(error instanceof Error?error.message:error),1}if(options.help||!options.targets.length)return printUsage(),options.help?0:1;const files=collectFiles(options.targets,options.extensions);if(!files.length)return console.error("No files matched the given path(s)/pattern(s)."),1;if(options.rule!==null&&options.origin!==null)return console.error("--rule runs on its own; omit --origin."),1;try{if(options.rule!==null){const report2=migrateRuleFiles({files,rule:options.rule,dryRun:options.dryRun,reportPath:options.report?path.resolve(options.report):null,collectDiff:options.diff}),log2=options.diff?console.error:console.log;options.diff&&process.stdout.write(report2.diff);for(const entry of report2.changes)log2(`${entry.file}:${entry.line}:${entry.column} ${entry.action}: ${entry.message}`);for(const entry of report2.warnings)log2(`${entry.file}:${entry.line}:${entry.column} warning ${entry.warningCode}: ${entry.message}`);return log2(`${report2.filesScanned} file(s) scanned, ${report2.filesChanged} changed, ${report2.summary.rewrites} rewrite(s), ${report2.summary.warnings} warning(s).`),options.dryRun&&report2.filesChanged&&log2("Dry run only -- no source files were written."),options.report&&log2(`JSON report written to ${options.report}.`),options.check&&(report2.filesChanged>0||report2.summary.warnings>0)?1:0}const inventory=JSON.parse(fs.readFileSync(inventoryPath,"utf8")),renameOrigin=LYRA_RENAME_ORIGINS.includes(options.origin),lyraVersion=renameOrigin?options.lyraVersion??detectInstalledLyraVersion():null,report=migrateFiles({files,inventory,dryRun:options.dryRun,origin:options.origin,renameLedger:packagedRuntime?null:readRenameLedger(),exportDeprecations:packagedRuntime?[]:currentExportDeprecations??readExportDeprecations(),compatibilityContext,lyraVersion,reportPath:options.report?path.resolve(options.report):null,collectDiff:options.diff}),log=options.diff?console.error:console.log;options.diff&&process.stdout.write(report.diff),renameOrigin&&log(lyraVersion===null?"No installed @aceshooting/lyra-ui found under the working directory; applying every entry of the profile.":`Applying entries available in @aceshooting/lyra-ui ${lyraVersion}`+(report.summary.skipped?`; ${report.summary.skipped} entr${report.summary.skipped===1?"y needs":"ies need"} a later release.`:"."));for(const entry of report.changes)log(`${entry.file}:${entry.line}:${entry.column} ${entry.action}: ${entry.message}`);for(const entry of report.warnings)log(`${entry.file}:${entry.line}:${entry.column} warning ${entry.warningCode}: ${entry.message}`);if(log(`${report.filesScanned} file(s) scanned, ${report.filesChanged} changed, ${report.summary.rewrites} rewrite(s), ${report.summary.warnings} warning(s)`+(Object.hasOwn(report.summary,"acknowledged")?`, ${report.summary.acknowledged} acknowledged.`:".")),options.dryRun&&report.filesChanged&&log("Dry run only -- no source files were written."),options.report&&log(`JSON report written to ${options.report}.`),options.check){const remaining=report.filesChanged>0||report.summary.warnings>0;return log(remaining?`Migration check failed: ${report.filesChanged} file(s) need changes and ${report.summary.warnings} warning(s) require review.`:"Migration check passed: no rewrites or warnings remain."),remaining?1:0}return 0}catch(error){return console.error(error instanceof Error?error.message:error),1}}function invokedAsCli(){const invoked=process.argv[1];if(!invoked)return!1;const here=fileURLToPath(import.meta.url);try{return fs.realpathSync(invoked)===fs.realpathSync(here)}catch{return path.resolve(invoked)===here}}if(invokedAsCli())if(packagedRuntime||process.argv.includes("--help")||process.argv.length<3)process.exitCode=run(process.argv.slice(2));else{const{readCurrentCompatibilityContext}=await import("./check-published-compatibility.mjs"),{readComponentMetadataSources,assembleComponentMetadata}=await import("./component-metadata-source.mjs"),packageRoot=path.resolve(path.dirname(fileURLToPath(import.meta.url)),".."),compatibilityContext=await readCurrentCompatibilityContext(packageRoot);process.exitCode=run(process.argv.slice(2),{compatibilityContext,currentExportDeprecations:assembleComponentMetadata(readComponentMetadataSources(packageRoot)).exportDeprecations})}export{MIGRATION_ORIGINS2 as MIGRATION_ORIGINS,MIGRATION_REPORT_SCHEMA_VERSION,MIGRATION_RULES,MIGRATION_RUNTIME_SCHEMA_VERSION,buildMigrationContract2 as buildMigrationContract,buildMirrorMap,collectFiles,createMigrationRuntimeInventory,detectInstalledLyraVersion,migrateFiles,migrateRuleFiles,migrateText2 as migrateText,migrateThemeScopes2 as migrateThemeScopes,parseArgs,readExportDeprecations2 as readExportDeprecations,readRenameLedger2 as readRenameLedger,run,scanUnrewrittenUpstreamReferences,unifiedDiff};
|