@@ -67,13 +67,18 @@ private fun mkDirs(dirs: String): Boolean {
67
67
}
68
68
69
69
// TODO share more code between [translateToDir] and [translateToFile]
70
- fun translateToDir (sources : List <String >, outDir : String , basePackage : String? = null, libraries : List <String > = emptyList()) {
70
+ fun translateToDir (
71
+ sources : List <String >,
72
+ outDir : String , basePackage : String? = null,
73
+ libraries : List <String > = emptyList(),
74
+ declareModifierIsOptional : Boolean = false
75
+ ) {
71
76
var isOutDirExists = false
72
77
73
78
for (src in sources) {
74
79
console.log(" Converting $src " )
75
80
val baseSrcName = path.basename(src, TYPESCRIPT_DEFINITION_FILE_EXT )
76
- val packageParts = translate(src, basePackage ? : " " )
81
+ val packageParts = translate(src, basePackage ? : " " , declareModifierIsOptional )
77
82
78
83
if (packageParts.isEmpty()) {
79
84
console.log(" Nothing was converted" )
@@ -120,7 +125,13 @@ fun translateToDir(sources: List<String>, outDir: String, basePackage: String? =
120
125
}
121
126
}
122
127
123
- data class CliArguments (val sources : List <String >, val outDir : String , val basePackage : String? , val libraries : List <String >)
128
+ data class CliArguments (
129
+ val sources : List <String >,
130
+ val outDir : String ,
131
+ val basePackage : String? ,
132
+ val libraries : List <String >,
133
+ val declareModifierIsOptional : Boolean
134
+ )
124
135
125
136
private fun printUsage (program : String ) {
126
137
console.log("""
@@ -167,6 +178,7 @@ fun parseArguments(): CliArguments? {
167
178
168
179
var destination: String? = null
169
180
var basePackage: String? = null
181
+ var declareModifierIsOptional = false
170
182
171
183
while (it.hasNext()) {
172
184
val arg = it.next()
@@ -206,6 +218,7 @@ fun parseArguments(): CliArguments? {
206
218
console.log("""
207
219
Usage: $program <options> <d.ts files>
208
220
where possible options include:
221
+ -Xdeclare-is-optional Treat declare keyword for top level declarations as optional
209
222
-Xdiagnostic-level <level> How report diagnostics, ${DiagnosticLevel .DEFAULT } by default,
210
223
where level can be any of {${DiagnosticLevel .values().joinToString()} }
211
224
-Xtrack-unsupported-kinds Enable tracking unsupported node kinds and print statistic at the finish
@@ -224,6 +237,9 @@ fun parseArguments(): CliArguments? {
224
237
" -Xtrack-unsupported-kinds" -> {
225
238
trackUnsupportedKinds = true
226
239
}
240
+ " -Xdeclare-is-optional" -> {
241
+ declareModifierIsOptional = true
242
+ }
227
243
else -> {
228
244
other + = arg
229
245
}
@@ -246,16 +262,16 @@ fun parseArguments(): CliArguments? {
246
262
return null
247
263
}
248
264
249
- return CliArguments (sources, destination ? : " ." , basePackage, emptyList())
265
+ return CliArguments (sources, destination ? : " ." , basePackage, emptyList(), declareModifierIsOptional )
250
266
}
251
267
252
268
fun main (args : Array <String >) {
253
269
// do nothing when it loaded as library
254
270
if (module.parent != null ) return
255
271
256
- val (sources, destination, basePackage, libraries) = parseArguments() ? : return
272
+ val (sources, destination, basePackage, libraries, declareModifierIsOptional ) = parseArguments() ? : return
257
273
258
- translateToDir(sources, destination, basePackage, libraries)
274
+ translateToDir(sources, destination, basePackage, libraries, declareModifierIsOptional )
259
275
260
276
if (trackUnsupportedKinds) {
261
277
reportUnsupportedKinds()
0 commit comments