UNPKG

1.15 kBJavaScriptView Raw
1import { getRawPackageManifest } from '../endpoints/get-raw-package-manifest.esm.js';
2
3async function getDefinitelyTypedName({
4 rawPackageManifest,
5 registry,
6 mirrors,
7 cached
8}) {
9 const {
10 name,
11 types,
12 typings
13 } = rawPackageManifest;
14 const definitelyTypedName = toDefinitelyTypedName({
15 name
16 });
17 const alreadyTyped = name === definitelyTypedName || !!types || !!typings;
18
19 if (alreadyTyped) {
20 return undefined;
21 }
22
23 let ok = false;
24
25 try {
26 const {
27 deprecated
28 } = await getRawPackageManifest({
29 name: definitelyTypedName,
30 registry,
31 mirrors,
32 cached
33 });
34 ok = deprecated === undefined;
35 } catch {}
36
37 return ok ? definitelyTypedName : undefined;
38}
39/**
40 * `toDefinitelyTypedName` returns the name of the corresponding
41 * DefinitelyTyped package (for example,
42 * `foo` => `@types/foo`,
43 * `@bar/baz` => `@types/bar__baz`).
44 */
45
46function toDefinitelyTypedName({
47 name
48}) {
49 return name.startsWith('@types/') ? name : `@types/${name.replace('@', '').replace('/', '__')}`;
50}
51
52export { getDefinitelyTypedName };
53//# sourceMappingURL=get-definitely-typed-name.esm.js.map