typebulb 0.12.0 → 0.13.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 (193) hide show
  1. package/README.md +19 -17
  2. package/description.md +1 -1
  3. package/dist/agents/claude/client.js +343 -206
  4. package/dist/agents/claude/styles.css +3 -21
  5. package/dist/ai/aiProvider.d.ts +59 -0
  6. package/dist/ai/aiProvider.d.ts.map +1 -0
  7. package/dist/ai/aiProvider.js +109 -0
  8. package/dist/ai/aiProvider.js.map +1 -0
  9. package/dist/ai/aiProviders.d.ts +28 -0
  10. package/dist/ai/aiProviders.d.ts.map +1 -0
  11. package/dist/ai/aiProviders.js +47 -0
  12. package/dist/ai/aiProviders.js.map +1 -0
  13. package/dist/ai/chat.d.ts +32 -0
  14. package/dist/ai/chat.d.ts.map +1 -0
  15. package/dist/ai/chat.js +5 -0
  16. package/dist/ai/chat.js.map +1 -0
  17. package/dist/ai/index.d.ts +9 -0
  18. package/dist/ai/index.d.ts.map +1 -0
  19. package/dist/ai/index.js +11 -0
  20. package/dist/ai/index.js.map +1 -0
  21. package/dist/ai/protocol.d.ts +18 -0
  22. package/dist/ai/protocol.d.ts.map +1 -0
  23. package/dist/ai/protocol.js +3 -0
  24. package/dist/ai/protocol.js.map +1 -0
  25. package/dist/ai/providers/anthropic.d.ts +123 -0
  26. package/dist/ai/providers/anthropic.d.ts.map +1 -0
  27. package/dist/ai/providers/anthropic.js +130 -0
  28. package/dist/ai/providers/anthropic.js.map +1 -0
  29. package/dist/ai/providers/gemini.d.ts +62 -0
  30. package/dist/ai/providers/gemini.d.ts.map +1 -0
  31. package/dist/ai/providers/gemini.js +136 -0
  32. package/dist/ai/providers/gemini.js.map +1 -0
  33. package/dist/ai/providers/openAI.d.ts +146 -0
  34. package/dist/ai/providers/openAI.d.ts.map +1 -0
  35. package/dist/ai/providers/openAI.js +127 -0
  36. package/dist/ai/providers/openAI.js.map +1 -0
  37. package/dist/ai/providers/openRouter.d.ts +65 -0
  38. package/dist/ai/providers/openRouter.d.ts.map +1 -0
  39. package/dist/ai/providers/openRouter.js +82 -0
  40. package/dist/ai/providers/openRouter.js.map +1 -0
  41. package/dist/ai/sseParser.d.ts +32 -0
  42. package/dist/ai/sseParser.d.ts.map +1 -0
  43. package/dist/ai/sseParser.js +121 -0
  44. package/dist/ai/sseParser.js.map +1 -0
  45. package/dist/ai/stream.d.ts +20 -0
  46. package/dist/ai/stream.d.ts.map +1 -0
  47. package/dist/ai/stream.js +6 -0
  48. package/dist/ai/stream.js.map +1 -0
  49. package/dist/dts/cache.d.ts +30 -0
  50. package/dist/dts/cache.d.ts.map +1 -0
  51. package/dist/dts/cache.js +2 -0
  52. package/dist/dts/cache.js.map +1 -0
  53. package/dist/dts/definitelyTypedProvider.d.ts +20 -0
  54. package/dist/dts/definitelyTypedProvider.d.ts.map +1 -0
  55. package/dist/dts/definitelyTypedProvider.js +93 -0
  56. package/dist/dts/definitelyTypedProvider.js.map +1 -0
  57. package/dist/dts/dtsConfig.d.ts +12 -0
  58. package/dist/dts/dtsConfig.d.ts.map +1 -0
  59. package/dist/dts/dtsConfig.js +24 -0
  60. package/dist/dts/dtsConfig.js.map +1 -0
  61. package/dist/dts/dtsResolver.d.ts +63 -0
  62. package/dist/dts/dtsResolver.d.ts.map +1 -0
  63. package/dist/dts/dtsResolver.js +272 -0
  64. package/dist/dts/dtsResolver.js.map +1 -0
  65. package/dist/dts/fetchDts.d.ts +13 -0
  66. package/dist/dts/fetchDts.d.ts.map +1 -0
  67. package/dist/dts/fetchDts.js +46 -0
  68. package/dist/dts/fetchDts.js.map +1 -0
  69. package/dist/dts/httpFetch.d.ts +17 -0
  70. package/dist/dts/httpFetch.d.ts.map +1 -0
  71. package/dist/dts/httpFetch.js +35 -0
  72. package/dist/dts/httpFetch.js.map +1 -0
  73. package/dist/dts/index.d.ts +14 -0
  74. package/dist/dts/index.d.ts.map +1 -0
  75. package/dist/dts/index.js +14 -0
  76. package/dist/dts/index.js.map +1 -0
  77. package/dist/dts/libManifest.d.ts +41 -0
  78. package/dist/dts/libManifest.d.ts.map +1 -0
  79. package/dist/dts/libManifest.js +109 -0
  80. package/dist/dts/libManifest.js.map +1 -0
  81. package/dist/dts/negativeCacheHelper.d.ts +29 -0
  82. package/dist/dts/negativeCacheHelper.d.ts.map +1 -0
  83. package/dist/dts/negativeCacheHelper.js +44 -0
  84. package/dist/dts/negativeCacheHelper.js.map +1 -0
  85. package/dist/dts/tarballFetcher.d.ts +13 -0
  86. package/dist/dts/tarballFetcher.d.ts.map +1 -0
  87. package/dist/dts/tarballFetcher.js +58 -0
  88. package/dist/dts/tarballFetcher.js.map +1 -0
  89. package/dist/dts/tbTypings.d.ts +15 -0
  90. package/dist/dts/tbTypings.d.ts.map +1 -0
  91. package/dist/dts/tbTypings.js +210 -0
  92. package/dist/dts/tbTypings.js.map +1 -0
  93. package/dist/dts/typeProvider.d.ts +37 -0
  94. package/dist/dts/typeProvider.d.ts.map +1 -0
  95. package/dist/dts/typeProvider.js +30 -0
  96. package/dist/dts/typeProvider.js.map +1 -0
  97. package/dist/dts/typeRefScanner.d.ts +8 -0
  98. package/dist/dts/typeRefScanner.d.ts.map +1 -0
  99. package/dist/dts/typeRefScanner.js +33 -0
  100. package/dist/dts/typeRefScanner.js.map +1 -0
  101. package/dist/dts/typescriptProvider.d.ts +21 -0
  102. package/dist/dts/typescriptProvider.d.ts.map +1 -0
  103. package/dist/dts/typescriptProvider.js +140 -0
  104. package/dist/dts/typescriptProvider.js.map +1 -0
  105. package/dist/dts/virtualFs.d.ts +20 -0
  106. package/dist/dts/virtualFs.d.ts.map +1 -0
  107. package/dist/dts/virtualFs.js +48 -0
  108. package/dist/dts/virtualFs.js.map +1 -0
  109. package/dist/format/chunks.d.ts +20 -0
  110. package/dist/format/chunks.d.ts.map +1 -0
  111. package/dist/format/chunks.js +51 -0
  112. package/dist/format/chunks.js.map +1 -0
  113. package/dist/format/config.d.ts +17 -0
  114. package/dist/format/config.d.ts.map +1 -0
  115. package/dist/format/config.js +13 -0
  116. package/dist/format/config.js.map +1 -0
  117. package/dist/format/detection.d.ts +11 -0
  118. package/dist/format/detection.d.ts.map +1 -0
  119. package/dist/format/detection.js +43 -0
  120. package/dist/format/detection.js.map +1 -0
  121. package/dist/format/index.d.ts +8 -0
  122. package/dist/format/index.d.ts.map +1 -0
  123. package/dist/format/index.js +8 -0
  124. package/dist/format/index.js.map +1 -0
  125. package/dist/format/parse.d.ts +20 -0
  126. package/dist/format/parse.d.ts.map +1 -0
  127. package/dist/format/parse.js +88 -0
  128. package/dist/format/parse.js.map +1 -0
  129. package/dist/format/registry.d.ts +24 -0
  130. package/dist/format/registry.d.ts.map +1 -0
  131. package/dist/format/registry.js +31 -0
  132. package/dist/format/registry.js.map +1 -0
  133. package/dist/format/serialize.d.ts +8 -0
  134. package/dist/format/serialize.d.ts.map +1 -0
  135. package/dist/format/serialize.js +30 -0
  136. package/dist/format/serialize.js.map +1 -0
  137. package/dist/format/yaml.d.ts +4 -0
  138. package/dist/format/yaml.d.ts.map +1 -0
  139. package/dist/format/yaml.js +17 -0
  140. package/dist/format/yaml.js.map +1 -0
  141. package/dist/index.js +401 -89
  142. package/dist/lint/index.d.ts +29 -0
  143. package/dist/lint/index.d.ts.map +1 -0
  144. package/dist/lint/index.js +257 -0
  145. package/dist/lint/index.js.map +1 -0
  146. package/dist/render.js +176 -39
  147. package/dist/resolver/attempt.d.ts +2 -0
  148. package/dist/resolver/attempt.d.ts.map +1 -0
  149. package/dist/resolver/attempt.js +9 -0
  150. package/dist/resolver/attempt.js.map +1 -0
  151. package/dist/resolver/cdnClient.d.ts +46 -0
  152. package/dist/resolver/cdnClient.d.ts.map +1 -0
  153. package/dist/resolver/cdnClient.js +107 -0
  154. package/dist/resolver/cdnClient.js.map +1 -0
  155. package/dist/resolver/cdnConstants.d.ts +10 -0
  156. package/dist/resolver/cdnConstants.d.ts.map +1 -0
  157. package/dist/resolver/cdnConstants.js +10 -0
  158. package/dist/resolver/cdnConstants.js.map +1 -0
  159. package/dist/resolver/index.d.ts +20 -0
  160. package/dist/resolver/index.d.ts.map +1 -0
  161. package/dist/resolver/index.js +20 -0
  162. package/dist/resolver/index.js.map +1 -0
  163. package/dist/resolver/packageRef.d.ts +21 -0
  164. package/dist/resolver/packageRef.d.ts.map +1 -0
  165. package/dist/resolver/packageRef.js +89 -0
  166. package/dist/resolver/packageRef.js.map +1 -0
  167. package/dist/resolver/packageService.d.ts +40 -0
  168. package/dist/resolver/packageService.d.ts.map +1 -0
  169. package/dist/resolver/packageService.js +156 -0
  170. package/dist/resolver/packageService.js.map +1 -0
  171. package/dist/resolver/peerResolver.d.ts +33 -0
  172. package/dist/resolver/peerResolver.d.ts.map +1 -0
  173. package/dist/resolver/peerResolver.js +66 -0
  174. package/dist/resolver/peerResolver.js.map +1 -0
  175. package/dist/resolver/semver.d.ts +17 -0
  176. package/dist/resolver/semver.d.ts.map +1 -0
  177. package/dist/resolver/semver.js +56 -0
  178. package/dist/resolver/semver.js.map +1 -0
  179. package/dist/resolver/types.d.ts +33 -0
  180. package/dist/resolver/types.d.ts.map +1 -0
  181. package/dist/resolver/types.js +2 -0
  182. package/dist/resolver/types.js.map +1 -0
  183. package/dist/resolver/versionResolver.d.ts +29 -0
  184. package/dist/resolver/versionResolver.d.ts.map +1 -0
  185. package/dist/resolver/versionResolver.js +79 -0
  186. package/dist/resolver/versionResolver.js.map +1 -0
  187. package/dist/servers.js +142 -3
  188. package/dist/transpile/index.d.ts +19 -0
  189. package/dist/transpile/index.d.ts.map +1 -0
  190. package/dist/transpile/index.js +23 -0
  191. package/dist/transpile/index.js.map +1 -0
  192. package/dist/tsconfig.tsbuildinfo +1 -0
  193. package/package.json +99 -68
