forgebook 0.3.2 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (693) hide show
  1. package/README.md +917 -74
  2. package/dist/bin/forgebook/agentClient.d.ts +2 -1
  3. package/dist/bin/forgebook/agentClient.js +13 -6
  4. package/dist/bin/forgebook/agentGuide.d.ts +59 -0
  5. package/dist/bin/forgebook/agentGuide.js +203 -0
  6. package/dist/bin/forgebook/agentLoopCommands.mjs +22 -42
  7. package/dist/bin/forgebook/agentSetup/agentFiles.d.ts +55 -0
  8. package/dist/bin/forgebook/agentSetup/agentFiles.js +319 -0
  9. package/dist/bin/forgebook/agentSetup/assistantHooks.d.ts +71 -0
  10. package/dist/bin/forgebook/agentSetup/assistantHooks.js +125 -0
  11. package/dist/bin/forgebook/agentSetup/ciWorkflow.d.ts +23 -0
  12. package/dist/bin/forgebook/agentSetup/ciWorkflow.js +55 -0
  13. package/dist/bin/forgebook/agentSetup/drawCandidates.d.ts +25 -0
  14. package/dist/bin/forgebook/agentSetup/drawCandidates.js +116 -0
  15. package/dist/bin/forgebook/agentSetup/drawDiagnosis.d.ts +28 -0
  16. package/dist/bin/forgebook/agentSetup/drawDiagnosis.js +134 -0
  17. package/dist/bin/forgebook/agentSetup/drawRun.d.ts +91 -0
  18. package/dist/bin/forgebook/agentSetup/drawRun.js +353 -0
  19. package/dist/bin/forgebook/agentSetup/hookNames.d.ts +7 -0
  20. package/dist/bin/forgebook/agentSetup/hookNames.js +7 -0
  21. package/dist/bin/forgebook/agentSetup/initAgentSteps.d.ts +48 -0
  22. package/dist/bin/forgebook/agentSetup/initAgentSteps.js +104 -0
  23. package/dist/bin/forgebook/agentSetup/liftedProviders.d.ts +17 -0
  24. package/dist/bin/forgebook/agentSetup/liftedProviders.js +186 -0
  25. package/dist/bin/forgebook/agentSetup/projectRunner.d.ts +46 -0
  26. package/dist/bin/forgebook/agentSetup/projectRunner.js +85 -0
  27. package/dist/bin/forgebook/agentSetup/stopHook.d.ts +65 -0
  28. package/dist/bin/forgebook/agentSetup/stopHook.js +202 -0
  29. package/dist/bin/forgebook/agentSetup/uniformPicture.d.ts +7 -0
  30. package/dist/bin/forgebook/agentSetup/uniformPicture.js +98 -0
  31. package/dist/bin/forgebook/agentSetupCommands.d.mts +14 -0
  32. package/dist/bin/forgebook/agentSetupCommands.mjs +98 -0
  33. package/dist/bin/forgebook/agentText.d.ts +23 -3
  34. package/dist/bin/forgebook/agentText.js +175 -28
  35. package/dist/bin/forgebook/agents.md +20 -191
  36. package/dist/bin/forgebook/agentsText.js +2 -1
  37. package/dist/bin/forgebook/appBuild/appBuild.d.ts +59 -0
  38. package/dist/bin/forgebook/appBuild/appBuild.js +213 -0
  39. package/dist/bin/forgebook/appBuild/appViteConfig.d.ts +96 -0
  40. package/dist/bin/forgebook/appBuild/appViteConfig.js +320 -0
  41. package/dist/bin/forgebook/appBuild/tsconfigPaths.d.ts +14 -0
  42. package/dist/bin/forgebook/appBuild/tsconfigPaths.js +80 -0
  43. package/dist/bin/forgebook/auditCommand.d.mts +8 -0
  44. package/dist/bin/forgebook/auditCommand.mjs +75 -0
  45. package/dist/bin/forgebook/auditRun.d.ts +95 -0
  46. package/dist/bin/forgebook/auditRun.js +270 -0
  47. package/dist/bin/forgebook/browserRun.d.ts +21 -0
  48. package/dist/bin/forgebook/browserRun.js +57 -0
  49. package/dist/bin/forgebook/buildFailure.d.ts +7 -0
  50. package/dist/bin/forgebook/buildFailure.js +47 -0
  51. package/dist/bin/forgebook/buildWatch.d.ts +52 -0
  52. package/dist/bin/forgebook/buildWatch.js +137 -0
  53. package/dist/bin/forgebook/builtCatalogue.js +9 -5
  54. package/dist/bin/forgebook/catalogueCommands.d.ts +9 -0
  55. package/dist/bin/forgebook/catalogueCommands.js +23 -0
  56. package/dist/bin/forgebook/catalogueVite.d.ts +5 -1
  57. package/dist/bin/forgebook/catalogueVite.js +14 -6
  58. package/dist/bin/forgebook/commandCacheClaim.d.ts +18 -0
  59. package/dist/bin/forgebook/commandCacheClaim.js +170 -0
  60. package/dist/bin/forgebook/commandServer.d.ts +8 -0
  61. package/dist/bin/forgebook/commandServer.js +61 -13
  62. package/dist/bin/forgebook/forgebookCommands.mjs +105 -28
  63. package/dist/bin/forgebook/graphCommand.d.mts +8 -0
  64. package/dist/bin/forgebook/graphCommand.mjs +84 -0
  65. package/dist/bin/forgebook/guide/commands.md +57 -0
  66. package/dist/bin/forgebook/guide/devices.md +17 -0
  67. package/dist/bin/forgebook/guide/docs-pages.md +13 -0
  68. package/dist/bin/forgebook/guide/frameworks/angular.md +22 -0
  69. package/dist/bin/forgebook/guide/frameworks/html.md +22 -0
  70. package/dist/bin/forgebook/guide/frameworks/nextjs.md +23 -0
  71. package/dist/bin/forgebook/guide/frameworks/nuxt.md +22 -0
  72. package/dist/bin/forgebook/guide/frameworks/preact.md +16 -0
  73. package/dist/bin/forgebook/guide/frameworks/react-native-web.md +21 -0
  74. package/dist/bin/forgebook/guide/frameworks/react.md +16 -0
  75. package/dist/bin/forgebook/guide/frameworks/solid.md +18 -0
  76. package/dist/bin/forgebook/guide/frameworks/svelte.md +18 -0
  77. package/dist/bin/forgebook/guide/frameworks/sveltekit.md +23 -0
  78. package/dist/bin/forgebook/guide/frameworks/vue.md +18 -0
  79. package/dist/bin/forgebook/guide/frameworks/web-components.md +21 -0
  80. package/dist/bin/forgebook/guide/links.md +29 -0
  81. package/dist/bin/forgebook/guide/setup.md +23 -0
  82. package/dist/bin/forgebook/guide/stories.md +90 -0
  83. package/dist/bin/forgebook/guide/switches.md +43 -0
  84. package/dist/bin/forgebook/guideCommand.d.mts +13 -0
  85. package/dist/bin/forgebook/guideCommand.mjs +37 -0
  86. package/dist/bin/forgebook/importers/storybook.d.ts +21 -0
  87. package/dist/bin/forgebook/importers/storybook.js +11 -5
  88. package/dist/bin/forgebook/importers/storybookFrameworks.js +1 -1
  89. package/dist/bin/forgebook/initCommands.d.mts +11 -0
  90. package/dist/bin/forgebook/initCommands.mjs +51 -78
  91. package/dist/bin/forgebook/initConfig.d.ts +5 -3
  92. package/dist/bin/forgebook/initConfig.js +6 -3
  93. package/dist/bin/forgebook/initInstall.d.ts +15 -0
  94. package/dist/bin/forgebook/initInstall.js +77 -0
  95. package/dist/bin/forgebook/initPrint.d.ts +9 -0
  96. package/dist/bin/forgebook/initPrint.js +60 -0
  97. package/dist/bin/forgebook/initRefusals.d.ts +45 -0
  98. package/dist/bin/forgebook/initRefusals.js +91 -0
  99. package/dist/bin/forgebook/initRun.d.ts +28 -0
  100. package/dist/bin/forgebook/initRun.js +311 -0
  101. package/dist/bin/forgebook/mcpCommand.mjs +38 -4
  102. package/dist/bin/forgebook/mcpGraph.d.ts +13 -0
  103. package/dist/bin/forgebook/mcpGraph.js +24 -0
  104. package/dist/bin/forgebook/mcpTokens.d.ts +14 -0
  105. package/dist/bin/forgebook/mcpTokens.js +58 -0
  106. package/dist/bin/forgebook/mcpToolParts.d.ts +7 -0
  107. package/dist/bin/forgebook/mcpToolParts.js +10 -0
  108. package/dist/bin/forgebook/mcpTools.d.ts +13 -6
  109. package/dist/bin/forgebook/mcpTools.js +57 -90
  110. package/dist/bin/forgebook/mcpVerify.d.ts +16 -0
  111. package/dist/bin/forgebook/mcpVerify.js +36 -0
  112. package/dist/bin/forgebook/migrate/codemods.d.ts +11 -0
  113. package/dist/bin/forgebook/migrate/codemods.js +61 -0
  114. package/dist/bin/forgebook/migrate/migrate.types.d.ts +117 -0
  115. package/dist/bin/forgebook/migrate/migrate.types.js +5 -0
  116. package/dist/bin/forgebook/migrate/migrateCommand.d.mts +8 -0
  117. package/dist/bin/forgebook/migrate/migrateCommand.mjs +76 -0
  118. package/dist/bin/forgebook/migrate/migrateRun.d.ts +61 -0
  119. package/dist/bin/forgebook/migrate/migrateRun.js +210 -0
  120. package/dist/bin/forgebook/migrate/migrateText.d.ts +12 -0
  121. package/dist/bin/forgebook/migrate/migrateText.js +30 -0
  122. package/dist/bin/forgebook/migrate/migrateWrite.d.ts +27 -0
  123. package/dist/bin/forgebook/migrate/migrateWrite.js +66 -0
  124. package/dist/bin/forgebook/migrate/objectEdits.d.ts +70 -0
  125. package/dist/bin/forgebook/migrate/objectEdits.js +241 -0
  126. package/dist/bin/forgebook/migrate/playOnInBuilds.d.ts +3 -0
  127. package/dist/bin/forgebook/migrate/playOnInBuilds.js +86 -0
  128. package/dist/bin/forgebook/migrate/propGroupStrings.d.ts +5 -0
  129. package/dist/bin/forgebook/migrate/propGroupStrings.js +81 -0
  130. package/dist/bin/forgebook/newProject/newProject.d.ts +39 -0
  131. package/dist/bin/forgebook/newProject/newProject.js +180 -0
  132. package/dist/bin/forgebook/newProject/newProject.types.d.ts +97 -0
  133. package/dist/bin/forgebook/newProject/newProject.types.js +6 -0
  134. package/dist/bin/forgebook/newProject/packageManagers.d.ts +51 -0
  135. package/dist/bin/forgebook/newProject/packageManagers.js +121 -0
  136. package/dist/bin/forgebook/newProject/projectEntries.d.ts +62 -0
  137. package/dist/bin/forgebook/newProject/projectEntries.js +191 -0
  138. package/dist/bin/forgebook/newProject/projectFrameworks.d.ts +57 -0
  139. package/dist/bin/forgebook/newProject/projectFrameworks.js +148 -0
  140. package/dist/bin/forgebook/newProject/projectLook.d.ts +23 -0
  141. package/dist/bin/forgebook/newProject/projectLook.js +293 -0
  142. package/dist/bin/forgebook/newProject/projectPackages.d.ts +66 -0
  143. package/dist/bin/forgebook/newProject/projectPackages.js +178 -0
  144. package/dist/bin/forgebook/newRepair.d.ts +45 -0
  145. package/dist/bin/forgebook/newRepair.js +157 -0
  146. package/dist/bin/forgebook/newRepairRun.d.ts +69 -0
  147. package/dist/bin/forgebook/newRepairRun.js +148 -0
  148. package/dist/bin/forgebook/newStories.d.ts +23 -1
  149. package/dist/bin/forgebook/newStories.js +101 -11
  150. package/dist/bin/forgebook/newStoriesFile.d.ts +20 -1
  151. package/dist/bin/forgebook/newStoriesFile.js +43 -4
  152. package/dist/bin/forgebook/prebundleRun.d.ts +3 -1
  153. package/dist/bin/forgebook/prebundleRun.js +28 -8
  154. package/dist/bin/forgebook/proofCommand.d.mts +15 -0
  155. package/dist/bin/forgebook/proofCommand.mjs +212 -0
  156. package/dist/bin/forgebook/proofRun.d.ts +63 -0
  157. package/dist/bin/forgebook/proofRun.js +412 -0
  158. package/dist/bin/forgebook/proofText.d.ts +36 -0
  159. package/dist/bin/forgebook/proofText.js +131 -0
  160. package/dist/bin/forgebook/proofWorkflow.d.ts +29 -0
  161. package/dist/bin/forgebook/proofWorkflow.js +205 -0
  162. package/dist/bin/forgebook/setArgsTool.d.ts +8 -0
  163. package/dist/bin/forgebook/setArgsTool.js +70 -0
  164. package/dist/bin/forgebook/storyCheckCommands.mjs +42 -3
  165. package/dist/bin/forgebook/storyCheckRun.d.ts +50 -0
  166. package/dist/bin/forgebook/storyCheckRun.js +83 -9
  167. package/dist/bin/forgebook/storyFileIds.d.ts +15 -0
  168. package/dist/bin/forgebook/storyFileIds.js +14 -0
  169. package/dist/bin/forgebook/stressCases.d.ts +31 -0
  170. package/dist/bin/forgebook/stressCases.js +79 -0
  171. package/dist/bin/forgebook/stressRun.d.ts +12 -0
  172. package/dist/bin/forgebook/stressRun.js +61 -0
  173. package/dist/bin/forgebook/stressText.d.ts +27 -0
  174. package/dist/bin/forgebook/stressText.js +46 -0
  175. package/dist/bin/forgebook/verifyBase.d.ts +45 -0
  176. package/dist/bin/forgebook/verifyBase.js +196 -0
  177. package/dist/bin/forgebook/verifyCommand.d.mts +13 -0
  178. package/dist/bin/forgebook/verifyCommand.mjs +125 -0
  179. package/dist/bin/forgebook/verifyRun.d.ts +63 -0
  180. package/dist/bin/forgebook/verifyRun.js +108 -0
  181. package/dist/bin/forgebook/verifyVerdict.d.ts +40 -0
  182. package/dist/bin/forgebook/verifyVerdict.js +297 -0
  183. package/dist/bin/forgebook/workflowActions.d.ts +23 -0
  184. package/dist/bin/forgebook/workflowActions.js +23 -0
  185. package/dist/bin/forgebook-docs/catalogueMarkdown.js +12 -1
  186. package/dist/src/addressArgs.d.ts +54 -6
  187. package/dist/src/addressArgs.js +72 -16
  188. package/dist/src/addressArgsParam.d.ts +54 -0
  189. package/dist/src/addressArgsParam.js +51 -0
  190. package/dist/src/addressTexts.d.ts +14 -0
  191. package/dist/src/addressTexts.js +28 -21
  192. package/dist/src/agentIndexFile.d.ts +11 -0
  193. package/dist/src/agentIndexFile.js +11 -0
  194. package/dist/src/argConditions.d.ts +52 -0
  195. package/dist/src/argConditions.js +80 -0
  196. package/dist/src/argControl.d.ts +100 -0
  197. package/dist/src/argControl.js +0 -0
  198. package/dist/src/argExpression.d.ts +21 -0
  199. package/dist/src/argExpression.js +30 -0
  200. package/dist/src/argTypes.d.ts +40 -51
  201. package/dist/src/argTypes.js +66 -184
  202. package/dist/src/argsProps.d.ts +3 -3
  203. package/dist/src/argsProps.js +11 -5
  204. package/dist/src/bundlerErrors.d.ts +29 -0
  205. package/dist/src/bundlerErrors.js +49 -0
  206. package/dist/src/catalogue.d.ts +31 -0
  207. package/dist/src/catalogue.js +13 -2
  208. package/dist/src/catalogueRefs.d.ts +75 -0
  209. package/dist/src/catalogueRefs.js +122 -0
  210. package/dist/src/componentDocs.d.ts +71 -0
  211. package/dist/src/componentDocs.js +15 -2
  212. package/dist/src/frame/callValues.d.ts +19 -0
  213. package/dist/src/frame/callValues.js +58 -0
  214. package/dist/src/frame/canvasScheme.d.ts +33 -0
  215. package/dist/src/frame/canvasScheme.js +67 -0
  216. package/dist/src/frame/frame.css +36 -3
  217. package/dist/src/frame/frameStatus.d.ts +16 -1
  218. package/dist/src/frame/frameStatus.js +16 -1
  219. package/dist/src/frame/frameView.js +4 -3
  220. package/dist/src/frame/mountFrame.d.ts +7 -1
  221. package/dist/src/frame/mountFrame.js +153 -46
  222. package/dist/src/frame/panelValues.d.ts +35 -0
  223. package/dist/src/frame/panelValues.js +127 -0
  224. package/dist/src/frame/playActions.d.ts +39 -0
  225. package/dist/src/frame/playActions.js +98 -0
  226. package/dist/src/frame/playStepper.d.ts +28 -0
  227. package/dist/src/frame/playStepper.js +38 -0
  228. package/dist/src/frame/playStory.d.ts +9 -1
  229. package/dist/src/frame/playStory.js +49 -3
  230. package/dist/src/frame/renderer.d.ts +34 -1
  231. package/dist/src/frame/renderer.js +24 -0
  232. package/dist/src/frame/shellChannel.d.ts +1 -1
  233. package/dist/src/frame/shellChannel.js +1 -1
  234. package/dist/src/frame/shellCheck.d.ts +17 -0
  235. package/dist/src/frame/shellCheck.js +25 -0
  236. package/dist/src/frame/shellMessageCheck.d.ts +7 -0
  237. package/dist/src/frame/shellMessageCheck.js +53 -0
  238. package/dist/src/frame/storyContent.d.ts +50 -0
  239. package/dist/src/frame/storyContent.js +73 -0
  240. package/dist/src/frame/storyModule.d.ts +9 -0
  241. package/dist/src/frame/storyModule.js +20 -2
  242. package/dist/src/frame/storyRun.d.ts +15 -7
  243. package/dist/src/frame/storyRun.js +64 -15
  244. package/dist/src/frame/valueSheets.d.ts +35 -0
  245. package/dist/src/frame/valueSheets.js +99 -0
  246. package/dist/src/hotModules.d.ts +20 -0
  247. package/dist/src/hotModules.js +23 -0
  248. package/dist/src/jsxCode.d.ts +1 -14
  249. package/dist/src/jsxCode.js +46 -10
  250. package/dist/src/liveErrors.d.ts +30 -4
  251. package/dist/src/liveErrors.js +18 -3
  252. package/dist/src/messages.d.ts +77 -27
  253. package/dist/src/messages.js +58 -100
  254. package/dist/src/namedValues.d.ts +2 -26
  255. package/dist/src/namedValues.js +0 -47
  256. package/dist/src/pageConfig.d.ts +2 -0
  257. package/dist/src/playTrace.d.ts +19 -2
  258. package/dist/src/playTrace.js +10 -5
  259. package/dist/src/plugin.d.ts +10 -3
  260. package/dist/src/previewRelay.js +9 -1
  261. package/dist/src/printable.d.ts +12 -0
  262. package/dist/src/printable.js +22 -0
  263. package/dist/src/propsSignature.d.ts +37 -0
  264. package/dist/src/propsSignature.js +40 -0
  265. package/dist/src/search.d.ts +41 -5
  266. package/dist/src/search.js +93 -23
  267. package/dist/src/searchMatch.d.ts +4 -1
  268. package/dist/src/searchMatch.js +26 -5
  269. package/dist/src/searchTypos.d.ts +88 -0
  270. package/dist/src/searchTypos.js +178 -0
  271. package/dist/src/shapeValues.d.ts +86 -0
  272. package/dist/src/shapeValues.js +295 -0
  273. package/dist/src/shell/ApiReference.js +6 -3
  274. package/dist/src/shell/ApiTableBox.d.ts +15 -0
  275. package/dist/src/shell/ApiTableBox.js +11 -0
  276. package/dist/src/shell/AppearanceMenu.d.ts +4 -1
  277. package/dist/src/shell/AppearanceMenu.js +9 -6
  278. package/dist/src/shell/CodeTab.d.ts +3 -2
  279. package/dist/src/shell/CodeTab.js +3 -2
  280. package/dist/src/shell/CodeText.d.ts +1 -1
  281. package/dist/src/shell/CodeText.js +2 -3
  282. package/dist/src/shell/CompareGrid.js +1 -1
  283. package/dist/src/shell/ComponentPage.d.ts +1 -1
  284. package/dist/src/shell/ComponentPage.js +5 -1
  285. package/dist/src/shell/CustomControl.d.ts +34 -0
  286. package/dist/src/shell/CustomControl.js +132 -0
  287. package/dist/src/shell/DocContainers.js +1 -1
  288. package/dist/src/shell/DocPage.js +2 -2
  289. package/dist/src/shell/DroppedArgsList.d.ts +2 -2
  290. package/dist/src/shell/DroppedArgsList.js +1 -1
  291. package/dist/src/shell/EmbedPage.js +58 -14
  292. package/dist/src/shell/Example.d.ts +5 -1
  293. package/dist/src/shell/Example.js +16 -8
  294. package/dist/src/shell/FrameView.d.ts +6 -3
  295. package/dist/src/shell/FrameView.js +2 -2
  296. package/dist/src/shell/HomePage.d.ts +3 -1
  297. package/dist/src/shell/HomePage.js +16 -6
  298. package/dist/src/shell/InfoTip.js +2 -2
  299. package/dist/src/shell/InteractionsTab.d.ts +11 -4
  300. package/dist/src/shell/InteractionsTab.js +18 -2
  301. package/dist/src/shell/LazyPage.js +1 -1
  302. package/dist/src/shell/PackageHtml.js +3 -1
  303. package/dist/src/shell/PinnedControl.js +14 -62
  304. package/dist/src/shell/PinnedControlMenu.d.ts +44 -0
  305. package/dist/src/shell/PinnedControlMenu.js +72 -0
  306. package/dist/src/shell/PluginBlockHost.js +2 -1
  307. package/dist/src/shell/PluginTabHost.js +19 -2
  308. package/dist/src/shell/PropFields.d.ts +3 -1
  309. package/dist/src/shell/PropFields.js +9 -6
  310. package/dist/src/shell/PropRows.d.ts +23 -2
  311. package/dist/src/shell/PropRows.js +58 -19
  312. package/dist/src/shell/PropsTab.d.ts +12 -5
  313. package/dist/src/shell/PropsTab.js +9 -21
  314. package/dist/src/shell/RefStoryPage.d.ts +33 -0
  315. package/dist/src/shell/RefStoryPage.js +123 -0
  316. package/dist/src/shell/SearchPanel.js +51 -24
  317. package/dist/src/shell/Shell.d.ts +18 -0
  318. package/dist/src/shell/Shell.js +137 -22
  319. package/dist/src/shell/ShortcutHelp.d.ts +22 -0
  320. package/dist/src/shell/ShortcutHelp.js +66 -0
  321. package/dist/src/shell/Sidebar.d.ts +17 -4
  322. package/dist/src/shell/Sidebar.js +92 -41
  323. package/dist/src/shell/SidebarDocs.js +2 -2
  324. package/dist/src/shell/SidebarEntries.js +5 -3
  325. package/dist/src/shell/SidebarHandle.d.ts +3 -5
  326. package/dist/src/shell/SidebarHandle.js +4 -4
  327. package/dist/src/shell/SidebarRefs.d.ts +39 -0
  328. package/dist/src/shell/SidebarRefs.js +99 -0
  329. package/dist/src/shell/SidebarSearch.js +37 -9
  330. package/dist/src/shell/SignatureReference.js +3 -1
  331. package/dist/src/shell/Stage.d.ts +10 -2
  332. package/dist/src/shell/Stage.js +35 -60
  333. package/dist/src/shell/StatusBadges.d.ts +54 -0
  334. package/dist/src/shell/StatusBadges.js +77 -0
  335. package/dist/src/shell/StoryCodeBlock.d.ts +8 -19
  336. package/dist/src/shell/StoryCodeBlock.js +7 -6
  337. package/dist/src/shell/SwitchGallery.d.ts +36 -0
  338. package/dist/src/shell/SwitchGallery.js +17 -0
  339. package/dist/src/shell/SwitchGalleryPanel.d.ts +37 -0
  340. package/dist/src/shell/SwitchGalleryPanel.js +99 -0
  341. package/dist/src/shell/TagFilter.d.ts +24 -0
  342. package/dist/src/shell/TagFilter.js +45 -0
  343. package/dist/src/shell/TagViews.d.ts +39 -0
  344. package/dist/src/shell/TagViews.js +20 -0
  345. package/dist/src/shell/Toolbar.d.ts +4 -1
  346. package/dist/src/shell/Toolbar.js +17 -7
  347. package/dist/src/shell/ToolbarControl.d.ts +3 -0
  348. package/dist/src/shell/ToolbarControl.js +23 -6
  349. package/dist/src/shell/ViewMenuPanel.js +6 -1
  350. package/dist/src/shell/argChecks.d.ts +22 -0
  351. package/dist/src/shell/argChecks.js +20 -0
  352. package/dist/src/shell/asideStory.d.ts +17 -4
  353. package/dist/src/shell/asideStory.js +21 -4
  354. package/dist/src/shell/audienceSections.css +9 -9
  355. package/dist/src/shell/catalogueContext.d.ts +1 -1
  356. package/dist/src/shell/catalogueContext.js +6 -1
  357. package/dist/src/shell/codeSpans.d.ts +27 -0
  358. package/dist/src/shell/codeSpans.js +76 -0
  359. package/dist/src/shell/compareVariants.d.ts +4 -2
  360. package/dist/src/shell/compareVariants.js +16 -8
  361. package/dist/src/shell/composition.d.ts +23 -0
  362. package/dist/src/shell/composition.js +26 -0
  363. package/dist/src/shell/controlCycle.d.ts +1 -1
  364. package/dist/src/shell/controlCycle.js +3 -2
  365. package/dist/src/shell/customControls.d.ts +55 -0
  366. package/dist/src/shell/customControls.js +70 -0
  367. package/dist/src/shell/docPage.css +22 -22
  368. package/dist/src/shell/dockTabs.d.ts +19 -3
  369. package/dist/src/shell/dockTabs.js +28 -20
  370. package/dist/src/shell/embed.css +7 -7
  371. package/dist/src/shell/framesOrigin.d.ts +7 -0
  372. package/dist/src/shell/framesOrigin.js +1 -1
  373. package/dist/src/shell/galleryPlace.d.ts +20 -0
  374. package/dist/src/shell/galleryPlace.js +26 -0
  375. package/dist/src/shell/icons.d.ts +1 -0
  376. package/dist/src/shell/icons.js +1 -0
  377. package/dist/src/shell/keyboard.d.ts +14 -12
  378. package/dist/src/shell/keyboard.js +21 -6
  379. package/dist/src/shell/laterStrings.d.ts +29 -0
  380. package/dist/src/shell/laterStrings.js +42 -3
  381. package/dist/src/shell/mountShell.js +3 -0
  382. package/dist/src/shell/pageStrings.d.ts +4 -0
  383. package/dist/src/shell/pageStrings.js +4 -0
  384. package/dist/src/shell/pageTagView.d.ts +18 -0
  385. package/dist/src/shell/pageTagView.js +10 -0
  386. package/dist/src/shell/playMemory.d.ts +14 -0
  387. package/dist/src/shell/playMemory.js +8 -0
  388. package/dist/src/shell/propNotes.d.ts +23 -0
  389. package/dist/src/shell/propNotes.js +37 -0
  390. package/dist/src/shell/refIndexLoad.d.ts +17 -0
  391. package/dist/src/shell/refIndexLoad.js +38 -0
  392. package/dist/src/shell/refParts.d.ts +34 -0
  393. package/dist/src/shell/refParts.js +9 -0
  394. package/dist/src/shell/refStory.css +21 -0
  395. package/dist/src/shell/refStrings.d.ts +13 -0
  396. package/dist/src/shell/refStrings.js +21 -0
  397. package/dist/src/shell/search.css +11 -11
  398. package/dist/src/shell/shell.css +348 -168
  399. package/dist/src/shell/shellScheme.js +2 -2
  400. package/dist/src/shell/shortcutHelp.css +64 -0
  401. package/dist/src/shell/stageArgs.d.ts +53 -0
  402. package/dist/src/shell/stageArgs.js +64 -0
  403. package/dist/src/shell/statusBadges.css +51 -0
  404. package/dist/src/shell/strings.d.ts +7 -16
  405. package/dist/src/shell/strings.js +12 -17
  406. package/dist/src/shell/switchGallery.css +104 -0
  407. package/dist/src/shell/tagFilter.css +46 -0
  408. package/dist/src/shell/tagView.d.ts +20 -0
  409. package/dist/src/shell/tagView.js +10 -0
  410. package/dist/src/shell/useAddressArgs.d.ts +27 -2
  411. package/dist/src/shell/useAddressArgs.js +71 -14
  412. package/dist/src/shell/useControlKeys.js +2 -2
  413. package/dist/src/shell/useEditedProblems.d.ts +6 -0
  414. package/dist/src/shell/useEditedProblems.js +40 -0
  415. package/dist/src/shell/useFrameMessages.js +3 -0
  416. package/dist/src/shell/useListedTree.d.ts +13 -0
  417. package/dist/src/shell/useListedTree.js +32 -0
  418. package/dist/src/shell/usePageFrames.js +2 -2
  419. package/dist/src/shell/usePopover.d.ts +5 -0
  420. package/dist/src/shell/usePopover.js +7 -1
  421. package/dist/src/shell/useRefIndex.d.ts +22 -0
  422. package/dist/src/shell/useRefIndex.js +36 -0
  423. package/dist/src/shell/useScrollStops.d.ts +20 -0
  424. package/dist/src/shell/useScrollStops.js +41 -0
  425. package/dist/src/shell/useShortcutHelp.d.ts +18 -0
  426. package/dist/src/shell/useShortcutHelp.js +32 -0
  427. package/dist/src/shell/useSidebarOverlay.d.ts +2 -1
  428. package/dist/src/shell/useSidebarOverlay.js +12 -4
  429. package/dist/src/shell/useStoryCode.d.ts +2 -1
  430. package/dist/src/shell/useStoryCode.js +12 -7
  431. package/dist/src/shell/useToolbarLayout.d.ts +5 -1
  432. package/dist/src/shell/useToolbarLayout.js +2 -2
  433. package/dist/src/shell/useWorstCase.d.ts +8 -2
  434. package/dist/src/shell/useWorstCase.js +2 -2
  435. package/dist/src/shell/valueEditors/FileEditor.d.ts +28 -0
  436. package/dist/src/shell/valueEditors/FileEditor.js +66 -0
  437. package/dist/src/shell/valueEditors/JsonEditor.d.ts +14 -0
  438. package/dist/src/shell/valueEditors/JsonEditor.js +53 -0
  439. package/dist/src/shell/valueEditors/ListEditor.d.ts +24 -0
  440. package/dist/src/shell/valueEditors/ListEditor.js +82 -0
  441. package/dist/src/shell/valueEditors/ObjectEditor.d.ts +32 -0
  442. package/dist/src/shell/valueEditors/ObjectEditor.js +70 -0
  443. package/dist/src/shell/valueEditors/PropEditor.d.ts +37 -0
  444. package/dist/src/shell/valueEditors/PropEditor.js +53 -0
  445. package/dist/src/shell/valueEditors/RecordEditor.d.ts +20 -0
  446. package/dist/src/shell/valueEditors/RecordEditor.js +84 -0
  447. package/dist/src/shell/valueEditors/SearchSelect.d.ts +42 -0
  448. package/dist/src/shell/valueEditors/SearchSelect.js +80 -0
  449. package/dist/src/shell/valueEditors/TokenEditor.d.ts +49 -0
  450. package/dist/src/shell/valueEditors/TokenEditor.js +74 -0
  451. package/dist/src/shell/valueEditors/UnionEditor.d.ts +20 -0
  452. package/dist/src/shell/valueEditors/UnionEditor.js +64 -0
  453. package/dist/src/shell/valueEditors/ValueField.d.ts +15 -0
  454. package/dist/src/shell/valueEditors/ValueField.js +147 -0
  455. package/dist/src/shell/valueEditors/editorStrings.d.ts +56 -0
  456. package/dist/src/shell/valueEditors/editorStrings.js +66 -0
  457. package/dist/src/shell/valueEditors/fieldTypes.d.ts +31 -0
  458. package/dist/src/shell/valueEditors/fieldTypes.js +0 -0
  459. package/dist/src/shell/valueEditors/valueEditors.css +153 -0
  460. package/dist/src/shell/worstArgs.d.ts +8 -5
  461. package/dist/src/shell/worstArgs.js +14 -7
  462. package/dist/src/shellTheme.d.ts +1 -1
  463. package/dist/src/shellTheme.js +15 -1
  464. package/dist/src/shellTheme.types.d.ts +4 -0
  465. package/dist/src/shellWord.d.ts +12 -0
  466. package/dist/src/shellWord.js +15 -0
  467. package/dist/src/sourceFiles.js +2 -1
  468. package/dist/src/storyArgTypes.d.ts +57 -0
  469. package/dist/src/storyArgTypes.js +195 -0
  470. package/dist/src/storyBackground.js +14 -3
  471. package/dist/src/storyCheck.d.ts +85 -3
  472. package/dist/src/storyCheck.js +23 -1
  473. package/dist/src/storyCodeText.d.ts +46 -0
  474. package/dist/src/storyCodeText.js +27 -0
  475. package/dist/src/storyControls.d.ts +100 -0
  476. package/dist/src/storyControls.js +100 -0
  477. package/dist/src/storyStatuses.d.ts +55 -0
  478. package/dist/src/storyStatuses.js +104 -0
  479. package/dist/src/storyTagNames.d.ts +25 -0
  480. package/dist/src/storyTagNames.js +25 -0
  481. package/dist/src/storyTags.d.ts +29 -0
  482. package/dist/src/storyTags.js +85 -0
  483. package/dist/src/storyTree.d.ts +13 -0
  484. package/dist/src/storyTree.js +24 -4
  485. package/dist/src/storybookArgs.d.ts +24 -0
  486. package/dist/src/storybookArgs.js +185 -0
  487. package/dist/src/switches.d.ts +66 -3
  488. package/dist/src/switches.js +42 -1
  489. package/dist/src/valueSchema.d.ts +28 -0
  490. package/dist/src/valueSchema.js +196 -0
  491. package/dist/src/valueShape.d.ts +94 -0
  492. package/dist/src/valueShape.js +25 -0
  493. package/dist/src/viewState.d.ts +8 -3
  494. package/dist/src/viewState.js +27 -10
  495. package/dist/src/vite/adapter.d.ts +40 -2
  496. package/dist/src/vite/adapter.js +1 -0
  497. package/dist/src/vite/agent.types.d.ts +347 -7
  498. package/dist/src/vite/agentApi.d.ts +23 -0
  499. package/dist/src/vite/agentApi.js +90 -17
  500. package/dist/src/vite/agentIndex.d.ts +0 -2
  501. package/dist/src/vite/agentIndex.js +5 -6
  502. package/dist/src/vite/agentRoutes.d.ts +20 -1
  503. package/dist/src/vite/agentRoutes.js +106 -65
  504. package/dist/src/vite/agentStatuses.d.ts +42 -0
  505. package/dist/src/vite/agentStatuses.js +67 -0
  506. package/dist/src/vite/agentStoryCode.d.ts +48 -0
  507. package/dist/src/vite/agentStoryCode.js +38 -0
  508. package/dist/src/vite/agentVisibility.d.ts +47 -0
  509. package/dist/src/vite/agentVisibility.js +174 -0
  510. package/dist/src/vite/appAudit.d.ts +134 -0
  511. package/dist/src/vite/appAudit.js +333 -0
  512. package/dist/src/vite/appBuildOption.d.ts +53 -0
  513. package/dist/src/vite/appBuildOption.js +55 -0
  514. package/dist/src/vite/appTokenFiles.d.ts +92 -0
  515. package/dist/src/vite/appTokenFiles.js +433 -0
  516. package/dist/src/vite/appTokens.d.ts +23 -0
  517. package/dist/src/vite/appTokens.js +275 -0
  518. package/dist/src/vite/builtTexts.d.ts +10 -0
  519. package/dist/src/vite/builtTexts.js +59 -22
  520. package/dist/src/vite/catalogueConfig.d.ts +3 -1
  521. package/dist/src/vite/catalogueConfig.js +15 -3
  522. package/dist/src/vite/changeCoverage.d.ts +74 -0
  523. package/dist/src/vite/changeCoverage.js +120 -0
  524. package/dist/src/vite/changedRoute.d.ts +30 -0
  525. package/dist/src/vite/changedRoute.js +197 -0
  526. package/dist/src/vite/checkCode.d.ts +105 -3
  527. package/dist/src/vite/checkCode.js +323 -36
  528. package/dist/src/vite/checkoutWatch.d.ts +97 -0
  529. package/dist/src/vite/checkoutWatch.js +287 -0
  530. package/dist/src/vite/closeWatch.d.ts +8 -0
  531. package/dist/src/vite/closeWatch.js +1 -1
  532. package/dist/src/vite/componentCache.d.ts +8 -0
  533. package/dist/src/vite/componentCache.js +66 -0
  534. package/dist/src/vite/componentGraph.d.ts +71 -0
  535. package/dist/src/vite/componentGraph.js +133 -0
  536. package/dist/src/vite/componentRules.d.ts +33 -0
  537. package/dist/src/vite/componentRules.js +105 -0
  538. package/dist/src/vite/componentScan.d.ts +69 -0
  539. package/dist/src/vite/componentScan.js +418 -0
  540. package/dist/src/vite/compositionCheck.d.ts +15 -0
  541. package/dist/src/vite/compositionCheck.js +243 -0
  542. package/dist/src/vite/config.d.ts +32 -1
  543. package/dist/src/vite/configFile.d.ts +14 -2
  544. package/dist/src/vite/configFile.js +124 -40
  545. package/dist/src/vite/configKeys.d.ts +15 -0
  546. package/dist/src/vite/configKeys.js +171 -0
  547. package/dist/src/vite/configLoadError.d.ts +23 -0
  548. package/dist/src/vite/configLoadError.js +71 -0
  549. package/dist/src/vite/cssDeclarations.d.ts +71 -0
  550. package/dist/src/vite/cssDeclarations.js +290 -0
  551. package/dist/src/vite/cssImports.d.ts +14 -0
  552. package/dist/src/vite/cssImports.js +48 -0
  553. package/dist/src/vite/cssReferences.d.ts +54 -0
  554. package/dist/src/vite/cssReferences.js +157 -0
  555. package/dist/src/vite/cssTokenValues.d.ts +50 -0
  556. package/dist/src/vite/cssTokenValues.js +233 -0
  557. package/dist/src/vite/designTokens.d.ts +24 -0
  558. package/dist/src/vite/designTokens.js +5 -1
  559. package/dist/src/vite/docsExtractor.d.ts +9 -3
  560. package/dist/src/vite/docsExtractor.js +11 -3
  561. package/dist/src/vite/docsProgram.d.ts +17 -4
  562. package/dist/src/vite/docsProgram.js +52 -11
  563. package/dist/src/vite/docsWorker.js +7 -2
  564. package/dist/src/vite/emptyStoryGlobs.d.ts +41 -0
  565. package/dist/src/vite/emptyStoryGlobs.js +52 -0
  566. package/dist/src/vite/fileImports.d.ts +17 -0
  567. package/dist/src/vite/fileImports.js +57 -0
  568. package/dist/src/vite/findComponent.d.ts +10 -2
  569. package/dist/src/vite/findComponent.js +27 -22
  570. package/dist/src/vite/findRoute.js +3 -2
  571. package/dist/src/vite/forcedStates.d.ts +9 -2
  572. package/dist/src/vite/forcedStates.js +12 -3
  573. package/dist/src/vite/forgebookPlugin.d.ts +2 -0
  574. package/dist/src/vite/forgebookPlugin.js +52 -72
  575. package/dist/src/vite/frameErrors.d.ts +19 -0
  576. package/dist/src/vite/frameErrors.js +70 -0
  577. package/dist/src/vite/framesServer.d.ts +12 -0
  578. package/dist/src/vite/framesServer.js +21 -4
  579. package/dist/src/vite/functionComponentDocs.js +81 -12
  580. package/dist/src/vite/generatedModules.js +4 -2
  581. package/dist/src/vite/gitChange.d.ts +38 -5
  582. package/dist/src/vite/gitChange.js +71 -11
  583. package/dist/src/vite/hiddenStoryFiles.d.ts +23 -0
  584. package/dist/src/vite/hiddenStoryFiles.js +107 -0
  585. package/dist/src/vite/hotSnippets.d.ts +38 -14
  586. package/dist/src/vite/hotSnippets.js +137 -39
  587. package/dist/src/vite/importedNames.d.ts +37 -0
  588. package/dist/src/vite/importedNames.js +138 -0
  589. package/dist/src/vite/indexFields.d.ts +6 -0
  590. package/dist/src/vite/indexFields.js +21 -0
  591. package/dist/src/vite/indexStoryFile.d.ts +8 -1
  592. package/dist/src/vite/indexStoryFile.js +22 -157
  593. package/dist/src/vite/jsxCallSites.d.ts +33 -0
  594. package/dist/src/vite/jsxCallSites.js +200 -0
  595. package/dist/src/vite/jsxInScripts.d.ts +67 -0
  596. package/dist/src/vite/jsxInScripts.js +138 -0
  597. package/dist/src/vite/jsxTree.d.ts +20 -0
  598. package/dist/src/vite/jsxTree.js +163 -0
  599. package/dist/src/vite/lineAndColumn.d.ts +13 -0
  600. package/dist/src/vite/lineAndColumn.js +18 -0
  601. package/dist/src/vite/lookAlikes.d.ts +65 -0
  602. package/dist/src/vite/lookAlikes.js +228 -0
  603. package/dist/src/vite/nearestToken.d.ts +17 -0
  604. package/dist/src/vite/nearestToken.js +9 -2
  605. package/dist/src/vite/packageEntries.d.ts +42 -0
  606. package/dist/src/vite/packageEntries.js +127 -0
  607. package/dist/src/vite/pages.d.ts +9 -1
  608. package/dist/src/vite/pages.js +108 -4
  609. package/dist/src/vite/pluginConfig.js +4 -0
  610. package/dist/src/vite/pluginIds.d.ts +2 -0
  611. package/dist/src/vite/pluginIds.js +5 -1
  612. package/dist/src/vite/pluginModules.d.ts +81 -11
  613. package/dist/src/vite/pluginModules.js +109 -21
  614. package/dist/src/vite/prebundled.d.ts +57 -15
  615. package/dist/src/vite/prebundled.js +80 -0
  616. package/dist/src/vite/previewTags.d.ts +25 -0
  617. package/dist/src/vite/previewTags.js +56 -0
  618. package/dist/src/vite/projectFiles.d.ts +54 -0
  619. package/dist/src/vite/projectFiles.js +116 -0
  620. package/dist/src/vite/projectPostcss.d.ts +70 -0
  621. package/dist/src/vite/projectPostcss.js +250 -0
  622. package/dist/src/vite/propDocs.d.ts +12 -0
  623. package/dist/src/vite/propDocs.js +130 -58
  624. package/dist/src/vite/propKind.d.ts +40 -0
  625. package/dist/src/vite/propKind.js +71 -0
  626. package/dist/src/vite/propTypeNotes.d.ts +22 -0
  627. package/dist/src/vite/propTypeNotes.js +51 -0
  628. package/dist/src/vite/publishedExports.d.ts +27 -0
  629. package/dist/src/vite/publishedExports.js +298 -0
  630. package/dist/src/vite/realFolder.d.ts +6 -0
  631. package/dist/src/vite/realFolder.js +25 -0
  632. package/dist/src/vite/refsConfig.d.ts +39 -0
  633. package/dist/src/vite/refsConfig.js +54 -0
  634. package/dist/src/vite/reuseCheck.d.ts +45 -0
  635. package/dist/src/vite/reuseCheck.js +260 -0
  636. package/dist/src/vite/runningVersions.d.ts +33 -0
  637. package/dist/src/vite/runningVersions.js +25 -0
  638. package/dist/src/vite/scriptProblems.d.ts +60 -0
  639. package/dist/src/vite/scriptProblems.js +155 -0
  640. package/dist/src/vite/searchModule.js +3 -2
  641. package/dist/src/vite/searchRoute.js +4 -2
  642. package/dist/src/vite/shapeDocs.d.ts +36 -0
  643. package/dist/src/vite/shapeDocs.js +177 -0
  644. package/dist/src/vite/singleFileComponent.d.ts +17 -0
  645. package/dist/src/vite/singleFileComponent.js +83 -0
  646. package/dist/src/vite/sourceText.d.ts +34 -0
  647. package/dist/src/vite/sourceText.js +72 -0
  648. package/dist/src/vite/sourceTokens.d.ts +7 -0
  649. package/dist/src/vite/sourceTokens.js +7 -2
  650. package/dist/src/vite/stackLines.d.ts +49 -0
  651. package/dist/src/vite/stackLines.js +96 -0
  652. package/dist/src/vite/storyCode.d.ts +22 -7
  653. package/dist/src/vite/storyCode.js +263 -37
  654. package/dist/src/vite/storyCoverage.d.ts +48 -0
  655. package/dist/src/vite/storyCoverage.js +179 -0
  656. package/dist/src/vite/storyFilesModule.d.ts +48 -3
  657. package/dist/src/vite/storyFilesModule.js +105 -15
  658. package/dist/src/vite/storyPatterns.d.ts +31 -0
  659. package/dist/src/vite/storyPatterns.js +140 -5
  660. package/dist/src/vite/storyReach.d.ts +10 -2
  661. package/dist/src/vite/storyReach.js +15 -11
  662. package/dist/src/vite/storyTopLevel.d.ts +51 -0
  663. package/dist/src/vite/storyTopLevel.js +146 -0
  664. package/dist/src/vite/storylessRoutes.d.ts +4 -3
  665. package/dist/src/vite/storylessRoutes.js +210 -19
  666. package/dist/src/vite/switchValuesCheck.d.ts +19 -0
  667. package/dist/src/vite/switchValuesCheck.js +164 -0
  668. package/dist/src/vite/switchesDocument.d.ts +15 -0
  669. package/dist/src/vite/switchesDocument.js +47 -0
  670. package/dist/src/vite/tailwindConfigTokens.d.ts +41 -0
  671. package/dist/src/vite/tailwindConfigTokens.js +306 -0
  672. package/dist/src/vite/textImports.d.ts +15 -0
  673. package/dist/src/vite/textImports.js +58 -0
  674. package/dist/src/vite/textModules.d.ts +6 -5
  675. package/dist/src/vite/textModules.js +13 -8
  676. package/dist/src/vite/tokenAnswers.d.ts +6 -2
  677. package/dist/src/vite/tokenAnswers.js +11 -7
  678. package/dist/src/vite/typeParameters.d.ts +83 -0
  679. package/dist/src/vite/typeParameters.js +270 -0
  680. package/dist/src/vite/unionProps.d.ts +37 -0
  681. package/dist/src/vite/unionProps.js +121 -0
  682. package/dist/src/vite/unresolvedTokens.d.ts +20 -0
  683. package/dist/src/vite/unresolvedTokens.js +193 -0
  684. package/dist/src/vite/usageGraph.js +10 -52
  685. package/dist/src/vite/usageGuidance.d.ts +9 -2
  686. package/dist/src/vite/usageGuidance.js +36 -8
  687. package/dist/src/vite/usageImports.d.ts +35 -0
  688. package/dist/src/vite/usageImports.js +280 -0
  689. package/dist/src/vite/visibilityRoute.d.ts +16 -0
  690. package/dist/src/vite/visibilityRoute.js +320 -0
  691. package/dist/src/worstCase.d.ts +2 -0
  692. package/dist/src/worstCase.js +2 -0
  693. package/package.json +28 -8
