@idlizer/core 2.1.10-arktscgen-4 → 2.1.10-arktscgen-6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/build/lib/src/Language.d.ts +0 -1
  2. package/build/lib/src/Language.js +1 -3
  3. package/build/lib/src/LanguageWriters/ArgConvertors.d.ts +18 -7
  4. package/build/lib/src/LanguageWriters/ArgConvertors.js +95 -103
  5. package/build/lib/src/LanguageWriters/LanguageWriter.d.ts +13 -7
  6. package/build/lib/src/LanguageWriters/LanguageWriter.js +10 -2
  7. package/build/lib/src/LanguageWriters/common.d.ts +1 -0
  8. package/build/lib/src/LanguageWriters/common.js +2 -1
  9. package/build/lib/src/LanguageWriters/convertors/CJConvertors.d.ts +0 -1
  10. package/build/lib/src/LanguageWriters/convertors/CJConvertors.js +1 -3
  11. package/build/lib/src/LanguageWriters/convertors/CppConvertors.d.ts +14 -8
  12. package/build/lib/src/LanguageWriters/convertors/CppConvertors.js +88 -36
  13. package/build/lib/src/LanguageWriters/convertors/ETSConvertors.d.ts +1 -0
  14. package/build/lib/src/LanguageWriters/convertors/ETSConvertors.js +10 -8
  15. package/build/lib/src/LanguageWriters/convertors/InteropConvertors.js +1 -1
  16. package/build/lib/src/LanguageWriters/convertors/KotlinConvertors.js +9 -5
  17. package/build/lib/src/LanguageWriters/convertors/TSConvertors.d.ts +4 -4
  18. package/build/lib/src/LanguageWriters/convertors/TSConvertors.js +98 -44
  19. package/build/lib/src/LanguageWriters/index.d.ts +5 -4
  20. package/build/lib/src/LanguageWriters/index.js +8 -15
  21. package/build/lib/src/LanguageWriters/nameConvertor.d.ts +2 -0
  22. package/build/lib/src/LanguageWriters/nameConvertor.js +11 -0
  23. package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.d.ts +2 -0
  24. package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.js +13 -1
  25. package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.d.ts +2 -0
  26. package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.js +8 -2
  27. package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.d.ts +2 -10
  28. package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.js +52 -92
  29. package/build/lib/src/LanguageWriters/writers/KotlinLanguageWriter.d.ts +8 -0
  30. package/build/lib/src/LanguageWriters/writers/KotlinLanguageWriter.js +75 -27
  31. package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.d.ts +5 -0
  32. package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +58 -18
  33. package/build/lib/src/LibraryInterface.d.ts +0 -1
  34. package/build/lib/src/config.d.ts +2 -1461
  35. package/build/lib/src/config.js +16 -32
  36. package/build/lib/src/configMerge.d.ts +3 -0
  37. package/build/lib/src/configMerge.js +63 -0
  38. package/build/lib/src/diagnostictypes.d.ts +1 -5
  39. package/build/lib/src/diagnostictypes.js +1 -27
  40. package/build/lib/src/from-idl/DtsPrinter.js +13 -6
  41. package/build/lib/src/from-idl/IDLLinter.d.ts +3 -4
  42. package/build/lib/src/from-idl/IDLLinter.js +30 -32
  43. package/build/lib/src/from-idl/deserialize.d.ts +3 -4
  44. package/build/lib/src/from-idl/deserialize.js +30 -642
  45. package/build/lib/src/from-idl/parser.d.ts +20 -2
  46. package/build/lib/src/from-idl/parser.js +97 -29
  47. package/build/lib/src/idl/builders.d.ts +43 -0
  48. package/build/lib/src/idl/builders.js +135 -0
  49. package/build/lib/src/idl/discriminators.d.ts +53 -0
  50. package/build/lib/src/idl/discriminators.js +232 -0
  51. package/build/lib/src/idl/dump.d.ts +48 -0
  52. package/build/lib/src/idl/dump.js +327 -0
  53. package/build/lib/src/idl/index.d.ts +9 -0
  54. package/build/lib/src/idl/index.js +23 -0
  55. package/build/lib/src/idl/keywords.d.ts +2 -0
  56. package/build/lib/src/{options.js → idl/keywords.js} +7 -3
  57. package/build/lib/src/idl/node.d.ts +233 -0
  58. package/build/lib/src/idl/node.js +103 -0
  59. package/build/lib/src/idl/stdlib.d.ts +34 -0
  60. package/build/lib/src/idl/stdlib.js +54 -0
  61. package/build/lib/src/idl/utils.d.ts +44 -0
  62. package/build/lib/src/idl/utils.js +215 -0
  63. package/build/lib/src/idl/visitors.d.ts +15 -0
  64. package/build/lib/src/idl/visitors.js +593 -0
  65. package/build/lib/src/index.d.ts +5 -6
  66. package/build/lib/src/index.js +6 -7
  67. package/build/lib/src/inheritance.d.ts +0 -2
  68. package/build/lib/src/inheritance.js +0 -17
  69. package/build/lib/src/inputPaths.d.ts +11 -0
  70. package/build/lib/src/inputPaths.js +81 -0
  71. package/build/lib/src/languageSpecificKeywords.d.ts +0 -1
  72. package/build/lib/src/languageSpecificKeywords.js +0 -5
  73. package/build/lib/src/peer-generation/ConflictingDeclarations.d.ts +6 -0
  74. package/build/lib/src/peer-generation/ConflictingDeclarations.js +43 -0
  75. package/build/lib/src/peer-generation/LayoutManager.d.ts +3 -1
  76. package/build/lib/src/peer-generation/LayoutManager.js +15 -0
  77. package/build/lib/src/peer-generation/Materialized.d.ts +8 -0
  78. package/build/lib/src/peer-generation/Materialized.js +26 -1
  79. package/build/lib/src/peer-generation/PeerLibrary.d.ts +10 -18
  80. package/build/lib/src/peer-generation/PeerLibrary.js +63 -227
  81. package/build/lib/src/peer-generation/ReferenceResolver.d.ts +6 -1
  82. package/build/lib/src/peer-generation/ReferenceResolver.js +93 -2
  83. package/build/lib/src/peer-generation/idl/IdlNameConvertor.d.ts +6 -0
  84. package/build/lib/src/peer-generation/idl/IdlNameConvertor.js +15 -3
  85. package/build/lib/src/peer-generation/idl/common.d.ts +6 -2
  86. package/build/lib/src/peer-generation/idl/common.js +7 -7
  87. package/build/lib/src/peer-generation/isMaterialized.js +2 -3
  88. package/build/lib/src/peer-generation/modules.js +2 -0
  89. package/build/lib/src/peer-generation/toDeclaration.d.ts +4 -0
  90. package/build/lib/src/peer-generation/toDeclaration.js +53 -0
  91. package/build/lib/src/peer-generation/unions.d.ts +1 -1
  92. package/build/lib/src/peer-generation/unions.js +15 -7
  93. package/build/lib/src/resolveNamedNode.d.ts +1 -0
  94. package/build/lib/src/resolveNamedNode.js +7 -0
  95. package/build/lib/src/transformers/FqnTransformer.d.ts +1 -1
  96. package/build/lib/src/transformers/FqnTransformer.js +20 -12
  97. package/build/lib/src/transformers/GenericTransformer.d.ts +4 -3
  98. package/build/lib/src/transformers/GenericTransformer.js +252 -158
  99. package/build/lib/src/transformers/IdlTransformer.d.ts +6 -0
  100. package/build/lib/src/transformers/IdlTransformer.js +7 -0
  101. package/build/lib/src/transformers/NullTransformer.d.ts +1 -1
  102. package/build/lib/src/transformers/NullTransformer.js +27 -21
  103. package/build/lib/src/transformers/OnSerializeTransformer.d.ts +1 -1
  104. package/build/lib/src/transformers/OnSerializeTransformer.js +28 -13
  105. package/build/lib/src/util.d.ts +9 -39
  106. package/build/lib/src/util.js +65 -369
  107. package/package.json +44 -49
  108. package/build/lib/src/LanguageWriters/convertors/JavaConvertors.d.ts +0 -37
  109. package/build/lib/src/LanguageWriters/convertors/JavaConvertors.js +0 -210
  110. package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.d.ts +0 -83
  111. package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.js +0 -295
  112. package/build/lib/src/from-idl/webidl2-utils.d.ts +0 -21
  113. package/build/lib/src/from-idl/webidl2-utils.js +0 -87
  114. package/build/lib/src/idl.d.ts +0 -439
  115. package/build/lib/src/idl.js +0 -1367
  116. package/build/lib/src/idlize.d.ts +0 -25
  117. package/build/lib/src/idlize.js +0 -198
  118. package/build/lib/src/options.d.ts +0 -13
  119. package/build/lib/src/peer-generation/BuilderClass.d.ts +0 -20
  120. package/build/lib/src/peer-generation/BuilderClass.js +0 -68
  121. package/webidl2.js/dist/webidl2.js +0 -4622
  122. package/webidl2.js/package.json +0 -55
