@frontmcp/uipack 0.6.1

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 (417) hide show
  1. package/CLAUDE.md +246 -0
  2. package/LICENSE +201 -0
  3. package/README.md +150 -0
  4. package/adapters/index.d.ts +13 -0
  5. package/adapters/index.d.ts.map +1 -0
  6. package/adapters/index.js +462 -0
  7. package/adapters/platform-meta.d.ts +166 -0
  8. package/adapters/platform-meta.d.ts.map +1 -0
  9. package/adapters/response-builder.d.ts +108 -0
  10. package/adapters/response-builder.d.ts.map +1 -0
  11. package/adapters/serving-mode.d.ts +107 -0
  12. package/adapters/serving-mode.d.ts.map +1 -0
  13. package/base-template/bridge.d.ts +90 -0
  14. package/base-template/bridge.d.ts.map +1 -0
  15. package/base-template/default-base-template.d.ts +92 -0
  16. package/base-template/default-base-template.d.ts.map +1 -0
  17. package/base-template/index.d.ts +15 -0
  18. package/base-template/index.d.ts.map +1 -0
  19. package/base-template/index.js +1398 -0
  20. package/base-template/polyfills.d.ts +31 -0
  21. package/base-template/polyfills.d.ts.map +1 -0
  22. package/base-template/theme-styles.d.ts +74 -0
  23. package/base-template/theme-styles.d.ts.map +1 -0
  24. package/bridge-runtime/iife-generator.d.ts +62 -0
  25. package/bridge-runtime/iife-generator.d.ts.map +1 -0
  26. package/bridge-runtime/index.d.ts +10 -0
  27. package/bridge-runtime/index.d.ts.map +1 -0
  28. package/bridge-runtime/index.js +883 -0
  29. package/build/cdn-resources.d.ts +243 -0
  30. package/build/cdn-resources.d.ts.map +1 -0
  31. package/build/index.d.ts +295 -0
  32. package/build/index.d.ts.map +1 -0
  33. package/build/index.js +6861 -0
  34. package/build/widget-manifest.d.ts +362 -0
  35. package/build/widget-manifest.d.ts.map +1 -0
  36. package/bundler/cache.d.ts +173 -0
  37. package/bundler/cache.d.ts.map +1 -0
  38. package/bundler/file-cache/component-builder.d.ts +167 -0
  39. package/bundler/file-cache/component-builder.d.ts.map +1 -0
  40. package/bundler/file-cache/hash-calculator.d.ts +155 -0
  41. package/bundler/file-cache/hash-calculator.d.ts.map +1 -0
  42. package/bundler/file-cache/index.d.ts +12 -0
  43. package/bundler/file-cache/index.d.ts.map +1 -0
  44. package/bundler/file-cache/storage/filesystem.d.ts +149 -0
  45. package/bundler/file-cache/storage/filesystem.d.ts.map +1 -0
  46. package/bundler/file-cache/storage/index.d.ts +11 -0
  47. package/bundler/file-cache/storage/index.d.ts.map +1 -0
  48. package/bundler/file-cache/storage/interface.d.ts +152 -0
  49. package/bundler/file-cache/storage/interface.d.ts.map +1 -0
  50. package/bundler/file-cache/storage/redis.d.ts +139 -0
  51. package/bundler/file-cache/storage/redis.d.ts.map +1 -0
  52. package/bundler/index.d.ts +35 -0
  53. package/bundler/index.d.ts.map +1 -0
  54. package/bundler/index.js +2947 -0
  55. package/bundler/sandbox/enclave-adapter.d.ts +121 -0
  56. package/bundler/sandbox/enclave-adapter.d.ts.map +1 -0
  57. package/bundler/sandbox/executor.d.ts +14 -0
  58. package/bundler/sandbox/executor.d.ts.map +1 -0
  59. package/bundler/sandbox/policy.d.ts +62 -0
  60. package/bundler/sandbox/policy.d.ts.map +1 -0
  61. package/bundler/types.d.ts +702 -0
  62. package/bundler/types.d.ts.map +1 -0
  63. package/dependency/cdn-registry.d.ts +98 -0
  64. package/dependency/cdn-registry.d.ts.map +1 -0
  65. package/dependency/import-map.d.ts +186 -0
  66. package/dependency/import-map.d.ts.map +1 -0
  67. package/dependency/import-parser.d.ts +82 -0
  68. package/dependency/import-parser.d.ts.map +1 -0
  69. package/dependency/index.d.ts +17 -0
  70. package/dependency/index.d.ts.map +1 -0
  71. package/dependency/index.js +3215 -0
  72. package/dependency/resolver.d.ts +164 -0
  73. package/dependency/resolver.d.ts.map +1 -0
  74. package/dependency/schemas.d.ts +486 -0
  75. package/dependency/schemas.d.ts.map +1 -0
  76. package/dependency/template-loader.d.ts +204 -0
  77. package/dependency/template-loader.d.ts.map +1 -0
  78. package/dependency/template-processor.d.ts +118 -0
  79. package/dependency/template-processor.d.ts.map +1 -0
  80. package/dependency/types.d.ts +739 -0
  81. package/dependency/types.d.ts.map +1 -0
  82. package/esm/adapters/index.d.ts +13 -0
  83. package/esm/adapters/index.d.ts.map +1 -0
  84. package/esm/adapters/index.js +427 -0
  85. package/esm/adapters/platform-meta.d.ts +166 -0
  86. package/esm/adapters/platform-meta.d.ts.map +1 -0
  87. package/esm/adapters/response-builder.d.ts +108 -0
  88. package/esm/adapters/response-builder.d.ts.map +1 -0
  89. package/esm/adapters/serving-mode.d.ts +107 -0
  90. package/esm/adapters/serving-mode.d.ts.map +1 -0
  91. package/esm/base-template/bridge.d.ts +90 -0
  92. package/esm/base-template/bridge.d.ts.map +1 -0
  93. package/esm/base-template/default-base-template.d.ts +92 -0
  94. package/esm/base-template/default-base-template.d.ts.map +1 -0
  95. package/esm/base-template/index.d.ts +15 -0
  96. package/esm/base-template/index.d.ts.map +1 -0
  97. package/esm/base-template/index.js +1364 -0
  98. package/esm/base-template/polyfills.d.ts +31 -0
  99. package/esm/base-template/polyfills.d.ts.map +1 -0
  100. package/esm/base-template/theme-styles.d.ts +74 -0
  101. package/esm/base-template/theme-styles.d.ts.map +1 -0
  102. package/esm/bridge-runtime/iife-generator.d.ts +62 -0
  103. package/esm/bridge-runtime/iife-generator.d.ts.map +1 -0
  104. package/esm/bridge-runtime/index.d.ts +10 -0
  105. package/esm/bridge-runtime/index.d.ts.map +1 -0
  106. package/esm/bridge-runtime/index.js +853 -0
  107. package/esm/build/cdn-resources.d.ts +243 -0
  108. package/esm/build/cdn-resources.d.ts.map +1 -0
  109. package/esm/build/index.d.ts +295 -0
  110. package/esm/build/index.d.ts.map +1 -0
  111. package/esm/build/index.js +6786 -0
  112. package/esm/build/widget-manifest.d.ts +362 -0
  113. package/esm/build/widget-manifest.d.ts.map +1 -0
  114. package/esm/bundler/cache.d.ts +173 -0
  115. package/esm/bundler/cache.d.ts.map +1 -0
  116. package/esm/bundler/file-cache/component-builder.d.ts +167 -0
  117. package/esm/bundler/file-cache/component-builder.d.ts.map +1 -0
  118. package/esm/bundler/file-cache/hash-calculator.d.ts +155 -0
  119. package/esm/bundler/file-cache/hash-calculator.d.ts.map +1 -0
  120. package/esm/bundler/file-cache/index.d.ts +12 -0
  121. package/esm/bundler/file-cache/index.d.ts.map +1 -0
  122. package/esm/bundler/file-cache/storage/filesystem.d.ts +149 -0
  123. package/esm/bundler/file-cache/storage/filesystem.d.ts.map +1 -0
  124. package/esm/bundler/file-cache/storage/index.d.ts +11 -0
  125. package/esm/bundler/file-cache/storage/index.d.ts.map +1 -0
  126. package/esm/bundler/file-cache/storage/interface.d.ts +152 -0
  127. package/esm/bundler/file-cache/storage/interface.d.ts.map +1 -0
  128. package/esm/bundler/file-cache/storage/redis.d.ts +139 -0
  129. package/esm/bundler/file-cache/storage/redis.d.ts.map +1 -0
  130. package/esm/bundler/index.d.ts +35 -0
  131. package/esm/bundler/index.d.ts.map +1 -0
  132. package/esm/bundler/index.js +2882 -0
  133. package/esm/bundler/sandbox/enclave-adapter.d.ts +121 -0
  134. package/esm/bundler/sandbox/enclave-adapter.d.ts.map +1 -0
  135. package/esm/bundler/sandbox/executor.d.ts +14 -0
  136. package/esm/bundler/sandbox/executor.d.ts.map +1 -0
  137. package/esm/bundler/sandbox/policy.d.ts +62 -0
  138. package/esm/bundler/sandbox/policy.d.ts.map +1 -0
  139. package/esm/bundler/types.d.ts +702 -0
  140. package/esm/bundler/types.d.ts.map +1 -0
  141. package/esm/dependency/cdn-registry.d.ts +98 -0
  142. package/esm/dependency/cdn-registry.d.ts.map +1 -0
  143. package/esm/dependency/import-map.d.ts +186 -0
  144. package/esm/dependency/import-map.d.ts.map +1 -0
  145. package/esm/dependency/import-parser.d.ts +82 -0
  146. package/esm/dependency/import-parser.d.ts.map +1 -0
  147. package/esm/dependency/index.d.ts +17 -0
  148. package/esm/dependency/index.d.ts.map +1 -0
  149. package/esm/dependency/index.js +3096 -0
  150. package/esm/dependency/resolver.d.ts +164 -0
  151. package/esm/dependency/resolver.d.ts.map +1 -0
  152. package/esm/dependency/schemas.d.ts +486 -0
  153. package/esm/dependency/schemas.d.ts.map +1 -0
  154. package/esm/dependency/template-loader.d.ts +204 -0
  155. package/esm/dependency/template-loader.d.ts.map +1 -0
  156. package/esm/dependency/template-processor.d.ts +118 -0
  157. package/esm/dependency/template-processor.d.ts.map +1 -0
  158. package/esm/dependency/types.d.ts +739 -0
  159. package/esm/dependency/types.d.ts.map +1 -0
  160. package/esm/handlebars/expression-extractor.d.ts +147 -0
  161. package/esm/handlebars/expression-extractor.d.ts.map +1 -0
  162. package/esm/handlebars/helpers.d.ts +339 -0
  163. package/esm/handlebars/helpers.d.ts.map +1 -0
  164. package/esm/handlebars/index.d.ts +195 -0
  165. package/esm/handlebars/index.d.ts.map +1 -0
  166. package/esm/handlebars/index.js +587 -0
  167. package/esm/index.d.ts +50 -0
  168. package/esm/index.d.ts.map +1 -0
  169. package/esm/index.js +12434 -0
  170. package/esm/package.json +68 -0
  171. package/esm/registry/index.d.ts +46 -0
  172. package/esm/registry/index.d.ts.map +1 -0
  173. package/esm/registry/index.js +6237 -0
  174. package/esm/registry/render-template.d.ts +91 -0
  175. package/esm/registry/render-template.d.ts.map +1 -0
  176. package/esm/registry/tool-ui.registry.d.ts +294 -0
  177. package/esm/registry/tool-ui.registry.d.ts.map +1 -0
  178. package/esm/registry/uri-utils.d.ts +56 -0
  179. package/esm/registry/uri-utils.d.ts.map +1 -0
  180. package/esm/renderers/cache.d.ts +145 -0
  181. package/esm/renderers/cache.d.ts.map +1 -0
  182. package/esm/renderers/html.renderer.d.ts +123 -0
  183. package/esm/renderers/html.renderer.d.ts.map +1 -0
  184. package/esm/renderers/index.d.ts +36 -0
  185. package/esm/renderers/index.d.ts.map +1 -0
  186. package/esm/renderers/index.js +1654 -0
  187. package/esm/renderers/mdx.renderer.d.ts +120 -0
  188. package/esm/renderers/mdx.renderer.d.ts.map +1 -0
  189. package/esm/renderers/registry.d.ts +133 -0
  190. package/esm/renderers/registry.d.ts.map +1 -0
  191. package/esm/renderers/types.d.ts +342 -0
  192. package/esm/renderers/types.d.ts.map +1 -0
  193. package/esm/renderers/utils/detect.d.ts +107 -0
  194. package/esm/renderers/utils/detect.d.ts.map +1 -0
  195. package/esm/renderers/utils/hash.d.ts +40 -0
  196. package/esm/renderers/utils/hash.d.ts.map +1 -0
  197. package/esm/renderers/utils/index.d.ts +9 -0
  198. package/esm/renderers/utils/index.d.ts.map +1 -0
  199. package/esm/renderers/utils/transpiler.d.ts +89 -0
  200. package/esm/renderers/utils/transpiler.d.ts.map +1 -0
  201. package/esm/runtime/adapters/html.adapter.d.ts +59 -0
  202. package/esm/runtime/adapters/html.adapter.d.ts.map +1 -0
  203. package/esm/runtime/adapters/index.d.ts +26 -0
  204. package/esm/runtime/adapters/index.d.ts.map +1 -0
  205. package/esm/runtime/adapters/mdx.adapter.d.ts +73 -0
  206. package/esm/runtime/adapters/mdx.adapter.d.ts.map +1 -0
  207. package/esm/runtime/adapters/types.d.ts +95 -0
  208. package/esm/runtime/adapters/types.d.ts.map +1 -0
  209. package/esm/runtime/csp.d.ts +48 -0
  210. package/esm/runtime/csp.d.ts.map +1 -0
  211. package/esm/runtime/index.d.ts +17 -0
  212. package/esm/runtime/index.d.ts.map +1 -0
  213. package/esm/runtime/index.js +4976 -0
  214. package/esm/runtime/mcp-bridge.d.ts +101 -0
  215. package/esm/runtime/mcp-bridge.d.ts.map +1 -0
  216. package/esm/runtime/renderer-runtime.d.ts +133 -0
  217. package/esm/runtime/renderer-runtime.d.ts.map +1 -0
  218. package/esm/runtime/sanitizer.d.ts +172 -0
  219. package/esm/runtime/sanitizer.d.ts.map +1 -0
  220. package/esm/runtime/types.d.ts +415 -0
  221. package/esm/runtime/types.d.ts.map +1 -0
  222. package/esm/runtime/wrapper.d.ts +421 -0
  223. package/esm/runtime/wrapper.d.ts.map +1 -0
  224. package/esm/styles/index.d.ts +8 -0
  225. package/esm/styles/index.d.ts.map +1 -0
  226. package/esm/styles/index.js +171 -0
  227. package/esm/styles/variants.d.ts +51 -0
  228. package/esm/styles/variants.d.ts.map +1 -0
  229. package/esm/theme/cdn.d.ts +195 -0
  230. package/esm/theme/cdn.d.ts.map +1 -0
  231. package/esm/theme/index.d.ts +18 -0
  232. package/esm/theme/index.d.ts.map +1 -0
  233. package/esm/theme/index.js +700 -0
  234. package/esm/theme/platforms.d.ts +107 -0
  235. package/esm/theme/platforms.d.ts.map +1 -0
  236. package/esm/theme/presets/github-openai.d.ts +50 -0
  237. package/esm/theme/presets/github-openai.d.ts.map +1 -0
  238. package/esm/theme/presets/index.d.ts +11 -0
  239. package/esm/theme/presets/index.d.ts.map +1 -0
  240. package/esm/theme/theme.d.ts +396 -0
  241. package/esm/theme/theme.d.ts.map +1 -0
  242. package/esm/tool-template/builder.d.ts +213 -0
  243. package/esm/tool-template/builder.d.ts.map +1 -0
  244. package/esm/tool-template/index.d.ts +16 -0
  245. package/esm/tool-template/index.d.ts.map +1 -0
  246. package/esm/tool-template/index.js +3518 -0
  247. package/esm/types/index.d.ts +14 -0
  248. package/esm/types/index.d.ts.map +1 -0
  249. package/esm/types/index.js +75 -0
  250. package/esm/types/ui-config.d.ts +641 -0
  251. package/esm/types/ui-config.d.ts.map +1 -0
  252. package/esm/types/ui-runtime.d.ts +1008 -0
  253. package/esm/types/ui-runtime.d.ts.map +1 -0
  254. package/esm/typings/cache/cache-adapter.d.ts +125 -0
  255. package/esm/typings/cache/cache-adapter.d.ts.map +1 -0
  256. package/esm/typings/cache/index.d.ts +10 -0
  257. package/esm/typings/cache/index.d.ts.map +1 -0
  258. package/esm/typings/cache/memory-cache.d.ts +92 -0
  259. package/esm/typings/cache/memory-cache.d.ts.map +1 -0
  260. package/esm/typings/dts-parser.d.ts +90 -0
  261. package/esm/typings/dts-parser.d.ts.map +1 -0
  262. package/esm/typings/index.d.ts +48 -0
  263. package/esm/typings/index.d.ts.map +1 -0
  264. package/esm/typings/index.js +812 -0
  265. package/esm/typings/schemas.d.ts +232 -0
  266. package/esm/typings/schemas.d.ts.map +1 -0
  267. package/esm/typings/type-fetcher.d.ts +89 -0
  268. package/esm/typings/type-fetcher.d.ts.map +1 -0
  269. package/esm/typings/types.d.ts +320 -0
  270. package/esm/typings/types.d.ts.map +1 -0
  271. package/esm/utils/escape-html.d.ts +58 -0
  272. package/esm/utils/escape-html.d.ts.map +1 -0
  273. package/esm/utils/index.d.ts +10 -0
  274. package/esm/utils/index.d.ts.map +1 -0
  275. package/esm/utils/index.js +40 -0
  276. package/esm/utils/safe-stringify.d.ts +30 -0
  277. package/esm/utils/safe-stringify.d.ts.map +1 -0
  278. package/esm/validation/error-box.d.ts +56 -0
  279. package/esm/validation/error-box.d.ts.map +1 -0
  280. package/esm/validation/index.d.ts +13 -0
  281. package/esm/validation/index.d.ts.map +1 -0
  282. package/esm/validation/index.js +542 -0
  283. package/esm/validation/schema-paths.d.ts +118 -0
  284. package/esm/validation/schema-paths.d.ts.map +1 -0
  285. package/esm/validation/template-validator.d.ts +143 -0
  286. package/esm/validation/template-validator.d.ts.map +1 -0
  287. package/esm/validation/wrapper.d.ts +97 -0
  288. package/esm/validation/wrapper.d.ts.map +1 -0
  289. package/handlebars/expression-extractor.d.ts +147 -0
  290. package/handlebars/expression-extractor.d.ts.map +1 -0
  291. package/handlebars/helpers.d.ts +339 -0
  292. package/handlebars/helpers.d.ts.map +1 -0
  293. package/handlebars/index.d.ts +195 -0
  294. package/handlebars/index.d.ts.map +1 -0
  295. package/handlebars/index.js +666 -0
  296. package/index.d.ts +50 -0
  297. package/index.d.ts.map +1 -0
  298. package/index.js +12683 -0
  299. package/package.json +66 -0
  300. package/registry/index.d.ts +46 -0
  301. package/registry/index.d.ts.map +1 -0
  302. package/registry/index.js +6280 -0
  303. package/registry/render-template.d.ts +91 -0
  304. package/registry/render-template.d.ts.map +1 -0
  305. package/registry/tool-ui.registry.d.ts +294 -0
  306. package/registry/tool-ui.registry.d.ts.map +1 -0
  307. package/registry/uri-utils.d.ts +56 -0
  308. package/registry/uri-utils.d.ts.map +1 -0
  309. package/renderers/cache.d.ts +145 -0
  310. package/renderers/cache.d.ts.map +1 -0
  311. package/renderers/html.renderer.d.ts +123 -0
  312. package/renderers/html.renderer.d.ts.map +1 -0
  313. package/renderers/index.d.ts +36 -0
  314. package/renderers/index.d.ts.map +1 -0
  315. package/renderers/index.js +1706 -0
  316. package/renderers/mdx.renderer.d.ts +120 -0
  317. package/renderers/mdx.renderer.d.ts.map +1 -0
  318. package/renderers/registry.d.ts +133 -0
  319. package/renderers/registry.d.ts.map +1 -0
  320. package/renderers/types.d.ts +342 -0
  321. package/renderers/types.d.ts.map +1 -0
  322. package/renderers/utils/detect.d.ts +107 -0
  323. package/renderers/utils/detect.d.ts.map +1 -0
  324. package/renderers/utils/hash.d.ts +40 -0
  325. package/renderers/utils/hash.d.ts.map +1 -0
  326. package/renderers/utils/index.d.ts +9 -0
  327. package/renderers/utils/index.d.ts.map +1 -0
  328. package/renderers/utils/transpiler.d.ts +89 -0
  329. package/renderers/utils/transpiler.d.ts.map +1 -0
  330. package/runtime/adapters/html.adapter.d.ts +59 -0
  331. package/runtime/adapters/html.adapter.d.ts.map +1 -0
  332. package/runtime/adapters/index.d.ts +26 -0
  333. package/runtime/adapters/index.d.ts.map +1 -0
  334. package/runtime/adapters/mdx.adapter.d.ts +73 -0
  335. package/runtime/adapters/mdx.adapter.d.ts.map +1 -0
  336. package/runtime/adapters/types.d.ts +95 -0
  337. package/runtime/adapters/types.d.ts.map +1 -0
  338. package/runtime/csp.d.ts +48 -0
  339. package/runtime/csp.d.ts.map +1 -0
  340. package/runtime/index.d.ts +17 -0
  341. package/runtime/index.d.ts.map +1 -0
  342. package/runtime/index.js +5052 -0
  343. package/runtime/mcp-bridge.d.ts +101 -0
  344. package/runtime/mcp-bridge.d.ts.map +1 -0
  345. package/runtime/renderer-runtime.d.ts +133 -0
  346. package/runtime/renderer-runtime.d.ts.map +1 -0
  347. package/runtime/sanitizer.d.ts +172 -0
  348. package/runtime/sanitizer.d.ts.map +1 -0
  349. package/runtime/types.d.ts +415 -0
  350. package/runtime/types.d.ts.map +1 -0
  351. package/runtime/wrapper.d.ts +421 -0
  352. package/runtime/wrapper.d.ts.map +1 -0
  353. package/styles/index.d.ts +8 -0
  354. package/styles/index.d.ts.map +1 -0
  355. package/styles/index.js +222 -0
  356. package/styles/variants.d.ts +51 -0
  357. package/styles/variants.d.ts.map +1 -0
  358. package/theme/cdn.d.ts +195 -0
  359. package/theme/cdn.d.ts.map +1 -0
  360. package/theme/index.d.ts +18 -0
  361. package/theme/index.d.ts.map +1 -0
  362. package/theme/index.js +757 -0
  363. package/theme/platforms.d.ts +107 -0
  364. package/theme/platforms.d.ts.map +1 -0
  365. package/theme/presets/github-openai.d.ts +50 -0
  366. package/theme/presets/github-openai.d.ts.map +1 -0
  367. package/theme/presets/index.d.ts +11 -0
  368. package/theme/presets/index.d.ts.map +1 -0
  369. package/theme/theme.d.ts +396 -0
  370. package/theme/theme.d.ts.map +1 -0
  371. package/tool-template/builder.d.ts +213 -0
  372. package/tool-template/builder.d.ts.map +1 -0
  373. package/tool-template/index.d.ts +16 -0
  374. package/tool-template/index.d.ts.map +1 -0
  375. package/tool-template/index.js +3562 -0
  376. package/types/index.d.ts +14 -0
  377. package/types/index.d.ts.map +1 -0
  378. package/types/index.js +108 -0
  379. package/types/ui-config.d.ts +641 -0
  380. package/types/ui-config.d.ts.map +1 -0
  381. package/types/ui-runtime.d.ts +1008 -0
  382. package/types/ui-runtime.d.ts.map +1 -0
  383. package/typings/cache/cache-adapter.d.ts +125 -0
  384. package/typings/cache/cache-adapter.d.ts.map +1 -0
  385. package/typings/cache/index.d.ts +10 -0
  386. package/typings/cache/index.d.ts.map +1 -0
  387. package/typings/cache/memory-cache.d.ts +92 -0
  388. package/typings/cache/memory-cache.d.ts.map +1 -0
  389. package/typings/dts-parser.d.ts +90 -0
  390. package/typings/dts-parser.d.ts.map +1 -0
  391. package/typings/index.d.ts +48 -0
  392. package/typings/index.d.ts.map +1 -0
  393. package/typings/index.js +868 -0
  394. package/typings/schemas.d.ts +232 -0
  395. package/typings/schemas.d.ts.map +1 -0
  396. package/typings/type-fetcher.d.ts +89 -0
  397. package/typings/type-fetcher.d.ts.map +1 -0
  398. package/typings/types.d.ts +320 -0
  399. package/typings/types.d.ts.map +1 -0
  400. package/utils/escape-html.d.ts +58 -0
  401. package/utils/escape-html.d.ts.map +1 -0
  402. package/utils/index.d.ts +10 -0
  403. package/utils/index.d.ts.map +1 -0
  404. package/utils/index.js +70 -0
  405. package/utils/safe-stringify.d.ts +30 -0
  406. package/utils/safe-stringify.d.ts.map +1 -0
  407. package/validation/error-box.d.ts +56 -0
  408. package/validation/error-box.d.ts.map +1 -0
  409. package/validation/index.d.ts +13 -0
  410. package/validation/index.d.ts.map +1 -0
  411. package/validation/index.js +583 -0
  412. package/validation/schema-paths.d.ts +118 -0
  413. package/validation/schema-paths.d.ts.map +1 -0
  414. package/validation/template-validator.d.ts +143 -0
  415. package/validation/template-validator.d.ts.map +1 -0
  416. package/validation/wrapper.d.ts +97 -0
  417. package/validation/wrapper.d.ts.map +1 -0
