Skip to content

Commit cb096ed

Browse files
committed
Add allowDeprecated to createPackageFromNpm
1 parent 7307b41 commit cb096ed

File tree

1 file changed

+17
-11
lines changed

1 file changed

+17
-11
lines changed

packages/core/src/createPackage.ts

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -95,11 +95,12 @@ export interface CreatePackageFromNpmOptions {
9595
*/
9696
definitelyTyped?: string | boolean;
9797
before?: Date;
98+
allowDeprecated?: boolean;
9899
}
99100

100101
export async function createPackageFromNpm(
101102
packageSpec: string,
102-
{ definitelyTyped = true, before }: CreatePackageFromNpmOptions = {},
103+
{ definitelyTyped = true, ...options }: CreatePackageFromNpmOptions = {},
103104
): Promise<Package> {
104105
const parsed = parsePackageSpec(packageSpec);
105106
if (parsed.status === "error") {
@@ -109,16 +110,16 @@ export async function createPackageFromNpm(
109110
const typesPackageName = ts.getTypesPackageName(packageName);
110111
const { tarballUrl, packageVersion } =
111112
parsed.data.versionKind === "none" && typeof definitelyTyped === "string"
112-
? await resolveImplementationPackageForTypesPackage(typesPackageName, definitelyTyped, { before })
113-
: await getNpmTarballUrl([parsed.data], before);
113+
? await resolveImplementationPackageForTypesPackage(typesPackageName, definitelyTyped, options)
114+
: await getNpmTarballUrl([parsed.data], options);
114115
const pkg = await createPackageFromTarballUrl(tarballUrl);
115116
if (!definitelyTyped || pkg.containsTypes()) {
116117
return pkg;
117118
}
118119

119120
let typesPackageData;
120121
if (definitelyTyped === true) {
121-
typesPackageData = await resolveTypesPackageForPackage(packageName, packageVersion, before);
122+
typesPackageData = await resolveTypesPackageForPackage(packageName, packageVersion, options);
122123
} else {
123124
typesPackageData = await getNpmTarballUrl(
124125
[
@@ -128,7 +129,7 @@ export async function createPackageFromNpm(
128129
version: definitelyTyped,
129130
},
130131
],
131-
before,
132+
options,
132133
);
133134
}
134135

@@ -155,7 +156,7 @@ export async function resolveImplementationPackageForTypesPackage(
155156
parsePackageSpec(`${packageName}@${major(version)}`).data!,
156157
parsePackageSpec(`${packageName}@latest`).data!,
157158
],
158-
options?.before,
159+
options,
159160
);
160161
}
161162

@@ -166,7 +167,7 @@ export async function resolveImplementationPackageForTypesPackage(
166167
{ name: packageName, versionKind: "range", version: range },
167168
{ name: packageName, versionKind: "tag", version: "latest" },
168169
],
169-
options?.before,
170+
options,
170171
);
171172
}
172173

@@ -176,7 +177,7 @@ export async function resolveImplementationPackageForTypesPackage(
176177
export async function resolveTypesPackageForPackage(
177178
packageName: string,
178179
packageVersion: string,
179-
before?: Date,
180+
options?: Omit<CreatePackageFromNpmOptions, "definitelyTyped">,
180181
): Promise<ResolvedPackageId | undefined> {
181182
const typesPackageName = ts.getTypesPackageName(packageName);
182183
try {
@@ -198,7 +199,7 @@ export async function resolveTypesPackageForPackage(
198199
version: "latest",
199200
},
200201
],
201-
before,
202+
options,
202203
);
203204
} catch {}
204205
}
@@ -209,7 +210,10 @@ export interface ResolvedPackageId {
209210
tarballUrl: string;
210211
}
211212

212-
async function getNpmTarballUrl(packageSpecs: readonly ParsedPackageSpec[], before?: Date): Promise<ResolvedPackageId> {
213+
async function getNpmTarballUrl(
214+
packageSpecs: readonly ParsedPackageSpec[],
215+
{ before, allowDeprecated }: Omit<CreatePackageFromNpmOptions, "definitelyTyped"> = {},
216+
): Promise<ResolvedPackageId> {
213217
const fetchPackument = packageSpecs.some(
214218
(spec) => spec.versionKind === "range" || (spec.versionKind === "tag" && spec.version !== "latest"),
215219
);
@@ -231,7 +235,9 @@ async function getNpmTarballUrl(packageSpecs: readonly ParsedPackageSpec[], befo
231235
if (packageSpec.versionKind === "range") {
232236
packageVersion = maxSatisfying(
233237
Object.keys(doc.versions).filter(
234-
(v) => !doc.versions[v].deprecated && (!before || !doc.time || new Date(doc.time[v]) <= before),
238+
(v) =>
239+
(allowDeprecated || !doc.versions[v].deprecated) &&
240+
(!before || !doc.time || new Date(doc.time[v]) <= before),
235241
),
236242
packageSpec.version,
237243
);

0 commit comments

Comments
 (0)