@@ -15,10 +15,10 @@
15
15
  import * as idl from '../../idl';
16
16
  import { Language } from '../../Language';
17
17
  import { IndentedPrinter } from "../../IndentedPrinter";
18
- import { AssignStatement, BlockStatement, DelegationType, ExpressionStatement, FieldModifier, LambdaExpression, LanguageWriter, Method, MethodModifier, MethodSignature, ReturnStatement } from "../LanguageWriter";
18
+ import { AssignStatement, BlockStatement, DelegationType, ExpressionStatement, FieldModifier, LambdaExpression, LanguageWriter, Method, MethodModifier, MethodSignature, ReturnStatement, } from "../LanguageWriter";
19
19
  import { RuntimeType } from "../common";
20
20
  import { isDefined } from "../../util";
21
- import { removePoints } from '../convertors/CJConvertors';
21
+ import { removePoints } from '../../util';
22
22
  export class KotlinLambdaReturnStatement {
23
23
  constructor(expression) {
24
24
  this.expression = expression;
@@ -87,7 +87,7 @@ export class KotlinEnumWithGetter {
87
87
  const enumType = idl.createReferenceType(this.enumEntity);
88
88
  writer.makeStaticBlock(() => {
89
89
  members.forEach(it => {
90
- writer.writeFieldDeclaration(it.name, idl.IDLAnyType, [FieldModifier.PUBLIC, FieldModifier.STATIC, FieldModifier.FINAL], false, writer.makeString(`${mangledName}(${it.stringId ? `\"${it.stringId}\"` : it.numberId})`));
90
+ writer.writeFieldDeclaration(it.name, enumType, [FieldModifier.PUBLIC, FieldModifier.STATIC, FieldModifier.FINAL], false, writer.makeString(`${mangledName}(${it.stringId ? `\"${it.stringId}\"` : it.numberId})`));
91
91
  });
92
92
  });
93
93
  const value = 'value';
@@ -230,6 +230,10 @@ export class KotlinLanguageWriter extends LanguageWriter {
230
230
  }
231
231
  return this.typeConvertor.convert(type);
232
232
  }
233
+ get interopModule() {
234
+ return "koalaui.interop";
235
+ }
236
+ maybeSemicolon() { return ""; }
233
237
  writeClass(name, op, superClass, interfaces, generics, isDeclared, isAbstract) {
234
238
  let extendsClause = superClass ? `${superClass}` : undefined;
235
239
  let implementsClause = interfaces ? `${interfaces.join(' , ')}` : undefined;
@@ -293,32 +297,75 @@ export class KotlinLanguageWriter extends LanguageWriter {
293
297
  let name = method.name;
294
298
  let signature = method.signature;
295
299
  this.writeMethodImplementation(new Method(name, signature, [MethodModifier.STATIC]), writer => {
300
+ const pins = signature.args.flatMap((type, index) => this.pinArrayArgument(signature.argName(index), type));
301
+ const unpins = signature.args.flatMap((type, index) => this.unpinArrayArgument(signature.argName(index), type));
302
+ pins.filter(it => !!it).forEach(it => this.writeStatement(it));
296
303
  const args = signature.args.map((type, index) => this.convertInteropArgument(signature.argName(index), type));
304
+ this.printForeignApiOptIn();
297
305
  const interopCallExpression = this.makeFunctionCall(`kotlin${name}`, args);
298
306
  if (signature.returnType === idl.IDLVoidType) {
299
307
  this.writeExpressionStatement(interopCallExpression);
308
+ unpins.filter(it => !!it).forEach(it => this.writeStatement(it));
300
309
  return;
301
310
  }
302
311
  const retval = "retval";
303
312
  this.writeStatement(this.makeAssign(retval, undefined, interopCallExpression));
313
+ unpins.filter(it => !!it).forEach(it => this.writeStatement(it));
314
+ this.printForeignApiOptIn();
304
315
  this.writeStatement(this.makeReturn(this.convertInteropReturnValue(retval, signature.returnType)));
305
316
  });
306
317
  }
318
+ printForeignApiOptIn() {
319
+ this.writeStatement(this.foreignApiOptIn);
320
+ }
321
+ get foreignApiOptIn() {
322
+ return new ExpressionStatement(this.makeString("@OptIn(ExperimentalForeignApi::class)"));
323
+ }
324
+ isPrimitiveArray(type) {
325
+ if (!idl.IDLContainerUtils.isSequence(type)) {
326
+ return false;
327
+ }
328
+ const elementType = type.elementType[0];
329
+ const allowedTypes = [idl.IDLU8Type, idl.IDLI32Type, idl.IDLF32Type];
330
+ return allowedTypes.includes(elementType);
331
+ }
332
+ pinArrayArgument(varName, type) {
333
+ if (this.isPrimitiveArray(type)) {
334
+ const pinCall = this.makeMethodCall(varName, "pin", []);
335
+ const assign = this.makeAssign(`${varName}Pinned`, undefined, pinCall, true, true);
336
+ return [this.foreignApiOptIn, assign];
337
+ }
338
+ return [];
339
+ }
340
+ unpinArrayArgument(varName, type) {
341
+ if (this.isPrimitiveArray(type)) {
342
+ const call = new ExpressionStatement(this.makeMethodCall(`${varName}Pinned`, "unpin", []));
343
+ return [this.foreignApiOptIn, call];
344
+ }
345
+ return [];
346
+ }
307
347
  convertInteropArgument(varName, type) {
308
348
  const realInteropType = this.getNodeName(type);
309
349
  let expr;
310
350
  switch (realInteropType) {
351
+ case "UByteArray":
352
+ case "IntArray":
353
+ case "FloatArray":
354
+ expr = `${varName}Pinned.addressOf(0)`;
355
+ break;
311
356
  case "KPointer":
357
+ case "KNativePointer":
312
358
  case "KSerializerBuffer":
313
359
  expr = `${varName}.toCPointer<CPointed>()!!`;
314
360
  break;
361
+ case "BigInteger":
315
362
  case "KInt":
316
363
  case "KLong":
317
364
  case "KFloat":
318
365
  case "KDouble":
366
+ case "String":
319
367
  case "KStringPtr":
320
368
  case "KBoolean":
321
- case "Float64":
322
369
  case "Float":
323
370
  case "Double":
324
371
  case "UInt":
@@ -333,12 +380,13 @@ export class KotlinLanguageWriter extends LanguageWriter {
333
380
  const realInteropType = this.getNodeName(type);
334
381
  let expr;
335
382
  switch (realInteropType) {
383
+ case "KNativePointer":
336
384
  case "KPointer":
337
385
  expr = `${varName}.toLong()`;
338
386
  break;
339
387
  case "KInt":
340
388
  case "KLong":
341
- case "Float64":
389
+ case "BigInteger":
342
390
  case "Float":
343
391
  case "Double":
344
392
  case "Long":
@@ -389,30 +437,21 @@ export class KotlinLanguageWriter extends LanguageWriter {
389
437
  writeProperty(propName, propType, modifiers, getter, setter, initExpr) {
390
438
  let containerName = propName.concat("_container");
391
439
  let truePropName = this.escapeKeyword(propName);
392
- if (getter) {
393
- if (!getter.op) {
394
- this.print(`private var ${containerName}: ${this.getNodeName(propType)}`);
395
- }
396
- }
397
- let isMutable = !modifiers.includes(FieldModifier.READONLY);
440
+ const isReadonly = modifiers.includes(FieldModifier.READONLY);
441
+ const isGetter = modifiers.includes(FieldModifier.GET);
442
+ const isSetter = modifiers.includes(FieldModifier.SET);
443
+ const isImmutable = isReadonly || (isGetter && !isSetter);
398
444
  let isOverride = modifiers.includes(FieldModifier.OVERRIDE);
399
445
  let initializer = initExpr ? ` = ${initExpr.asString()}` : "";
400
- this.print(`${isOverride ? 'override ' : ''}public ${isMutable ? "var " : "val "}${truePropName}: ${this.getNodeName(propType)}${initializer}`);
446
+ this.print(`${isOverride ? 'override ' : ''}public ${isImmutable ? "val " : "var "}${truePropName}: ${this.getNodeName(propType)}${initializer}`);
401
447
  if (getter) {
402
448
  this.pushIndent();
403
449
  this.writeGetterImplementation(getter.method, getter.op);
404
- if (isMutable) {
405
- if (setter) {
406
- this.writeSetterImplementation(setter.method, setter ? setter.op : (writer) => { this.print(`${containerName} = ${truePropName}`); });
407
- }
408
- else {
409
- this.print(`set(${truePropName}) {`);
410
- this.pushIndent();
411
- this.print(`${containerName} = ${truePropName}`);
412
- this.popIndent();
413
- this.print(`}`);
414
- }
415
- }
450
+ this.popIndent();
451
+ }
452
+ if (setter) {
453
+ this.pushIndent();
454
+ this.writeSetterImplementation(setter.method, setter ? setter.op : (writer) => { writer.print(`${containerName} = ${truePropName}`); });
416
455
  this.popIndent();
417
456
  }
418
457
  }
@@ -434,7 +473,16 @@ export class KotlinLanguageWriter extends LanguageWriter {
434
473
  throw new Error("Not implemented");
435
474
  }
436
475
  writeConstant(constName, constType, constVal) {
437
- throw new Error("Not implemented");
476
+ this.print(`val ${constName} = ${constVal}`);
477
+ }
478
+ writeImports(moduleName, importedFeatures, aliases) {
479
+ if (importedFeatures.length !== aliases.length) {
480
+ throw new Error(`Inconsistent imports from ${moduleName}`);
481
+ }
482
+ for (let i = 0; i < importedFeatures.length; i++) {
483
+ const alias = aliases[i] ? ` as ${aliases[i]}` : ``;
484
+ this.writeExpressionStatement(this.makeString(`import ${moduleName}.${importedFeatures[i]}` + alias));
485
+ }
438
486
  }
439
487
  makeNull() {
440
488
  return this.makeString('null');
@@ -529,14 +577,14 @@ export class KotlinLanguageWriter extends LanguageWriter {
529
577
  }
530
578
  else {
531
579
  const op = equals ? "==" : "!=";
532
- return this.makeNaryOp(op, [this.makeRuntimeType(type), this.makeString(`${typeVarName}.toInt()`)]);
580
+ return this.makeNaryOp(op, [this.makeRuntimeType(type), this.makeString(`${typeVarName}`)]);
533
581
  }
534
582
  }
535
583
  getTagType() {
536
584
  return idl.createReferenceType("Tag");
537
585
  }
538
586
  getRuntimeType() {
539
- return idl.IDLNumberType;
587
+ return idl.IDLI8Type;
540
588
  }
541
589
  makeTupleAssign(receiver, fields) {
542
590
  throw new Error("Not implemented");
@@ -37,6 +37,7 @@ export declare class TSLanguageWriter extends LanguageWriter {
37
37
  resolver?: ReferenceResolver;
38
38
  }): LanguageWriter;
39
39
  getNodeName(type: idl.IDLNode): string;
40
+ get interopModule(): string;
40
41
  writeClass(name: string, op: (writer: this) => void, superClass?: string, interfaces?: string[], generics?: string[], isDeclared?: boolean, isAbstract?: boolean): void;
41
42
  writeInterface(name: string, op: (writer: this) => void, superInterfaces?: string[], generics?: string[], isDeclared?: boolean): void;
42
43
  writeFunctionDeclaration(name: string, signature: MethodSignature, generics?: string[]): void;
@@ -65,6 +66,7 @@ export declare class TSLanguageWriter extends LanguageWriter {
65
66
  }, initExpr?: LanguageExpression): void;
66
67
  writeTypeDeclaration(decl: idl.IDLTypedef): void;
67
68
  writeConstant(constName: string, constType: idl.IDLType, constVal?: string): void;
69
+ writeImports(moduleName: string, importedFeatures: string[], aliases: string[]): void;
68
70
  private writeDeclaration;
69
71
  makeNull(type?: idl.IDLOptionalType): LanguageExpression;
70
72
  makeAssign(variableName: string, type: idl.IDLType | undefined, expr: LanguageExpression | undefined, isDeclared?: boolean, isConst?: boolean, options?: MakeAssignOptions): LanguageStatement;
@@ -76,6 +78,7 @@ export declare class TSLanguageWriter extends LanguageWriter {
76
78
  makeMapForEach(map: string, key: string, value: string, body: LanguageStatement[]): LanguageStatement;
77
79
  writePrintLog(message: string): void;
78
80
  makeCast(value: LanguageExpression, node: idl.IDLNode, options?: MakeCastOptions): LanguageExpression;
81
+ instanceOf(value: string, type: idl.IDLType): LanguageExpression;
79
82
  typeInstanceOf(type: idl.IDLEntry, value: string, members?: string[]): LanguageExpression;
80
83
  getObjectAccessor(convertor: ArgConvertor, value: string, args?: ObjectArgs): string;
81
84
  makeUndefined(): LanguageExpression;
@@ -98,5 +101,7 @@ export declare class TSLanguageWriter extends LanguageWriter {
98
101
  makeCallIsObject(value: string): LanguageExpression;
99
102
  escapeKeyword(keyword: string): string;
100
103
  discriminate(value: string, index: number, type: idl.IDLType, runtimeTypes: RuntimeType[]): string;
104
+ private writingClassBody;
105
+ classOp(op: () => void): void;
101
106
  }
102
107
  //# sourceMappingURL=TsLanguageWriter.d.ts.map
@@ -16,7 +16,7 @@ import * as idl from '../../idl';
16
16
  import { isOptionalType } from '../../idl';
17
17
  import { Language } from '../../Language';
18
18
  import { IndentedPrinter } from "../../IndentedPrinter";
19
- import { AssignStatement, BlockStatement, DelegationType, ExpressionStatement, FieldModifier, IfStatement, LambdaExpression, LanguageWriter, Method, MethodModifier, MethodSignature, NamedMethodSignature, NaryOpExpression, ReturnStatement, StringExpression } from "../LanguageWriter";
19
+ import { ACCESS_MODIFIERS_SET, AssignStatement, BlockStatement, DelegationType, ExpressionStatement, FieldModifier, IfStatement, LambdaExpression, LanguageWriter, Method, MethodModifier, MethodSignature, NamedMethodSignature, NaryOpExpression, ReturnStatement, StringExpression } from "../LanguageWriter";
20
20
  import { RuntimeType } from "../common";
21
21
  import { rightmostIndexOf } from "../../util";
22
22
  import { TSKeywords } from '../../languageSpecificKeywords';
@@ -67,7 +67,7 @@ class TSThrowErrorStatement {
67
67
  this.message = message;
68
68
  }
69
69
  write(writer) {
70
- writer.print(`throw new Error("${this.message}")`);
70
+ writer.print(`throw new Error('${this.message}')`);
71
71
  }
72
72
  }
73
73
  export class TSReturnStatement extends ReturnStatement {
@@ -121,6 +121,7 @@ export class TsTupleAllocStatement {
121
121
  export class TSLanguageWriter extends LanguageWriter {
122
122
  constructor(printer, resolver, typeConvertor, language = Language.TS) {
123
123
  super(printer, resolver, language);
124
+ this.writingClassBody = false;
124
125
  this.typeConvertor = typeConvertor;
125
126
  }
126
127
  maybeSemicolon() { return ""; }
@@ -148,6 +149,9 @@ export class TSLanguageWriter extends LanguageWriter {
148
149
  }
149
150
  return this.typeConvertor.convert(type);
150
151
  }
152
+ get interopModule() {
153
+ return "@koalaui/interop";
154
+ }
151
155
  writeClass(name, op, superClass, interfaces, generics, isDeclared, isAbstract) {
152
156
  let extendsClause = superClass ? ` extends ${superClass}` : '';
153
157
  let implementsClause = interfaces ? ` implements ${interfaces.join(",")}` : '';
@@ -156,7 +160,7 @@ export class TSLanguageWriter extends LanguageWriter {
156
160
  let abstractClause = isAbstract ? ` abstract` : '';
157
161
  this.printer.print(`export${declaredClause}${abstractClause} class ${name}${genericsClause}${extendsClause}${implementsClause} {`);
158
162
  this.pushIndent();
159
- op(this);
163
+ this.classOp(() => op(this));
160
164
  this.popIndent();
161
165
  this.printer.print(`}`);
162
166
  }
@@ -198,7 +202,7 @@ export class TSLanguageWriter extends LanguageWriter {
198
202
  value = member.alias;
199
203
  }
200
204
  else {
201
- value = `${member.stringId != undefined ? `"${member.stringId}"` : `${member.numberId}`}`;
205
+ value = `${member.stringId != undefined ? `'${member.stringId}'` : `${member.numberId}`}`;
202
206
  }
203
207
  const maybeComma = index < members.length - 1 ? "," : "";
204
208
  this.printer.print(`${member.name} = ${value}${maybeComma}`);
@@ -207,11 +211,27 @@ export class TSLanguageWriter extends LanguageWriter {
207
211
  this.printer.print("}");
208
212
  }
209
213
  writeFieldDeclaration(name, type, modifiers, optional, initExpr) {
210
- const init = initExpr != undefined ? ` = ${initExpr.asString()}` : ``;
214
+ var _a;
215
+ if (this.writingClassBody && !(modifiers === null || modifiers === void 0 ? void 0 : modifiers.some(m => ACCESS_MODIFIERS_SET.has(m)))) {
216
+ modifiers = (_a = modifiers === null || modifiers === void 0 ? void 0 : modifiers.slice()) !== null && _a !== void 0 ? _a : [];
217
+ modifiers.unshift(FieldModifier.PUBLIC);
218
+ }
211
219
  let prefix = this.makeFieldModifiersList(modifiers);
212
220
  if (prefix)
213
221
  prefix += " ";
214
- this.printer.print(`${prefix}${name}${optional ? "?" : ""}: ${this.getNodeName(type)}${init}`);
222
+ const typeName = this.getNodeName(type);
223
+ const isGetter = modifiers === null || modifiers === void 0 ? void 0 : modifiers.includes(FieldModifier.GET);
224
+ const isSetter = modifiers === null || modifiers === void 0 ? void 0 : modifiers.includes(FieldModifier.SET);
225
+ if (isGetter) {
226
+ this.printer.print(`${prefix}get ${name}(): ${typeName}`);
227
+ }
228
+ if (isSetter) {
229
+ this.printer.print(`${prefix}set ${name}(value: ${typeName})`);
230
+ }
231
+ if (isGetter || isSetter)
232
+ return;
233
+ const init = initExpr != undefined ? ` = ${initExpr.asString()}` : ``;
234
+ this.printer.print(`${prefix}${name}${optional ? "?" : ""}: ${typeName}${init}`);
215
235
  }
216
236
  writeNativeMethodDeclaration(method) {
217
237
  let name = method.name;
@@ -248,7 +268,6 @@ export class TSLanguageWriter extends LanguageWriter {
248
268
  }
249
269
  writeProperty(propName, propType, modifiers, getter, setter, initExpr) {
250
270
  let isStatic = modifiers.includes(FieldModifier.STATIC);
251
- let isMutable = !modifiers.includes(FieldModifier.READONLY);
252
271
  let containerName = propName.concat("_container");
253
272
  if (getter) {
254
273
  if (!getter.op) {
@@ -258,17 +277,17 @@ export class TSLanguageWriter extends LanguageWriter {
258
277
  (writer) => {
259
278
  writer.print(`return ${containerName}`);
260
279
  });
261
- if (isMutable) {
262
- const setSignature = new NamedMethodSignature(idl.IDLVoidType, [propType], [propName]);
263
- this.writeSetterImplementation(new Method(propName, setSignature, isStatic ? [MethodModifier.STATIC] : []), setter ? setter.op :
264
- (writer) => {
265
- writer.print(`${containerName} = ${propName}`);
266
- });
267
- }
268
280
  }
269
- else {
270
- this.writeFieldDeclaration(propName, propType, modifiers, idl.isOptionalType(propType), initExpr);
281
+ if (setter) {
282
+ const setSignature = new NamedMethodSignature(idl.IDLVoidType, [propType], [propName]);
283
+ this.writeSetterImplementation(new Method(propName, setSignature, isStatic ? [MethodModifier.STATIC] : []), setter ? setter.op :
284
+ (writer) => {
285
+ writer.print(`${containerName} = ${propName}`);
286
+ });
271
287
  }
288
+ if (getter || setter)
289
+ return;
290
+ this.writeFieldDeclaration(propName, propType, modifiers, idl.isOptionalType(propType), initExpr);
272
291
  }
273
292
  writeTypeDeclaration(decl) {
274
293
  var _a;
@@ -279,6 +298,16 @@ export class TSLanguageWriter extends LanguageWriter {
279
298
  writeConstant(constName, constType, constVal) {
280
299
  this.print(`export const ${constName}: ${this.getNodeName(constType)}${constVal ? ' = ' + constVal : ''}`);
281
300
  }
301
+ writeImports(moduleName, importedFeatures, aliases) {
302
+ if (importedFeatures.length !== aliases.length) {
303
+ throw new Error(`Inconsistent imports from ${moduleName}`);
304
+ }
305
+ const importNodes = [];
306
+ for (let i = 0; i < importedFeatures.length; i++) {
307
+ importNodes.push(importedFeatures[i] + (aliases[i] ? ` as ${aliases[i]}` : ``));
308
+ }
309
+ this.writeExpressionStatement(this.makeString(`import { ${importNodes.join(', ')} } from '${moduleName}'`));
310
+ }
282
311
  writeDeclaration(name, signature, needReturn, needBracket, modifiers, generics) {
283
312
  let prefix = !modifiers ? undefined : this.supportedModifiers
284
313
  .filter(it => modifiers.includes(it))
@@ -331,6 +360,11 @@ export class TSLanguageWriter extends LanguageWriter {
331
360
  var _a;
332
361
  return new TSCastExpression(value, this.getNodeName(node), (_a = options === null || options === void 0 ? void 0 : options.unsafe) !== null && _a !== void 0 ? _a : false);
333
362
  }
363
+ instanceOf(value, type) {
364
+ return idl.IDLContainerUtils.isSequence(type)
365
+ ? this.makeString(`Array.isArray(${value})`)
366
+ : super.instanceOf(value, type);
367
+ }
334
368
  typeInstanceOf(type, value, members) {
335
369
  if (idl.isInterface(type)) {
336
370
  if (idl.isInterfaceSubkind(type)) {
@@ -417,16 +451,22 @@ export class TSLanguageWriter extends LanguageWriter {
417
451
  }
418
452
  return this.makeString(`${value.asString()}.valueOf()`);
419
453
  }
420
- castToBoolean(value) { return `+${value}`; }
454
+ castToBoolean(value) { return `!!${value}`; }
421
455
  makeCallIsObject(value) {
422
456
  return this.makeString(`${value} instanceof Object`);
423
457
  }
424
458
  escapeKeyword(keyword) {
425
- return TSKeywords.has(keyword) ? keyword + "_" : keyword;
459
+ return TSKeywords.has(keyword) ? keyword + "Val" : keyword;
426
460
  }
427
461
  discriminate(value, index, type, runtimeTypes) {
428
462
  const runtimeTypeList = runtimeTypes.map(ty => "RuntimeType." + RuntimeType[ty]).join(", ");
429
463
  return `[${runtimeTypeList}].includes(runtimeType(${value}))`;
430
464
  }
465
+ classOp(op) {
466
+ const old = this.writingClassBody;
467
+ this.writingClassBody = true;
468
+ op();
469
+ this.writingClassBody = old;
470
+ }
431
471
  }
432
472
  //# sourceMappingURL=TsLanguageWriter.js.map
@@ -9,7 +9,6 @@ export interface LibraryInterface extends ReferenceResolver {
9
9
  get files(): idl.IDLFile[];
10
10
  typeConvertor(param: string, type: idl.IDLType, isOptionalParam?: boolean): ArgConvertor;
11
11
  declarationConvertor(param: string, type: idl.IDLReferenceType, declaration: idl.IDLEntry | undefined): ArgConvertor;
12
- getInteropName(node: idl.IDLNode): string;
13
12
  createTypeNameConvertor(language: Language): IdlNameConvertor;
14
13
  createContinuationCallbackReference(continuationType: idl.IDLType): idl.IDLReferenceType;
15
14
  getCurrentContext(): string | undefined;