@@ -95,11 +95,12 @@ export interface CreatePackageFromNpmOptions {
9595 */
9696 definitelyTyped ?: string | boolean ;
9797 before ?: Date ;
98+ allowDeprecated ?: boolean ;
9899}
99100
100101export 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(
176177export 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