1 | import { PackageManifest } from 'query-registry';
|
2 | import { extractPackageAPI } from '../api-extractor/extract-package-api';
|
3 | import { PackageAPI } from '../types/package-api';
|
4 | import { log } from '../utils/log';
|
5 | import { getEntryPoint } from './get-entry-point';
|
6 | import { getOptimizedFilePattern } from './get-optimized-file-pattern';
|
7 | import { getTaggedGitRepository } from './get-tagged-git-repository';
|
8 | import { hasValidLicense } from './has-valid-license';
|
9 | import { tryDownloadPackage } from './try-download-package';
|
10 |
|
11 | export async function tryGetPackageAPI({
|
12 | manifest,
|
13 | ignoreLicense,
|
14 | ignoreFilePatternOptimizations,
|
15 | }: {
|
16 | manifest: PackageManifest;
|
17 | ignoreLicense?: boolean;
|
18 | ignoreFilePatternOptimizations?: boolean;
|
19 | }): Promise<PackageAPI | undefined> {
|
20 | const {
|
21 | id,
|
22 | name,
|
23 | version,
|
24 | license,
|
25 | gitHead,
|
26 | gitRepository,
|
27 | dist: { tarball },
|
28 | source,
|
29 | types,
|
30 | typings,
|
31 | } = manifest;
|
32 |
|
33 | if (!hasValidLicense({ license, ignoreLicense })) {
|
34 | log('tryGetPackageAPI: invalid license: %O', { id, license });
|
35 | return undefined;
|
36 | }
|
37 |
|
38 | const fileSystem = await tryDownloadPackage({ tarball });
|
39 | if (!fileSystem) {
|
40 | log('tryGetPackageAPI: download failed: %O', { id, tarball });
|
41 | return undefined;
|
42 | }
|
43 |
|
44 | const entryPoint = getEntryPoint({
|
45 | fileSystem,
|
46 | name,
|
47 | source,
|
48 | types,
|
49 | typings,
|
50 | });
|
51 | if (!entryPoint) {
|
52 | log('tryGetPackageAPI: entry point not found: %O', {
|
53 | id,
|
54 | name,
|
55 | source,
|
56 | types,
|
57 | typings,
|
58 | fileSystem,
|
59 | });
|
60 | return undefined;
|
61 | }
|
62 |
|
63 | const repository = getTaggedGitRepository({
|
64 | id,
|
65 | gitRepository,
|
66 | gitHead,
|
67 | version,
|
68 | });
|
69 |
|
70 | const pattern = getOptimizedFilePattern({
|
71 | name,
|
72 | ignoreFilePatternOptimizations,
|
73 | });
|
74 |
|
75 | try {
|
76 | return extractPackageAPI({
|
77 | fileSystem,
|
78 | entryPoint,
|
79 | id,
|
80 | repository,
|
81 | pattern,
|
82 | });
|
83 | } catch (err) {
|
84 | log('tryGetPackageAPI: API extraction failed: %O', { id, err });
|
85 | return undefined;
|
86 | }
|
87 | }
|