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.
Files changed (642) hide show
  1. package/dist/cli/agentCommand.d.ts +0 -1
  2. package/dist/cli/agentCommand.js +4 -29
  3. package/dist/client.mjs +987 -221
  4. package/dist/compiler/ast.d.ts +0 -6
  5. package/dist/compiler/ast.js +0 -5
  6. package/dist/compiler/componentContractTypes.d.ts +11 -5
  7. package/dist/compiler/componentContracts.js +3 -9
  8. package/dist/compiler/componentInstrumentation.d.ts +2 -13
  9. package/dist/compiler/componentInstrumentation.js +3 -12
  10. package/dist/compiler/componentPolicyResolution.d.ts +3 -22
  11. package/dist/compiler/componentPolicyResolution.js +6 -38
  12. package/dist/compiler/identityAttributes.d.ts +2 -0
  13. package/dist/compiler/identityAttributes.js +2 -0
  14. package/dist/compiler/index.d.ts +0 -1
  15. package/dist/compiler/index.js +0 -1
  16. package/dist/compiler/packageComponentContracts.d.ts +10 -19
  17. package/dist/compiler/packageComponentContracts.js +60 -43
  18. package/dist/compiler/reactComponentProtocols.d.ts +0 -7
  19. package/dist/compiler/reactComponentProtocols.js +0 -7
  20. package/dist/compiler/reactIdentity.d.ts +2 -2
  21. package/dist/compiler/reactIdentity.js +41 -43
  22. package/dist/compiler/sourcePaths.d.ts +4 -8
  23. package/dist/compiler/sourcePaths.js +6 -8
  24. package/dist/css/dialects/index.d.ts +2 -21
  25. package/dist/css/dialects/index.js +2 -9
  26. package/dist/css/dialects/tailwind.d.ts +2 -16
  27. package/dist/css/dialects/tailwind.js +2 -25
  28. package/dist/css/dialects/vanillaExtract.d.ts +1 -9
  29. package/dist/css/dialects/vanillaExtract.js +0 -1
  30. package/dist/css/index.d.ts +0 -8
  31. package/dist/css/index.js +0 -8
  32. package/dist/css/model/index.d.ts +6 -38
  33. package/dist/css/model/index.js +0 -9
  34. package/dist/css/token-inventory/index.d.ts +0 -23
  35. package/dist/css/token-inventory/index.js +0 -23
  36. package/dist/css/token-inventory/inventory.js +4 -16
  37. package/dist/css/token-inventory/parseStylesheet.d.ts +1 -9
  38. package/dist/css/token-inventory/parseStylesheet.js +5 -42
  39. package/dist/css/token-inventory/policy.d.ts +2 -39
  40. package/dist/css/token-inventory/policy.js +2 -39
  41. package/dist/css/token-inventory/types.d.ts +2 -15
  42. package/dist/css/value-semantics/borderSemantics.d.ts +1 -8
  43. package/dist/css/value-semantics/borderSemantics.js +5 -23
  44. package/dist/css/value-semantics/boxSemantics.d.ts +2 -25
  45. package/dist/css/value-semantics/boxSemantics.js +1 -7
  46. package/dist/css/value-semantics/colorSemantics.d.ts +6 -60
  47. package/dist/css/value-semantics/colorSemantics.js +9 -40
  48. package/dist/css/value-semantics/cssSyntax.d.ts +10 -10
  49. package/dist/css/value-semantics/cssSyntax.js +39 -11
  50. package/dist/css/value-semantics/fontSemantics.d.ts +3 -19
  51. package/dist/css/value-semantics/fontSemantics.js +7 -25
  52. package/dist/css/value-semantics/index.d.ts +1 -12
  53. package/dist/css/value-semantics/index.js +1 -12
  54. package/dist/css/value-semantics/propertyPolicy.d.ts +6 -53
  55. package/dist/css/value-semantics/propertyPolicy.js +47 -59
  56. package/dist/css/value-semantics/stringMaps.d.ts +0 -1
  57. package/dist/css/value-semantics/structuredValues.d.ts +3 -37
  58. package/dist/css/value-semantics/structuredValues.js +6 -17
  59. package/dist/css/value-semantics/tokenInterpretation.d.ts +8 -50
  60. package/dist/css/value-semantics/tokenInterpretation.js +7 -21
  61. package/dist/hosts/astro/astroRuntimeConfig.d.ts +0 -1
  62. package/dist/hosts/astro/astroRuntimeConfig.js +0 -1
  63. package/dist/hosts/astro/clientAsset.d.ts +1 -5
  64. package/dist/hosts/astro/clientAsset.js +1 -5
  65. package/dist/hosts/astro/clientTransport.d.ts +0 -1
  66. package/dist/hosts/astro/clientTransport.js +4 -9
  67. package/dist/hosts/astro/integration.d.ts +2 -28
  68. package/dist/hosts/astro/integration.js +7 -36
  69. package/dist/hosts/astro/markdownIdentity.d.ts +0 -3
  70. package/dist/hosts/astro/markdownIdentity.js +0 -3
  71. package/dist/hosts/astro/middleware.d.ts +1 -12
  72. package/dist/hosts/astro/middleware.js +1 -12
  73. package/dist/hosts/astro/projectContext.d.ts +1 -9
  74. package/dist/hosts/astro/projectContext.js +2 -11
  75. package/dist/hosts/astro/responseInstrumentation.d.ts +4 -33
  76. package/dist/hosts/astro/responseInstrumentation.js +5 -34
  77. package/dist/hosts/environment.d.ts +0 -8
  78. package/dist/hosts/environment.js +0 -1
  79. package/dist/hosts/next/index.js +1 -3
  80. package/dist/hosts/next/loader.d.ts +5 -44
  81. package/dist/hosts/next/loader.js +22 -103
  82. package/dist/hosts/next/loaders/identity-loader.cjs +111 -65
  83. package/dist/hosts/next/loaders/loader-plugin.cjs +111 -65
  84. package/dist/hosts/next/manifest.d.ts +2 -16
  85. package/dist/hosts/next/manifest.js +18 -20
  86. package/dist/hosts/next/mount.d.ts +1 -11
  87. package/dist/hosts/next/mount.js +1 -11
  88. package/dist/hosts/next/repositoryScope.d.ts +2 -17
  89. package/dist/hosts/next/repositoryScope.js +2 -17
  90. package/dist/hosts/next/sidecar.d.ts +0 -13
  91. package/dist/hosts/next/sidecar.js +25 -110
  92. package/dist/hosts/next/wrapper.d.ts +0 -31
  93. package/dist/hosts/next/wrapper.js +14 -71
  94. package/dist/hosts/projectBridge.d.ts +0 -2
  95. package/dist/hosts/projectBridge.js +3 -19
  96. package/dist/hosts/reactRendererCapture.d.ts +2 -0
  97. package/dist/hosts/reactRendererCapture.js +12 -0
  98. package/dist/hosts/static/cli.d.ts +0 -4
  99. package/dist/hosts/static/cli.js +0 -3
  100. package/dist/hosts/static/html/bootstrap.d.ts +1 -18
  101. package/dist/hosts/static/html/bootstrap.js +2 -14
  102. package/dist/hosts/static/manifest.d.ts +2 -15
  103. package/dist/hosts/static/manifest.js +5 -18
  104. package/dist/hosts/static/server.d.ts +4 -38
  105. package/dist/hosts/static/server.js +17 -67
  106. package/dist/hosts/vite/index.d.ts +0 -10
  107. package/dist/hosts/vite/index.js +0 -10
  108. package/dist/hosts/vite/react.d.ts +4 -17
  109. package/dist/hosts/vite/react.js +18 -35
  110. package/dist/hosts/vite/tokens/activeStylesheets.d.ts +1 -10
  111. package/dist/hosts/vite/tokens/activeStylesheets.js +3 -8
  112. package/dist/hosts/vite/tokens/fileMap.d.ts +0 -1
  113. package/dist/hosts/vite/tokens/viteStylesheetArtifacts.d.ts +2 -15
  114. package/dist/hosts/vite/tokens/viteStylesheetArtifacts.js +3 -10
  115. package/dist/hosts/vite/vite.d.ts +5 -26
  116. package/dist/hosts/vite/vite.js +44 -80
  117. package/dist/html/dom.d.ts +0 -1
  118. package/dist/html/dom.js +0 -1
  119. package/dist/html/identity.d.ts +1 -15
  120. package/dist/html/identity.js +1 -8
  121. package/dist/html/insertions.d.ts +2 -8
  122. package/dist/html/insertions.js +1 -1
  123. package/dist/inspector/agent/McpConnectionDialog.d.ts +1 -6
  124. package/dist/inspector/agent/McpConnectionDialog.js +8 -9
  125. package/dist/inspector/agent/activity.d.ts +2 -2
  126. package/dist/inspector/agent/activity.js +4 -3
  127. package/dist/inspector/agent/client.d.ts +3 -27
  128. package/dist/inspector/agent/client.js +43 -91
  129. package/dist/inspector/agent/connectionStatus.d.ts +3 -2
  130. package/dist/inspector/agent/connectionStatus.js +25 -1
  131. package/dist/inspector/agent/httpTransport.d.ts +0 -8
  132. package/dist/inspector/agent/httpTransport.js +42 -176
  133. package/dist/inspector/agent/protocol.d.ts +1 -10
  134. package/dist/inspector/agent/protocol.js +1 -9
  135. package/dist/inspector/agent/verification.d.ts +3 -20
  136. package/dist/inspector/agent/verification.js +10 -43
  137. package/dist/inspector/boot.d.ts +5 -0
  138. package/dist/inspector/boot.js +289 -0
  139. package/dist/inspector/canvas/AgentActivityOverlay.d.ts +3 -2
  140. package/dist/inspector/canvas/AgentActivityOverlay.js +7 -4
  141. package/dist/inspector/canvas/CanvasCard.js +26 -24
  142. package/dist/inspector/canvas/CanvasElementOverlay.js +196 -174
  143. package/dist/inspector/canvas/CanvasToolbar.js +2 -1
  144. package/dist/inspector/canvas/CanvasWorkspace.js +87 -124
  145. package/dist/inspector/canvas/LockedWorkspaceNotice.d.ts +3 -2
  146. package/dist/inspector/canvas/LockedWorkspaceNotice.js +10 -6
  147. package/dist/inspector/canvas/PageCard.d.ts +9 -0
  148. package/dist/inspector/canvas/PageCard.js +50 -0
  149. package/dist/inspector/canvas/SketchToolOptions.d.ts +4 -0
  150. package/dist/inspector/canvas/SketchToolOptions.js +80 -0
  151. package/dist/inspector/canvas/StaleChangeIndicator.d.ts +1 -1
  152. package/dist/inspector/canvas/StaleChangeIndicator.js +1 -1
  153. package/dist/inspector/canvas/ToolOptionsDrawer.d.ts +16 -0
  154. package/dist/inspector/canvas/ToolOptionsDrawer.js +71 -0
  155. package/dist/inspector/canvas/activeCanvasDocument.d.ts +3 -4
  156. package/dist/inspector/canvas/activeCanvasDocument.js +0 -2
  157. package/dist/inspector/canvas/agentPresentation.d.ts +2 -13
  158. package/dist/inspector/canvas/agentPresentation.js +3 -14
  159. package/dist/inspector/canvas/assets/eraser.svg +28 -0
  160. package/dist/inspector/canvas/assets/pen.svg +25 -0
  161. package/dist/inspector/canvas/canvasFrame.d.ts +12 -0
  162. package/dist/inspector/canvas/canvasFrame.js +9 -0
  163. package/dist/inspector/canvas/canvasGestures.d.ts +0 -1
  164. package/dist/inspector/canvas/canvasGestures.js +0 -6
  165. package/dist/inspector/canvas/canvasResize.d.ts +1 -6
  166. package/dist/inspector/canvas/canvasResize.js +1 -6
  167. package/dist/inspector/canvas/canvasStore.d.ts +5 -7
  168. package/dist/inspector/canvas/canvasStore.js +42 -21
  169. package/dist/inspector/canvas/frameConnection.d.ts +42 -0
  170. package/dist/inspector/canvas/frameConnection.js +73 -0
  171. package/dist/inspector/canvas/frameContent.d.ts +0 -1
  172. package/dist/inspector/canvas/frameLifecycle.d.ts +12 -0
  173. package/dist/inspector/canvas/frameLifecycle.js +11 -0
  174. package/dist/inspector/canvas/frameProtocol.d.ts +20 -38
  175. package/dist/inspector/canvas/frameProtocol.js +37 -24
  176. package/dist/inspector/canvas/frameScrollbarStyles.d.ts +0 -1
  177. package/dist/inspector/canvas/frameScrollbarStyles.js +0 -1
  178. package/dist/inspector/canvas/layout.d.ts +10 -22
  179. package/dist/inspector/canvas/layout.js +0 -3
  180. package/dist/inspector/canvas/normalizeUrl.js +1 -8
  181. package/dist/inspector/canvas/pageSurface.d.ts +6 -0
  182. package/dist/inspector/canvas/pageSurface.js +29 -0
  183. package/dist/inspector/canvas/projection.d.ts +14 -25
  184. package/dist/inspector/canvas/projection.js +64 -87
  185. package/dist/inspector/canvas/rendererBootstrap.d.ts +8 -1
  186. package/dist/inspector/canvas/rendererBootstrap.js +10 -15
  187. package/dist/inspector/canvas/rendererCidIndex.d.ts +0 -5
  188. package/dist/inspector/canvas/rendererCidIndex.js +0 -5
  189. package/dist/inspector/canvas/rendererElementSelector.js +38 -28
  190. package/dist/inspector/canvas/rendererMessageRouter.d.ts +4 -6
  191. package/dist/inspector/canvas/rendererMessageRouter.js +12 -17
  192. package/dist/inspector/canvas/rendererSelectionProxy.d.ts +3 -1
  193. package/dist/inspector/canvas/rendererSelectionProxy.js +7 -40
  194. package/dist/inspector/canvas/rendererStylesheet.d.ts +0 -1
  195. package/dist/inspector/canvas/rendererStylesheet.js +23 -1
  196. package/dist/inspector/canvas/resizeHandleScale.d.ts +1 -10
  197. package/dist/inspector/canvas/resizeHandleScale.js +1 -10
  198. package/dist/inspector/canvas/sessionStore.d.ts +3 -9
  199. package/dist/inspector/canvas/sessionStore.js +33 -43
  200. package/dist/inspector/canvas/staleChangeDetector.d.ts +1 -1
  201. package/dist/inspector/canvas/staleChangeDetector.js +11 -26
  202. package/dist/inspector/canvas/toolbarScale.d.ts +1 -4
  203. package/dist/inspector/canvas/toolbarScale.js +1 -4
  204. package/dist/inspector/canvas/useCanvasLayoutAnimation.d.ts +0 -1
  205. package/dist/inspector/canvas/useCanvasLayoutAnimation.js +0 -1
  206. package/dist/inspector/canvas/viewStore.js +1 -1
  207. package/dist/inspector/canvas/wheelPan.d.ts +1 -1
  208. package/dist/inspector/canvas/wheelPan.js +1 -1
  209. package/dist/inspector/canvas/workspaceLease.d.ts +1 -5
  210. package/dist/inspector/canvas/workspaceLease.js +1 -7
  211. package/dist/inspector/changes/codecs.d.ts +1 -0
  212. package/dist/inspector/changes/codecs.js +21 -5
  213. package/dist/inspector/changes/draftPreview.d.ts +7 -0
  214. package/dist/inspector/changes/draftPreview.js +118 -0
  215. package/dist/inspector/changes/editModel.d.ts +11 -13
  216. package/dist/inspector/changes/editModel.js +9 -4
  217. package/dist/inspector/changes/managedStyleProjection.js +6 -15
  218. package/dist/inspector/changes/model.d.ts +0 -5
  219. package/dist/inspector/changes/model.js +1 -8
  220. package/dist/inspector/changes/previewDiagnostics.d.ts +2 -12
  221. package/dist/inspector/changes/previewDiagnostics.js +5 -21
  222. package/dist/inspector/changes/previewVerification.d.ts +25 -0
  223. package/dist/inspector/changes/previewVerification.js +34 -0
  224. package/dist/inspector/changes/structuralTypes.d.ts +2 -4
  225. package/dist/inspector/changes/types.d.ts +11 -8
  226. package/dist/inspector/clientManifest.d.ts +17 -6
  227. package/dist/inspector/clientManifest.js +16 -3
  228. package/dist/inspector/comments/CommentsOverlay.js +66 -23
  229. package/dist/inspector/comments/element.d.ts +1 -2
  230. package/dist/inspector/comments/element.js +1 -2
  231. package/dist/inspector/comments/store.d.ts +1 -1
  232. package/dist/inspector/comments/store.js +4 -3
  233. package/dist/inspector/comments/verification.d.ts +8 -2
  234. package/dist/inspector/comments/verification.js +19 -11
  235. package/dist/inspector/componentSemantics/ComponentPropsSection.d.ts +8 -0
  236. package/dist/inspector/componentSemantics/ComponentPropsSection.js +12 -8
  237. package/dist/inspector/componentSemantics/adapterRegistry.d.ts +2 -9
  238. package/dist/inspector/componentSemantics/adapterRegistry.js +2 -9
  239. package/dist/inspector/componentSemantics/changeAction.js +1 -1
  240. package/dist/inspector/componentSemantics/changeModel.js +2 -4
  241. package/dist/inspector/componentSemantics/react/callsites.d.ts +28 -0
  242. package/dist/inspector/componentSemantics/react/callsites.js +261 -0
  243. package/dist/inspector/componentSemantics/react/devtoolsHook.d.ts +23 -0
  244. package/dist/inspector/componentSemantics/react/devtoolsHook.js +71 -0
  245. package/dist/inspector/componentSemantics/react/fibers.d.ts +17 -0
  246. package/dist/inspector/componentSemantics/react/fibers.js +30 -0
  247. package/dist/inspector/componentSemantics/{reactRuntime.d.ts → react/runtime.d.ts} +3 -2
  248. package/dist/inspector/componentSemantics/{reactRuntime.js → react/runtime.js} +70 -53
  249. package/dist/inspector/componentSemantics/runtimeBridge.d.ts +2 -18
  250. package/dist/inspector/componentSemantics/runtimeBridge.js +5 -19
  251. package/dist/inspector/componentSemantics/textBinding.d.ts +2 -11
  252. package/dist/inspector/componentSemantics/textBinding.js +20 -87
  253. package/dist/inspector/componentSemantics/types.d.ts +8 -27
  254. package/dist/inspector/componentSemantics/types.js +0 -1
  255. package/dist/inspector/conformance/borderCases.d.ts +0 -5
  256. package/dist/inspector/conformance/borderCases.js +0 -5
  257. package/dist/inspector/conformance/colorCases.d.ts +0 -6
  258. package/dist/inspector/conformance/colorCases.js +0 -6
  259. package/dist/inspector/conformance/fixture.d.ts +1 -5
  260. package/dist/inspector/conformance/fixture.js +1 -5
  261. package/dist/inspector/conformance/spacingCases.d.ts +0 -4
  262. package/dist/inspector/conformance/spacingCases.js +0 -4
  263. package/dist/inspector/conformance/typographyCases.d.ts +0 -5
  264. package/dist/inspector/conformance/typographyCases.js +0 -5
  265. package/dist/inspector/drafts/draftStore.d.ts +95 -0
  266. package/dist/inspector/drafts/draftStore.js +461 -0
  267. package/dist/inspector/drafts/model.d.ts +14 -14
  268. package/dist/inspector/drafts/model.js +4 -2
  269. package/dist/inspector/drafts/store.d.ts +47 -16
  270. package/dist/inspector/drafts/store.js +137 -170
  271. package/dist/inspector/editScope.d.ts +0 -1
  272. package/dist/inspector/editScope.js +0 -1
  273. package/dist/inspector/index.d.ts +2 -4
  274. package/dist/inspector/index.js +2 -264
  275. package/dist/inspector/inline-text/inlineTextDiagnostics.d.ts +0 -2
  276. package/dist/inspector/inline-text/inlineTextDiagnostics.js +0 -2
  277. package/dist/inspector/inline-text/inlineTextEditor.d.ts +3 -9
  278. package/dist/inspector/inline-text/inlineTextEditor.js +27 -81
  279. package/dist/inspector/inline-text/inlineTextLifecycle.js +1 -6
  280. package/dist/inspector/inline-text/textEditChange.d.ts +1 -2
  281. package/dist/inspector/inspection/bridge.d.ts +3 -7
  282. package/dist/inspector/inspection/bridge.js +6 -13
  283. package/dist/inspector/inspection/browserCssInspection.d.ts +12 -11
  284. package/dist/inspector/inspection/browserCssInspection.js +32 -14
  285. package/dist/inspector/inspection/browserCssInspectionRegistry.d.ts +0 -7
  286. package/dist/inspector/inspection/browserCssInspectionRegistry.js +1 -16
  287. package/dist/inspector/inspection/inspectionSnapshot.d.ts +6 -0
  288. package/dist/inspector/inspection/inspectionSnapshot.js +10 -0
  289. package/dist/inspector/inspection/performanceDiagnostics.d.ts +18 -0
  290. package/dist/inspector/inspection/performanceDiagnostics.js +31 -0
  291. package/dist/inspector/inspection/selectionProperty.d.ts +1 -6
  292. package/dist/inspector/inspection/selectionProperty.js +1 -5
  293. package/dist/inspector/inspection/useBrowserCssInspection.d.ts +1 -5
  294. package/dist/inspector/inspection/useBrowserCssInspection.js +22 -59
  295. package/dist/inspector/iterations/capture.d.ts +2 -2
  296. package/dist/inspector/iterations/capture.js +4 -9
  297. package/dist/inspector/iterations/client.d.ts +2 -2
  298. package/dist/inspector/iterations/client.js +0 -1
  299. package/dist/inspector/iterations/coordinator.d.ts +4 -4
  300. package/dist/inspector/iterations/coordinator.js +5 -4
  301. package/dist/inspector/iterations/prompt.d.ts +0 -1
  302. package/dist/inspector/iterations/prompt.js +9 -9
  303. package/dist/inspector/overlay/DomNavigator.d.ts +3 -1
  304. package/dist/inspector/overlay/DomNavigator.js +39 -15
  305. package/dist/inspector/overlay/DropGuideOverlay.d.ts +0 -1
  306. package/dist/inspector/overlay/DropGuideOverlay.js +0 -1
  307. package/dist/inspector/overlay/MeasurementGuideOverlay.d.ts +1 -8
  308. package/dist/inspector/overlay/MeasurementGuideOverlay.js +1 -5
  309. package/dist/inspector/overlay/clickPolicy.d.ts +3 -14
  310. package/dist/inspector/overlay/clickPolicy.js +3 -14
  311. package/dist/inspector/overlay/dropGuide.d.ts +0 -3
  312. package/dist/inspector/overlay/dropGuide.js +0 -3
  313. package/dist/inspector/overlay/frameThrottle.d.ts +0 -1
  314. package/dist/inspector/overlay/frameThrottle.js +0 -1
  315. package/dist/inspector/overlay/interactionStyles.d.ts +1 -1
  316. package/dist/inspector/overlay/interactionStyles.js +19 -8
  317. package/dist/inspector/overlay/measurementGeometry.js +4 -12
  318. package/dist/inspector/overlay/selectedGeometry.d.ts +1 -6
  319. package/dist/inspector/overlay/selectedGeometry.js +1 -8
  320. package/dist/inspector/overlay/spacingGestures.d.ts +14 -21
  321. package/dist/inspector/overlay/spacingGestures.js +151 -31
  322. package/dist/inspector/overlay/structuralGestures.d.ts +2 -9
  323. package/dist/inspector/overlay/structuralGestures.js +1 -4
  324. package/dist/inspector/pageInspector.d.ts +33 -0
  325. package/dist/inspector/pageInspector.js +335 -0
  326. package/dist/inspector/projection/cssEscapes.d.ts +0 -1
  327. package/dist/inspector/projection/cssEscapes.js +2 -4
  328. package/dist/inspector/projection/draftProjection.d.ts +6 -10
  329. package/dist/inspector/projection/draftProjection.js +8 -7
  330. package/dist/inspector/projection/managedStylesheet.d.ts +1 -7
  331. package/dist/inspector/projection/managedStylesheet.js +28 -26
  332. package/dist/inspector/projection/renderedInstance.d.ts +5 -28
  333. package/dist/inspector/projection/renderedInstance.js +13 -33
  334. package/dist/inspector/projection/structuralProjection.d.ts +7 -48
  335. package/dist/inspector/projection/structuralProjection.js +31 -96
  336. package/dist/inspector/projection/textProjection.d.ts +7 -13
  337. package/dist/inspector/projection/textProjection.js +35 -80
  338. package/dist/inspector/prompt/PromptSettingsDialog.d.ts +0 -1
  339. package/dist/inspector/prompt/PromptSettingsDialog.js +0 -1
  340. package/dist/inspector/prompt/clipboardHandoff.d.ts +1 -0
  341. package/dist/inspector/prompt/clipboardHandoff.js +34 -16
  342. package/dist/inspector/prompt/generatePrompt.d.ts +2 -2
  343. package/dist/inspector/prompt/generatePrompt.js +247 -166
  344. package/dist/inspector/prompt/promptDocument.d.ts +3 -0
  345. package/dist/inspector/prompt/promptDocument.js +8 -0
  346. package/dist/inspector/prompt/promptSettings.d.ts +0 -3
  347. package/dist/inspector/prompt/promptSettings.js +7 -8
  348. package/dist/inspector/runtime/devFlag.d.ts +2 -25
  349. package/dist/inspector/runtime/devFlag.js +4 -31
  350. package/dist/inspector/runtime/documentStylesheetOrder.d.ts +0 -2
  351. package/dist/inspector/runtime/editorShell.d.ts +0 -1
  352. package/dist/inspector/runtime/editorShell.js +0 -1
  353. package/dist/inspector/runtime/inspectorStorage.d.ts +11 -0
  354. package/dist/inspector/runtime/inspectorStorage.js +37 -0
  355. package/dist/inspector/runtime/ownedStylesheets.d.ts +14 -0
  356. package/dist/inspector/runtime/ownedStylesheets.js +66 -0
  357. package/dist/inspector/runtime/runtimeConfig.d.ts +14 -84
  358. package/dist/inspector/runtime/runtimeConfig.js +18 -50
  359. package/dist/inspector/runtime/runtimeIdentityClaims.d.ts +19 -0
  360. package/dist/inspector/runtime/runtimeIdentityClaims.js +178 -0
  361. package/dist/inspector/runtime/staticHtmlRuntimeIdentity.d.ts +6 -23
  362. package/dist/inspector/runtime/staticHtmlRuntimeIdentity.js +103 -52
  363. package/dist/inspector/runtime/useRuntimeConfig.d.ts +1 -8
  364. package/dist/inspector/runtime/useRuntimeConfig.js +1 -8
  365. package/dist/inspector/selection/editScope.d.ts +2 -7
  366. package/dist/inspector/selection/editScope.js +15 -14
  367. package/dist/inspector/selection/editTarget.d.ts +1 -5
  368. package/dist/inspector/selection/hierarchy.d.ts +11 -11
  369. package/dist/inspector/selection/hierarchy.js +42 -24
  370. package/dist/inspector/selection/selectionStore.d.ts +0 -3
  371. package/dist/inspector/selection/selectionStore.js +5 -16
  372. package/dist/inspector/selection/sourceSite.d.ts +1 -5
  373. package/dist/inspector/selection/sourceSite.js +2 -8
  374. package/dist/inspector/selection/styleSelection.d.ts +1 -5
  375. package/dist/inspector/selection/styleSelection.js +1 -5
  376. package/dist/inspector/session/lifecycle.d.ts +1 -9
  377. package/dist/inspector/session/lifecycle.js +0 -1
  378. package/dist/inspector/session/sessionContext.d.ts +0 -4
  379. package/dist/inspector/session/sessionContext.js +0 -4
  380. package/dist/inspector/session/sessionFactory.d.ts +0 -9
  381. package/dist/inspector/session/sessionFactory.js +0 -6
  382. package/dist/inspector/settings/SettingsDialog.d.ts +0 -1
  383. package/dist/inspector/settings/SettingsDialog.js +5 -3
  384. package/dist/inspector/shell/AgentStatusButton.d.ts +3 -2
  385. package/dist/inspector/shell/AgentStatusButton.js +7 -7
  386. package/dist/inspector/shell/AppShell.js +6 -2
  387. package/dist/inspector/shell/ChangesLog.js +29 -12
  388. package/dist/inspector/shell/CopyPromptButton.d.ts +2 -1
  389. package/dist/inspector/shell/CopyPromptButton.js +62 -55
  390. package/dist/inspector/shell/EmptyState.js +3 -3
  391. package/dist/inspector/shell/InspectorEditors.d.ts +16 -0
  392. package/dist/inspector/shell/InspectorEditors.js +14 -0
  393. package/dist/inspector/shell/InspectorPanel.d.ts +12 -0
  394. package/dist/inspector/shell/InspectorPanel.js +8 -0
  395. package/dist/inspector/shell/InspectorSelection.d.ts +24 -0
  396. package/dist/inspector/shell/InspectorSelection.js +20 -0
  397. package/dist/inspector/shell/InspectorShell.d.ts +0 -3
  398. package/dist/inspector/shell/InspectorShell.js +44 -58
  399. package/dist/inspector/shell/NudgeLogoIcon.d.ts +5 -0
  400. package/dist/inspector/shell/NudgeLogoIcon.js +5 -0
  401. package/dist/inspector/shell/PeekOriginalButton.d.ts +0 -5
  402. package/dist/inspector/shell/PeekOriginalButton.js +3 -8
  403. package/dist/inspector/shell/PeekOriginalIcon.d.ts +0 -5
  404. package/dist/inspector/shell/PeekOriginalIcon.js +0 -5
  405. package/dist/inspector/shell/PromptActionButton.d.ts +21 -0
  406. package/dist/inspector/shell/PromptActionButton.js +14 -0
  407. package/dist/inspector/shell/elementName.d.ts +5 -0
  408. package/dist/inspector/shell/elementName.js +29 -0
  409. package/dist/inspector/shell/interactionStatePreview.d.ts +6 -0
  410. package/dist/inspector/shell/interactionStatePreview.js +107 -0
  411. package/dist/inspector/shell/originalPreview.d.ts +1 -5
  412. package/dist/inspector/shell/originalPreview.js +5 -37
  413. package/dist/inspector/shell/stateValue.d.ts +1 -2
  414. package/dist/inspector/shell/stateValue.js +4 -8
  415. package/dist/inspector/shell/styleState.d.ts +1 -2
  416. package/dist/inspector/shell/styleState.js +1 -2
  417. package/dist/inspector/sketch/SketchEditor.js +5 -5
  418. package/dist/inspector/sketch/SketchFrameOverlay.d.ts +2 -1
  419. package/dist/inspector/sketch/SketchFrameOverlay.js +13 -16
  420. package/dist/inspector/sketch/SketchOverlay.d.ts +3 -5
  421. package/dist/inspector/sketch/SketchOverlay.js +138 -263
  422. package/dist/inspector/sketch/SketchPromptPanel.d.ts +1 -2
  423. package/dist/inspector/sketch/SketchPromptPanel.js +8 -2
  424. package/dist/inspector/sketch/SketchThumbnail.d.ts +5 -0
  425. package/dist/inspector/sketch/SketchThumbnail.js +18 -0
  426. package/dist/inspector/sketch/SketchWorkspace.d.ts +1 -2
  427. package/dist/inspector/sketch/SketchWorkspace.js +70 -37
  428. package/dist/inspector/sketch/capture.d.ts +12 -3
  429. package/dist/inspector/sketch/capture.js +31 -14
  430. package/dist/inspector/sketch/copySketch.d.ts +4 -0
  431. package/dist/inspector/sketch/copySketch.js +43 -0
  432. package/dist/inspector/sketch/drawingTools.d.ts +15 -0
  433. package/dist/inspector/sketch/drawingTools.js +46 -0
  434. package/dist/inspector/sketch/frameHeading.d.ts +3 -0
  435. package/dist/inspector/sketch/frameHeading.js +23 -0
  436. package/dist/inspector/sketch/freehand.d.ts +0 -1
  437. package/dist/inspector/sketch/freehand.js +3 -4
  438. package/dist/inspector/sketch/geometry.d.ts +2 -1
  439. package/dist/inspector/sketch/geometry.js +15 -1
  440. package/dist/inspector/sketch/handoff.js +0 -1
  441. package/dist/inspector/sketch/history.d.ts +26 -0
  442. package/dist/inspector/sketch/history.js +55 -0
  443. package/dist/inspector/sketch/interaction.d.ts +3 -5
  444. package/dist/inspector/sketch/interaction.js +8 -11
  445. package/dist/inspector/sketch/model.d.ts +33 -6
  446. package/dist/inspector/sketch/model.js +101 -63
  447. package/dist/inspector/sketch/persistence.d.ts +14 -1
  448. package/dist/inspector/sketch/persistence.js +64 -8
  449. package/dist/inspector/sketch/raster.d.ts +3 -2
  450. package/dist/inspector/sketch/raster.js +40 -20
  451. package/dist/inspector/sketch/store.d.ts +1 -1
  452. package/dist/inspector/sketch/store.js +3 -4
  453. package/dist/inspector/sketch/videoFrames.d.ts +6 -0
  454. package/dist/inspector/sketch/videoFrames.js +80 -0
  455. package/dist/inspector/spacing/projection.d.ts +0 -8
  456. package/dist/inspector/spacing/projection.js +38 -20
  457. package/dist/inspector/styleEditors/BackgroundEditor.js +3 -2
  458. package/dist/inspector/styleEditors/BorderEditor.js +30 -135
  459. package/dist/inspector/styleEditors/BorderRadiusEditor.js +8 -3
  460. package/dist/inspector/styleEditors/ChildPlacement.d.ts +12 -0
  461. package/dist/inspector/styleEditors/ChildPlacement.js +9 -0
  462. package/dist/inspector/styleEditors/FlexControls.d.ts +35 -0
  463. package/dist/inspector/styleEditors/FlexControls.js +158 -0
  464. package/dist/inspector/styleEditors/GapField.d.ts +5 -2
  465. package/dist/inspector/styleEditors/GapField.js +3 -4
  466. package/dist/inspector/styleEditors/GridChildSection.d.ts +0 -5
  467. package/dist/inspector/styleEditors/GridChildSection.js +0 -5
  468. package/dist/inspector/styleEditors/GridPicker.d.ts +1 -1
  469. package/dist/inspector/styleEditors/GridPicker.js +2 -4
  470. package/dist/inspector/styleEditors/GridSection.d.ts +10 -8
  471. package/dist/inspector/styleEditors/GridSection.js +22 -9
  472. package/dist/inspector/styleEditors/GridValueField.d.ts +1 -5
  473. package/dist/inspector/styleEditors/GridValueField.js +2 -8
  474. package/dist/inspector/styleEditors/ImageBackgroundEditor.d.ts +0 -1
  475. package/dist/inspector/styleEditors/ImageBackgroundEditor.js +1 -2
  476. package/dist/inspector/styleEditors/LayoutBlockedIndicator.d.ts +0 -1
  477. package/dist/inspector/styleEditors/LayoutBlockedIndicator.js +0 -1
  478. package/dist/inspector/styleEditors/LayoutComboField.js +0 -5
  479. package/dist/inspector/styleEditors/LayoutModeRow.d.ts +14 -0
  480. package/dist/inspector/styleEditors/LayoutModeRow.js +60 -0
  481. package/dist/inspector/styleEditors/LayoutSection.d.ts +2 -2
  482. package/dist/inspector/styleEditors/LayoutSection.js +30 -356
  483. package/dist/inspector/styleEditors/OpacityEditor.js +7 -5
  484. package/dist/inspector/styleEditors/PositionControls.d.ts +18 -0
  485. package/dist/inspector/styleEditors/PositionControls.js +16 -0
  486. package/dist/inspector/styleEditors/SizeSection.d.ts +18 -0
  487. package/dist/inspector/styleEditors/SizeSection.js +71 -0
  488. package/dist/inspector/styleEditors/{SpacingBox.d.ts → SpacingField.d.ts} +3 -10
  489. package/dist/inspector/styleEditors/{SpacingBox.js → SpacingField.js} +15 -29
  490. package/dist/inspector/styleEditors/Typography.js +2 -4
  491. package/dist/inspector/styleEditors/borderModel.d.ts +36 -0
  492. package/dist/inspector/styleEditors/borderModel.js +105 -0
  493. package/dist/inspector/styleEditors/completeCssValue.d.ts +1 -5
  494. package/dist/inspector/styleEditors/completeCssValue.js +3 -13
  495. package/dist/inspector/styleEditors/fieldValue.d.ts +20 -0
  496. package/dist/inspector/styleEditors/fieldValue.js +26 -0
  497. package/dist/inspector/styleEditors/gradientValue.d.ts +1 -1
  498. package/dist/inspector/styleEditors/gradientValue.js +3 -2
  499. package/dist/inspector/styleEditors/gridChildModel.d.ts +7 -47
  500. package/dist/inspector/styleEditors/gridChildModel.js +6 -37
  501. package/dist/inspector/styleEditors/hiddenSizeOverrides.d.ts +5 -0
  502. package/dist/inspector/styleEditors/hiddenSizeOverrides.js +42 -0
  503. package/dist/inspector/styleEditors/inlineAuthored.d.ts +1 -8
  504. package/dist/inspector/styleEditors/inlineAuthored.js +3 -17
  505. package/dist/inspector/styleEditors/layoutMode.d.ts +15 -0
  506. package/dist/inspector/styleEditors/layoutMode.js +33 -0
  507. package/dist/inspector/styleEditors/layoutPreviewState.d.ts +0 -1
  508. package/dist/inspector/styleEditors/layoutPreviewState.js +0 -1
  509. package/dist/inspector/styleEditors/layoutValue.d.ts +2 -8
  510. package/dist/inspector/styleEditors/layoutValue.js +6 -15
  511. package/dist/inspector/styleEditors/nudgeValue.d.ts +1 -13
  512. package/dist/inspector/styleEditors/nudgeValue.js +1 -13
  513. package/dist/inspector/styleEditors/rowLookup.d.ts +1 -5
  514. package/dist/inspector/styleEditors/rowLookup.js +1 -5
  515. package/dist/inspector/styleEditors/stringRecord.d.ts +1 -2
  516. package/dist/inspector/styleEditors/stylePresence.d.ts +0 -2
  517. package/dist/inspector/styleEditors/stylePresence.js +1 -4
  518. package/dist/inspector/styleEditors/textRelevance.d.ts +1 -1
  519. package/dist/inspector/styleEditors/textRelevance.js +1 -1
  520. package/dist/inspector/styleEditors/useFieldVisibility.js +1 -2
  521. package/dist/inspector/styleEditors/useLayoutContext.d.ts +13 -0
  522. package/dist/inspector/styleEditors/useLayoutContext.js +53 -0
  523. package/dist/inspector/styleEditors/valuePolicy.d.ts +1 -5
  524. package/dist/inspector/styleEditors/valuePolicy.js +0 -1
  525. package/dist/inspector/testing.d.ts +1 -4
  526. package/dist/inspector/testing.js +1 -4
  527. package/dist/inspector/tokens/TokenChip.d.ts +1 -4
  528. package/dist/inspector/tokens/TokenChip.js +1 -4
  529. package/dist/inspector/tokens/TokenField.d.ts +4 -3
  530. package/dist/inspector/tokens/TokenField.js +53 -32
  531. package/dist/inspector/tokens/TokensPanel.js +2 -1
  532. package/dist/inspector/tokens/catalog.d.ts +2 -10
  533. package/dist/inspector/tokens/catalog.js +5 -12
  534. package/dist/inspector/tokens/dragPointerLock.d.ts +0 -1
  535. package/dist/inspector/tokens/dragPointerLock.js +2 -3
  536. package/dist/inspector/tokens/editActions.d.ts +4 -4
  537. package/dist/inspector/tokens/editActions.js +11 -7
  538. package/dist/inspector/tokens/resolution/cascade.d.ts +1 -5
  539. package/dist/inspector/tokens/resolution/cascade.js +1 -5
  540. package/dist/inspector/tokens/resolution/containerQueryEvaluator.d.ts +11 -0
  541. package/dist/inspector/tokens/resolution/containerQueryEvaluator.js +82 -0
  542. package/dist/inspector/tokens/resolution/cssomCollector.d.ts +4 -19
  543. package/dist/inspector/tokens/resolution/cssomCollector.js +186 -122
  544. package/dist/inspector/tokens/resolution/nestedSelectors.d.ts +2 -0
  545. package/dist/inspector/tokens/resolution/nestedSelectors.js +63 -0
  546. package/dist/inspector/tokens/resolution/ruleMatching.d.ts +4 -14
  547. package/dist/inspector/tokens/resolution/ruleMatching.js +136 -63
  548. package/dist/inspector/tokens/resolution/selectorSemantics.d.ts +3 -14
  549. package/dist/inspector/tokens/resolution/selectorSemantics.js +12 -27
  550. package/dist/inspector/tokens/resolution.d.ts +11 -27
  551. package/dist/inspector/tokens/resolution.js +105 -181
  552. package/dist/inspector/tokens/tokenAvailability.d.ts +2 -14
  553. package/dist/inspector/tokens/tokenAvailability.js +6 -38
  554. package/dist/inspector/tokens/tokenEdits.d.ts +1 -1
  555. package/dist/inspector/tokens/tokenEdits.js +1 -1
  556. package/dist/inspector/tokens/valueSemanticsAdapter.d.ts +0 -1
  557. package/dist/inspector/tokens/valueSemanticsAdapter.js +18 -2
  558. package/dist/inspector/ui/AtRuleContext.d.ts +5 -5
  559. package/dist/inspector/ui/AtRuleContext.js +8 -6
  560. package/dist/inspector/ui/ControlSurface.d.ts +0 -4
  561. package/dist/inspector/ui/Disclosure.d.ts +0 -5
  562. package/dist/inspector/ui/Disclosure.js +0 -4
  563. package/dist/inspector/ui/InlineStyleWarning.d.ts +0 -1
  564. package/dist/inspector/ui/InlineStyleWarning.js +2 -2
  565. package/dist/inspector/ui/InspectorPopover.d.ts +1 -5
  566. package/dist/inspector/ui/InspectorPopover.js +1 -5
  567. package/dist/inspector/ui/InspectorStyle.d.ts +8 -0
  568. package/dist/inspector/ui/InspectorStyle.js +26 -0
  569. package/dist/inspector/ui/PopoverListbox.d.ts +2 -1
  570. package/dist/inspector/ui/PopoverListbox.js +3 -3
  571. package/dist/inspector/ui/SegmentedControl.d.ts +4 -4
  572. package/dist/inspector/ui/SegmentedControl.js +6 -4
  573. package/dist/inspector/ui/SideValuesField.d.ts +1 -6
  574. package/dist/inspector/ui/SideValuesField.js +2 -8
  575. package/dist/inspector/ui/Toast.d.ts +10 -0
  576. package/dist/inspector/ui/Toast.js +26 -0
  577. package/dist/inspector/ui/assets/canvasIllustration.d.ts +2 -0
  578. package/dist/inspector/ui/assets/canvasIllustration.js +21 -0
  579. package/dist/inspector/ui/assets/gridIllustration.d.ts +2 -0
  580. package/dist/inspector/ui/assets/{grid.svg → gridIllustration.js} +3 -2
  581. package/dist/inspector/ui/atRuleSegments.d.ts +13 -0
  582. package/dist/inspector/ui/atRuleSegments.js +34 -0
  583. package/dist/inspector/ui/classNames.d.ts +0 -1
  584. package/dist/inspector/ui/classNames.js +0 -1
  585. package/dist/inspector/ui/customCursors.d.ts +11 -0
  586. package/dist/inspector/ui/customCursors.js +29 -7
  587. package/dist/inspector/ui/styles.js +25 -25
  588. package/dist/inspector/workspace/commands.js +1 -2
  589. package/dist/inspector/workspace/controller.js +20 -2
  590. package/dist/inspector/workspace/handoff.d.ts +1 -5
  591. package/dist/inspector/workspace/handoff.js +4 -7
  592. package/dist/inspector/workspace/sentItems.d.ts +3 -6
  593. package/dist/inspector/workspace/sentItems.js +6 -24
  594. package/dist/inspector/workspace/timeline.d.ts +28 -11
  595. package/dist/inspector/workspace/timeline.js +117 -96
  596. package/dist/internal/agent-protocol.d.ts +53 -38
  597. package/dist/internal/agent-protocol.js +151 -42
  598. package/dist/nudge-ui.mjs +155 -92
  599. package/dist/project/artifacts.js +24 -21
  600. package/dist/project/files.d.ts +0 -1
  601. package/dist/project/files.js +2 -9
  602. package/dist/project/identity.d.ts +1 -5
  603. package/dist/project/identity.js +1 -5
  604. package/dist/project/mcpPackage.d.ts +3 -0
  605. package/dist/project/mcpPackage.js +55 -0
  606. package/dist/project/pathPolicy.d.ts +1 -6
  607. package/dist/project/pathPolicy.js +1 -6
  608. package/dist/project/tokens.d.ts +2 -12
  609. package/dist/project/tokens.js +4 -15
  610. package/dist/transport/editor.d.ts +1 -12
  611. package/dist/transport/editor.js +2 -13
  612. package/dist/transport/index.d.ts +0 -5
  613. package/dist/transport/index.js +0 -5
  614. package/dist/transport/routes.d.ts +0 -5
  615. package/dist/transport/routes.js +0 -5
  616. package/package.json +16 -5
  617. package/dist/inspector/canvas/measurementProjection.d.ts +0 -8
  618. package/dist/inspector/canvas/measurementProjection.js +0 -16
  619. package/dist/inspector/changes/changesLog.d.ts +0 -49
  620. package/dist/inspector/changes/changesLog.js +0 -255
  621. package/dist/inspector/changes/draftChanges.d.ts +0 -58
  622. package/dist/inspector/changes/draftChanges.js +0 -304
  623. package/dist/inspector/conformance/projection.d.ts +0 -2
  624. package/dist/inspector/conformance/projection.js +0 -3
  625. package/dist/inspector/inline-text/textChangeBoundary.d.ts +0 -6
  626. package/dist/inspector/inline-text/textChangeBoundary.js +0 -1
  627. package/dist/inspector/overlay/InspectorOverlay.d.ts +0 -5
  628. package/dist/inspector/overlay/InspectorOverlay.js +0 -332
  629. package/dist/inspector/overlay/elementSelector.d.ts +0 -1
  630. package/dist/inspector/overlay/elementSelector.js +0 -111
  631. package/dist/inspector/sketch/SketchChanges.d.ts +0 -2
  632. package/dist/inspector/sketch/SketchChanges.js +0 -72
  633. package/dist/inspector/sketch/SketchEntryButton.d.ts +0 -4
  634. package/dist/inspector/sketch/SketchEntryButton.js +0 -11
  635. package/dist/inspector/sketch/SketchLayersPanel.d.ts +0 -2
  636. package/dist/inspector/sketch/SketchLayersPanel.js +0 -71
  637. package/dist/inspector/styleEditors/InsetSection.d.ts +0 -15
  638. package/dist/inspector/styleEditors/InsetSection.js +0 -15
  639. package/dist/inspector/styleEditors/PositionInsets.d.ts +0 -15
  640. package/dist/inspector/styleEditors/PositionInsets.js +0 -12
  641. package/dist/inspector/tokens/TokenDropdown.d.ts +0 -13
  642. package/dist/inspector/tokens/TokenDropdown.js +0 -59
