@typespec/compiler 1.16.0-dev.1 → 1.16.0-dev.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/manifest.js +2 -2
- package/dist/src/install/install.d.ts.map +1 -1
- package/dist/src/install/install.js +26 -5
- package/dist/src/install/install.js.map +1 -1
- package/dist/src/package-manger/npm-package-download.d.ts +2 -2
- package/dist/src/package-manger/npm-package-download.d.ts.map +1 -1
- package/dist/src/package-manger/npm-package-download.js +22 -3
- package/dist/src/package-manger/npm-package-download.js.map +1 -1
- package/dist/src/package-manger/npm-registry.d.ts +30 -31
- package/dist/src/package-manger/npm-registry.d.ts.map +1 -1
- package/dist/src/package-manger/npm-registry.js +58 -4
- package/dist/src/package-manger/npm-registry.js.map +1 -1
- package/package.json +1 -1
package/dist/manifest.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/install/install.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAG9D,OAAO,EAAY,KAAK,UAAU,EAAe,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/install/install.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAG9D,OAAO,EAAY,KAAK,UAAU,EAAe,MAAM,kBAAkB,CAAC;AA+B1E,qBAAa,wBAAyB,SAAQ,eAAe;gBAC/C,OAAO,EAAE,MAAM;CAQ5B;AAED,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IACpC,gGAAgG;IAChG,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CACvC;AAqHD,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,kCAAkC,GAC1C,OAAO,CAAC,SAAS,UAAU,EAAE,CAAC,CAiEhC"}
|
|
@@ -5,8 +5,8 @@ import { DiagnosticError } from "../core/diagnostic-error.js";
|
|
|
5
5
|
import { createDiagnosticCollector } from "../core/diagnostics.js";
|
|
6
6
|
import { getDirectoryPath, joinPaths } from "../core/path-utils.js";
|
|
7
7
|
import { NoTarget } from "../core/types.js";
|
|
8
|
-
import { downloadAndExtractPackage } from "../package-manger/npm-package-download.js";
|
|
9
|
-
import { fetchPackageManifest } from "../package-manger/npm-registry.js";
|
|
8
|
+
import { downloadAndExtractPackage, } from "../package-manger/npm-package-download.js";
|
|
9
|
+
import { fetchPackageManifest, NpmRegistryError, } from "../package-manger/npm-registry.js";
|
|
10
10
|
import { mkTempDir } from "../utils/fs-utils.js";
|
|
11
11
|
import { getPackageManagerConfig } from "./config.js";
|
|
12
12
|
import { resolvePackageManagerSpec, updatePackageManagerInPackageJson, } from "./spec.js";
|
|
@@ -56,7 +56,16 @@ async function installPackageManager(host, tracer, packageManager, spec, install
|
|
|
56
56
|
await rm(installDir, { recursive: true, force: true });
|
|
57
57
|
const tempDir = await mkTempDir(host, pmDir, `tsp-pm-${packageManager}-${manifest.version}`);
|
|
58
58
|
tracer.trace("downloading-extracting", `Downloading and extracting ${packageManager} at version ${manifest.version} in ${tempDir}`);
|
|
59
|
-
|
|
59
|
+
let extractResult;
|
|
60
|
+
try {
|
|
61
|
+
extractResult = await downloadAndExtractPackage(manifest, tempDir, spec.hash?.algorithm);
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
if (error instanceof NpmRegistryError) {
|
|
65
|
+
throw new InstallDependenciesError(`Failed to download package manager ${packageManager}: ${error.message}`);
|
|
66
|
+
}
|
|
67
|
+
throw error;
|
|
68
|
+
}
|
|
60
69
|
if (spec.hash) {
|
|
61
70
|
if (spec.hash.value !== extractResult.hash.value) {
|
|
62
71
|
throw new InstallDependenciesError(`Mismatch hash for package manager. (${spec.hash.algorithm})\n Expected: ${spec.hash.value}\n Actual: ${extractResult.hash}`);
|
|
@@ -108,8 +117,21 @@ export async function installTypeSpecDependencies(host, options) {
|
|
|
108
117
|
const { spec, path: packageJsonPath } = diagnostics.pipe(await resolvePackageManagerSpecOrFail(host, tracer, options));
|
|
109
118
|
const packageManager = spec.name;
|
|
110
119
|
const packageManagerConfig = getPackageManagerConfig(packageManager);
|
|
111
|
-
|
|
120
|
+
let manifest;
|
|
121
|
+
try {
|
|
122
|
+
manifest = await fetchPackageManifest(packageManager, spec.range);
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
if (error instanceof NpmRegistryError) {
|
|
126
|
+
throw new InstallDependenciesError(`Failed to resolve package manager ${packageManager}: ${error.message}`);
|
|
127
|
+
}
|
|
128
|
+
throw error;
|
|
129
|
+
}
|
|
112
130
|
tracer.trace("fetched-manifest", `Resolved manifest for ${packageManager} at version ${manifest.version}`);
|
|
131
|
+
const bin = manifest.bin?.[packageManager];
|
|
132
|
+
if (bin === undefined) {
|
|
133
|
+
throw new InstallDependenciesError(`Package manager ${packageManager} does not define a "${packageManager}" executable.`);
|
|
134
|
+
}
|
|
113
135
|
const installDir = joinPaths(pmDir, packageManager, manifest.version);
|
|
114
136
|
if ((await isDirectory(host, installDir)) && !savePackageManager) {
|
|
115
137
|
tracer.trace("reusing", `Reusing cached package manager in ${installDir}`);
|
|
@@ -124,7 +146,6 @@ export async function installTypeSpecDependencies(host, options) {
|
|
|
124
146
|
});
|
|
125
147
|
}
|
|
126
148
|
}
|
|
127
|
-
const bin = manifest.bin[packageManager];
|
|
128
149
|
const binPath = joinPaths(installDir, bin);
|
|
129
150
|
tracer.trace("running-binary", `Running binary ${binPath}`);
|
|
130
151
|
await runPackageManager(host, packageManagerConfig, binPath, directory, stdio);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/install/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAgC,MAAM,kBAAkB,CAAC;AAC1E,OAAO,
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/install/install.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Hash } from "../install/spec.js";
|
|
2
|
-
import { type
|
|
2
|
+
import { type NpmPackageVersion } from "./npm-registry.js";
|
|
3
3
|
export declare function downloadPackageVersion(packageName: string, version: string, dest: string): Promise<ExtractedTarballResult>;
|
|
4
|
-
export declare function downloadAndExtractPackage(manifest:
|
|
4
|
+
export declare function downloadAndExtractPackage(manifest: NpmPackageVersion, dest: string, hashAlgorithm?: string): Promise<ExtractedTarballResult>;
|
|
5
5
|
export interface ExtractedTarballResult {
|
|
6
6
|
readonly dest: string;
|
|
7
7
|
readonly hash: Hash;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"npm-package-download.d.ts","sourceRoot":"","sources":["../../../src/package-manger/npm-package-download.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,
|
|
1
|
+
{"version":3,"file":"npm-package-download.d.ts","sourceRoot":"","sources":["../../../src/package-manger/npm-package-download.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAA0C,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEnG,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,sBAAsB,CAAC,CAGjC;AAED,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,iBAAiB,EAC3B,IAAI,EAAE,MAAM,EACZ,aAAa,GAAE,MAAiB,GAC/B,OAAO,CAAC,sBAAsB,CAAC,CAEjC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import { createHash } from "crypto";
|
|
4
4
|
import { Readable } from "stream";
|
|
5
5
|
import { extract as tarX } from "tar/extract";
|
|
6
|
-
import { fetchPackageManifest } from "./npm-registry.js";
|
|
6
|
+
import { fetchPackageManifest, NpmRegistryError } from "./npm-registry.js";
|
|
7
7
|
export async function downloadPackageVersion(packageName, version, dest) {
|
|
8
8
|
const manifest = await fetchPackageManifest(packageName, version);
|
|
9
9
|
return downloadAndExtractTarball(manifest.dist.tarball, dest);
|
|
@@ -12,7 +12,20 @@ export async function downloadAndExtractPackage(manifest, dest, hashAlgorithm =
|
|
|
12
12
|
return downloadAndExtractTarball(manifest.dist.tarball, dest, hashAlgorithm);
|
|
13
13
|
}
|
|
14
14
|
async function downloadAndExtractTarball(url, dest, hashAlgorithm = "sha512") {
|
|
15
|
-
|
|
15
|
+
let res;
|
|
16
|
+
try {
|
|
17
|
+
res = await fetch(url);
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
const message = error instanceof Error ? `: ${error.message}` : "";
|
|
21
|
+
throw new NpmRegistryError(`Request to ${url} failed${message}`);
|
|
22
|
+
}
|
|
23
|
+
if (!res.ok) {
|
|
24
|
+
throw new NpmRegistryError(`Request to ${url} failed with status ${res.status}.`);
|
|
25
|
+
}
|
|
26
|
+
if (res.body === null) {
|
|
27
|
+
throw new NpmRegistryError(`Request to ${url} returned an empty response.`);
|
|
28
|
+
}
|
|
16
29
|
const tarballStream = Readable.fromWeb(res.body);
|
|
17
30
|
const hash = tarballStream.pipe(createHash(hashAlgorithm));
|
|
18
31
|
const extractor = tarX({
|
|
@@ -29,7 +42,13 @@ async function downloadAndExtractTarball(url, dest, hashAlgorithm = "sha512") {
|
|
|
29
42
|
tarballStream.on("error", (er) => reject(er));
|
|
30
43
|
});
|
|
31
44
|
tarballStream.pipe(extractor);
|
|
32
|
-
|
|
45
|
+
try {
|
|
46
|
+
await p;
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
const message = error instanceof Error ? `: ${error.message}` : "";
|
|
50
|
+
throw new NpmRegistryError(`Failed to extract package from ${url}${message}`);
|
|
51
|
+
}
|
|
33
52
|
return { dest, hash: { algorithm: hashAlgorithm, value: hash.digest("hex") } };
|
|
34
53
|
}
|
|
35
54
|
//# sourceMappingURL=npm-package-download.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"npm-package-download.js","sourceRoot":"","sources":["../../../src/package-manger/npm-package-download.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,6EAA6E;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,oBAAoB,
|
|
1
|
+
{"version":3,"file":"npm-package-download.js","sourceRoot":"","sources":["../../../src/package-manger/npm-package-download.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,30 +1,3 @@
|
|
|
1
|
-
/** Manifest of a single package version. */
|
|
2
|
-
export interface NpmManifest {
|
|
3
|
-
readonly name: string;
|
|
4
|
-
readonly version: string;
|
|
5
|
-
readonly dependencies: Record<string, string>;
|
|
6
|
-
readonly optionalDependencies: Record<string, string>;
|
|
7
|
-
readonly devDependencies: Record<string, string>;
|
|
8
|
-
readonly peerDependencies: Record<string, string>;
|
|
9
|
-
readonly bundleDependencies: false | string[];
|
|
10
|
-
readonly dist: NpmPackageDist;
|
|
11
|
-
readonly bin: Record<string, string> | null;
|
|
12
|
-
readonly _shrinkwrap: Record<string, unknown> | null;
|
|
13
|
-
readonly engines?: Record<string, string> | undefined;
|
|
14
|
-
readonly cpu?: string[] | undefined;
|
|
15
|
-
readonly os?: string[] | undefined;
|
|
16
|
-
readonly _id?: string | undefined;
|
|
17
|
-
readonly [key: string]: unknown;
|
|
18
|
-
}
|
|
19
|
-
/** Document listing a package information and all its versions. */
|
|
20
|
-
export interface NpmPackument {
|
|
21
|
-
readonly name: string;
|
|
22
|
-
readonly "dist-tags": {
|
|
23
|
-
latest: string;
|
|
24
|
-
} & Record<string, string>;
|
|
25
|
-
readonly versions: Record<string, NpmPackageVersion>;
|
|
26
|
-
readonly [key: string]: unknown;
|
|
27
|
-
}
|
|
28
1
|
export interface NpmPackageVersion {
|
|
29
2
|
readonly name: string;
|
|
30
3
|
readonly version: string;
|
|
@@ -32,9 +5,12 @@ export interface NpmPackageVersion {
|
|
|
32
5
|
readonly optionalDependencies?: Record<string, string> | undefined;
|
|
33
6
|
readonly devDependencies?: Record<string, string> | undefined;
|
|
34
7
|
readonly peerDependencies?: Record<string, string> | undefined;
|
|
35
|
-
readonly
|
|
8
|
+
readonly bundleDependencies?: false | string[] | undefined;
|
|
36
9
|
readonly dist: NpmPackageDist;
|
|
37
|
-
readonly
|
|
10
|
+
readonly bin?: Record<string, string> | null | undefined;
|
|
11
|
+
readonly _shrinkwrap?: Record<string, unknown> | null | undefined;
|
|
12
|
+
readonly directories?: {} | undefined;
|
|
13
|
+
readonly _hasShrinkwrap?: boolean | undefined;
|
|
38
14
|
readonly description?: string | undefined;
|
|
39
15
|
readonly main?: string | undefined;
|
|
40
16
|
readonly scripts?: Record<string, string> | undefined;
|
|
@@ -53,12 +29,33 @@ export interface NpmPackageVersion {
|
|
|
53
29
|
readonly bugs?: {
|
|
54
30
|
url: string;
|
|
55
31
|
} | undefined;
|
|
32
|
+
readonly cpu?: string[] | undefined;
|
|
33
|
+
readonly os?: string[] | undefined;
|
|
56
34
|
readonly _id?: string | undefined;
|
|
57
35
|
readonly _nodeVersion?: string | undefined;
|
|
58
36
|
readonly _npmVersion?: string | undefined;
|
|
59
37
|
readonly _npmUser?: NpmHuman | undefined;
|
|
60
38
|
readonly [key: string]: unknown;
|
|
61
39
|
}
|
|
40
|
+
/** Manifest of a single package version. */
|
|
41
|
+
export interface NpmManifest extends NpmPackageVersion {
|
|
42
|
+
readonly dependencies: Record<string, string>;
|
|
43
|
+
readonly optionalDependencies: Record<string, string>;
|
|
44
|
+
readonly devDependencies: Record<string, string>;
|
|
45
|
+
readonly peerDependencies: Record<string, string>;
|
|
46
|
+
readonly bundleDependencies: false | string[];
|
|
47
|
+
readonly bin: Record<string, string> | null;
|
|
48
|
+
readonly _shrinkwrap: Record<string, unknown> | null;
|
|
49
|
+
}
|
|
50
|
+
/** Document listing a package information and all its versions. */
|
|
51
|
+
export interface NpmPackument {
|
|
52
|
+
readonly name: string;
|
|
53
|
+
readonly "dist-tags": {
|
|
54
|
+
latest: string;
|
|
55
|
+
} & Record<string, string>;
|
|
56
|
+
readonly versions: Record<string, NpmPackageVersion>;
|
|
57
|
+
readonly [key: string]: unknown;
|
|
58
|
+
}
|
|
62
59
|
export interface NpmPackageDist {
|
|
63
60
|
readonly shasum: string;
|
|
64
61
|
readonly tarball: string;
|
|
@@ -71,12 +68,14 @@ export interface NpmHuman {
|
|
|
71
68
|
readonly email?: string | undefined;
|
|
72
69
|
readonly url?: string | undefined;
|
|
73
70
|
}
|
|
71
|
+
export declare class NpmRegistryError extends Error {
|
|
72
|
+
}
|
|
74
73
|
/**
|
|
75
74
|
* Returns the npm registry URL to use for fetching packages.
|
|
76
75
|
* Uses the `TYPESPEC_NPM_REGISTRY` environment variable if set,
|
|
77
76
|
* otherwise falls back to the default npm registry.
|
|
78
77
|
*/
|
|
79
78
|
export declare function getNpmRegistry(): string;
|
|
80
|
-
export declare function fetchPackageManifest(packageName: string,
|
|
81
|
-
export declare function fetchLatestPackageManifest(packageName: string): Promise<
|
|
79
|
+
export declare function fetchPackageManifest(packageName: string, versionOrRange: string): Promise<NpmPackageVersion>;
|
|
80
|
+
export declare function fetchLatestPackageManifest(packageName: string): Promise<NpmPackageVersion>;
|
|
82
81
|
//# sourceMappingURL=npm-registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"npm-registry.d.ts","sourceRoot":"","sources":["../../../src/package-manger/npm-registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"npm-registry.d.ts","sourceRoot":"","sources":["../../../src/package-manger/npm-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
// Browser-safe helpers to access the npm registry api
|
|
2
2
|
// https://github.com/npm/registry/blob/main/docs/REGISTRY-API.md#package-endpoints
|
|
3
|
+
import semverMaxSatisfying from "semver/ranges/max-satisfying.js";
|
|
4
|
+
export class NpmRegistryError extends Error {
|
|
5
|
+
}
|
|
3
6
|
const defaultRegistry = `https://registry.npmjs.org`;
|
|
4
7
|
/**
|
|
5
8
|
* Returns the npm registry URL to use for fetching packages.
|
|
@@ -9,12 +12,63 @@ const defaultRegistry = `https://registry.npmjs.org`;
|
|
|
9
12
|
export function getNpmRegistry() {
|
|
10
13
|
return (process.env["TYPESPEC_NPM_REGISTRY"] ?? defaultRegistry).replace(/\/$/, "");
|
|
11
14
|
}
|
|
12
|
-
export async function fetchPackageManifest(packageName,
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
export async function fetchPackageManifest(packageName, versionOrRange) {
|
|
16
|
+
const encodedPackageName = packageName.startsWith("@")
|
|
17
|
+
? packageName.replace("/", "%2F")
|
|
18
|
+
: packageName;
|
|
19
|
+
const url = `${getNpmRegistry()}/${encodedPackageName}`;
|
|
20
|
+
let res;
|
|
21
|
+
try {
|
|
22
|
+
res = await fetch(url, {
|
|
23
|
+
headers: { Accept: "application/vnd.npm.install-v1+json" },
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
const message = error instanceof Error ? `: ${error.message}` : "";
|
|
28
|
+
throw new NpmRegistryError(`Request to ${url} failed${message}`);
|
|
29
|
+
}
|
|
30
|
+
if (!res.ok) {
|
|
31
|
+
throw new NpmRegistryError(`Request to ${url} failed with status ${res.status}.`);
|
|
32
|
+
}
|
|
33
|
+
let response;
|
|
34
|
+
try {
|
|
35
|
+
response = await res.json();
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
throw new NpmRegistryError(`Request to ${url} returned invalid JSON.`);
|
|
39
|
+
}
|
|
40
|
+
const packument = parsePackument(url, response);
|
|
41
|
+
const version = packument["dist-tags"][versionOrRange] ??
|
|
42
|
+
semverMaxSatisfying(Object.keys(packument.versions), versionOrRange);
|
|
43
|
+
const manifest = version === null ? undefined : packument.versions[version];
|
|
44
|
+
if (manifest === undefined || !isNpmPackageVersion(manifest)) {
|
|
45
|
+
throw new NpmRegistryError(`Package "${packageName}" does not have a version or tag matching "${versionOrRange}".`);
|
|
46
|
+
}
|
|
47
|
+
return manifest;
|
|
16
48
|
}
|
|
17
49
|
export function fetchLatestPackageManifest(packageName) {
|
|
18
50
|
return fetchPackageManifest(packageName, "latest");
|
|
19
51
|
}
|
|
52
|
+
function parsePackument(url, value) {
|
|
53
|
+
if (!isRecord(value) ||
|
|
54
|
+
typeof value.name !== "string" ||
|
|
55
|
+
!isStringRecord(value["dist-tags"]) ||
|
|
56
|
+
!isRecord(value.versions)) {
|
|
57
|
+
throw new NpmRegistryError(`Request to ${url} returned an invalid package document.`);
|
|
58
|
+
}
|
|
59
|
+
return value;
|
|
60
|
+
}
|
|
61
|
+
function isNpmPackageVersion(value) {
|
|
62
|
+
return (isRecord(value) &&
|
|
63
|
+
typeof value.name === "string" &&
|
|
64
|
+
typeof value.version === "string" &&
|
|
65
|
+
isRecord(value.dist) &&
|
|
66
|
+
typeof value.dist.tarball === "string");
|
|
67
|
+
}
|
|
68
|
+
function isStringRecord(value) {
|
|
69
|
+
return isRecord(value) && Object.values(value).every((item) => typeof item === "string");
|
|
70
|
+
}
|
|
71
|
+
function isRecord(value) {
|
|
72
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
73
|
+
}
|
|
20
74
|
//# sourceMappingURL=npm-registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"npm-registry.js","sourceRoot":"","sources":["../../../src/package-manger/npm-registry.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,mFAAmF;
|
|
1
|
+
{"version":3,"file":"npm-registry.js","sourceRoot":"","sources":["../../../src/package-manger/npm-registry.ts"],"names":[],"mappings":"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"}
|