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,33 @@
|
|
|
1
|
+
import { CdnClient, type PackageMeta } from './cdnClient.js';
|
|
2
|
+
export type ResolvedRoot = {
|
|
3
|
+
name: string;
|
|
4
|
+
version: string;
|
|
5
|
+
meta?: PackageMeta;
|
|
6
|
+
};
|
|
7
|
+
export type PackageFlags = {
|
|
8
|
+
isPeerRoot: boolean;
|
|
9
|
+
hasPeers: boolean;
|
|
10
|
+
isSharedDep: boolean;
|
|
11
|
+
};
|
|
12
|
+
export type AutoAddedPeer = {
|
|
13
|
+
name: string;
|
|
14
|
+
requiredBy: string;
|
|
15
|
+
};
|
|
16
|
+
export declare const peerNames: (meta?: PackageMeta) => string[];
|
|
17
|
+
export declare const depNames: (meta?: PackageMeta) => string[];
|
|
18
|
+
export declare class PeerResolver {
|
|
19
|
+
private cdn;
|
|
20
|
+
constructor(cdn: CdnClient);
|
|
21
|
+
resolve(roots: Array<{
|
|
22
|
+
name: string;
|
|
23
|
+
version: string;
|
|
24
|
+
}>, resolveVersion: (name: string) => Promise<string>): Promise<{
|
|
25
|
+
allRoots: ResolvedRoot[];
|
|
26
|
+
flags: Map<string, PackageFlags>;
|
|
27
|
+
autoAddedPeers: AutoAddedPeer[];
|
|
28
|
+
}>;
|
|
29
|
+
private fetchMeta;
|
|
30
|
+
private expandWithPeers;
|
|
31
|
+
private computeFlags;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=peerResolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"peerResolver.d.ts","sourceRoot":"","sources":["../../resolver/src/peerResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE5D,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,WAAW,CAAA;CAAE,CAAA;AAChF,MAAM,MAAM,YAAY,GAAG;IAAE,UAAU,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAAA;AAC3F,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAA;AAGhE,eAAO,MAAM,SAAS,GAAI,OAAO,WAAW,aAA8E,CAAA;AAC1H,eAAO,MAAM,QAAQ,GAAI,OAAO,WAAW,aAA0E,CAAA;AAMrH,qBAAa,YAAY;IAEX,OAAO,CAAC,GAAG;gBAAH,GAAG,EAAE,SAAS;IAE5B,OAAO,CACX,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,EAC/C,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC;;;;;YAQrC,SAAS;YAMT,eAAe;IA6B7B,OAAO,CAAC,YAAY;CAyBrB"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
const isTypesPackage = (name) => name.startsWith('@types/');
|
|
2
|
+
export const peerNames = (meta) => Object.keys(meta?.peerDependencies || {}).filter(n => !isTypesPackage(n));
|
|
3
|
+
export const depNames = (meta) => Object.keys(meta?.dependencies || {}).filter(n => !isTypesPackage(n));
|
|
4
|
+
/** Only peers NOT marked as optional in peerDependenciesMeta */
|
|
5
|
+
const requiredPeerNames = (meta) => peerNames(meta).filter(name => !meta?.peerDependenciesMeta?.[name]?.optional);
|
|
6
|
+
export class PeerResolver {
|
|
7
|
+
constructor(cdn) {
|
|
8
|
+
this.cdn = cdn;
|
|
9
|
+
}
|
|
10
|
+
async resolve(roots, resolveVersion) {
|
|
11
|
+
const initialRoots = await this.fetchMeta(roots);
|
|
12
|
+
const { allRoots, autoAddedPeers } = await this.expandWithPeers(initialRoots, resolveVersion);
|
|
13
|
+
const flags = this.computeFlags(allRoots);
|
|
14
|
+
return { allRoots, flags, autoAddedPeers };
|
|
15
|
+
}
|
|
16
|
+
async fetchMeta(roots) {
|
|
17
|
+
return Promise.all(roots.map(async ({ name, version }) => ({
|
|
18
|
+
name, version, meta: await this.cdn.fetchPackageMeta(name, version)
|
|
19
|
+
})));
|
|
20
|
+
}
|
|
21
|
+
async expandWithPeers(initialRoots, resolveVersion) {
|
|
22
|
+
const rootMap = new Map(initialRoots.map(r => [r.name, r]));
|
|
23
|
+
const autoAddedPeers = [];
|
|
24
|
+
for (const root of initialRoots) {
|
|
25
|
+
for (const name of requiredPeerNames(root.meta)) {
|
|
26
|
+
if (!rootMap.has(name) && !autoAddedPeers.some(p => p.name === name)) {
|
|
27
|
+
autoAddedPeers.push({ name, requiredBy: root.name });
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
// Resolve peers sequentially
|
|
32
|
+
for (const { name, requiredBy } of autoAddedPeers) {
|
|
33
|
+
try {
|
|
34
|
+
const version = await resolveVersion(name);
|
|
35
|
+
const meta = await this.cdn.fetchPackageMeta(name, version);
|
|
36
|
+
rootMap.set(name, { name, version, meta });
|
|
37
|
+
}
|
|
38
|
+
catch (err) {
|
|
39
|
+
console.warn(`[typebulb] Failed to resolve peer "${name}" for "${requiredBy}":`, err);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return { allRoots: [...rootMap.values()], autoAddedPeers: autoAddedPeers.filter(p => rootMap.has(p.name)) };
|
|
43
|
+
}
|
|
44
|
+
computeFlags(roots) {
|
|
45
|
+
// Packages appearing in peerDependencies of any imported package
|
|
46
|
+
const peerRootSet = new Set(roots.flatMap(r => peerNames(r.meta)));
|
|
47
|
+
// Packages appearing in dependencies of 2+ imported packages (shared deps)
|
|
48
|
+
// These need singleton behavior even if not declared as peers (e.g., @codemirror/state)
|
|
49
|
+
const depCounts = new Map();
|
|
50
|
+
for (const root of roots) {
|
|
51
|
+
for (const dep of depNames(root.meta)) {
|
|
52
|
+
depCounts.set(dep, (depCounts.get(dep) || 0) + 1);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
const sharedDepSet = new Set([...depCounts.entries()].filter(([, count]) => count >= 2).map(([name]) => name));
|
|
56
|
+
return new Map(roots.map(root => [
|
|
57
|
+
root.name,
|
|
58
|
+
{
|
|
59
|
+
isPeerRoot: peerRootSet.has(root.name),
|
|
60
|
+
hasPeers: peerNames(root.meta).length > 0,
|
|
61
|
+
isSharedDep: sharedDepSet.has(root.name)
|
|
62
|
+
}
|
|
63
|
+
]));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=peerResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"peerResolver.js","sourceRoot":"","sources":["../../resolver/src/peerResolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type Version = string;
|
|
2
|
+
export declare class SemverService {
|
|
3
|
+
cmp(a: Version, b: Version): number;
|
|
4
|
+
satisfies(range: string, v: Version): boolean;
|
|
5
|
+
pickMaxSatisfying(versions: Version[], range: string): Version | undefined;
|
|
6
|
+
pickLatest(versions: Version[]): Version | undefined;
|
|
7
|
+
selectBestVersion(versions: Version[], options?: {
|
|
8
|
+
distTags?: Record<string, string>;
|
|
9
|
+
range?: string;
|
|
10
|
+
preferStable?: boolean;
|
|
11
|
+
}): Version | undefined;
|
|
12
|
+
majorOf(v: Version): number;
|
|
13
|
+
isPrerelease(version: Version): boolean;
|
|
14
|
+
isExactVersion(version: string): boolean;
|
|
15
|
+
}
|
|
16
|
+
export declare const semverService: SemverService;
|
|
17
|
+
//# sourceMappingURL=semver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semver.d.ts","sourceRoot":"","sources":["../../resolver/src/semver.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG,MAAM,CAAA;AAI5B,qBAAa,aAAa;IAExB,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM;IAKnC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO;IAK7C,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAM1E,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,GAAG,SAAS;IAMpD,iBAAiB,CACf,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACjC,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,YAAY,CAAC,EAAE,OAAO,CAAA;KACvB,GACA,OAAO,GAAG,SAAS;IAuBtB,OAAO,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM;IAI3B,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAIvC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;CAGzC;AACD,eAAO,MAAM,aAAa,eAAsB,CAAA"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { gt, satisfies as satisfiesFn, maxSatisfying, major, prerelease, rsort, valid } from 'semver';
|
|
2
|
+
export class SemverService {
|
|
3
|
+
cmp(a, b) {
|
|
4
|
+
if (a === b)
|
|
5
|
+
return 0;
|
|
6
|
+
return gt(a, b) ? 1 : (gt(b, a) ? -1 : 0);
|
|
7
|
+
}
|
|
8
|
+
satisfies(range, v) {
|
|
9
|
+
if (!range || !range.trim())
|
|
10
|
+
return true;
|
|
11
|
+
return Boolean(satisfiesFn(v, range, { includePrerelease: true }));
|
|
12
|
+
}
|
|
13
|
+
pickMaxSatisfying(versions, range) {
|
|
14
|
+
if (!versions?.length)
|
|
15
|
+
return undefined;
|
|
16
|
+
const res = maxSatisfying(versions, range, { includePrerelease: true });
|
|
17
|
+
return res === null ? undefined : res;
|
|
18
|
+
}
|
|
19
|
+
pickLatest(versions) {
|
|
20
|
+
if (!versions?.length)
|
|
21
|
+
return undefined;
|
|
22
|
+
const sorted = rsort(versions);
|
|
23
|
+
return sorted[0];
|
|
24
|
+
}
|
|
25
|
+
selectBestVersion(versions, options) {
|
|
26
|
+
if (!versions?.length)
|
|
27
|
+
return undefined;
|
|
28
|
+
const range = options?.range?.trim() || '*';
|
|
29
|
+
const preferStable = options?.preferStable ?? true;
|
|
30
|
+
// Priority 1: distTags.latest if available and satisfies range
|
|
31
|
+
const latest = options?.distTags?.latest;
|
|
32
|
+
if (latest && versions.includes(latest) && this.satisfies(range, latest)) {
|
|
33
|
+
return latest;
|
|
34
|
+
}
|
|
35
|
+
// Priority 2: Best stable version satisfying range
|
|
36
|
+
if (preferStable) {
|
|
37
|
+
const stable = maxSatisfying(versions, range, { includePrerelease: false });
|
|
38
|
+
if (stable)
|
|
39
|
+
return stable;
|
|
40
|
+
}
|
|
41
|
+
// Priority 3: Best version (including prereleases) satisfying range
|
|
42
|
+
const any = maxSatisfying(versions, range, { includePrerelease: true });
|
|
43
|
+
return any ?? undefined;
|
|
44
|
+
}
|
|
45
|
+
majorOf(v) {
|
|
46
|
+
return major(v);
|
|
47
|
+
}
|
|
48
|
+
isPrerelease(version) {
|
|
49
|
+
return prerelease(version) !== null;
|
|
50
|
+
}
|
|
51
|
+
isExactVersion(version) {
|
|
52
|
+
return valid(version) !== null;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
export const semverService = new SemverService();
|
|
56
|
+
//# sourceMappingURL=semver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semver.js","sourceRoot":"","sources":["../../resolver/src/semver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export type PeerMeta = {
|
|
2
|
+
optional?: boolean;
|
|
3
|
+
};
|
|
4
|
+
export type PackageRanges = Record<string, string>;
|
|
5
|
+
export interface PackageCache {
|
|
6
|
+
getPinnedExact(name: string, range: string): Promise<string | undefined>;
|
|
7
|
+
setPinnedExact(name: string, range: string, exact: string): Promise<unknown>;
|
|
8
|
+
getIndex(name: string): Promise<{
|
|
9
|
+
versions: string[];
|
|
10
|
+
distTags?: Record<string, string>;
|
|
11
|
+
updatedAt: number;
|
|
12
|
+
} | undefined>;
|
|
13
|
+
setIndex(name: string, versions: string[], distTags?: Record<string, string>): Promise<unknown>;
|
|
14
|
+
invalidateVersionsCache(name: string): Promise<unknown>;
|
|
15
|
+
isNegative(name: string): Promise<boolean>;
|
|
16
|
+
recordNegative(name: string): Promise<unknown>;
|
|
17
|
+
clearNegative(name: string): Promise<unknown>;
|
|
18
|
+
getMeta(name: string, version: string): Promise<{
|
|
19
|
+
dependencies?: Record<string, string>;
|
|
20
|
+
peerDependencies?: Record<string, string>;
|
|
21
|
+
peerDependenciesMeta?: Record<string, PeerMeta>;
|
|
22
|
+
updatedAt: number;
|
|
23
|
+
} | undefined>;
|
|
24
|
+
setMeta(name: string, version: string, dependencies?: Record<string, string>, peerDependencies?: Record<string, string>, peerDependenciesMeta?: Record<string, PeerMeta>): Promise<unknown>;
|
|
25
|
+
}
|
|
26
|
+
export interface HttpClient {
|
|
27
|
+
getJson<T>(url: string): Promise<T | undefined>;
|
|
28
|
+
head(url: string): Promise<{
|
|
29
|
+
ok: boolean;
|
|
30
|
+
url: string;
|
|
31
|
+
} | undefined>;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../resolver/src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAE7C,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAElD,MAAM,WAAW,YAAY;IAC3B,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IACxE,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC5E,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC,CAAA;IACzH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC/F,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACvD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC1C,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC9C,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC7C,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC,CAAA;IACrN,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CAC5L;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAA;IAC/C,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC,CAAA;CACrE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../resolver/src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { PackageCache, PackageRanges } from './types.js';
|
|
2
|
+
import { CdnClient } from './cdnClient.js';
|
|
3
|
+
import { SemverService } from './semver.js';
|
|
4
|
+
export type EffectivePackageResult = {
|
|
5
|
+
effectivePackage: string;
|
|
6
|
+
root: string;
|
|
7
|
+
range?: string;
|
|
8
|
+
pinned?: string;
|
|
9
|
+
};
|
|
10
|
+
export declare class VersionResolver {
|
|
11
|
+
private cache;
|
|
12
|
+
private cdn;
|
|
13
|
+
private semver;
|
|
14
|
+
constructor(cache: PackageCache, cdn: CdnClient, semver: SemverService);
|
|
15
|
+
private selectVersionFromIndex;
|
|
16
|
+
/**
|
|
17
|
+
* Learns the best available version for a package (no caching).
|
|
18
|
+
* Used by packageAuto to determine what version we'd assign fresh.
|
|
19
|
+
*/
|
|
20
|
+
learnExactVersion(name: string): Promise<string | undefined>;
|
|
21
|
+
resolveExactForRoot(root: string, range?: string): Promise<string | undefined>;
|
|
22
|
+
effectivePackage(pkg: string, ranges: PackageRanges): Promise<{
|
|
23
|
+
effectivePackage: string;
|
|
24
|
+
root: string;
|
|
25
|
+
range: string;
|
|
26
|
+
pinned: string | undefined;
|
|
27
|
+
}>;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=versionResolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"versionResolver.d.ts","sourceRoot":"","sources":["../../resolver/src/versionResolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAG3C,MAAM,MAAM,sBAAsB,GAAG;IACnC,gBAAgB,EAAE,MAAM,CAAA;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,qBAAa,eAAe;IACd,OAAO,CAAC,KAAK;IAAgB,OAAO,CAAC,GAAG;IAAa,OAAO,CAAC,MAAM;gBAA3D,KAAK,EAAE,YAAY,EAAU,GAAG,EAAE,SAAS,EAAU,MAAM,EAAE,aAAa;IAE9F,OAAO,CAAC,sBAAsB;IAI9B;;;OAGG;IACG,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAS5D,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IAyChD,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa;;;;;;CAgB1D"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { PackageRef } from './packageRef.js';
|
|
2
|
+
import { attempt } from './attempt.js';
|
|
3
|
+
export class VersionResolver {
|
|
4
|
+
constructor(cache, cdn, semver) {
|
|
5
|
+
this.cache = cache;
|
|
6
|
+
this.cdn = cdn;
|
|
7
|
+
this.semver = semver;
|
|
8
|
+
}
|
|
9
|
+
selectVersionFromIndex(versions, range, distTags) {
|
|
10
|
+
return this.semver.selectBestVersion(versions, { range, distTags });
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Learns the best available version for a package (no caching).
|
|
14
|
+
* Used by packageAuto to determine what version we'd assign fresh.
|
|
15
|
+
*/
|
|
16
|
+
async learnExactVersion(name) {
|
|
17
|
+
const idx = await attempt(() => this.cdn.fetchVersionsIndex(name));
|
|
18
|
+
if (idx?.versions?.length) {
|
|
19
|
+
const version = this.semver.selectBestVersion(idx.versions, { distTags: idx.distTags });
|
|
20
|
+
if (version)
|
|
21
|
+
return version;
|
|
22
|
+
}
|
|
23
|
+
return this.cdn.resolveExactVersion(name);
|
|
24
|
+
}
|
|
25
|
+
async resolveExactForRoot(root, range) {
|
|
26
|
+
if (!range)
|
|
27
|
+
return this.learnExactVersion(root);
|
|
28
|
+
const pinned = await this.cache.getPinnedExact(root, range);
|
|
29
|
+
if (pinned) {
|
|
30
|
+
if (this.semver.isExactVersion(pinned))
|
|
31
|
+
return pinned;
|
|
32
|
+
// Routine, not an error: a cached pin that isn't an exact version just gets re-resolved below.
|
|
33
|
+
console.debug('[typebulb] cached version for', root, 'is not exact (', pinned, '); re-resolving from registry');
|
|
34
|
+
}
|
|
35
|
+
const idx = await attempt(() => this.cdn.fetchVersionsIndex(root));
|
|
36
|
+
if (idx?.versions?.length) {
|
|
37
|
+
const chosen = this.selectVersionFromIndex(idx.versions, range, idx.distTags);
|
|
38
|
+
if (!chosen) {
|
|
39
|
+
// Routine cache refresh after a new release: the cached version set predates a release that
|
|
40
|
+
// satisfies `range`, so drop it and re-fetch. Not an error — expected right after an upgrade.
|
|
41
|
+
console.debug('[typebulb] refreshing version cache for', root, '(', range, 'not in cached set — likely a new release)');
|
|
42
|
+
await this.cache.invalidateVersionsCache(root);
|
|
43
|
+
const freshIdx = await attempt(() => this.cdn.fetchVersionsIndex(root));
|
|
44
|
+
if (freshIdx?.versions?.length) {
|
|
45
|
+
const freshChosen = this.selectVersionFromIndex(freshIdx.versions, range, freshIdx.distTags);
|
|
46
|
+
if (freshChosen && this.semver.isExactVersion(freshChosen)) {
|
|
47
|
+
await this.cache.setPinnedExact(root, range, freshChosen);
|
|
48
|
+
return freshChosen;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
else if (this.semver.isExactVersion(chosen)) {
|
|
53
|
+
await this.cache.setPinnedExact(root, range, chosen);
|
|
54
|
+
return chosen;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
const exact = await this.cdn.resolveExactVersion(`${root}@${range}`);
|
|
58
|
+
if (exact && this.semver.isExactVersion(exact)) {
|
|
59
|
+
await this.cache.setPinnedExact(root, range, exact);
|
|
60
|
+
return exact;
|
|
61
|
+
}
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
async effectivePackage(pkg, ranges) {
|
|
65
|
+
const parsed = new PackageRef(pkg);
|
|
66
|
+
const root = parsed.root();
|
|
67
|
+
const range = ranges[root];
|
|
68
|
+
const pinned = range
|
|
69
|
+
? await attempt(() => this.cache.getPinnedExact(root, range)) ?? await attempt(() => this.resolveExactForRoot(root, range))
|
|
70
|
+
: undefined;
|
|
71
|
+
return {
|
|
72
|
+
effectivePackage: pinned ? parsed.withVersion(pinned).format() : pkg,
|
|
73
|
+
root,
|
|
74
|
+
range,
|
|
75
|
+
pinned
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=versionResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"versionResolver.js","sourceRoot":"","sources":["../../resolver/src/versionResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAStC,MAAM,OAAO,eAAe;IAC1B,YAAoB,KAAmB,EAAU,GAAc,EAAU,MAAqB;QAA1E,UAAK,GAAL,KAAK,CAAc;QAAU,QAAG,GAAH,GAAG,CAAW;QAAU,WAAM,GAAN,MAAM,CAAe;IAAG,CAAC;IAE1F,sBAAsB,CAAC,QAAkB,EAAE,KAAa,EAAE,QAAiC;QACjG,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAA;IACrE,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,iBAAiB,CAAC,IAAY;QAClC,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAA;QAClE,IAAI,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;YACvF,IAAI,OAAO;gBAAE,OAAO,OAAO,CAAA;QAC7B,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAA;IAC3C,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,IAAY,EAAE,KAAc;QACpD,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;QAE/C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAC3D,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC;gBAAE,OAAO,MAAM,CAAA;YACrD,+FAA+F;YAC/F,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,+BAA+B,CAAC,CAAA;QACjH,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAA;QAClE,IAAI,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAA;YAE7E,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,4FAA4F;gBAC5F,8FAA8F;gBAC9F,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,2CAA2C,CAAC,CAAA;gBACvH,MAAM,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAA;gBAC9C,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAA;gBACvE,IAAI,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;oBAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAA;oBAC5F,IAAI,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC;wBAC3D,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,CAAA;wBACzD,OAAO,WAAW,CAAA;oBACpB,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9C,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;gBACpD,OAAO,MAAM,CAAA;YACf,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC,CAAA;QACpE,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;YACnD,OAAO,KAAK,CAAA;QACd,CAAC;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,GAAW,EAAE,MAAqB;QACvD,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAA;QAClC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAA;QAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;QAE1B,MAAM,MAAM,GAAG,KAAK;YAClB,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC3H,CAAC,CAAC,SAAS,CAAA;QAEb,OAAO;YACL,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG;YACpE,IAAI;YACJ,KAAK;YACL,MAAM;SACP,CAAA;IACH,CAAC;CACF"}
|