@aussieljk/forkbook 0.0.0-stage → 0.0.1-2

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 (598) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +77 -2
  3. package/assets/addon-vitest/templates/vitest.config.4.template.ts +36 -0
  4. package/assets/browser/favicon-wrapper.svg +46 -0
  5. package/assets/browser/favicon.svg +1 -0
  6. package/assets/browser/nunito-sans-bold-italic.woff2 +0 -0
  7. package/assets/browser/nunito-sans-bold.woff2 +0 -0
  8. package/assets/browser/nunito-sans-italic.woff2 +0 -0
  9. package/assets/browser/nunito-sans-regular.woff2 +0 -0
  10. package/assets/builder-vite/iframe.html +99 -0
  11. package/assets/create/rendererAssets/.eslintrc.json +16 -0
  12. package/assets/create/rendererAssets/common/Configure.mdx +388 -0
  13. package/assets/create/rendererAssets/common/assets/accessibility.png +0 -0
  14. package/assets/create/rendererAssets/common/assets/accessibility.svg +1 -0
  15. package/assets/create/rendererAssets/common/assets/addon-library.png +0 -0
  16. package/assets/create/rendererAssets/common/assets/assets.png +0 -0
  17. package/assets/create/rendererAssets/common/assets/avif-test-image.avif +0 -0
  18. package/assets/create/rendererAssets/common/assets/context.png +0 -0
  19. package/assets/create/rendererAssets/common/assets/discord.svg +1 -0
  20. package/assets/create/rendererAssets/common/assets/docs.png +0 -0
  21. package/assets/create/rendererAssets/common/assets/figma-plugin.png +0 -0
  22. package/assets/create/rendererAssets/common/assets/github.svg +1 -0
  23. package/assets/create/rendererAssets/common/assets/share.png +0 -0
  24. package/assets/create/rendererAssets/common/assets/styling.png +0 -0
  25. package/assets/create/rendererAssets/common/assets/testing.png +0 -0
  26. package/assets/create/rendererAssets/common/assets/theming.png +0 -0
  27. package/assets/create/rendererAssets/common/assets/tutorials.svg +1 -0
  28. package/assets/create/rendererAssets/common/assets/youtube.svg +1 -0
  29. package/assets/create/rendererAssets/common/button.css +30 -0
  30. package/assets/create/rendererAssets/common/header.css +32 -0
  31. package/assets/create/rendererAssets/common/page.css +68 -0
  32. package/assets/create/templates/react-native/index.expo.js +20 -0
  33. package/assets/create/templates/react-native/index.js +25 -0
  34. package/assets/docs/addon-backgrounds.gif +0 -0
  35. package/assets/docs/addon-controls-args-annotated.png +0 -0
  36. package/assets/docs/addon-controls-args-background-color.png +0 -0
  37. package/assets/docs/addon-controls-args-background-string.png +0 -0
  38. package/assets/docs/addon-controls-args-docs.png +0 -0
  39. package/assets/docs/addon-controls-args-logging.png +0 -0
  40. package/assets/docs/addon-controls-args-no-annotation.png +0 -0
  41. package/assets/docs/addon-controls-args-reflow-slider.png +0 -0
  42. package/assets/docs/addon-controls-args-reflow.png +0 -0
  43. package/assets/docs/addon-controls-args-template.png +0 -0
  44. package/assets/docs/addon-controls-expanded.png +0 -0
  45. package/assets/docs/addon-controls-hero.gif +0 -0
  46. package/assets/docs/addon-controls-install.png +0 -0
  47. package/assets/docs/hero.gif +0 -0
  48. package/assets/docs/highlight.png +0 -0
  49. package/assets/docs/message-reference.png +0 -0
  50. package/assets/docs/viewport.png +0 -0
  51. package/assets/react-native/metro-env.d.ts +69 -0
  52. package/assets/server/addon.tsconfig.json +6 -0
  53. package/assets/server/base-preview-body.html +116 -0
  54. package/assets/server/base-preview-head.html +494 -0
  55. package/assets/server/openBrowser.applescript +94 -0
  56. package/assets/server/template.ejs +87 -0
  57. package/dist/.build-stamp +0 -0
  58. package/dist/_browser-chunks/Color-PCLE2J36.js +1025 -0
  59. package/dist/_browser-chunks/DocsRenderer-JXND3PVQ.js +10 -0
  60. package/dist/_browser-chunks/WithTooltip-XSQFTBMB.js +1619 -0
  61. package/dist/_browser-chunks/chunk-2JDQ35OA.js +247 -0
  62. package/dist/_browser-chunks/chunk-2JT76G3E.js +104 -0
  63. package/dist/_browser-chunks/chunk-2MEPHP35.js +17 -0
  64. package/dist/_browser-chunks/chunk-2SCZVUKW.js +24 -0
  65. package/dist/_browser-chunks/chunk-46Z7NGAS.js +41 -0
  66. package/dist/_browser-chunks/chunk-4ATQOMJB.js +30 -0
  67. package/dist/_browser-chunks/chunk-52CW7FF7.js +49 -0
  68. package/dist/_browser-chunks/chunk-5I7E4GMO.js +62 -0
  69. package/dist/_browser-chunks/chunk-5P4QA6MY.js +20 -0
  70. package/dist/_browser-chunks/chunk-5WMXI5GW.js +816 -0
  71. package/dist/_browser-chunks/chunk-66OCZ54D.js +2604 -0
  72. package/dist/_browser-chunks/chunk-6SXYJQST.js +253 -0
  73. package/dist/_browser-chunks/chunk-AYRF6EJB.js +36 -0
  74. package/dist/_browser-chunks/chunk-B4AUNNU4.js +156 -0
  75. package/dist/_browser-chunks/chunk-BCP2FFXF.js +369 -0
  76. package/dist/_browser-chunks/chunk-C3D4HEFY.js +3396 -0
  77. package/dist/_browser-chunks/chunk-CFAOWGL7.js +43 -0
  78. package/dist/_browser-chunks/chunk-CFWWCCZV.js +223 -0
  79. package/dist/_browser-chunks/chunk-CNED6RYH.js +18 -0
  80. package/dist/_browser-chunks/chunk-DRQKCCAG.js +136 -0
  81. package/dist/_browser-chunks/chunk-ECQ75MKQ.js +0 -0
  82. package/dist/_browser-chunks/chunk-EIYAKDGP.js +302 -0
  83. package/dist/_browser-chunks/chunk-ENKK74N4.js +12 -0
  84. package/dist/_browser-chunks/chunk-FENFYI4X.js +698 -0
  85. package/dist/_browser-chunks/chunk-FJGWSWL5.js +155 -0
  86. package/dist/_browser-chunks/chunk-FVSEPWWX.js +2810 -0
  87. package/dist/_browser-chunks/chunk-GNZY6LOW.js +10116 -0
  88. package/dist/_browser-chunks/chunk-IE4ULIOQ.js +14 -0
  89. package/dist/_browser-chunks/chunk-IMSF75WX.js +42 -0
  90. package/dist/_browser-chunks/chunk-IWQGIXJS.js +14 -0
  91. package/dist/_browser-chunks/chunk-JMC7AIKT.js +108 -0
  92. package/dist/_browser-chunks/chunk-JPUOQJUI.js +8 -0
  93. package/dist/_browser-chunks/chunk-JSBKXXXF.js +218 -0
  94. package/dist/_browser-chunks/chunk-JWSKPMPC.js +73 -0
  95. package/dist/_browser-chunks/chunk-JYVGARBG.js +2943 -0
  96. package/dist/_browser-chunks/chunk-KBK7GKBN.js +35 -0
  97. package/dist/_browser-chunks/chunk-KQ7CRO2B.js +108 -0
  98. package/dist/_browser-chunks/chunk-LAWXTSXK.js +18 -0
  99. package/dist/_browser-chunks/chunk-LE2LTDW3.js +14 -0
  100. package/dist/_browser-chunks/chunk-LEVSOOLQ.js +48 -0
  101. package/dist/_browser-chunks/chunk-LV5PIKV4.js +93 -0
  102. package/dist/_browser-chunks/chunk-MDOL7KML.js +56 -0
  103. package/dist/_browser-chunks/chunk-MFMDGWP6.js +34 -0
  104. package/dist/_browser-chunks/chunk-MLBOOZL4.js +67 -0
  105. package/dist/_browser-chunks/chunk-NQUD4B7H.js +91 -0
  106. package/dist/_browser-chunks/chunk-NULBREPZ.js +43 -0
  107. package/dist/_browser-chunks/chunk-NZMVUW5T.js +7 -0
  108. package/dist/_browser-chunks/chunk-OD6IBQCC.js +117 -0
  109. package/dist/_browser-chunks/chunk-ODVJ3XZJ.js +157 -0
  110. package/dist/_browser-chunks/chunk-OQWFVDIN.js +386 -0
  111. package/dist/_browser-chunks/chunk-OVH3USFB.js +20 -0
  112. package/dist/_browser-chunks/chunk-OZZPSYQR.js +14 -0
  113. package/dist/_browser-chunks/chunk-P6PK47TQ.js +1970 -0
  114. package/dist/_browser-chunks/chunk-PFRNG3UC.js +22 -0
  115. package/dist/_browser-chunks/chunk-PJSMZ27A.js +13 -0
  116. package/dist/_browser-chunks/chunk-QC4HFS6K.js +41 -0
  117. package/dist/_browser-chunks/chunk-QDXFODK4.js +274 -0
  118. package/dist/_browser-chunks/chunk-RBCHTR7C.js +28 -0
  119. package/dist/_browser-chunks/chunk-RMYQ3QN3.js +294 -0
  120. package/dist/_browser-chunks/chunk-RNTIV5CE.js +411 -0
  121. package/dist/_browser-chunks/chunk-RSPAQWVJ.js +80 -0
  122. package/dist/_browser-chunks/chunk-S6TK43XQ.js +836 -0
  123. package/dist/_browser-chunks/chunk-SC67XZST.js +18 -0
  124. package/dist/_browser-chunks/chunk-SFVA4SBT.js +683 -0
  125. package/dist/_browser-chunks/chunk-SZYFOQMT.js +25 -0
  126. package/dist/_browser-chunks/chunk-TBJCJXK4.js +18 -0
  127. package/dist/_browser-chunks/chunk-UMDO3KB7.js +205 -0
  128. package/dist/_browser-chunks/chunk-V2G23FV7.js +11 -0
  129. package/dist/_browser-chunks/chunk-V5M7Q4HT.js +88 -0
  130. package/dist/_browser-chunks/chunk-W5M6NPS3.js +198 -0
  131. package/dist/_browser-chunks/chunk-W7NE2JXW.js +84 -0
  132. package/dist/_browser-chunks/chunk-WGVAAM43.js +1110 -0
  133. package/dist/_browser-chunks/chunk-WHQRNHXD.js +8 -0
  134. package/dist/_browser-chunks/chunk-WOSOWBCA.js +12 -0
  135. package/dist/_browser-chunks/chunk-WZ7KR7SH.js +85 -0
  136. package/dist/_browser-chunks/chunk-YEKO6BHJ.js +20 -0
  137. package/dist/_browser-chunks/chunk-YI2IBIQS.js +7 -0
  138. package/dist/_browser-chunks/chunk-YTIT5NA5.js +1966 -0
  139. package/dist/_browser-chunks/chunk-ZEHRUHTA.js +6 -0
  140. package/dist/_browser-chunks/chunk-ZTQ5MEJ5.js +203 -0
  141. package/dist/_browser-chunks/matchers-YLBYSYAF.js +1263 -0
  142. package/dist/_browser-chunks/react-dom-client-4OHE3QDV.js +9 -0
  143. package/dist/_node-chunks/attached-runtime-I2G4WLJI.js +282 -0
  144. package/dist/_node-chunks/builder-manager-VVHYQXCH.js +1661 -0
  145. package/dist/_node-chunks/chunk-2BUPBPFB.js +82 -0
  146. package/dist/_node-chunks/chunk-2DSIDINN.js +884 -0
  147. package/dist/_node-chunks/chunk-2RU7BKEW.js +23 -0
  148. package/dist/_node-chunks/chunk-34EO2PUT.js +26 -0
  149. package/dist/_node-chunks/chunk-3BKIBF5S.js +3008 -0
  150. package/dist/_node-chunks/chunk-3SDUYDXH.js +98 -0
  151. package/dist/_node-chunks/chunk-3T4ZSNPH.js +662 -0
  152. package/dist/_node-chunks/chunk-3W7F2B7P.js +79 -0
  153. package/dist/_node-chunks/chunk-3Y6AAY5H.js +80 -0
  154. package/dist/_node-chunks/chunk-42UWAGPW.js +1193 -0
  155. package/dist/_node-chunks/chunk-4FEANXWU.js +1986 -0
  156. package/dist/_node-chunks/chunk-5DQFEZEA.js +40 -0
  157. package/dist/_node-chunks/chunk-6KEHV53S.js +1218 -0
  158. package/dist/_node-chunks/chunk-6LMWA44H.js +3837 -0
  159. package/dist/_node-chunks/chunk-6YKBRP72.js +20 -0
  160. package/dist/_node-chunks/chunk-7GUDZVRQ.js +110 -0
  161. package/dist/_node-chunks/chunk-B5J7Q7J4.js +21 -0
  162. package/dist/_node-chunks/chunk-BS2WMZMR.js +90 -0
  163. package/dist/_node-chunks/chunk-BSKFCWQD.js +47 -0
  164. package/dist/_node-chunks/chunk-BXVYT7SB.js +36 -0
  165. package/dist/_node-chunks/chunk-CCOTJ4FC.js +688 -0
  166. package/dist/_node-chunks/chunk-CQKMLL5J.js +33 -0
  167. package/dist/_node-chunks/chunk-CXRU72ET.js +63 -0
  168. package/dist/_node-chunks/chunk-DC7DKR5K.js +20 -0
  169. package/dist/_node-chunks/chunk-DHJFTB4K.js +25 -0
  170. package/dist/_node-chunks/chunk-DUR55DJJ.js +1094 -0
  171. package/dist/_node-chunks/chunk-E6YESGLX.js +7032 -0
  172. package/dist/_node-chunks/chunk-EHUNOMDD.js +52345 -0
  173. package/dist/_node-chunks/chunk-ET7PWEO7.js +298 -0
  174. package/dist/_node-chunks/chunk-EWOX7HPJ.js +20 -0
  175. package/dist/_node-chunks/chunk-F3ZFKBHY.js +844 -0
  176. package/dist/_node-chunks/chunk-FK7KGTV7.js +26 -0
  177. package/dist/_node-chunks/chunk-FPZB5OI7.js +35 -0
  178. package/dist/_node-chunks/chunk-FW2HQUBQ.js +25 -0
  179. package/dist/_node-chunks/chunk-FY6UXW6G.js +11 -0
  180. package/dist/_node-chunks/chunk-GEFQN7K3.js +499 -0
  181. package/dist/_node-chunks/chunk-GRBLDJCR.js +989 -0
  182. package/dist/_node-chunks/chunk-H32DYT6P.js +87 -0
  183. package/dist/_node-chunks/chunk-H4PPVMP5.js +23 -0
  184. package/dist/_node-chunks/chunk-HMP2G23X.js +25 -0
  185. package/dist/_node-chunks/chunk-ICPBH3E7.js +59 -0
  186. package/dist/_node-chunks/chunk-IDEL2J23.js +23 -0
  187. package/dist/_node-chunks/chunk-IK4FGZLR.js +223 -0
  188. package/dist/_node-chunks/chunk-JDXXX6LB.js +68 -0
  189. package/dist/_node-chunks/chunk-JGGFYIG5.js +5468 -0
  190. package/dist/_node-chunks/chunk-JPAZLYJ3.js +29 -0
  191. package/dist/_node-chunks/chunk-JZOO7GGC.js +48 -0
  192. package/dist/_node-chunks/chunk-KISMCCP5.js +4744 -0
  193. package/dist/_node-chunks/chunk-LCK4ZQKG.js +115 -0
  194. package/dist/_node-chunks/chunk-LO56I6E2.js +132 -0
  195. package/dist/_node-chunks/chunk-LXBD4UL4.js +104 -0
  196. package/dist/_node-chunks/chunk-MA24JW6C.js +7162 -0
  197. package/dist/_node-chunks/chunk-MK2KYAI6.js +5414 -0
  198. package/dist/_node-chunks/chunk-NDWKJ4CL.js +2102 -0
  199. package/dist/_node-chunks/chunk-NIBT7XDZ.js +168 -0
  200. package/dist/_node-chunks/chunk-NPO45IMH.js +33 -0
  201. package/dist/_node-chunks/chunk-OISX4AGQ.js +414 -0
  202. package/dist/_node-chunks/chunk-OUW6R7C3.js +26 -0
  203. package/dist/_node-chunks/chunk-OWNFOGTA.js +194 -0
  204. package/dist/_node-chunks/chunk-Q7QNUM5H.js +49 -0
  205. package/dist/_node-chunks/chunk-QEQLR22M.js +1877 -0
  206. package/dist/_node-chunks/chunk-RRN2V55B.js +45 -0
  207. package/dist/_node-chunks/chunk-RWFIFGO5.js +144 -0
  208. package/dist/_node-chunks/chunk-RXNJDRGO.js +209 -0
  209. package/dist/_node-chunks/chunk-RZMQ7S3L.js +92 -0
  210. package/dist/_node-chunks/chunk-SIEXZVCR.js +51 -0
  211. package/dist/_node-chunks/chunk-SLWQNBGO.js +2034 -0
  212. package/dist/_node-chunks/chunk-SVTBJ7Q3.js +35 -0
  213. package/dist/_node-chunks/chunk-SWO5CDYU.js +32 -0
  214. package/dist/_node-chunks/chunk-TD5PLLQG.js +121 -0
  215. package/dist/_node-chunks/chunk-TEQGGSP7.js +33 -0
  216. package/dist/_node-chunks/chunk-TFCEV2XX.js +155 -0
  217. package/dist/_node-chunks/chunk-TFEWM4E3.js +1073 -0
  218. package/dist/_node-chunks/chunk-TINO74G5.js +21 -0
  219. package/dist/_node-chunks/chunk-TNJIXE37.js +40 -0
  220. package/dist/_node-chunks/chunk-TWI4GVH7.js +19 -0
  221. package/dist/_node-chunks/chunk-U5W53R2J.js +1011 -0
  222. package/dist/_node-chunks/chunk-UBOGWBEA.js +148 -0
  223. package/dist/_node-chunks/chunk-UMUBKI6E.js +3787 -0
  224. package/dist/_node-chunks/chunk-UVINFLGY.js +56 -0
  225. package/dist/_node-chunks/chunk-V2DY426G.js +1133 -0
  226. package/dist/_node-chunks/chunk-VLOXOXXE.js +45 -0
  227. package/dist/_node-chunks/chunk-W4OMYLSP.js +1297 -0
  228. package/dist/_node-chunks/chunk-WAXVSN3O.js +18 -0
  229. package/dist/_node-chunks/chunk-WCULS5TP.js +3767 -0
  230. package/dist/_node-chunks/chunk-WNZ2UMFM.js +153 -0
  231. package/dist/_node-chunks/chunk-WZJF2OUH.js +74 -0
  232. package/dist/_node-chunks/chunk-XGIUVY52.js +611 -0
  233. package/dist/_node-chunks/chunk-XHL2LVBM.js +415 -0
  234. package/dist/_node-chunks/chunk-XI6B6P47.js +59 -0
  235. package/dist/_node-chunks/chunk-XLP2ZKXV.js +60 -0
  236. package/dist/_node-chunks/chunk-YCMRA6RX.js +95 -0
  237. package/dist/_node-chunks/chunk-YZFWBA5L.js +2700 -0
  238. package/dist/_node-chunks/chunk-ZMAMXQKP.js +4731 -0
  239. package/dist/_node-chunks/chunk-ZWBCQ4MJ.js +110 -0
  240. package/dist/_node-chunks/dist-VTSTZKUB.js +16 -0
  241. package/dist/_node-chunks/globby-OEMHPBFY.js +2884 -0
  242. package/dist/_node-chunks/jiti-NFX6UU74.js +3848 -0
  243. package/dist/_node-chunks/lib-MDVARD7W.js +366 -0
  244. package/dist/_node-chunks/local-runtime-NTKIN2QT.js +78 -0
  245. package/dist/_node-chunks/mdx-plugin-MWISDWDQ.js +5680 -0
  246. package/dist/_node-chunks/monorepo-LIRFMQXE.js +121 -0
  247. package/dist/_node-chunks/monorepo-optimized-tests-relaxed-limits-no-story-deletion-CPDW4XTW.js +121 -0
  248. package/dist/_node-chunks/optimized-tests-HDOLR3EY.js +22 -0
  249. package/dist/_node-chunks/pattern-copy-play-EKHIUAU2.js +807 -0
  250. package/dist/_node-chunks/postinstallAddon-GYGMWDL6.js +20 -0
  251. package/dist/_node-chunks/rehype-external-links-BUN3HUCO.js +121 -0
  252. package/dist/_node-chunks/rehype-slug-PLADX223.js +52 -0
  253. package/dist/_node-chunks/relaxed-limits-GBHW6KIQ.js +117 -0
  254. package/dist/_node-chunks/run-KDTIZNSY.js +103 -0
  255. package/dist/_node-chunks/run-NL66VTNR.js +4532 -0
  256. package/dist/_node-chunks/session-id-KIIVOQLR.js +23 -0
  257. package/dist/_node-chunks/setup-MGC7BQO6.js +278 -0
  258. package/dist/_node-chunks/vitest.config.4.template-JH2THZFG.js +54 -0
  259. package/dist/actions/decorator.d.ts +7 -0
  260. package/dist/actions/decorator.js +43 -0
  261. package/dist/actions/index.d.ts +67 -0
  262. package/dist/actions/index.js +28 -0
  263. package/dist/addon-a11y/index.d.ts +52 -0
  264. package/dist/addon-a11y/index.js +16 -0
  265. package/dist/addon-a11y/manager.js +1429 -0
  266. package/dist/addon-a11y/preset.js +18 -0
  267. package/dist/addon-a11y/preview.d.ts +17 -0
  268. package/dist/addon-a11y/preview.js +15 -0
  269. package/dist/addon-docs/blocks.d.ts +1061 -0
  270. package/dist/addon-docs/blocks.js +2461 -0
  271. package/dist/addon-docs/index.d.ts +236 -0
  272. package/dist/addon-docs/index.js +16 -0
  273. package/dist/addon-docs/manager.js +90 -0
  274. package/dist/addon-docs/mdx-react-shim.d.ts +1 -0
  275. package/dist/addon-docs/mdx-react-shim.js +2 -0
  276. package/dist/addon-docs/preset.js +378 -0
  277. package/dist/addon-docs/preview.d.ts +4 -0
  278. package/dist/addon-docs/preview.js +7 -0
  279. package/dist/addon-links/index.d.ts +22 -0
  280. package/dist/addon-links/index.js +20 -0
  281. package/dist/addon-links/manager.js +14 -0
  282. package/dist/addon-links/preview.d.ts +6 -0
  283. package/dist/addon-links/preview.js +9 -0
  284. package/dist/addon-links/react/index.d.ts +25 -0
  285. package/dist/addon-links/react/index.js +52 -0
  286. package/dist/addon-mcp/preset.js +1345 -0
  287. package/dist/addon-mcp/preview.js +29 -0
  288. package/dist/addon-mcp/tools/preview-stories/preview-stories-app-script.js +1153 -0
  289. package/dist/addon-ondevice-actions/index.d.ts +4 -0
  290. package/dist/addon-ondevice-actions/index.js +7 -0
  291. package/dist/addon-ondevice-actions/register.js +7 -0
  292. package/dist/addon-ondevice-controls/index.d.ts +6 -0
  293. package/dist/addon-ondevice-controls/index.js +14 -0
  294. package/dist/addon-ondevice-controls/register.js +10 -0
  295. package/dist/addon-pseudo-states/index.d.ts +35 -0
  296. package/dist/addon-pseudo-states/index.js +15 -0
  297. package/dist/addon-pseudo-states/manager.js +53 -0
  298. package/dist/addon-pseudo-states/preview.d.ts +9 -0
  299. package/dist/addon-pseudo-states/preview.js +10 -0
  300. package/dist/addon-themes/index.d.ts +80 -0
  301. package/dist/addon-themes/index.js +104 -0
  302. package/dist/addon-themes/manager.js +97 -0
  303. package/dist/addon-themes/postinstall.js +33 -0
  304. package/dist/addon-themes/preview.d.ts +6 -0
  305. package/dist/addon-themes/preview.js +8 -0
  306. package/dist/addon-vitest/constants.d.ts +132 -0
  307. package/dist/addon-vitest/constants.js +66 -0
  308. package/dist/addon-vitest/index.d.ts +4 -0
  309. package/dist/addon-vitest/index.js +8 -0
  310. package/dist/addon-vitest/manager.js +665 -0
  311. package/dist/addon-vitest/node/coverage-reporter.js +1284 -0
  312. package/dist/addon-vitest/node/vitest.js +674 -0
  313. package/dist/addon-vitest/postinstall.js +24 -0
  314. package/dist/addon-vitest/preset.js +943 -0
  315. package/dist/addon-vitest/vitest-plugin/global-setup.js +162 -0
  316. package/dist/addon-vitest/vitest-plugin/index.d.ts +56 -0
  317. package/dist/addon-vitest/vitest-plugin/index.js +463 -0
  318. package/dist/addon-vitest/vitest-plugin/setup-file-with-project-annotations.js +9 -0
  319. package/dist/addon-vitest/vitest-plugin/setup-file.browser.4.js +20 -0
  320. package/dist/addon-vitest/vitest-plugin/setup-file.js +50 -0
  321. package/dist/addon-vitest/vitest-plugin/test-utils.js +128 -0
  322. package/dist/babel/index.d.ts +2301 -0
  323. package/dist/babel/index.js +61 -0
  324. package/dist/backgrounds/index.d.ts +6 -0
  325. package/dist/backgrounds/index.js +15 -0
  326. package/dist/bin/core.js +1705 -0
  327. package/dist/bin/dispatcher.js +43 -0
  328. package/dist/bin/loader.js +115 -0
  329. package/dist/builder-vite/index.d.ts +50 -0
  330. package/dist/builder-vite/index.js +245 -0
  331. package/dist/builder-vite/preset.js +27 -0
  332. package/dist/channels/index.d.ts +2 -0
  333. package/dist/channels/index.js +352 -0
  334. package/dist/chunk-B2t1tGRh.d.ts +284 -0
  335. package/dist/chunk-BCoJQE-f.d.ts +602 -0
  336. package/dist/chunk-BGkgZp-H.d.ts +214 -0
  337. package/dist/chunk-BTVrWliM.d.ts +115 -0
  338. package/dist/chunk-BXLImeLy.d.ts +197 -0
  339. package/dist/chunk-BfBzpgct.d.ts +916 -0
  340. package/dist/chunk-Bpi2tz-6.d.ts +511 -0
  341. package/dist/chunk-BxWufQms.d.ts +142 -0
  342. package/dist/chunk-C-bavsOH.d.ts +34 -0
  343. package/dist/chunk-C2p5r3Vt.d.ts +13001 -0
  344. package/dist/chunk-C6PAgHLT.d.ts +12 -0
  345. package/dist/chunk-CMeX4WRe.d.ts +179 -0
  346. package/dist/chunk-Ct9xd6IM.d.ts +65 -0
  347. package/dist/chunk-CwQKNaYL.d.ts +15 -0
  348. package/dist/chunk-D7DwV41f.d.ts +3622 -0
  349. package/dist/chunk-DEVFdzxR.d.ts +253 -0
  350. package/dist/chunk-DaVb55-_.d.ts +124 -0
  351. package/dist/chunk-DgRNfmj_.d.ts +40 -0
  352. package/dist/chunk-DoIGKY33.d.ts +666 -0
  353. package/dist/chunk-Dr3R0DXk.d.ts +40 -0
  354. package/dist/chunk-DtHByo32.d.ts +55 -0
  355. package/dist/chunk-Dw1z1Pki.d.ts +933 -0
  356. package/dist/chunk-DzuY9DXg.d.ts +79 -0
  357. package/dist/chunk-FjDVzZTj.d.ts +62 -0
  358. package/dist/chunk-Kt1tW-D1.d.ts +59 -0
  359. package/dist/chunk-XP8oHzpE.d.ts +6 -0
  360. package/dist/chunk-gCX81nOr.d.ts +61 -0
  361. package/dist/chunk-pcFXCimE.d.ts +741 -0
  362. package/dist/cli/index.d.ts +1174 -0
  363. package/dist/cli/index.js +5613 -0
  364. package/dist/cli/skills/content/index.d.ts +72 -0
  365. package/dist/cli/skills/content/index.js +335 -0
  366. package/dist/cli/tools/sdk/child-host.d.ts +61 -0
  367. package/dist/cli/tools/sdk/child-host.js +131 -0
  368. package/dist/cli/tools/sdk/index.d.ts +137 -0
  369. package/dist/cli/tools/sdk/index.js +44 -0
  370. package/dist/cli-commands/bin/index.js +25 -0
  371. package/dist/client-logger/index.d.ts +31 -0
  372. package/dist/client-logger/index.js +63 -0
  373. package/dist/common/index.d.ts +1103 -0
  374. package/dist/common/index.js +364 -0
  375. package/dist/components/index.d.ts +1924 -0
  376. package/dist/components/index.js +13759 -0
  377. package/dist/core-events/index.d.ts +155 -0
  378. package/dist/core-events/index.js +136 -0
  379. package/dist/core-server/index.d.ts +2200 -0
  380. package/dist/core-server/index.js +4165 -0
  381. package/dist/core-server/presets/common-manager.css +170 -0
  382. package/dist/core-server/presets/common-manager.js +4168 -0
  383. package/dist/core-server/presets/common-override-preset.js +81 -0
  384. package/dist/core-server/presets/common-preset.js +2187 -0
  385. package/dist/create/bin/index.js +23 -0
  386. package/dist/create/index.js +25 -0
  387. package/dist/csf/csf-utils.d.ts +2 -0
  388. package/dist/csf/csf-utils.js +19 -0
  389. package/dist/csf/index.d.ts +7 -0
  390. package/dist/csf/index.js +2142 -0
  391. package/dist/csf-tools/index.d.ts +1157 -0
  392. package/dist/csf-tools/index.js +736 -0
  393. package/dist/docs-tools/index.d.ts +197 -0
  394. package/dist/docs-tools/index.js +61 -0
  395. package/dist/highlight/index.d.ts +10 -0
  396. package/dist/highlight/index.js +15 -0
  397. package/dist/instrumenter/index.d.ts +113 -0
  398. package/dist/instrumenter/index.js +2595 -0
  399. package/dist/manager/_manager-chunks/globals-runtime-8HkdnU2F.js +6144 -0
  400. package/dist/manager/_manager-chunks/globals-runtime-BIKBO23x.js +3389 -0
  401. package/dist/manager/_manager-chunks/globals-runtime-BdGkqNEt.js +45 -0
  402. package/dist/manager/_manager-chunks/globals-runtime-BmphMP6z.js +1190 -0
  403. package/dist/manager/_manager-chunks/globals-runtime-BvM-NY2g.js +13307 -0
  404. package/dist/manager/_manager-chunks/globals-runtime-C02fvgcd.js +9243 -0
  405. package/dist/manager/_manager-chunks/globals-runtime-DkAPXCvc.js +9766 -0
  406. package/dist/manager/_manager-chunks/globals-runtime-DpNYC-qi.js +5564 -0
  407. package/dist/manager/_manager-chunks/globals-runtime-DtcOnYHR.js +5357 -0
  408. package/dist/manager/_manager-chunks/globals-runtime-DwFqpqya.js +722 -0
  409. package/dist/manager/_manager-chunks/globals-runtime-FC201B7s.js +6837 -0
  410. package/dist/manager/_manager-chunks/globals-runtime-Rp_zjGnh.js +121 -0
  411. package/dist/manager/_manager-chunks/globals-runtime-ZHrQFa3-.js +10463 -0
  412. package/dist/manager/_manager-chunks/globals-runtime-eLPTIfX-.js +7759 -0
  413. package/dist/manager/_manager-chunks/globals-runtime-qKvCZHFY.js +4468 -0
  414. package/dist/manager/_manager-chunks/globals-runtime-sGpNlIJ1.js +5102 -0
  415. package/dist/manager/_manager-chunks/runtime-B1L9TH89.js +452 -0
  416. package/dist/manager/_manager-chunks/runtime-BK0zF7FN.js +22 -0
  417. package/dist/manager/_manager-chunks/runtime-BhkT2CXl.js +1408 -0
  418. package/dist/manager/_manager-chunks/runtime-Bly6WJLN.js +998 -0
  419. package/dist/manager/_manager-chunks/runtime-D0UOWx0U.js +979 -0
  420. package/dist/manager/_manager-chunks/runtime-D94Vq3oR.js +4014 -0
  421. package/dist/manager/_manager-chunks/runtime-DMig8mT7.js +77 -0
  422. package/dist/manager/_manager-chunks/runtime-EITvVbkG.js +46 -0
  423. package/dist/manager/_manager-chunks/runtime-cp5pazY2.js +8936 -0
  424. package/dist/manager/_manager-chunks/runtime-eDVAYF7N.js +6860 -0
  425. package/dist/manager/_manager-chunks/runtime-i-PDAHLR.js +2493 -0
  426. package/dist/manager/globals-runtime.js +2 -0
  427. package/dist/manager/globals.d.ts +23 -0
  428. package/dist/manager/globals.js +26 -0
  429. package/dist/manager/manager-stores.d.ts +2 -0
  430. package/dist/manager/manager-stores.js +19 -0
  431. package/dist/manager/runtime.js +2 -0
  432. package/dist/manager-api/index.d.ts +2 -0
  433. package/dist/manager-api/index.js +3257 -0
  434. package/dist/manager-errors.d.ts +89 -0
  435. package/dist/manager-errors.js +20 -0
  436. package/dist/mcp/index.d.ts +270 -0
  437. package/dist/mcp/index.js +305 -0
  438. package/dist/mocking-utils/index.d.ts +689 -0
  439. package/dist/mocking-utils/index.js +521 -0
  440. package/dist/mocking-utils/mocker-runtime.js +1254 -0
  441. package/dist/nextjs-vite/config/preview.js +3 -0
  442. package/dist/nextjs-vite/export-mocks/cache/index.d.ts +25 -0
  443. package/dist/nextjs-vite/export-mocks/cache/index.js +29 -0
  444. package/dist/nextjs-vite/export-mocks/headers/index.d.ts +37 -0
  445. package/dist/nextjs-vite/export-mocks/headers/index.js +54 -0
  446. package/dist/nextjs-vite/export-mocks/link/index.d.ts +9 -0
  447. package/dist/nextjs-vite/export-mocks/link/index.js +59 -0
  448. package/dist/nextjs-vite/export-mocks/navigation/index.d.ts +28 -0
  449. package/dist/nextjs-vite/export-mocks/navigation/index.js +58 -0
  450. package/dist/nextjs-vite/export-mocks/router/index.d.ts +34 -0
  451. package/dist/nextjs-vite/export-mocks/router/index.js +63 -0
  452. package/dist/nextjs-vite/index.d.ts +92 -0
  453. package/dist/nextjs-vite/index.js +58 -0
  454. package/dist/nextjs-vite/node/index.d.ts +6 -0
  455. package/dist/nextjs-vite/node/index.js +20 -0
  456. package/dist/nextjs-vite/preset.js +648 -0
  457. package/dist/nextjs-vite/preview.d.ts +20 -0
  458. package/dist/nextjs-vite/preview.js +11 -0
  459. package/dist/nextjs-vite/vite-plugin/index.d.ts +6 -0
  460. package/dist/nextjs-vite/vite-plugin/index.js +19 -0
  461. package/dist/nextjs-vite-plugin/index.d.ts +28 -0
  462. package/dist/nextjs-vite-plugin/index.js +923 -0
  463. package/dist/nextjs-vite-plugin/mocks/storybook.global.js +29 -0
  464. package/dist/nextjs-vite-plugin/plugins/next-image/alias/image-context.js +8 -0
  465. package/dist/nextjs-vite-plugin/plugins/next-image/alias/image-default-loader.js +23 -0
  466. package/dist/nextjs-vite-plugin/plugins/next-image/alias/next-image.js +28 -0
  467. package/dist/nextjs-vite-plugin/plugins/next-image/alias/next-legacy-image.js +17 -0
  468. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/cache/index.js +29 -0
  469. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/dynamic/index.js +40 -0
  470. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/headers/index.js +55 -0
  471. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/link/index.js +63 -0
  472. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/navigation/index.js +71 -0
  473. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/router/index.js +74 -0
  474. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/rsc/server-only.js +7 -0
  475. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/safe-stable-stringify/index.js +13 -0
  476. package/dist/nextjs-vite-plugin/plugins/next-mocks/compatibility/draft-mode.compat.js +7 -0
  477. package/dist/node-logger/index.d.ts +495 -0
  478. package/dist/node-logger/index.js +42 -0
  479. package/dist/oxc-parser/index.d.ts +99 -0
  480. package/dist/oxc-parser/index.js +275 -0
  481. package/dist/oxc-parser/worker.js +37 -0
  482. package/dist/preview/_chunks/runtime-BIzIdDbb.js +10263 -0
  483. package/dist/preview/_chunks/runtime-BTPtVY1p.js +1102 -0
  484. package/dist/preview/_chunks/runtime-BZSnICCg.js +8484 -0
  485. package/dist/preview/_chunks/runtime-BdGkqNEt.js +45 -0
  486. package/dist/preview/_chunks/runtime-BwSxqk3t.js +63 -0
  487. package/dist/preview/_chunks/runtime-CqHxptiK.js +6143 -0
  488. package/dist/preview/_chunks/runtime-CsV4HZPV.js +5064 -0
  489. package/dist/preview/_chunks/runtime-CxZK_Ln3.js +284 -0
  490. package/dist/preview/_chunks/runtime-DZToXfvO.js +9767 -0
  491. package/dist/preview/_chunks/runtime-DrTjJkPY.js +3872 -0
  492. package/dist/preview/_chunks/runtime-DuHdxMFA.js +387 -0
  493. package/dist/preview/_chunks/runtime-iXdo8CR8.js +3635 -0
  494. package/dist/preview/_chunks/runtime-q3wt0e_N.js +6838 -0
  495. package/dist/preview/globals.d.ts +16 -0
  496. package/dist/preview/globals.js +20 -0
  497. package/dist/preview/runtime.js +6 -0
  498. package/dist/preview-api/index.d.ts +4 -0
  499. package/dist/preview-api/index.js +147 -0
  500. package/dist/preview-errors.d.ts +186 -0
  501. package/dist/preview-errors.js +56 -0
  502. package/dist/react/docgen/docgen-worker.js +38 -0
  503. package/dist/react/entry-preview-argtypes.js +9 -0
  504. package/dist/react/entry-preview-docs.js +12 -0
  505. package/dist/react/entry-preview-rsc.js +11 -0
  506. package/dist/react/entry-preview.js +21 -0
  507. package/dist/react/index.d.ts +119 -0
  508. package/dist/react/index.js +26 -0
  509. package/dist/react/preset.js +301 -0
  510. package/dist/react/preview.d.ts +2 -0
  511. package/dist/react/preview.js +11 -0
  512. package/dist/react-native/bin/get-stories.js +34 -0
  513. package/dist/react-native/index.d.ts +160 -0
  514. package/dist/react-native/index.js +1547 -0
  515. package/dist/react-native/metro/node.d.ts +83 -0
  516. package/dist/react-native/metro/node.js +21 -0
  517. package/dist/react-native/metro/withStorybook.d.ts +2269 -0
  518. package/dist/react-native/metro/withStorybook.js +138 -0
  519. package/dist/react-native/preview.d.ts +6 -0
  520. package/dist/react-native/preview.js +20 -0
  521. package/dist/react-native/scripts/generate.d.ts +22 -0
  522. package/dist/react-native/scripts/generate.js +18 -0
  523. package/dist/react-native/stub.js +20 -0
  524. package/dist/react-native-theming/index.d.ts +175 -0
  525. package/dist/react-native-theming/index.js +2591 -0
  526. package/dist/react-native-ui/index.d.ts +130 -0
  527. package/dist/react-native-ui/index.js +1448 -0
  528. package/dist/react-native-ui-common/index.d.ts +230 -0
  529. package/dist/react-native-ui-common/index.js +514 -0
  530. package/dist/react-vite/index.d.ts +4 -0
  531. package/dist/react-vite/index.js +8 -0
  532. package/dist/react-vite/node/index.d.ts +6 -0
  533. package/dist/react-vite/node/index.js +20 -0
  534. package/dist/react-vite/preset.d.ts +6 -0
  535. package/dist/react-vite/preset.js +21 -0
  536. package/dist/router/index.d.ts +141 -0
  537. package/dist/router/index.js +1217 -0
  538. package/dist/server-errors.d.ts +2 -0
  539. package/dist/server-errors.js +149 -0
  540. package/dist/shared/open-service/index.d.ts +3 -0
  541. package/dist/shared/open-service/index.js +115 -0
  542. package/dist/shared/open-service/services/docgen/worker/docgen-worker.js +75 -0
  543. package/dist/shared/open-service/toolsets/docs/public.d.ts +1296 -0
  544. package/dist/shared/open-service/toolsets/docs/public.js +991 -0
  545. package/dist/telemetry/index.d.ts +314 -0
  546. package/dist/telemetry/index.js +103 -0
  547. package/dist/test/index.d.ts +158 -0
  548. package/dist/test/index.js +19421 -0
  549. package/dist/theming/create.d.ts +15 -0
  550. package/dist/theming/create.js +11 -0
  551. package/dist/theming/index.d.ts +54 -0
  552. package/dist/theming/index.js +511 -0
  553. package/dist/types/index.d.ts +2 -0
  554. package/dist/types/index.js +48 -0
  555. package/dist/viewport/index.d.ts +275 -0
  556. package/dist/viewport/index.js +21 -0
  557. package/package.json +1054 -4
  558. package/template/nextjs-vite/cli/.eslintrc.json +6 -0
  559. package/template/nextjs-vite/cli/js/Button.jsx +42 -0
  560. package/template/nextjs-vite/cli/js/Button.stories.js +49 -0
  561. package/template/nextjs-vite/cli/js/Configure.mdx +470 -0
  562. package/template/nextjs-vite/cli/js/Header.jsx +58 -0
  563. package/template/nextjs-vite/cli/js/Header.stories.js +30 -0
  564. package/template/nextjs-vite/cli/js/Page.jsx +68 -0
  565. package/template/nextjs-vite/cli/js/Page.stories.js +28 -0
  566. package/template/nextjs-vite/cli/ts/Button.stories.ts +54 -0
  567. package/template/nextjs-vite/cli/ts/Button.tsx +39 -0
  568. package/template/nextjs-vite/cli/ts/Configure.mdx +446 -0
  569. package/template/nextjs-vite/cli/ts/Header.stories.ts +34 -0
  570. package/template/nextjs-vite/cli/ts/Header.tsx +54 -0
  571. package/template/nextjs-vite/cli/ts/Page.stories.ts +33 -0
  572. package/template/nextjs-vite/cli/ts/Page.tsx +73 -0
  573. package/template/react/cli/.eslintrc.json +5 -0
  574. package/template/react/cli/js/Button.jsx +39 -0
  575. package/template/react/cli/js/Button.stories.js +49 -0
  576. package/template/react/cli/js/Header.jsx +56 -0
  577. package/template/react/cli/js/Header.stories.js +29 -0
  578. package/template/react/cli/js/Page.jsx +69 -0
  579. package/template/react/cli/js/Page.stories.js +28 -0
  580. package/template/react/cli/ts/Button.stories.ts +54 -0
  581. package/template/react/cli/ts/Button.tsx +37 -0
  582. package/template/react/cli/ts/Header.stories.ts +34 -0
  583. package/template/react/cli/ts/Header.tsx +56 -0
  584. package/template/react/cli/ts/Page.stories.ts +33 -0
  585. package/template/react/cli/ts/Page.tsx +73 -0
  586. package/template/react-vite/cli/.eslintrc.json +5 -0
  587. package/template/react-vite/cli/js/Button.jsx +39 -0
  588. package/template/react-vite/cli/js/Button.stories.js +49 -0
  589. package/template/react-vite/cli/js/Header.jsx +56 -0
  590. package/template/react-vite/cli/js/Header.stories.js +29 -0
  591. package/template/react-vite/cli/js/Page.jsx +69 -0
  592. package/template/react-vite/cli/js/Page.stories.js +28 -0
  593. package/template/react-vite/cli/ts/Button.stories.ts +54 -0
  594. package/template/react-vite/cli/ts/Button.tsx +37 -0
  595. package/template/react-vite/cli/ts/Header.stories.ts +34 -0
  596. package/template/react-vite/cli/ts/Header.tsx +56 -0
  597. package/template/react-vite/cli/ts/Page.stories.ts +33 -0
  598. package/template/react-vite/cli/ts/Page.tsx +73 -0