@@ -0,0 +1,171 @@
1
+ /**
2
+ * The keys a catalogue's configuration and a library's preset may have, and what to say of one they may not.
3
+ *
4
+ * @remarks
5
+ * A configuration is code nobody type-checked against this version, and a misspelt key is otherwise read as a value left
6
+ * out: `toolbr: […]` gives the default toolbar, with no word of why. Nothing can add a key: an adapter's and a plugin's
7
+ * options are the arguments of their own functions (`react({ … })`, `figma({ … })`), and both reach the catalogue as one
8
+ * value of `framework` and `plugins`. So the lists are closed, and written as records of the types' own keys: a key added
9
+ * to a type without being added here does not compile.
10
+ *
11
+ * The objects read here by key (`build`, `appBuild`, `shell`, `a11y`, `backgrounds`, `widthRange`, `controls`) are checked one level
12
+ * down, and each of `refs` by its id. `tabs` is not, since a plugin adds to its names; a device's fields have their own check (`configFile.ts`), and a
13
+ * theme's values theirs (`shellTheme.ts`).
14
+ *
15
+ * @module
16
+ */
17
+ import { didYouMean } from "@ensiria/cli-kit/suggest";
18
+ import { OWN_CONTROL_IDS } from "../catalogue.js";
19
+ /** What a catalogue's configuration and a preset share. */
20
+ const LIST_KEYS = {
21
+ id: true,
22
+ widths: true,
23
+ widthRange: true,
24
+ zooms: true,
25
+ textSizes: true,
26
+ backgrounds: true,
27
+ storyGroups: true,
28
+ tabs: true,
29
+ a11y: true,
30
+ gridStep: true,
31
+ strings: true,
32
+ keys: true,
33
+ controls: true,
34
+ toolbar: true,
35
+ usedIn: true,
36
+ play: true,
37
+ componentDocs: true,
38
+ audience: true,
39
+ appearance: true,
40
+ propGroups: true,
41
+ requiredFirst: true,
42
+ views: true,
43
+ device: true,
44
+ statuses: true
45
+ };
46
+ /** A configuration's keys. */
47
+ const CONFIG_KEYS = {
48
+ ...LIST_KEYS,
49
+ framework: true,
50
+ title: true,
51
+ logo: true,
52
+ heights: true,
53
+ stories: true,
54
+ docs: true,
55
+ home: true,
56
+ sources: true,
57
+ switches: true,
58
+ languages: true,
59
+ shell: true,
60
+ tokens: true,
61
+ argControls: true,
62
+ preview: true,
63
+ head: true,
64
+ watch: true,
65
+ presets: true,
66
+ plugins: true,
67
+ frames: true,
68
+ build: true,
69
+ appBuild: true,
70
+ refs: true
71
+ };
72
+ /** A preset's keys. */
73
+ const PRESET_KEYS = {
74
+ ...LIST_KEYS,
75
+ name: true,
76
+ switches: true,
77
+ languages: true,
78
+ preview: true,
79
+ head: true,
80
+ shell: true
81
+ };
82
+ const BUILD_KEYS = { readableNames: true };
83
+ const APP_BUILD_KEYS = {
84
+ viteConfig: true,
85
+ tsconfigPaths: true,
86
+ postcss: true,
87
+ skipPlugins: true,
88
+ keepPlugins: true
89
+ };
90
+ const SHELL_KEYS = { theme: true, css: true, branding: true };
91
+ const REF_KEYS = { title: true, url: true };
92
+ const A11Y_KEYS = {
93
+ tags: true,
94
+ disabledRules: true
95
+ };
96
+ const BACKGROUND_KEYS = { builtIn: true, custom: true };
97
+ const WIDTH_RANGE_KEYS = { min: true, max: true };
98
+ /** What `controls` can turn off, Forgebook's own controls first. */
99
+ const TURNED_OFF_CONTROLS = [...OWN_CONTROL_IDS, "direction", "touch", "embed"];
100
+ /** The objects of a configuration or a preset whose keys are known too, by the key that holds them. */
101
+ const NESTED_KEYS = {
102
+ build: Object.keys(BUILD_KEYS),
103
+ appBuild: Object.keys(APP_BUILD_KEYS),
104
+ shell: Object.keys(SHELL_KEYS),
105
+ a11y: Object.keys(A11Y_KEYS),
106
+ backgrounds: Object.keys(BACKGROUND_KEYS),
107
+ widthRange: Object.keys(WIDTH_RANGE_KEYS),
108
+ controls: TURNED_OFF_CONTROLS
109
+ };
110
+ /**
111
+ * What to say of the keys of an object that are none of the known ones.
112
+ *
113
+ * @param value - the object.
114
+ * @param known - its keys.
115
+ * @param prefix - where it is, written before a key's name (`build.`); empty at the top.
116
+ */
117
+ const unknownKeys = (value, known, prefix) => Object.keys(value)
118
+ .filter((key) => !known.includes(key))
119
+ .map((key) => {
120
+ const named = didYouMean(key, known).trim();
121
+ return `it has no key "${prefix}${key}". ${named === "" ? `It takes ${known.join(", ")}.` : named}`;
122
+ });
123
+ /** Whether a value is an object that is not a list. */
124
+ const isObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
125
+ /**
126
+ * What to say of the keys of each composed catalogue, which `refs` holds by id.
127
+ *
128
+ * @param refs - the configuration's `refs`.
129
+ */
130
+ const refsKeysProblems = (refs) => isObject(refs)
131
+ ? Object.entries(refs).flatMap(([id, ref]) => isObject(ref) ? unknownKeys(ref, Object.keys(REF_KEYS), `refs.${id}.`) : [])
132
+ : [];
133
+ /**
134
+ * What to say of the keys of a configuration or a preset, one level down included.
135
+ *
136
+ * @param value - the object.
137
+ * @param known - its keys.
138
+ */
139
+ const keysProblems = (value, known) => [
140
+ ...unknownKeys(value, known, ""),
141
+ ...Object.entries(NESTED_KEYS).flatMap(([key, keys]) => {
142
+ const nested = Reflect.get(value, key);
143
+ return isObject(nested) ? unknownKeys(nested, keys, `${key}.`) : [];
144
+ }),
145
+ ...refsKeysProblems(Reflect.get(value, "refs"))
146
+ ];
147
+ /**
148
+ * Why a loaded configuration holds a key no version of it reads, its presets' included, or none: every such key, so that
149
+ * one run shows them all.
150
+ *
151
+ * @param config - what the file exports by default.
152
+ */
153
+ export const unknownKeysProblem = (config) => {
154
+ const presets = Reflect.get(config, "presets");
155
+ const problems = [
156
+ ...keysProblems(config, Object.keys(CONFIG_KEYS)),
157
+ ...(Array.isArray(presets) ? presets : []).flatMap((preset) => {
158
+ if (typeof preset !== "object" || preset === null)
159
+ return [];
160
+ const name = Reflect.get(preset, "name");
161
+ return keysProblems(preset, Object.keys(PRESET_KEYS)).map((problem) => `its preset "${String(name)}": ${problem}`);
162
+ })
163
+ ];
164
+ return problems.length === 0 ? undefined : problems.join(" ");
165
+ };
166
+ /**
167
+ * Whether a configuration says it has no design system (`tokens: []`), which leaving the key out does not.
168
+ *
169
+ * @param config - the configuration.
170
+ */
171
+ export const saysNoTokens = ({ tokens }) => tokens?.length === 0;
@@ -0,0 +1,23 @@
1
+ /** Where a syntax error is. */
2
+ type ErrorPlace = {
3
+ /** The file, by absolute path. */
4
+ readonly file: string;
5
+ /** Its line, from 1. */
6
+ readonly line: number;
7
+ /** Its column, from 1. */
8
+ readonly column: number;
9
+ };
10
+ /**
11
+ * Where Node's stack says a syntax error is, when it says.
12
+ *
13
+ * @param stack - the error's stack.
14
+ */
15
+ export declare const placeInStack: (stack: string) => ErrorPlace | undefined;
16
+ /**
17
+ * The message for a configuration file that did not load.
18
+ *
19
+ * @param file - the configuration file, by absolute path.
20
+ * @param error - what its import threw.
21
+ */
22
+ export declare const configLoadMessage: (file: string, error: unknown) => Promise<string>;
23
+ export {};
@@ -0,0 +1,71 @@
1
+ /**
2
+ * What to say when a configuration file does not load: the file, and for a syntax error its line and column, in the form
3
+ * editors and terminals open (`/path/forgebook.config.ts:3:3: …`).
4
+ *
5
+ * @remarks
6
+ * Node names the place of a syntax error in TypeScript in the error's stack: the file and line, then the source with
7
+ * carets under the mistake, for whichever file was at fault, which may be one the configuration imports. For JavaScript
8
+ * it says nothing (the place is printed only when the process dies of it), so the file is read again with the TypeScript
9
+ * parser, loaded only here since a configuration that loads never needs it. That finds a mistake in the configuration
10
+ * itself; one in a JavaScript file it imports keeps Node's message under the configuration's name.
11
+ *
12
+ * @module
13
+ */
14
+ import { readFileSync } from "node:fs";
15
+ import { fileURLToPath } from "node:url";
16
+ /** The first line of a stack Node decorated with the source: the file, by address or by path, and the line. */
17
+ const STACK_HEAD = /^(file:\/\/.+|\/.+|[A-Za-z]:\\.+):(\d+)$/;
18
+ /** The line under the source that points at the mistake. */
19
+ const CARETS = /^(\s*)\^+\s*$/;
20
+ /**
21
+ * Where Node's stack says a syntax error is, when it says.
22
+ *
23
+ * @param stack - the error's stack.
24
+ */
25
+ export const placeInStack = (stack) => {
26
+ const lines = stack.split("\n");
27
+ const head = STACK_HEAD.exec(lines[0] ?? "");
28
+ const named = head?.[1];
29
+ const line = head?.[2];
30
+ if (named === undefined || line === undefined)
31
+ return undefined;
32
+ const carets = lines.map((each) => CARETS.exec(each)).find((match) => match !== null);
33
+ return {
34
+ file: named.startsWith("file://") ? fileURLToPath(named) : named,
35
+ line: Number(line),
36
+ column: (carets?.[1]?.length ?? 0) + 1
37
+ };
38
+ };
39
+ /**
40
+ * Where the TypeScript parser finds the first syntax error of a file, when it finds one.
41
+ *
42
+ * @param file - the file, by absolute path.
43
+ */
44
+ const placeInFile = async (file) => {
45
+ const { default: ts } = await import("typescript-6");
46
+ const { diagnostics = [] } = ts.transpileModule(readFileSync(file, "utf8"), {
47
+ fileName: file,
48
+ reportDiagnostics: true,
49
+ compilerOptions: { target: ts.ScriptTarget.ESNext, module: ts.ModuleKind.ESNext }
50
+ });
51
+ const first = diagnostics.find((each) => each.file !== undefined && each.start !== undefined);
52
+ if (first?.file === undefined || first.start === undefined)
53
+ return undefined;
54
+ const { line, character } = first.file.getLineAndCharacterOfPosition(first.start);
55
+ return { file, line: line + 1, column: character + 1 };
56
+ };
57
+ /**
58
+ * The message for a configuration file that did not load.
59
+ *
60
+ * @param file - the configuration file, by absolute path.
61
+ * @param error - what its import threw.
62
+ */
63
+ export const configLoadMessage = async (file, error) => {
64
+ const message = error instanceof Error ? error.message : String(error);
65
+ if (!(error instanceof SyntaxError))
66
+ return `${file}: it did not load: ${message}`;
67
+ const place = placeInStack(error.stack ?? "") ?? (await placeInFile(file).catch(() => undefined));
68
+ return place === undefined
69
+ ? `${file}: ${message}`
70
+ : `${place.file}:${place.line}:${place.column}: ${message}`;
71
+ };
@@ -0,0 +1,71 @@
1
+ /**
2
+ * The custom properties a style sheet declares, with where each stands, and the statements that lead to other sheets.
3
+ *
4
+ * @remarks
5
+ * Pure, and a scanner of its own rather than a CSS parser: the sheets that hold a project's system are as often Sass or
6
+ * Less as CSS, and they hold at-rules a CSS parser refuses (`@theme`, `@apply`, `@mixin`). All this needs is the nesting
7
+ * and the declarations, which every one of those languages writes alike. A value is kept as written: what it comes to
8
+ * depends on every other sheet, so `cssTokenValues.ts` works it out once all are read.
9
+ *
10
+ * @module
11
+ */
12
+ /** Where a declaration stands, as far as a design system goes. */
13
+ export type CssPlace =
14
+ /** On the document (`:root`, `html`, `:host`), so anything can read it. */
15
+ {
16
+ readonly kind: "root";
17
+ }
18
+ /** In Tailwind's `@theme`, which makes utilities of it. */
19
+ | {
20
+ readonly kind: "theme";
21
+ }
22
+ /** Applied by a theme (`.dark`, `[data-theme="x"]`, a colour-scheme query). */
23
+ | {
24
+ readonly kind: "mode";
25
+ readonly mode: string;
26
+ }
27
+ /**
28
+ * On one selector, which may be a component's own variables or a system's root: how many it holds tells. A theme may
29
+ * apply over it (`.app.dark`, `.app { &.dark { … } }`).
30
+ */
31
+ | {
32
+ readonly kind: "selector";
33
+ readonly selector: string;
34
+ readonly mode?: string;
35
+ }
36
+ /** Inside something that applies only sometimes (a width query, an animation): not a token's value. */
37
+ | {
38
+ readonly kind: "conditional";
39
+ };
40
+ /** A custom property a sheet declares. */
41
+ export type CssDeclaration = {
42
+ /** Its name, with its dashes. */
43
+ readonly name: string;
44
+ /** Its value, as written. */
45
+ readonly value: string;
46
+ /** Its line, from 1. */
47
+ readonly line: number;
48
+ /** Where it stands. */
49
+ readonly place: CssPlace;
50
+ };
51
+ /** What a sheet holds. */
52
+ export type CssReading = {
53
+ /** Its custom properties, in order. */
54
+ readonly declarations: readonly CssDeclaration[];
55
+ /** What its `@import`s name, as written. */
56
+ readonly imports: readonly string[];
57
+ /** What its `@config`s name, as written: Tailwind's configuration files. */
58
+ readonly configs: readonly string[];
59
+ /** What its `@plugin`s name: their tokens cannot be known without running them. */
60
+ readonly plugins: readonly string[];
61
+ /** Whether it brings in Tailwind's default theme. */
62
+ readonly importsTailwindTheme: boolean;
63
+ /** Whether it uses Tailwind's older directives, which mean a configuration file and not `@theme`. */
64
+ readonly usesTailwindDirectives: boolean;
65
+ };
66
+ /**
67
+ * Reads a sheet.
68
+ *
69
+ * @param text - the sheet's text: CSS, Sass or Less.
70
+ */
71
+ export declare const readCssText: (text: string) => CssReading;
@@ -0,0 +1,290 @@
1
+ /**
2
+ * The custom properties a style sheet declares, with where each stands, and the statements that lead to other sheets.
3
+ *
4
+ * @remarks
5
+ * Pure, and a scanner of its own rather than a CSS parser: the sheets that hold a project's system are as often Sass or
6
+ * Less as CSS, and they hold at-rules a CSS parser refuses (`@theme`, `@apply`, `@mixin`). All this needs is the nesting
7
+ * and the declarations, which every one of those languages writes alike. A value is kept as written: what it comes to
8
+ * depends on every other sheet, so `cssTokenValues.ts` works it out once all are read.
9
+ *
10
+ * @module
11
+ */
12
+ /** A class or an attribute's value that names the dark or the light theme, not one that only ends like it (`btn-light`). */
13
+ const MODE_NAME = /^(?:[\w-]*(?:theme|mode)[-_]+)?(dark|light)(?:[-_]+(?:mode|theme))?$/i;
14
+ /** A theme named in a class or an attribute. */
15
+ const NAMED_THEME = /(?:\.theme[-_]+|\[data-(?:theme|mode|color-mode|color-scheme)[~|^$*]?=["']?)([\w-]+)/i;
16
+ /** A class or an attribute in a selector. */
17
+ const SIMPLE_SELECTOR = /\.[\w-]+|\[[^\]]+\]/g;
18
+ /** The way a theme goes without a class. */
19
+ const COLOR_SCHEME_QUERY = /prefers-color-scheme:\s*(dark|light)/i;
20
+ /** A `@variant` naming a theme, inside a selector or `@theme`. */
21
+ const VARIANT_RULE = /^@variant\s+(dark|light)\b/i;
22
+ /** At-rules whose contents hold in every case. */
23
+ const TRANSPARENT_RULE = /^@(?:layer|supports|container\s+style)\b/;
24
+ /** What Tailwind's `@import` names. */
25
+ const TAILWIND_THEME_IMPORT = /^(?:tailwindcss|tailwindcss\/theme(?:\.css)?)$/;
26
+ /** The older directives. */
27
+ const TAILWIND_DIRECTIVE = /^@tailwind\s+(?:base|components|utilities)\b/;
28
+ /** A quoted or `url()` path after an at-rule's name. */
29
+ const QUOTED_PATH = /^@[\w-]+\s+(?:\([^)]*\)\s*)?(?:url\(\s*)?["']?([^"')\s;,]+)/;
30
+ /** A selector list's parts, not splitting inside parentheses or brackets. */
31
+ const selectorParts = (selector) => {
32
+ const parts = [];
33
+ let depth = 0;
34
+ let current = "";
35
+ for (const character of selector) {
36
+ if (character === "(" || character === "[")
37
+ depth += 1;
38
+ if (character === ")" || character === "]")
39
+ depth -= 1;
40
+ if (character === "," && depth === 0) {
41
+ parts.push(current.trim());
42
+ current = "";
43
+ }
44
+ else
45
+ current += character;
46
+ }
47
+ parts.push(current.trim());
48
+ return parts.filter((part) => part !== "");
49
+ };
50
+ /** A selector with `:is()` and `:where()` taken off and what stands for the document or the parent dropped. */
51
+ const plainPart = (part) => part
52
+ .replace(/:(?:is|where)\(([^()]*)\)/g, "$1")
53
+ .replace(/^(?:&|:root|html|body|:host)(?=[.[:]|$)/, "")
54
+ .trim();
55
+ /** The theme a `:not()` means: the opposite of the one it leaves out. */
56
+ const modeOfNot = (part) => {
57
+ const left = /:not\(([^()]*)\)/.exec(part)?.[1];
58
+ const word = left === undefined ? undefined : MODE_NAME.exec(left.replace(/^[.[]/, ""))?.[1]?.toLowerCase();
59
+ if (word === undefined)
60
+ return undefined;
61
+ return word === "dark" ? "light" : "dark";
62
+ };
63
+ /** The theme a class or an attribute names. */
64
+ const modeOfName = (name) => (MODE_NAME.exec(name)?.[1] ?? NAMED_THEME.exec(`.${name}`)?.[1])?.toLowerCase();
65
+ /** What one selector says: `.dark .card` is that card's variables in a theme, so a descendant names no theme. */
66
+ const partMeaning = (written) => {
67
+ const part = plainPart(written);
68
+ if (part === "")
69
+ return { isRoot: true };
70
+ if (/\s|>|~|\+/.test(part))
71
+ return { selector: written };
72
+ const not = modeOfNot(part);
73
+ if (not !== undefined)
74
+ return { mode: not };
75
+ const simple = [...part.matchAll(SIMPLE_SELECTOR)].map((match) => match[0]);
76
+ const named = simple.map((each) => {
77
+ const attribute = NAMED_THEME.exec(each)?.[1] ?? /=["']?([\w-]+)/.exec(each)?.[1];
78
+ return attribute === undefined ? modeOfName(each.slice(1)) : attribute.toLowerCase();
79
+ });
80
+ const mode = named.find((each) => each !== undefined);
81
+ if (mode === undefined)
82
+ return { selector: written };
83
+ const others = simple.filter((_, index) => named[index] === undefined);
84
+ return others.length === 0 ? { mode } : { mode, selector: others.join("") };
85
+ };
86
+ /** What one block says, from its text. */
87
+ const meaningOf = (block) => {
88
+ const themed = COLOR_SCHEME_QUERY.exec(block)?.[1] ?? VARIANT_RULE.exec(block)?.[1];
89
+ if (themed !== undefined)
90
+ return { mode: themed.toLowerCase() };
91
+ if (block.startsWith("@theme"))
92
+ return { isTheme: true };
93
+ if (TRANSPARENT_RULE.test(block))
94
+ return {};
95
+ if (block.startsWith("@"))
96
+ return { isConditional: true };
97
+ const parts = selectorParts(block).map(partMeaning);
98
+ // `:root, .light` is the base written out, which a theme overrides
99
+ if (parts.some((part) => part.isRoot === true))
100
+ return {};
101
+ const mode = parts.find((part) => part.mode !== undefined)?.mode;
102
+ const selector = parts.some((part) => part.mode === undefined) ? block : parts[0]?.selector;
103
+ return { ...(mode === undefined ? {} : { mode }), ...(selector === undefined ? {} : { selector }) };
104
+ };
105
+ /** Where a declaration stands, under what the blocks it is inside mean, outermost first. */
106
+ const placeOf = (meanings) => {
107
+ if (meanings.some((each) => each.isConditional === true))
108
+ return { kind: "conditional" };
109
+ const mode = meanings.findLast((each) => each.mode !== undefined)?.mode;
110
+ const selector = meanings.find((each) => each.selector !== undefined)?.selector;
111
+ if (selector !== undefined) {
112
+ return { kind: "selector", selector, ...(mode === undefined ? {} : { mode }) };
113
+ }
114
+ if (mode !== undefined)
115
+ return { kind: "mode", mode };
116
+ return meanings.some((each) => each.isTheme === true) ? { kind: "theme" } : { kind: "root" };
117
+ };
118
+ /** Where a quote's text ends, past its closing quote. */
119
+ const afterString = (text, start) => {
120
+ const quote = text[start];
121
+ for (let index = start + 1; index < text.length; index += 1) {
122
+ if (text[index] === "\\")
123
+ index += 1;
124
+ else if (text[index] === quote || text[index] === "\n")
125
+ return index + 1;
126
+ }
127
+ return text.length;
128
+ };
129
+ /** Where a brace opened at a position closes, past it. */
130
+ const afterBlock = (text, start) => {
131
+ let depth = 0;
132
+ for (let index = start; index < text.length; index += 1) {
133
+ if (text[index] === "{")
134
+ depth += 1;
135
+ if (text[index] === "}")
136
+ depth -= 1;
137
+ if (depth === 0)
138
+ return index + 1;
139
+ }
140
+ return text.length;
141
+ };
142
+ /** Where a comment starting at a position ends, or the position when none starts there. */
143
+ const afterComment = (text, index) => {
144
+ if (text.startsWith("/*", index)) {
145
+ const end = text.indexOf("*/", index + 2);
146
+ return end === -1 ? text.length : end + 2;
147
+ }
148
+ // a line comment in Sass and Less, also inside a map's parentheses; after a colon or `url(` it is an address
149
+ const isLineComment = text.startsWith("//", index) && text[index - 1] !== ":" && text[index - 1] !== "(";
150
+ return isLineComment ? text.indexOf("\n", index) + 1 || text.length : index;
151
+ };
152
+ /** How far into parentheses a character leaves a run of text. */
153
+ const parenthesesAfter = (character, depth) => {
154
+ if (character === "(")
155
+ return depth + 1;
156
+ return character === ")" ? Math.max(0, depth - 1) : depth;
157
+ };
158
+ /** A sheet with its comments blanked and every newline kept, so an offset still gives a line. */
159
+ const withoutComments = (text) => {
160
+ let out = "";
161
+ let index = 0;
162
+ while (index < text.length) {
163
+ const end = afterComment(text, index);
164
+ if (end !== index) {
165
+ out += text.slice(index, end).replace(/[^\n]/g, " ");
166
+ index = end;
167
+ }
168
+ else if (text[index] === '"' || text[index] === "'") {
169
+ const close = afterString(text, index);
170
+ out += text.slice(index, close);
171
+ index = close;
172
+ }
173
+ else {
174
+ out += text[index];
175
+ index += 1;
176
+ }
177
+ }
178
+ return out;
179
+ };
180
+ /** Where a run of text a brace must not end (a string, Sass's `#{…}`, a custom property's block) ends, or the start. */
181
+ const afterOpaque = (text, index, statement) => {
182
+ const character = text[index];
183
+ if (character === '"' || character === "'")
184
+ return afterString(text, index);
185
+ if (character === "#" && text[index + 1] === "{")
186
+ return afterBlock(text, index + 1);
187
+ return character === "{" && statement.trimStart().startsWith("--") ? afterBlock(text, index) : index;
188
+ };
189
+ /** A sheet with no comments as its blocks and statements. */
190
+ const sheetParts = (text) => {
191
+ const parts = [];
192
+ let statement = "";
193
+ let start = 0;
194
+ let depth = 0;
195
+ const finish = () => {
196
+ if (statement.trim() !== "")
197
+ parts.push({ kind: "statement", text: statement.trim(), start });
198
+ statement = "";
199
+ };
200
+ const structure = (character) => {
201
+ if (character === "{") {
202
+ parts.push({ kind: "open", prelude: statement.trim().replace(/\s+/g, " ") });
203
+ statement = "";
204
+ return;
205
+ }
206
+ finish();
207
+ if (character === "}")
208
+ parts.push({ kind: "close" });
209
+ };
210
+ for (let index = 0; index < text.length; index += 1) {
211
+ const character = text[index] ?? "";
212
+ const end = afterOpaque(text, index, statement);
213
+ if (statement === "")
214
+ start = index;
215
+ if (end !== index) {
216
+ statement += text.slice(index, end);
217
+ index = end - 1;
218
+ }
219
+ else if (depth === 0 && "{};".includes(character)) {
220
+ structure(character);
221
+ }
222
+ else {
223
+ depth = parenthesesAfter(character, depth);
224
+ // what comes before a statement is not part of it, and its first character gives its line
225
+ if (statement !== "" || !/\s/.test(character))
226
+ statement += character;
227
+ }
228
+ }
229
+ finish();
230
+ return parts;
231
+ };
232
+ /** The value of a declaration, with no `!important` and its spacing made plain. */
233
+ const declaredValue = (written) => {
234
+ const text = written.trim();
235
+ const flag = "!important";
236
+ const plain = text.endsWith(flag) ? text.slice(0, -flag.length) : text;
237
+ return plain.split(/\s+/).join(" ").trim();
238
+ };
239
+ /** The path an at-rule of a name holds, when the statement is that rule. */
240
+ const pathOfRule = (written, rule) => {
241
+ if (!written.startsWith(rule))
242
+ return [];
243
+ const path = QUOTED_PATH.exec(written)?.[1];
244
+ return path === undefined ? [] : [path];
245
+ };
246
+ /**
247
+ * Reads a sheet.
248
+ *
249
+ * @param text - the sheet's text: CSS, Sass or Less.
250
+ */
251
+ export const readCssText = (text) => {
252
+ const plain = withoutComments(text);
253
+ const meanings = [];
254
+ const statements = [];
255
+ const declarations = [];
256
+ let counted = 0;
257
+ let line = 1;
258
+ const lineAt = (offset) => {
259
+ for (; counted < offset; counted += 1)
260
+ if (plain[counted] === "\n")
261
+ line += 1;
262
+ return line;
263
+ };
264
+ for (const part of sheetParts(plain)) {
265
+ if (part.kind === "open")
266
+ meanings.push(meaningOf(part.prelude));
267
+ else if (part.kind === "close")
268
+ meanings.pop();
269
+ else if (part.text.startsWith("--") && part.text.indexOf(":") > 0) {
270
+ const colon = part.text.indexOf(":");
271
+ declarations.push({
272
+ name: part.text.slice(0, colon).trim(),
273
+ value: declaredValue(part.text.slice(colon + 1)),
274
+ line: lineAt(part.start),
275
+ place: placeOf(meanings)
276
+ });
277
+ }
278
+ else
279
+ statements.push(part.text);
280
+ }
281
+ const imports = statements.flatMap((each) => ["@import", "@use", "@forward"].flatMap((rule) => pathOfRule(each, rule)));
282
+ return {
283
+ declarations,
284
+ imports,
285
+ configs: statements.flatMap((each) => pathOfRule(each, "@config")),
286
+ plugins: statements.flatMap((each) => pathOfRule(each, "@plugin")),
287
+ importsTailwindTheme: imports.some((path) => TAILWIND_THEME_IMPORT.test(path)),
288
+ usesTailwindDirectives: statements.some((each) => TAILWIND_DIRECTIVE.test(each))
289
+ };
290
+ };
@@ -0,0 +1,14 @@
1
+ /** What a sheet came to. */
2
+ export type InlinedCss = {
3
+ /** The text. */
4
+ readonly css: string;
5
+ /** The files written in, absolute. */
6
+ readonly files: readonly string[];
7
+ };
8
+ /**
9
+ * A sheet with its relative imports written in.
10
+ *
11
+ * @param css - its text.
12
+ * @param file - its file, absolute.
13
+ */
14
+ export declare const inlineCssImports: (css: string, file: string) => InlinedCss;