@@ -67,13 +67,18 @@ private fun mkDirs(dirs: String): Boolean {
6767}
6868
6969// 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+ ) {
7176 var isOutDirExists = false
7277
7378 for (src in sources) {
7479 console.log(" Converting $src " )
7580 val baseSrcName = path.basename(src, TYPESCRIPT_DEFINITION_FILE_EXT )
76- val packageParts = translate(src, basePackage ? : " " )
81+ val packageParts = translate(src, basePackage ? : " " , declareModifierIsOptional )
7782
7883 if (packageParts.isEmpty()) {
7984 console.log(" Nothing was converted" )
@@ -120,7 +125,13 @@ fun translateToDir(sources: List<String>, outDir: String, basePackage: String? =
120125 }
121126}
122127
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+ )
124135
125136private fun printUsage (program : String ) {
126137 console.log("""
@@ -167,6 +178,7 @@ fun parseArguments(): CliArguments? {
167178
168179 var destination: String? = null
169180 var basePackage: String? = null
181+ var declareModifierIsOptional = false
170182
171183 while (it.hasNext()) {
172184 val arg = it.next()
@@ -206,6 +218,7 @@ fun parseArguments(): CliArguments? {
206218 console.log("""
207219 Usage: $program <options> <d.ts files>
208220 where possible options include:
221+ -Xdeclare-is-optional Treat declare keyword for top level declarations as optional
209222 -Xdiagnostic-level <level> How report diagnostics, ${DiagnosticLevel .DEFAULT } by default,
210223 where level can be any of {${DiagnosticLevel .values().joinToString()} }
211224 -Xtrack-unsupported-kinds Enable tracking unsupported node kinds and print statistic at the finish
@@ -224,6 +237,9 @@ fun parseArguments(): CliArguments? {
224237 " -Xtrack-unsupported-kinds" -> {
225238 trackUnsupportedKinds = true
226239 }
240+ " -Xdeclare-is-optional" -> {
241+ declareModifierIsOptional = true
242+ }
227243 else -> {
228244 other + = arg
229245 }
@@ -246,16 +262,16 @@ fun parseArguments(): CliArguments? {
246262 return null
247263 }
248264
249- return CliArguments (sources, destination ? : " ." , basePackage, emptyList())
265+ return CliArguments (sources, destination ? : " ." , basePackage, emptyList(), declareModifierIsOptional )
250266}
251267
252268fun main (args : Array <String >) {
253269 // do nothing when it loaded as library
254270 if (module.parent != null ) return
255271
256- val (sources, destination, basePackage, libraries) = parseArguments() ? : return
272+ val (sources, destination, basePackage, libraries, declareModifierIsOptional ) = parseArguments() ? : return
257273
258- translateToDir(sources, destination, basePackage, libraries)
274+ translateToDir(sources, destination, basePackage, libraries, declareModifierIsOptional )
259275
260276 if (trackUnsupportedKinds) {
261277 reportUnsupportedKinds()
0 commit comments