@@ -0,0 +1,2604 @@
1
+ import {
2
+ combineParameters
3
+ } from "./chunk-ODVJ3XZJ.js";
4
+ import {
5
+ __commonJS,
6
+ __toESM
7
+ } from "./chunk-IMSF75WX.js";
8
+
9
+ // ../../node_modules/jsdoc-type-pratt-parser/dist/index.js
10
+ var require_dist = __commonJS({
11
+ "../../node_modules/jsdoc-type-pratt-parser/dist/index.js"(exports, module) {
12
+ (function(global, factory) {
13
+ typeof exports == "object" && typeof module < "u" ? factory(exports) : typeof define == "function" && define.amd ? define(["exports"], factory) : (global = typeof globalThis < "u" ? globalThis : global || self, factory(global.jtpp = {}));
14
+ })(exports, (function(exports2) {
15
+ "use strict";
16
+ function tokenToString(token) {
17
+ return token.text !== void 0 && token.text !== "" ? `'${token.type}' with value '${token.text}'` : `'${token.type}'`;
18
+ }
19
+ class NoParsletFoundError extends Error {
20
+ constructor(token) {
21
+ super(`No parslet found for token: ${tokenToString(token)}`), this.token = token, Object.setPrototypeOf(this, NoParsletFoundError.prototype);
22
+ }
23
+ getToken() {
24
+ return this.token;
25
+ }
26
+ }
27
+ class EarlyEndOfParseError extends Error {
28
+ constructor(token) {
29
+ super(`The parsing ended early. The next token was: ${tokenToString(token)}`), this.token = token, Object.setPrototypeOf(this, EarlyEndOfParseError.prototype);
30
+ }
31
+ getToken() {
32
+ return this.token;
33
+ }
34
+ }
35
+ class UnexpectedTypeError extends Error {
36
+ constructor(result, message) {
37
+ let error = `Unexpected type: '${result.type}'.`;
38
+ message !== void 0 && (error += ` Message: ${message}`), super(error), Object.setPrototypeOf(this, UnexpectedTypeError.prototype);
39
+ }
40
+ }
41
+ function makePunctuationRule(type) {
42
+ return (text) => text.startsWith(type) ? { type, text: type } : null;
43
+ }
44
+ function getQuoted(text) {
45
+ let position = 0, char, mark = text[0], escaped = !1;
46
+ if (mark !== "'" && mark !== '"')
47
+ return null;
48
+ for (; position < text.length; ) {
49
+ if (position++, char = text[position], !escaped && char === mark) {
50
+ position++;
51
+ break;
52
+ }
53
+ escaped = !escaped && char === "\\";
54
+ }
55
+ if (char !== mark)
56
+ throw new Error("Unterminated String");
57
+ return text.slice(0, position);
58
+ }
59
+ let identifierStartRegex = new RegExp("[$_\\p{ID_Start}]|\\\\u\\p{Hex_Digit}{4}|\\\\u\\{0*(?:\\p{Hex_Digit}{1,5}|10\\p{Hex_Digit}{4})\\}", "u"), identifierContinueRegex = new RegExp("[$\\-\\p{ID_Continue}\\u200C\\u200D]|\\\\u\\p{Hex_Digit}{4}|\\\\u\\{0*(?:\\p{Hex_Digit}{1,5}|10\\p{Hex_Digit}{4})\\}", "u");
60
+ function getIdentifier(text) {
61
+ let char = text[0];
62
+ if (!identifierStartRegex.test(char))
63
+ return null;
64
+ let position = 1;
65
+ do {
66
+ if (char = text[position], !identifierContinueRegex.test(char))
67
+ break;
68
+ position++;
69
+ } while (position < text.length);
70
+ return text.slice(0, position);
71
+ }
72
+ let numberRegex = /^(NaN|-?((\d*\.\d+|\d+)([Ee][+-]?\d+)?|Infinity))/;
73
+ function getNumber(text) {
74
+ var _a, _b;
75
+ return (_b = (_a = numberRegex.exec(text)) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : null;
76
+ }
77
+ let identifierRule = (text) => {
78
+ let value = getIdentifier(text);
79
+ return value == null ? null : {
80
+ type: "Identifier",
81
+ text: value
82
+ };
83
+ };
84
+ function makeKeyWordRule(type) {
85
+ return (text) => {
86
+ if (!text.startsWith(type))
87
+ return null;
88
+ let prepends = text[type.length];
89
+ return prepends !== void 0 && identifierContinueRegex.test(prepends) ? null : {
90
+ type,
91
+ text: type
92
+ };
93
+ };
94
+ }
95
+ let stringValueRule = (text) => {
96
+ let value = getQuoted(text);
97
+ return value == null ? null : {
98
+ type: "StringValue",
99
+ text: value
100
+ };
101
+ }, eofRule = (text) => text.length > 0 ? null : {
102
+ type: "EOF",
103
+ text: ""
104
+ }, numberRule = (text) => {
105
+ let value = getNumber(text);
106
+ return value === null ? null : {
107
+ type: "Number",
108
+ text: value
109
+ };
110
+ }, rules = [
111
+ eofRule,
112
+ makePunctuationRule("=>"),
113
+ makePunctuationRule("("),
114
+ makePunctuationRule(")"),
115
+ makePunctuationRule("{"),
116
+ makePunctuationRule("}"),
117
+ makePunctuationRule("["),
118
+ makePunctuationRule("]"),
119
+ makePunctuationRule("|"),
120
+ makePunctuationRule("&"),
121
+ makePunctuationRule("<"),
122
+ makePunctuationRule(">"),
123
+ makePunctuationRule(","),
124
+ makePunctuationRule(";"),
125
+ makePunctuationRule("*"),
126
+ makePunctuationRule("?"),
127
+ makePunctuationRule("!"),
128
+ makePunctuationRule("="),
129
+ makePunctuationRule(":"),
130
+ makePunctuationRule("..."),
131
+ makePunctuationRule("."),
132
+ makePunctuationRule("#"),
133
+ makePunctuationRule("~"),
134
+ makePunctuationRule("/"),
135
+ makePunctuationRule("@"),
136
+ makeKeyWordRule("undefined"),
137
+ makeKeyWordRule("null"),
138
+ makeKeyWordRule("function"),
139
+ makeKeyWordRule("this"),
140
+ makeKeyWordRule("new"),
141
+ makeKeyWordRule("module"),
142
+ makeKeyWordRule("event"),
143
+ makeKeyWordRule("extends"),
144
+ makeKeyWordRule("external"),
145
+ makeKeyWordRule("infer"),
146
+ makeKeyWordRule("typeof"),
147
+ makeKeyWordRule("keyof"),
148
+ makeKeyWordRule("readonly"),
149
+ makeKeyWordRule("import"),
150
+ makeKeyWordRule("is"),
151
+ makeKeyWordRule("in"),
152
+ makeKeyWordRule("asserts"),
153
+ numberRule,
154
+ identifierRule,
155
+ stringValueRule
156
+ ], breakingWhitespaceRegex = /^\s*\n\s*/;
157
+ class Lexer {
158
+ static create(text) {
159
+ let current = this.read(text);
160
+ text = current.text;
161
+ let next = this.read(text);
162
+ return text = next.text, new Lexer(text, void 0, current.token, next.token);
163
+ }
164
+ constructor(text, previous, current, next) {
165
+ this.text = "", this.text = text, this.previous = previous, this.current = current, this.next = next;
166
+ }
167
+ static read(text, startOfLine = !1) {
168
+ startOfLine = startOfLine || breakingWhitespaceRegex.test(text), text = text.trim();
169
+ for (let rule of rules) {
170
+ let partial = rule(text);
171
+ if (partial !== null) {
172
+ let token = Object.assign(Object.assign({}, partial), { startOfLine });
173
+ return text = text.slice(token.text.length), { text, token };
174
+ }
175
+ }
176
+ throw new Error("Unexpected Token " + text);
177
+ }
178
+ advance() {
179
+ let next = Lexer.read(this.text);
180
+ return new Lexer(next.text, this.current, this.next, next.token);
181
+ }
182
+ }
183
+ function assertRootResult(result) {
184
+ if (result === void 0)
185
+ throw new Error("Unexpected undefined");
186
+ if (result.type === "JsdocTypeKeyValue" || result.type === "JsdocTypeParameterList" || result.type === "JsdocTypeProperty" || result.type === "JsdocTypeReadonlyProperty" || result.type === "JsdocTypeObjectField" || result.type === "JsdocTypeJsdocObjectField" || result.type === "JsdocTypeIndexSignature" || result.type === "JsdocTypeMappedType" || result.type === "JsdocTypeTypeParameter")
187
+ throw new UnexpectedTypeError(result);
188
+ return result;
189
+ }
190
+ function assertPlainKeyValueOrRootResult(result) {
191
+ return result.type === "JsdocTypeKeyValue" ? assertPlainKeyValueResult(result) : assertRootResult(result);
192
+ }
193
+ function assertPlainKeyValueOrNameResult(result) {
194
+ return result.type === "JsdocTypeName" ? result : assertPlainKeyValueResult(result);
195
+ }
196
+ function assertPlainKeyValueResult(result) {
197
+ if (result.type !== "JsdocTypeKeyValue")
198
+ throw new UnexpectedTypeError(result);
199
+ return result;
200
+ }
201
+ function assertNumberOrVariadicNameResult(result) {
202
+ var _a;
203
+ if (result.type === "JsdocTypeVariadic") {
204
+ if (((_a = result.element) === null || _a === void 0 ? void 0 : _a.type) === "JsdocTypeName")
205
+ return result;
206
+ throw new UnexpectedTypeError(result);
207
+ }
208
+ if (result.type !== "JsdocTypeNumber" && result.type !== "JsdocTypeName")
209
+ throw new UnexpectedTypeError(result);
210
+ return result;
211
+ }
212
+ function assertArrayOrTupleResult(result) {
213
+ if (result.type === "JsdocTypeTuple" || result.type === "JsdocTypeGeneric" && result.meta.brackets === "square")
214
+ return result;
215
+ throw new UnexpectedTypeError(result);
216
+ }
217
+ function isSquaredProperty(result) {
218
+ return result.type === "JsdocTypeIndexSignature" || result.type === "JsdocTypeMappedType";
219
+ }
220
+ var Precedence;
221
+ (function(Precedence2) {
222
+ Precedence2[Precedence2.ALL = 0] = "ALL", Precedence2[Precedence2.PARAMETER_LIST = 1] = "PARAMETER_LIST", Precedence2[Precedence2.OBJECT = 2] = "OBJECT", Precedence2[Precedence2.KEY_VALUE = 3] = "KEY_VALUE", Precedence2[Precedence2.INDEX_BRACKETS = 4] = "INDEX_BRACKETS", Precedence2[Precedence2.UNION = 5] = "UNION", Precedence2[Precedence2.INTERSECTION = 6] = "INTERSECTION", Precedence2[Precedence2.PREFIX = 7] = "PREFIX", Precedence2[Precedence2.INFIX = 8] = "INFIX", Precedence2[Precedence2.TUPLE = 9] = "TUPLE", Precedence2[Precedence2.SYMBOL = 10] = "SYMBOL", Precedence2[Precedence2.OPTIONAL = 11] = "OPTIONAL", Precedence2[Precedence2.NULLABLE = 12] = "NULLABLE", Precedence2[Precedence2.KEY_OF_TYPE_OF = 13] = "KEY_OF_TYPE_OF", Precedence2[Precedence2.FUNCTION = 14] = "FUNCTION", Precedence2[Precedence2.ARROW = 15] = "ARROW", Precedence2[Precedence2.ARRAY_BRACKETS = 16] = "ARRAY_BRACKETS", Precedence2[Precedence2.GENERIC = 17] = "GENERIC", Precedence2[Precedence2.NAME_PATH = 18] = "NAME_PATH", Precedence2[Precedence2.PARENTHESIS = 19] = "PARENTHESIS", Precedence2[Precedence2.SPECIAL_TYPES = 20] = "SPECIAL_TYPES";
223
+ })(Precedence || (Precedence = {}));
224
+ class Parser {
225
+ constructor(grammar, textOrLexer, baseParser) {
226
+ this.grammar = grammar, typeof textOrLexer == "string" ? this._lexer = Lexer.create(textOrLexer) : this._lexer = textOrLexer, this.baseParser = baseParser;
227
+ }
228
+ get lexer() {
229
+ return this._lexer;
230
+ }
231
+ /**
232
+ * Parses a given string and throws an error if the parse ended before the end of the string.
233
+ */
234
+ parse() {
235
+ let result = this.parseType(Precedence.ALL);
236
+ if (this.lexer.current.type !== "EOF")
237
+ throw new EarlyEndOfParseError(this.lexer.current);
238
+ return result;
239
+ }
240
+ /**
241
+ * Parses with the current lexer and asserts that the result is a {@link RootResult}.
242
+ */
243
+ parseType(precedence) {
244
+ return assertRootResult(this.parseIntermediateType(precedence));
245
+ }
246
+ /**
247
+ * The main parsing function. First it tries to parse the current state in the prefix step, and then it continues
248
+ * to parse the state in the infix step.
249
+ */
250
+ parseIntermediateType(precedence) {
251
+ let result = this.tryParslets(null, precedence);
252
+ if (result === null)
253
+ throw new NoParsletFoundError(this.lexer.current);
254
+ return this.parseInfixIntermediateType(result, precedence);
255
+ }
256
+ /**
257
+ * In the infix parsing step the parser continues to parse the current state with all parslets until none returns
258
+ * a result.
259
+ */
260
+ parseInfixIntermediateType(left, precedence) {
261
+ let result = this.tryParslets(left, precedence);
262
+ for (; result !== null; )
263
+ left = result, result = this.tryParslets(left, precedence);
264
+ return left;
265
+ }
266
+ /**
267
+ * Tries to parse the current state with all parslets in the grammar and returns the first non null result.
268
+ */
269
+ tryParslets(left, precedence) {
270
+ for (let parslet of this.grammar) {
271
+ let result = parslet(this, precedence, left);
272
+ if (result !== null)
273
+ return result;
274
+ }
275
+ return null;
276
+ }
277
+ /**
278
+ * If the given type equals the current type of the {@link Lexer} advance the lexer. Return true if the lexer was
279
+ * advanced.
280
+ */
281
+ consume(types) {
282
+ return Array.isArray(types) || (types = [types]), types.includes(this.lexer.current.type) ? (this._lexer = this.lexer.advance(), !0) : !1;
283
+ }
284
+ acceptLexerState(parser) {
285
+ this._lexer = parser.lexer;
286
+ }
287
+ }
288
+ function isQuestionMarkUnknownType(next) {
289
+ return next === "}" || next === "EOF" || next === "|" || next === "," || next === ")" || next === ">";
290
+ }
291
+ let nullableParslet = (parser, precedence, left) => {
292
+ let type = parser.lexer.current.type, next = parser.lexer.next.type;
293
+ return left == null && type === "?" && !isQuestionMarkUnknownType(next) || left != null && type === "?" ? (parser.consume("?"), left == null ? {
294
+ type: "JsdocTypeNullable",
295
+ element: parser.parseType(Precedence.NULLABLE),
296
+ meta: {
297
+ position: "prefix"
298
+ }
299
+ } : {
300
+ type: "JsdocTypeNullable",
301
+ element: assertRootResult(left),
302
+ meta: {
303
+ position: "suffix"
304
+ }
305
+ }) : null;
306
+ };
307
+ function composeParslet(options) {
308
+ let parslet = (parser, curPrecedence, left) => {
309
+ let type = parser.lexer.current.type, next = parser.lexer.next.type;
310
+ if (left === null) {
311
+ if ("parsePrefix" in options && options.accept(type, next))
312
+ return options.parsePrefix(parser);
313
+ } else if ("parseInfix" in options && options.precedence > curPrecedence && options.accept(type, next))
314
+ return options.parseInfix(parser, left);
315
+ return null;
316
+ };
317
+ return Object.defineProperty(parslet, "name", {
318
+ value: options.name
319
+ }), parslet;
320
+ }
321
+ let optionalParslet = composeParslet({
322
+ name: "optionalParslet",
323
+ accept: (type) => type === "=",
324
+ precedence: Precedence.OPTIONAL,
325
+ parsePrefix: (parser) => (parser.consume("="), {
326
+ type: "JsdocTypeOptional",
327
+ element: parser.parseType(Precedence.OPTIONAL),
328
+ meta: {
329
+ position: "prefix"
330
+ }
331
+ }),
332
+ parseInfix: (parser, left) => (parser.consume("="), {
333
+ type: "JsdocTypeOptional",
334
+ element: assertRootResult(left),
335
+ meta: {
336
+ position: "suffix"
337
+ }
338
+ })
339
+ }), numberParslet = composeParslet({
340
+ name: "numberParslet",
341
+ accept: (type) => type === "Number",
342
+ parsePrefix: (parser) => {
343
+ let value = parseFloat(parser.lexer.current.text);
344
+ return parser.consume("Number"), {
345
+ type: "JsdocTypeNumber",
346
+ value
347
+ };
348
+ }
349
+ }), parenthesisParslet = composeParslet({
350
+ name: "parenthesisParslet",
351
+ accept: (type) => type === "(",
352
+ parsePrefix: (parser) => {
353
+ if (parser.consume("("), parser.consume(")"))
354
+ return {
355
+ type: "JsdocTypeParameterList",
356
+ elements: []
357
+ };
358
+ let result = parser.parseIntermediateType(Precedence.ALL);
359
+ if (!parser.consume(")"))
360
+ throw new Error("Unterminated parenthesis");
361
+ return result.type === "JsdocTypeParameterList" ? result : result.type === "JsdocTypeKeyValue" ? {
362
+ type: "JsdocTypeParameterList",
363
+ elements: [result]
364
+ } : {
365
+ type: "JsdocTypeParenthesis",
366
+ element: assertRootResult(result)
367
+ };
368
+ }
369
+ }), specialTypesParslet = composeParslet({
370
+ name: "specialTypesParslet",
371
+ accept: (type, next) => type === "?" && isQuestionMarkUnknownType(next) || type === "null" || type === "undefined" || type === "*",
372
+ parsePrefix: (parser) => {
373
+ if (parser.consume("null"))
374
+ return {
375
+ type: "JsdocTypeNull"
376
+ };
377
+ if (parser.consume("undefined"))
378
+ return {
379
+ type: "JsdocTypeUndefined"
380
+ };
381
+ if (parser.consume("*"))
382
+ return {
383
+ type: "JsdocTypeAny"
384
+ };
385
+ if (parser.consume("?"))
386
+ return {
387
+ type: "JsdocTypeUnknown"
388
+ };
389
+ throw new Error("Unacceptable token: " + parser.lexer.current.text);
390
+ }
391
+ }), notNullableParslet = composeParslet({
392
+ name: "notNullableParslet",
393
+ accept: (type) => type === "!",
394
+ precedence: Precedence.NULLABLE,
395
+ parsePrefix: (parser) => (parser.consume("!"), {
396
+ type: "JsdocTypeNotNullable",
397
+ element: parser.parseType(Precedence.NULLABLE),
398
+ meta: {
399
+ position: "prefix"
400
+ }
401
+ }),
402
+ parseInfix: (parser, left) => (parser.consume("!"), {
403
+ type: "JsdocTypeNotNullable",
404
+ element: assertRootResult(left),
405
+ meta: {
406
+ position: "suffix"
407
+ }
408
+ })
409
+ });
410
+ function createParameterListParslet({ allowTrailingComma }) {
411
+ return composeParslet({
412
+ name: "parameterListParslet",
413
+ accept: (type) => type === ",",
414
+ precedence: Precedence.PARAMETER_LIST,
415
+ parseInfix: (parser, left) => {
416
+ let elements = [
417
+ assertPlainKeyValueOrRootResult(left)
418
+ ];
419
+ parser.consume(",");
420
+ do
421
+ try {
422
+ let next = parser.parseIntermediateType(Precedence.PARAMETER_LIST);
423
+ elements.push(assertPlainKeyValueOrRootResult(next));
424
+ } catch (e) {
425
+ if (e instanceof NoParsletFoundError)
426
+ break;
427
+ throw e;
428
+ }
429
+ while (parser.consume(","));
430
+ if (elements.length > 0 && elements.slice(0, -1).some((e) => e.type === "JsdocTypeVariadic"))
431
+ throw new Error("Only the last parameter may be a rest parameter");
432
+ return {
433
+ type: "JsdocTypeParameterList",
434
+ elements
435
+ };
436
+ }
437
+ });
438
+ }
439
+ let genericParslet = composeParslet({
440
+ name: "genericParslet",
441
+ accept: (type, next) => type === "<" || type === "." && next === "<",
442
+ precedence: Precedence.GENERIC,
443
+ parseInfix: (parser, left) => {
444
+ let dot = parser.consume(".");
445
+ parser.consume("<");
446
+ let objects = [], infer = !1;
447
+ if (parser.consume("infer")) {
448
+ infer = !0;
449
+ let left2 = parser.parseIntermediateType(Precedence.SYMBOL);
450
+ if (left2.type !== "JsdocTypeName")
451
+ throw new UnexpectedTypeError(left2, "A typescript asserts always has to have a name on the left side.");
452
+ objects.push(left2);
453
+ } else
454
+ do
455
+ objects.push(parser.parseType(Precedence.PARAMETER_LIST));
456
+ while (parser.consume(","));
457
+ if (!parser.consume(">"))
458
+ throw new Error("Unterminated generic parameter list");
459
+ return Object.assign(Object.assign({ type: "JsdocTypeGeneric", left: assertRootResult(left), elements: objects }, infer ? { infer: !0 } : {}), { meta: {
460
+ brackets: "angle",
461
+ dot
462
+ } });
463
+ }
464
+ }), unionParslet = composeParslet({
465
+ name: "unionParslet",
466
+ accept: (type) => type === "|",
467
+ precedence: Precedence.UNION,
468
+ parseInfix: (parser, left) => {
469
+ parser.consume("|");
470
+ let elements = [];
471
+ do
472
+ elements.push(parser.parseType(Precedence.UNION));
473
+ while (parser.consume("|"));
474
+ return {
475
+ type: "JsdocTypeUnion",
476
+ elements: [assertRootResult(left), ...elements]
477
+ };
478
+ }
479
+ }), baseGrammar = [
480
+ nullableParslet,
481
+ optionalParslet,
482
+ numberParslet,
483
+ parenthesisParslet,
484
+ specialTypesParslet,
485
+ notNullableParslet,
486
+ createParameterListParslet({
487
+ allowTrailingComma: !0
488
+ }),
489
+ genericParslet,
490
+ unionParslet,
491
+ optionalParslet
492
+ ];
493
+ function createNamePathParslet({ allowSquareBracketsOnAnyType, allowJsdocNamePaths, pathGrammar: pathGrammar2 }) {
494
+ return function(parser, precedence, left) {
495
+ if (left == null || precedence >= Precedence.NAME_PATH)
496
+ return null;
497
+ let type = parser.lexer.current.type, next = parser.lexer.next.type;
498
+ if (!(type === "." && next !== "<" || type === "[" && (allowSquareBracketsOnAnyType || left.type === "JsdocTypeName") || allowJsdocNamePaths && (type === "~" || type === "#")))
499
+ return null;
500
+ let pathType, brackets = !1;
501
+ parser.consume(".") ? pathType = "property" : parser.consume("[") ? (pathType = "property-brackets", brackets = !0) : parser.consume("~") ? pathType = "inner" : (parser.consume("#"), pathType = "instance");
502
+ let pathParser = pathGrammar2 !== null ? new Parser(pathGrammar2, parser.lexer, parser) : parser, parsed = pathParser.parseIntermediateType(Precedence.NAME_PATH);
503
+ parser.acceptLexerState(pathParser);
504
+ let right;
505
+ switch (parsed.type) {
506
+ case "JsdocTypeName":
507
+ right = {
508
+ type: "JsdocTypeProperty",
509
+ value: parsed.value,
510
+ meta: {
511
+ quote: void 0
512
+ }
513
+ };
514
+ break;
515
+ case "JsdocTypeNumber":
516
+ right = {
517
+ type: "JsdocTypeProperty",
518
+ value: parsed.value.toString(10),
519
+ meta: {
520
+ quote: void 0
521
+ }
522
+ };
523
+ break;
524
+ case "JsdocTypeStringValue":
525
+ right = {
526
+ type: "JsdocTypeProperty",
527
+ value: parsed.value,
528
+ meta: {
529
+ quote: parsed.meta.quote
530
+ }
531
+ };
532
+ break;
533
+ case "JsdocTypeSpecialNamePath":
534
+ if (parsed.specialType === "event")
535
+ right = parsed;
536
+ else
537
+ throw new UnexpectedTypeError(parsed, "Type 'JsdocTypeSpecialNamePath' is only allowed with specialType 'event'");
538
+ break;
539
+ default:
540
+ throw new UnexpectedTypeError(parsed, "Expecting 'JsdocTypeName', 'JsdocTypeNumber', 'JsdocStringValue' or 'JsdocTypeSpecialNamePath'");
541
+ }
542
+ if (brackets && !parser.consume("]")) {
543
+ let token = parser.lexer.current;
544
+ throw new Error(`Unterminated square brackets. Next token is '${token.type}' with text '${token.text}'`);
545
+ }
546
+ return {
547
+ type: "JsdocTypeNamePath",
548
+ left: assertRootResult(left),
549
+ right,
550
+ pathType
551
+ };
552
+ };
553
+ }
554
+ function createNameParslet({ allowedAdditionalTokens }) {
555
+ return composeParslet({
556
+ name: "nameParslet",
557
+ accept: (type) => type === "Identifier" || type === "this" || type === "new" || allowedAdditionalTokens.includes(type),
558
+ parsePrefix: (parser) => {
559
+ let { type, text } = parser.lexer.current;
560
+ return parser.consume(type), {
561
+ type: "JsdocTypeName",
562
+ value: text
563
+ };
564
+ }
565
+ });
566
+ }
567
+ let stringValueParslet = composeParslet({
568
+ name: "stringValueParslet",
569
+ accept: (type) => type === "StringValue",
570
+ parsePrefix: (parser) => {
571
+ let text = parser.lexer.current.text;
572
+ return parser.consume("StringValue"), {
573
+ type: "JsdocTypeStringValue",
574
+ value: text.slice(1, -1),
575
+ meta: {
576
+ quote: text[0] === "'" ? "single" : "double"
577
+ }
578
+ };
579
+ }
580
+ });
581
+ function createSpecialNamePathParslet({ pathGrammar: pathGrammar2, allowedTypes }) {
582
+ return composeParslet({
583
+ name: "specialNamePathParslet",
584
+ accept: (type) => allowedTypes.includes(type),
585
+ parsePrefix: (parser) => {
586
+ let type = parser.lexer.current.type;
587
+ if (parser.consume(type), !parser.consume(":"))
588
+ return {
589
+ type: "JsdocTypeName",
590
+ value: type
591
+ };
592
+ let result, token = parser.lexer.current;
593
+ if (parser.consume("StringValue"))
594
+ result = {
595
+ type: "JsdocTypeSpecialNamePath",
596
+ value: token.text.slice(1, -1),
597
+ specialType: type,
598
+ meta: {
599
+ quote: token.text[0] === "'" ? "single" : "double"
600
+ }
601
+ };
602
+ else {
603
+ let value = "", allowed = ["Identifier", "@", "/"];
604
+ for (; allowed.some((type2) => parser.consume(type2)); )
605
+ value += token.text, token = parser.lexer.current;
606
+ result = {
607
+ type: "JsdocTypeSpecialNamePath",
608
+ value,
609
+ specialType: type,
610
+ meta: {
611
+ quote: void 0
612
+ }
613
+ };
614
+ }
615
+ let moduleParser = new Parser(pathGrammar2, parser.lexer, parser), moduleResult = moduleParser.parseInfixIntermediateType(result, Precedence.ALL);
616
+ return parser.acceptLexerState(moduleParser), assertRootResult(moduleResult);
617
+ }
618
+ });
619
+ }
620
+ let basePathGrammar = [
621
+ createNameParslet({
622
+ allowedAdditionalTokens: ["external", "module"]
623
+ }),
624
+ stringValueParslet,
625
+ numberParslet,
626
+ createNamePathParslet({
627
+ allowSquareBracketsOnAnyType: !1,
628
+ allowJsdocNamePaths: !0,
629
+ pathGrammar: null
630
+ })
631
+ ], pathGrammar = [
632
+ ...basePathGrammar,
633
+ createSpecialNamePathParslet({
634
+ allowedTypes: ["event"],
635
+ pathGrammar: basePathGrammar
636
+ })
637
+ ];
638
+ function getParameters(value) {
639
+ let parameters;
640
+ if (value.type === "JsdocTypeParameterList")
641
+ parameters = value.elements;
642
+ else if (value.type === "JsdocTypeParenthesis")
643
+ parameters = [value.element];
644
+ else
645
+ throw new UnexpectedTypeError(value);
646
+ return parameters.map((p) => assertPlainKeyValueOrRootResult(p));
647
+ }
648
+ function getUnnamedParameters(value) {
649
+ let parameters = getParameters(value);
650
+ if (parameters.some((p) => p.type === "JsdocTypeKeyValue"))
651
+ throw new Error("No parameter should be named");
652
+ return parameters;
653
+ }
654
+ function createFunctionParslet({ allowNamedParameters, allowNoReturnType, allowWithoutParenthesis, allowNewAsFunctionKeyword }) {
655
+ return composeParslet({
656
+ name: "functionParslet",
657
+ accept: (type, next) => type === "function" || allowNewAsFunctionKeyword && type === "new" && next === "(",
658
+ parsePrefix: (parser) => {
659
+ let newKeyword = parser.consume("new");
660
+ parser.consume("function");
661
+ let hasParenthesis = parser.lexer.current.type === "(";
662
+ if (!hasParenthesis) {
663
+ if (!allowWithoutParenthesis)
664
+ throw new Error("function is missing parameter list");
665
+ return {
666
+ type: "JsdocTypeName",
667
+ value: "function"
668
+ };
669
+ }
670
+ let result = {
671
+ type: "JsdocTypeFunction",
672
+ parameters: [],
673
+ arrow: !1,
674
+ constructor: newKeyword,
675
+ parenthesis: hasParenthesis
676
+ }, value = parser.parseIntermediateType(Precedence.FUNCTION);
677
+ if (allowNamedParameters === void 0)
678
+ result.parameters = getUnnamedParameters(value);
679
+ else {
680
+ if (newKeyword && value.type === "JsdocTypeFunction" && value.arrow)
681
+ return result = value, result.constructor = !0, result;
682
+ result.parameters = getParameters(value);
683
+ for (let p of result.parameters)
684
+ if (p.type === "JsdocTypeKeyValue" && !allowNamedParameters.includes(p.key))
685
+ throw new Error(`only allowed named parameters are ${allowNamedParameters.join(", ")} but got ${p.type}`);
686
+ }
687
+ if (parser.consume(":"))
688
+ result.returnType = parser.parseType(Precedence.PREFIX);
689
+ else if (!allowNoReturnType)
690
+ throw new Error("function is missing return type");
691
+ return result;
692
+ }
693
+ });
694
+ }
695
+ function createVariadicParslet({ allowPostfix, allowEnclosingBrackets }) {
696
+ return composeParslet({
697
+ name: "variadicParslet",
698
+ accept: (type) => type === "...",
699
+ precedence: Precedence.PREFIX,
700
+ parsePrefix: (parser) => {
701
+ parser.consume("...");
702
+ let brackets = allowEnclosingBrackets && parser.consume("[");
703
+ try {
704
+ let element = parser.parseType(Precedence.PREFIX);
705
+ if (brackets && !parser.consume("]"))
706
+ throw new Error("Unterminated variadic type. Missing ']'");
707
+ return {
708
+ type: "JsdocTypeVariadic",
709
+ element: assertRootResult(element),
710
+ meta: {
711
+ position: "prefix",
712
+ squareBrackets: brackets
713
+ }
714
+ };
715
+ } catch (e) {
716
+ if (e instanceof NoParsletFoundError) {
717
+ if (brackets)
718
+ throw new Error("Empty square brackets for variadic are not allowed.");
719
+ return {
720
+ type: "JsdocTypeVariadic",
721
+ meta: {
722
+ position: void 0,
723
+ squareBrackets: !1
724
+ }
725
+ };
726
+ } else
727
+ throw e;
728
+ }
729
+ },
730
+ parseInfix: allowPostfix ? (parser, left) => (parser.consume("..."), {
731
+ type: "JsdocTypeVariadic",
732
+ element: assertRootResult(left),
733
+ meta: {
734
+ position: "suffix",
735
+ squareBrackets: !1
736
+ }
737
+ }) : void 0
738
+ });
739
+ }
740
+ let symbolParslet = composeParslet({
741
+ name: "symbolParslet",
742
+ accept: (type) => type === "(",
743
+ precedence: Precedence.SYMBOL,
744
+ parseInfix: (parser, left) => {
745
+ if (left.type !== "JsdocTypeName")
746
+ throw new Error("Symbol expects a name on the left side. (Reacting on '(')");
747
+ parser.consume("(");
748
+ let result = {
749
+ type: "JsdocTypeSymbol",
750
+ value: left.value
751
+ };
752
+ if (!parser.consume(")")) {
753
+ let next = parser.parseIntermediateType(Precedence.SYMBOL);
754
+ if (result.element = assertNumberOrVariadicNameResult(next), !parser.consume(")"))
755
+ throw new Error("Symbol does not end after value");
756
+ }
757
+ return result;
758
+ }
759
+ }), arrayBracketsParslet = composeParslet({
760
+ name: "arrayBracketsParslet",
761
+ precedence: Precedence.ARRAY_BRACKETS,
762
+ accept: (type, next) => type === "[" && next === "]",
763
+ parseInfix: (parser, left) => (parser.consume("["), parser.consume("]"), {
764
+ type: "JsdocTypeGeneric",
765
+ left: {
766
+ type: "JsdocTypeName",
767
+ value: "Array"
768
+ },
769
+ elements: [
770
+ assertRootResult(left)
771
+ ],
772
+ meta: {
773
+ brackets: "square",
774
+ dot: !1
775
+ }
776
+ })
777
+ });
778
+ function createObjectParslet({ objectFieldGrammar: objectFieldGrammar2, allowKeyTypes }) {
779
+ return composeParslet({
780
+ name: "objectParslet",
781
+ accept: (type) => type === "{",
782
+ parsePrefix: (parser) => {
783
+ parser.consume("{");
784
+ let result = {
785
+ type: "JsdocTypeObject",
786
+ meta: {
787
+ separator: "comma"
788
+ },
789
+ elements: []
790
+ };
791
+ if (!parser.consume("}")) {
792
+ let separator, fieldParser = new Parser(objectFieldGrammar2, parser.lexer, parser);
793
+ for (; ; ) {
794
+ fieldParser.acceptLexerState(parser);
795
+ let field = fieldParser.parseIntermediateType(Precedence.OBJECT);
796
+ parser.acceptLexerState(fieldParser), field === void 0 && allowKeyTypes && (field = parser.parseIntermediateType(Precedence.OBJECT));
797
+ let optional = !1;
798
+ if (field.type === "JsdocTypeNullable" && (optional = !0, field = field.element), field.type === "JsdocTypeNumber" || field.type === "JsdocTypeName" || field.type === "JsdocTypeStringValue") {
799
+ let quote2;
800
+ field.type === "JsdocTypeStringValue" && (quote2 = field.meta.quote), result.elements.push({
801
+ type: "JsdocTypeObjectField",
802
+ key: field.value.toString(),
803
+ right: void 0,
804
+ optional,
805
+ readonly: !1,
806
+ meta: {
807
+ quote: quote2
808
+ }
809
+ });
810
+ } else if (field.type === "JsdocTypeObjectField" || field.type === "JsdocTypeJsdocObjectField")
811
+ result.elements.push(field);
812
+ else
813
+ throw new UnexpectedTypeError(field);
814
+ if (parser.lexer.current.startOfLine)
815
+ separator = "linebreak", parser.consume(",") || parser.consume(";");
816
+ else if (parser.consume(","))
817
+ separator = "comma";
818
+ else if (parser.consume(";"))
819
+ separator = "semicolon";
820
+ else
821
+ break;
822
+ if (parser.lexer.current.type === "}")
823
+ break;
824
+ }
825
+ if (result.meta.separator = separator ?? "comma", separator === "linebreak" && (result.meta.propertyIndent = " "), !parser.consume("}"))
826
+ throw new Error("Unterminated record type. Missing '}'");
827
+ }
828
+ return result;
829
+ }
830
+ });
831
+ }
832
+ function createObjectFieldParslet({ allowSquaredProperties, allowKeyTypes, allowReadonly, allowOptional }) {
833
+ return composeParslet({
834
+ name: "objectFieldParslet",
835
+ precedence: Precedence.KEY_VALUE,
836
+ accept: (type) => type === ":",
837
+ parseInfix: (parser, left) => {
838
+ var _a;
839
+ let optional = !1, readonlyProperty = !1;
840
+ allowOptional && left.type === "JsdocTypeNullable" && (optional = !0, left = left.element), allowReadonly && left.type === "JsdocTypeReadonlyProperty" && (readonlyProperty = !0, left = left.element);
841
+ let parentParser = (_a = parser.baseParser) !== null && _a !== void 0 ? _a : parser;
842
+ if (parentParser.acceptLexerState(parser), left.type === "JsdocTypeNumber" || left.type === "JsdocTypeName" || left.type === "JsdocTypeStringValue" || isSquaredProperty(left)) {
843
+ if (isSquaredProperty(left) && !allowSquaredProperties)
844
+ throw new UnexpectedTypeError(left);
845
+ parentParser.consume(":");
846
+ let quote2;
847
+ left.type === "JsdocTypeStringValue" && (quote2 = left.meta.quote);
848
+ let right = parentParser.parseType(Precedence.KEY_VALUE);
849
+ return parser.acceptLexerState(parentParser), {
850
+ type: "JsdocTypeObjectField",
851
+ key: isSquaredProperty(left) ? left : left.value.toString(),
852
+ right,
853
+ optional,
854
+ readonly: readonlyProperty,
855
+ meta: {
856
+ quote: quote2
857
+ }
858
+ };
859
+ } else {
860
+ if (!allowKeyTypes)
861
+ throw new UnexpectedTypeError(left);
862
+ parentParser.consume(":");
863
+ let right = parentParser.parseType(Precedence.KEY_VALUE);
864
+ return parser.acceptLexerState(parentParser), {
865
+ type: "JsdocTypeJsdocObjectField",
866
+ left: assertRootResult(left),
867
+ right
868
+ };
869
+ }
870
+ }
871
+ });
872
+ }
873
+ function createKeyValueParslet({ allowOptional, allowVariadic }) {
874
+ return composeParslet({
875
+ name: "keyValueParslet",
876
+ precedence: Precedence.KEY_VALUE,
877
+ accept: (type) => type === ":",
878
+ parseInfix: (parser, left) => {
879
+ let optional = !1, variadic = !1;
880
+ if (allowOptional && left.type === "JsdocTypeNullable" && (optional = !0, left = left.element), allowVariadic && left.type === "JsdocTypeVariadic" && left.element !== void 0 && (variadic = !0, left = left.element), left.type !== "JsdocTypeName")
881
+ throw new UnexpectedTypeError(left);
882
+ parser.consume(":");
883
+ let right = parser.parseType(Precedence.KEY_VALUE);
884
+ return {
885
+ type: "JsdocTypeKeyValue",
886
+ key: left.value,
887
+ right,
888
+ optional,
889
+ variadic
890
+ };
891
+ }
892
+ });
893
+ }
894
+ let jsdocBaseGrammar = [
895
+ ...baseGrammar,
896
+ createFunctionParslet({
897
+ allowWithoutParenthesis: !0,
898
+ allowNamedParameters: ["this", "new"],
899
+ allowNoReturnType: !0,
900
+ allowNewAsFunctionKeyword: !1
901
+ }),
902
+ stringValueParslet,
903
+ createSpecialNamePathParslet({
904
+ allowedTypes: ["module", "external", "event"],
905
+ pathGrammar
906
+ }),
907
+ createVariadicParslet({
908
+ allowEnclosingBrackets: !0,
909
+ allowPostfix: !0
910
+ }),
911
+ createNameParslet({
912
+ allowedAdditionalTokens: ["keyof"]
913
+ }),
914
+ symbolParslet,
915
+ arrayBracketsParslet,
916
+ createNamePathParslet({
917
+ allowSquareBracketsOnAnyType: !1,
918
+ allowJsdocNamePaths: !0,
919
+ pathGrammar
920
+ })
921
+ ], jsdocGrammar = [
922
+ ...jsdocBaseGrammar,
923
+ createObjectParslet({
924
+ // jsdoc syntax allows full types as keys, so we need to pull in the full grammar here
925
+ // we leave out the object type deliberately
926
+ objectFieldGrammar: [
927
+ createNameParslet({
928
+ allowedAdditionalTokens: ["typeof", "module", "in"]
929
+ }),
930
+ createObjectFieldParslet({
931
+ allowSquaredProperties: !1,
932
+ allowKeyTypes: !0,
933
+ allowOptional: !1,
934
+ allowReadonly: !1
935
+ }),
936
+ ...jsdocBaseGrammar
937
+ ],
938
+ allowKeyTypes: !0
939
+ }),
940
+ createKeyValueParslet({
941
+ allowOptional: !0,
942
+ allowVariadic: !0
943
+ })
944
+ ], typeOfParslet = composeParslet({
945
+ name: "typeOfParslet",
946
+ accept: (type) => type === "typeof",
947
+ parsePrefix: (parser) => (parser.consume("typeof"), {
948
+ type: "JsdocTypeTypeof",
949
+ element: parser.parseType(Precedence.KEY_OF_TYPE_OF)
950
+ })
951
+ }), objectFieldGrammar$1 = [
952
+ createNameParslet({
953
+ allowedAdditionalTokens: ["typeof", "module", "keyof", "event", "external", "in"]
954
+ }),
955
+ nullableParslet,
956
+ optionalParslet,
957
+ stringValueParslet,
958
+ numberParslet,
959
+ createObjectFieldParslet({
960
+ allowSquaredProperties: !1,
961
+ allowKeyTypes: !1,
962
+ allowOptional: !1,
963
+ allowReadonly: !1
964
+ })
965
+ ], closureGrammar = [
966
+ ...baseGrammar,
967
+ createObjectParslet({
968
+ allowKeyTypes: !1,
969
+ objectFieldGrammar: objectFieldGrammar$1
970
+ }),
971
+ createNameParslet({
972
+ allowedAdditionalTokens: ["event", "external", "in"]
973
+ }),
974
+ typeOfParslet,
975
+ createFunctionParslet({
976
+ allowWithoutParenthesis: !1,
977
+ allowNamedParameters: ["this", "new"],
978
+ allowNoReturnType: !0,
979
+ allowNewAsFunctionKeyword: !1
980
+ }),
981
+ createVariadicParslet({
982
+ allowEnclosingBrackets: !1,
983
+ allowPostfix: !1
984
+ }),
985
+ // additional name parslet is needed for some special cases
986
+ createNameParslet({
987
+ allowedAdditionalTokens: ["keyof"]
988
+ }),
989
+ createSpecialNamePathParslet({
990
+ allowedTypes: ["module"],
991
+ pathGrammar
992
+ }),
993
+ createNamePathParslet({
994
+ allowSquareBracketsOnAnyType: !1,
995
+ allowJsdocNamePaths: !0,
996
+ pathGrammar
997
+ }),
998
+ createKeyValueParslet({
999
+ allowOptional: !1,
1000
+ allowVariadic: !1
1001
+ }),
1002
+ symbolParslet
1003
+ ], assertsParslet = composeParslet({
1004
+ name: "assertsParslet",
1005
+ accept: (type) => type === "asserts",
1006
+ parsePrefix: (parser) => {
1007
+ parser.consume("asserts");
1008
+ let left = parser.parseIntermediateType(Precedence.SYMBOL);
1009
+ if (left.type !== "JsdocTypeName")
1010
+ throw new UnexpectedTypeError(left, "A typescript asserts always has to have a name on the left side.");
1011
+ return parser.consume("is") ? {
1012
+ type: "JsdocTypeAsserts",
1013
+ left,
1014
+ right: assertRootResult(parser.parseIntermediateType(Precedence.INFIX))
1015
+ } : {
1016
+ type: "JsdocTypeAssertsPlain",
1017
+ element: left
1018
+ };
1019
+ }
1020
+ });
1021
+ function createTupleParslet({ allowQuestionMark }) {
1022
+ return composeParslet({
1023
+ name: "tupleParslet",
1024
+ accept: (type) => type === "[",
1025
+ parsePrefix: (parser) => {
1026
+ parser.consume("[");
1027
+ let result = {
1028
+ type: "JsdocTypeTuple",
1029
+ elements: []
1030
+ };
1031
+ if (parser.consume("]"))
1032
+ return result;
1033
+ let typeList = parser.parseIntermediateType(Precedence.ALL);
1034
+ if (typeList.type === "JsdocTypeParameterList" ? typeList.elements[0].type === "JsdocTypeKeyValue" ? result.elements = typeList.elements.map(assertPlainKeyValueResult) : result.elements = typeList.elements.map(assertRootResult) : typeList.type === "JsdocTypeKeyValue" ? result.elements = [assertPlainKeyValueResult(typeList)] : result.elements = [assertRootResult(typeList)], !parser.consume("]"))
1035
+ throw new Error("Unterminated '['");
1036
+ if (result.elements.some((e) => e.type === "JsdocTypeUnknown"))
1037
+ throw new Error("Question mark in tuple not allowed");
1038
+ return result;
1039
+ }
1040
+ });
1041
+ }
1042
+ let keyOfParslet = composeParslet({
1043
+ name: "keyOfParslet",
1044
+ accept: (type) => type === "keyof",
1045
+ parsePrefix: (parser) => (parser.consume("keyof"), {
1046
+ type: "JsdocTypeKeyof",
1047
+ element: assertRootResult(parser.parseType(Precedence.KEY_OF_TYPE_OF))
1048
+ })
1049
+ }), importParslet = composeParslet({
1050
+ name: "importParslet",
1051
+ accept: (type) => type === "import",
1052
+ parsePrefix: (parser) => {
1053
+ if (parser.consume("import"), !parser.consume("("))
1054
+ throw new Error("Missing parenthesis after import keyword");
1055
+ let path = parser.parseType(Precedence.PREFIX);
1056
+ if (path.type !== "JsdocTypeStringValue")
1057
+ throw new Error("Only string values are allowed as paths for imports");
1058
+ if (!parser.consume(")"))
1059
+ throw new Error("Missing closing parenthesis after import keyword");
1060
+ return {
1061
+ type: "JsdocTypeImport",
1062
+ element: path
1063
+ };
1064
+ }
1065
+ }), readonlyPropertyParslet = composeParslet({
1066
+ name: "readonlyPropertyParslet",
1067
+ accept: (type) => type === "readonly",
1068
+ parsePrefix: (parser) => (parser.consume("readonly"), {
1069
+ type: "JsdocTypeReadonlyProperty",
1070
+ element: parser.parseIntermediateType(Precedence.KEY_VALUE)
1071
+ })
1072
+ }), arrowFunctionParslet = composeParslet({
1073
+ name: "arrowFunctionParslet",
1074
+ precedence: Precedence.ARROW,
1075
+ accept: (type) => type === "=>",
1076
+ parseInfix: (parser, left) => (parser.consume("=>"), {
1077
+ type: "JsdocTypeFunction",
1078
+ parameters: getParameters(left).map(assertPlainKeyValueOrNameResult),
1079
+ arrow: !0,
1080
+ constructor: !1,
1081
+ parenthesis: !0,
1082
+ returnType: parser.parseType(Precedence.OBJECT)
1083
+ })
1084
+ }), genericArrowFunctionParslet = composeParslet({
1085
+ name: "genericArrowFunctionParslet",
1086
+ accept: (type) => type === "<",
1087
+ parsePrefix: (parser) => {
1088
+ let typeParameters = [];
1089
+ parser.consume("<");
1090
+ do {
1091
+ let defaultValue, name = parser.parseIntermediateType(Precedence.SYMBOL);
1092
+ if (name.type === "JsdocTypeOptional" && (name = name.element, defaultValue = parser.parseType(Precedence.SYMBOL)), name.type !== "JsdocTypeName")
1093
+ throw new UnexpectedTypeError(name);
1094
+ let constraint;
1095
+ parser.consume("extends") && (constraint = parser.parseType(Precedence.SYMBOL), constraint.type === "JsdocTypeOptional" && (constraint = constraint.element, defaultValue = parser.parseType(Precedence.SYMBOL)));
1096
+ let typeParameter = {
1097
+ type: "JsdocTypeTypeParameter",
1098
+ name
1099
+ };
1100
+ if (constraint !== void 0 && (typeParameter.constraint = constraint), defaultValue !== void 0 && (typeParameter.defaultValue = defaultValue), typeParameters.push(typeParameter), parser.consume(">"))
1101
+ break;
1102
+ } while (parser.consume(","));
1103
+ let functionBase = parser.parseIntermediateType(Precedence.SYMBOL);
1104
+ return functionBase.typeParameters = typeParameters, functionBase;
1105
+ }
1106
+ }), intersectionParslet = composeParslet({
1107
+ name: "intersectionParslet",
1108
+ accept: (type) => type === "&",
1109
+ precedence: Precedence.INTERSECTION,
1110
+ parseInfix: (parser, left) => {
1111
+ parser.consume("&");
1112
+ let elements = [];
1113
+ do
1114
+ elements.push(parser.parseType(Precedence.INTERSECTION));
1115
+ while (parser.consume("&"));
1116
+ return {
1117
+ type: "JsdocTypeIntersection",
1118
+ elements: [assertRootResult(left), ...elements]
1119
+ };
1120
+ }
1121
+ }), predicateParslet = composeParslet({
1122
+ name: "predicateParslet",
1123
+ precedence: Precedence.INFIX,
1124
+ accept: (type) => type === "is",
1125
+ parseInfix: (parser, left) => {
1126
+ if (left.type !== "JsdocTypeName")
1127
+ throw new UnexpectedTypeError(left, "A typescript predicate always has to have a name on the left side.");
1128
+ return parser.consume("is"), {
1129
+ type: "JsdocTypePredicate",
1130
+ left,
1131
+ right: assertRootResult(parser.parseIntermediateType(Precedence.INFIX))
1132
+ };
1133
+ }
1134
+ }), objectSquaredPropertyParslet = composeParslet({
1135
+ name: "objectSquareBracketPropertyParslet",
1136
+ accept: (type) => type === "[",
1137
+ parsePrefix: (parser) => {
1138
+ if (parser.baseParser === void 0)
1139
+ throw new Error("Only allowed inside object grammar");
1140
+ parser.consume("[");
1141
+ let key = parser.lexer.current.text;
1142
+ parser.consume("Identifier");
1143
+ let result;
1144
+ if (parser.consume(":")) {
1145
+ let parentParser = parser.baseParser;
1146
+ parentParser.acceptLexerState(parser), result = {
1147
+ type: "JsdocTypeIndexSignature",
1148
+ key,
1149
+ right: parentParser.parseType(Precedence.INDEX_BRACKETS)
1150
+ }, parser.acceptLexerState(parentParser);
1151
+ } else if (parser.consume("in")) {
1152
+ let parentParser = parser.baseParser;
1153
+ parentParser.acceptLexerState(parser), result = {
1154
+ type: "JsdocTypeMappedType",
1155
+ key,
1156
+ right: parentParser.parseType(Precedence.ARRAY_BRACKETS)
1157
+ }, parser.acceptLexerState(parentParser);
1158
+ } else
1159
+ throw new Error("Missing ':' or 'in' inside square bracketed property.");
1160
+ if (!parser.consume("]"))
1161
+ throw new Error("Unterminated square brackets");
1162
+ return result;
1163
+ }
1164
+ }), readonlyArrayParslet = composeParslet({
1165
+ name: "readonlyArrayParslet",
1166
+ accept: (type) => type === "readonly",
1167
+ parsePrefix: (parser) => (parser.consume("readonly"), {
1168
+ type: "JsdocTypeReadonlyArray",
1169
+ element: assertArrayOrTupleResult(parser.parseIntermediateType(Precedence.ALL))
1170
+ })
1171
+ }), conditionalParslet = composeParslet({
1172
+ name: "conditionalParslet",
1173
+ precedence: Precedence.INFIX,
1174
+ accept: (type) => type === "extends",
1175
+ parseInfix: (parser, left) => {
1176
+ parser.consume("extends");
1177
+ let extendsType = parser.parseType(Precedence.KEY_OF_TYPE_OF).element, trueType = parser.parseType(Precedence.INFIX);
1178
+ return parser.consume(":"), {
1179
+ type: "JsdocTypeConditional",
1180
+ checksType: assertRootResult(left),
1181
+ extendsType,
1182
+ trueType,
1183
+ falseType: parser.parseType(Precedence.INFIX)
1184
+ };
1185
+ }
1186
+ }), objectFieldGrammar = [
1187
+ readonlyPropertyParslet,
1188
+ createNameParslet({
1189
+ allowedAdditionalTokens: ["typeof", "module", "keyof", "event", "external", "in"]
1190
+ }),
1191
+ nullableParslet,
1192
+ optionalParslet,
1193
+ stringValueParslet,
1194
+ numberParslet,
1195
+ createObjectFieldParslet({
1196
+ allowSquaredProperties: !0,
1197
+ allowKeyTypes: !1,
1198
+ allowOptional: !0,
1199
+ allowReadonly: !0
1200
+ }),
1201
+ objectSquaredPropertyParslet
1202
+ ], typescriptGrammar = [
1203
+ ...baseGrammar,
1204
+ createObjectParslet({
1205
+ allowKeyTypes: !1,
1206
+ objectFieldGrammar
1207
+ }),
1208
+ readonlyArrayParslet,
1209
+ typeOfParslet,
1210
+ keyOfParslet,
1211
+ importParslet,
1212
+ stringValueParslet,
1213
+ createFunctionParslet({
1214
+ allowWithoutParenthesis: !0,
1215
+ allowNoReturnType: !1,
1216
+ allowNamedParameters: ["this", "new", "args"],
1217
+ allowNewAsFunctionKeyword: !0
1218
+ }),
1219
+ createTupleParslet({
1220
+ allowQuestionMark: !1
1221
+ }),
1222
+ createVariadicParslet({
1223
+ allowEnclosingBrackets: !1,
1224
+ allowPostfix: !1
1225
+ }),
1226
+ assertsParslet,
1227
+ conditionalParslet,
1228
+ createNameParslet({
1229
+ allowedAdditionalTokens: ["event", "external", "in"]
1230
+ }),
1231
+ createSpecialNamePathParslet({
1232
+ allowedTypes: ["module"],
1233
+ pathGrammar
1234
+ }),
1235
+ arrayBracketsParslet,
1236
+ arrowFunctionParslet,
1237
+ genericArrowFunctionParslet,
1238
+ createNamePathParslet({
1239
+ allowSquareBracketsOnAnyType: !0,
1240
+ allowJsdocNamePaths: !1,
1241
+ pathGrammar
1242
+ }),
1243
+ intersectionParslet,
1244
+ predicateParslet,
1245
+ createKeyValueParslet({
1246
+ allowVariadic: !0,
1247
+ allowOptional: !0
1248
+ })
1249
+ ];
1250
+ function parse3(expression, mode) {
1251
+ switch (mode) {
1252
+ case "closure":
1253
+ return new Parser(closureGrammar, expression).parse();
1254
+ case "jsdoc":
1255
+ return new Parser(jsdocGrammar, expression).parse();
1256
+ case "typescript":
1257
+ return new Parser(typescriptGrammar, expression).parse();
1258
+ }
1259
+ }
1260
+ function tryParse(expression, modes = ["typescript", "closure", "jsdoc"]) {
1261
+ let error;
1262
+ for (let mode of modes)
1263
+ try {
1264
+ return parse3(expression, mode);
1265
+ } catch (e) {
1266
+ error = e;
1267
+ }
1268
+ throw error;
1269
+ }
1270
+ function transform(rules2, parseResult) {
1271
+ let rule = rules2[parseResult.type];
1272
+ if (rule === void 0)
1273
+ throw new Error(`In this set of transform rules exists no rule for type ${parseResult.type}.`);
1274
+ return rule(parseResult, (aParseResult) => transform(rules2, aParseResult));
1275
+ }
1276
+ function notAvailableTransform(parseResult) {
1277
+ throw new Error("This transform is not available. Are you trying the correct parsing mode?");
1278
+ }
1279
+ function extractSpecialParams(source) {
1280
+ let result = {
1281
+ params: []
1282
+ };
1283
+ for (let param of source.parameters)
1284
+ param.type === "JsdocTypeKeyValue" ? param.key === "this" ? result.this = param.right : param.key === "new" ? result.new = param.right : result.params.push(param) : result.params.push(param);
1285
+ return result;
1286
+ }
1287
+ function applyPosition(position, target, value) {
1288
+ return position === "prefix" ? value + target : target + value;
1289
+ }
1290
+ function quote(value, quote2) {
1291
+ switch (quote2) {
1292
+ case "double":
1293
+ return `"${value}"`;
1294
+ case "single":
1295
+ return `'${value}'`;
1296
+ case void 0:
1297
+ return value;
1298
+ }
1299
+ }
1300
+ function stringifyRules2() {
1301
+ return {
1302
+ JsdocTypeParenthesis: (result, transform2) => `(${result.element !== void 0 ? transform2(result.element) : ""})`,
1303
+ JsdocTypeKeyof: (result, transform2) => `keyof ${transform2(result.element)}`,
1304
+ JsdocTypeFunction: (result, transform2) => {
1305
+ var _a;
1306
+ if (result.arrow) {
1307
+ if (result.returnType === void 0)
1308
+ throw new Error("Arrow function needs a return type.");
1309
+ let stringified = `${result.typeParameters !== void 0 ? `<${(_a = result.typeParameters.map(transform2).join(", ")) !== null && _a !== void 0 ? _a : ""}>` : ""}(${result.parameters.map(transform2).join(", ")}) => ${transform2(result.returnType)}`;
1310
+ return result.constructor && (stringified = "new " + stringified), stringified;
1311
+ } else {
1312
+ let stringified = result.constructor ? "new" : "function";
1313
+ return result.parenthesis && (stringified += `(${result.parameters.map(transform2).join(", ")})`, result.returnType !== void 0 && (stringified += `: ${transform2(result.returnType)}`)), stringified;
1314
+ }
1315
+ },
1316
+ JsdocTypeName: (result) => result.value,
1317
+ JsdocTypeTuple: (result, transform2) => `[${result.elements.map(transform2).join(", ")}]`,
1318
+ JsdocTypeVariadic: (result, transform2) => result.meta.position === void 0 ? "..." : applyPosition(result.meta.position, transform2(result.element), "..."),
1319
+ JsdocTypeNamePath: (result, transform2) => {
1320
+ let left = transform2(result.left), right = transform2(result.right);
1321
+ switch (result.pathType) {
1322
+ case "inner":
1323
+ return `${left}~${right}`;
1324
+ case "instance":
1325
+ return `${left}#${right}`;
1326
+ case "property":
1327
+ return `${left}.${right}`;
1328
+ case "property-brackets":
1329
+ return `${left}[${right}]`;
1330
+ }
1331
+ },
1332
+ JsdocTypeStringValue: (result) => quote(result.value, result.meta.quote),
1333
+ JsdocTypeAny: () => "*",
1334
+ JsdocTypeGeneric: (result, transform2) => {
1335
+ if (result.meta.brackets === "square") {
1336
+ let element = result.elements[0], transformed = transform2(element);
1337
+ return element.type === "JsdocTypeUnion" || element.type === "JsdocTypeIntersection" ? `(${transformed})[]` : `${transformed}[]`;
1338
+ } else
1339
+ return `${transform2(result.left)}${result.meta.dot ? "." : ""}<${result.infer === !0 ? "infer " : ""}${result.elements.map(transform2).join(", ")}>`;
1340
+ },
1341
+ JsdocTypeImport: (result, transform2) => `import(${transform2(result.element)})`,
1342
+ JsdocTypeObjectField: (result, transform2) => {
1343
+ let text = "";
1344
+ return result.readonly && (text += "readonly "), typeof result.key == "string" ? text += quote(result.key, result.meta.quote) : text += transform2(result.key), result.optional && (text += "?"), result.right === void 0 ? text : text + `: ${transform2(result.right)}`;
1345
+ },
1346
+ JsdocTypeJsdocObjectField: (result, transform2) => `${transform2(result.left)}: ${transform2(result.right)}`,
1347
+ JsdocTypeKeyValue: (result, transform2) => {
1348
+ let text = result.key;
1349
+ return result.optional && (text += "?"), result.variadic && (text = "..." + text), result.right === void 0 ? text : text + `: ${transform2(result.right)}`;
1350
+ },
1351
+ JsdocTypeSpecialNamePath: (result) => `${result.specialType}:${quote(result.value, result.meta.quote)}`,
1352
+ JsdocTypeNotNullable: (result, transform2) => applyPosition(result.meta.position, transform2(result.element), "!"),
1353
+ JsdocTypeNull: () => "null",
1354
+ JsdocTypeNullable: (result, transform2) => applyPosition(result.meta.position, transform2(result.element), "?"),
1355
+ JsdocTypeNumber: (result) => result.value.toString(),
1356
+ JsdocTypeObject: (result, transform2) => {
1357
+ var _a, _b;
1358
+ return `{${(result.meta.separator === "linebreak" && result.elements.length > 1 ? `
1359
+ ` + ((_a = result.meta.propertyIndent) !== null && _a !== void 0 ? _a : "") : "") + result.elements.map(transform2).join(result.meta.separator === "comma" ? ", " : result.meta.separator === "linebreak" ? `
1360
+ ` + ((_b = result.meta.propertyIndent) !== null && _b !== void 0 ? _b : "") : "; ") + (result.meta.separator === "linebreak" && result.elements.length > 1 ? `
1361
+ ` : "")}}`;
1362
+ },
1363
+ JsdocTypeOptional: (result, transform2) => applyPosition(result.meta.position, transform2(result.element), "="),
1364
+ JsdocTypeSymbol: (result, transform2) => `${result.value}(${result.element !== void 0 ? transform2(result.element) : ""})`,
1365
+ JsdocTypeTypeof: (result, transform2) => `typeof ${transform2(result.element)}`,
1366
+ JsdocTypeUndefined: () => "undefined",
1367
+ JsdocTypeUnion: (result, transform2) => result.elements.map(transform2).join(" | "),
1368
+ JsdocTypeUnknown: () => "?",
1369
+ JsdocTypeIntersection: (result, transform2) => result.elements.map(transform2).join(" & "),
1370
+ JsdocTypeProperty: (result) => quote(result.value, result.meta.quote),
1371
+ JsdocTypePredicate: (result, transform2) => `${transform2(result.left)} is ${transform2(result.right)}`,
1372
+ JsdocTypeIndexSignature: (result, transform2) => `[${result.key}: ${transform2(result.right)}]`,
1373
+ JsdocTypeMappedType: (result, transform2) => `[${result.key} in ${transform2(result.right)}]`,
1374
+ JsdocTypeAsserts: (result, transform2) => `asserts ${transform2(result.left)} is ${transform2(result.right)}`,
1375
+ JsdocTypeReadonlyArray: (result, transform2) => `readonly ${transform2(result.element)}`,
1376
+ JsdocTypeAssertsPlain: (result, transform2) => `asserts ${transform2(result.element)}`,
1377
+ JsdocTypeConditional: (result, transform2) => `${transform2(result.checksType)} extends ${transform2(result.extendsType)} ? ${transform2(result.trueType)} : ${transform2(result.falseType)}`,
1378
+ JsdocTypeTypeParameter: (result, transform2) => `${transform2(result.name)}${result.constraint !== void 0 ? ` extends ${transform2(result.constraint)}` : ""}${result.defaultValue !== void 0 ? ` = ${transform2(result.defaultValue)}` : ""}`
1379
+ };
1380
+ }
1381
+ let storedStringifyRules = stringifyRules2();
1382
+ function stringify2(result) {
1383
+ return transform(storedStringifyRules, result);
1384
+ }
1385
+ let reservedWords = [
1386
+ "null",
1387
+ "true",
1388
+ "false",
1389
+ "break",
1390
+ "case",
1391
+ "catch",
1392
+ "class",
1393
+ "const",
1394
+ "continue",
1395
+ "debugger",
1396
+ "default",
1397
+ "delete",
1398
+ "do",
1399
+ "else",
1400
+ "export",
1401
+ "extends",
1402
+ "finally",
1403
+ "for",
1404
+ "function",
1405
+ "if",
1406
+ "import",
1407
+ "in",
1408
+ "instanceof",
1409
+ "new",
1410
+ "return",
1411
+ "super",
1412
+ "switch",
1413
+ "this",
1414
+ "throw",
1415
+ "try",
1416
+ "typeof",
1417
+ "var",
1418
+ "void",
1419
+ "while",
1420
+ "with",
1421
+ "yield"
1422
+ ];
1423
+ function makeName(value) {
1424
+ let result = {
1425
+ type: "NameExpression",
1426
+ name: value
1427
+ };
1428
+ return reservedWords.includes(value) && (result.reservedWord = !0), result;
1429
+ }
1430
+ let catharsisTransformRules = {
1431
+ JsdocTypeOptional: (result, transform2) => {
1432
+ let transformed = transform2(result.element);
1433
+ return transformed.optional = !0, transformed;
1434
+ },
1435
+ JsdocTypeNullable: (result, transform2) => {
1436
+ let transformed = transform2(result.element);
1437
+ return transformed.nullable = !0, transformed;
1438
+ },
1439
+ JsdocTypeNotNullable: (result, transform2) => {
1440
+ let transformed = transform2(result.element);
1441
+ return transformed.nullable = !1, transformed;
1442
+ },
1443
+ JsdocTypeVariadic: (result, transform2) => {
1444
+ if (result.element === void 0)
1445
+ throw new Error("dots without value are not allowed in catharsis mode");
1446
+ let transformed = transform2(result.element);
1447
+ return transformed.repeatable = !0, transformed;
1448
+ },
1449
+ JsdocTypeAny: () => ({
1450
+ type: "AllLiteral"
1451
+ }),
1452
+ JsdocTypeNull: () => ({
1453
+ type: "NullLiteral"
1454
+ }),
1455
+ JsdocTypeStringValue: (result) => makeName(quote(result.value, result.meta.quote)),
1456
+ JsdocTypeUndefined: () => ({
1457
+ type: "UndefinedLiteral"
1458
+ }),
1459
+ JsdocTypeUnknown: () => ({
1460
+ type: "UnknownLiteral"
1461
+ }),
1462
+ JsdocTypeFunction: (result, transform2) => {
1463
+ let params = extractSpecialParams(result), transformed = {
1464
+ type: "FunctionType",
1465
+ params: params.params.map(transform2)
1466
+ };
1467
+ return params.this !== void 0 && (transformed.this = transform2(params.this)), params.new !== void 0 && (transformed.new = transform2(params.new)), result.returnType !== void 0 && (transformed.result = transform2(result.returnType)), transformed;
1468
+ },
1469
+ JsdocTypeGeneric: (result, transform2) => ({
1470
+ type: "TypeApplication",
1471
+ applications: result.elements.map((o) => transform2(o)),
1472
+ expression: transform2(result.left)
1473
+ }),
1474
+ JsdocTypeSpecialNamePath: (result) => makeName(result.specialType + ":" + quote(result.value, result.meta.quote)),
1475
+ JsdocTypeName: (result) => result.value !== "function" ? makeName(result.value) : {
1476
+ type: "FunctionType",
1477
+ params: []
1478
+ },
1479
+ JsdocTypeNumber: (result) => makeName(result.value.toString()),
1480
+ JsdocTypeObject: (result, transform2) => {
1481
+ let transformed = {
1482
+ type: "RecordType",
1483
+ fields: []
1484
+ };
1485
+ for (let field of result.elements)
1486
+ field.type !== "JsdocTypeObjectField" && field.type !== "JsdocTypeJsdocObjectField" ? transformed.fields.push({
1487
+ type: "FieldType",
1488
+ key: transform2(field),
1489
+ value: void 0
1490
+ }) : transformed.fields.push(transform2(field));
1491
+ return transformed;
1492
+ },
1493
+ JsdocTypeObjectField: (result, transform2) => {
1494
+ if (typeof result.key != "string")
1495
+ throw new Error("Index signatures and mapped types are not supported");
1496
+ return {
1497
+ type: "FieldType",
1498
+ key: makeName(quote(result.key, result.meta.quote)),
1499
+ value: result.right === void 0 ? void 0 : transform2(result.right)
1500
+ };
1501
+ },
1502
+ JsdocTypeJsdocObjectField: (result, transform2) => ({
1503
+ type: "FieldType",
1504
+ key: transform2(result.left),
1505
+ value: transform2(result.right)
1506
+ }),
1507
+ JsdocTypeUnion: (result, transform2) => ({
1508
+ type: "TypeUnion",
1509
+ elements: result.elements.map((e) => transform2(e))
1510
+ }),
1511
+ JsdocTypeKeyValue: (result, transform2) => ({
1512
+ type: "FieldType",
1513
+ key: makeName(result.key),
1514
+ value: result.right === void 0 ? void 0 : transform2(result.right)
1515
+ }),
1516
+ JsdocTypeNamePath: (result, transform2) => {
1517
+ let leftResult = transform2(result.left), rightValue;
1518
+ result.right.type === "JsdocTypeSpecialNamePath" ? rightValue = transform2(result.right).name : rightValue = quote(result.right.value, result.right.meta.quote);
1519
+ let joiner = result.pathType === "inner" ? "~" : result.pathType === "instance" ? "#" : ".";
1520
+ return makeName(`${leftResult.name}${joiner}${rightValue}`);
1521
+ },
1522
+ JsdocTypeSymbol: (result) => {
1523
+ let value = "", element = result.element, trailingDots = !1;
1524
+ return element?.type === "JsdocTypeVariadic" && (element.meta.position === "prefix" ? value = "..." : trailingDots = !0, element = element.element), element?.type === "JsdocTypeName" ? value += element.value : element?.type === "JsdocTypeNumber" && (value += element.value.toString()), trailingDots && (value += "..."), makeName(`${result.value}(${value})`);
1525
+ },
1526
+ JsdocTypeParenthesis: (result, transform2) => transform2(assertRootResult(result.element)),
1527
+ JsdocTypeMappedType: notAvailableTransform,
1528
+ JsdocTypeIndexSignature: notAvailableTransform,
1529
+ JsdocTypeImport: notAvailableTransform,
1530
+ JsdocTypeKeyof: notAvailableTransform,
1531
+ JsdocTypeTuple: notAvailableTransform,
1532
+ JsdocTypeTypeof: notAvailableTransform,
1533
+ JsdocTypeIntersection: notAvailableTransform,
1534
+ JsdocTypeProperty: notAvailableTransform,
1535
+ JsdocTypePredicate: notAvailableTransform,
1536
+ JsdocTypeAsserts: notAvailableTransform,
1537
+ JsdocTypeReadonlyArray: notAvailableTransform,
1538
+ JsdocTypeAssertsPlain: notAvailableTransform,
1539
+ JsdocTypeConditional: notAvailableTransform,
1540
+ JsdocTypeTypeParameter: notAvailableTransform
1541
+ };
1542
+ function catharsisTransform(result) {
1543
+ return transform(catharsisTransformRules, result);
1544
+ }
1545
+ function getQuoteStyle(quote2) {
1546
+ switch (quote2) {
1547
+ case void 0:
1548
+ return "none";
1549
+ case "single":
1550
+ return "single";
1551
+ case "double":
1552
+ return "double";
1553
+ }
1554
+ }
1555
+ function getMemberType(type) {
1556
+ switch (type) {
1557
+ case "inner":
1558
+ return "INNER_MEMBER";
1559
+ case "instance":
1560
+ return "INSTANCE_MEMBER";
1561
+ case "property":
1562
+ return "MEMBER";
1563
+ case "property-brackets":
1564
+ return "MEMBER";
1565
+ }
1566
+ }
1567
+ function nestResults(type, results) {
1568
+ return results.length === 2 ? {
1569
+ type,
1570
+ left: results[0],
1571
+ right: results[1]
1572
+ } : {
1573
+ type,
1574
+ left: results[0],
1575
+ right: nestResults(type, results.slice(1))
1576
+ };
1577
+ }
1578
+ let jtpRules = {
1579
+ JsdocTypeOptional: (result, transform2) => ({
1580
+ type: "OPTIONAL",
1581
+ value: transform2(result.element),
1582
+ meta: {
1583
+ syntax: result.meta.position === "prefix" ? "PREFIX_EQUAL_SIGN" : "SUFFIX_EQUALS_SIGN"
1584
+ }
1585
+ }),
1586
+ JsdocTypeNullable: (result, transform2) => ({
1587
+ type: "NULLABLE",
1588
+ value: transform2(result.element),
1589
+ meta: {
1590
+ syntax: result.meta.position === "prefix" ? "PREFIX_QUESTION_MARK" : "SUFFIX_QUESTION_MARK"
1591
+ }
1592
+ }),
1593
+ JsdocTypeNotNullable: (result, transform2) => ({
1594
+ type: "NOT_NULLABLE",
1595
+ value: transform2(result.element),
1596
+ meta: {
1597
+ syntax: result.meta.position === "prefix" ? "PREFIX_BANG" : "SUFFIX_BANG"
1598
+ }
1599
+ }),
1600
+ JsdocTypeVariadic: (result, transform2) => {
1601
+ let transformed = {
1602
+ type: "VARIADIC",
1603
+ meta: {
1604
+ syntax: result.meta.position === "prefix" ? "PREFIX_DOTS" : result.meta.position === "suffix" ? "SUFFIX_DOTS" : "ONLY_DOTS"
1605
+ }
1606
+ };
1607
+ return result.element !== void 0 && (transformed.value = transform2(result.element)), transformed;
1608
+ },
1609
+ JsdocTypeName: (result) => ({
1610
+ type: "NAME",
1611
+ name: result.value
1612
+ }),
1613
+ JsdocTypeTypeof: (result, transform2) => ({
1614
+ type: "TYPE_QUERY",
1615
+ name: transform2(result.element)
1616
+ }),
1617
+ JsdocTypeTuple: (result, transform2) => ({
1618
+ type: "TUPLE",
1619
+ entries: result.elements.map(transform2)
1620
+ }),
1621
+ JsdocTypeKeyof: (result, transform2) => ({
1622
+ type: "KEY_QUERY",
1623
+ value: transform2(result.element)
1624
+ }),
1625
+ JsdocTypeImport: (result) => ({
1626
+ type: "IMPORT",
1627
+ path: {
1628
+ type: "STRING_VALUE",
1629
+ quoteStyle: getQuoteStyle(result.element.meta.quote),
1630
+ string: result.element.value
1631
+ }
1632
+ }),
1633
+ JsdocTypeUndefined: () => ({
1634
+ type: "NAME",
1635
+ name: "undefined"
1636
+ }),
1637
+ JsdocTypeAny: () => ({
1638
+ type: "ANY"
1639
+ }),
1640
+ JsdocTypeFunction: (result, transform2) => {
1641
+ let specialParams = extractSpecialParams(result), transformed = {
1642
+ type: result.arrow ? "ARROW" : "FUNCTION",
1643
+ params: specialParams.params.map((param) => {
1644
+ if (param.type === "JsdocTypeKeyValue") {
1645
+ if (param.right === void 0)
1646
+ throw new Error("Function parameter without ':' is not expected to be 'KEY_VALUE'");
1647
+ return {
1648
+ type: "NAMED_PARAMETER",
1649
+ name: param.key,
1650
+ typeName: transform2(param.right)
1651
+ };
1652
+ } else
1653
+ return transform2(param);
1654
+ }),
1655
+ new: null,
1656
+ returns: null
1657
+ };
1658
+ return specialParams.this !== void 0 ? transformed.this = transform2(specialParams.this) : result.arrow || (transformed.this = null), specialParams.new !== void 0 && (transformed.new = transform2(specialParams.new)), result.returnType !== void 0 && (transformed.returns = transform2(result.returnType)), transformed;
1659
+ },
1660
+ JsdocTypeGeneric: (result, transform2) => {
1661
+ let transformed = {
1662
+ type: "GENERIC",
1663
+ subject: transform2(result.left),
1664
+ objects: result.elements.map(transform2),
1665
+ meta: {
1666
+ syntax: result.meta.brackets === "square" ? "SQUARE_BRACKET" : result.meta.dot ? "ANGLE_BRACKET_WITH_DOT" : "ANGLE_BRACKET"
1667
+ }
1668
+ };
1669
+ return result.meta.brackets === "square" && result.elements[0].type === "JsdocTypeFunction" && !result.elements[0].parenthesis && (transformed.objects[0] = {
1670
+ type: "NAME",
1671
+ name: "function"
1672
+ }), transformed;
1673
+ },
1674
+ JsdocTypeObjectField: (result, transform2) => {
1675
+ if (typeof result.key != "string")
1676
+ throw new Error("Index signatures and mapped types are not supported");
1677
+ if (result.right === void 0)
1678
+ return {
1679
+ type: "RECORD_ENTRY",
1680
+ key: result.key,
1681
+ quoteStyle: getQuoteStyle(result.meta.quote),
1682
+ value: null,
1683
+ readonly: !1
1684
+ };
1685
+ let right = transform2(result.right);
1686
+ return result.optional && (right = {
1687
+ type: "OPTIONAL",
1688
+ value: right,
1689
+ meta: {
1690
+ syntax: "SUFFIX_KEY_QUESTION_MARK"
1691
+ }
1692
+ }), {
1693
+ type: "RECORD_ENTRY",
1694
+ key: result.key.toString(),
1695
+ quoteStyle: getQuoteStyle(result.meta.quote),
1696
+ value: right,
1697
+ readonly: !1
1698
+ };
1699
+ },
1700
+ JsdocTypeJsdocObjectField: () => {
1701
+ throw new Error("Keys may not be typed in jsdoctypeparser.");
1702
+ },
1703
+ JsdocTypeKeyValue: (result, transform2) => {
1704
+ if (result.right === void 0)
1705
+ return {
1706
+ type: "RECORD_ENTRY",
1707
+ key: result.key,
1708
+ quoteStyle: "none",
1709
+ value: null,
1710
+ readonly: !1
1711
+ };
1712
+ let right = transform2(result.right);
1713
+ return result.optional && (right = {
1714
+ type: "OPTIONAL",
1715
+ value: right,
1716
+ meta: {
1717
+ syntax: "SUFFIX_KEY_QUESTION_MARK"
1718
+ }
1719
+ }), {
1720
+ type: "RECORD_ENTRY",
1721
+ key: result.key,
1722
+ quoteStyle: "none",
1723
+ value: right,
1724
+ readonly: !1
1725
+ };
1726
+ },
1727
+ JsdocTypeObject: (result, transform2) => {
1728
+ let entries = [];
1729
+ for (let field of result.elements)
1730
+ (field.type === "JsdocTypeObjectField" || field.type === "JsdocTypeJsdocObjectField") && entries.push(transform2(field));
1731
+ return {
1732
+ type: "RECORD",
1733
+ entries
1734
+ };
1735
+ },
1736
+ JsdocTypeSpecialNamePath: (result) => {
1737
+ if (result.specialType !== "module")
1738
+ throw new Error(`jsdoctypeparser does not support type ${result.specialType} at this point.`);
1739
+ return {
1740
+ type: "MODULE",
1741
+ value: {
1742
+ type: "FILE_PATH",
1743
+ quoteStyle: getQuoteStyle(result.meta.quote),
1744
+ path: result.value
1745
+ }
1746
+ };
1747
+ },
1748
+ JsdocTypeNamePath: (result, transform2) => {
1749
+ let hasEventPrefix = !1, name, quoteStyle;
1750
+ result.right.type === "JsdocTypeSpecialNamePath" && result.right.specialType === "event" ? (hasEventPrefix = !0, name = result.right.value, quoteStyle = getQuoteStyle(result.right.meta.quote)) : (name = result.right.value, quoteStyle = getQuoteStyle(result.right.meta.quote));
1751
+ let transformed = {
1752
+ type: getMemberType(result.pathType),
1753
+ owner: transform2(result.left),
1754
+ name,
1755
+ quoteStyle,
1756
+ hasEventPrefix
1757
+ };
1758
+ if (transformed.owner.type === "MODULE") {
1759
+ let tModule = transformed.owner;
1760
+ return transformed.owner = transformed.owner.value, tModule.value = transformed, tModule;
1761
+ } else
1762
+ return transformed;
1763
+ },
1764
+ JsdocTypeUnion: (result, transform2) => nestResults("UNION", result.elements.map(transform2)),
1765
+ JsdocTypeParenthesis: (result, transform2) => ({
1766
+ type: "PARENTHESIS",
1767
+ value: transform2(assertRootResult(result.element))
1768
+ }),
1769
+ JsdocTypeNull: () => ({
1770
+ type: "NAME",
1771
+ name: "null"
1772
+ }),
1773
+ JsdocTypeUnknown: () => ({
1774
+ type: "UNKNOWN"
1775
+ }),
1776
+ JsdocTypeStringValue: (result) => ({
1777
+ type: "STRING_VALUE",
1778
+ quoteStyle: getQuoteStyle(result.meta.quote),
1779
+ string: result.value
1780
+ }),
1781
+ JsdocTypeIntersection: (result, transform2) => nestResults("INTERSECTION", result.elements.map(transform2)),
1782
+ JsdocTypeNumber: (result) => ({
1783
+ type: "NUMBER_VALUE",
1784
+ number: result.value.toString()
1785
+ }),
1786
+ JsdocTypeSymbol: notAvailableTransform,
1787
+ JsdocTypeProperty: notAvailableTransform,
1788
+ JsdocTypePredicate: notAvailableTransform,
1789
+ JsdocTypeMappedType: notAvailableTransform,
1790
+ JsdocTypeIndexSignature: notAvailableTransform,
1791
+ JsdocTypeAsserts: notAvailableTransform,
1792
+ JsdocTypeReadonlyArray: notAvailableTransform,
1793
+ JsdocTypeAssertsPlain: notAvailableTransform,
1794
+ JsdocTypeConditional: notAvailableTransform,
1795
+ JsdocTypeTypeParameter: notAvailableTransform
1796
+ };
1797
+ function jtpTransform(result) {
1798
+ return transform(jtpRules, result);
1799
+ }
1800
+ function identityTransformRules() {
1801
+ return {
1802
+ JsdocTypeIntersection: (result, transform2) => ({
1803
+ type: "JsdocTypeIntersection",
1804
+ elements: result.elements.map(transform2)
1805
+ }),
1806
+ JsdocTypeGeneric: (result, transform2) => ({
1807
+ type: "JsdocTypeGeneric",
1808
+ left: transform2(result.left),
1809
+ elements: result.elements.map(transform2),
1810
+ meta: {
1811
+ dot: result.meta.dot,
1812
+ brackets: result.meta.brackets
1813
+ }
1814
+ }),
1815
+ JsdocTypeNullable: (result) => result,
1816
+ JsdocTypeUnion: (result, transform2) => ({
1817
+ type: "JsdocTypeUnion",
1818
+ elements: result.elements.map(transform2)
1819
+ }),
1820
+ JsdocTypeUnknown: (result) => result,
1821
+ JsdocTypeUndefined: (result) => result,
1822
+ JsdocTypeTypeof: (result, transform2) => ({
1823
+ type: "JsdocTypeTypeof",
1824
+ element: transform2(result.element)
1825
+ }),
1826
+ JsdocTypeSymbol: (result, transform2) => {
1827
+ let transformed = {
1828
+ type: "JsdocTypeSymbol",
1829
+ value: result.value
1830
+ };
1831
+ return result.element !== void 0 && (transformed.element = transform2(result.element)), transformed;
1832
+ },
1833
+ JsdocTypeOptional: (result, transform2) => ({
1834
+ type: "JsdocTypeOptional",
1835
+ element: transform2(result.element),
1836
+ meta: {
1837
+ position: result.meta.position
1838
+ }
1839
+ }),
1840
+ JsdocTypeObject: (result, transform2) => ({
1841
+ type: "JsdocTypeObject",
1842
+ meta: {
1843
+ separator: "comma"
1844
+ },
1845
+ elements: result.elements.map(transform2)
1846
+ }),
1847
+ JsdocTypeNumber: (result) => result,
1848
+ JsdocTypeNull: (result) => result,
1849
+ JsdocTypeNotNullable: (result, transform2) => ({
1850
+ type: "JsdocTypeNotNullable",
1851
+ element: transform2(result.element),
1852
+ meta: {
1853
+ position: result.meta.position
1854
+ }
1855
+ }),
1856
+ JsdocTypeSpecialNamePath: (result) => result,
1857
+ JsdocTypeObjectField: (result, transform2) => ({
1858
+ type: "JsdocTypeObjectField",
1859
+ key: result.key,
1860
+ right: result.right === void 0 ? void 0 : transform2(result.right),
1861
+ optional: result.optional,
1862
+ readonly: result.readonly,
1863
+ meta: result.meta
1864
+ }),
1865
+ JsdocTypeJsdocObjectField: (result, transform2) => ({
1866
+ type: "JsdocTypeJsdocObjectField",
1867
+ left: transform2(result.left),
1868
+ right: transform2(result.right)
1869
+ }),
1870
+ JsdocTypeKeyValue: (result, transform2) => ({
1871
+ type: "JsdocTypeKeyValue",
1872
+ key: result.key,
1873
+ right: result.right === void 0 ? void 0 : transform2(result.right),
1874
+ optional: result.optional,
1875
+ variadic: result.variadic
1876
+ }),
1877
+ JsdocTypeImport: (result, transform2) => ({
1878
+ type: "JsdocTypeImport",
1879
+ element: transform2(result.element)
1880
+ }),
1881
+ JsdocTypeAny: (result) => result,
1882
+ JsdocTypeStringValue: (result) => result,
1883
+ JsdocTypeNamePath: (result) => result,
1884
+ JsdocTypeVariadic: (result, transform2) => {
1885
+ let transformed = {
1886
+ type: "JsdocTypeVariadic",
1887
+ meta: {
1888
+ position: result.meta.position,
1889
+ squareBrackets: result.meta.squareBrackets
1890
+ }
1891
+ };
1892
+ return result.element !== void 0 && (transformed.element = transform2(result.element)), transformed;
1893
+ },
1894
+ JsdocTypeTuple: (result, transform2) => ({
1895
+ type: "JsdocTypeTuple",
1896
+ elements: result.elements.map(transform2)
1897
+ }),
1898
+ JsdocTypeName: (result) => result,
1899
+ JsdocTypeFunction: (result, transform2) => {
1900
+ let transformed = {
1901
+ type: "JsdocTypeFunction",
1902
+ arrow: result.arrow,
1903
+ parameters: result.parameters.map(transform2),
1904
+ constructor: result.constructor,
1905
+ parenthesis: result.parenthesis
1906
+ };
1907
+ return result.returnType !== void 0 && (transformed.returnType = transform2(result.returnType)), transformed;
1908
+ },
1909
+ JsdocTypeKeyof: (result, transform2) => ({
1910
+ type: "JsdocTypeKeyof",
1911
+ element: transform2(result.element)
1912
+ }),
1913
+ JsdocTypeParenthesis: (result, transform2) => ({
1914
+ type: "JsdocTypeParenthesis",
1915
+ element: transform2(result.element)
1916
+ }),
1917
+ JsdocTypeProperty: (result) => result,
1918
+ JsdocTypePredicate: (result, transform2) => ({
1919
+ type: "JsdocTypePredicate",
1920
+ left: transform2(result.left),
1921
+ right: transform2(result.right)
1922
+ }),
1923
+ JsdocTypeIndexSignature: (result, transform2) => ({
1924
+ type: "JsdocTypeIndexSignature",
1925
+ key: result.key,
1926
+ right: transform2(result.right)
1927
+ }),
1928
+ JsdocTypeMappedType: (result, transform2) => ({
1929
+ type: "JsdocTypeMappedType",
1930
+ key: result.key,
1931
+ right: transform2(result.right)
1932
+ }),
1933
+ JsdocTypeAsserts: (result, transform2) => ({
1934
+ type: "JsdocTypeAsserts",
1935
+ left: transform2(result.left),
1936
+ right: transform2(result.right)
1937
+ }),
1938
+ JsdocTypeReadonlyArray: (result, transform2) => ({
1939
+ type: "JsdocTypeReadonlyArray",
1940
+ element: transform2(result.element)
1941
+ }),
1942
+ JsdocTypeAssertsPlain: (result, transform2) => ({
1943
+ type: "JsdocTypeAssertsPlain",
1944
+ element: transform2(result.element)
1945
+ }),
1946
+ JsdocTypeConditional: (result, transform2) => ({
1947
+ type: "JsdocTypeConditional",
1948
+ checksType: transform2(result.checksType),
1949
+ extendsType: transform2(result.extendsType),
1950
+ trueType: transform2(result.trueType),
1951
+ falseType: transform2(result.falseType)
1952
+ }),
1953
+ JsdocTypeTypeParameter: (result, transform2) => ({
1954
+ type: "JsdocTypeTypeParameter",
1955
+ name: transform2(result.name),
1956
+ constraint: result.constraint !== void 0 ? transform2(result.constraint) : void 0,
1957
+ defaultValue: result.defaultValue !== void 0 ? transform2(result.defaultValue) : void 0
1958
+ })
1959
+ };
1960
+ }
1961
+ let visitorKeys = {
1962
+ JsdocTypeAny: [],
1963
+ JsdocTypeFunction: ["parameters", "returnType"],
1964
+ JsdocTypeGeneric: ["left", "elements"],
1965
+ JsdocTypeImport: [],
1966
+ JsdocTypeIndexSignature: ["right"],
1967
+ JsdocTypeIntersection: ["elements"],
1968
+ JsdocTypeKeyof: ["element"],
1969
+ JsdocTypeKeyValue: ["right"],
1970
+ JsdocTypeMappedType: ["right"],
1971
+ JsdocTypeName: [],
1972
+ JsdocTypeNamePath: ["left", "right"],
1973
+ JsdocTypeNotNullable: ["element"],
1974
+ JsdocTypeNull: [],
1975
+ JsdocTypeNullable: ["element"],
1976
+ JsdocTypeNumber: [],
1977
+ JsdocTypeObject: ["elements"],
1978
+ JsdocTypeObjectField: ["right"],
1979
+ JsdocTypeJsdocObjectField: ["left", "right"],
1980
+ JsdocTypeOptional: ["element"],
1981
+ JsdocTypeParenthesis: ["element"],
1982
+ JsdocTypeSpecialNamePath: [],
1983
+ JsdocTypeStringValue: [],
1984
+ JsdocTypeSymbol: ["element"],
1985
+ JsdocTypeTuple: ["elements"],
1986
+ JsdocTypeTypeof: ["element"],
1987
+ JsdocTypeUndefined: [],
1988
+ JsdocTypeUnion: ["elements"],
1989
+ JsdocTypeUnknown: [],
1990
+ JsdocTypeVariadic: ["element"],
1991
+ JsdocTypeProperty: [],
1992
+ JsdocTypePredicate: ["left", "right"],
1993
+ JsdocTypeAsserts: ["left", "right"],
1994
+ JsdocTypeReadonlyArray: ["element"],
1995
+ JsdocTypeAssertsPlain: ["element"],
1996
+ JsdocTypeConditional: ["checksType", "extendsType", "trueType", "falseType"],
1997
+ JsdocTypeTypeParameter: ["name", "constraint", "defaultValue"]
1998
+ };
1999
+ function _traverse(node, parentNode, property, onEnter, onLeave) {
2000
+ onEnter?.(node, parentNode, property);
2001
+ let keysToVisit = visitorKeys[node.type];
2002
+ for (let key of keysToVisit) {
2003
+ let value = node[key];
2004
+ if (value !== void 0)
2005
+ if (Array.isArray(value))
2006
+ for (let element of value)
2007
+ _traverse(element, node, key, onEnter, onLeave);
2008
+ else
2009
+ _traverse(value, node, key, onEnter, onLeave);
2010
+ }
2011
+ onLeave?.(node, parentNode, property);
2012
+ }
2013
+ function traverse(node, onEnter, onLeave) {
2014
+ _traverse(node, void 0, void 0, onEnter, onLeave);
2015
+ }
2016
+ exports2.catharsisTransform = catharsisTransform, exports2.identityTransformRules = identityTransformRules, exports2.jtpTransform = jtpTransform, exports2.parse = parse3, exports2.stringify = stringify2, exports2.stringifyRules = stringifyRules2, exports2.transform = transform, exports2.traverse = traverse, exports2.tryParse = tryParse, exports2.visitorKeys = visitorKeys;
2017
+ }));
2018
+ }
2019
+ });
2020
+
2021
+ // src/docs-tools/argTypes/docgen/utils/string.ts
2022
+ var str = (obj) => {
2023
+ if (!obj)
2024
+ return "";
2025
+ if (typeof obj == "string")
2026
+ return obj;
2027
+ throw new Error(`Description: expected string, got: ${JSON.stringify(obj)}`);
2028
+ };
2029
+
2030
+ // src/docs-tools/argTypes/docgen/utils/docgenInfo.ts
2031
+ function hasDocgen(component) {
2032
+ return !!component.__docgenInfo;
2033
+ }
2034
+ function getDocgenSection(component, section) {
2035
+ return hasDocgen(component) ? component.__docgenInfo[section] : null;
2036
+ }
2037
+ function getDocgenDescription(component) {
2038
+ return hasDocgen(component) ? str(component.__docgenInfo.description) : "";
2039
+ }
2040
+
2041
+ // ../../node_modules/comment-parser/es6/primitives.js
2042
+ var Markers;
2043
+ (function(Markers2) {
2044
+ Markers2.start = "/**", Markers2.nostart = "/***", Markers2.delim = "*", Markers2.end = "*/";
2045
+ })(Markers || (Markers = {}));
2046
+
2047
+ // ../../node_modules/comment-parser/es6/util.js
2048
+ function isSpace(source) {
2049
+ return /^\s+$/.test(source);
2050
+ }
2051
+ function splitCR(source) {
2052
+ let matches = source.match(/\r+$/);
2053
+ return matches == null ? ["", source] : [source.slice(-matches[0].length), source.slice(0, -matches[0].length)];
2054
+ }
2055
+ function splitSpace(source) {
2056
+ let matches = source.match(/^\s+/);
2057
+ return matches == null ? ["", source] : [source.slice(0, matches[0].length), source.slice(matches[0].length)];
2058
+ }
2059
+ function splitLines(source) {
2060
+ return source.split(/\n/);
2061
+ }
2062
+ function seedSpec(spec = {}) {
2063
+ return Object.assign({ tag: "", name: "", type: "", optional: !1, description: "", problems: [], source: [] }, spec);
2064
+ }
2065
+ function seedTokens(tokens = {}) {
2066
+ return Object.assign({ start: "", delimiter: "", postDelimiter: "", tag: "", postTag: "", name: "", postName: "", type: "", postType: "", description: "", end: "", lineEnd: "" }, tokens);
2067
+ }
2068
+
2069
+ // ../../node_modules/comment-parser/es6/parser/block-parser.js
2070
+ var reTag = /^@[^\s/]+(?=\s|$)/;
2071
+ function getParser({ fence = "```" } = {}) {
2072
+ let fencer = getFencer(fence), toggleFence = (source, isFenced) => fencer(source) ? !isFenced : isFenced;
2073
+ return function(source) {
2074
+ let sections = [[]], isFenced = !1;
2075
+ for (let line of source)
2076
+ reTag.test(line.tokens.description) && !isFenced ? sections.push([line]) : sections[sections.length - 1].push(line), isFenced = toggleFence(line.tokens.description, isFenced);
2077
+ return sections;
2078
+ };
2079
+ }
2080
+ function getFencer(fence) {
2081
+ return typeof fence == "string" ? (source) => source.split(fence).length % 2 === 0 : fence;
2082
+ }
2083
+
2084
+ // ../../node_modules/comment-parser/es6/parser/source-parser.js
2085
+ function getParser2({ startLine = 0, markers = Markers } = {}) {
2086
+ let block = null, num = startLine;
2087
+ return function(source) {
2088
+ let rest = source, tokens = seedTokens();
2089
+ if ([tokens.lineEnd, rest] = splitCR(rest), [tokens.start, rest] = splitSpace(rest), block === null && rest.startsWith(markers.start) && !rest.startsWith(markers.nostart) && (block = [], tokens.delimiter = rest.slice(0, markers.start.length), rest = rest.slice(markers.start.length), [tokens.postDelimiter, rest] = splitSpace(rest)), block === null)
2090
+ return num++, null;
2091
+ let isClosed = rest.trimEnd().endsWith(markers.end);
2092
+ if (tokens.delimiter === "" && rest.startsWith(markers.delim) && !rest.startsWith(markers.end) && (tokens.delimiter = markers.delim, rest = rest.slice(markers.delim.length), [tokens.postDelimiter, rest] = splitSpace(rest)), isClosed) {
2093
+ let trimmed = rest.trimEnd();
2094
+ tokens.end = rest.slice(trimmed.length - markers.end.length), rest = trimmed.slice(0, -markers.end.length);
2095
+ }
2096
+ if (tokens.description = rest, block.push({ number: num, source, tokens }), num++, isClosed) {
2097
+ let result = block.slice();
2098
+ return block = null, result;
2099
+ }
2100
+ return null;
2101
+ };
2102
+ }
2103
+
2104
+ // ../../node_modules/comment-parser/es6/parser/spec-parser.js
2105
+ function getParser3({ tokenizers }) {
2106
+ return function(source) {
2107
+ var _a;
2108
+ let spec = seedSpec({ source });
2109
+ for (let tokenize of tokenizers)
2110
+ if (spec = tokenize(spec), !((_a = spec.problems[spec.problems.length - 1]) === null || _a === void 0) && _a.critical)
2111
+ break;
2112
+ return spec;
2113
+ };
2114
+ }
2115
+
2116
+ // ../../node_modules/comment-parser/es6/parser/tokenizers/tag.js
2117
+ function tagTokenizer() {
2118
+ return (spec) => {
2119
+ let { tokens } = spec.source[0], match = tokens.description.match(/\s*(@(\S+))(\s*)/);
2120
+ return match === null ? (spec.problems.push({
2121
+ code: "spec:tag:prefix",
2122
+ message: 'tag should start with "@" symbol',
2123
+ line: spec.source[0].number,
2124
+ critical: !0
2125
+ }), spec) : (match[1].includes("/") || (tokens.tag = match[1], tokens.postTag = match[3], tokens.description = tokens.description.slice(match[0].length), spec.tag = match[2]), spec);
2126
+ };
2127
+ }
2128
+
2129
+ // ../../node_modules/comment-parser/es6/parser/tokenizers/type.js
2130
+ function typeTokenizer(spacing = "compact") {
2131
+ let join2 = getJoiner(spacing);
2132
+ return (spec) => {
2133
+ let curlies = 0, lines = [], descriptionBegun = !1, firstTypeIteration = !0;
2134
+ for (let { tokens } of spec.source.values()) {
2135
+ let type = "";
2136
+ if (!descriptionBegun && tokens.description.trim())
2137
+ descriptionBegun = !0;
2138
+ else if (!descriptionBegun)
2139
+ continue;
2140
+ if (firstTypeIteration && tokens.description[0] !== "{")
2141
+ return spec;
2142
+ firstTypeIteration = !1;
2143
+ for (let ch of tokens.description)
2144
+ if (ch === "{" && curlies++, ch === "}" && curlies--, type += ch, curlies === 0)
2145
+ break;
2146
+ if (lines.push([tokens, type]), curlies === 0)
2147
+ break;
2148
+ }
2149
+ if (!descriptionBegun)
2150
+ return spec;
2151
+ if (curlies !== 0)
2152
+ return spec.problems.push({
2153
+ code: "spec:type:unpaired-curlies",
2154
+ message: "unpaired curlies",
2155
+ line: spec.source[0].number,
2156
+ critical: !0
2157
+ }), spec;
2158
+ let parts = [], offset = lines[0][0].postDelimiter.length;
2159
+ for (let [i, [tokens, type]] of lines.entries())
2160
+ tokens.type = type, i > 0 && (tokens.type = tokens.postDelimiter.slice(offset) + type, tokens.postDelimiter = tokens.postDelimiter.slice(0, offset)), [tokens.postType, tokens.description] = splitSpace(tokens.description.slice(type.length)), parts.push(tokens.type);
2161
+ return parts[0] = parts[0].slice(1), parts[parts.length - 1] = parts[parts.length - 1].slice(0, -1), spec.type = join2(parts), spec;
2162
+ };
2163
+ }
2164
+ var trim = (x) => x.trim();
2165
+ function getJoiner(spacing) {
2166
+ return spacing === "compact" ? (t) => t.map(trim).join("") : spacing === "preserve" ? (t) => t.join(`
2167
+ `) : spacing;
2168
+ }
2169
+
2170
+ // ../../node_modules/comment-parser/es6/parser/tokenizers/name.js
2171
+ var isQuoted = (s) => s && s.startsWith('"') && s.endsWith('"');
2172
+ function nameTokenizer() {
2173
+ let typeEnd = (num, { tokens }, i) => tokens.type === "" ? num : i;
2174
+ return (spec) => {
2175
+ let finalTypeLine = spec.source.reduce(typeEnd, 0), tokens;
2176
+ if (spec.type)
2177
+ do {
2178
+ if ({ tokens } = spec.source[finalTypeLine], tokens.description.trim())
2179
+ break;
2180
+ finalTypeLine++;
2181
+ } while (spec.source[finalTypeLine]);
2182
+ else
2183
+ ({ tokens } = spec.source[finalTypeLine]);
2184
+ let source = tokens.description.trimStart(), quotedGroups = source.split('"');
2185
+ if (quotedGroups.length > 1 && quotedGroups[0] === "" && quotedGroups.length % 2 === 1)
2186
+ return spec.name = quotedGroups[1], tokens.name = `"${quotedGroups[1]}"`, [tokens.postName, tokens.description] = splitSpace(source.slice(tokens.name.length)), spec;
2187
+ let brackets = 0, name = "", optional = !1, defaultValue;
2188
+ for (let ch of source) {
2189
+ if (brackets === 0 && isSpace(ch))
2190
+ break;
2191
+ ch === "[" && brackets++, ch === "]" && brackets--, name += ch;
2192
+ }
2193
+ if (brackets !== 0)
2194
+ return spec.problems.push({
2195
+ code: "spec:name:unpaired-brackets",
2196
+ message: "unpaired brackets",
2197
+ line: spec.source[0].number,
2198
+ critical: !0
2199
+ }), spec;
2200
+ let nameToken = name;
2201
+ if (name[0] === "[" && name[name.length - 1] === "]") {
2202
+ optional = !0, name = name.slice(1, -1);
2203
+ let parts = name.split("=");
2204
+ if (name = parts[0].trim(), parts[1] !== void 0 && (defaultValue = parts.slice(1).join("=").trim()), name === "")
2205
+ return spec.problems.push({
2206
+ code: "spec:name:empty-name",
2207
+ message: "empty name",
2208
+ line: spec.source[0].number,
2209
+ critical: !0
2210
+ }), spec;
2211
+ if (defaultValue === "")
2212
+ return spec.problems.push({
2213
+ code: "spec:name:empty-default",
2214
+ message: "empty default value",
2215
+ line: spec.source[0].number,
2216
+ critical: !0
2217
+ }), spec;
2218
+ if (!isQuoted(defaultValue) && /=(?!>)/.test(defaultValue || ""))
2219
+ return spec.problems.push({
2220
+ code: "spec:name:invalid-default",
2221
+ message: "invalid default value syntax",
2222
+ line: spec.source[0].number,
2223
+ critical: !0
2224
+ }), spec;
2225
+ }
2226
+ if (!optional) {
2227
+ let eqIndex = name.search(/=(?!>)/);
2228
+ if (eqIndex !== -1) {
2229
+ let preEqual = name.slice(0, eqIndex).trim(), postEqual = name.slice(eqIndex + 1).trim();
2230
+ if (preEqual === "")
2231
+ return spec.problems.push({
2232
+ code: "spec:name:empty-name",
2233
+ message: "empty name",
2234
+ line: spec.source[0].number,
2235
+ critical: !0
2236
+ }), spec;
2237
+ if (postEqual === "")
2238
+ return spec.problems.push({
2239
+ code: "spec:name:empty-default",
2240
+ message: "empty default value",
2241
+ line: spec.source[0].number,
2242
+ critical: !0
2243
+ }), spec;
2244
+ if (/^[\p{ID_Start}$_\.][\p{ID_Continue}$_\u200c\u200d\.]*=/u.test(name)) {
2245
+ if (!isQuoted(postEqual) && /=(?!>)/.test(postEqual))
2246
+ return spec.problems.push({
2247
+ code: "spec:name:invalid-default",
2248
+ message: "invalid default value syntax",
2249
+ line: spec.source[0].number,
2250
+ critical: !0
2251
+ }), spec;
2252
+ name = preEqual, defaultValue = postEqual;
2253
+ }
2254
+ }
2255
+ }
2256
+ return spec.optional = optional, spec.name = name, tokens.name = nameToken, defaultValue !== void 0 && (spec.default = defaultValue), [tokens.postName, tokens.description] = splitSpace(source.slice(tokens.name.length)), spec;
2257
+ };
2258
+ }
2259
+
2260
+ // ../../node_modules/comment-parser/es6/parser/tokenizers/description.js
2261
+ function descriptionTokenizer(spacing = "compact", markers = Markers) {
2262
+ let join2 = getJoiner2(spacing);
2263
+ return (spec) => (spec.description = join2(spec.source, markers), spec);
2264
+ }
2265
+ function getJoiner2(spacing) {
2266
+ return spacing === "compact" ? compactJoiner : spacing === "preserve" ? preserveJoiner : spacing;
2267
+ }
2268
+ function compactJoiner(lines, markers = Markers) {
2269
+ return lines.map(({ tokens: { description } }) => description.trim()).filter((description) => description !== "").join(" ");
2270
+ }
2271
+ var lineNo = (num, { tokens }, i) => tokens.type === "" ? num : i, getDescription = ({ tokens }) => (tokens.delimiter === "" ? tokens.start : tokens.postDelimiter.slice(1)) + tokens.description;
2272
+ function preserveJoiner(lines, markers = Markers) {
2273
+ if (lines.length === 0)
2274
+ return "";
2275
+ lines[0].tokens.description === "" && lines[0].tokens.delimiter === markers.start && (lines = lines.slice(1));
2276
+ let lastLine = lines[lines.length - 1];
2277
+ return lastLine !== void 0 && lastLine.tokens.description === "" && lastLine.tokens.end.endsWith(markers.end) && (lines = lines.slice(0, -1)), lines = lines.slice(lines.reduce(lineNo, 0)), lines.map(getDescription).join(`
2278
+ `);
2279
+ }
2280
+
2281
+ // ../../node_modules/comment-parser/es6/parser/index.js
2282
+ function getParser4({ startLine = 0, fence = "```", spacing = "compact", markers = Markers, tokenizers = [
2283
+ tagTokenizer(),
2284
+ typeTokenizer(spacing),
2285
+ nameTokenizer(),
2286
+ descriptionTokenizer(spacing)
2287
+ ] } = {}) {
2288
+ if (startLine < 0 || startLine % 1 > 0)
2289
+ throw new Error("Invalid startLine");
2290
+ let parseSource = getParser2({ startLine, markers }), parseBlock = getParser({ fence }), parseSpec = getParser3({ tokenizers }), joinDescription = getJoiner2(spacing);
2291
+ return function(source) {
2292
+ let blocks = [];
2293
+ for (let line of splitLines(source)) {
2294
+ let lines = parseSource(line);
2295
+ if (lines === null)
2296
+ continue;
2297
+ let sections = parseBlock(lines), specs = sections.slice(1).map(parseSpec);
2298
+ blocks.push({
2299
+ description: joinDescription(sections[0], markers),
2300
+ tags: specs,
2301
+ source: lines,
2302
+ problems: specs.reduce((acc, spec) => acc.concat(spec.problems), [])
2303
+ });
2304
+ }
2305
+ return blocks;
2306
+ };
2307
+ }
2308
+
2309
+ // ../../node_modules/comment-parser/es6/stringifier/index.js
2310
+ function join(tokens) {
2311
+ return tokens.start + tokens.delimiter + tokens.postDelimiter + tokens.tag + tokens.postTag + tokens.type + tokens.postType + tokens.name + tokens.postName + tokens.description + tokens.end + tokens.lineEnd;
2312
+ }
2313
+ function getStringifier() {
2314
+ return (block) => block.source.map(({ tokens }) => join(tokens)).join(`
2315
+ `);
2316
+ }
2317
+
2318
+ // ../../node_modules/comment-parser/es6/stringifier/inspect.js
2319
+ var zeroWidth = {
2320
+ line: 0,
2321
+ start: 0,
2322
+ delimiter: 0,
2323
+ postDelimiter: 0,
2324
+ tag: 0,
2325
+ postTag: 0,
2326
+ name: 0,
2327
+ postName: 0,
2328
+ type: 0,
2329
+ postType: 0,
2330
+ description: 0,
2331
+ end: 0,
2332
+ lineEnd: 0
2333
+ };
2334
+ var fields = Object.keys(zeroWidth);
2335
+
2336
+ // ../../node_modules/comment-parser/es6/index.js
2337
+ function parse(source, options = {}) {
2338
+ return getParser4(options)(source);
2339
+ }
2340
+ var stringify = getStringifier();
2341
+
2342
+ // src/docs-tools/argTypes/jsdocParser.ts
2343
+ var import_jsdoc_type_pratt_parser = __toESM(require_dist(), 1);
2344
+ function containsJsDoc(value) {
2345
+ return value != null && value.includes("@");
2346
+ }
2347
+ function parse2(content) {
2348
+ let normalisedContent = `/**
2349
+ ` + (content ?? "").split(`
2350
+ `).map((line) => ` * ${line}`).join(`
2351
+ `) + `
2352
+ */`, ast = parse(normalisedContent, {
2353
+ spacing: "preserve"
2354
+ });
2355
+ if (!ast || ast.length === 0)
2356
+ throw new Error("Cannot parse JSDoc tags.");
2357
+ return ast[0];
2358
+ }
2359
+ var DEFAULT_OPTIONS = {
2360
+ tags: ["param", "arg", "argument", "returns", "ignore", "deprecated"]
2361
+ }, parseJsDoc = (value, options = DEFAULT_OPTIONS) => {
2362
+ if (!containsJsDoc(value))
2363
+ return {
2364
+ includesJsDoc: !1,
2365
+ ignore: !1
2366
+ };
2367
+ let jsDocAst = parse2(value), extractedTags = extractJsDocTags(jsDocAst, options.tags);
2368
+ return extractedTags.ignore ? {
2369
+ includesJsDoc: !0,
2370
+ ignore: !0
2371
+ } : {
2372
+ includesJsDoc: !0,
2373
+ ignore: !1,
2374
+ // Always use the parsed description to ensure JSDoc is removed from the description.
2375
+ description: jsDocAst.description.trim(),
2376
+ extractedTags
2377
+ };
2378
+ };
2379
+ function extractJsDocTags(ast, tags) {
2380
+ let extractedTags = {
2381
+ params: null,
2382
+ deprecated: null,
2383
+ returns: null,
2384
+ ignore: !1
2385
+ };
2386
+ for (let tagSpec of ast.tags)
2387
+ if (!(tags !== void 0 && !tags.includes(tagSpec.tag)))
2388
+ if (tagSpec.tag === "ignore") {
2389
+ extractedTags.ignore = !0;
2390
+ break;
2391
+ } else
2392
+ switch (tagSpec.tag) {
2393
+ // arg & argument are aliases for param.
2394
+ case "param":
2395
+ case "arg":
2396
+ case "argument": {
2397
+ let paramTag = extractParam(tagSpec);
2398
+ paramTag != null && (extractedTags.params == null && (extractedTags.params = []), extractedTags.params.push(paramTag));
2399
+ break;
2400
+ }
2401
+ case "deprecated": {
2402
+ let deprecatedTag = extractDeprecated(tagSpec);
2403
+ deprecatedTag != null && (extractedTags.deprecated = deprecatedTag);
2404
+ break;
2405
+ }
2406
+ case "returns": {
2407
+ let returnsTag = extractReturns(tagSpec);
2408
+ returnsTag != null && (extractedTags.returns = returnsTag);
2409
+ break;
2410
+ }
2411
+ default:
2412
+ break;
2413
+ }
2414
+ return extractedTags;
2415
+ }
2416
+ function normaliseParamName(name) {
2417
+ return name.replace(/[\.-]$/, "");
2418
+ }
2419
+ function extractParam(tag) {
2420
+ if (!tag.name || tag.name === "-")
2421
+ return null;
2422
+ let type = extractType(tag.type);
2423
+ return {
2424
+ name: tag.name,
2425
+ type,
2426
+ description: normaliseDescription(tag.description),
2427
+ getPrettyName: () => normaliseParamName(tag.name),
2428
+ getTypeName: () => type ? extractTypeName(type) : null
2429
+ };
2430
+ }
2431
+ function extractDeprecated(tag) {
2432
+ return tag.name ? joinNameAndDescription(tag.name, tag.description) : null;
2433
+ }
2434
+ function joinNameAndDescription(name, desc) {
2435
+ let joined = name === "" ? desc : `${name} ${desc}`;
2436
+ return normaliseDescription(joined);
2437
+ }
2438
+ function normaliseDescription(text) {
2439
+ let normalised = text.replace(/^- /g, "").trim();
2440
+ return normalised === "" ? null : normalised;
2441
+ }
2442
+ function extractReturns(tag) {
2443
+ let type = extractType(tag.type);
2444
+ return type ? {
2445
+ type,
2446
+ description: joinNameAndDescription(tag.name, tag.description),
2447
+ getTypeName: () => extractTypeName(type)
2448
+ } : null;
2449
+ }
2450
+ var jsdocStringifyRules = (0, import_jsdoc_type_pratt_parser.stringifyRules)(), originalJsdocStringifyObject = jsdocStringifyRules.JsdocTypeObject;
2451
+ jsdocStringifyRules.JsdocTypeAny = () => "any";
2452
+ jsdocStringifyRules.JsdocTypeObject = (result, transform) => `(${originalJsdocStringifyObject(result, transform)})`;
2453
+ jsdocStringifyRules.JsdocTypeOptional = (result, transform) => transform(result.element);
2454
+ jsdocStringifyRules.JsdocTypeNullable = (result, transform) => transform(result.element);
2455
+ jsdocStringifyRules.JsdocTypeNotNullable = (result, transform) => transform(result.element);
2456
+ jsdocStringifyRules.JsdocTypeUnion = (result, transform) => result.elements.map(transform).join("|");
2457
+ function extractType(typeString) {
2458
+ try {
2459
+ return (0, import_jsdoc_type_pratt_parser.parse)(typeString, "typescript");
2460
+ } catch {
2461
+ return null;
2462
+ }
2463
+ }
2464
+ function extractTypeName(type) {
2465
+ return (0, import_jsdoc_type_pratt_parser.transform)(jsdocStringifyRules, type);
2466
+ }
2467
+
2468
+ // src/docs-tools/argTypes/convert.ts
2469
+ var FUNCTION_SIGNATURE = /^\(.*\) => /, QUOTES = /^['"]|['"]$/g;
2470
+ function parseLiteral(literal) {
2471
+ let trimmed = literal.replace(QUOTES, "");
2472
+ return trimmed !== literal || Number.isNaN(Number(trimmed)) ? trimmed : Number(trimmed);
2473
+ }
2474
+ function convert({ name, raw, value }) {
2475
+ let base = raw !== void 0 ? { raw } : {};
2476
+ switch (name) {
2477
+ case "enum":
2478
+ return { ...base, name, value: value.map((v) => parseLiteral(v.value)) };
2479
+ case "string":
2480
+ case "number":
2481
+ case "symbol":
2482
+ case "boolean":
2483
+ case "object":
2484
+ return { ...base, name };
2485
+ default: {
2486
+ if (name.indexOf("|") > 0)
2487
+ try {
2488
+ return { ...base, name: "enum", value: name.split("|").map((v) => JSON.parse(v)) };
2489
+ } catch {
2490
+ }
2491
+ let isFunction = FUNCTION_SIGNATURE.test(name);
2492
+ return { ...base, name: isFunction ? "function" : "other", value: name };
2493
+ }
2494
+ }
2495
+ }
2496
+
2497
+ // src/docs-tools/argTypes/utils.ts
2498
+ var MAX_TYPE_SUMMARY_LENGTH = 90, MAX_DEFAULT_VALUE_SUMMARY_LENGTH = 50;
2499
+ function isTooLongForTypeSummary(value) {
2500
+ return value.length > 90;
2501
+ }
2502
+ function isTooLongForDefaultValueSummary(value) {
2503
+ return value.length > 50;
2504
+ }
2505
+ function createSummaryValue(summary, detail) {
2506
+ return summary === detail ? { summary } : { summary, detail };
2507
+ }
2508
+ var normalizeNewlines = (string) => string.replace(/\\r\\n/g, "\\n");
2509
+
2510
+ // src/docs-tools/argTypes/docgen/createPropDef.ts
2511
+ var EMPTY_DEFAULT_VALUES = ["null", "undefined"];
2512
+ function createPropDef(name, docgenInfo, jsDocParsingResult) {
2513
+ let { type, description, required, defaultValue } = docgenInfo, propDef = {
2514
+ name,
2515
+ type: createSummaryValue(type.name),
2516
+ sbType: convert(type),
2517
+ required,
2518
+ description,
2519
+ defaultValue: defaultValue != null && !EMPTY_DEFAULT_VALUES.includes(defaultValue.value) ? createSummaryValue(defaultValue.value) : null
2520
+ };
2521
+ if (jsDocParsingResult.includesJsDoc) {
2522
+ let { extractedTags } = jsDocParsingResult;
2523
+ jsDocParsingResult.description != null && (propDef.description = jsDocParsingResult.description);
2524
+ let jsDocTags = {
2525
+ ...extractedTags,
2526
+ params: extractedTags?.params?.map((param) => ({
2527
+ name: param.getPrettyName(),
2528
+ description: param.description
2529
+ }))
2530
+ };
2531
+ Object.values(jsDocTags).some(Boolean) && (propDef.jsDocTags = jsDocTags);
2532
+ }
2533
+ return propDef;
2534
+ }
2535
+
2536
+ // src/docs-tools/argTypes/docgen/extractDocgenProps.ts
2537
+ function extractComponentProps(component, section) {
2538
+ let docgenSection = getDocgenSection(component, section);
2539
+ return docgenSection == null ? [] : Object.entries(docgenSection).flatMap(([propName, docgenInfo]) => {
2540
+ if (docgenInfo == null)
2541
+ return [];
2542
+ let jsDocParsingResult = parseJsDoc(docgenInfo.description);
2543
+ return jsDocParsingResult.includesJsDoc && jsDocParsingResult.ignore ? [] : [
2544
+ {
2545
+ propDef: createPropDef(propName, docgenInfo, jsDocParsingResult),
2546
+ jsDocTags: jsDocParsingResult.extractedTags,
2547
+ docgenInfo
2548
+ }
2549
+ ];
2550
+ });
2551
+ }
2552
+ function extractComponentDescription(component) {
2553
+ return component != null ? getDocgenDescription(component) : "";
2554
+ }
2555
+
2556
+ // src/docs-tools/argTypes/enhanceArgTypes.ts
2557
+ var enhanceArgTypes = (context) => {
2558
+ let {
2559
+ component,
2560
+ argTypes: userArgTypes,
2561
+ parameters: { docs = {} }
2562
+ } = context, { extractArgTypes } = docs;
2563
+ if (!extractArgTypes || !component)
2564
+ return userArgTypes;
2565
+ let extractedArgTypes = extractArgTypes(component);
2566
+ return extractedArgTypes ? combineParameters(extractedArgTypes, userArgTypes) : userArgTypes;
2567
+ };
2568
+
2569
+ // src/docs-tools/shared.ts
2570
+ var ADDON_ID = "@aussieljk/forkbook/docs", PANEL_ID = `${ADDON_ID}/panel`, PARAM_KEY = "docs", anchorBlockIdFromId = (storyId) => `anchor--${storyId}`, SNIPPET_RENDERED = `${ADDON_ID}/snippet-rendered`, SourceType = /* @__PURE__ */ ((SourceType2) => (SourceType2.AUTO = "auto", SourceType2.CODE = "code", SourceType2.DYNAMIC = "dynamic", SourceType2))(SourceType || {});
2571
+
2572
+ // src/docs-tools/storyDocsCodePanel.ts
2573
+ function shouldSkipStoryDocsEmit(parameters) {
2574
+ let sourceParams = parameters?.docs?.source, isArgsStory = parameters?.__isArgsStory;
2575
+ return parameters?.__isPortableStory ? !0 : sourceParams?.type === "dynamic" /* DYNAMIC */ ? !1 : !isArgsStory || sourceParams?.code !== void 0 || sourceParams?.type === "code" /* CODE */;
2576
+ }
2577
+ function shouldWaitForServiceSnippet(parameters, storyPrepared) {
2578
+ return globalThis.FEATURES?.docgenServer ? !storyPrepared || !shouldSkipStoryDocsEmit(parameters) : !1;
2579
+ }
2580
+
2581
+ export {
2582
+ str,
2583
+ hasDocgen,
2584
+ getDocgenSection,
2585
+ getDocgenDescription,
2586
+ parseJsDoc,
2587
+ MAX_TYPE_SUMMARY_LENGTH,
2588
+ MAX_DEFAULT_VALUE_SUMMARY_LENGTH,
2589
+ isTooLongForTypeSummary,
2590
+ isTooLongForDefaultValueSummary,
2591
+ createSummaryValue,
2592
+ normalizeNewlines,
2593
+ extractComponentProps,
2594
+ extractComponentDescription,
2595
+ enhanceArgTypes,
2596
+ ADDON_ID,
2597
+ PANEL_ID,
2598
+ PARAM_KEY,
2599
+ anchorBlockIdFromId,
2600
+ SNIPPET_RENDERED,
2601
+ SourceType,
2602
+ shouldSkipStoryDocsEmit,
2603
+ shouldWaitForServiceSnippet
2604
+ };