1 | import { performance } from 'perf_hooks';
|
2 | import { getPackageManifest } from 'query-registry';
|
3 | import { RegistryPackageInfo } from '../types/registry-package-info';
|
4 | import { log } from '../utils/log';
|
5 | import { tryGetPackageAPI } from './try-get-package-api';
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 |
|
32 |
|
33 |
|
34 |
|
35 |
|
36 |
|
37 |
|
38 | export async function analyzeRegistryPackage({
|
39 | name,
|
40 | version,
|
41 | registry,
|
42 | mirrors,
|
43 | ignoreLicense,
|
44 | ignoreFilePatternOptimizations,
|
45 | skipAPIExtraction = false,
|
46 | }: {
|
47 | name: string;
|
48 | version?: string;
|
49 | registry?: string;
|
50 | mirrors?: string[];
|
51 | ignoreLicense?: boolean;
|
52 | ignoreFilePatternOptimizations?: boolean;
|
53 | skipAPIExtraction?: boolean;
|
54 | }): Promise<RegistryPackageInfo> {
|
55 | const start = performance.now();
|
56 | log('analyzeRegistryPackage: analyzing package: %O', { name, version });
|
57 |
|
58 | const manifest = await getPackageManifest({
|
59 | name,
|
60 | version,
|
61 | registry,
|
62 | mirrors,
|
63 | });
|
64 | const { id } = manifest;
|
65 | log('analyzeRegistryPackage: got manifest: %O', { id, manifest });
|
66 |
|
67 | if (skipAPIExtraction) {
|
68 | log('analyzeRegistryPackage: skipping API extraction: %O', { id });
|
69 | return {
|
70 | id,
|
71 | manifest,
|
72 | api: undefined,
|
73 | elapsed: Math.round(performance.now() - start),
|
74 | createdAt: new Date().toISOString(),
|
75 | };
|
76 | }
|
77 |
|
78 | const api = await tryGetPackageAPI({
|
79 | manifest,
|
80 | ignoreLicense,
|
81 | ignoreFilePatternOptimizations,
|
82 | });
|
83 | log('analyzeRegistryPackage: extracted API: %O', { id, api });
|
84 |
|
85 | const elapsed = Math.round(performance.now() - start);
|
86 | log('analyzeRegistryPackage: performance (ms): %O', { id, elapsed });
|
87 |
|
88 | return {
|
89 | id,
|
90 | manifest,
|
91 | api,
|
92 | elapsed,
|
93 | createdAt: new Date().toISOString(),
|
94 | };
|
95 | }
|