UNPKG

2.3 kBPlain TextView Raw
1import { PackageManifest } from '../types/package-manifest';
2import { extractRawPackageManifest } from '../utils/extract-package-manifest';
3import { normalizeRawPackageManifest } from '../utils/normalize-raw-package-manifest';
4import { getRawPackument } from './get-raw-packument';
5
6/**
7 * `getPackageManifest` returns the manifest describing
8 * a specific version of a package.
9 *
10 * @param name - package name
11 * @param version - package version (default: `latest`)
12 * @param registry - URL of the registry (default: npm registry)
13 * @param mirrors - URLs of the registry mirrors (default: npm registry mirrors)
14 * @param cached - accept cached responses (default: `true`)
15 *
16 * @example
17 * Get the latest manifest for package `query-registry` from the npm registry:
18 *
19 * ```typescript
20 * import { getPackageManifest } from 'query-registry';
21 *
22 * (async () => {
23 * const manifest = await getPackageManifest({ name: 'query-registry' });
24 *
25 * // Output: 'query-registry'
26 * console.log(manifest.name);
27 * })();
28 * ```
29 *
30 * @example
31 * Get the manifest for package `query-registry@1.0.0` from the npm registry:
32 *
33 * ```typescript
34 * import { getPackageManifest } from 'query-registry';
35 *
36 * (async () => {
37 * const manifest = await getPackageManifest({ name: 'query-registry', version: '1.0.0' });
38 *
39 * // Output: 'query-registry'
40 * console.log(manifest.name);
41 *
42 * // Output: '1.0.0'
43 * console.log(manifest.version);
44 * })();
45 * ```
46 *
47 * @see {@link PackageManifest}
48 * @see {@link RawPackageManifest}
49 * @see {@link npmRegistry}
50 * @see {@link npmRegistryMirrors}
51 */
52export async function getPackageManifest({
53 name,
54 version,
55 registry,
56 mirrors,
57 cached,
58}: {
59 name: string;
60 version?: string;
61 registry?: string;
62 mirrors?: string[];
63 cached?: boolean;
64}): Promise<PackageManifest> {
65 const rawPackument = await getRawPackument({
66 name,
67 registry,
68 mirrors,
69 cached,
70 });
71
72 const rawPackageManifest = extractRawPackageManifest({
73 rawPackument,
74 version,
75 });
76
77 const packageManifest = await normalizeRawPackageManifest({
78 rawPackageManifest,
79 rawPackument,
80 registry,
81 mirrors,
82 cached,
83 });
84
85 return packageManifest;
86}