typebulb 0.12.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents/claude/client.js +341 -205
- package/dist/agents/claude/styles.css +3 -21
- package/dist/ai/aiProvider.d.ts +59 -0
- package/dist/ai/aiProvider.d.ts.map +1 -0
- package/dist/ai/aiProvider.js +109 -0
- package/dist/ai/aiProvider.js.map +1 -0
- package/dist/ai/aiProviders.d.ts +28 -0
- package/dist/ai/aiProviders.d.ts.map +1 -0
- package/dist/ai/aiProviders.js +47 -0
- package/dist/ai/aiProviders.js.map +1 -0
- package/dist/ai/chat.d.ts +32 -0
- package/dist/ai/chat.d.ts.map +1 -0
- package/dist/ai/chat.js +5 -0
- package/dist/ai/chat.js.map +1 -0
- package/dist/ai/index.d.ts +9 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +11 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/protocol.d.ts +18 -0
- package/dist/ai/protocol.d.ts.map +1 -0
- package/dist/ai/protocol.js +3 -0
- package/dist/ai/protocol.js.map +1 -0
- package/dist/ai/providers/anthropic.d.ts +123 -0
- package/dist/ai/providers/anthropic.d.ts.map +1 -0
- package/dist/ai/providers/anthropic.js +130 -0
- package/dist/ai/providers/anthropic.js.map +1 -0
- package/dist/ai/providers/gemini.d.ts +62 -0
- package/dist/ai/providers/gemini.d.ts.map +1 -0
- package/dist/ai/providers/gemini.js +136 -0
- package/dist/ai/providers/gemini.js.map +1 -0
- package/dist/ai/providers/openAI.d.ts +146 -0
- package/dist/ai/providers/openAI.d.ts.map +1 -0
- package/dist/ai/providers/openAI.js +127 -0
- package/dist/ai/providers/openAI.js.map +1 -0
- package/dist/ai/providers/openRouter.d.ts +65 -0
- package/dist/ai/providers/openRouter.d.ts.map +1 -0
- package/dist/ai/providers/openRouter.js +82 -0
- package/dist/ai/providers/openRouter.js.map +1 -0
- package/dist/ai/sseParser.d.ts +32 -0
- package/dist/ai/sseParser.d.ts.map +1 -0
- package/dist/ai/sseParser.js +121 -0
- package/dist/ai/sseParser.js.map +1 -0
- package/dist/ai/stream.d.ts +20 -0
- package/dist/ai/stream.d.ts.map +1 -0
- package/dist/ai/stream.js +6 -0
- package/dist/ai/stream.js.map +1 -0
- package/dist/dts/cache.d.ts +30 -0
- package/dist/dts/cache.d.ts.map +1 -0
- package/dist/dts/cache.js +2 -0
- package/dist/dts/cache.js.map +1 -0
- package/dist/dts/definitelyTypedProvider.d.ts +20 -0
- package/dist/dts/definitelyTypedProvider.d.ts.map +1 -0
- package/dist/dts/definitelyTypedProvider.js +93 -0
- package/dist/dts/definitelyTypedProvider.js.map +1 -0
- package/dist/dts/dtsConfig.d.ts +12 -0
- package/dist/dts/dtsConfig.d.ts.map +1 -0
- package/dist/dts/dtsConfig.js +24 -0
- package/dist/dts/dtsConfig.js.map +1 -0
- package/dist/dts/dtsResolver.d.ts +63 -0
- package/dist/dts/dtsResolver.d.ts.map +1 -0
- package/dist/dts/dtsResolver.js +272 -0
- package/dist/dts/dtsResolver.js.map +1 -0
- package/dist/dts/fetchDts.d.ts +13 -0
- package/dist/dts/fetchDts.d.ts.map +1 -0
- package/dist/dts/fetchDts.js +46 -0
- package/dist/dts/fetchDts.js.map +1 -0
- package/dist/dts/httpFetch.d.ts +17 -0
- package/dist/dts/httpFetch.d.ts.map +1 -0
- package/dist/dts/httpFetch.js +35 -0
- package/dist/dts/httpFetch.js.map +1 -0
- package/dist/dts/index.d.ts +14 -0
- package/dist/dts/index.d.ts.map +1 -0
- package/dist/dts/index.js +14 -0
- package/dist/dts/index.js.map +1 -0
- package/dist/dts/libManifest.d.ts +41 -0
- package/dist/dts/libManifest.d.ts.map +1 -0
- package/dist/dts/libManifest.js +109 -0
- package/dist/dts/libManifest.js.map +1 -0
- package/dist/dts/negativeCacheHelper.d.ts +29 -0
- package/dist/dts/negativeCacheHelper.d.ts.map +1 -0
- package/dist/dts/negativeCacheHelper.js +44 -0
- package/dist/dts/negativeCacheHelper.js.map +1 -0
- package/dist/dts/tarballFetcher.d.ts +13 -0
- package/dist/dts/tarballFetcher.d.ts.map +1 -0
- package/dist/dts/tarballFetcher.js +58 -0
- package/dist/dts/tarballFetcher.js.map +1 -0
- package/dist/dts/tbTypings.d.ts +15 -0
- package/dist/dts/tbTypings.d.ts.map +1 -0
- package/dist/dts/tbTypings.js +210 -0
- package/dist/dts/tbTypings.js.map +1 -0
- package/dist/dts/typeProvider.d.ts +37 -0
- package/dist/dts/typeProvider.d.ts.map +1 -0
- package/dist/dts/typeProvider.js +30 -0
- package/dist/dts/typeProvider.js.map +1 -0
- package/dist/dts/typeRefScanner.d.ts +8 -0
- package/dist/dts/typeRefScanner.d.ts.map +1 -0
- package/dist/dts/typeRefScanner.js +33 -0
- package/dist/dts/typeRefScanner.js.map +1 -0
- package/dist/dts/typescriptProvider.d.ts +21 -0
- package/dist/dts/typescriptProvider.d.ts.map +1 -0
- package/dist/dts/typescriptProvider.js +140 -0
- package/dist/dts/typescriptProvider.js.map +1 -0
- package/dist/dts/virtualFs.d.ts +20 -0
- package/dist/dts/virtualFs.d.ts.map +1 -0
- package/dist/dts/virtualFs.js +48 -0
- package/dist/dts/virtualFs.js.map +1 -0
- package/dist/format/chunks.d.ts +20 -0
- package/dist/format/chunks.d.ts.map +1 -0
- package/dist/format/chunks.js +51 -0
- package/dist/format/chunks.js.map +1 -0
- package/dist/format/config.d.ts +17 -0
- package/dist/format/config.d.ts.map +1 -0
- package/dist/format/config.js +13 -0
- package/dist/format/config.js.map +1 -0
- package/dist/format/detection.d.ts +11 -0
- package/dist/format/detection.d.ts.map +1 -0
- package/dist/format/detection.js +43 -0
- package/dist/format/detection.js.map +1 -0
- package/dist/format/index.d.ts +8 -0
- package/dist/format/index.d.ts.map +1 -0
- package/dist/format/index.js +8 -0
- package/dist/format/index.js.map +1 -0
- package/dist/format/parse.d.ts +20 -0
- package/dist/format/parse.d.ts.map +1 -0
- package/dist/format/parse.js +88 -0
- package/dist/format/parse.js.map +1 -0
- package/dist/format/registry.d.ts +24 -0
- package/dist/format/registry.d.ts.map +1 -0
- package/dist/format/registry.js +31 -0
- package/dist/format/registry.js.map +1 -0
- package/dist/format/serialize.d.ts +8 -0
- package/dist/format/serialize.d.ts.map +1 -0
- package/dist/format/serialize.js +30 -0
- package/dist/format/serialize.js.map +1 -0
- package/dist/format/yaml.d.ts +4 -0
- package/dist/format/yaml.d.ts.map +1 -0
- package/dist/format/yaml.js +17 -0
- package/dist/format/yaml.js.map +1 -0
- package/dist/index.js +385 -84
- package/dist/lint/index.d.ts +29 -0
- package/dist/lint/index.d.ts.map +1 -0
- package/dist/lint/index.js +257 -0
- package/dist/lint/index.js.map +1 -0
- package/dist/render.js +174 -38
- package/dist/resolver/attempt.d.ts +2 -0
- package/dist/resolver/attempt.d.ts.map +1 -0
- package/dist/resolver/attempt.js +9 -0
- package/dist/resolver/attempt.js.map +1 -0
- package/dist/resolver/cdnClient.d.ts +46 -0
- package/dist/resolver/cdnClient.d.ts.map +1 -0
- package/dist/resolver/cdnClient.js +107 -0
- package/dist/resolver/cdnClient.js.map +1 -0
- package/dist/resolver/cdnConstants.d.ts +10 -0
- package/dist/resolver/cdnConstants.d.ts.map +1 -0
- package/dist/resolver/cdnConstants.js +10 -0
- package/dist/resolver/cdnConstants.js.map +1 -0
- package/dist/resolver/index.d.ts +20 -0
- package/dist/resolver/index.d.ts.map +1 -0
- package/dist/resolver/index.js +20 -0
- package/dist/resolver/index.js.map +1 -0
- package/dist/resolver/packageRef.d.ts +21 -0
- package/dist/resolver/packageRef.d.ts.map +1 -0
- package/dist/resolver/packageRef.js +89 -0
- package/dist/resolver/packageRef.js.map +1 -0
- package/dist/resolver/packageService.d.ts +40 -0
- package/dist/resolver/packageService.d.ts.map +1 -0
- package/dist/resolver/packageService.js +156 -0
- package/dist/resolver/packageService.js.map +1 -0
- package/dist/resolver/peerResolver.d.ts +33 -0
- package/dist/resolver/peerResolver.d.ts.map +1 -0
- package/dist/resolver/peerResolver.js +66 -0
- package/dist/resolver/peerResolver.js.map +1 -0
- package/dist/resolver/semver.d.ts +17 -0
- package/dist/resolver/semver.d.ts.map +1 -0
- package/dist/resolver/semver.js +56 -0
- package/dist/resolver/semver.js.map +1 -0
- package/dist/resolver/types.d.ts +33 -0
- package/dist/resolver/types.d.ts.map +1 -0
- package/dist/resolver/types.js +2 -0
- package/dist/resolver/types.js.map +1 -0
- package/dist/resolver/versionResolver.d.ts +29 -0
- package/dist/resolver/versionResolver.d.ts.map +1 -0
- package/dist/resolver/versionResolver.js +79 -0
- package/dist/resolver/versionResolver.js.map +1 -0
- package/dist/servers.js +142 -3
- package/dist/transpile/index.d.ts +19 -0
- package/dist/transpile/index.d.ts.map +1 -0
- package/dist/transpile/index.js +23 -0
- package/dist/transpile/index.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +99 -68
|
@@ -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 @@
|
|
|
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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"}
|