nudge-ui 0.2.4 → 0.2.6
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/dist/cli/agentCommand.d.ts +0 -1
- package/dist/cli/agentCommand.js +4 -29
- package/dist/client.mjs +987 -221
- package/dist/compiler/ast.d.ts +0 -6
- package/dist/compiler/ast.js +0 -5
- package/dist/compiler/componentContractTypes.d.ts +11 -5
- package/dist/compiler/componentContracts.js +3 -9
- package/dist/compiler/componentInstrumentation.d.ts +2 -13
- package/dist/compiler/componentInstrumentation.js +3 -12
- package/dist/compiler/componentPolicyResolution.d.ts +3 -22
- package/dist/compiler/componentPolicyResolution.js +6 -38
- package/dist/compiler/identityAttributes.d.ts +2 -0
- package/dist/compiler/identityAttributes.js +2 -0
- package/dist/compiler/index.d.ts +0 -1
- package/dist/compiler/index.js +0 -1
- package/dist/compiler/packageComponentContracts.d.ts +10 -19
- package/dist/compiler/packageComponentContracts.js +60 -43
- package/dist/compiler/reactComponentProtocols.d.ts +0 -7
- package/dist/compiler/reactComponentProtocols.js +0 -7
- package/dist/compiler/reactIdentity.d.ts +2 -2
- package/dist/compiler/reactIdentity.js +41 -43
- package/dist/compiler/sourcePaths.d.ts +4 -8
- package/dist/compiler/sourcePaths.js +6 -8
- package/dist/css/dialects/index.d.ts +2 -21
- package/dist/css/dialects/index.js +2 -9
- package/dist/css/dialects/tailwind.d.ts +2 -16
- package/dist/css/dialects/tailwind.js +2 -25
- package/dist/css/dialects/vanillaExtract.d.ts +1 -9
- package/dist/css/dialects/vanillaExtract.js +0 -1
- package/dist/css/index.d.ts +0 -8
- package/dist/css/index.js +0 -8
- package/dist/css/model/index.d.ts +6 -38
- package/dist/css/model/index.js +0 -9
- package/dist/css/token-inventory/index.d.ts +0 -23
- package/dist/css/token-inventory/index.js +0 -23
- package/dist/css/token-inventory/inventory.js +4 -16
- package/dist/css/token-inventory/parseStylesheet.d.ts +1 -9
- package/dist/css/token-inventory/parseStylesheet.js +5 -42
- package/dist/css/token-inventory/policy.d.ts +2 -39
- package/dist/css/token-inventory/policy.js +2 -39
- package/dist/css/token-inventory/types.d.ts +2 -15
- package/dist/css/value-semantics/borderSemantics.d.ts +1 -8
- package/dist/css/value-semantics/borderSemantics.js +5 -23
- package/dist/css/value-semantics/boxSemantics.d.ts +2 -25
- package/dist/css/value-semantics/boxSemantics.js +1 -7
- package/dist/css/value-semantics/colorSemantics.d.ts +6 -60
- package/dist/css/value-semantics/colorSemantics.js +9 -40
- package/dist/css/value-semantics/cssSyntax.d.ts +10 -10
- package/dist/css/value-semantics/cssSyntax.js +39 -11
- package/dist/css/value-semantics/fontSemantics.d.ts +3 -19
- package/dist/css/value-semantics/fontSemantics.js +7 -25
- package/dist/css/value-semantics/index.d.ts +1 -12
- package/dist/css/value-semantics/index.js +1 -12
- package/dist/css/value-semantics/propertyPolicy.d.ts +6 -53
- package/dist/css/value-semantics/propertyPolicy.js +47 -59
- package/dist/css/value-semantics/stringMaps.d.ts +0 -1
- package/dist/css/value-semantics/structuredValues.d.ts +3 -37
- package/dist/css/value-semantics/structuredValues.js +6 -17
- package/dist/css/value-semantics/tokenInterpretation.d.ts +8 -50
- package/dist/css/value-semantics/tokenInterpretation.js +7 -21
- package/dist/hosts/astro/astroRuntimeConfig.d.ts +0 -1
- package/dist/hosts/astro/astroRuntimeConfig.js +0 -1
- package/dist/hosts/astro/clientAsset.d.ts +1 -5
- package/dist/hosts/astro/clientAsset.js +1 -5
- package/dist/hosts/astro/clientTransport.d.ts +0 -1
- package/dist/hosts/astro/clientTransport.js +4 -9
- package/dist/hosts/astro/integration.d.ts +2 -28
- package/dist/hosts/astro/integration.js +7 -36
- package/dist/hosts/astro/markdownIdentity.d.ts +0 -3
- package/dist/hosts/astro/markdownIdentity.js +0 -3
- package/dist/hosts/astro/middleware.d.ts +1 -12
- package/dist/hosts/astro/middleware.js +1 -12
- package/dist/hosts/astro/projectContext.d.ts +1 -9
- package/dist/hosts/astro/projectContext.js +2 -11
- package/dist/hosts/astro/responseInstrumentation.d.ts +4 -33
- package/dist/hosts/astro/responseInstrumentation.js +5 -34
- package/dist/hosts/environment.d.ts +0 -8
- package/dist/hosts/environment.js +0 -1
- package/dist/hosts/next/index.js +1 -3
- package/dist/hosts/next/loader.d.ts +5 -44
- package/dist/hosts/next/loader.js +22 -103
- package/dist/hosts/next/loaders/identity-loader.cjs +111 -65
- package/dist/hosts/next/loaders/loader-plugin.cjs +111 -65
- package/dist/hosts/next/manifest.d.ts +2 -16
- package/dist/hosts/next/manifest.js +18 -20
- package/dist/hosts/next/mount.d.ts +1 -11
- package/dist/hosts/next/mount.js +1 -11
- package/dist/hosts/next/repositoryScope.d.ts +2 -17
- package/dist/hosts/next/repositoryScope.js +2 -17
- package/dist/hosts/next/sidecar.d.ts +0 -13
- package/dist/hosts/next/sidecar.js +25 -110
- package/dist/hosts/next/wrapper.d.ts +0 -31
- package/dist/hosts/next/wrapper.js +14 -71
- package/dist/hosts/projectBridge.d.ts +0 -2
- package/dist/hosts/projectBridge.js +3 -19
- package/dist/hosts/reactRendererCapture.d.ts +2 -0
- package/dist/hosts/reactRendererCapture.js +12 -0
- package/dist/hosts/static/cli.d.ts +0 -4
- package/dist/hosts/static/cli.js +0 -3
- package/dist/hosts/static/html/bootstrap.d.ts +1 -18
- package/dist/hosts/static/html/bootstrap.js +2 -14
- package/dist/hosts/static/manifest.d.ts +2 -15
- package/dist/hosts/static/manifest.js +5 -18
- package/dist/hosts/static/server.d.ts +4 -38
- package/dist/hosts/static/server.js +17 -67
- package/dist/hosts/vite/index.d.ts +0 -10
- package/dist/hosts/vite/index.js +0 -10
- package/dist/hosts/vite/react.d.ts +4 -17
- package/dist/hosts/vite/react.js +18 -35
- package/dist/hosts/vite/tokens/activeStylesheets.d.ts +1 -10
- package/dist/hosts/vite/tokens/activeStylesheets.js +3 -8
- package/dist/hosts/vite/tokens/fileMap.d.ts +0 -1
- package/dist/hosts/vite/tokens/viteStylesheetArtifacts.d.ts +2 -15
- package/dist/hosts/vite/tokens/viteStylesheetArtifacts.js +3 -10
- package/dist/hosts/vite/vite.d.ts +5 -26
- package/dist/hosts/vite/vite.js +44 -80
- package/dist/html/dom.d.ts +0 -1
- package/dist/html/dom.js +0 -1
- package/dist/html/identity.d.ts +1 -15
- package/dist/html/identity.js +1 -8
- package/dist/html/insertions.d.ts +2 -8
- package/dist/html/insertions.js +1 -1
- package/dist/inspector/agent/McpConnectionDialog.d.ts +1 -6
- package/dist/inspector/agent/McpConnectionDialog.js +8 -9
- package/dist/inspector/agent/activity.d.ts +2 -2
- package/dist/inspector/agent/activity.js +4 -3
- package/dist/inspector/agent/client.d.ts +3 -27
- package/dist/inspector/agent/client.js +43 -91
- package/dist/inspector/agent/connectionStatus.d.ts +3 -2
- package/dist/inspector/agent/connectionStatus.js +25 -1
- package/dist/inspector/agent/httpTransport.d.ts +0 -8
- package/dist/inspector/agent/httpTransport.js +42 -176
- package/dist/inspector/agent/protocol.d.ts +1 -10
- package/dist/inspector/agent/protocol.js +1 -9
- package/dist/inspector/agent/verification.d.ts +3 -20
- package/dist/inspector/agent/verification.js +10 -43
- package/dist/inspector/boot.d.ts +5 -0
- package/dist/inspector/boot.js +289 -0
- package/dist/inspector/canvas/AgentActivityOverlay.d.ts +3 -2
- package/dist/inspector/canvas/AgentActivityOverlay.js +7 -4
- package/dist/inspector/canvas/CanvasCard.js +26 -24
- package/dist/inspector/canvas/CanvasElementOverlay.js +196 -174
- package/dist/inspector/canvas/CanvasToolbar.js +2 -1
- package/dist/inspector/canvas/CanvasWorkspace.js +87 -124
- package/dist/inspector/canvas/LockedWorkspaceNotice.d.ts +3 -2
- package/dist/inspector/canvas/LockedWorkspaceNotice.js +10 -6
- package/dist/inspector/canvas/PageCard.d.ts +9 -0
- package/dist/inspector/canvas/PageCard.js +50 -0
- package/dist/inspector/canvas/SketchToolOptions.d.ts +4 -0
- package/dist/inspector/canvas/SketchToolOptions.js +80 -0
- package/dist/inspector/canvas/StaleChangeIndicator.d.ts +1 -1
- package/dist/inspector/canvas/StaleChangeIndicator.js +1 -1
- package/dist/inspector/canvas/ToolOptionsDrawer.d.ts +16 -0
- package/dist/inspector/canvas/ToolOptionsDrawer.js +71 -0
- package/dist/inspector/canvas/activeCanvasDocument.d.ts +3 -4
- package/dist/inspector/canvas/activeCanvasDocument.js +0 -2
- package/dist/inspector/canvas/agentPresentation.d.ts +2 -13
- package/dist/inspector/canvas/agentPresentation.js +3 -14
- package/dist/inspector/canvas/assets/eraser.svg +28 -0
- package/dist/inspector/canvas/assets/pen.svg +25 -0
- package/dist/inspector/canvas/canvasFrame.d.ts +12 -0
- package/dist/inspector/canvas/canvasFrame.js +9 -0
- package/dist/inspector/canvas/canvasGestures.d.ts +0 -1
- package/dist/inspector/canvas/canvasGestures.js +0 -6
- package/dist/inspector/canvas/canvasResize.d.ts +1 -6
- package/dist/inspector/canvas/canvasResize.js +1 -6
- package/dist/inspector/canvas/canvasStore.d.ts +5 -7
- package/dist/inspector/canvas/canvasStore.js +42 -21
- package/dist/inspector/canvas/frameConnection.d.ts +42 -0
- package/dist/inspector/canvas/frameConnection.js +73 -0
- package/dist/inspector/canvas/frameContent.d.ts +0 -1
- package/dist/inspector/canvas/frameLifecycle.d.ts +12 -0
- package/dist/inspector/canvas/frameLifecycle.js +11 -0
- package/dist/inspector/canvas/frameProtocol.d.ts +20 -38
- package/dist/inspector/canvas/frameProtocol.js +37 -24
- package/dist/inspector/canvas/frameScrollbarStyles.d.ts +0 -1
- package/dist/inspector/canvas/frameScrollbarStyles.js +0 -1
- package/dist/inspector/canvas/layout.d.ts +10 -22
- package/dist/inspector/canvas/layout.js +0 -3
- package/dist/inspector/canvas/normalizeUrl.js +1 -8
- package/dist/inspector/canvas/pageSurface.d.ts +6 -0
- package/dist/inspector/canvas/pageSurface.js +29 -0
- package/dist/inspector/canvas/projection.d.ts +14 -25
- package/dist/inspector/canvas/projection.js +64 -87
- package/dist/inspector/canvas/rendererBootstrap.d.ts +8 -1
- package/dist/inspector/canvas/rendererBootstrap.js +10 -15
- package/dist/inspector/canvas/rendererCidIndex.d.ts +0 -5
- package/dist/inspector/canvas/rendererCidIndex.js +0 -5
- package/dist/inspector/canvas/rendererElementSelector.js +38 -28
- package/dist/inspector/canvas/rendererMessageRouter.d.ts +4 -6
- package/dist/inspector/canvas/rendererMessageRouter.js +12 -17
- package/dist/inspector/canvas/rendererSelectionProxy.d.ts +3 -1
- package/dist/inspector/canvas/rendererSelectionProxy.js +7 -40
- package/dist/inspector/canvas/rendererStylesheet.d.ts +0 -1
- package/dist/inspector/canvas/rendererStylesheet.js +23 -1
- package/dist/inspector/canvas/resizeHandleScale.d.ts +1 -10
- package/dist/inspector/canvas/resizeHandleScale.js +1 -10
- package/dist/inspector/canvas/sessionStore.d.ts +3 -9
- package/dist/inspector/canvas/sessionStore.js +33 -43
- package/dist/inspector/canvas/staleChangeDetector.d.ts +1 -1
- package/dist/inspector/canvas/staleChangeDetector.js +11 -26
- package/dist/inspector/canvas/toolbarScale.d.ts +1 -4
- package/dist/inspector/canvas/toolbarScale.js +1 -4
- package/dist/inspector/canvas/useCanvasLayoutAnimation.d.ts +0 -1
- package/dist/inspector/canvas/useCanvasLayoutAnimation.js +0 -1
- package/dist/inspector/canvas/viewStore.js +1 -1
- package/dist/inspector/canvas/wheelPan.d.ts +1 -1
- package/dist/inspector/canvas/wheelPan.js +1 -1
- package/dist/inspector/canvas/workspaceLease.d.ts +1 -5
- package/dist/inspector/canvas/workspaceLease.js +1 -7
- package/dist/inspector/changes/codecs.d.ts +1 -0
- package/dist/inspector/changes/codecs.js +21 -5
- package/dist/inspector/changes/draftPreview.d.ts +7 -0
- package/dist/inspector/changes/draftPreview.js +118 -0
- package/dist/inspector/changes/editModel.d.ts +11 -13
- package/dist/inspector/changes/editModel.js +9 -4
- package/dist/inspector/changes/managedStyleProjection.js +6 -15
- package/dist/inspector/changes/model.d.ts +0 -5
- package/dist/inspector/changes/model.js +1 -8
- package/dist/inspector/changes/previewDiagnostics.d.ts +2 -12
- package/dist/inspector/changes/previewDiagnostics.js +5 -21
- package/dist/inspector/changes/previewVerification.d.ts +25 -0
- package/dist/inspector/changes/previewVerification.js +34 -0
- package/dist/inspector/changes/structuralTypes.d.ts +2 -4
- package/dist/inspector/changes/types.d.ts +11 -8
- package/dist/inspector/clientManifest.d.ts +17 -6
- package/dist/inspector/clientManifest.js +16 -3
- package/dist/inspector/comments/CommentsOverlay.js +66 -23
- package/dist/inspector/comments/element.d.ts +1 -2
- package/dist/inspector/comments/element.js +1 -2
- package/dist/inspector/comments/store.d.ts +1 -1
- package/dist/inspector/comments/store.js +4 -3
- package/dist/inspector/comments/verification.d.ts +8 -2
- package/dist/inspector/comments/verification.js +19 -11
- package/dist/inspector/componentSemantics/ComponentPropsSection.d.ts +8 -0
- package/dist/inspector/componentSemantics/ComponentPropsSection.js +12 -8
- package/dist/inspector/componentSemantics/adapterRegistry.d.ts +2 -9
- package/dist/inspector/componentSemantics/adapterRegistry.js +2 -9
- package/dist/inspector/componentSemantics/changeAction.js +1 -1
- package/dist/inspector/componentSemantics/changeModel.js +2 -4
- package/dist/inspector/componentSemantics/react/callsites.d.ts +28 -0
- package/dist/inspector/componentSemantics/react/callsites.js +261 -0
- package/dist/inspector/componentSemantics/react/devtoolsHook.d.ts +23 -0
- package/dist/inspector/componentSemantics/react/devtoolsHook.js +71 -0
- package/dist/inspector/componentSemantics/react/fibers.d.ts +17 -0
- package/dist/inspector/componentSemantics/react/fibers.js +30 -0
- package/dist/inspector/componentSemantics/{reactRuntime.d.ts → react/runtime.d.ts} +3 -2
- package/dist/inspector/componentSemantics/{reactRuntime.js → react/runtime.js} +70 -53
- package/dist/inspector/componentSemantics/runtimeBridge.d.ts +2 -18
- package/dist/inspector/componentSemantics/runtimeBridge.js +5 -19
- package/dist/inspector/componentSemantics/textBinding.d.ts +2 -11
- package/dist/inspector/componentSemantics/textBinding.js +20 -87
- package/dist/inspector/componentSemantics/types.d.ts +8 -27
- package/dist/inspector/componentSemantics/types.js +0 -1
- package/dist/inspector/conformance/borderCases.d.ts +0 -5
- package/dist/inspector/conformance/borderCases.js +0 -5
- package/dist/inspector/conformance/colorCases.d.ts +0 -6
- package/dist/inspector/conformance/colorCases.js +0 -6
- package/dist/inspector/conformance/fixture.d.ts +1 -5
- package/dist/inspector/conformance/fixture.js +1 -5
- package/dist/inspector/conformance/spacingCases.d.ts +0 -4
- package/dist/inspector/conformance/spacingCases.js +0 -4
- package/dist/inspector/conformance/typographyCases.d.ts +0 -5
- package/dist/inspector/conformance/typographyCases.js +0 -5
- package/dist/inspector/drafts/draftStore.d.ts +95 -0
- package/dist/inspector/drafts/draftStore.js +461 -0
- package/dist/inspector/drafts/model.d.ts +14 -14
- package/dist/inspector/drafts/model.js +4 -2
- package/dist/inspector/drafts/store.d.ts +47 -16
- package/dist/inspector/drafts/store.js +137 -170
- package/dist/inspector/editScope.d.ts +0 -1
- package/dist/inspector/editScope.js +0 -1
- package/dist/inspector/index.d.ts +2 -4
- package/dist/inspector/index.js +2 -264
- package/dist/inspector/inline-text/inlineTextDiagnostics.d.ts +0 -2
- package/dist/inspector/inline-text/inlineTextDiagnostics.js +0 -2
- package/dist/inspector/inline-text/inlineTextEditor.d.ts +3 -9
- package/dist/inspector/inline-text/inlineTextEditor.js +27 -81
- package/dist/inspector/inline-text/inlineTextLifecycle.js +1 -6
- package/dist/inspector/inline-text/textEditChange.d.ts +1 -2
- package/dist/inspector/inspection/bridge.d.ts +3 -7
- package/dist/inspector/inspection/bridge.js +6 -13
- package/dist/inspector/inspection/browserCssInspection.d.ts +12 -11
- package/dist/inspector/inspection/browserCssInspection.js +32 -14
- package/dist/inspector/inspection/browserCssInspectionRegistry.d.ts +0 -7
- package/dist/inspector/inspection/browserCssInspectionRegistry.js +1 -16
- package/dist/inspector/inspection/inspectionSnapshot.d.ts +6 -0
- package/dist/inspector/inspection/inspectionSnapshot.js +10 -0
- package/dist/inspector/inspection/performanceDiagnostics.d.ts +18 -0
- package/dist/inspector/inspection/performanceDiagnostics.js +31 -0
- package/dist/inspector/inspection/selectionProperty.d.ts +1 -6
- package/dist/inspector/inspection/selectionProperty.js +1 -5
- package/dist/inspector/inspection/useBrowserCssInspection.d.ts +1 -5
- package/dist/inspector/inspection/useBrowserCssInspection.js +22 -59
- package/dist/inspector/iterations/capture.d.ts +2 -2
- package/dist/inspector/iterations/capture.js +4 -9
- package/dist/inspector/iterations/client.d.ts +2 -2
- package/dist/inspector/iterations/client.js +0 -1
- package/dist/inspector/iterations/coordinator.d.ts +4 -4
- package/dist/inspector/iterations/coordinator.js +5 -4
- package/dist/inspector/iterations/prompt.d.ts +0 -1
- package/dist/inspector/iterations/prompt.js +9 -9
- package/dist/inspector/overlay/DomNavigator.d.ts +3 -1
- package/dist/inspector/overlay/DomNavigator.js +39 -15
- package/dist/inspector/overlay/DropGuideOverlay.d.ts +0 -1
- package/dist/inspector/overlay/DropGuideOverlay.js +0 -1
- package/dist/inspector/overlay/MeasurementGuideOverlay.d.ts +1 -8
- package/dist/inspector/overlay/MeasurementGuideOverlay.js +1 -5
- package/dist/inspector/overlay/clickPolicy.d.ts +3 -14
- package/dist/inspector/overlay/clickPolicy.js +3 -14
- package/dist/inspector/overlay/dropGuide.d.ts +0 -3
- package/dist/inspector/overlay/dropGuide.js +0 -3
- package/dist/inspector/overlay/frameThrottle.d.ts +0 -1
- package/dist/inspector/overlay/frameThrottle.js +0 -1
- package/dist/inspector/overlay/interactionStyles.d.ts +1 -1
- package/dist/inspector/overlay/interactionStyles.js +19 -8
- package/dist/inspector/overlay/measurementGeometry.js +4 -12
- package/dist/inspector/overlay/selectedGeometry.d.ts +1 -6
- package/dist/inspector/overlay/selectedGeometry.js +1 -8
- package/dist/inspector/overlay/spacingGestures.d.ts +14 -21
- package/dist/inspector/overlay/spacingGestures.js +151 -31
- package/dist/inspector/overlay/structuralGestures.d.ts +2 -9
- package/dist/inspector/overlay/structuralGestures.js +1 -4
- package/dist/inspector/pageInspector.d.ts +33 -0
- package/dist/inspector/pageInspector.js +335 -0
- package/dist/inspector/projection/cssEscapes.d.ts +0 -1
- package/dist/inspector/projection/cssEscapes.js +2 -4
- package/dist/inspector/projection/draftProjection.d.ts +6 -10
- package/dist/inspector/projection/draftProjection.js +8 -7
- package/dist/inspector/projection/managedStylesheet.d.ts +1 -7
- package/dist/inspector/projection/managedStylesheet.js +28 -26
- package/dist/inspector/projection/renderedInstance.d.ts +5 -28
- package/dist/inspector/projection/renderedInstance.js +13 -33
- package/dist/inspector/projection/structuralProjection.d.ts +7 -48
- package/dist/inspector/projection/structuralProjection.js +31 -96
- package/dist/inspector/projection/textProjection.d.ts +7 -13
- package/dist/inspector/projection/textProjection.js +35 -80
- package/dist/inspector/prompt/PromptSettingsDialog.d.ts +0 -1
- package/dist/inspector/prompt/PromptSettingsDialog.js +0 -1
- package/dist/inspector/prompt/clipboardHandoff.d.ts +1 -0
- package/dist/inspector/prompt/clipboardHandoff.js +34 -16
- package/dist/inspector/prompt/generatePrompt.d.ts +2 -2
- package/dist/inspector/prompt/generatePrompt.js +247 -166
- package/dist/inspector/prompt/promptDocument.d.ts +3 -0
- package/dist/inspector/prompt/promptDocument.js +8 -0
- package/dist/inspector/prompt/promptSettings.d.ts +0 -3
- package/dist/inspector/prompt/promptSettings.js +7 -8
- package/dist/inspector/runtime/devFlag.d.ts +2 -25
- package/dist/inspector/runtime/devFlag.js +4 -31
- package/dist/inspector/runtime/documentStylesheetOrder.d.ts +0 -2
- package/dist/inspector/runtime/editorShell.d.ts +0 -1
- package/dist/inspector/runtime/editorShell.js +0 -1
- package/dist/inspector/runtime/inspectorStorage.d.ts +11 -0
- package/dist/inspector/runtime/inspectorStorage.js +37 -0
- package/dist/inspector/runtime/ownedStylesheets.d.ts +14 -0
- package/dist/inspector/runtime/ownedStylesheets.js +66 -0
- package/dist/inspector/runtime/runtimeConfig.d.ts +14 -84
- package/dist/inspector/runtime/runtimeConfig.js +18 -50
- package/dist/inspector/runtime/runtimeIdentityClaims.d.ts +19 -0
- package/dist/inspector/runtime/runtimeIdentityClaims.js +178 -0
- package/dist/inspector/runtime/staticHtmlRuntimeIdentity.d.ts +6 -23
- package/dist/inspector/runtime/staticHtmlRuntimeIdentity.js +103 -52
- package/dist/inspector/runtime/useRuntimeConfig.d.ts +1 -8
- package/dist/inspector/runtime/useRuntimeConfig.js +1 -8
- package/dist/inspector/selection/editScope.d.ts +2 -7
- package/dist/inspector/selection/editScope.js +15 -14
- package/dist/inspector/selection/editTarget.d.ts +1 -5
- package/dist/inspector/selection/hierarchy.d.ts +11 -11
- package/dist/inspector/selection/hierarchy.js +42 -24
- package/dist/inspector/selection/selectionStore.d.ts +0 -3
- package/dist/inspector/selection/selectionStore.js +5 -16
- package/dist/inspector/selection/sourceSite.d.ts +1 -5
- package/dist/inspector/selection/sourceSite.js +2 -8
- package/dist/inspector/selection/styleSelection.d.ts +1 -5
- package/dist/inspector/selection/styleSelection.js +1 -5
- package/dist/inspector/session/lifecycle.d.ts +1 -9
- package/dist/inspector/session/lifecycle.js +0 -1
- package/dist/inspector/session/sessionContext.d.ts +0 -4
- package/dist/inspector/session/sessionContext.js +0 -4
- package/dist/inspector/session/sessionFactory.d.ts +0 -9
- package/dist/inspector/session/sessionFactory.js +0 -6
- package/dist/inspector/settings/SettingsDialog.d.ts +0 -1
- package/dist/inspector/settings/SettingsDialog.js +5 -3
- package/dist/inspector/shell/AgentStatusButton.d.ts +3 -2
- package/dist/inspector/shell/AgentStatusButton.js +7 -7
- package/dist/inspector/shell/AppShell.js +6 -2
- package/dist/inspector/shell/ChangesLog.js +29 -12
- package/dist/inspector/shell/CopyPromptButton.d.ts +2 -1
- package/dist/inspector/shell/CopyPromptButton.js +62 -55
- package/dist/inspector/shell/EmptyState.js +3 -3
- package/dist/inspector/shell/InspectorEditors.d.ts +16 -0
- package/dist/inspector/shell/InspectorEditors.js +14 -0
- package/dist/inspector/shell/InspectorPanel.d.ts +12 -0
- package/dist/inspector/shell/InspectorPanel.js +8 -0
- package/dist/inspector/shell/InspectorSelection.d.ts +24 -0
- package/dist/inspector/shell/InspectorSelection.js +20 -0
- package/dist/inspector/shell/InspectorShell.d.ts +0 -3
- package/dist/inspector/shell/InspectorShell.js +44 -58
- package/dist/inspector/shell/NudgeLogoIcon.d.ts +5 -0
- package/dist/inspector/shell/NudgeLogoIcon.js +5 -0
- package/dist/inspector/shell/PeekOriginalButton.d.ts +0 -5
- package/dist/inspector/shell/PeekOriginalButton.js +3 -8
- package/dist/inspector/shell/PeekOriginalIcon.d.ts +0 -5
- package/dist/inspector/shell/PeekOriginalIcon.js +0 -5
- package/dist/inspector/shell/PromptActionButton.d.ts +21 -0
- package/dist/inspector/shell/PromptActionButton.js +14 -0
- package/dist/inspector/shell/elementName.d.ts +5 -0
- package/dist/inspector/shell/elementName.js +29 -0
- package/dist/inspector/shell/interactionStatePreview.d.ts +6 -0
- package/dist/inspector/shell/interactionStatePreview.js +107 -0
- package/dist/inspector/shell/originalPreview.d.ts +1 -5
- package/dist/inspector/shell/originalPreview.js +5 -37
- package/dist/inspector/shell/stateValue.d.ts +1 -2
- package/dist/inspector/shell/stateValue.js +4 -8
- package/dist/inspector/shell/styleState.d.ts +1 -2
- package/dist/inspector/shell/styleState.js +1 -2
- package/dist/inspector/sketch/SketchEditor.js +5 -5
- package/dist/inspector/sketch/SketchFrameOverlay.d.ts +2 -1
- package/dist/inspector/sketch/SketchFrameOverlay.js +13 -16
- package/dist/inspector/sketch/SketchOverlay.d.ts +3 -5
- package/dist/inspector/sketch/SketchOverlay.js +138 -263
- package/dist/inspector/sketch/SketchPromptPanel.d.ts +1 -2
- package/dist/inspector/sketch/SketchPromptPanel.js +8 -2
- package/dist/inspector/sketch/SketchThumbnail.d.ts +5 -0
- package/dist/inspector/sketch/SketchThumbnail.js +18 -0
- package/dist/inspector/sketch/SketchWorkspace.d.ts +1 -2
- package/dist/inspector/sketch/SketchWorkspace.js +70 -37
- package/dist/inspector/sketch/capture.d.ts +12 -3
- package/dist/inspector/sketch/capture.js +31 -14
- package/dist/inspector/sketch/copySketch.d.ts +4 -0
- package/dist/inspector/sketch/copySketch.js +43 -0
- package/dist/inspector/sketch/drawingTools.d.ts +15 -0
- package/dist/inspector/sketch/drawingTools.js +46 -0
- package/dist/inspector/sketch/frameHeading.d.ts +3 -0
- package/dist/inspector/sketch/frameHeading.js +23 -0
- package/dist/inspector/sketch/freehand.d.ts +0 -1
- package/dist/inspector/sketch/freehand.js +3 -4
- package/dist/inspector/sketch/geometry.d.ts +2 -1
- package/dist/inspector/sketch/geometry.js +15 -1
- package/dist/inspector/sketch/handoff.js +0 -1
- package/dist/inspector/sketch/history.d.ts +26 -0
- package/dist/inspector/sketch/history.js +55 -0
- package/dist/inspector/sketch/interaction.d.ts +3 -5
- package/dist/inspector/sketch/interaction.js +8 -11
- package/dist/inspector/sketch/model.d.ts +33 -6
- package/dist/inspector/sketch/model.js +101 -63
- package/dist/inspector/sketch/persistence.d.ts +14 -1
- package/dist/inspector/sketch/persistence.js +64 -8
- package/dist/inspector/sketch/raster.d.ts +3 -2
- package/dist/inspector/sketch/raster.js +40 -20
- package/dist/inspector/sketch/store.d.ts +1 -1
- package/dist/inspector/sketch/store.js +3 -4
- package/dist/inspector/sketch/videoFrames.d.ts +6 -0
- package/dist/inspector/sketch/videoFrames.js +80 -0
- package/dist/inspector/spacing/projection.d.ts +0 -8
- package/dist/inspector/spacing/projection.js +38 -20
- package/dist/inspector/styleEditors/BackgroundEditor.js +3 -2
- package/dist/inspector/styleEditors/BorderEditor.js +30 -135
- package/dist/inspector/styleEditors/BorderRadiusEditor.js +8 -3
- package/dist/inspector/styleEditors/ChildPlacement.d.ts +12 -0
- package/dist/inspector/styleEditors/ChildPlacement.js +9 -0
- package/dist/inspector/styleEditors/FlexControls.d.ts +35 -0
- package/dist/inspector/styleEditors/FlexControls.js +158 -0
- package/dist/inspector/styleEditors/GapField.d.ts +5 -2
- package/dist/inspector/styleEditors/GapField.js +3 -4
- package/dist/inspector/styleEditors/GridChildSection.d.ts +0 -5
- package/dist/inspector/styleEditors/GridChildSection.js +0 -5
- package/dist/inspector/styleEditors/GridPicker.d.ts +1 -1
- package/dist/inspector/styleEditors/GridPicker.js +2 -4
- package/dist/inspector/styleEditors/GridSection.d.ts +10 -8
- package/dist/inspector/styleEditors/GridSection.js +22 -9
- package/dist/inspector/styleEditors/GridValueField.d.ts +1 -5
- package/dist/inspector/styleEditors/GridValueField.js +2 -8
- package/dist/inspector/styleEditors/ImageBackgroundEditor.d.ts +0 -1
- package/dist/inspector/styleEditors/ImageBackgroundEditor.js +1 -2
- package/dist/inspector/styleEditors/LayoutBlockedIndicator.d.ts +0 -1
- package/dist/inspector/styleEditors/LayoutBlockedIndicator.js +0 -1
- package/dist/inspector/styleEditors/LayoutComboField.js +0 -5
- package/dist/inspector/styleEditors/LayoutModeRow.d.ts +14 -0
- package/dist/inspector/styleEditors/LayoutModeRow.js +60 -0
- package/dist/inspector/styleEditors/LayoutSection.d.ts +2 -2
- package/dist/inspector/styleEditors/LayoutSection.js +30 -356
- package/dist/inspector/styleEditors/OpacityEditor.js +7 -5
- package/dist/inspector/styleEditors/PositionControls.d.ts +18 -0
- package/dist/inspector/styleEditors/PositionControls.js +16 -0
- package/dist/inspector/styleEditors/SizeSection.d.ts +18 -0
- package/dist/inspector/styleEditors/SizeSection.js +71 -0
- package/dist/inspector/styleEditors/{SpacingBox.d.ts → SpacingField.d.ts} +3 -10
- package/dist/inspector/styleEditors/{SpacingBox.js → SpacingField.js} +15 -29
- package/dist/inspector/styleEditors/Typography.js +2 -4
- package/dist/inspector/styleEditors/borderModel.d.ts +36 -0
- package/dist/inspector/styleEditors/borderModel.js +105 -0
- package/dist/inspector/styleEditors/completeCssValue.d.ts +1 -5
- package/dist/inspector/styleEditors/completeCssValue.js +3 -13
- package/dist/inspector/styleEditors/fieldValue.d.ts +20 -0
- package/dist/inspector/styleEditors/fieldValue.js +26 -0
- package/dist/inspector/styleEditors/gradientValue.d.ts +1 -1
- package/dist/inspector/styleEditors/gradientValue.js +3 -2
- package/dist/inspector/styleEditors/gridChildModel.d.ts +7 -47
- package/dist/inspector/styleEditors/gridChildModel.js +6 -37
- package/dist/inspector/styleEditors/hiddenSizeOverrides.d.ts +5 -0
- package/dist/inspector/styleEditors/hiddenSizeOverrides.js +42 -0
- package/dist/inspector/styleEditors/inlineAuthored.d.ts +1 -8
- package/dist/inspector/styleEditors/inlineAuthored.js +3 -17
- package/dist/inspector/styleEditors/layoutMode.d.ts +15 -0
- package/dist/inspector/styleEditors/layoutMode.js +33 -0
- package/dist/inspector/styleEditors/layoutPreviewState.d.ts +0 -1
- package/dist/inspector/styleEditors/layoutPreviewState.js +0 -1
- package/dist/inspector/styleEditors/layoutValue.d.ts +2 -8
- package/dist/inspector/styleEditors/layoutValue.js +6 -15
- package/dist/inspector/styleEditors/nudgeValue.d.ts +1 -13
- package/dist/inspector/styleEditors/nudgeValue.js +1 -13
- package/dist/inspector/styleEditors/rowLookup.d.ts +1 -5
- package/dist/inspector/styleEditors/rowLookup.js +1 -5
- package/dist/inspector/styleEditors/stringRecord.d.ts +1 -2
- package/dist/inspector/styleEditors/stylePresence.d.ts +0 -2
- package/dist/inspector/styleEditors/stylePresence.js +1 -4
- package/dist/inspector/styleEditors/textRelevance.d.ts +1 -1
- package/dist/inspector/styleEditors/textRelevance.js +1 -1
- package/dist/inspector/styleEditors/useFieldVisibility.js +1 -2
- package/dist/inspector/styleEditors/useLayoutContext.d.ts +13 -0
- package/dist/inspector/styleEditors/useLayoutContext.js +53 -0
- package/dist/inspector/styleEditors/valuePolicy.d.ts +1 -5
- package/dist/inspector/styleEditors/valuePolicy.js +0 -1
- package/dist/inspector/testing.d.ts +1 -4
- package/dist/inspector/testing.js +1 -4
- package/dist/inspector/tokens/TokenChip.d.ts +1 -4
- package/dist/inspector/tokens/TokenChip.js +1 -4
- package/dist/inspector/tokens/TokenField.d.ts +4 -3
- package/dist/inspector/tokens/TokenField.js +53 -32
- package/dist/inspector/tokens/TokensPanel.js +2 -1
- package/dist/inspector/tokens/catalog.d.ts +2 -10
- package/dist/inspector/tokens/catalog.js +5 -12
- package/dist/inspector/tokens/dragPointerLock.d.ts +0 -1
- package/dist/inspector/tokens/dragPointerLock.js +2 -3
- package/dist/inspector/tokens/editActions.d.ts +4 -4
- package/dist/inspector/tokens/editActions.js +11 -7
- package/dist/inspector/tokens/resolution/cascade.d.ts +1 -5
- package/dist/inspector/tokens/resolution/cascade.js +1 -5
- package/dist/inspector/tokens/resolution/containerQueryEvaluator.d.ts +11 -0
- package/dist/inspector/tokens/resolution/containerQueryEvaluator.js +82 -0
- package/dist/inspector/tokens/resolution/cssomCollector.d.ts +4 -19
- package/dist/inspector/tokens/resolution/cssomCollector.js +186 -122
- package/dist/inspector/tokens/resolution/nestedSelectors.d.ts +2 -0
- package/dist/inspector/tokens/resolution/nestedSelectors.js +63 -0
- package/dist/inspector/tokens/resolution/ruleMatching.d.ts +4 -14
- package/dist/inspector/tokens/resolution/ruleMatching.js +136 -63
- package/dist/inspector/tokens/resolution/selectorSemantics.d.ts +3 -14
- package/dist/inspector/tokens/resolution/selectorSemantics.js +12 -27
- package/dist/inspector/tokens/resolution.d.ts +11 -27
- package/dist/inspector/tokens/resolution.js +105 -181
- package/dist/inspector/tokens/tokenAvailability.d.ts +2 -14
- package/dist/inspector/tokens/tokenAvailability.js +6 -38
- package/dist/inspector/tokens/tokenEdits.d.ts +1 -1
- package/dist/inspector/tokens/tokenEdits.js +1 -1
- package/dist/inspector/tokens/valueSemanticsAdapter.d.ts +0 -1
- package/dist/inspector/tokens/valueSemanticsAdapter.js +18 -2
- package/dist/inspector/ui/AtRuleContext.d.ts +5 -5
- package/dist/inspector/ui/AtRuleContext.js +8 -6
- package/dist/inspector/ui/ControlSurface.d.ts +0 -4
- package/dist/inspector/ui/Disclosure.d.ts +0 -5
- package/dist/inspector/ui/Disclosure.js +0 -4
- package/dist/inspector/ui/InlineStyleWarning.d.ts +0 -1
- package/dist/inspector/ui/InlineStyleWarning.js +2 -2
- package/dist/inspector/ui/InspectorPopover.d.ts +1 -5
- package/dist/inspector/ui/InspectorPopover.js +1 -5
- package/dist/inspector/ui/InspectorStyle.d.ts +8 -0
- package/dist/inspector/ui/InspectorStyle.js +26 -0
- package/dist/inspector/ui/PopoverListbox.d.ts +2 -1
- package/dist/inspector/ui/PopoverListbox.js +3 -3
- package/dist/inspector/ui/SegmentedControl.d.ts +4 -4
- package/dist/inspector/ui/SegmentedControl.js +6 -4
- package/dist/inspector/ui/SideValuesField.d.ts +1 -6
- package/dist/inspector/ui/SideValuesField.js +2 -8
- package/dist/inspector/ui/Toast.d.ts +10 -0
- package/dist/inspector/ui/Toast.js +26 -0
- package/dist/inspector/ui/assets/canvasIllustration.d.ts +2 -0
- package/dist/inspector/ui/assets/canvasIllustration.js +21 -0
- package/dist/inspector/ui/assets/gridIllustration.d.ts +2 -0
- package/dist/inspector/ui/assets/{grid.svg → gridIllustration.js} +3 -2
- package/dist/inspector/ui/atRuleSegments.d.ts +13 -0
- package/dist/inspector/ui/atRuleSegments.js +34 -0
- package/dist/inspector/ui/classNames.d.ts +0 -1
- package/dist/inspector/ui/classNames.js +0 -1
- package/dist/inspector/ui/customCursors.d.ts +11 -0
- package/dist/inspector/ui/customCursors.js +29 -7
- package/dist/inspector/ui/styles.js +25 -25
- package/dist/inspector/workspace/commands.js +1 -2
- package/dist/inspector/workspace/controller.js +20 -2
- package/dist/inspector/workspace/handoff.d.ts +1 -5
- package/dist/inspector/workspace/handoff.js +4 -7
- package/dist/inspector/workspace/sentItems.d.ts +3 -6
- package/dist/inspector/workspace/sentItems.js +6 -24
- package/dist/inspector/workspace/timeline.d.ts +28 -11
- package/dist/inspector/workspace/timeline.js +117 -96
- package/dist/internal/agent-protocol.d.ts +53 -38
- package/dist/internal/agent-protocol.js +151 -42
- package/dist/nudge-ui.mjs +155 -92
- package/dist/project/artifacts.js +24 -21
- package/dist/project/files.d.ts +0 -1
- package/dist/project/files.js +2 -9
- package/dist/project/identity.d.ts +1 -5
- package/dist/project/identity.js +1 -5
- package/dist/project/mcpPackage.d.ts +3 -0
- package/dist/project/mcpPackage.js +55 -0
- package/dist/project/pathPolicy.d.ts +1 -6
- package/dist/project/pathPolicy.js +1 -6
- package/dist/project/tokens.d.ts +2 -12
- package/dist/project/tokens.js +4 -15
- package/dist/transport/editor.d.ts +1 -12
- package/dist/transport/editor.js +2 -13
- package/dist/transport/index.d.ts +0 -5
- package/dist/transport/index.js +0 -5
- package/dist/transport/routes.d.ts +0 -5
- package/dist/transport/routes.js +0 -5
- package/package.json +16 -5
- package/dist/inspector/canvas/measurementProjection.d.ts +0 -8
- package/dist/inspector/canvas/measurementProjection.js +0 -16
- package/dist/inspector/changes/changesLog.d.ts +0 -49
- package/dist/inspector/changes/changesLog.js +0 -255
- package/dist/inspector/changes/draftChanges.d.ts +0 -58
- package/dist/inspector/changes/draftChanges.js +0 -304
- package/dist/inspector/conformance/projection.d.ts +0 -2
- package/dist/inspector/conformance/projection.js +0 -3
- package/dist/inspector/inline-text/textChangeBoundary.d.ts +0 -6
- package/dist/inspector/inline-text/textChangeBoundary.js +0 -1
- package/dist/inspector/overlay/InspectorOverlay.d.ts +0 -5
- package/dist/inspector/overlay/InspectorOverlay.js +0 -332
- package/dist/inspector/overlay/elementSelector.d.ts +0 -1
- package/dist/inspector/overlay/elementSelector.js +0 -111
- package/dist/inspector/sketch/SketchChanges.d.ts +0 -2
- package/dist/inspector/sketch/SketchChanges.js +0 -72
- package/dist/inspector/sketch/SketchEntryButton.d.ts +0 -4
- package/dist/inspector/sketch/SketchEntryButton.js +0 -11
- package/dist/inspector/sketch/SketchLayersPanel.d.ts +0 -2
- package/dist/inspector/sketch/SketchLayersPanel.js +0 -71
- package/dist/inspector/styleEditors/InsetSection.d.ts +0 -15
- package/dist/inspector/styleEditors/InsetSection.js +0 -15
- package/dist/inspector/styleEditors/PositionInsets.d.ts +0 -15
- package/dist/inspector/styleEditors/PositionInsets.js +0 -12
- package/dist/inspector/tokens/TokenDropdown.d.ts +0 -13
- package/dist/inspector/tokens/TokenDropdown.js +0 -59
package/dist/compiler/ast.d.ts
CHANGED
|
@@ -1,18 +1,12 @@
|
|
|
1
|
-
/** The subset of Babel nodes needed by the host-neutral compiler. */
|
|
2
1
|
export type SyntaxNode = {
|
|
3
2
|
type: string;
|
|
4
3
|
[key: string]: unknown;
|
|
5
4
|
};
|
|
6
|
-
/** Node keys that never hold children worth visiting. */
|
|
7
5
|
export declare const SKIP_KEYS: Set<string>;
|
|
8
6
|
export declare function isNode(value: unknown): value is SyntaxNode;
|
|
9
|
-
/** Visit every child node with the property name it was reached through. */
|
|
10
7
|
export declare function forEachChild(node: SyntaxNode, visit: (child: SyntaxNode, key: string) => void): void;
|
|
11
8
|
export declare function childNodes(node: SyntaxNode): SyntaxNode[];
|
|
12
9
|
export declare function identifier(node: unknown): string | null;
|
|
13
|
-
/** Dotted name for a JSX element name: `A`, `A.B`, `A.B.C`. */
|
|
14
10
|
export declare function jsxMemberName(node: unknown): string | null;
|
|
15
|
-
/** Dotted name for an identifier expression or a JSX element name. */
|
|
16
11
|
export declare function elementName(node: unknown): string | null;
|
|
17
|
-
/** Parse module source, returning `null` when the source is not parseable. */
|
|
18
12
|
export declare function parseModule(code: string): SyntaxNode | null;
|
package/dist/compiler/ast.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { parse } from "@babel/parser";
|
|
2
|
-
/** Node keys that never hold children worth visiting. */
|
|
3
2
|
export const SKIP_KEYS = new Set([
|
|
4
3
|
"type",
|
|
5
4
|
"loc",
|
|
@@ -14,7 +13,6 @@ export const SKIP_KEYS = new Set([
|
|
|
14
13
|
export function isNode(value) {
|
|
15
14
|
return typeof value === "object" && value !== null && typeof Reflect.get(value, "type") === "string";
|
|
16
15
|
}
|
|
17
|
-
/** Visit every child node with the property name it was reached through. */
|
|
18
16
|
export function forEachChild(node, visit) {
|
|
19
17
|
for (const [key, value] of Object.entries(node)) {
|
|
20
18
|
if (SKIP_KEYS.has(key))
|
|
@@ -41,7 +39,6 @@ export function identifier(node) {
|
|
|
41
39
|
return null;
|
|
42
40
|
return typeof node.name === "string" ? node.name : typeof node.value === "string" ? node.value : null;
|
|
43
41
|
}
|
|
44
|
-
/** Dotted name for a JSX element name: `A`, `A.B`, `A.B.C`. */
|
|
45
42
|
export function jsxMemberName(node) {
|
|
46
43
|
if (!isNode(node))
|
|
47
44
|
return null;
|
|
@@ -53,7 +50,6 @@ export function jsxMemberName(node) {
|
|
|
53
50
|
const property = jsxMemberName(node.property);
|
|
54
51
|
return object && property ? `${object}.${property}` : null;
|
|
55
52
|
}
|
|
56
|
-
/** Dotted name for an identifier expression or a JSX element name. */
|
|
57
53
|
export function elementName(node) {
|
|
58
54
|
if (!isNode(node))
|
|
59
55
|
return null;
|
|
@@ -61,7 +57,6 @@ export function elementName(node) {
|
|
|
61
57
|
return typeof node.name === "string" ? node.name : null;
|
|
62
58
|
return jsxMemberName(node);
|
|
63
59
|
}
|
|
64
|
-
/** Parse module source, returning `null` when the source is not parseable. */
|
|
65
60
|
export function parseModule(code) {
|
|
66
61
|
try {
|
|
67
62
|
return parse(code, {
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
export type ComponentPropValue = string | number | boolean;
|
|
2
2
|
export interface ComponentPropContract {
|
|
3
3
|
name: string;
|
|
4
|
-
/**
|
|
5
|
-
* `text` is deliberately separate from a select. Text edits are allowed to
|
|
6
|
-
* choose an arbitrary string at runtime, while select controls are bounded
|
|
7
|
-
* by their contract options.
|
|
8
|
-
*/
|
|
9
4
|
control: "select" | "boolean" | "text";
|
|
10
5
|
options: ComponentPropValue[];
|
|
11
6
|
optional: boolean;
|
|
@@ -17,3 +12,14 @@ export interface ComponentContract {
|
|
|
17
12
|
props: ComponentPropContract[];
|
|
18
13
|
provenance: "typescript" | "package-manifest";
|
|
19
14
|
}
|
|
15
|
+
/** How a prop was written at its callsite; `default` exists only at runtime, for omitted props. */
|
|
16
|
+
export type AuthoredInvocationPropKind = "literal" | "expression" | "spread";
|
|
17
|
+
export interface ComponentInvocationMeta {
|
|
18
|
+
callsiteId: string;
|
|
19
|
+
componentId: string;
|
|
20
|
+
componentName: string;
|
|
21
|
+
file: string;
|
|
22
|
+
line: number;
|
|
23
|
+
column: number;
|
|
24
|
+
authoredProps: Record<string, AuthoredInvocationPropKind>;
|
|
25
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { parse } from "@babel/parser";
|
|
2
|
+
import { componentIdentity } from "./sourcePaths.js";
|
|
2
3
|
function isNode(value) {
|
|
3
4
|
return typeof value === "object"
|
|
4
5
|
&& value !== null
|
|
@@ -41,11 +42,6 @@ function literalValue(node) {
|
|
|
41
42
|
}
|
|
42
43
|
return null;
|
|
43
44
|
}
|
|
44
|
-
/**
|
|
45
|
-
* These are the names that a component contract can confidently describe as
|
|
46
|
-
* visible copy. The runtime still requires the current value to be a string
|
|
47
|
-
* equal to the rendered text before offering an inline binding.
|
|
48
|
-
*/
|
|
49
45
|
const STRUCTURAL_TEXT_PROPS = new Set([
|
|
50
46
|
"id",
|
|
51
47
|
"className",
|
|
@@ -75,9 +71,7 @@ function propertyContract(member) {
|
|
|
75
71
|
const typeNode = unwrapTypeAnnotation(member.typeAnnotation);
|
|
76
72
|
if (!name || !typeNode)
|
|
77
73
|
return null;
|
|
78
|
-
//
|
|
79
|
-
// implementation names are excluded here; package manifests can still
|
|
80
|
-
// explicitly publish a text control for a project-specific visible prop.
|
|
74
|
+
// Structural names are excluded from text controls here; package manifests can still publish them explicitly.
|
|
81
75
|
if (!isStructuralTextProp(name) && isTextType(typeNode)) {
|
|
82
76
|
return {
|
|
83
77
|
name,
|
|
@@ -190,7 +184,7 @@ function componentContract(name, propsType, declarations, file) {
|
|
|
190
184
|
if (props.length === 0)
|
|
191
185
|
return null;
|
|
192
186
|
return {
|
|
193
|
-
componentId:
|
|
187
|
+
componentId: componentIdentity(file, name),
|
|
194
188
|
name,
|
|
195
189
|
file,
|
|
196
190
|
props,
|
|
@@ -1,15 +1,8 @@
|
|
|
1
1
|
import { type SyntaxNode } from "./ast.js";
|
|
2
2
|
export type { SyntaxNode } from "./ast.js";
|
|
3
3
|
export interface ComponentInstrumentationOptions {
|
|
4
|
-
/**
|
|
5
|
-
* Package exports whose element type can be replaced by a semantic preview
|
|
6
|
-
* wrapper. Keys are exact import specifiers; values are exported names
|
|
7
|
-
* (`default` for a default import). Discovery of a prop contract does not
|
|
8
|
-
* imply compatibility. Prefer `hostPolicy` when the host can resolve import
|
|
9
|
-
* provenance and rendered slots.
|
|
10
|
-
*/
|
|
4
|
+
/** Exact specifier → exported names (`default` for a default import); a discovered contract alone never opts in. */
|
|
11
5
|
compatibleComponentImports?: Readonly<Record<string, readonly string[]>>;
|
|
12
|
-
/** Data-only import provenance and slot semantics resolved by the host Adapter. */
|
|
13
6
|
hostPolicy?: import("./componentPolicyResolution.js").HostComponentPolicy;
|
|
14
7
|
}
|
|
15
8
|
export interface ComponentBinding {
|
|
@@ -24,9 +17,5 @@ export interface ComponentInstrumentationPolicy {
|
|
|
24
17
|
rendersProp(componentName: string, prop: string): boolean;
|
|
25
18
|
componentId(componentName: string): string | null;
|
|
26
19
|
}
|
|
27
|
-
/**
|
|
28
|
-
* Classify bindings before editing JSX. Unknown and shadowed bindings are
|
|
29
|
-
* deliberately excluded: losing a semantic control is safer than changing an
|
|
30
|
-
* application's component protocol. Rendered DOM identity is independent.
|
|
31
|
-
*/
|
|
20
|
+
/** Unknown and shadowed bindings are deliberately excluded: losing a semantic control beats altering an app's protocol. */
|
|
32
21
|
export declare function createComponentInstrumentationPolicy(ast: SyntaxNode, options: ComponentInstrumentationOptions): ComponentInstrumentationPolicy;
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import { childNodes, identifier, isNode } from "./ast.js";
|
|
2
|
-
/**
|
|
3
|
-
* Classify bindings before editing JSX. Unknown and shadowed bindings are
|
|
4
|
-
* deliberately excluded: losing a semantic control is safer than changing an
|
|
5
|
-
* application's component protocol. Rendered DOM identity is independent.
|
|
6
|
-
*/
|
|
2
|
+
/** Unknown and shadowed bindings are deliberately excluded: losing a semantic control beats altering an app's protocol. */
|
|
7
3
|
export function createComponentInstrumentationPolicy(ast, options) {
|
|
8
4
|
const bindings = new Map();
|
|
9
5
|
const locals = new Set();
|
|
@@ -100,9 +96,7 @@ export function createComponentInstrumentationPolicy(ast, options) {
|
|
|
100
96
|
childNodes(node).forEach(visit);
|
|
101
97
|
};
|
|
102
98
|
visit(program);
|
|
103
|
-
//
|
|
104
|
-
// host resolution applies, and its JSX children are authored here rather
|
|
105
|
-
// than handed to an opaque third-party interface.
|
|
99
|
+
// Authored in this module, so its JSX children are not handed to an opaque third-party interface.
|
|
106
100
|
const isProjectLocalComponent = (componentName) => {
|
|
107
101
|
const [root, ...members] = componentName.split(".");
|
|
108
102
|
if (!root || ambiguous.has(root))
|
|
@@ -118,10 +112,7 @@ export function createComponentInstrumentationPolicy(ast, options) {
|
|
|
118
112
|
const resolved = options.hostPolicy?.components[componentName];
|
|
119
113
|
if (resolved)
|
|
120
114
|
return resolved.wrap;
|
|
121
|
-
//
|
|
122
|
-
// export is only compatible when the caller names it explicitly. The
|
|
123
|
-
// host-resolved policy traces re-exports and namespace members, so this
|
|
124
|
-
// fallback deliberately matches on the authored import alone.
|
|
115
|
+
// Direct-compiler fallback: matches the authored import alone, unlike host resolution which traces re-exports.
|
|
125
116
|
return options.compatibleComponentImports?.[binding.source]?.includes(binding.exportName) === true;
|
|
126
117
|
},
|
|
127
118
|
rendersChildren(componentName) {
|
|
@@ -1,15 +1,9 @@
|
|
|
1
1
|
/** Whether replacing a JSX element type with the semantic boundary is safe. */
|
|
2
2
|
export interface ComponentProtocol {
|
|
3
3
|
readonly wrap: boolean;
|
|
4
|
-
/**
|
|
5
|
-
* JSX-valued slots where the compiler may apply each descendant's resolved
|
|
6
|
-
* protocol. A component that resolves to project-owned source defaults to
|
|
7
|
-
* `wrap: true` with `children: "rendered"`; every other slot stays opaque
|
|
8
|
-
* until a host declares it.
|
|
9
|
-
*/
|
|
4
|
+
/** JSX-valued slots descendants may be instrumented through; undeclared slots stay opaque. */
|
|
10
5
|
readonly slots?: Readonly<Record<string, "rendered" | "opaque">>;
|
|
11
6
|
}
|
|
12
|
-
/** Component protocols exported by one canonical module specifier. */
|
|
13
7
|
export interface ComponentModuleProtocol {
|
|
14
8
|
readonly default?: ComponentProtocol;
|
|
15
9
|
readonly exports?: Readonly<Record<string, ComponentProtocol>>;
|
|
@@ -17,7 +11,6 @@ export interface ComponentModuleProtocol {
|
|
|
17
11
|
export interface ComponentModuleProtocols {
|
|
18
12
|
readonly [source: string]: ComponentModuleProtocol | undefined;
|
|
19
13
|
}
|
|
20
|
-
/** Build-tool operations needed to resolve an authored import to its defining module. */
|
|
21
14
|
export interface ComponentModuleAdapter {
|
|
22
15
|
resolve(specifier: string, importer: string): Promise<string | null>;
|
|
23
16
|
read(id: string): Promise<string | null>;
|
|
@@ -35,7 +28,6 @@ export interface ComponentPolicyDiagnostic {
|
|
|
35
28
|
readonly source: string;
|
|
36
29
|
readonly exportName: string;
|
|
37
30
|
}
|
|
38
|
-
/** Data-only policy consumed by the source compiler after a host resolves imports. */
|
|
39
31
|
export interface HostComponentPolicy {
|
|
40
32
|
readonly components: Readonly<Record<string, ResolvedComponentProtocol>>;
|
|
41
33
|
readonly diagnostics: readonly ComponentPolicyDiagnostic[];
|
|
@@ -45,16 +37,9 @@ export interface ResolveHostComponentPolicyOptions {
|
|
|
45
37
|
/** Backwards-compatible shorthand: these exports may be wrapped but expose no rendered slots. */
|
|
46
38
|
readonly compatibleComponentImports?: Readonly<Record<string, readonly string[]>>;
|
|
47
39
|
}
|
|
48
|
-
/** Merge a host's protocol additions over a shared compatibility catalog. */
|
|
49
40
|
export declare function mergeComponentModuleProtocols(defaults: ComponentModuleProtocols, overrides: ComponentModuleProtocols | undefined): ComponentModuleProtocols;
|
|
50
|
-
/**
|
|
51
|
-
* Resolve the imported JSX values used by one source file.
|
|
52
|
-
*
|
|
53
|
-
* The compiler owns syntax and re-export traversal. The host Adapter owns all
|
|
54
|
-
* build-tool resolution, source ownership, and stable path decisions.
|
|
55
|
-
*/
|
|
41
|
+
/** The compiler owns syntax and re-export traversal; the host Adapter owns build-tool resolution and path decisions. */
|
|
56
42
|
export declare function resolveHostComponentPolicy(code: string, importer: string, adapter: ComponentModuleAdapter, options?: ResolveHostComponentPolicyOptions): Promise<HostComponentPolicy>;
|
|
57
|
-
/** One actionable message per diagnostic code and source. */
|
|
58
43
|
export interface GroupedComponentPolicyDiagnostic {
|
|
59
44
|
/** Stable dedupe key for host-side "warn once" tracking. */
|
|
60
45
|
readonly key: string;
|
|
@@ -62,10 +47,6 @@ export interface GroupedComponentPolicyDiagnostic {
|
|
|
62
47
|
readonly componentNames: readonly string[];
|
|
63
48
|
readonly total: number;
|
|
64
49
|
}
|
|
65
|
-
/**
|
|
66
|
-
* Roll per-component diagnostics up so a host emits one warning per package
|
|
67
|
-
* instead of one per skipped export.
|
|
68
|
-
*/
|
|
50
|
+
/** Rolls per-component diagnostics up so a host warns once per package, not once per skipped export. */
|
|
69
51
|
export declare function groupComponentPolicyDiagnostics(diagnostics: readonly ComponentPolicyDiagnostic[], maxNames?: number): GroupedComponentPolicyDiagnostic[];
|
|
70
|
-
/** Host-facing warning text for one grouped diagnostic. */
|
|
71
52
|
export declare function formatComponentPolicyWarning(grouped: GroupedComponentPolicyDiagnostic, location: string, hint?: string): string;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { childNodes, identifier, isNode, jsxMemberName, parseModule, } from "./ast.js";
|
|
2
|
-
import { stripModuleExtension } from "./sourcePaths.js";
|
|
3
|
-
/** Merge a host's protocol additions over a shared compatibility catalog. */
|
|
2
|
+
import { componentIdentity, stripModuleExtension } from "./sourcePaths.js";
|
|
4
3
|
export function mergeComponentModuleProtocols(defaults, overrides) {
|
|
5
4
|
if (!overrides)
|
|
6
5
|
return defaults;
|
|
@@ -20,18 +19,11 @@ export function mergeComponentModuleProtocols(defaults, overrides) {
|
|
|
20
19
|
}
|
|
21
20
|
return merged;
|
|
22
21
|
}
|
|
23
|
-
/** A resolution failure that carries only the reason a host reports. */
|
|
24
22
|
function unresolved(code) {
|
|
25
23
|
return { resolved: false, code };
|
|
26
24
|
}
|
|
27
25
|
const MAX_REEXPORT_DEPTH = 24;
|
|
28
|
-
/**
|
|
29
|
-
* Analyses are a pure function of module source, so a content-addressed cache
|
|
30
|
-
* is correct across HMR without host-specific invalidation: an edited file
|
|
31
|
-
* simply misses and is re-analysed, while every unchanged re-export target
|
|
32
|
-
* skips its parse. Without this, policy resolution reparses every reachable
|
|
33
|
-
* module on every transform.
|
|
34
|
-
*/
|
|
26
|
+
/** Keyed by module source, so the cache is correct across HMR without host-specific invalidation. */
|
|
35
27
|
const ANALYSIS_CACHE_LIMIT = 128;
|
|
36
28
|
const analysisCache = new Map();
|
|
37
29
|
function analyseModuleSource(code) {
|
|
@@ -48,12 +40,7 @@ function analyseModuleSource(code) {
|
|
|
48
40
|
analysisCache.set(code, analysis);
|
|
49
41
|
return analysis;
|
|
50
42
|
}
|
|
51
|
-
/**
|
|
52
|
-
* Resolve the imported JSX values used by one source file.
|
|
53
|
-
*
|
|
54
|
-
* The compiler owns syntax and re-export traversal. The host Adapter owns all
|
|
55
|
-
* build-tool resolution, source ownership, and stable path decisions.
|
|
56
|
-
*/
|
|
43
|
+
/** The compiler owns syntax and re-export traversal; the host Adapter owns build-tool resolution and path decisions. */
|
|
57
44
|
export async function resolveHostComponentPolicy(code, importer, adapter, options = {}) {
|
|
58
45
|
const analysis = analyseModuleSource(code);
|
|
59
46
|
if (!analysis) {
|
|
@@ -80,7 +67,6 @@ export async function resolveHostComponentPolicy(code, importer, adapter, option
|
|
|
80
67
|
}
|
|
81
68
|
return { components, diagnostics };
|
|
82
69
|
}
|
|
83
|
-
/** Depth-first pre-order traversal of every node in a tree. */
|
|
84
70
|
function visit(node, callback) {
|
|
85
71
|
callback(node);
|
|
86
72
|
for (const child of childNodes(node))
|
|
@@ -209,12 +195,6 @@ function importedReference(componentName, imports) {
|
|
|
209
195
|
return null;
|
|
210
196
|
return { source: binding.source, exportName };
|
|
211
197
|
}
|
|
212
|
-
/**
|
|
213
|
-
* Trace authored imports to the protocol of the component they name.
|
|
214
|
-
*
|
|
215
|
-
* The tracer closes over the host Adapter and the protocol catalog, so each
|
|
216
|
-
* step carries only its request, the module it sits in, and its trace state.
|
|
217
|
-
*/
|
|
218
198
|
function createTracer(adapter, options) {
|
|
219
199
|
async function request(source, exportName, importer, state) {
|
|
220
200
|
const declared = declaredProtocol(source, exportName, options);
|
|
@@ -291,7 +271,6 @@ function createTracer(adapter, options) {
|
|
|
291
271
|
return request(reference.source, reference.exportName, module.moduleId, state);
|
|
292
272
|
}
|
|
293
273
|
return {
|
|
294
|
-
/** Resolve one authored import to the protocol of the component it names. */
|
|
295
274
|
request: (source, exportName, importer) => request(source, exportName, importer, { visited: new Set(), depth: 0 }),
|
|
296
275
|
};
|
|
297
276
|
}
|
|
@@ -341,25 +320,15 @@ function resolvedProtocol(source, exportName, protocol) {
|
|
|
341
320
|
resolved: true,
|
|
342
321
|
protocol: {
|
|
343
322
|
...protocol,
|
|
344
|
-
componentId:
|
|
323
|
+
componentId: componentIdentity(source, exportName),
|
|
345
324
|
},
|
|
346
325
|
};
|
|
347
326
|
}
|
|
348
|
-
/**
|
|
349
|
-
* Default protocol for a component that resolves to project-owned source.
|
|
350
|
-
*
|
|
351
|
-
* The inspected codebase owns the definition, so replacing the element type is
|
|
352
|
-
* safe and its authored `children` may be traversed. Named JSX props stay
|
|
353
|
-
* opaque: only a host-declared protocol can promise that a named slot renders
|
|
354
|
-
* its contents.
|
|
355
|
-
*/
|
|
327
|
+
/** Project-owned source is safe to wrap, but named JSX props stay opaque until a host promises they render. */
|
|
356
328
|
function projectProtocol(source, exportName) {
|
|
357
329
|
return resolvedProtocol(source, exportName, { wrap: true, slots: { children: "rendered" } });
|
|
358
330
|
}
|
|
359
|
-
/**
|
|
360
|
-
* Roll per-component diagnostics up so a host emits one warning per package
|
|
361
|
-
* instead of one per skipped export.
|
|
362
|
-
*/
|
|
331
|
+
/** Rolls per-component diagnostics up so a host warns once per package, not once per skipped export. */
|
|
363
332
|
export function groupComponentPolicyDiagnostics(diagnostics, maxNames = 5) {
|
|
364
333
|
const groups = new Map();
|
|
365
334
|
for (const diagnostic of diagnostics) {
|
|
@@ -377,7 +346,6 @@ export function groupComponentPolicyDiagnostics(diagnostics, maxNames = 5) {
|
|
|
377
346
|
total: group.length,
|
|
378
347
|
}));
|
|
379
348
|
}
|
|
380
|
-
/** Host-facing warning text for one grouped diagnostic. */
|
|
381
349
|
export function formatComponentPolicyWarning(grouped, location, hint = "Add componentProtocols metadata to opt in compatible package exports.") {
|
|
382
350
|
const names = grouped.componentNames.join(", ");
|
|
383
351
|
const remainder = grouped.total > grouped.componentNames.length
|
package/dist/compiler/index.d.ts
CHANGED
package/dist/compiler/index.js
CHANGED
|
@@ -1,32 +1,23 @@
|
|
|
1
1
|
import ts from "typescript";
|
|
2
2
|
import type { ComponentContract } from "./componentContractTypes.js";
|
|
3
|
-
/**
|
|
4
|
-
* Identifies a package import from the host module that uses it.
|
|
5
|
-
*
|
|
6
|
-
* The host path is intentional: TypeScript uses it as the resolution anchor,
|
|
7
|
-
* so the same module specifier can resolve to a different installed package in
|
|
8
|
-
* each application. The returned contract identity always uses the import
|
|
9
|
-
* specifier, never an absolute node_modules path.
|
|
10
|
-
*/
|
|
3
|
+
/** hostFile is the resolution anchor; contract identity uses the specifier, never an absolute node_modules path. */
|
|
11
4
|
export interface PackageContractContext {
|
|
12
5
|
hostFile: string;
|
|
13
6
|
moduleSpecifier: string;
|
|
14
7
|
compilerOptions?: ts.CompilerOptions;
|
|
15
8
|
}
|
|
9
|
+
export interface PackageComponentImport {
|
|
10
|
+
readonly moduleSpecifier: string;
|
|
11
|
+
readonly exportName: string;
|
|
12
|
+
}
|
|
16
13
|
export interface PackageContractCatalogContext {
|
|
17
14
|
hostFile: string;
|
|
18
|
-
|
|
15
|
+
/** Scoped to what the app renders: the catalog ships to the browser and icon-set packages export thousands. */
|
|
16
|
+
imports: readonly PackageComponentImport[];
|
|
19
17
|
compilerOptions?: ts.CompilerOptions;
|
|
20
18
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Extracts scalar controls from component exports in an installed package.
|
|
25
|
-
*
|
|
26
|
-
* It follows TypeScript's resolved module graph, including barrel re-exports
|
|
27
|
-
* and declaration-file aliases, rather than trying to parse one declaration
|
|
28
|
-
* file in isolation.
|
|
29
|
-
*/
|
|
19
|
+
export declare function collectPackageComponentImports(code: string, fileName: string): PackageComponentImport[];
|
|
20
|
+
/** Follows TypeScript's resolved module graph (barrel re-exports, declaration aliases), not one file in isolation. */
|
|
30
21
|
export declare function extractPackageComponentContracts(context: PackageContractContext): ComponentContract[];
|
|
31
|
-
/**
|
|
22
|
+
/** Resolves every module through one declaration-only program. */
|
|
32
23
|
export declare function extractPackageComponentContractCatalog(context: PackageContractCatalogContext): ComponentContract[];
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { dirname, relative, resolve } from "node:path";
|
|
2
2
|
import ts from "typescript";
|
|
3
|
+
import { componentIdentity } from "./sourcePaths.js";
|
|
3
4
|
function isBareModuleSpecifier(value) {
|
|
4
5
|
return value !== ""
|
|
5
6
|
&& !value.startsWith(".")
|
|
@@ -7,16 +8,18 @@ function isBareModuleSpecifier(value) {
|
|
|
7
8
|
&& !value.startsWith("\0")
|
|
8
9
|
&& !value.startsWith("virtual:");
|
|
9
10
|
}
|
|
10
|
-
function
|
|
11
|
+
function jsxTagReference(tagName) {
|
|
12
|
+
const members = [];
|
|
11
13
|
let current = tagName;
|
|
12
|
-
while (ts.isPropertyAccessExpression(current))
|
|
14
|
+
while (ts.isPropertyAccessExpression(current)) {
|
|
15
|
+
members.unshift(current.name.text);
|
|
13
16
|
current = current.expression;
|
|
14
|
-
|
|
17
|
+
}
|
|
18
|
+
return ts.isIdentifier(current) ? { binding: current.text, member: members[0] ?? null } : null;
|
|
15
19
|
}
|
|
16
|
-
|
|
17
|
-
export function collectPackageComponentModules(code, fileName) {
|
|
20
|
+
export function collectPackageComponentImports(code, fileName) {
|
|
18
21
|
const source = ts.createSourceFile(fileName, code, ts.ScriptTarget.Latest, true, fileName.endsWith("x") ? ts.ScriptKind.TSX : ts.ScriptKind.JSX);
|
|
19
|
-
const
|
|
22
|
+
const bindings = new Map();
|
|
20
23
|
for (const statement of source.statements) {
|
|
21
24
|
if (!ts.isImportDeclaration(statement)
|
|
22
25
|
|| !ts.isStringLiteral(statement.moduleSpecifier)
|
|
@@ -24,31 +27,44 @@ export function collectPackageComponentModules(code, fileName) {
|
|
|
24
27
|
continue;
|
|
25
28
|
const moduleSpecifier = statement.moduleSpecifier.text;
|
|
26
29
|
const clause = statement.importClause;
|
|
27
|
-
if (clause
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
if (!clause || clause.isTypeOnly)
|
|
31
|
+
continue;
|
|
32
|
+
if (clause.name)
|
|
33
|
+
bindings.set(clause.name.text, { moduleSpecifier, exportName: "default" });
|
|
34
|
+
const named = clause.namedBindings;
|
|
35
|
+
if (named && ts.isNamespaceImport(named)) {
|
|
36
|
+
bindings.set(named.name.text, { moduleSpecifier, exportName: null });
|
|
32
37
|
}
|
|
33
|
-
else if (
|
|
34
|
-
for (const element of
|
|
35
|
-
if (
|
|
36
|
-
|
|
38
|
+
else if (named && ts.isNamedImports(named)) {
|
|
39
|
+
for (const element of named.elements) {
|
|
40
|
+
if (element.isTypeOnly)
|
|
41
|
+
continue;
|
|
42
|
+
bindings.set(element.name.text, {
|
|
43
|
+
moduleSpecifier,
|
|
44
|
+
exportName: (element.propertyName ?? element.name).text,
|
|
45
|
+
});
|
|
37
46
|
}
|
|
38
47
|
}
|
|
39
48
|
}
|
|
40
|
-
const
|
|
49
|
+
const imports = new Map();
|
|
41
50
|
const visit = (node) => {
|
|
42
51
|
if (ts.isJsxOpeningElement(node) || ts.isJsxSelfClosingElement(node)) {
|
|
43
|
-
const
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
52
|
+
const reference = jsxTagReference(node.tagName);
|
|
53
|
+
const binding = reference ? bindings.get(reference.binding) : undefined;
|
|
54
|
+
const exportName = binding?.exportName ?? reference?.member ?? null;
|
|
55
|
+
if (binding && exportName) {
|
|
56
|
+
imports.set(`${binding.moduleSpecifier}#${exportName}`, {
|
|
57
|
+
moduleSpecifier: binding.moduleSpecifier,
|
|
58
|
+
exportName,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
47
61
|
}
|
|
48
62
|
ts.forEachChild(node, visit);
|
|
49
63
|
};
|
|
50
64
|
visit(source);
|
|
51
|
-
return [...
|
|
65
|
+
return [...imports]
|
|
66
|
+
.sort(([left], [right]) => left.localeCompare(right))
|
|
67
|
+
.map(([, value]) => value);
|
|
52
68
|
}
|
|
53
69
|
const DEFAULT_COMPILER_OPTIONS = {
|
|
54
70
|
allowJs: false,
|
|
@@ -121,10 +137,7 @@ function literalOptions(members, checker, location) {
|
|
|
121
137
|
const values = members
|
|
122
138
|
.map(literalValue)
|
|
123
139
|
.filter((value) => value !== null);
|
|
124
|
-
//
|
|
125
|
-
// responsive/conditional object. The Inspector only offers this select when
|
|
126
|
-
// the current runtime value is scalar, so retain valid scalar alternatives
|
|
127
|
-
// without pretending the object form is itself editable here.
|
|
140
|
+
// Conditional object forms keep their scalar alternatives valid without making the object itself editable.
|
|
128
141
|
if (values.length < 2)
|
|
129
142
|
return null;
|
|
130
143
|
const primitive = typeof values[0];
|
|
@@ -241,34 +254,34 @@ function componentContract(exportName, symbol, checker, packageRoot, moduleSpeci
|
|
|
241
254
|
if (props.length === 0)
|
|
242
255
|
return null;
|
|
243
256
|
return {
|
|
244
|
-
componentId:
|
|
257
|
+
componentId: componentIdentity(moduleSpecifier, exportName),
|
|
245
258
|
name: exportName,
|
|
246
259
|
file: moduleSpecifier,
|
|
247
260
|
props,
|
|
248
261
|
provenance: "typescript",
|
|
249
262
|
};
|
|
250
263
|
}
|
|
251
|
-
/**
|
|
252
|
-
* Extracts scalar controls from component exports in an installed package.
|
|
253
|
-
*
|
|
254
|
-
* It follows TypeScript's resolved module graph, including barrel re-exports
|
|
255
|
-
* and declaration-file aliases, rather than trying to parse one declaration
|
|
256
|
-
* file in isolation.
|
|
257
|
-
*/
|
|
264
|
+
/** Follows TypeScript's resolved module graph (barrel re-exports, declaration aliases), not one file in isolation. */
|
|
258
265
|
export function extractPackageComponentContracts(context) {
|
|
259
|
-
return
|
|
260
|
-
hostFile: context.hostFile,
|
|
261
|
-
moduleSpecifiers: [context.moduleSpecifier],
|
|
262
|
-
compilerOptions: context.compilerOptions,
|
|
263
|
-
});
|
|
266
|
+
return extractContracts(context.hostFile, new Map([[context.moduleSpecifier, null]]), context.compilerOptions);
|
|
264
267
|
}
|
|
265
|
-
/**
|
|
268
|
+
/** Resolves every module through one declaration-only program. */
|
|
266
269
|
export function extractPackageComponentContractCatalog(context) {
|
|
267
|
-
const
|
|
268
|
-
const
|
|
270
|
+
const exportsByModule = new Map();
|
|
271
|
+
for (const { moduleSpecifier, exportName } of context.imports) {
|
|
272
|
+
const exportNames = exportsByModule.get(moduleSpecifier) ?? new Set();
|
|
273
|
+
exportNames.add(exportName);
|
|
274
|
+
exportsByModule.set(moduleSpecifier, exportNames);
|
|
275
|
+
}
|
|
276
|
+
return extractContracts(context.hostFile, exportsByModule, context.compilerOptions);
|
|
277
|
+
}
|
|
278
|
+
/** `null` export names describe every export of that module. */
|
|
279
|
+
function extractContracts(hostFile, exportsByModule, overrides) {
|
|
280
|
+
const compilerOptions = { ...DEFAULT_COMPILER_OPTIONS, ...overrides };
|
|
281
|
+
const moduleSpecifiers = [...exportsByModule.keys()].sort();
|
|
269
282
|
if (moduleSpecifiers.length === 0)
|
|
270
283
|
return [];
|
|
271
|
-
const virtualFile = resolve(dirname(
|
|
284
|
+
const virtualFile = resolve(dirname(hostFile), "__nudge_ui_package_contracts__.tsx");
|
|
272
285
|
const virtualSource = moduleSpecifiers
|
|
273
286
|
.map((moduleSpecifier, index) => `import * as __nudgeUiPackage${index} from ${JSON.stringify(moduleSpecifier)};`)
|
|
274
287
|
.join("\n");
|
|
@@ -296,7 +309,11 @@ export function extractPackageComponentContractCatalog(context) {
|
|
|
296
309
|
if (!moduleSymbol)
|
|
297
310
|
return [];
|
|
298
311
|
const packageRoot = packageRootFor(resolution.resolvedFileName, moduleSpecifier);
|
|
299
|
-
|
|
312
|
+
const exportNames = exportsByModule.get(moduleSpecifier);
|
|
313
|
+
const symbols = exportNames
|
|
314
|
+
? [...exportNames].sort().flatMap((exportName) => checker.tryGetMemberInModuleExports(exportName, moduleSymbol) ?? [])
|
|
315
|
+
: checker.getExportsOfModule(moduleSymbol);
|
|
316
|
+
return symbols
|
|
300
317
|
.map((symbol) => {
|
|
301
318
|
const exportName = symbolName(symbol);
|
|
302
319
|
return exportName
|
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Adapter-independent React compatibility data.
|
|
3
|
-
*
|
|
4
|
-
* Library names live in this replaceable catalog rather than in compiler
|
|
5
|
-
* control flow. Hosts may extend or replace these facts as their ecosystem
|
|
6
|
-
* support grows.
|
|
7
|
-
*/
|
|
8
1
|
export declare const defaultReactComponentProtocols: {
|
|
9
2
|
react: {
|
|
10
3
|
default: {
|
|
@@ -1,12 +1,5 @@
|
|
|
1
1
|
const PRESERVE = { wrap: false };
|
|
2
2
|
const RENDERED_CHILDREN = { wrap: false, slots: { children: "rendered" } };
|
|
3
|
-
/**
|
|
4
|
-
* Adapter-independent React compatibility data.
|
|
5
|
-
*
|
|
6
|
-
* Library names live in this replaceable catalog rather than in compiler
|
|
7
|
-
* control flow. Hosts may extend or replace these facts as their ecosystem
|
|
8
|
-
* support grows.
|
|
9
|
-
*/
|
|
10
3
|
export const defaultReactComponentProtocols = {
|
|
11
4
|
react: {
|
|
12
5
|
default: PRESERVE,
|
|
@@ -4,12 +4,12 @@ export type { ComponentInstrumentationOptions } from "./componentInstrumentation
|
|
|
4
4
|
export interface InjectResult {
|
|
5
5
|
code: string;
|
|
6
6
|
map: SourceMap | null;
|
|
7
|
+
/** The exact single line prepended to bind the runtime, or null; hosts with a directive prologue relocate it. */
|
|
8
|
+
prelude: string | null;
|
|
7
9
|
}
|
|
8
10
|
export interface InjectIdentityOptions extends ComponentInstrumentationOptions {
|
|
9
11
|
instrumentComponents?: boolean;
|
|
10
|
-
/** Module specifier emitted for the host-owned semantic runtime. */
|
|
11
12
|
componentRuntimeModule?: string;
|
|
12
13
|
}
|
|
13
14
|
export declare const DEFAULT_COMPONENT_RUNTIME_MODULE = "nudge-ui/internal/component-runtime";
|
|
14
15
|
export declare function injectIdentity(code: string, id: string, root?: string, options?: InjectIdentityOptions): InjectResult | null;
|
|
15
|
-
export declare function injectDataCid(code: string, id: string, root?: string): InjectResult | null;
|