@frontmcp/uipack 0.12.2 → 1.0.0-beta.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 (298) hide show
  1. package/CLAUDE.md +56 -154
  2. package/README.md +367 -62
  3. package/adapters/base-template.d.ts +30 -0
  4. package/adapters/base-template.d.ts.map +1 -0
  5. package/adapters/cdn-info.d.ts +34 -0
  6. package/adapters/cdn-info.d.ts.map +1 -0
  7. package/adapters/constants.d.ts +18 -0
  8. package/adapters/constants.d.ts.map +1 -0
  9. package/adapters/content-detector.d.ts +19 -0
  10. package/adapters/content-detector.d.ts.map +1 -0
  11. package/adapters/content-renderers.d.ts +27 -0
  12. package/adapters/content-renderers.d.ts.map +1 -0
  13. package/adapters/index.d.ts +14 -7
  14. package/adapters/index.d.ts.map +1 -1
  15. package/adapters/index.js +2343 -426
  16. package/adapters/render-failure.d.ts +18 -0
  17. package/adapters/render-failure.d.ts.map +1 -0
  18. package/adapters/response-builder.d.ts +34 -104
  19. package/adapters/response-builder.d.ts.map +1 -1
  20. package/adapters/serving-mode.d.ts +28 -91
  21. package/adapters/serving-mode.d.ts.map +1 -1
  22. package/adapters/template-renderer.d.ts +50 -0
  23. package/adapters/template-renderer.d.ts.map +1 -0
  24. package/adapters/type-detector.d.ts +18 -0
  25. package/adapters/type-detector.d.ts.map +1 -0
  26. package/bridge-runtime/index.js +1 -1
  27. package/component/index.d.ts +14 -0
  28. package/component/index.d.ts.map +1 -0
  29. package/component/index.js +2043 -0
  30. package/component/loader.d.ts +36 -0
  31. package/component/loader.d.ts.map +1 -0
  32. package/component/renderer.d.ts +30 -0
  33. package/component/renderer.d.ts.map +1 -0
  34. package/component/transpiler.d.ts +49 -0
  35. package/component/transpiler.d.ts.map +1 -0
  36. package/component/types.d.ts +82 -0
  37. package/component/types.d.ts.map +1 -0
  38. package/esm/adapters/index.mjs +2337 -422
  39. package/esm/bridge-runtime/index.mjs +1 -1
  40. package/esm/component/index.mjs +2013 -0
  41. package/esm/index.mjs +3446 -13935
  42. package/esm/package.json +3 -12
  43. package/esm/resolver/index.mjs +661 -0
  44. package/esm/shell/index.mjs +1406 -0
  45. package/esm/types/index.mjs +11 -11
  46. package/esm/utils/index.mjs +53 -8
  47. package/index.d.ts +12 -40
  48. package/index.d.ts.map +1 -1
  49. package/index.js +3579 -14218
  50. package/package.json +3 -12
  51. package/resolver/cdn-registry.d.ts +39 -0
  52. package/resolver/cdn-registry.d.ts.map +1 -0
  53. package/resolver/esm-sh.resolver.d.ts +54 -0
  54. package/resolver/esm-sh.resolver.d.ts.map +1 -0
  55. package/resolver/import-map.d.ts +47 -0
  56. package/resolver/import-map.d.ts.map +1 -0
  57. package/resolver/import-parser.d.ts +28 -0
  58. package/resolver/import-parser.d.ts.map +1 -0
  59. package/resolver/import-rewriter.d.ts +29 -0
  60. package/resolver/import-rewriter.d.ts.map +1 -0
  61. package/resolver/index.d.ts +15 -0
  62. package/resolver/index.d.ts.map +1 -0
  63. package/resolver/index.js +708 -0
  64. package/resolver/types.d.ts +191 -0
  65. package/resolver/types.d.ts.map +1 -0
  66. package/shell/builder.d.ts +31 -0
  67. package/shell/builder.d.ts.map +1 -0
  68. package/shell/csp.d.ts +37 -0
  69. package/shell/csp.d.ts.map +1 -0
  70. package/shell/custom-shell-applier.d.ts +33 -0
  71. package/shell/custom-shell-applier.d.ts.map +1 -0
  72. package/shell/custom-shell-resolver.d.ts +47 -0
  73. package/shell/custom-shell-resolver.d.ts.map +1 -0
  74. package/shell/custom-shell-types.d.ts +75 -0
  75. package/shell/custom-shell-types.d.ts.map +1 -0
  76. package/shell/custom-shell-validator.d.ts +26 -0
  77. package/shell/custom-shell-validator.d.ts.map +1 -0
  78. package/shell/data-injector.d.ts +40 -0
  79. package/shell/data-injector.d.ts.map +1 -0
  80. package/shell/index.d.ts +19 -0
  81. package/shell/index.d.ts.map +1 -0
  82. package/shell/index.js +1453 -0
  83. package/shell/types.d.ts +54 -0
  84. package/shell/types.d.ts.map +1 -0
  85. package/types/index.d.ts +1 -3
  86. package/types/index.d.ts.map +1 -1
  87. package/types/index.js +11 -11
  88. package/types/ui-config.d.ts +50 -11
  89. package/types/ui-config.d.ts.map +1 -1
  90. package/types/ui-runtime.d.ts +8 -82
  91. package/types/ui-runtime.d.ts.map +1 -1
  92. package/utils/index.d.ts +9 -3
  93. package/utils/index.d.ts.map +1 -1
  94. package/utils/index.js +59 -7
  95. package/adapters/platform-meta.constants.d.ts +0 -26
  96. package/adapters/platform-meta.constants.d.ts.map +0 -1
  97. package/adapters/platform-meta.d.ts +0 -234
  98. package/adapters/platform-meta.d.ts.map +0 -1
  99. package/base-template/bridge.d.ts +0 -90
  100. package/base-template/bridge.d.ts.map +0 -1
  101. package/base-template/default-base-template.d.ts +0 -91
  102. package/base-template/default-base-template.d.ts.map +0 -1
  103. package/base-template/index.d.ts +0 -15
  104. package/base-template/index.d.ts.map +0 -1
  105. package/base-template/index.js +0 -1393
  106. package/base-template/polyfills.d.ts +0 -31
  107. package/base-template/polyfills.d.ts.map +0 -1
  108. package/base-template/theme-styles.d.ts +0 -74
  109. package/base-template/theme-styles.d.ts.map +0 -1
  110. package/build/builders/base-builder.d.ts +0 -124
  111. package/build/builders/base-builder.d.ts.map +0 -1
  112. package/build/builders/esbuild-config.d.ts +0 -94
  113. package/build/builders/esbuild-config.d.ts.map +0 -1
  114. package/build/builders/hybrid-builder.d.ts +0 -93
  115. package/build/builders/hybrid-builder.d.ts.map +0 -1
  116. package/build/builders/index.d.ts +0 -17
  117. package/build/builders/index.d.ts.map +0 -1
  118. package/build/builders/inline-builder.d.ts +0 -83
  119. package/build/builders/inline-builder.d.ts.map +0 -1
  120. package/build/builders/static-builder.d.ts +0 -78
  121. package/build/builders/static-builder.d.ts.map +0 -1
  122. package/build/builders/types.d.ts +0 -341
  123. package/build/builders/types.d.ts.map +0 -1
  124. package/build/cdn-resources.d.ts +0 -244
  125. package/build/cdn-resources.d.ts.map +0 -1
  126. package/build/hybrid-data.d.ts +0 -127
  127. package/build/hybrid-data.d.ts.map +0 -1
  128. package/build/index.d.ts +0 -299
  129. package/build/index.d.ts.map +0 -1
  130. package/build/index.js +0 -8699
  131. package/build/ui-components-browser.d.ts +0 -64
  132. package/build/ui-components-browser.d.ts.map +0 -1
  133. package/build/widget-manifest.d.ts +0 -362
  134. package/build/widget-manifest.d.ts.map +0 -1
  135. package/bundler/cache.d.ts +0 -173
  136. package/bundler/cache.d.ts.map +0 -1
  137. package/bundler/file-cache/component-builder.d.ts +0 -167
  138. package/bundler/file-cache/component-builder.d.ts.map +0 -1
  139. package/bundler/file-cache/hash-calculator.d.ts +0 -155
  140. package/bundler/file-cache/hash-calculator.d.ts.map +0 -1
  141. package/bundler/file-cache/index.d.ts +0 -12
  142. package/bundler/file-cache/index.d.ts.map +0 -1
  143. package/bundler/file-cache/storage/filesystem.d.ts +0 -149
  144. package/bundler/file-cache/storage/filesystem.d.ts.map +0 -1
  145. package/bundler/file-cache/storage/index.d.ts +0 -11
  146. package/bundler/file-cache/storage/index.d.ts.map +0 -1
  147. package/bundler/file-cache/storage/interface.d.ts +0 -152
  148. package/bundler/file-cache/storage/interface.d.ts.map +0 -1
  149. package/bundler/file-cache/storage/redis.d.ts +0 -139
  150. package/bundler/file-cache/storage/redis.d.ts.map +0 -1
  151. package/bundler/index.d.ts +0 -35
  152. package/bundler/index.d.ts.map +0 -1
  153. package/bundler/index.js +0 -2953
  154. package/bundler/sandbox/enclave-adapter.d.ts +0 -121
  155. package/bundler/sandbox/enclave-adapter.d.ts.map +0 -1
  156. package/bundler/sandbox/executor.d.ts +0 -14
  157. package/bundler/sandbox/executor.d.ts.map +0 -1
  158. package/bundler/sandbox/policy.d.ts +0 -62
  159. package/bundler/sandbox/policy.d.ts.map +0 -1
  160. package/bundler/types.d.ts +0 -702
  161. package/bundler/types.d.ts.map +0 -1
  162. package/dependency/cdn-registry.d.ts +0 -98
  163. package/dependency/cdn-registry.d.ts.map +0 -1
  164. package/dependency/import-map.d.ts +0 -186
  165. package/dependency/import-map.d.ts.map +0 -1
  166. package/dependency/import-parser.d.ts +0 -82
  167. package/dependency/import-parser.d.ts.map +0 -1
  168. package/dependency/index.d.ts +0 -17
  169. package/dependency/index.d.ts.map +0 -1
  170. package/dependency/index.js +0 -3180
  171. package/dependency/resolver.d.ts +0 -164
  172. package/dependency/resolver.d.ts.map +0 -1
  173. package/dependency/schemas.d.ts +0 -486
  174. package/dependency/schemas.d.ts.map +0 -1
  175. package/dependency/template-loader.d.ts +0 -204
  176. package/dependency/template-loader.d.ts.map +0 -1
  177. package/dependency/template-processor.d.ts +0 -118
  178. package/dependency/template-processor.d.ts.map +0 -1
  179. package/dependency/types.d.ts +0 -739
  180. package/dependency/types.d.ts.map +0 -1
  181. package/esm/base-template/index.mjs +0 -1359
  182. package/esm/build/index.mjs +0 -8601
  183. package/esm/bundler/index.mjs +0 -2895
  184. package/esm/dependency/index.mjs +0 -3068
  185. package/esm/handlebars/index.mjs +0 -587
  186. package/esm/registry/index.mjs +0 -6305
  187. package/esm/renderers/index.mjs +0 -1557
  188. package/esm/runtime/index.mjs +0 -5361
  189. package/esm/styles/index.mjs +0 -171
  190. package/esm/theme/index.mjs +0 -756
  191. package/esm/tool-template/index.mjs +0 -3652
  192. package/esm/validation/index.mjs +0 -542
  193. package/handlebars/expression-extractor.d.ts +0 -147
  194. package/handlebars/expression-extractor.d.ts.map +0 -1
  195. package/handlebars/helpers.d.ts +0 -339
  196. package/handlebars/helpers.d.ts.map +0 -1
  197. package/handlebars/index.d.ts +0 -195
  198. package/handlebars/index.d.ts.map +0 -1
  199. package/handlebars/index.js +0 -659
  200. package/preview/claude-preview.d.ts +0 -67
  201. package/preview/claude-preview.d.ts.map +0 -1
  202. package/preview/generic-preview.d.ts +0 -66
  203. package/preview/generic-preview.d.ts.map +0 -1
  204. package/preview/index.d.ts +0 -36
  205. package/preview/index.d.ts.map +0 -1
  206. package/preview/openai-preview.d.ts +0 -70
  207. package/preview/openai-preview.d.ts.map +0 -1
  208. package/preview/types.d.ts +0 -199
  209. package/preview/types.d.ts.map +0 -1
  210. package/registry/index.d.ts +0 -46
  211. package/registry/index.d.ts.map +0 -1
  212. package/registry/index.js +0 -6342
  213. package/registry/render-template.d.ts +0 -91
  214. package/registry/render-template.d.ts.map +0 -1
  215. package/registry/tool-ui.registry.d.ts +0 -294
  216. package/registry/tool-ui.registry.d.ts.map +0 -1
  217. package/registry/uri-utils.d.ts +0 -56
  218. package/registry/uri-utils.d.ts.map +0 -1
  219. package/renderers/cache.d.ts +0 -145
  220. package/renderers/cache.d.ts.map +0 -1
  221. package/renderers/html.renderer.d.ts +0 -123
  222. package/renderers/html.renderer.d.ts.map +0 -1
  223. package/renderers/index.d.ts +0 -36
  224. package/renderers/index.d.ts.map +0 -1
  225. package/renderers/index.js +0 -1603
  226. package/renderers/mdx-client.renderer.d.ts +0 -124
  227. package/renderers/mdx-client.renderer.d.ts.map +0 -1
  228. package/renderers/registry.d.ts +0 -133
  229. package/renderers/registry.d.ts.map +0 -1
  230. package/renderers/types.d.ts +0 -343
  231. package/renderers/types.d.ts.map +0 -1
  232. package/renderers/utils/detect.d.ts +0 -107
  233. package/renderers/utils/detect.d.ts.map +0 -1
  234. package/renderers/utils/hash.d.ts +0 -40
  235. package/renderers/utils/hash.d.ts.map +0 -1
  236. package/renderers/utils/index.d.ts +0 -9
  237. package/renderers/utils/index.d.ts.map +0 -1
  238. package/renderers/utils/transpiler.d.ts +0 -70
  239. package/renderers/utils/transpiler.d.ts.map +0 -1
  240. package/runtime/adapters/html.adapter.d.ts +0 -59
  241. package/runtime/adapters/html.adapter.d.ts.map +0 -1
  242. package/runtime/adapters/index.d.ts +0 -26
  243. package/runtime/adapters/index.d.ts.map +0 -1
  244. package/runtime/adapters/mdx.adapter.d.ts +0 -73
  245. package/runtime/adapters/mdx.adapter.d.ts.map +0 -1
  246. package/runtime/adapters/types.d.ts +0 -95
  247. package/runtime/adapters/types.d.ts.map +0 -1
  248. package/runtime/csp.d.ts +0 -48
  249. package/runtime/csp.d.ts.map +0 -1
  250. package/runtime/index.d.ts +0 -17
  251. package/runtime/index.d.ts.map +0 -1
  252. package/runtime/index.js +0 -5432
  253. package/runtime/mcp-bridge.d.ts +0 -101
  254. package/runtime/mcp-bridge.d.ts.map +0 -1
  255. package/runtime/renderer-runtime.d.ts +0 -133
  256. package/runtime/renderer-runtime.d.ts.map +0 -1
  257. package/runtime/sanitizer.d.ts +0 -180
  258. package/runtime/sanitizer.d.ts.map +0 -1
  259. package/runtime/types.d.ts +0 -415
  260. package/runtime/types.d.ts.map +0 -1
  261. package/runtime/wrapper.d.ts +0 -421
  262. package/runtime/wrapper.d.ts.map +0 -1
  263. package/styles/index.d.ts +0 -8
  264. package/styles/index.d.ts.map +0 -1
  265. package/styles/index.js +0 -222
  266. package/styles/variants.d.ts +0 -51
  267. package/styles/variants.d.ts.map +0 -1
  268. package/theme/cdn.d.ts +0 -195
  269. package/theme/cdn.d.ts.map +0 -1
  270. package/theme/css-to-theme.d.ts +0 -64
  271. package/theme/css-to-theme.d.ts.map +0 -1
  272. package/theme/index.d.ts +0 -19
  273. package/theme/index.d.ts.map +0 -1
  274. package/theme/index.js +0 -814
  275. package/theme/platforms.d.ts +0 -102
  276. package/theme/platforms.d.ts.map +0 -1
  277. package/theme/presets/github-openai.d.ts +0 -50
  278. package/theme/presets/github-openai.d.ts.map +0 -1
  279. package/theme/presets/index.d.ts +0 -11
  280. package/theme/presets/index.d.ts.map +0 -1
  281. package/theme/theme.d.ts +0 -396
  282. package/theme/theme.d.ts.map +0 -1
  283. package/tool-template/builder.d.ts +0 -213
  284. package/tool-template/builder.d.ts.map +0 -1
  285. package/tool-template/index.d.ts +0 -16
  286. package/tool-template/index.d.ts.map +0 -1
  287. package/tool-template/index.js +0 -3690
  288. package/validation/error-box.d.ts +0 -56
  289. package/validation/error-box.d.ts.map +0 -1
  290. package/validation/index.d.ts +0 -13
  291. package/validation/index.d.ts.map +0 -1
  292. package/validation/index.js +0 -576
  293. package/validation/schema-paths.d.ts +0 -118
  294. package/validation/schema-paths.d.ts.map +0 -1
  295. package/validation/template-validator.d.ts +0 -143
  296. package/validation/template-validator.d.ts.map +0 -1
  297. package/validation/wrapper.d.ts +0 -97
  298. package/validation/wrapper.d.ts.map +0 -1