@@ -0,0 +1,2 @@
1
+ export declare function attempt<T>(fn: () => Promise<T>): Promise<T | undefined>;
2
+ //# sourceMappingURL=attempt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attempt.d.ts","sourceRoot":"","sources":["../../resolver/src/attempt.ts"],"names":[],"mappings":"AAAA,wBAAsB,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAE7E"}
@@ -0,0 +1,9 @@
1
+ export async function attempt(fn) {
2
+ try {
3
+ return await fn();
4
+ }
5
+ catch {
6
+ return undefined;
7
+ }
8
+ }
9
+ //# sourceMappingURL=attempt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attempt.js","sourceRoot":"","sources":["../../resolver/src/attempt.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,OAAO,CAAI,EAAoB;IACnD,IAAI,CAAC;QAAC,OAAO,MAAM,EAAE,EAAE,CAAA;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,SAAS,CAAA;IAAC,CAAC;AACtD,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { PackageRef } from './packageRef.js';
2
+ import type { PackageCache, HttpClient, PeerMeta } from './types.js';
3
+ export type Semver = string & {
4
+ __semverBrand?: never;
5
+ };
6
+ export type PackageMeta = {
7
+ name: string;
8
+ version: string;
9
+ dependencies?: Record<string, string>;
10
+ peerDependencies?: Record<string, string>;
11
+ peerDependenciesMeta?: Record<string, PeerMeta>;
12
+ };
13
+ type JsDelivrMeta = {
14
+ versions: string[];
15
+ distTags?: Record<string, string>;
16
+ };
17
+ export declare class CdnClient {
18
+ private cache;
19
+ private http;
20
+ readonly esmHost = "https://esm.sh";
21
+ readonly jsDelivrBase = "https://cdn.jsdelivr.net/npm/";
22
+ readonly jsDelivrMeta = "https://data.jsdelivr.com/v1/package/npm/";
23
+ private readonly pinMs;
24
+ private readonly versionsIndexMs;
25
+ private readonly metaTtlMs;
26
+ private readonly pinCache;
27
+ constructor(cache: PackageCache, http: HttpClient);
28
+ normalizeRelative(rel: string): string;
29
+ ensureLeadingDotSlash(rel: string): string;
30
+ baseDir(input: string | PackageRef): string;
31
+ file(input: string | PackageRef, rel: string): string;
32
+ packageJson(input: string | PackageRef): string;
33
+ buildEsmUrl(pkg: string, options?: {
34
+ target?: string;
35
+ bundle?: boolean;
36
+ external?: string[];
37
+ }): string;
38
+ pinEsmUrl(pkg: string, target?: string): Promise<string | undefined>;
39
+ resolveExactVersion(pkg: string): Promise<Semver | undefined>;
40
+ private tryResolveFromUrls;
41
+ fetchVersionsIndex(name: string): Promise<JsDelivrMeta | undefined>;
42
+ private parseVersionFromUrl;
43
+ fetchPackageMeta(name: string, version: string): Promise<PackageMeta | undefined>;
44
+ }
45
+ export {};
46
+ //# sourceMappingURL=cdnClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdnClient.d.ts","sourceRoot":"","sources":["../../resolver/src/cdnClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAG5C,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAEpE,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG;IAAE,aAAa,CAAC,EAAE,KAAK,CAAA;CAAE,CAAA;AACvD,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;CAAE,CAAA;AAG9L,KAAK,YAAY,GAAG;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAC,MAAM,CAAC,CAAA;CAAE,CAAA;AAG5E,qBAAa,SAAS;IAUR,OAAO,CAAC,KAAK;IAAgB,OAAO,CAAC,IAAI;IATrD,QAAQ,CAAC,OAAO,oBAAW;IAC3B,QAAQ,CAAC,YAAY,mCAAgB;IACrC,QAAQ,CAAC,YAAY,+CAAgB;IAErC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAsB;IACtD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;IACpD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA+B;gBAEpC,KAAK,EAAE,YAAY,EAAU,IAAI,EAAE,UAAU;IAEjE,iBAAiB,CAAC,GAAG,EAAE,MAAM;IAK7B,qBAAqB,CAAC,GAAG,EAAE,MAAM;IAIjC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU;IAKlC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE,GAAG,EAAE,MAAM;IAI5C,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU;IAItC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAO;IAQ3F,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAW;IAMxC,mBAAmB,CAAC,GAAG,EAAE,MAAM;YAcvB,kBAAkB;IAS1B,kBAAkB,CAAC,IAAI,EAAE,MAAM;IAuBrC,OAAO,CAAC,mBAAmB;IAKrB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;CAmBxF"}
@@ -0,0 +1,107 @@
1
+ import { PackageRef } from './packageRef.js';
2
+ import { attempt } from './attempt.js';
3
+ import { ESM_HOST, JSDELIVR_BASE, JSDELIVR_META } from './cdnConstants.js';
4
+ export class CdnClient {
5
+ constructor(cache, http) {
6
+ this.cache = cache;
7
+ this.http = http;
8
+ this.esmHost = ESM_HOST;
9
+ this.jsDelivrBase = JSDELIVR_BASE;
10
+ this.jsDelivrMeta = JSDELIVR_META;
11
+ this.pinMs = 10000;
12
+ this.versionsIndexMs = 24 * 60 * 60 * 1000;
13
+ this.metaTtlMs = 7 * 24 * 60 * 60 * 1000; // 7 days
14
+ this.pinCache = new Map();
15
+ }
16
+ normalizeRelative(rel) {
17
+ const s = rel || '';
18
+ return s.startsWith('./') ? s.slice(2) : s.replace(/^\/+/, '');
19
+ }
20
+ ensureLeadingDotSlash(rel) {
21
+ return rel.startsWith('./') ? rel : `./${rel}`;
22
+ }
23
+ baseDir(input) {
24
+ const s = typeof input === 'string' ? new PackageRef(input) : input;
25
+ return `${this.jsDelivrBase}${s.name}${s.version ? `@${s.version}` : ''}/`;
26
+ }
27
+ file(input, rel) {
28
+ return new URL(this.normalizeRelative(rel), this.baseDir(input)).toString();
29
+ }
30
+ packageJson(input) {
31
+ return this.file(input, 'package.json');
32
+ }
33
+ buildEsmUrl(pkg, options = {}) {
34
+ const { target = 'es2022', bundle = false, external } = options;
35
+ const qs = new URLSearchParams({ target });
36
+ if (bundle)
37
+ qs.append('bundle', '');
38
+ if (external?.length)
39
+ qs.append('external', external.join(','));
40
+ return `${this.esmHost}/${pkg}?${qs.toString()}`;
41
+ }
42
+ async pinEsmUrl(pkg, target = 'es2022') {
43
+ const url = this.buildEsmUrl(pkg, { target });
44
+ const resp = await attempt(() => this.http.head(url));
45
+ return resp?.ok ? (resp.url || url) : undefined;
46
+ }
47
+ async resolveExactVersion(pkg) {
48
+ const now = Date.now();
49
+ const hit = this.pinCache.get(pkg);
50
+ if (hit && now - hit.ts < this.pinMs)
51
+ return hit.value;
52
+ const value = await this.tryResolveFromUrls([
53
+ this.buildEsmUrl(pkg),
54
+ `${this.esmHost}/${pkg}`
55
+ ]);
56
+ this.pinCache.set(pkg, { value, ts: now });
57
+ return value;
58
+ }
59
+ async tryResolveFromUrls(urls) {
60
+ for (const url of urls) {
61
+ const r = await attempt(() => this.http.head(url));
62
+ const v = this.parseVersionFromUrl(r?.url || url);
63
+ if (v)
64
+ return v;
65
+ }
66
+ return undefined;
67
+ }
68
+ async fetchVersionsIndex(name) {
69
+ if (await this.cache.isNegative(name))
70
+ return undefined;
71
+ const cached = await this.cache.getIndex(name);
72
+ if (cached && Date.now() - cached.updatedAt < this.versionsIndexMs) {
73
+ return { versions: cached.versions, distTags: cached.distTags };
74
+ }
75
+ const data = await attempt(() => this.http.getJson(`${this.jsDelivrMeta}${encodeURIComponent(name)}`));
76
+ if (!data?.versions?.length) {
77
+ await this.cache.recordNegative(name);
78
+ return undefined;
79
+ }
80
+ await this.cache.clearNegative(name);
81
+ const distTags = data.distTags && Object.keys(data.distTags).length ? data.distTags : undefined;
82
+ await this.cache.setIndex(name, data.versions, distTags);
83
+ return data;
84
+ }
85
+ parseVersionFromUrl(finalUrl) {
86
+ const v = PackageRef.fromUrl(finalUrl)?.version;
87
+ return v && /\d+\.\d+\.\d+/.test(v) ? v : undefined;
88
+ }
89
+ async fetchPackageMeta(name, version) {
90
+ const cached = await this.cache.getMeta(name, version);
91
+ if (cached && Date.now() - cached.updatedAt < this.metaTtlMs) {
92
+ const { dependencies, peerDependencies, peerDependenciesMeta } = cached;
93
+ return { name, version, dependencies, peerDependencies, peerDependenciesMeta };
94
+ }
95
+ const url = this.packageJson(new PackageRef(`${name}@${version}`));
96
+ const data = await attempt(() => this.http.getJson(url));
97
+ if (!data)
98
+ return undefined;
99
+ const nonEmpty = (obj) => obj && Object.keys(obj).length ? obj : undefined;
100
+ const dependencies = nonEmpty(data.dependencies);
101
+ const peerDependencies = nonEmpty(data.peerDependencies);
102
+ const peerDependenciesMeta = nonEmpty(data.peerDependenciesMeta);
103
+ await this.cache.setMeta(name, version, dependencies, peerDependencies, peerDependenciesMeta);
104
+ return { name, version, dependencies, peerDependencies, peerDependenciesMeta };
105
+ }
106
+ }
107
+ //# sourceMappingURL=cdnClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdnClient.js","sourceRoot":"","sources":["../../resolver/src/cdnClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * CDN Constants - Zero dependencies
3
+ *
4
+ * Shared constants for CDN hosts. Kept separate to avoid
5
+ * dependency chains when only the constants are needed.
6
+ */
7
+ export declare const ESM_HOST = "https://esm.sh";
8
+ export declare const JSDELIVR_BASE = "https://cdn.jsdelivr.net/npm/";
9
+ export declare const JSDELIVR_META = "https://data.jsdelivr.com/v1/package/npm/";
10
+ //# sourceMappingURL=cdnConstants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdnConstants.d.ts","sourceRoot":"","sources":["../../resolver/src/cdnConstants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,QAAQ,mBAAmB,CAAA;AACxC,eAAO,MAAM,aAAa,kCAAkC,CAAA;AAC5D,eAAO,MAAM,aAAa,8CAA8C,CAAA"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * CDN Constants - Zero dependencies
3
+ *
4
+ * Shared constants for CDN hosts. Kept separate to avoid
5
+ * dependency chains when only the constants are needed.
6
+ */
7
+ export const ESM_HOST = 'https://esm.sh';
8
+ export const JSDELIVR_BASE = 'https://cdn.jsdelivr.net/npm/';
9
+ export const JSDELIVR_META = 'https://data.jsdelivr.com/v1/package/npm/';
10
+ //# sourceMappingURL=cdnConstants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdnConstants.js","sourceRoot":"","sources":["../../resolver/src/cdnConstants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAG,gBAAgB,CAAA;AACxC,MAAM,CAAC,MAAM,aAAa,GAAG,+BAA+B,CAAA;AAC5D,MAAM,CAAC,MAAM,aAAa,GAAG,2CAA2C,CAAA"}
@@ -0,0 +1,20 @@
1
+ import { CdnClient } from './cdnClient.js';
2
+ import { PeerResolver } from './peerResolver.js';
3
+ import { VersionResolver } from './versionResolver.js';
4
+ import { PackageService } from './packageService.js';
5
+ import type { PackageCache, HttpClient } from './types.js';
6
+ export declare function createResolver(cache: PackageCache, http: HttpClient): {
7
+ packageService: PackageService;
8
+ versionResolver: VersionResolver;
9
+ cdnClient: CdnClient;
10
+ peerResolver: PeerResolver;
11
+ };
12
+ export { PackageRef, type IPackageRef } from './packageRef.js';
13
+ export { semverService, SemverService, type Version } from './semver.js';
14
+ export { ESM_HOST, JSDELIVR_BASE, JSDELIVR_META } from './cdnConstants.js';
15
+ export { CdnClient, type Semver, type PackageMeta } from './cdnClient.js';
16
+ export { PeerResolver, type ResolvedRoot, type PackageFlags, type AutoAddedPeer } from './peerResolver.js';
17
+ export { VersionResolver, type EffectivePackageResult } from './versionResolver.js';
18
+ export { PackageService, type ImportMap } from './packageService.js';
19
+ export type { PackageCache, HttpClient, PackageRanges, PeerMeta } from './types.js';
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../resolver/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE1D,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU;;;;;EAMnE;AAED,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC9D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,KAAK,OAAO,EAAE,MAAM,aAAa,CAAA;AACxE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAC1E,OAAO,EAAE,SAAS,EAAE,KAAK,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACzE,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAC1G,OAAO,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AACnF,OAAO,EAAE,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACpE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA"}
@@ -0,0 +1,20 @@
1
+ import { CdnClient } from './cdnClient.js';
2
+ import { PeerResolver } from './peerResolver.js';
3
+ import { VersionResolver } from './versionResolver.js';
4
+ import { PackageService } from './packageService.js';
5
+ import { semverService } from './semver.js';
6
+ export function createResolver(cache, http) {
7
+ const cdnClient = new CdnClient(cache, http);
8
+ const peerResolver = new PeerResolver(cdnClient);
9
+ const versionResolver = new VersionResolver(cache, cdnClient, semverService);
10
+ const packageService = new PackageService(versionResolver, cdnClient, peerResolver, cache);
11
+ return { packageService, versionResolver, cdnClient, peerResolver };
12
+ }
13
+ export { PackageRef } from './packageRef.js';
14
+ export { semverService, SemverService } from './semver.js';
15
+ export { ESM_HOST, JSDELIVR_BASE, JSDELIVR_META } from './cdnConstants.js';
16
+ export { CdnClient } from './cdnClient.js';
17
+ export { PeerResolver } from './peerResolver.js';
18
+ export { VersionResolver } from './versionResolver.js';
19
+ export { PackageService } from './packageService.js';
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../resolver/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAG3C,MAAM,UAAU,cAAc,CAAC,KAAmB,EAAE,IAAgB;IAClE,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IAC5C,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,SAAS,CAAC,CAAA;IAChD,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,aAAa,CAAC,CAAA;IAC5E,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,eAAe,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC,CAAA;IAC1F,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,SAAS,EAAE,YAAY,EAAE,CAAA;AACrE,CAAC;AAED,OAAO,EAAE,UAAU,EAAoB,MAAM,iBAAiB,CAAA;AAC9D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAgB,MAAM,aAAa,CAAA;AACxE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAC1E,OAAO,EAAE,SAAS,EAAiC,MAAM,gBAAgB,CAAA;AACzE,OAAO,EAAE,YAAY,EAA4D,MAAM,mBAAmB,CAAA;AAC1G,OAAO,EAAE,eAAe,EAA+B,MAAM,sBAAsB,CAAA;AACnF,OAAO,EAAE,cAAc,EAAkB,MAAM,qBAAqB,CAAA"}
@@ -0,0 +1,21 @@
1
+ export type IPackageRef = {
2
+ name: string;
3
+ version?: string;
4
+ subpath?: string;
5
+ };
6
+ export declare class PackageRef implements IPackageRef {
7
+ readonly name: string;
8
+ readonly version?: string;
9
+ readonly subpath?: string;
10
+ constructor(input: string | IPackageRef, version?: string, subpath?: string);
11
+ static parse(input: string): PackageRef;
12
+ static fromUrl(url: string): PackageRef | undefined;
13
+ static versionFromUrl(url: string): string | undefined;
14
+ format(): string;
15
+ root(): string;
16
+ static rootOf(pkg: string): string;
17
+ withVersion(v: string | undefined): PackageRef;
18
+ withPreferredVersion(exact?: string, range?: string): PackageRef;
19
+ static isBare(pkg: string): boolean;
20
+ }
21
+ //# sourceMappingURL=packageRef.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packageRef.d.ts","sourceRoot":"","sources":["../../resolver/src/packageRef.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAOD,qBAAa,UAAW,YAAW,WAAW;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;gBAEb,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAO3E,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU;IAiBvC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IA0BnD,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAKtD,MAAM,IAAI,MAAM;IAKhB,IAAI,IAAI,MAAM;IAEd,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIlC,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU;IAM9C,oBAAoB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,UAAU;IAKhE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM;CAK1B"}
@@ -0,0 +1,89 @@
1
+ import { ESM_HOST, JSDELIVR_BASE } from './cdnConstants.js';
2
+ function splitSegments(path) {
3
+ const clean = (path || '').replace(/^\/+/, '').replace(/\/+$/, '');
4
+ return clean ? clean.split('/') : [];
5
+ }
6
+ export class PackageRef {
7
+ constructor(input, version, subpath) {
8
+ const ref = typeof input === 'string' ? PackageRef.parse(input) : input;
9
+ this.name = ref.name;
10
+ this.version = undefIfEmpty(version ?? ref.version);
11
+ this.subpath = undefIfEmpty(subpath ?? ref.subpath);
12
+ }
13
+ static parse(input) {
14
+ const segs = splitSegments(input || '');
15
+ if (!segs.length)
16
+ return new PackageRef({ name: '' });
17
+ const scoped = segs[0].startsWith('@');
18
+ if (scoped) {
19
+ const scope = segs[0];
20
+ const [pkg, ver] = splitAtVer(segs[1] ?? '');
21
+ const sub = undefIfEmpty(segs.slice(2).join('/'));
22
+ return new PackageRef({ name: `${scope}/${pkg}`, version: ver, subpath: sub });
23
+ }
24
+ else {
25
+ const [name, ver] = splitAtVer(segs[0]);
26
+ const sub = undefIfEmpty(segs.slice(1).join('/'));
27
+ return new PackageRef({ name, version: ver, subpath: sub });
28
+ }
29
+ }
30
+ static fromUrl(url) {
31
+ try {
32
+ const u = new URL(url);
33
+ const esmHost = new URL(ESM_HOST).host;
34
+ const jsdHost = new URL(JSDELIVR_BASE).host;
35
+ if (u.host === esmHost) {
36
+ // Trim optional /v{n}/; extract head that may include version and scope
37
+ const segs = splitSegments(u.pathname.replace(/^\/v\d+\//, '/'));
38
+ if (!segs.length)
39
+ return undefined;
40
+ const head = segs[0].startsWith('@') ? `${segs[0]}/${segs[1] ?? ''}` : segs[0];
41
+ return PackageRef.parse(head);
42
+ }
43
+ if (u.host === jsdHost) {
44
+ const after = u.pathname.split('/npm/')[1];
45
+ if (!after)
46
+ return undefined;
47
+ const first = after.split('/')[0] || '';
48
+ return PackageRef.parse(first);
49
+ }
50
+ return undefined;
51
+ }
52
+ catch {
53
+ return undefined;
54
+ }
55
+ }
56
+ static versionFromUrl(url) {
57
+ const s = PackageRef.fromUrl(url);
58
+ return s?.version;
59
+ }
60
+ format() {
61
+ const base = this.version ? `${this.name}@${this.version}` : this.name;
62
+ return this.subpath ? `${base}/${this.subpath}` : base;
63
+ }
64
+ root() { return this.name; }
65
+ static rootOf(pkg) {
66
+ return PackageRef.parse(pkg).name;
67
+ }
68
+ withVersion(v) {
69
+ // Preserve both version and subpath by constructing from an object, not a string
70
+ // Using a string would trigger the string constructor path and drop the provided args
71
+ return new PackageRef({ name: this.name, version: undefIfEmpty(v), subpath: this.subpath });
72
+ }
73
+ withPreferredVersion(exact, range) {
74
+ const version = exact || range;
75
+ return version ? this.withVersion(version) : this;
76
+ }
77
+ static isBare(pkg) {
78
+ if (!pkg || pkg.startsWith('.') || pkg.startsWith('/'))
79
+ return false;
80
+ const s = pkg.toLowerCase();
81
+ return !s.startsWith('http://') && !s.startsWith('https://');
82
+ }
83
+ }
84
+ const undefIfEmpty = (s) => (s && s.length ? s : undefined);
85
+ const splitAtVer = (s) => {
86
+ const i = s.indexOf('@');
87
+ return i < 0 ? [s, undefined] : [s.slice(0, i), undefIfEmpty(s.slice(i + 1))];
88
+ };
89
+ //# sourceMappingURL=packageRef.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packageRef.js","sourceRoot":"","sources":["../../resolver/src/packageRef.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { VersionResolver } from './versionResolver.js';
2
+ import type { PackageCache, PackageRanges } from './types.js';
3
+ import { CdnClient } from './cdnClient.js';
4
+ import { PeerResolver } from './peerResolver.js';
5
+ export type ImportMap = {
6
+ imports: Record<string, string>;
7
+ };
8
+ export declare class PackageService {
9
+ private version;
10
+ private cdn;
11
+ private peer;
12
+ private cache;
13
+ private static importPatterns;
14
+ constructor(version: VersionResolver, cdn: CdnClient, peer: PeerResolver, cache: PackageCache);
15
+ /** Fast sync import extraction using regex (for quick comparisons) */
16
+ extractImportsSync(source: string): string[];
17
+ /** Async import extraction using es-module-lexer (more accurate) */
18
+ extractImports(source: string): Promise<string[]>;
19
+ /**
20
+ * Build an import map for a bulb's code.
21
+ *
22
+ * `skipRoots` names roots the caller supplies itself (serving them from
23
+ * elsewhere); their imports are dropped before resolution, so they're never
24
+ * looked up on the CDN. Optional and caller-agnostic — callers that resolve
25
+ * the whole graph simply omit it.
26
+ */
27
+ buildImportMap(code: string, ranges: PackageRanges, skipRoots?: ReadonlySet<string>): Promise<{
28
+ importMap: {
29
+ imports: {
30
+ [k: string]: string;
31
+ };
32
+ };
33
+ prefetchUrls: string[];
34
+ }>;
35
+ private resolveVersion;
36
+ private buildEntries;
37
+ /** Get dependencies (peer or regular) that are singletons and need to be externalized */
38
+ private singletonDepsOf;
39
+ }
40
+ //# sourceMappingURL=packageService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packageService.d.ts","sourceRoot":"","sources":["../../resolver/src/packageService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAG7D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,YAAY,EAA6D,MAAM,mBAAmB,CAAA;AAG3G,MAAM,MAAM,SAAS,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAA;AAE3D,qBAAa,cAAc;IAOb,OAAO,CAAC,OAAO;IAAmB,OAAO,CAAC,GAAG;IAAa,OAAO,CAAC,IAAI;IAAgB,OAAO,CAAC,KAAK;IAL/G,OAAO,CAAC,MAAM,CAAC,cAAc,CAG5B;gBAEmB,OAAO,EAAE,eAAe,EAAU,GAAG,EAAE,SAAS,EAAU,IAAI,EAAE,YAAY,EAAU,KAAK,EAAE,YAAY;IAE7H,sEAAsE;IACtE,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE;IAW5C,oEAAoE;IAC9D,cAAc,CAAC,MAAM,EAAE,MAAM;IAenC;;;;;;;OAOG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC;;;;;;;;YAuB3E,cAAc;IA2B5B,OAAO,CAAC,YAAY;IAmFpB,yFAAyF;IACzF,OAAO,CAAC,eAAe;CAGxB"}
@@ -0,0 +1,156 @@
1
+ import { PackageRef } from './packageRef.js';
2
+ import { attempt } from './attempt.js';
3
+ import { peerNames, depNames } from './peerResolver.js';
4
+ import { init, parse } from 'es-module-lexer';
5
+ export class PackageService {
6
+ constructor(version, cdn, peer, cache) {
7
+ this.version = version;
8
+ this.cdn = cdn;
9
+ this.peer = peer;
10
+ this.cache = cache;
11
+ }
12
+ /** Fast sync import extraction using regex (for quick comparisons) */
13
+ extractImportsSync(source) {
14
+ const imports = new Set();
15
+ for (const pattern of PackageService.importPatterns) {
16
+ pattern.lastIndex = 0; // Reset regex state
17
+ for (const match of source.matchAll(pattern)) {
18
+ if (PackageRef.isBare(match[1]))
19
+ imports.add(match[1]);
20
+ }
21
+ }
22
+ return Array.from(imports);
23
+ }
24
+ /** Async import extraction using es-module-lexer (more accurate) */
25
+ async extractImports(source) {
26
+ const imports = new Set();
27
+ const addIfBare = (pkg) => { if (PackageRef.isBare(pkg))
28
+ imports.add(pkg); };
29
+ try {
30
+ await init;
31
+ const [recs] = parse(source);
32
+ recs.forEach(rec => addIfBare(source.slice(rec.s, rec.e).trim()));
33
+ }
34
+ catch {
35
+ // Fallback to sync regex parser
36
+ return this.extractImportsSync(source);
37
+ }
38
+ return Array.from(imports);
39
+ }
40
+ /**
41
+ * Build an import map for a bulb's code.
42
+ *
43
+ * `skipRoots` names roots the caller supplies itself (serving them from
44
+ * elsewhere); their imports are dropped before resolution, so they're never
45
+ * looked up on the CDN. Optional and caller-agnostic — callers that resolve
46
+ * the whole graph simply omit it.
47
+ */
48
+ async buildImportMap(code, ranges, skipRoots) {
49
+ const directImports = (await this.extractImports(code))
50
+ .filter(imp => !skipRoots?.has(PackageRef.rootOf(imp)));
51
+ const directRoots = [...new Set(directImports.map(PackageRef.rootOf))];
52
+ const resolvedRoots = await Promise.all(directRoots.map(async (name) => ({ name, version: await this.resolveVersion(name, ranges) })));
53
+ const { allRoots, flags, autoAddedPeers } = await this.peer.resolve(resolvedRoots, name => this.resolveVersion(name, ranges));
54
+ const entries = this.buildEntries([...directImports, ...autoAddedPeers.map(p => p.name)], allRoots, flags, ranges);
55
+ return {
56
+ importMap: { imports: Object.fromEntries(entries) },
57
+ prefetchUrls: entries.map(([, url]) => url)
58
+ };
59
+ }
60
+ async resolveVersion(name, ranges) {
61
+ const range = ranges[name];
62
+ const pkgSpec = range ? `${name}@${range}` : name;
63
+ let version = await this.version.resolveExactForRoot(name, range);
64
+ if (!version) {
65
+ const pinned = await attempt(() => this.cdn.pinEsmUrl(pkgSpec));
66
+ if (!pinned) {
67
+ // Don't claim "network down" — the usual cause is a range that matches
68
+ // no published version (e.g. ^0.3.0 before 0.3.0 ships), not an outage.
69
+ throw new Error(`Cannot resolve ${pkgSpec}: no matching version is published (the package or version may not exist, or the registry was unreachable).`);
70
+ }
71
+ version = PackageRef.versionFromUrl(pinned);
72
+ if (version && range) {
73
+ await attempt(() => this.cache.setPinnedExact(name, range, version));
74
+ }
75
+ }
76
+ if (!version) {
77
+ throw new Error(`Cannot resolve ${pkgSpec}: no concrete version found.`);
78
+ }
79
+ return version;
80
+ }
81
+ buildEntries(imports, roots, flags, ranges) {
82
+ const rootMap = new Map(roots.map(r => [r.name, r]));
83
+ const versionedPkg = (pkg) => {
84
+ const root = rootMap.get(PackageRef.rootOf(pkg));
85
+ return new PackageRef(pkg).withPreferredVersion(root.version, ranges[root.name]).format();
86
+ };
87
+ // Packages that must be singletons: peer roots OR shared deps
88
+ // - Peer roots: packages appearing in peerDependencies (react, vue, three)
89
+ // - Shared deps: packages appearing in 2+ packages' dependencies (@codemirror/state)
90
+ const singletonRoots = new Set([...flags.entries()]
91
+ .filter(([, f]) => f.isPeerRoot || f.isSharedDep)
92
+ .map(([name]) => name));
93
+ // If any subpath of a root is imported, don't bundle that root (they must share module graph)
94
+ const rootsWithSubpaths = new Set(imports.filter(pkg => pkg !== PackageRef.rootOf(pkg)).map(PackageRef.rootOf));
95
+ const entries = [];
96
+ const addedPkgs = new Set();
97
+ // Track which root packages are directly imported (not just via subpath)
98
+ const directlyImportedRoots = new Set(imports.filter(pkg => pkg === PackageRef.rootOf(pkg)));
99
+ // Roots that get externalized from their own subpath bundles. esm.sh's bundle for
100
+ // those subpaths may reference internal chunk paths (e.g. `domeleon/dist/chunk-XXX`),
101
+ // so we need a trailing-slash entry to resolve them — even if the root isn't a singleton.
102
+ const externalizedSubpathRoots = new Set();
103
+ for (const pkg of imports) {
104
+ const rootName = PackageRef.rootOf(pkg);
105
+ const root = rootMap.get(rootName);
106
+ const { isPeerRoot, hasPeers, isSharedDep } = flags.get(rootName);
107
+ const hasSubpathImports = rootsWithSubpaths.has(rootName);
108
+ const isSubpath = pkg !== rootName;
109
+ const isSingleton = isPeerRoot || isSharedDep;
110
+ // Bundle strategy:
111
+ // - Never bundle singletons (peer roots or shared deps) - must have single instance
112
+ // - Bundle packages with subpath imports (even with peers) - fixes broken internal modules (drizzle-orm)
113
+ // - Plain libraries without peers can be bundled
114
+ // - Don't bundle packages with peers but no subpaths (use external instead)
115
+ const canBundle = !isSingleton && (hasSubpathImports || !hasPeers);
116
+ // External strategy:
117
+ // - Packages with peers externalize their singleton peers
118
+ // - Packages with deps externalize their singleton deps
119
+ // - Subpaths externalize their root ONLY if root is also directly imported
120
+ const externalSingletons = this.singletonDepsOf(root, singletonRoots);
121
+ const shouldExternalizeRoot = isSubpath && directlyImportedRoots.has(rootName);
122
+ if (shouldExternalizeRoot)
123
+ externalizedSubpathRoots.add(rootName);
124
+ const external = shouldExternalizeRoot
125
+ ? [...externalSingletons, rootName]
126
+ : (externalSingletons.length ? externalSingletons : undefined);
127
+ entries.push([pkg, this.cdn.buildEsmUrl(versionedPkg(pkg), { bundle: canBundle, external })]);
128
+ addedPkgs.add(pkg);
129
+ }
130
+ // Roots that need both a root entry and a trailing-slash entry in the import map:
131
+ // - Singletons (peer roots or shared deps): always externalized; consumers may use subpaths
132
+ // - Externalized subpath roots: their own sub-bundles may reference internal chunk paths
133
+ const rootsNeedingTrailingSlash = new Set([...singletonRoots, ...externalizedSubpathRoots]);
134
+ // Root entry: "react" for `import React from "react"`
135
+ // Trailing slash: "react/" for `import { useState } from "react/client"` or for
136
+ // internal chunks emitted by a sub-bundle that externalized the root.
137
+ for (const name of rootsNeedingTrailingSlash) {
138
+ if (!rootMap.has(name))
139
+ continue;
140
+ if (!addedPkgs.has(name)) {
141
+ entries.push([name, this.cdn.buildEsmUrl(versionedPkg(name), {})]);
142
+ }
143
+ entries.push([`${name}/`, `${this.cdn.esmHost}/${versionedPkg(name)}/`]);
144
+ }
145
+ return entries;
146
+ }
147
+ /** Get dependencies (peer or regular) that are singletons and need to be externalized */
148
+ singletonDepsOf(root, singletonRoots) {
149
+ return [...new Set([...peerNames(root.meta), ...depNames(root.meta)])].filter(name => singletonRoots.has(name));
150
+ }
151
+ }
152
+ PackageService.importPatterns = [
153
+ /\bimport\s+(?:[^'";]*?from\s*)?['"]([^'"]+)['"]/g,
154
+ /\bexport\s+[^'";]*?from\s*['"]([^'"]+)['"]/g
155
+ ];
156
+ //# sourceMappingURL=packageService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packageService.js","sourceRoot":"","sources":["../../resolver/src/packageService.ts"],"names":[],"mappings":"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"}