@@ -95,11 +95,12 @@ export interface CreatePackageFromNpmOptions {
95
95
*/
96
96
definitelyTyped ?: string | boolean ;
97
97
before ?: Date ;
98
+ allowDeprecated ?: boolean ;
98
99
}
99
100
100
101
export async function createPackageFromNpm (
101
102
packageSpec : string ,
102
- { definitelyTyped = true , before } : CreatePackageFromNpmOptions = { } ,
103
+ { definitelyTyped = true , ... options } : CreatePackageFromNpmOptions = { } ,
103
104
) : Promise < Package > {
104
105
const parsed = parsePackageSpec ( packageSpec ) ;
105
106
if ( parsed . status === "error" ) {
@@ -109,16 +110,16 @@ export async function createPackageFromNpm(
109
110
const typesPackageName = ts . getTypesPackageName ( packageName ) ;
110
111
const { tarballUrl, packageVersion } =
111
112
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 ) ;
114
115
const pkg = await createPackageFromTarballUrl ( tarballUrl ) ;
115
116
if ( ! definitelyTyped || pkg . containsTypes ( ) ) {
116
117
return pkg ;
117
118
}
118
119
119
120
let typesPackageData ;
120
121
if ( definitelyTyped === true ) {
121
- typesPackageData = await resolveTypesPackageForPackage ( packageName , packageVersion , before ) ;
122
+ typesPackageData = await resolveTypesPackageForPackage ( packageName , packageVersion , options ) ;
122
123
} else {
123
124
typesPackageData = await getNpmTarballUrl (
124
125
[
@@ -128,7 +129,7 @@ export async function createPackageFromNpm(
128
129
version : definitelyTyped ,
129
130
} ,
130
131
] ,
131
- before ,
132
+ options ,
132
133
) ;
133
134
}
134
135
@@ -155,7 +156,7 @@ export async function resolveImplementationPackageForTypesPackage(
155
156
parsePackageSpec ( `${ packageName } @${ major ( version ) } ` ) . data ! ,
156
157
parsePackageSpec ( `${ packageName } @latest` ) . data ! ,
157
158
] ,
158
- options ?. before ,
159
+ options ,
159
160
) ;
160
161
}
161
162
@@ -166,7 +167,7 @@ export async function resolveImplementationPackageForTypesPackage(
166
167
{ name : packageName , versionKind : "range" , version : range } ,
167
168
{ name : packageName , versionKind : "tag" , version : "latest" } ,
168
169
] ,
169
- options ?. before ,
170
+ options ,
170
171
) ;
171
172
}
172
173
@@ -176,7 +177,7 @@ export async function resolveImplementationPackageForTypesPackage(
176
177
export async function resolveTypesPackageForPackage (
177
178
packageName : string ,
178
179
packageVersion : string ,
179
- before ?: Date ,
180
+ options ?: Omit < CreatePackageFromNpmOptions , "definitelyTyped" > ,
180
181
) : Promise < ResolvedPackageId | undefined > {
181
182
const typesPackageName = ts . getTypesPackageName ( packageName ) ;
182
183
try {
@@ -198,7 +199,7 @@ export async function resolveTypesPackageForPackage(
198
199
version : "latest" ,
199
200
} ,
200
201
] ,
201
- before ,
202
+ options ,
202
203
) ;
203
204
} catch { }
204
205
}
@@ -209,7 +210,10 @@ export interface ResolvedPackageId {
209
210
tarballUrl : string ;
210
211
}
211
212
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 > {
213
217
const fetchPackument = packageSpecs . some (
214
218
( spec ) => spec . versionKind === "range" || ( spec . versionKind === "tag" && spec . version !== "latest" ) ,
215
219
) ;
@@ -231,7 +235,9 @@ async function getNpmTarballUrl(packageSpecs: readonly ParsedPackageSpec[], befo
231
235
if ( packageSpec . versionKind === "range" ) {
232
236
packageVersion = maxSatisfying (
233
237
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 ) ,
235
241
) ,
236
242
packageSpec . version ,
237
243
) ;
0 commit comments