@@ -1,7 +1,6 @@
1
1
  import { resolve } from "node:path";
2
2
  import { runAgentCommand } from "../../cli/agentCommand.js";
3
3
  import { createStandaloneServer } from "./server.js";
4
- /** Parses the standalone CLI's intentionally small command surface. */
5
4
  export function parseServeArguments(args, currentDirectory = process.cwd()) {
6
5
  if (args[0] !== "serve") {
7
6
  throw new Error("Usage: nudge-ui serve [directory] [--port <port>] [--host <loopback>]");
@@ -37,14 +36,12 @@ export function parseServeArguments(args, currentDirectory = process.cwd()) {
37
36
  }
38
37
  return { rootDirectory: resolve(currentDirectory, directory), host, port };
39
38
  }
40
- /** Starts the CLI server and waits until the process receives a termination signal. */
41
39
  export async function runServeCommand(options) {
42
40
  const server = createStandaloneServer(options);
43
41
  const address = await server.start();
44
42
  console.log(`Nudge UI serving ${server.rootDirectory} at ${address.url}`);
45
43
  await waitForTermination(server);
46
44
  }
47
- /** Runs the standalone command. */
48
45
  export async function main(args = process.argv.slice(2), packageVersion) {
49
46
  if (args[0] === "agent") {
50
47
  runAgentCommand(args.slice(1), packageVersion);
@@ -1,27 +1,10 @@
1
- /** Options for source-preserving standalone bootstrap injection. */
2
1
  export interface StandaloneBootstrapOptions {
3
- /** The browser client URL. */
4
2
  readonly clientPath?: string;
5
- /** The runtime manifest URL passed to the browser client. */
6
3
  readonly manifestPath?: string;
7
4
  }
8
- /** The result of injecting the standalone bootstrap into one HTML response. */
9
5
  export interface StandaloneBootstrapResult {
10
- /** The response source after any missing bootstrap nodes are inserted. */
11
6
  readonly html: string;
12
- /** Whether at least one node was inserted. */
13
7
  readonly injected: boolean;
14
8
  }
15
- /**
16
- * Adds the standalone mount and external client script to an HTML response.
17
- *
18
- * The function only inserts text at an existing HTML boundary. It does not
19
- * parse and reserialize the document, so authored bytes remain unchanged
20
- * except for the server-owned nodes. Marker checks make a second response
21
- * pass idempotent.
22
- *
23
- * @param html The transformed HTML response body.
24
- * @param options Bootstrap URLs and mount identity.
25
- * @returns The response body and whether anything was added.
26
- */
9
+ /** Inserts text at an existing boundary rather than reserializing, and marker checks make a second pass idempotent. */
27
10
  export declare function injectStandaloneBootstrap(html: string, options?: StandaloneBootstrapOptions): StandaloneBootstrapResult;
@@ -2,18 +2,7 @@ import { NUDGE_UI_CLIENT_PATH, NUDGE_UI_MOUNT_ID, NUDGE_UI_MANIFEST_PATH, } from
2
2
  import { parse } from "parse5";
3
3
  const CLIENT_MARKER = "data-nudge-ui-client";
4
4
  const MOUNT_MARKER = "data-nudge-ui-mount";
5
- /**
6
- * Adds the standalone mount and external client script to an HTML response.
7
- *
8
- * The function only inserts text at an existing HTML boundary. It does not
9
- * parse and reserialize the document, so authored bytes remain unchanged
10
- * except for the server-owned nodes. Marker checks make a second response
11
- * pass idempotent.
12
- *
13
- * @param html The transformed HTML response body.
14
- * @param options Bootstrap URLs and mount identity.
15
- * @returns The response body and whether anything was added.
16
- */
5
+ /** Inserts text at an existing boundary rather than reserializing, and marker checks make a second pass idempotent. */
17
6
  export function injectStandaloneBootstrap(html, options = {}) {
18
7
  const clientPath = options.clientPath ?? NUDGE_UI_CLIENT_PATH;
19
8
  const manifestPath = options.manifestPath ?? NUDGE_UI_MANIFEST_PATH;
@@ -60,8 +49,7 @@ function inspectSource(document, clientPath) {
60
49
  if (tagName === "html" && endOffset !== undefined)
61
50
  facts.htmlEndOffset = endOffset;
62
51
  });
63
- // Only live body descendants can reserve the mount. Template content is
64
- // inert and must not suppress injection into the document.
52
+ // Template content is inert, so only live body descendants can reserve the mount.
65
53
  if (body) {
66
54
  visitElements(body, (element) => {
67
55
  if (element !== body && attributeValue(element, "id") === NUDGE_UI_MOUNT_ID) {
@@ -1,18 +1,5 @@
1
- import type { NudgeUiClientManifest } from "../../inspector/clientManifest.js";
1
+ import { type NudgeUiClientManifest } from "../../inspector/clientManifest.js";
2
2
  import type { ProjectTokenSnapshot } from "../../project/tokens.js";
3
3
  export { NUDGE_UI_CLIENT_PATH, NUDGE_UI_EDITOR_PATH, NUDGE_UI_MANIFEST_PATH, NUDGE_UI_MOUNT_ID, NUDGE_UI_RELOAD_PATH, NUDGE_UI_ROUTE_PREFIX, } from "../../transport/index.js";
4
- /** The serializable runtime document sent to a standalone client. */
5
- export interface StandaloneRuntimeManifest extends NudgeUiClientManifest {
6
- }
7
- /**
8
- * Creates the first valid static-HTML runtime snapshot.
9
- *
10
- * Stage 4 replaces the empty token arrays with the CSS token-inventory
11
- * snapshot. Keeping this constructor here makes the manifest contract
12
- * explicit and prevents the server from manufacturing a partial runtime
13
- * configuration.
14
- *
15
- * @param projectId The deterministic identity of the served project.
16
- * @returns A complete runtime manifest with no framework contracts or tokens.
17
- */
4
+ export type StandaloneRuntimeManifest = NudgeUiClientManifest;
18
5
  export declare function createStandaloneRuntimeManifest(projectId: string, tokenSnapshot?: ProjectTokenSnapshot, revision?: number): StandaloneRuntimeManifest;
@@ -1,29 +1,16 @@
1
- import { NUDGE_UI_MANIFEST_VERSION, NUDGE_UI_RELOAD_PATH } from "../../transport/index.js";
1
+ import { createNudgeUiClientManifest, } from "../../inspector/clientManifest.js";
2
+ import { NUDGE_UI_RELOAD_PATH } from "../../transport/index.js";
2
3
  import { automationManifestFields } from "../environment.js";
3
4
  export { NUDGE_UI_CLIENT_PATH, NUDGE_UI_EDITOR_PATH, NUDGE_UI_MANIFEST_PATH, NUDGE_UI_MOUNT_ID, NUDGE_UI_RELOAD_PATH, NUDGE_UI_ROUTE_PREFIX, } from "../../transport/index.js";
4
- /**
5
- * Creates the first valid static-HTML runtime snapshot.
6
- *
7
- * Stage 4 replaces the empty token arrays with the CSS token-inventory
8
- * snapshot. Keeping this constructor here makes the manifest contract
9
- * explicit and prevents the server from manufacturing a partial runtime
10
- * configuration.
11
- *
12
- * @param projectId The deterministic identity of the served project.
13
- * @returns A complete runtime manifest with no framework contracts or tokens.
14
- */
15
5
  export function createStandaloneRuntimeManifest(projectId, tokenSnapshot = emptyTokenSnapshot(), revision = 0) {
16
- return {
17
- version: NUDGE_UI_MANIFEST_VERSION,
6
+ return createNudgeUiClientManifest({
18
7
  revision,
19
8
  runtime: {
20
9
  projectId,
21
10
  host: "static-html",
22
11
  framework: "HTML",
23
12
  stylingSystem: "CSS custom properties",
24
- // Canvas shares the Vite host's controller/renderer runtime (ADR-0012):
25
- // every served document carries the bootstrap, so card iframes boot as
26
- // renderers without host-specific code.
13
+ // Canvas shares the Vite host's controller/renderer runtime (ADR-0012).
27
14
  capabilities: { canvas: true, componentSemantics: false, domNavigation: true },
28
15
  tokenCatalog: tokenSnapshot.tokenCatalog,
29
16
  tokens: tokenSnapshot.tokens,
@@ -41,7 +28,7 @@ export function createStandaloneRuntimeManifest(projectId, tokenSnapshot = empty
41
28
  events: ["ready", "reload"],
42
29
  },
43
30
  ...automationManifestFields(),
44
- };
31
+ });
45
32
  }
46
33
  function emptyTokenSnapshot() {
47
34
  return {
@@ -1,34 +1,27 @@
1
1
  import { type Server } from "node:http";
2
2
  import { type StandaloneRuntimeManifest } from "./manifest.js";
3
- /** Options for the loopback-only standalone static server. */
3
+ import { isReservedNudgeUiRoute } from "../../transport/index.js";
4
+ export { isReservedNudgeUiRoute };
4
5
  export interface StandaloneServerOptions {
5
6
  /** The explicit directory whose files may be served. */
6
7
  readonly rootDirectory: string;
7
- /** The loopback address to bind. Defaults to `127.0.0.1`. */
8
8
  readonly host?: "127.0.0.1" | "::1" | "localhost";
9
- /** The TCP port. Use `0` to ask the operating system for an available port. */
10
9
  readonly port?: number;
11
- /** The prebuilt browser client artifact. */
12
10
  readonly clientPath?: string;
13
11
  /** Override the deterministic project identity in tests or embedding hosts. */
14
12
  readonly projectId?: string;
15
13
  /** Debounce interval for source changes before one reload revision. */
16
14
  readonly watchDebounceMs?: number;
17
15
  }
18
- /** A canonical file resolved below the configured project root. */
19
16
  export interface StaticFileResolution {
20
- /** The canonical file path on disk. */
21
17
  readonly absolutePath: string;
22
- /** The slash-separated project-relative path used for source identity. */
23
18
  readonly projectPath: string;
24
19
  }
25
- /** The address returned after the server starts listening. */
26
20
  export interface StandaloneServerAddress {
27
21
  readonly host: string;
28
22
  readonly port: number;
29
23
  readonly url: string;
30
24
  }
31
- /** The running standalone server and its lifecycle methods. */
32
25
  export interface StandaloneServer {
33
26
  readonly httpServer: Server;
34
27
  readonly rootDirectory: string;
@@ -37,36 +30,9 @@ export interface StandaloneServer {
37
30
  start(): Promise<StandaloneServerAddress>;
38
31
  close(): Promise<void>;
39
32
  }
40
- /**
41
- * Creates a Nudge UI-owned static server for one explicit project root.
42
- *
43
- * The server binds to loopback, reserves its own route namespace, and only
44
- * reads prototype files. HTML instrumentation and bootstrap nodes exist in
45
- * response memory; the configured source directory is never rewritten.
46
- *
47
- * @param options Server root, address, port, and client artifact options.
48
- * @returns A server that has not started listening yet.
49
- * @throws If the root is missing, not a directory, or the host is not loopback.
50
- */
33
+ /** Serves one explicit project root over loopback, reserving its own route namespace; the configured source directory is never rewritten. */
51
34
  export declare function createStandaloneServer(options: StandaloneServerOptions): StandaloneServer;
52
- /**
53
- * Resolves one URL pathname to a canonical file under the project root.
54
- *
55
- * URL decoding occurs before path normalization, which makes encoded dot
56
- * segments subject to the same confinement check as ordinary traversal. The
57
- * canonical existing ancestor check also rejects a symlink that escapes the
58
- * root when the requested leaf does not yet exist. Hidden path segments are
59
- * refused, including encoded and multiply encoded forms, and a visible
60
- * symlink cannot be used to reach a hidden target.
61
- *
62
- * @param rootDirectory The configured project root.
63
- * @param requestPath A request target or URL pathname.
64
- * @returns A file resolution, or `null` for malformed, missing, or unsafe paths.
65
- */
35
+ /** Decodes before normalizing so encoded dot segments face the same confinement check; the canonical-ancestor check also rejects escaping symlinks. */
66
36
  export declare function resolveStaticFile(rootDirectory: string, requestPath: string): StaticFileResolution | null;
67
- /** Returns the deterministic project identity used for session persistence. */
68
37
  export declare function createStandaloneProjectId(rootDirectory: string): string;
69
- /** Returns a common response content type for a project-relative file. */
70
38
  export declare function contentTypeForPath(filePath: string): string;
71
- /** Returns whether a decoded pathname belongs to the server-owned route space. */
72
- export declare function isReservedNudgeUiRoute(pathname: string): boolean;
@@ -8,7 +8,9 @@ import { createRequire } from "node:module";
8
8
  import { instrumentSourceHtml } from "../../html/identity.js";
9
9
  import { injectStandaloneBootstrap } from "./html/bootstrap.js";
10
10
  import { createNudgeUiEditorDocument, isNudgeUiEditorDocumentRequest } from "../../transport/editor.js";
11
- import { createStandaloneRuntimeManifest, NUDGE_UI_CLIENT_PATH, NUDGE_UI_EDITOR_PATH, NUDGE_UI_MANIFEST_PATH, NUDGE_UI_RELOAD_PATH, NUDGE_UI_ROUTE_PREFIX, } from "./manifest.js";
11
+ import { createStandaloneRuntimeManifest, NUDGE_UI_CLIENT_PATH, NUDGE_UI_EDITOR_PATH, NUDGE_UI_MANIFEST_PATH, NUDGE_UI_RELOAD_PATH, } from "./manifest.js";
12
+ import { isReservedNudgeUiRoute } from "../../transport/index.js";
13
+ export { isReservedNudgeUiRoute };
12
14
  import { startOptionalProjectBridge } from "../projectBridge.js";
13
15
  import { createProjectTokenSnapshot, EMPTY_PROJECT_TOKEN_SNAPSHOT } from "../../project/tokens.js";
14
16
  import { createProjectFileWatcher, isSensitiveProjectPath, } from "../../project/files.js";
@@ -16,17 +18,7 @@ const LOOPBACK_HOSTS = new Set(["127.0.0.1", "::1", "localhost"]);
16
18
  const HTML_EXTENSIONS = new Set([".html", ".htm"]);
17
19
  const DEFAULT_PORT = 4173;
18
20
  const packageRequire = createRequire(import.meta.url);
19
- /**
20
- * Creates a Nudge UI-owned static server for one explicit project root.
21
- *
22
- * The server binds to loopback, reserves its own route namespace, and only
23
- * reads prototype files. HTML instrumentation and bootstrap nodes exist in
24
- * response memory; the configured source directory is never rewritten.
25
- *
26
- * @param options Server root, address, port, and client artifact options.
27
- * @returns A server that has not started listening yet.
28
- * @throws If the root is missing, not a directory, or the host is not loopback.
29
- */
21
+ /** Serves one explicit project root over loopback, reserving its own route namespace; the configured source directory is never rewritten. */
30
22
  export function createStandaloneServer(options) {
31
23
  const rootDirectory = canonicalDirectory(options.rootDirectory);
32
24
  const host = options.host ?? "127.0.0.1";
@@ -40,14 +32,12 @@ export function createStandaloneServer(options) {
40
32
  let revision = 0;
41
33
  let manifest = createStandaloneRuntimeManifest(projectId, EMPTY_PROJECT_TOKEN_SNAPSHOT, revision);
42
34
  let projectBridge = null;
43
- // The initial scan runs asynchronously; start() awaits it so the first
44
- // request and manifest always observe the complete project token knowledge.
35
+ // start() awaits the initial scan so the first request observes complete token knowledge.
45
36
  const initialTokens = createProjectTokenSnapshot({ rootDirectory, generationLabel: "static-html" }).then((tokens) => {
46
37
  manifest = createStandaloneRuntimeManifest(projectId, tokens, revision);
47
38
  return tokens;
48
39
  });
49
- // start() awaits and surfaces scan failures; this second handler only
50
- // prevents an unhandled rejection when a server is created but never started.
40
+ // Prevents an unhandled rejection when a server is created but never started.
51
41
  void initialTokens.catch(() => undefined);
52
42
  const reloadClients = new Set();
53
43
  let fileWatcher = null;
@@ -77,10 +67,8 @@ export function createStandaloneServer(options) {
77
67
  };
78
68
  const processSettledChanges = (_changes) => {
79
69
  changeQueue = changeQueue.then(async () => {
80
- // Rebuild every settled batch. fs.watch can report a directory or omit a
81
- // filename, so an extension check cannot reliably identify CSS changes.
82
- // The scan is asynchronous and bounded to the project root; rebuilding
83
- // once per settled batch keeps the manifest coherent before reload.
70
+ // fs.watch can omit a filename, so CSS changes cannot be identified by extension:
71
+ // rebuild once per settled batch to keep the manifest coherent before reload.
84
72
  const tokens = await createProjectTokenSnapshot({ rootDirectory, generationLabel: "static-html" });
85
73
  manifest = {
86
74
  ...createStandaloneRuntimeManifest(projectId, tokens, revision + 1),
@@ -89,9 +77,7 @@ export function createStandaloneServer(options) {
89
77
  revision += 1;
90
78
  notifyReload();
91
79
  }).catch((error) => {
92
- // A later settled batch can still rebuild the snapshot after a failed
93
- // callback. Source edits must not terminate the static server, but a
94
- // skipped reload must be visible to the developer.
80
+ // A failed rebuild must not terminate the server, but a skipped reload must stay visible.
95
81
  console.warn("Nudge UI standalone reload was skipped because rebuilding token knowledge failed:", error);
96
82
  });
97
83
  };
@@ -218,20 +204,7 @@ export function createStandaloneServer(options) {
218
204
  };
219
205
  return server;
220
206
  }
221
- /**
222
- * Resolves one URL pathname to a canonical file under the project root.
223
- *
224
- * URL decoding occurs before path normalization, which makes encoded dot
225
- * segments subject to the same confinement check as ordinary traversal. The
226
- * canonical existing ancestor check also rejects a symlink that escapes the
227
- * root when the requested leaf does not yet exist. Hidden path segments are
228
- * refused, including encoded and multiply encoded forms, and a visible
229
- * symlink cannot be used to reach a hidden target.
230
- *
231
- * @param rootDirectory The configured project root.
232
- * @param requestPath A request target or URL pathname.
233
- * @returns A file resolution, or `null` for malformed, missing, or unsafe paths.
234
- */
207
+ /** Decodes before normalizing so encoded dot segments face the same confinement check; the canonical-ancestor check also rejects escaping symlinks. */
235
208
  export function resolveStaticFile(rootDirectory, requestPath) {
236
209
  const root = canonicalDirectoryOrNull(rootDirectory);
237
210
  if (!root)
@@ -274,21 +247,14 @@ function resolveDecodedStaticFile(root, decodedPath) {
274
247
  return null;
275
248
  return { absolutePath: filePath, projectPath: relativePath };
276
249
  }
277
- /** Returns the deterministic project identity used for session persistence. */
278
250
  export function createStandaloneProjectId(rootDirectory) {
279
251
  const canonicalRoot = canonicalDirectory(rootDirectory);
280
252
  const digest = createHash("sha256").update(canonicalRoot).digest("hex").slice(0, 24);
281
253
  return `static-html:${digest}`;
282
254
  }
283
- /** Returns a common response content type for a project-relative file. */
284
255
  export function contentTypeForPath(filePath) {
285
256
  const extension = extname(filePath).toLowerCase();
286
- return MIME_TYPES[extension] ?? "application/octet-stream";
287
- }
288
- /** Returns whether a decoded pathname belongs to the server-owned route space. */
289
- export function isReservedNudgeUiRoute(pathname) {
290
- return pathname === NUDGE_UI_ROUTE_PREFIX.slice(0, -1)
291
- || pathname.startsWith(NUDGE_UI_ROUTE_PREFIX);
257
+ return MIME_TYPES.get(extension) ?? "application/octet-stream";
292
258
  }
293
259
  function canonicalDirectory(directory) {
294
260
  const canonical = canonicalDirectoryOrNull(directory);
@@ -327,12 +293,7 @@ function decodeRequestPath(requestPath) {
327
293
  return null;
328
294
  return pathname;
329
295
  }
330
- /**
331
- * Detects suspicious paths that become hidden or traversal paths after a
332
- * second URL decode. The server resolves request URLs exactly once so literal
333
- * percent-containing filenames continue to work, but nested encodings must
334
- * not provide an alternate spelling for a sensitive path.
335
- */
296
+ /** Request URLs are decoded exactly once, so a second decode must not yield an alternate spelling of a sensitive path. */
336
297
  function hasNestedUnsafePathEncoding(pathname) {
337
298
  let candidate = pathname;
338
299
  for (let depth = 0; depth < 5; depth += 1) {
@@ -414,11 +375,8 @@ async function handleRequest(input) {
414
375
  const isHtml = HTML_EXTENSIONS.has(extname(resolution.projectPath).toLowerCase());
415
376
  const contentType = contentTypeForPath(resolution.projectPath);
416
377
  if (request.method === "HEAD") {
417
- // HEAD answers headers without running the response transform: the body
418
- // would be discarded anyway, and the instrumented GET length cannot be
419
- // known without performing it. Content-Length is omitted for HTML so the
420
- // header cannot disagree with a subsequent GET body; untransformed files
421
- // report their exact length.
378
+ // HEAD answers headers without the response transform; Content-Length is omitted for
379
+ // HTML so it cannot disagree with a subsequent GET body.
422
380
  const body = await readProjectFile(resolution.absolutePath);
423
381
  if (isHtml) {
424
382
  response.writeHead(200, {
@@ -439,15 +397,7 @@ async function handleRequest(input) {
439
397
  }
440
398
  sendBody(response, 200, body, contentType, isHtml ? { "Cache-Control": "no-cache" } : {});
441
399
  }
442
- /**
443
- * Instruments one HTML response while guaranteeing byte preservation.
444
- *
445
- * The identity inserter only edits the decoded string at parser offsets, so
446
- * the decode itself must be lossless. A non-UTF-8 document cannot round-trip
447
- * through `toString("utf8")` without replacing every invalid sequence with
448
- * U+FFFD, so such documents are served untouched with a warning instead of
449
- * being silently corrupted.
450
- */
400
+ /** Served untouched when not valid UTF-8: identity insertion works at parser offsets, so a lossy decode would corrupt the document. */
451
401
  function instrumentHtmlResponse(body, projectPath) {
452
402
  let source;
453
403
  try {
@@ -570,7 +520,7 @@ function sendBody(response, status, body, contentType, headers = {}) {
570
520
  else
571
521
  response.end();
572
522
  }
573
- const MIME_TYPES = {
523
+ const MIME_TYPES = new Map(Object.entries({
574
524
  ".avif": "image/avif",
575
525
  ".css": "text/css; charset=utf-8",
576
526
  ".csv": "text/csv; charset=utf-8",
@@ -596,4 +546,4 @@ const MIME_TYPES = {
596
546
  ".woff": "font/woff",
597
547
  ".woff2": "font/woff2",
598
548
  ".xml": "application/xml; charset=utf-8",
599
- };
549
+ }));
@@ -1,16 +1,6 @@
1
1
  import type { Plugin, UserConfigExport } from "vite";
2
2
  import { type NudgeUiOptions } from "./vite.js";
3
- /**
4
- * Composes two independent halves: `./vite.ts` owns the build tool and knows
5
- * nothing about JSX, `./react.ts` owns React and knows nothing about Vite.
6
- * This is deliberately the only file that names both.
7
- */
8
3
  export declare function nudgeUi(options?: NudgeUiOptions): Plugin[];
9
- /**
10
- * Adds this host to an existing Vite configuration export. Object, promise,
11
- * and function forms are resolved at the same boundary Vite uses, so the host
12
- * keeps ownership of its runtime root and dependency graph.
13
- */
14
4
  export declare function withNudgeUi(config: UserConfigExport, options?: NudgeUiOptions): UserConfigExport;
15
5
  export type { NudgeUiOptions, VanillaExtractOptions } from "./vite.js";
16
6
  export { extractViteModuleCss, transformIndexHtmlHtml } from "./vite.js";
@@ -1,18 +1,8 @@
1
1
  import { createVitePlugins } from "./vite.js";
2
2
  import { createReactSupport } from "./react.js";
3
- /**
4
- * Composes two independent halves: `./vite.ts` owns the build tool and knows
5
- * nothing about JSX, `./react.ts` owns React and knows nothing about Vite.
6
- * This is deliberately the only file that names both.
7
- */
8
3
  export function nudgeUi(options = {}) {
9
4
  return createVitePlugins(options, createReactSupport);
10
5
  }
11
- /**
12
- * Adds this host to an existing Vite configuration export. Object, promise,
13
- * and function forms are resolved at the same boundary Vite uses, so the host
14
- * keeps ownership of its runtime root and dependency graph.
15
- */
16
6
  export function withNudgeUi(config, options = {}) {
17
7
  if (typeof config === "function") {
18
8
  // SAFETY: The typeof guard selects the function form of UserConfigExport, whose signature this cast states.
@@ -3,42 +3,32 @@ import { injectIdentity } from "../../compiler/reactIdentity.js";
3
3
  import type { ComponentContract } from "../../compiler/index.js";
4
4
  import { type ComponentInstrumentationOptions, type ComponentModuleProtocols } from "../../compiler/index.js";
5
5
  export interface ReactOptions {
6
- /**
7
- * Skip the React aliases used only by the legacy bundled landing demo.
8
- * @deprecated Normal development clients no longer add React aliases.
9
- */
6
+ /** @deprecated Normal development clients no longer add React aliases. */
10
7
  skipReactAliases?: boolean;
11
8
  /** Fills gaps for packages whose public type graph cannot describe an editable prop. */
12
9
  componentMetadata?: ComponentContract[];
13
10
  /** Package imports are fail-closed unless listed here or described by a component protocol. */
14
11
  compatibleComponentImports?: ComponentInstrumentationOptions["compatibleComponentImports"];
15
- /** Additional package or project component protocols resolved by the host. */
16
12
  componentProtocols?: ComponentModuleProtocols;
17
13
  }
18
- /** Everything React needs from whichever host is driving it. */
19
14
  export interface FrameworkHost {
20
15
  root(): string | undefined;
21
- /** True when a module belongs to the application rather than a dependency. */
22
16
  isHostSource(id: string): boolean;
23
17
  /** The project-relative path recorded in contracts and diagnostics. */
24
18
  catalogPath(id: string): string;
25
19
  }
26
- /** The parts of a transform hook React uses, named without the build tool. */
27
20
  export interface FrameworkTransformContext {
28
21
  resolve(specifier: string, importer: string): Promise<string | null>;
29
22
  warn(message: string): void;
30
23
  }
31
24
  export declare function createReactSupport(options: ReactOptions, host: FrameworkHost): {
32
- /** Manifest labels for a host composing React. */
33
25
  hostLabel: "vite-react";
34
26
  framework: "React";
35
27
  virtualModuleId: string;
28
+ /** Lets live preview reach React's renderer, which loads before any module the host controls. */
29
+ documentHeadScript: string;
36
30
  owns(id: string): boolean;
37
- /**
38
- * Dedupe is the load-bearing part: instrumented callsites must use the
39
- * application's own React, and a linked or nested copy would create a
40
- * second runtime.
41
- */
31
+ /** Dedupe is load-bearing: instrumented callsites must use the application's own React, not a linked or nested copy. */
42
32
  viteConfig(context: {
43
33
  projectRoot: string;
44
34
  demo: boolean;
@@ -54,14 +44,11 @@ export declare function createReactSupport(options: ReactOptions, host: Framewor
54
44
  };
55
45
  /** Not fatal, but a packed install that cannot resolve it fails later at the importing module. */
56
46
  unresolvedRuntimeWarning(): string | null;
57
- /** Cold-start scan, so the first manifest is not missing every contract. */
58
47
  warmUp(): void;
59
48
  observe(id: string, code: string, refreshPackages?: boolean): void;
60
- /** Drops a module whose source could not be read after a change. */
61
49
  forget(id: string): void;
62
50
  transform(context: FrameworkTransformContext, code: string, id: string): Promise<ReturnType<typeof injectIdentity>>;
63
51
  contracts(): ComponentContract[];
64
52
  serializeVirtualModule(contracts: readonly ComponentContract[]): string;
65
53
  };
66
- /** The framework support a host composes, or `null` for no framework at all. */
67
54
  export type FrameworkSupport = ReturnType<typeof createReactSupport>;
@@ -3,25 +3,19 @@ import { createRequire } from "node:module";
3
3
  import { join } from "node:path";
4
4
  import { injectIdentity } from "../../compiler/reactIdentity.js";
5
5
  import { extractComponentContracts } from "../../compiler/componentContracts.js";
6
- import { collectPackageComponentModules, extractPackageComponentContractCatalog, } from "../../compiler/packageComponentContracts.js";
6
+ import { collectPackageComponentImports, extractPackageComponentContractCatalog, } from "../../compiler/packageComponentContracts.js";
7
+ import { REACT_RENDERER_CAPTURE_SCRIPT } from "../reactRendererCapture.js";
7
8
  import { defaultReactComponentProtocols, formatComponentPolicyWarning, groupComponentPolicyDiagnostics, mergeComponentModuleProtocols, resolveHostComponentPolicy, } from "../../compiler/index.js";
8
- /**
9
- * What React means to a host, with no knowledge of which host is asking. The
10
- * Vite host owns the build tool; this module owns React semantics. `FrameworkHost`
11
- * is everything React needs back, and the Vite host accepts `null` in its place,
12
- * which is what proves it does not secretly depend on any of this.
13
- */
14
9
  const COMPONENT_EXTENSION = /\.(?:tsx|jsx)(?:$|[?#])/;
15
10
  const COMPONENT_RUNTIME_MODULE = "nudge-ui/internal/component-runtime";
16
11
  const packageRequire = createRequire(import.meta.url);
17
12
  export function createReactSupport(options, host) {
18
13
  const contractsByFile = new Map();
19
- const packageModulesByFile = new Map();
14
+ const packageImportsByFile = new Map();
20
15
  const reportedPolicyDiagnostics = new Set();
21
16
  const manualComponentIds = new Set(options.componentMetadata?.map((contract) => contract.componentId) ?? []);
22
17
  let packageFingerprint = "";
23
- // Aliased so the injected specifier resolves in a packed install, where the
24
- // application's dependency graph has never heard of it.
18
+ // Aliased so the injected specifier resolves in a packed install, where the application's graph has never heard of it.
25
19
  const componentRuntimePath = resolveComponentRuntime();
26
20
  if (options.componentMetadata?.length) {
27
21
  contractsByFile.set("package-manifests", options.componentMetadata.map((contract) => ({
@@ -29,22 +23,15 @@ export function createReactSupport(options, host) {
29
23
  provenance: "package-manifest",
30
24
  })));
31
25
  }
32
- /**
33
- * Fingerprinted on the module-to-importer mapping so an unchanged import
34
- * graph costs nothing; every component edit reaches this path.
35
- */
26
+ /** Fingerprinted on the rendered package exports, so an unchanged import graph costs nothing. */
36
27
  function refreshPackageContracts() {
37
- const hostByModule = new Map();
38
- for (const [hostFile, modules] of [...packageModulesByFile].sort(([left], [right]) => left.localeCompare(right))) {
39
- for (const moduleSpecifier of modules) {
40
- if (!hostByModule.has(moduleSpecifier))
41
- hostByModule.set(moduleSpecifier, hostFile);
28
+ const importsByKey = new Map();
29
+ for (const imports of packageImportsByFile.values()) {
30
+ for (const packageImport of imports) {
31
+ importsByKey.set(`${packageImport.moduleSpecifier}#${packageImport.exportName}`, packageImport);
42
32
  }
43
33
  }
44
- const fingerprint = [...hostByModule]
45
- .sort(([left], [right]) => left.localeCompare(right))
46
- .map(([moduleSpecifier, hostFile]) => `${moduleSpecifier}\0${hostFile}`)
47
- .join("\n");
34
+ const fingerprint = [...importsByKey.keys()].sort().join("\n");
48
35
  if (fingerprint === packageFingerprint)
49
36
  return;
50
37
  for (const key of [...contractsByFile.keys()]) {
@@ -55,27 +42,25 @@ export function createReactSupport(options, host) {
55
42
  const catalog = root
56
43
  ? extractPackageComponentContractCatalog({
57
44
  hostFile: join(root, "__nudge_ui_package_contracts__.tsx"),
58
- moduleSpecifiers: [...hostByModule.keys()],
45
+ imports: [...importsByKey.values()],
59
46
  })
60
47
  : [];
61
- for (const moduleSpecifier of hostByModule.keys()) {
48
+ const moduleSpecifiers = new Set([...importsByKey.values()].map((entry) => entry.moduleSpecifier));
49
+ for (const moduleSpecifier of moduleSpecifiers) {
62
50
  contractsByFile.set(`package-types:${moduleSpecifier}`, catalog.filter((contract) => contract.file === moduleSpecifier && !manualComponentIds.has(contract.componentId)));
63
51
  }
64
52
  packageFingerprint = fingerprint;
65
53
  }
66
54
  return {
67
- /** Manifest labels for a host composing React. */
68
55
  hostLabel: "vite-react",
69
56
  framework: "React",
70
57
  virtualModuleId: "virtual:nudge-ui-components",
58
+ /** Lets live preview reach React's renderer, which loads before any module the host controls. */
59
+ documentHeadScript: REACT_RENDERER_CAPTURE_SCRIPT,
71
60
  owns(id) {
72
61
  return COMPONENT_EXTENSION.test(id);
73
62
  },
74
- /**
75
- * Dedupe is the load-bearing part: instrumented callsites must use the
76
- * application's own React, and a linked or nested copy would create a
77
- * second runtime.
78
- */
63
+ /** Dedupe is load-bearing: instrumented callsites must use the application's own React, not a linked or nested copy. */
79
64
  viteConfig(context) {
80
65
  const demoAliases = context.demo && options.skipReactAliases !== true
81
66
  ? resolveReactAliases(context.projectRoot)
@@ -105,7 +90,6 @@ export function createReactSupport(options, host) {
105
90
  return `[nudge-ui] Could not resolve ${COMPONENT_RUNTIME_MODULE} from the Vite adapter. `
106
91
  + "Semantic component callsites will fall back to application resolution of that specifier.";
107
92
  },
108
- /** Cold-start scan, so the first manifest is not missing every contract. */
109
93
  warmUp() {
110
94
  const root = host.root();
111
95
  if (!root)
@@ -125,14 +109,13 @@ export function createReactSupport(options, host) {
125
109
  return;
126
110
  const fileId = id.split(/[?#]/, 1)[0] ?? id;
127
111
  contractsByFile.set(fileId, extractComponentContracts(code, host.catalogPath(fileId)));
128
- packageModulesByFile.set(fileId, collectPackageComponentModules(code, fileId));
112
+ packageImportsByFile.set(fileId, collectPackageComponentImports(code, fileId));
129
113
  if (refreshPackages)
130
114
  refreshPackageContracts();
131
115
  },
132
- /** Drops a module whose source could not be read after a change. */
133
116
  forget(id) {
134
117
  contractsByFile.set(id, []);
135
- packageModulesByFile.delete(id);
118
+ packageImportsByFile.delete(id);
136
119
  refreshPackageContracts();
137
120
  },
138
121
  async transform(context, code, id) {
@@ -1,8 +1,3 @@
1
- /**
2
- * The token catalog must follow only stylesheets the application imports. This
3
- * small graph walker deliberately has no filesystem traversal: callers supply
4
- * the host CSS entry files, a Vite-backed resolver, and a reader.
5
- */
6
1
  export interface CssImportGraph {
7
2
  files: Map<string, string>;
8
3
  /** CSS cascade order: imported sheets precede the sheet that imports them. */
@@ -19,10 +14,6 @@ export interface CssImportGraphDependencies {
19
14
  }
20
15
  export declare function stripCssQuery(id: string): string;
21
16
  export declare function isCssStylesheet(id: string): boolean;
22
- /** Extract quoted and url(...) @import targets while ignoring CSS comments. */
23
17
  export declare function cssImportSpecifiers(css: string): string[];
24
- /**
25
- * Resolve every CSS file reached from the supplied host stylesheets. Missing
26
- * and unreadable imports are reported but never make the catalog unavailable.
27
- */
18
+ /** Missing and unreadable imports are reported, never fatal to the catalog. */
28
19
  export declare function discoverCssImportGraph(entryFiles: readonly string[], dependencies: CssImportGraphDependencies): Promise<CssImportGraph>;