@@ -0,0 +1,708 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // libs/uipack/src/resolver/index.ts
21
+ var resolver_exports = {};
22
+ __export(resolver_exports, {
23
+ DEFAULT_CDN_REGISTRY: () => DEFAULT_CDN_REGISTRY,
24
+ createEsmShResolver: () => createEsmShResolver,
25
+ createImportMap: () => createImportMap,
26
+ createImportMapFromResolved: () => createImportMapFromResolved,
27
+ createResolverWithOverrides: () => createResolverWithOverrides,
28
+ extractExternalPackages: () => extractExternalPackages,
29
+ generateCDNScriptTags: () => generateCDNScriptTags,
30
+ generateDependencyHTML: () => generateDependencyHTML,
31
+ generateImportMapScriptTag: () => generateImportMapScriptTag,
32
+ generateImportMapScriptTagMinified: () => generateImportMapScriptTagMinified,
33
+ getPackageCDNUrl: () => getPackageCDNUrl,
34
+ getPackageName: () => getPackageName,
35
+ getPackagePeerDependencies: () => getPackagePeerDependencies,
36
+ getRegisteredPackages: () => getRegisteredPackages,
37
+ isPackageRegistered: () => isPackageRegistered,
38
+ lookupPackage: () => lookupPackage,
39
+ mergeImportMaps: () => mergeImportMaps,
40
+ mergeRegistries: () => mergeRegistries,
41
+ parseImports: () => parseImports,
42
+ rewriteImports: () => rewriteImports,
43
+ validateImportMap: () => validateImportMap
44
+ });
45
+ module.exports = __toCommonJS(resolver_exports);
46
+
47
+ // libs/uipack/src/resolver/cdn-registry.ts
48
+ var DEFAULT_CDN_REGISTRY = {
49
+ react: {
50
+ packageName: "react",
51
+ defaultVersion: "19.2.4",
52
+ providers: {
53
+ cloudflare: {
54
+ url: "https://cdnjs.cloudflare.com/ajax/libs/react/19.2.4/umd/react.production.min.js",
55
+ global: "React",
56
+ crossorigin: "anonymous"
57
+ },
58
+ jsdelivr: {
59
+ url: "https://cdn.jsdelivr.net/npm/react@19.2.4/umd/react.production.min.js",
60
+ global: "React",
61
+ crossorigin: "anonymous"
62
+ },
63
+ unpkg: {
64
+ url: "https://unpkg.com/react@19.2.4/umd/react.production.min.js",
65
+ global: "React",
66
+ crossorigin: "anonymous"
67
+ },
68
+ "esm.sh": {
69
+ url: "https://esm.sh/react@19.2.4",
70
+ esm: true,
71
+ crossorigin: "anonymous"
72
+ }
73
+ },
74
+ preferredProviders: ["esm.sh", "cloudflare", "jsdelivr", "unpkg"],
75
+ metadata: {
76
+ description: "A JavaScript library for building user interfaces",
77
+ homepage: "https://react.dev",
78
+ license: "MIT"
79
+ }
80
+ },
81
+ "react-dom": {
82
+ packageName: "react-dom",
83
+ defaultVersion: "19.2.4",
84
+ providers: {
85
+ cloudflare: {
86
+ url: "https://cdnjs.cloudflare.com/ajax/libs/react-dom/19.2.4/umd/react-dom.production.min.js",
87
+ global: "ReactDOM",
88
+ crossorigin: "anonymous",
89
+ peerDependencies: ["react"]
90
+ },
91
+ jsdelivr: {
92
+ url: "https://cdn.jsdelivr.net/npm/react-dom@19.2.4/umd/react-dom.production.min.js",
93
+ global: "ReactDOM",
94
+ crossorigin: "anonymous",
95
+ peerDependencies: ["react"]
96
+ },
97
+ unpkg: {
98
+ url: "https://unpkg.com/react-dom@19.2.4/umd/react-dom.production.min.js",
99
+ global: "ReactDOM",
100
+ crossorigin: "anonymous",
101
+ peerDependencies: ["react"]
102
+ },
103
+ "esm.sh": {
104
+ url: "https://esm.sh/react-dom@19.2.4",
105
+ esm: true,
106
+ crossorigin: "anonymous",
107
+ peerDependencies: ["react"]
108
+ }
109
+ },
110
+ preferredProviders: ["esm.sh", "cloudflare", "jsdelivr", "unpkg"],
111
+ metadata: {
112
+ description: "React package for working with the DOM",
113
+ homepage: "https://react.dev",
114
+ license: "MIT"
115
+ }
116
+ },
117
+ "chart.js": {
118
+ packageName: "chart.js",
119
+ defaultVersion: "4.5.1",
120
+ providers: {
121
+ cloudflare: {
122
+ url: "https://cdnjs.cloudflare.com/ajax/libs/Chart.js/4.5.1/chart.umd.min.js",
123
+ global: "Chart",
124
+ crossorigin: "anonymous"
125
+ },
126
+ jsdelivr: {
127
+ url: "https://cdn.jsdelivr.net/npm/chart.js@4.5.1/dist/chart.umd.min.js",
128
+ global: "Chart",
129
+ crossorigin: "anonymous"
130
+ },
131
+ unpkg: {
132
+ url: "https://unpkg.com/chart.js@4.5.1/dist/chart.umd.min.js",
133
+ global: "Chart",
134
+ crossorigin: "anonymous"
135
+ }
136
+ },
137
+ preferredProviders: ["esm.sh", "cloudflare", "jsdelivr", "unpkg"],
138
+ metadata: {
139
+ description: "Simple yet flexible JavaScript charting library",
140
+ homepage: "https://www.chartjs.org",
141
+ license: "MIT"
142
+ }
143
+ },
144
+ d3: {
145
+ packageName: "d3",
146
+ defaultVersion: "7.9.0",
147
+ providers: {
148
+ cloudflare: {
149
+ url: "https://cdnjs.cloudflare.com/ajax/libs/d3/7.9.0/d3.min.js",
150
+ integrity: "sha512-vc58qvvBdrDR4etbxMdlTt4GBQk1qjvyORR2nrsPsFPyrs+/u5c3+1Ct6upOgdZoIl7eq6k3a1UPDSNAQi/32A==",
151
+ global: "d3",
152
+ crossorigin: "anonymous"
153
+ },
154
+ jsdelivr: {
155
+ url: "https://cdn.jsdelivr.net/npm/d3@7.9.0/dist/d3.min.js",
156
+ global: "d3",
157
+ crossorigin: "anonymous"
158
+ },
159
+ unpkg: {
160
+ url: "https://unpkg.com/d3@7.9.0/dist/d3.min.js",
161
+ global: "d3",
162
+ crossorigin: "anonymous"
163
+ }
164
+ },
165
+ preferredProviders: ["esm.sh", "cloudflare", "jsdelivr", "unpkg"],
166
+ metadata: {
167
+ description: "Data-Driven Documents",
168
+ homepage: "https://d3js.org",
169
+ license: "ISC"
170
+ }
171
+ },
172
+ lodash: {
173
+ packageName: "lodash",
174
+ defaultVersion: "4.17.21",
175
+ providers: {
176
+ cloudflare: {
177
+ url: "https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js",
178
+ integrity: "sha512-WFN04846sdKMIP5LKNphMaWzU7YpMyCU245etK3g/2ARYbPK9Ub18eG+ljU96qKRCWh+quCY7yefSmlkQw1ANQ==",
179
+ global: "_",
180
+ crossorigin: "anonymous"
181
+ },
182
+ jsdelivr: {
183
+ url: "https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js",
184
+ global: "_",
185
+ crossorigin: "anonymous"
186
+ },
187
+ unpkg: {
188
+ url: "https://unpkg.com/lodash@4.17.21/lodash.min.js",
189
+ global: "_",
190
+ crossorigin: "anonymous"
191
+ }
192
+ },
193
+ preferredProviders: ["esm.sh", "cloudflare", "jsdelivr", "unpkg"],
194
+ metadata: {
195
+ description: "A modern JavaScript utility library",
196
+ homepage: "https://lodash.com",
197
+ license: "MIT"
198
+ }
199
+ }
200
+ };
201
+ function lookupPackage(packageName, registry = DEFAULT_CDN_REGISTRY) {
202
+ return registry[packageName];
203
+ }
204
+ function getPackageCDNUrl(packageName, providerOrder = ["esm.sh", "cloudflare", "jsdelivr", "unpkg"], registry = DEFAULT_CDN_REGISTRY) {
205
+ const entry = lookupPackage(packageName, registry);
206
+ if (!entry) return void 0;
207
+ for (const provider of providerOrder) {
208
+ const config = entry.providers[provider];
209
+ if (config?.url) {
210
+ return config.url;
211
+ }
212
+ }
213
+ for (const provider of Object.keys(entry.providers)) {
214
+ const config = entry.providers[provider];
215
+ if (config?.url) {
216
+ return config.url;
217
+ }
218
+ }
219
+ return void 0;
220
+ }
221
+ function getRegisteredPackages(registry = DEFAULT_CDN_REGISTRY) {
222
+ return Object.keys(registry);
223
+ }
224
+ function isPackageRegistered(packageName, registry = DEFAULT_CDN_REGISTRY) {
225
+ return packageName in registry;
226
+ }
227
+ function mergeRegistries(customRegistry) {
228
+ return {
229
+ ...DEFAULT_CDN_REGISTRY,
230
+ ...customRegistry
231
+ };
232
+ }
233
+ function getPackagePeerDependencies(packageName, registry = DEFAULT_CDN_REGISTRY) {
234
+ const entry = lookupPackage(packageName, registry);
235
+ if (!entry) return [];
236
+ for (const provider of Object.keys(entry.providers)) {
237
+ const config = entry.providers[provider];
238
+ if (config?.peerDependencies) {
239
+ return config.peerDependencies;
240
+ }
241
+ }
242
+ return [];
243
+ }
244
+
245
+ // libs/uipack/src/resolver/import-parser.ts
246
+ var IMPORT_PATTERNS = {
247
+ named: /import\s*\{([^}]+)\}\s*from\s*['"]([^'"]+)['"]/g,
248
+ default: /import\s+(\w+)\s+from\s*['"]([^'"]+)['"]/g,
249
+ namespace: /import\s*\*\s*as\s+(\w+)\s+from\s*['"]([^'"]+)['"]/g,
250
+ sideEffect: /import\s*['"]([^'"]+)['"]/g,
251
+ dynamic: /(?:await\s+)?import\s*\(\s*['"]([^'"]+)['"]\s*\)/g,
252
+ defaultAndNamed: /import\s+(\w+)\s*,\s*\{([^}]+)\}\s*from\s*['"]([^'"]+)['"]/g,
253
+ defaultAndNamespace: /import\s+(\w+)\s*,\s*\*\s*as\s+(\w+)\s+from\s*['"]([^'"]+)['"]/g,
254
+ reExport: /export\s*\{[^}]+\}\s*from\s*['"]([^'"]+)['"]/g,
255
+ reExportAll: /export\s*\*\s*from\s*['"]([^'"]+)['"]/g
256
+ };
257
+ function parseNamedImports(namedString) {
258
+ return namedString.split(",").map((s) => s.trim()).filter((s) => s.length > 0).map((s) => {
259
+ const asMatch = s.match(/^(\w+)\s+as\s+\w+$/);
260
+ return asMatch ? asMatch[1] : s;
261
+ });
262
+ }
263
+ function isRelativeImport(specifier) {
264
+ return specifier.startsWith("./") || specifier.startsWith("../") || specifier.startsWith("/");
265
+ }
266
+ function isExternalImport(specifier) {
267
+ return !isRelativeImport(specifier) && !specifier.startsWith("#");
268
+ }
269
+ function getPackageName(specifier) {
270
+ if (specifier.startsWith("@")) {
271
+ const parts = specifier.split("/");
272
+ if (parts.length >= 2) {
273
+ return `${parts[0]}/${parts[1]}`;
274
+ }
275
+ return specifier;
276
+ }
277
+ const firstSlash = specifier.indexOf("/");
278
+ return firstSlash === -1 ? specifier : specifier.slice(0, firstSlash);
279
+ }
280
+ function getLineNumber(source, index) {
281
+ let line = 1;
282
+ for (let i = 0; i < index && i < source.length; i++) {
283
+ if (source[i] === "\n") {
284
+ line++;
285
+ }
286
+ }
287
+ return line;
288
+ }
289
+ function getColumnNumber(source, index) {
290
+ let column = 0;
291
+ for (let i = index - 1; i >= 0 && source[i] !== "\n"; i--) {
292
+ column++;
293
+ }
294
+ return column;
295
+ }
296
+ function parseImports(source) {
297
+ const imports = [];
298
+ const seenStatements = /* @__PURE__ */ new Set();
299
+ const addImport = (imp) => {
300
+ const key = `${imp.type}:${imp.specifier}:${imp.statement}`;
301
+ if (!seenStatements.has(key)) {
302
+ seenStatements.add(key);
303
+ imports.push(imp);
304
+ }
305
+ };
306
+ let match;
307
+ const defaultAndNamedRegex = new RegExp(IMPORT_PATTERNS.defaultAndNamed.source, "g");
308
+ while ((match = defaultAndNamedRegex.exec(source)) !== null) {
309
+ const [statement, defaultName, namedString, specifier] = match;
310
+ addImport({
311
+ statement,
312
+ specifier,
313
+ type: "default",
314
+ defaultImport: defaultName,
315
+ namedImports: parseNamedImports(namedString),
316
+ line: getLineNumber(source, match.index),
317
+ column: getColumnNumber(source, match.index)
318
+ });
319
+ }
320
+ const defaultAndNamespaceRegex = new RegExp(IMPORT_PATTERNS.defaultAndNamespace.source, "g");
321
+ while ((match = defaultAndNamespaceRegex.exec(source)) !== null) {
322
+ const [statement, defaultName, namespaceName, specifier] = match;
323
+ addImport({
324
+ statement,
325
+ specifier,
326
+ type: "default",
327
+ defaultImport: defaultName,
328
+ namespaceImport: namespaceName,
329
+ line: getLineNumber(source, match.index),
330
+ column: getColumnNumber(source, match.index)
331
+ });
332
+ }
333
+ const namedRegex = new RegExp(IMPORT_PATTERNS.named.source, "g");
334
+ while ((match = namedRegex.exec(source)) !== null) {
335
+ const [statement, namedString, specifier] = match;
336
+ addImport({
337
+ statement,
338
+ specifier,
339
+ type: "named",
340
+ namedImports: parseNamedImports(namedString),
341
+ line: getLineNumber(source, match.index),
342
+ column: getColumnNumber(source, match.index)
343
+ });
344
+ }
345
+ const defaultRegex = new RegExp(IMPORT_PATTERNS.default.source, "g");
346
+ while ((match = defaultRegex.exec(source)) !== null) {
347
+ const [statement, defaultName, specifier] = match;
348
+ const afterMatch = source.slice(match.index + match[0].length - specifier.length - 2);
349
+ if (afterMatch.startsWith(",")) continue;
350
+ addImport({
351
+ statement,
352
+ specifier,
353
+ type: "default",
354
+ defaultImport: defaultName,
355
+ line: getLineNumber(source, match.index),
356
+ column: getColumnNumber(source, match.index)
357
+ });
358
+ }
359
+ const namespaceRegex = new RegExp(IMPORT_PATTERNS.namespace.source, "g");
360
+ while ((match = namespaceRegex.exec(source)) !== null) {
361
+ const [statement, namespaceName, specifier] = match;
362
+ addImport({
363
+ statement,
364
+ specifier,
365
+ type: "namespace",
366
+ namespaceImport: namespaceName,
367
+ line: getLineNumber(source, match.index),
368
+ column: getColumnNumber(source, match.index)
369
+ });
370
+ }
371
+ const sideEffectRegex = new RegExp(IMPORT_PATTERNS.sideEffect.source, "g");
372
+ while ((match = sideEffectRegex.exec(source)) !== null) {
373
+ const [statement, specifier] = match;
374
+ const beforeMatch = source.slice(Math.max(0, match.index - 50), match.index);
375
+ if (beforeMatch.includes("from")) continue;
376
+ addImport({
377
+ statement,
378
+ specifier,
379
+ type: "side-effect",
380
+ line: getLineNumber(source, match.index),
381
+ column: getColumnNumber(source, match.index)
382
+ });
383
+ }
384
+ const dynamicRegex = new RegExp(IMPORT_PATTERNS.dynamic.source, "g");
385
+ while ((match = dynamicRegex.exec(source)) !== null) {
386
+ const [statement, specifier] = match;
387
+ addImport({
388
+ statement,
389
+ specifier,
390
+ type: "dynamic",
391
+ line: getLineNumber(source, match.index),
392
+ column: getColumnNumber(source, match.index)
393
+ });
394
+ }
395
+ const reExportRegex = new RegExp(IMPORT_PATTERNS.reExport.source, "g");
396
+ while ((match = reExportRegex.exec(source)) !== null) {
397
+ const [statement, specifier] = match;
398
+ addImport({
399
+ statement,
400
+ specifier,
401
+ type: "named",
402
+ line: getLineNumber(source, match.index),
403
+ column: getColumnNumber(source, match.index)
404
+ });
405
+ }
406
+ const reExportAllRegex = new RegExp(IMPORT_PATTERNS.reExportAll.source, "g");
407
+ while ((match = reExportAllRegex.exec(source)) !== null) {
408
+ const [statement, specifier] = match;
409
+ addImport({
410
+ statement,
411
+ specifier,
412
+ type: "namespace",
413
+ line: getLineNumber(source, match.index),
414
+ column: getColumnNumber(source, match.index)
415
+ });
416
+ }
417
+ const externalImports = imports.filter((imp) => isExternalImport(imp.specifier));
418
+ const relativeImports = imports.filter((imp) => isRelativeImport(imp.specifier));
419
+ const externalPackages = [...new Set(externalImports.map((imp) => getPackageName(imp.specifier)))];
420
+ return {
421
+ imports,
422
+ externalImports,
423
+ relativeImports,
424
+ externalPackages
425
+ };
426
+ }
427
+ function extractExternalPackages(source) {
428
+ return parseImports(source).externalPackages;
429
+ }
430
+
431
+ // libs/uipack/src/resolver/esm-sh.resolver.ts
432
+ var DEFAULT_FALLBACK_CDN = "https://esm.sh";
433
+ function createResolverWithOverrides(overrides, baseOptions) {
434
+ const base = createEsmShResolver(baseOptions);
435
+ return {
436
+ overrides,
437
+ resolve(specifier, context) {
438
+ if (overrides[specifier]) {
439
+ return { value: overrides[specifier], type: "url" };
440
+ }
441
+ for (const [prefix, url] of Object.entries(overrides)) {
442
+ if (specifier.startsWith(prefix + "/")) {
443
+ const subpath = specifier.slice(prefix.length);
444
+ return { value: url + subpath, type: "url" };
445
+ }
446
+ }
447
+ return base.resolve(specifier, context);
448
+ }
449
+ };
450
+ }
451
+ function createEsmShResolver(options = {}) {
452
+ const {
453
+ fallbackCdnBase = DEFAULT_FALLBACK_CDN,
454
+ registry = DEFAULT_CDN_REGISTRY,
455
+ providerOrder = ["esm.sh", "cloudflare", "jsdelivr", "unpkg"]
456
+ } = options;
457
+ return {
458
+ resolve(specifier, _context) {
459
+ if (specifier.startsWith("./") || specifier.startsWith("../") || specifier.startsWith("/")) {
460
+ return null;
461
+ }
462
+ if (specifier.startsWith("node:") || specifier.startsWith("#")) {
463
+ return null;
464
+ }
465
+ const pkgName = getPackageName(specifier);
466
+ const entry = lookupPackage(pkgName, registry);
467
+ if (entry) {
468
+ for (const provider of providerOrder) {
469
+ const config = entry.providers[provider];
470
+ if (config?.url) {
471
+ const subpath = specifier.slice(pkgName.length);
472
+ if (subpath && config.url.includes("esm.sh/")) {
473
+ return {
474
+ value: config.url + subpath,
475
+ type: "url",
476
+ integrity: config.integrity
477
+ };
478
+ }
479
+ if (subpath) {
480
+ return {
481
+ value: `${fallbackCdnBase}/${specifier}`,
482
+ type: "url"
483
+ };
484
+ }
485
+ if (config.global && !config.esm) {
486
+ return {
487
+ value: config.url,
488
+ type: "url",
489
+ integrity: config.integrity
490
+ };
491
+ }
492
+ return {
493
+ value: config.url,
494
+ type: "url",
495
+ integrity: config.integrity
496
+ };
497
+ }
498
+ }
499
+ }
500
+ return {
501
+ value: `${fallbackCdnBase}/${specifier}`,
502
+ type: "url"
503
+ };
504
+ }
505
+ };
506
+ }
507
+
508
+ // libs/uipack/src/utils/index.ts
509
+ function escapeHtmlAttr(str) {
510
+ return str.replace(/&/g, "&amp;").replace(/"/g, "&quot;");
511
+ }
512
+
513
+ // libs/uipack/src/resolver/import-map.ts
514
+ function createImportMapFromResolved(resolved) {
515
+ const imports = {};
516
+ const integrity = {};
517
+ for (const [specifier, res] of Object.entries(resolved)) {
518
+ if (res.type === "url") {
519
+ imports[specifier] = res.value;
520
+ if (res.integrity) {
521
+ integrity[res.value] = res.integrity;
522
+ }
523
+ }
524
+ }
525
+ return {
526
+ imports,
527
+ integrity: Object.keys(integrity).length > 0 ? integrity : void 0
528
+ };
529
+ }
530
+ function createImportMap(dependencies) {
531
+ const imports = {};
532
+ const integrity = {};
533
+ for (const dep of dependencies) {
534
+ imports[dep.packageName] = dep.cdnUrl;
535
+ if (dep.integrity) {
536
+ integrity[dep.cdnUrl] = dep.integrity;
537
+ }
538
+ }
539
+ return {
540
+ imports,
541
+ integrity: Object.keys(integrity).length > 0 ? integrity : void 0
542
+ };
543
+ }
544
+ function mergeImportMaps(...maps) {
545
+ const imports = {};
546
+ const integrity = {};
547
+ const scopes = {};
548
+ for (const map of maps) {
549
+ Object.assign(imports, map.imports);
550
+ if (map.integrity) {
551
+ Object.assign(integrity, map.integrity);
552
+ }
553
+ if (map.scopes) {
554
+ for (const [scope, mappings] of Object.entries(map.scopes)) {
555
+ scopes[scope] = { ...scopes[scope], ...mappings };
556
+ }
557
+ }
558
+ }
559
+ return {
560
+ imports,
561
+ integrity: Object.keys(integrity).length > 0 ? integrity : void 0,
562
+ scopes: Object.keys(scopes).length > 0 ? scopes : void 0
563
+ };
564
+ }
565
+ function generateImportMapScriptTag(map) {
566
+ const json = JSON.stringify(map, null, 2).replace(/<\//g, "<\\/");
567
+ return `<script type="importmap">
568
+ ${json}
569
+ </script>`;
570
+ }
571
+ function generateImportMapScriptTagMinified(map) {
572
+ const json = JSON.stringify(map).replace(/<\//g, "<\\/");
573
+ return `<script type="importmap">${json}</script>`;
574
+ }
575
+ function generateCDNScriptTags(dependencies) {
576
+ return dependencies.filter((dep) => !dep.esm).map((dep) => {
577
+ const attrs = [`src="${escapeHtmlAttr(dep.cdnUrl)}"`];
578
+ if (dep.integrity) {
579
+ attrs.push(`integrity="${escapeHtmlAttr(dep.integrity)}"`);
580
+ }
581
+ attrs.push('crossorigin="anonymous"');
582
+ return `<script ${attrs.join(" ")}></script>`;
583
+ });
584
+ }
585
+ function generateDependencyHTML(dependencies, options = {}) {
586
+ const { minify = false } = options;
587
+ const parts = [];
588
+ const importMap = createImportMap(dependencies);
589
+ const importMapTag = minify ? generateImportMapScriptTagMinified(importMap) : generateImportMapScriptTag(importMap);
590
+ parts.push(importMapTag);
591
+ const umdTags = generateCDNScriptTags(dependencies);
592
+ parts.push(...umdTags);
593
+ return parts.join(minify ? "" : "\n");
594
+ }
595
+ function validateImportMap(map) {
596
+ const errors = [];
597
+ if (typeof map !== "object" || map === null) {
598
+ return { valid: false, errors: ["Import map must be an object"] };
599
+ }
600
+ const obj = map;
601
+ if (!obj["imports"]) {
602
+ errors.push('Import map must have an "imports" field');
603
+ } else if (typeof obj["imports"] !== "object" || obj["imports"] === null) {
604
+ errors.push('"imports" must be an object');
605
+ } else {
606
+ const imports = obj["imports"];
607
+ for (const [key, value] of Object.entries(imports)) {
608
+ if (typeof value !== "string") {
609
+ errors.push(`Import "${key}" must map to a string URL`);
610
+ } else if (!value.startsWith("https://")) {
611
+ errors.push(`Import "${key}" URL must use HTTPS: ${value}`);
612
+ }
613
+ }
614
+ }
615
+ if (obj["integrity"] !== void 0) {
616
+ if (typeof obj["integrity"] !== "object" || obj["integrity"] === null) {
617
+ errors.push('"integrity" must be an object');
618
+ } else {
619
+ const integrity = obj["integrity"];
620
+ for (const [url, hash] of Object.entries(integrity)) {
621
+ if (typeof hash !== "string") {
622
+ errors.push(`Integrity for "${url}" must be a string`);
623
+ } else if (!hash.match(/^sha(256|384|512)-/)) {
624
+ errors.push(`Invalid integrity hash format for "${url}": ${hash}`);
625
+ }
626
+ }
627
+ }
628
+ }
629
+ return { valid: errors.length === 0, errors };
630
+ }
631
+
632
+ // libs/uipack/src/resolver/import-rewriter.ts
633
+ function rewriteImports(source, options = {}) {
634
+ const { resolver = createEsmShResolver(), skipPackages = [], overrides = {} } = options;
635
+ const skipSet = new Set(skipPackages);
636
+ const rewrites = /* @__PURE__ */ new Map();
637
+ const fallbackPackages = [];
638
+ const parsed = parseImports(source);
639
+ const specifierMap = /* @__PURE__ */ new Map();
640
+ for (const imp of parsed.externalImports) {
641
+ const specifier = imp.specifier;
642
+ if (specifierMap.has(specifier)) continue;
643
+ if (specifier.startsWith("node:")) continue;
644
+ const pkgName = getPackageName(specifier);
645
+ if (skipSet.has(pkgName)) continue;
646
+ if (overrides[specifier]) {
647
+ specifierMap.set(specifier, overrides[specifier]);
648
+ continue;
649
+ }
650
+ if (overrides[pkgName]) {
651
+ const subpath = specifier.slice(pkgName.length);
652
+ specifierMap.set(specifier, overrides[pkgName] + subpath);
653
+ continue;
654
+ }
655
+ const resolved = resolver.resolve(specifier);
656
+ if (resolved && resolved.type === "url") {
657
+ specifierMap.set(specifier, resolved.value);
658
+ }
659
+ }
660
+ let code = source;
661
+ for (const [specifier, cdnUrl] of specifierMap) {
662
+ const escaped = escapeRegExp(specifier);
663
+ const singleQuotePattern = new RegExp(`((?:import|export)\\s+(?:[^'"]*\\s+)?from\\s+)'${escaped}'`, "g");
664
+ const doubleQuotePattern = new RegExp(`((?:import|export)\\s+(?:[^'"]*\\s+)?from\\s+)"${escaped}"`, "g");
665
+ const dynamicSinglePattern = new RegExp(`(import\\s*\\(\\s*)'${escaped}'`, "g");
666
+ const dynamicDoublePattern = new RegExp(`(import\\s*\\(\\s*)"${escaped}"`, "g");
667
+ const sideEffectSinglePattern = new RegExp(`(import\\s+)'${escaped}'`, "g");
668
+ const sideEffectDoublePattern = new RegExp(`(import\\s+)"${escaped}"`, "g");
669
+ const beforeLength = code.length;
670
+ code = code.replace(singleQuotePattern, `$1'${cdnUrl}'`).replace(doubleQuotePattern, `$1"${cdnUrl}"`).replace(dynamicSinglePattern, `$1'${cdnUrl}'`).replace(dynamicDoublePattern, `$1"${cdnUrl}"`).replace(sideEffectSinglePattern, `$1'${cdnUrl}'`).replace(sideEffectDoublePattern, `$1"${cdnUrl}"`);
671
+ if (code.length !== beforeLength || code !== source) {
672
+ rewrites.set(specifier, cdnUrl);
673
+ }
674
+ }
675
+ return {
676
+ code,
677
+ rewrittenCount: rewrites.size,
678
+ rewrites,
679
+ fallbackPackages
680
+ };
681
+ }
682
+ function escapeRegExp(str) {
683
+ return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
684
+ }
685
+ // Annotate the CommonJS export names for ESM import in node:
686
+ 0 && (module.exports = {
687
+ DEFAULT_CDN_REGISTRY,
688
+ createEsmShResolver,
689
+ createImportMap,
690
+ createImportMapFromResolved,
691
+ createResolverWithOverrides,
692
+ extractExternalPackages,
693
+ generateCDNScriptTags,
694
+ generateDependencyHTML,
695
+ generateImportMapScriptTag,
696
+ generateImportMapScriptTagMinified,
697
+ getPackageCDNUrl,
698
+ getPackageName,
699
+ getPackagePeerDependencies,
700
+ getRegisteredPackages,
701
+ isPackageRegistered,
702
+ lookupPackage,
703
+ mergeImportMaps,
704
+ mergeRegistries,
705
+ parseImports,
706
+ rewriteImports,
707
+ validateImportMap
708
+ });