@@ -0,0 +1,812 @@
1
+ // libs/uipack/src/typings/types.ts
2
+ var DEFAULT_TYPE_FETCHER_OPTIONS = {
3
+ maxDepth: 2,
4
+ timeout: 1e4,
5
+ maxConcurrency: 5,
6
+ cdnBaseUrl: "https://esm.sh"
7
+ };
8
+ var TYPE_CACHE_PREFIX = "types:";
9
+ var DEFAULT_TYPE_CACHE_TTL = 60 * 60 * 1e3;
10
+
11
+ // libs/uipack/src/typings/schemas.ts
12
+ import { z } from "zod";
13
+ var typeFetchErrorCodeSchema = z.enum([
14
+ "NETWORK_ERROR",
15
+ "TIMEOUT",
16
+ "NO_TYPES_HEADER",
17
+ "INVALID_SPECIFIER",
18
+ "PACKAGE_NOT_FOUND",
19
+ "PARSE_ERROR"
20
+ ]);
21
+ var typeFetchResultSchema = z.object({
22
+ specifier: z.string().min(1),
23
+ resolvedPackage: z.string().min(1),
24
+ version: z.string().min(1),
25
+ content: z.string(),
26
+ fetchedUrls: z.array(z.string().url()),
27
+ fetchedAt: z.string().datetime()
28
+ }).strict();
29
+ var typeFetchErrorSchema = z.object({
30
+ specifier: z.string().min(1),
31
+ code: typeFetchErrorCodeSchema,
32
+ message: z.string().min(1),
33
+ url: z.string().url().optional()
34
+ }).strict();
35
+ var typeFetchBatchRequestSchema = z.object({
36
+ imports: z.array(z.string().min(1)).min(1),
37
+ maxDepth: z.number().int().min(0).max(10).optional(),
38
+ timeout: z.number().int().min(1e3).max(6e4).optional(),
39
+ maxConcurrency: z.number().int().min(1).max(20).optional(),
40
+ skipCache: z.boolean().optional(),
41
+ versionOverrides: z.record(z.string().min(1), z.string().min(1)).optional()
42
+ }).strict();
43
+ var typeFetchBatchResultSchema = z.object({
44
+ results: z.array(typeFetchResultSchema),
45
+ errors: z.array(typeFetchErrorSchema),
46
+ totalTimeMs: z.number().nonnegative(),
47
+ cacheHits: z.number().int().nonnegative(),
48
+ networkRequests: z.number().int().nonnegative()
49
+ }).strict();
50
+ var typeCacheEntrySchema = z.object({
51
+ result: typeFetchResultSchema,
52
+ cachedAt: z.number().int().positive(),
53
+ size: z.number().int().nonnegative(),
54
+ accessCount: z.number().int().nonnegative()
55
+ }).strict();
56
+ var typeCacheStatsSchema = z.object({
57
+ entries: z.number().int().nonnegative(),
58
+ totalSize: z.number().nonnegative(),
59
+ hits: z.number().int().nonnegative(),
60
+ misses: z.number().int().nonnegative(),
61
+ hitRate: z.number().min(0).max(1)
62
+ }).strict();
63
+ var dtsImportTypeSchema = z.enum(["import", "export", "reference", "declare-module"]);
64
+ var dtsImportSchema = z.object({
65
+ type: dtsImportTypeSchema,
66
+ specifier: z.string().min(1),
67
+ statement: z.string(),
68
+ line: z.number().int().positive()
69
+ }).strict();
70
+ var dtsParseResultSchema = z.object({
71
+ imports: z.array(dtsImportSchema),
72
+ externalPackages: z.array(z.string().min(1)),
73
+ relativeImports: z.array(z.string())
74
+ }).strict();
75
+ var typeFetcherOptionsSchema = z.object({
76
+ maxDepth: z.number().int().min(0).max(10).optional(),
77
+ timeout: z.number().int().min(1e3).max(6e4).optional(),
78
+ maxConcurrency: z.number().int().min(1).max(20).optional(),
79
+ cdnBaseUrl: z.string().url().optional()
80
+ }).strict();
81
+ var packageResolutionSchema = z.object({
82
+ packageName: z.string().min(1),
83
+ subpath: z.string().optional(),
84
+ version: z.string().min(1),
85
+ typesUrl: z.string().url()
86
+ }).strict();
87
+ function validateBatchRequest(data) {
88
+ return typeFetchBatchRequestSchema.parse(data);
89
+ }
90
+ function safeParseBatchRequest(data) {
91
+ return typeFetchBatchRequestSchema.safeParse(data);
92
+ }
93
+ function validateTypeFetcherOptions(data) {
94
+ return typeFetcherOptionsSchema.parse(data);
95
+ }
96
+ function safeParseTypeFetcherOptions(data) {
97
+ return typeFetcherOptionsSchema.safeParse(data);
98
+ }
99
+
100
+ // libs/uipack/src/typings/cache/cache-adapter.ts
101
+ var DEFAULT_CACHE_OPTIONS = {
102
+ maxSize: 500,
103
+ defaultTtl: 60 * 60 * 1e3,
104
+ // 1 hour
105
+ trackStats: true
106
+ };
107
+
108
+ // libs/uipack/src/typings/cache/memory-cache.ts
109
+ var MemoryTypeCache = class {
110
+ cache = /* @__PURE__ */ new Map();
111
+ maxSize;
112
+ defaultTtl;
113
+ trackStats;
114
+ /** Cache statistics */
115
+ stats = {
116
+ hits: 0,
117
+ misses: 0,
118
+ evictions: 0
119
+ };
120
+ constructor(options = {}) {
121
+ const opts = { ...DEFAULT_CACHE_OPTIONS, ...options };
122
+ this.maxSize = opts.maxSize;
123
+ this.defaultTtl = opts.defaultTtl;
124
+ this.trackStats = opts.trackStats;
125
+ }
126
+ /**
127
+ * Get a cached entry by key.
128
+ */
129
+ async get(key) {
130
+ const internal = this.cache.get(key);
131
+ if (!internal) {
132
+ if (this.trackStats) this.stats.misses++;
133
+ return void 0;
134
+ }
135
+ if (internal.expiresAt > 0 && Date.now() > internal.expiresAt) {
136
+ this.cache.delete(key);
137
+ if (this.trackStats) this.stats.misses++;
138
+ return void 0;
139
+ }
140
+ this.cache.delete(key);
141
+ internal.entry.accessCount++;
142
+ this.cache.set(key, internal);
143
+ if (this.trackStats) this.stats.hits++;
144
+ return internal.entry;
145
+ }
146
+ /**
147
+ * Store an entry in the cache.
148
+ */
149
+ async set(key, entry, ttl) {
150
+ if (this.cache.size >= this.maxSize && !this.cache.has(key)) {
151
+ const oldestKey = this.cache.keys().next().value;
152
+ if (oldestKey) {
153
+ this.cache.delete(oldestKey);
154
+ if (this.trackStats) this.stats.evictions++;
155
+ }
156
+ }
157
+ const effectiveTtl = ttl ?? this.defaultTtl;
158
+ const expiresAt = effectiveTtl > 0 ? Date.now() + effectiveTtl : 0;
159
+ this.cache.set(key, { entry, expiresAt });
160
+ }
161
+ /**
162
+ * Check if a key exists in the cache.
163
+ */
164
+ async has(key) {
165
+ const internal = this.cache.get(key);
166
+ if (!internal) return false;
167
+ if (internal.expiresAt > 0 && Date.now() > internal.expiresAt) {
168
+ this.cache.delete(key);
169
+ return false;
170
+ }
171
+ return true;
172
+ }
173
+ /**
174
+ * Delete a cached entry.
175
+ */
176
+ async delete(key) {
177
+ return this.cache.delete(key);
178
+ }
179
+ /**
180
+ * Clear all cached entries.
181
+ */
182
+ async clear() {
183
+ this.cache.clear();
184
+ this.stats = { hits: 0, misses: 0, evictions: 0 };
185
+ }
186
+ /**
187
+ * Get cache statistics.
188
+ */
189
+ async getStats() {
190
+ let totalSize = 0;
191
+ for (const { entry } of this.cache.values()) {
192
+ totalSize += entry.size;
193
+ }
194
+ const total = this.stats.hits + this.stats.misses;
195
+ return {
196
+ entries: this.cache.size,
197
+ totalSize,
198
+ hits: this.stats.hits,
199
+ misses: this.stats.misses,
200
+ hitRate: total > 0 ? this.stats.hits / total : 0
201
+ };
202
+ }
203
+ /**
204
+ * Get current cache size.
205
+ */
206
+ get size() {
207
+ return this.cache.size;
208
+ }
209
+ /**
210
+ * Get number of evictions.
211
+ */
212
+ get evictions() {
213
+ return this.stats.evictions;
214
+ }
215
+ /**
216
+ * Clean up expired entries.
217
+ * Call periodically to free memory from expired entries.
218
+ *
219
+ * @returns Number of entries cleaned up
220
+ */
221
+ cleanup() {
222
+ const now = Date.now();
223
+ let cleaned = 0;
224
+ for (const [key, internal] of this.cache.entries()) {
225
+ if (internal.expiresAt > 0 && now > internal.expiresAt) {
226
+ this.cache.delete(key);
227
+ cleaned++;
228
+ }
229
+ }
230
+ return cleaned;
231
+ }
232
+ };
233
+ var globalTypeCache = new MemoryTypeCache({
234
+ maxSize: 500,
235
+ defaultTtl: 60 * 60 * 1e3
236
+ // 1 hour
237
+ });
238
+
239
+ // libs/uipack/src/typings/dts-parser.ts
240
+ var IMPORT_PATTERN = /^import\s+(?:type\s+)?(?:(?:\{[^}]*\}|\*\s+as\s+\w+|\w+)\s+from\s+)?['"]([^'"]+)['"]/gm;
241
+ var EXPORT_FROM_PATTERN = /^export\s+(?:\{[^}]*\}|\*)\s+from\s+['"]([^'"]+)['"]/gm;
242
+ var REFERENCE_TYPES_PATTERN = /^\/\/\/\s*<reference\s+types\s*=\s*['"]([^'"]+)['"]\s*\/>/gm;
243
+ var REFERENCE_PATH_PATTERN = /^\/\/\/\s*<reference\s+path\s*=\s*['"]([^'"]+)['"]\s*\/>/gm;
244
+ var DECLARE_MODULE_PATTERN = /^declare\s+module\s+['"]([^'"]+)['"]/gm;
245
+ function parseDtsImports(content) {
246
+ const imports = [];
247
+ const externalPackages = /* @__PURE__ */ new Set();
248
+ const relativeImports = /* @__PURE__ */ new Set();
249
+ const lines = content.split("\n");
250
+ for (let i = 0; i < lines.length; i++) {
251
+ const line = lines[i];
252
+ const lineNum = i + 1;
253
+ IMPORT_PATTERN.lastIndex = 0;
254
+ let match = IMPORT_PATTERN.exec(line);
255
+ if (match) {
256
+ const specifier = match[1];
257
+ imports.push({
258
+ type: "import",
259
+ specifier,
260
+ statement: line.trim(),
261
+ line: lineNum
262
+ });
263
+ categorizeSpecifier(specifier, externalPackages, relativeImports);
264
+ }
265
+ EXPORT_FROM_PATTERN.lastIndex = 0;
266
+ match = EXPORT_FROM_PATTERN.exec(line);
267
+ if (match) {
268
+ const specifier = match[1];
269
+ imports.push({
270
+ type: "export",
271
+ specifier,
272
+ statement: line.trim(),
273
+ line: lineNum
274
+ });
275
+ categorizeSpecifier(specifier, externalPackages, relativeImports);
276
+ }
277
+ REFERENCE_TYPES_PATTERN.lastIndex = 0;
278
+ match = REFERENCE_TYPES_PATTERN.exec(line);
279
+ if (match) {
280
+ const specifier = match[1];
281
+ imports.push({
282
+ type: "reference",
283
+ specifier,
284
+ statement: line.trim(),
285
+ line: lineNum
286
+ });
287
+ externalPackages.add(getPackageFromSpecifier(specifier));
288
+ }
289
+ REFERENCE_PATH_PATTERN.lastIndex = 0;
290
+ match = REFERENCE_PATH_PATTERN.exec(line);
291
+ if (match) {
292
+ const specifier = match[1];
293
+ imports.push({
294
+ type: "reference",
295
+ specifier,
296
+ statement: line.trim(),
297
+ line: lineNum
298
+ });
299
+ relativeImports.add(specifier);
300
+ }
301
+ DECLARE_MODULE_PATTERN.lastIndex = 0;
302
+ match = DECLARE_MODULE_PATTERN.exec(line);
303
+ if (match) {
304
+ const specifier = match[1];
305
+ imports.push({
306
+ type: "declare-module",
307
+ specifier,
308
+ statement: line.trim(),
309
+ line: lineNum
310
+ });
311
+ }
312
+ }
313
+ return {
314
+ imports,
315
+ externalPackages: Array.from(externalPackages),
316
+ relativeImports: Array.from(relativeImports)
317
+ };
318
+ }
319
+ function categorizeSpecifier(specifier, externalPackages, relativeImports) {
320
+ if (isRelativeImport(specifier)) {
321
+ relativeImports.add(specifier);
322
+ } else {
323
+ externalPackages.add(getPackageFromSpecifier(specifier));
324
+ }
325
+ }
326
+ function isRelativeImport(specifier) {
327
+ return specifier.startsWith("./") || specifier.startsWith("../") || specifier.startsWith("/") || // Check for Windows-style paths
328
+ /^[A-Za-z]:/.test(specifier);
329
+ }
330
+ function getPackageFromSpecifier(specifier) {
331
+ if (specifier.startsWith("@")) {
332
+ const parts = specifier.split("/");
333
+ if (parts.length >= 2) {
334
+ return `${parts[0]}/${parts[1]}`;
335
+ }
336
+ return specifier;
337
+ }
338
+ const slashIndex = specifier.indexOf("/");
339
+ if (slashIndex > 0) {
340
+ return specifier.substring(0, slashIndex);
341
+ }
342
+ return specifier;
343
+ }
344
+ function getSubpathFromSpecifier(specifier) {
345
+ const packageName = getPackageFromSpecifier(specifier);
346
+ if (specifier.length > packageName.length + 1) {
347
+ return specifier.substring(packageName.length + 1);
348
+ }
349
+ return void 0;
350
+ }
351
+ function parseImportStatement(statement) {
352
+ const namedMatch = /import\s+(?:\{[^}]*\}|\*\s+as\s+\w+|\w+)\s+from\s+['"]([^'"]+)['"]/.exec(statement);
353
+ if (namedMatch) {
354
+ return namedMatch[1];
355
+ }
356
+ const sideEffectMatch = /import\s+['"]([^'"]+)['"]/.exec(statement);
357
+ if (sideEffectMatch) {
358
+ return sideEffectMatch[1];
359
+ }
360
+ return null;
361
+ }
362
+ function combineDtsContents(contents) {
363
+ const seenReferences = /* @__PURE__ */ new Set();
364
+ const references = [];
365
+ const declarations = [];
366
+ for (const [url, content] of contents.entries()) {
367
+ const lines = content.split("\n");
368
+ let inReferences = true;
369
+ for (const line of lines) {
370
+ const trimmed = line.trim();
371
+ if (trimmed.startsWith("///")) {
372
+ if (!seenReferences.has(trimmed)) {
373
+ seenReferences.add(trimmed);
374
+ references.push(trimmed);
375
+ }
376
+ continue;
377
+ }
378
+ if (inReferences && trimmed === "") {
379
+ continue;
380
+ }
381
+ inReferences = false;
382
+ if (declarations.length === 0 || declarations[declarations.length - 1] !== "") {
383
+ if (trimmed !== "") {
384
+ if (!declarations.some((d) => d.includes(`// Source: ${url}`))) {
385
+ declarations.push(`
386
+ // Source: ${url}`);
387
+ }
388
+ }
389
+ }
390
+ declarations.push(line);
391
+ }
392
+ }
393
+ const parts = [];
394
+ if (references.length > 0) {
395
+ parts.push(references.join("\n"));
396
+ parts.push("");
397
+ }
398
+ parts.push(declarations.join("\n").trim());
399
+ return parts.join("\n");
400
+ }
401
+
402
+ // libs/uipack/src/typings/type-fetcher.ts
403
+ var Semaphore = class {
404
+ permits;
405
+ waiting = [];
406
+ constructor(permits) {
407
+ this.permits = permits;
408
+ }
409
+ async acquire() {
410
+ if (this.permits > 0) {
411
+ this.permits--;
412
+ return;
413
+ }
414
+ return new Promise((resolve) => {
415
+ this.waiting.push(resolve);
416
+ });
417
+ }
418
+ release() {
419
+ if (this.waiting.length > 0) {
420
+ const next = this.waiting.shift();
421
+ next?.();
422
+ } else {
423
+ this.permits++;
424
+ }
425
+ }
426
+ };
427
+ var TypeFetcher = class {
428
+ maxDepth;
429
+ timeout;
430
+ maxConcurrency;
431
+ cdnBaseUrl;
432
+ fetchFn;
433
+ cache;
434
+ constructor(options = {}, cache) {
435
+ this.maxDepth = options.maxDepth ?? 2;
436
+ this.timeout = options.timeout ?? 1e4;
437
+ this.maxConcurrency = options.maxConcurrency ?? 5;
438
+ this.cdnBaseUrl = options.cdnBaseUrl ?? "https://esm.sh";
439
+ this.fetchFn = options.fetch ?? globalThis.fetch.bind(globalThis);
440
+ this.cache = cache ?? globalTypeCache;
441
+ }
442
+ /**
443
+ * Fetch types for a batch of import statements.
444
+ *
445
+ * @param request - Batch request configuration
446
+ * @returns Batch result with results and errors
447
+ */
448
+ async fetchBatch(request) {
449
+ const startTime = Date.now();
450
+ const results = [];
451
+ const errors = [];
452
+ let cacheHits = 0;
453
+ let networkRequests = 0;
454
+ const maxDepth = request.maxDepth ?? this.maxDepth;
455
+ const timeout = request.timeout ?? this.timeout;
456
+ const maxConcurrency = request.maxConcurrency ?? this.maxConcurrency;
457
+ const skipCache = request.skipCache ?? false;
458
+ const versionOverrides = request.versionOverrides ?? {};
459
+ const semaphore = new Semaphore(maxConcurrency);
460
+ const promises = request.imports.map(async (importStatement) => {
461
+ await semaphore.acquire();
462
+ try {
463
+ const specifier = parseImportStatement(importStatement);
464
+ if (!specifier) {
465
+ errors.push({
466
+ specifier: importStatement,
467
+ code: "INVALID_SPECIFIER",
468
+ message: `Could not parse import statement: ${importStatement}`
469
+ });
470
+ return;
471
+ }
472
+ const packageName = getPackageFromSpecifier(specifier);
473
+ const version = versionOverrides[packageName] ?? "latest";
474
+ const cacheKey = `${TYPE_CACHE_PREFIX}${packageName}@${version}`;
475
+ if (!skipCache) {
476
+ const cached = await this.cache.get(cacheKey);
477
+ if (cached) {
478
+ cacheHits++;
479
+ results.push(cached.result);
480
+ return;
481
+ }
482
+ }
483
+ const result = await this.fetchTypesForSpecifier(specifier, {
484
+ maxDepth,
485
+ timeout,
486
+ version
487
+ });
488
+ if (result.success) {
489
+ results.push(result.data);
490
+ networkRequests += result.fetchCount;
491
+ const entry = {
492
+ result: result.data,
493
+ cachedAt: Date.now(),
494
+ size: result.data.content.length,
495
+ accessCount: 1
496
+ };
497
+ await this.cache.set(cacheKey, entry);
498
+ } else {
499
+ errors.push(result.error);
500
+ networkRequests += result.fetchCount;
501
+ }
502
+ } finally {
503
+ semaphore.release();
504
+ }
505
+ });
506
+ await Promise.all(promises);
507
+ return {
508
+ results,
509
+ errors,
510
+ totalTimeMs: Date.now() - startTime,
511
+ cacheHits,
512
+ networkRequests
513
+ };
514
+ }
515
+ /**
516
+ * Fetch types for a single import specifier.
517
+ */
518
+ async fetchTypesForSpecifier(specifier, options) {
519
+ let fetchCount = 0;
520
+ const fetchedUrls = [];
521
+ const visitedUrls = /* @__PURE__ */ new Set();
522
+ const contents = /* @__PURE__ */ new Map();
523
+ try {
524
+ const resolution = await this.resolvePackage(specifier, options.version, options.timeout);
525
+ if (!resolution) {
526
+ return {
527
+ success: false,
528
+ error: {
529
+ specifier,
530
+ code: "PACKAGE_NOT_FOUND",
531
+ message: `Could not resolve package: ${specifier}`
532
+ },
533
+ fetchCount
534
+ };
535
+ }
536
+ fetchCount++;
537
+ const fetchResult = await this.fetchRecursive(
538
+ resolution.typesUrl,
539
+ options.maxDepth,
540
+ options.timeout,
541
+ visitedUrls,
542
+ contents
543
+ );
544
+ fetchCount += fetchResult.fetchCount;
545
+ fetchedUrls.push(...fetchResult.fetchedUrls);
546
+ if (!fetchResult.success) {
547
+ return {
548
+ success: false,
549
+ error: {
550
+ specifier,
551
+ code: fetchResult.errorCode,
552
+ message: fetchResult.errorMessage ?? "Unknown error",
553
+ url: fetchResult.errorUrl
554
+ },
555
+ fetchCount
556
+ };
557
+ }
558
+ const combinedContent = combineDtsContents(contents);
559
+ const result = {
560
+ specifier,
561
+ resolvedPackage: resolution.packageName,
562
+ version: resolution.version,
563
+ content: combinedContent,
564
+ fetchedUrls,
565
+ fetchedAt: (/* @__PURE__ */ new Date()).toISOString()
566
+ };
567
+ return { success: true, data: result, fetchCount };
568
+ } catch (error) {
569
+ return {
570
+ success: false,
571
+ error: {
572
+ specifier,
573
+ code: "NETWORK_ERROR",
574
+ message: error instanceof Error ? error.message : String(error)
575
+ },
576
+ fetchCount
577
+ };
578
+ }
579
+ }
580
+ /**
581
+ * Resolve a package specifier to a types URL.
582
+ * Uses path fallback: try full path, then remove last segment until found.
583
+ */
584
+ async resolvePackage(specifier, version, timeout) {
585
+ const packageName = getPackageFromSpecifier(specifier);
586
+ const subpath = getSubpathFromSpecifier(specifier);
587
+ const versionSuffix = version === "latest" ? "" : `@${version}`;
588
+ const baseUrl = `${this.cdnBaseUrl}/${packageName}${versionSuffix}`;
589
+ const urlsToTry = subpath ? [`${baseUrl}/${subpath}`, baseUrl] : [baseUrl];
590
+ for (const url of urlsToTry) {
591
+ try {
592
+ const response = await this.fetchWithTimeout(url, timeout, "HEAD");
593
+ if (response.ok) {
594
+ const typesHeader = response.headers.get("X-TypeScript-Types");
595
+ if (typesHeader) {
596
+ const typesUrl = typesHeader.startsWith("/") ? `${this.cdnBaseUrl}${typesHeader}` : typesHeader;
597
+ const versionMatch = /@(\d+\.\d+\.\d+[^/]*)/.exec(typesUrl);
598
+ const resolvedVersion = versionMatch ? versionMatch[1] : version;
599
+ return {
600
+ packageName,
601
+ subpath,
602
+ version: resolvedVersion,
603
+ typesUrl
604
+ };
605
+ }
606
+ }
607
+ } catch {
608
+ continue;
609
+ }
610
+ }
611
+ return null;
612
+ }
613
+ /**
614
+ * Recursively fetch .d.ts files.
615
+ */
616
+ async fetchRecursive(url, depth, timeout, visited, contents) {
617
+ if (visited.has(url)) {
618
+ return { success: true, fetchCount: 0, fetchedUrls: [] };
619
+ }
620
+ visited.add(url);
621
+ let fetchCount = 1;
622
+ const fetchedUrls = [url];
623
+ try {
624
+ const response = await this.fetchWithTimeout(url, timeout, "GET");
625
+ if (!response.ok) {
626
+ return {
627
+ success: false,
628
+ fetchCount,
629
+ fetchedUrls,
630
+ errorCode: "NETWORK_ERROR",
631
+ errorMessage: `HTTP ${response.status}: ${response.statusText}`,
632
+ errorUrl: url
633
+ };
634
+ }
635
+ const content = await response.text();
636
+ contents.set(url, content);
637
+ if (depth <= 0) {
638
+ return { success: true, fetchCount, fetchedUrls };
639
+ }
640
+ const parsed = parseDtsImports(content);
641
+ for (const pkg of parsed.externalPackages) {
642
+ if (pkg.startsWith("@types/") || isBuiltinModule(pkg)) {
643
+ continue;
644
+ }
645
+ const resolution = await this.resolvePackage(pkg, "latest", timeout);
646
+ fetchCount++;
647
+ if (resolution && !visited.has(resolution.typesUrl)) {
648
+ const result = await this.fetchRecursive(resolution.typesUrl, depth - 1, timeout, visited, contents);
649
+ fetchCount += result.fetchCount;
650
+ fetchedUrls.push(...result.fetchedUrls);
651
+ }
652
+ }
653
+ for (const relativePath of parsed.relativeImports) {
654
+ const resolvedUrl = resolveRelativeUrl(url, relativePath);
655
+ if (resolvedUrl && !visited.has(resolvedUrl)) {
656
+ const result = await this.fetchRecursive(resolvedUrl, depth - 1, timeout, visited, contents);
657
+ fetchCount += result.fetchCount;
658
+ fetchedUrls.push(...result.fetchedUrls);
659
+ }
660
+ }
661
+ return { success: true, fetchCount, fetchedUrls };
662
+ } catch (error) {
663
+ const isTimeout = error instanceof Error && error.message.includes("timeout");
664
+ return {
665
+ success: false,
666
+ fetchCount,
667
+ fetchedUrls,
668
+ errorCode: isTimeout ? "TIMEOUT" : "NETWORK_ERROR",
669
+ errorMessage: error instanceof Error ? error.message : String(error),
670
+ errorUrl: url
671
+ };
672
+ }
673
+ }
674
+ /**
675
+ * Fetch with timeout support.
676
+ */
677
+ async fetchWithTimeout(url, timeout, method) {
678
+ const controller = new AbortController();
679
+ const timeoutId = setTimeout(() => controller.abort(), timeout);
680
+ try {
681
+ const response = await this.fetchFn(url, {
682
+ method,
683
+ signal: controller.signal,
684
+ headers: {
685
+ Accept: "application/typescript, text/plain, */*"
686
+ }
687
+ });
688
+ return response;
689
+ } finally {
690
+ clearTimeout(timeoutId);
691
+ }
692
+ }
693
+ };
694
+ function isBuiltinModule(name) {
695
+ const builtins = /* @__PURE__ */ new Set([
696
+ "assert",
697
+ "buffer",
698
+ "child_process",
699
+ "cluster",
700
+ "console",
701
+ "constants",
702
+ "crypto",
703
+ "dgram",
704
+ "dns",
705
+ "domain",
706
+ "events",
707
+ "fs",
708
+ "http",
709
+ "https",
710
+ "module",
711
+ "net",
712
+ "os",
713
+ "path",
714
+ "punycode",
715
+ "querystring",
716
+ "readline",
717
+ "repl",
718
+ "stream",
719
+ "string_decoder",
720
+ "sys",
721
+ "timers",
722
+ "tls",
723
+ "tty",
724
+ "url",
725
+ "util",
726
+ "v8",
727
+ "vm",
728
+ "zlib",
729
+ // Node.js prefixed modules
730
+ "node:assert",
731
+ "node:buffer",
732
+ "node:child_process",
733
+ "node:cluster",
734
+ "node:console",
735
+ "node:constants",
736
+ "node:crypto",
737
+ "node:dgram",
738
+ "node:dns",
739
+ "node:domain",
740
+ "node:events",
741
+ "node:fs",
742
+ "node:http",
743
+ "node:https",
744
+ "node:module",
745
+ "node:net",
746
+ "node:os",
747
+ "node:path",
748
+ "node:punycode",
749
+ "node:querystring",
750
+ "node:readline",
751
+ "node:repl",
752
+ "node:stream",
753
+ "node:string_decoder",
754
+ "node:sys",
755
+ "node:timers",
756
+ "node:tls",
757
+ "node:tty",
758
+ "node:url",
759
+ "node:util",
760
+ "node:v8",
761
+ "node:vm",
762
+ "node:zlib"
763
+ ]);
764
+ return builtins.has(name);
765
+ }
766
+ function resolveRelativeUrl(base, relative) {
767
+ try {
768
+ let path = relative;
769
+ if (!path.endsWith(".d.ts") && !path.endsWith(".ts")) {
770
+ path = `${path}.d.ts`;
771
+ }
772
+ const resolved = new URL(path, base);
773
+ return resolved.toString();
774
+ } catch {
775
+ return null;
776
+ }
777
+ }
778
+ function createTypeFetcher(options, cache) {
779
+ return new TypeFetcher(options, cache);
780
+ }
781
+ export {
782
+ DEFAULT_CACHE_OPTIONS,
783
+ DEFAULT_TYPE_CACHE_TTL,
784
+ DEFAULT_TYPE_FETCHER_OPTIONS,
785
+ MemoryTypeCache,
786
+ TYPE_CACHE_PREFIX,
787
+ TypeFetcher,
788
+ combineDtsContents,
789
+ createTypeFetcher,
790
+ dtsImportSchema,
791
+ dtsImportTypeSchema,
792
+ dtsParseResultSchema,
793
+ getPackageFromSpecifier,
794
+ getSubpathFromSpecifier,
795
+ globalTypeCache,
796
+ isRelativeImport,
797
+ packageResolutionSchema,
798
+ parseDtsImports,
799
+ parseImportStatement,
800
+ safeParseBatchRequest,
801
+ safeParseTypeFetcherOptions,
802
+ typeCacheEntrySchema,
803
+ typeCacheStatsSchema,
804
+ typeFetchBatchRequestSchema,
805
+ typeFetchBatchResultSchema,
806
+ typeFetchErrorCodeSchema,
807
+ typeFetchErrorSchema,
808
+ typeFetchResultSchema,
809
+ typeFetcherOptionsSchema,
810
+ validateBatchRequest,
811
+ validateTypeFetcherOptions
812
+ };