@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
@@ -1,43 +1,36 @@
1
1
  import { IndentedPrinter } from "../IndentedPrinter";
2
2
  import { Language } from "../Language";
3
3
  import { PrimitiveTypesInstance } from "../peer-generation/PrimitiveType";
4
- import { createEmptyReferenceResolver } from "../peer-generation/ReferenceResolver";
5
4
  import { CJIDLTypeToForeignStringConvertor, CJInteropArgConvertor, CJTypeNameConvertor } from "./convertors/CJConvertors";
6
5
  import { CppInteropArgConvertor, CppConvertor } from "./convertors/CppConvertors";
7
6
  import { ETSInteropArgConvertor, ETSTypeNameConvertor } from "./convertors/ETSConvertors";
8
- import { JavaInteropArgConvertor, JavaTypeNameConvertor } from "./convertors/JavaConvertors";
9
7
  import { KotlinTypeNameConvertor } from "./convertors/KotlinConvertors";
10
8
  import { TSInteropArgConvertor, TSTypeNameConvertor } from "./convertors/TSConvertors";
11
9
  import { CJLanguageWriter } from "./writers/CJLanguageWriter";
12
10
  import { CppLanguageWriter } from "./writers/CppLanguageWriter";
13
11
  import { ETSLanguageWriter } from "./writers/ETSLanguageWriter";
14
- import { JavaLanguageWriter } from "./writers/JavaLanguageWriter";
15
12
  import { KotlinLanguageWriter } from "./writers/KotlinLanguageWriter";
16
13
  import { TSLanguageWriter } from "./writers/TsLanguageWriter";
17
14
  export * from "./nameConvertor";
18
- export function createLanguageWriter(language, resolver) {
19
- resolver !== null && resolver !== void 0 ? resolver : (resolver = EmptyReferenceResolver);
15
+ export function createLanguageWriter(language, library, nameConvertor) {
20
16
  const printer = new IndentedPrinter();
21
17
  switch (language) {
22
- case Language.TS: return new TSLanguageWriter(printer, resolver, new TSTypeNameConvertor(resolver));
23
- case Language.ARKTS: return new ETSLanguageWriter(printer, resolver, new ETSTypeNameConvertor(resolver), new CppConvertor(resolver));
24
- case Language.JAVA: return new JavaLanguageWriter(printer, resolver, new JavaTypeNameConvertor(resolver));
25
- case Language.CPP: return new CppLanguageWriter(printer, resolver, new CppConvertor(resolver), PrimitiveTypesInstance);
26
- case Language.CJ: return new CJLanguageWriter(printer, resolver, new CJTypeNameConvertor(resolver), new CJIDLTypeToForeignStringConvertor(resolver));
27
- case Language.KOTLIN: return new KotlinLanguageWriter(printer, resolver, new KotlinTypeNameConvertor(resolver));
18
+ case Language.TS: return new TSLanguageWriter(printer, library, nameConvertor !== null && nameConvertor !== void 0 ? nameConvertor : new TSTypeNameConvertor(library));
19
+ case Language.ARKTS: return new ETSLanguageWriter(printer, library, nameConvertor !== null && nameConvertor !== void 0 ? nameConvertor : new ETSTypeNameConvertor(library), new CppConvertor(library));
20
+ case Language.CPP: return new CppLanguageWriter(printer, library, nameConvertor !== null && nameConvertor !== void 0 ? nameConvertor : new CppConvertor(library), PrimitiveTypesInstance);
21
+ case Language.CJ: return new CJLanguageWriter(printer, library, nameConvertor !== null && nameConvertor !== void 0 ? nameConvertor : new CJTypeNameConvertor(library), new CJIDLTypeToForeignStringConvertor(library));
22
+ case Language.KOTLIN: return new KotlinLanguageWriter(printer, library, nameConvertor !== null && nameConvertor !== void 0 ? nameConvertor : new KotlinTypeNameConvertor(library));
28
23
  default: throw new Error(`Language ${language.toString()} is not supported`);
29
24
  }
30
25
  }
31
- export function createInteropArgConvertor(language) {
26
+ export function createInteropArgConvertor(language, library) {
32
27
  switch (language) {
33
28
  case Language.TS: return new TSInteropArgConvertor();
34
29
  case Language.ARKTS: return new ETSInteropArgConvertor();
35
30
  case Language.CPP: return CppInteropArgConvertor.INSTANCE;
36
- case Language.JAVA: return new JavaInteropArgConvertor();
37
31
  case Language.CJ: return new CJInteropArgConvertor();
38
- case Language.KOTLIN: return new CJInteropArgConvertor();
32
+ case Language.KOTLIN: return new KotlinTypeNameConvertor(library);
39
33
  }
40
34
  throw new Error(`InteropArgConvertor for language ${language} not implemented`);
41
35
  }
42
- const EmptyReferenceResolver = createEmptyReferenceResolver();
43
36
  //# sourceMappingURL=index.js.map
@@ -27,4 +27,6 @@ export declare function convertDeclaration<T>(convertor: DeclarationConvertor<T>
27
27
  export interface NodeConvertor<T> extends TypeConvertor<T>, DeclarationConvertor<T> {
28
28
  }
29
29
  export declare function convertNode<T>(convertor: NodeConvertor<T>, node: idl.IDLNode): T;
30
+ export declare function isInsideInstanceof(): boolean;
31
+ export declare function withInsideInstanceof<T>(isInsideInstanceof: boolean, op: () => T): T;
30
32
  //# sourceMappingURL=nameConvertor.d.ts.map
@@ -62,4 +62,15 @@ export function convertNode(convertor, node) {
62
62
  return convertType(convertor, node);
63
63
  throw new Error(`Unknown node type ${idl.IDLKind[node.kind]}`);
64
64
  }
65
+ let _isInsideInstanceof = false;
66
+ export function isInsideInstanceof() {
67
+ return _isInsideInstanceof;
68
+ }
69
+ export function withInsideInstanceof(isInsideInstanceof, op) {
70
+ const prevIsInsideInstanceof = _isInsideInstanceof;
71
+ _isInsideInstanceof = isInsideInstanceof;
72
+ const result = op();
73
+ _isInsideInstanceof = prevIsInsideInstanceof;
74
+ return result;
75
+ }
65
76
  //# sourceMappingURL=nameConvertor.js.map
@@ -75,6 +75,7 @@ export declare class CJLanguageWriter extends LanguageWriter {
75
75
  resolver?: ReferenceResolver;
76
76
  }): LanguageWriter;
77
77
  getNodeName(type: idl.IDLNode): string;
78
+ get interopModule(): string;
78
79
  writeClass(name: string, op: (writer: this) => void, superClass?: string, interfaces?: string[], generics?: string[]): void;
79
80
  writeEnum(name: string, members: {
80
81
  name: string;
@@ -105,6 +106,7 @@ export declare class CJLanguageWriter extends LanguageWriter {
105
106
  writeGetterImplementation(method: Method, op?: (writer: this) => void): void;
106
107
  writeSetterImplementation(method: Method, op: (writer: this) => void): void;
107
108
  writeCJForeign(op: (writer: CJLanguageWriter) => void): void;
109
+ writeImports(moduleName: string, importedFeatures: string[], aliases: string[]): void;
108
110
  private writeDeclaration;
109
111
  writeNativeFunctionCall(printer: LanguageWriter, name: string, signature: MethodSignature): void;
110
112
  writeNativeMethodDeclaration(method: Method): void;
@@ -16,7 +16,7 @@ import * as idl from "../../idl";
16
16
  import { IndentedPrinter } from "../../IndentedPrinter";
17
17
  import { CJKeywords } from "../../languageSpecificKeywords";
18
18
  import { RuntimeType } from "../common";
19
- import { AssignStatement, BlockStatement, DelegationType, ExpressionStatement, FieldModifier, LambdaExpression, LanguageWriter, MethodModifier, MethodSignature, ReturnStatement } from "../LanguageWriter";
19
+ import { AssignStatement, BlockStatement, DelegationType, ExpressionStatement, FieldModifier, LambdaExpression, LanguageWriter, MethodModifier, MethodSignature, ReturnStatement, } from "../LanguageWriter";
20
20
  import { Language } from "../../Language";
21
21
  import { indentedBy, isDefined } from "../../util";
22
22
  ////////////////////////////////////////////////////////////////
@@ -255,6 +255,9 @@ export class CJLanguageWriter extends LanguageWriter {
255
255
  // rework for proper namespace logic
256
256
  return this.typeConvertor.convert(type);
257
257
  }
258
+ get interopModule() {
259
+ return "Interop";
260
+ }
258
261
  writeClass(name, op, superClass, interfaces, generics) {
259
262
  let extendsClause = superClass ? `${superClass}` : undefined;
260
263
  let implementsClause = interfaces ? `${interfaces.join(' & ')}` : undefined;
@@ -401,6 +404,15 @@ export class CJLanguageWriter extends LanguageWriter {
401
404
  this.popIndent();
402
405
  this.print('}');
403
406
  }
407
+ writeImports(moduleName, importedFeatures, aliases) {
408
+ if (importedFeatures.length !== aliases.length) {
409
+ throw new Error(`Inconsistent imports from ${moduleName}`);
410
+ }
411
+ for (let i = 0; i < importedFeatures.length; i++) {
412
+ const alias = aliases[i] ? ` as ${aliases[i]}` : ``;
413
+ this.writeExpressionStatement(this.makeString(`import ${moduleName}.${importedFeatures[i]}` + alias));
414
+ }
415
+ }
404
416
  writeDeclaration(name, signature, modifiers, postfix, generics) {
405
417
  let prefix = modifiers === null || modifiers === void 0 ? void 0 : modifiers.filter(it => this.supportedModifiers.includes(it)).map(it => this.mapMethodModifier(it)).join(" ");
406
418
  prefix = prefix ? prefix + " " : "public ";
@@ -47,6 +47,7 @@ export declare class CppLanguageWriter extends CLikeLanguageWriter {
47
47
  fork(options?: {
48
48
  resolver?: ReferenceResolver;
49
49
  }): LanguageWriter;
50
+ get interopModule(): string;
50
51
  protected writeDeclaration(name: string, signature: MethodSignature, modifiers?: MethodModifier[], postfix?: string): void;
51
52
  writeClass(name: string, op: (writer: this) => void, superClass?: string, interfaces?: string[]): void;
52
53
  writeInterface(name: string, op: (writer: this) => void, superInterfaces?: string[], generics?: string[]): void;
@@ -63,6 +64,7 @@ export declare class CppLanguageWriter extends CLikeLanguageWriter {
63
64
  }): void;
64
65
  writeTypeDeclaration(decl: IDLTypedef): void;
65
66
  writeConstant(constName: string, constType: IDLType, constVal?: string): void;
67
+ writeImports(moduleName: string, importedFeatures: string[], aliases: string[]): void;
66
68
  /**
67
69
  * Writes multiline comments decorated with stars
68
70
  */
@@ -12,7 +12,7 @@
12
12
  * See the License for the specific language governing permissions and
13
13
  * limitations under the License.
14
14
  */
15
- import { createReferenceType, forceAsNamedNode } from '../../idl';
15
+ import { createReferenceType, forceAsNamedNode, } from '../../idl';
16
16
  import { Language } from '../../Language';
17
17
  import { PrimitiveTypeList } from "../../peer-generation/PrimitiveType";
18
18
  import { AssignStatement, BlockStatement, FieldModifier, PrintHint, MethodModifier, StringExpression, MethodStaticCallExpression } from "../LanguageWriter";
@@ -181,6 +181,9 @@ export class CppLanguageWriter extends CLikeLanguageWriter {
181
181
  var _a;
182
182
  return new CppLanguageWriter(new IndentedPrinter([], this.indentDepth()), (_a = options === null || options === void 0 ? void 0 : options.resolver) !== null && _a !== void 0 ? _a : this.resolver, this.typeConvertor, this.primitivesTypes);
183
183
  }
184
+ get interopModule() {
185
+ throw new Error(`Modules are not supported in C++`);
186
+ }
184
187
  writeDeclaration(name, signature, modifiers, postfix) {
185
188
  const realName = this.classMode === 'normal' ? name : `${this.currentClass.at(0)}::${name}`;
186
189
  const newModifiers = this.classMode === 'normal'
@@ -253,6 +256,9 @@ export class CppLanguageWriter extends CLikeLanguageWriter {
253
256
  writeConstant(constName, constType, constVal) {
254
257
  this.print(`${this.getNodeName(constType)} ${constName}${constVal ? ' = ' + constVal : ''};`);
255
258
  }
259
+ writeImports(moduleName, importedFeatures, aliases) {
260
+ throw new Error(`Imports are not supported in C++`);
261
+ }
256
262
  /**
257
263
  * Writes multiline comments decorated with stars
258
264
  */
@@ -380,7 +386,7 @@ export class CppLanguageWriter extends CLikeLanguageWriter {
380
386
  return createReferenceType('Tag');
381
387
  }
382
388
  getRuntimeType() {
383
- return createReferenceType(`RuntimeType`);
389
+ return createReferenceType(`idlize.stdlib.RuntimeType`);
384
390
  }
385
391
  makeTupleAssign(receiver, tupleFields) {
386
392
  const statements = tupleFields.map((field, index) => {
@@ -1,5 +1,5 @@
1
1
  import { IndentedPrinter } from "../../IndentedPrinter";
2
- import { LambdaExpression, LanguageExpression, LanguageStatement, LanguageWriter, MakeAssignOptions, MakeCastOptions, Method, MethodModifier, MethodSignature, NamespaceOptions } from "../LanguageWriter";
2
+ import { LambdaExpression, LanguageExpression, LanguageStatement, LanguageWriter, MakeAssignOptions, MakeCastOptions, Method, MethodModifier, MethodSignature } from "../LanguageWriter";
3
3
  import { TSLanguageWriter } from "./TsLanguageWriter";
4
4
  import { IDLEnum, IDLType } from '../../idl';
5
5
  import { ArgConvertor } from "../ArgConvertors";
@@ -38,14 +38,11 @@ export declare class ETSLambdaExpression extends LambdaExpression {
38
38
  protected get statementHasSemicolon(): boolean;
39
39
  asString(): string;
40
40
  }
41
- export declare function generateTypeCheckerName(typeName: string): string;
42
41
  export declare function generateEnumToNumericName(entry: idl.IDLEntry): string;
43
42
  export declare function generateEnumFromNumericName(entry: idl.IDLEntry): string;
44
- export declare function makeArrayTypeCheckCall(valueAccessor: string, typeName: string, writer: LanguageWriter): LanguageExpression;
45
43
  export declare class ETSLanguageWriter extends TSLanguageWriter {
46
44
  private arrayConvertor;
47
45
  constructor(printer: IndentedPrinter, resolver: ReferenceResolver, typeConvertor: IdlNameConvertor, arrayConvertor: IdlNameConvertor);
48
- pushNamespace(namespace: string, options: NamespaceOptions): void;
49
46
  fork(options?: {
50
47
  resolver?: ReferenceResolver;
51
48
  }): LanguageWriter;
@@ -75,12 +72,7 @@ export declare class ETSLanguageWriter extends TSLanguageWriter {
75
72
  discriminate(value: string, index: number, type: idl.IDLType, runtimeTypes: RuntimeType[]): string;
76
73
  castToInt(value: string, bitness: 8 | 32): string;
77
74
  castToBoolean(value: string): string;
78
- typeInstanceOf(type: idl.IDLEntry, value: string, members?: string[]): LanguageExpression;
79
- makeTypeCast(value: LanguageExpression, type: idl.IDLType, options?: MakeCastOptions): LanguageExpression;
80
75
  makeCast(value: LanguageExpression, node: idl.IDLNode, options?: MakeCastOptions): LanguageExpression;
81
- static _isUseTypeChecker: boolean;
82
- static get isUseTypeChecker(): boolean;
83
- static useTypeChecker<T>(isUseTypeChecker: boolean, op: () => T): T;
76
+ instanceOf(value: string, type: idl.IDLType): LanguageExpression;
84
77
  }
85
- export declare function makeEnumTypeCheckerCall(valueAccessor: string, enumName: string, writer: LanguageWriter): LanguageExpression;
86
78
  //# sourceMappingURL=ETSLanguageWriter.d.ts.map
@@ -18,7 +18,7 @@ import { TSCastExpression, TSLanguageWriter } from "./TsLanguageWriter";
18
18
  import { getExtAttribute, IDLThisType } from '../../idl';
19
19
  import { AggregateConvertor, CustomTypeConvertor, InterfaceConvertor, MaterializedClassConvertor } from "../ArgConvertors";
20
20
  import * as idl from '../../idl';
21
- import { convertDeclaration } from "../nameConvertor";
21
+ import { convertDeclaration, withInsideInstanceof } from "../nameConvertor";
22
22
  import { createDeclarationNameConvertor } from "../../peer-generation/idl/IdlNameConvertor";
23
23
  import { Language } from "../../Language";
24
24
  ////////////////////////////////////////////////////////////////
@@ -56,7 +56,7 @@ export class EtsAssignStatement {
56
56
  const typeClause = this.type !== undefined ? `: ${writer.getNodeName(this.type)}` : '';
57
57
  const maybeAssign = this.expression !== undefined ? " = " : "";
58
58
  const initValue = this.expression !== undefined ? this.expression : writer.makeString("");
59
- writer.print(`${this.isConst ? "const" : "let"} ${this.variableName} ${typeClause}${maybeAssign}${initValue.asString()}`);
59
+ writer.print(`${this.isConst ? "const" : "let"} ${this.variableName}${typeClause}${maybeAssign}${initValue.asString()}`);
60
60
  }
61
61
  else {
62
62
  const receiver = (_a = this.options) === null || _a === void 0 ? void 0 : _a.receiver;
@@ -90,35 +90,30 @@ export class ArkTSEnumEntityStatement {
90
90
  write(writer) {
91
91
  let enumName = convertDeclaration(createDeclarationNameConvertor(Language.ARKTS), this.enumEntity);
92
92
  enumName = enumName.split('.').at(-1);
93
- const members = this.enumEntity.elements
94
- .flatMap((member, index) => {
93
+ const correctStyleNames = [];
94
+ const originalStyleNames = [];
95
+ this.enumEntity.elements.forEach((member, index) => {
95
96
  var _a;
96
97
  const initText = (_a = member.initializer) !== null && _a !== void 0 ? _a : index;
97
98
  const isTypeString = typeof initText !== "number";
98
99
  const originalName = getExtAttribute(member, idl.IDLExtendedAttributes.OriginalEnumMemberName);
99
- const res = [{
100
- name: member.name,
101
- alias: undefined,
102
- stringId: isTypeString ? initText : undefined,
103
- numberId: initText
104
- }];
105
- if (originalName !== undefined) {
106
- res.push({
107
- name: originalName,
108
- alias: undefined,
109
- stringId: isTypeString ? initText : undefined,
110
- numberId: initText
111
- });
112
- //TODO: enums do not support member aliases
113
- // res.push({
114
- // name: originalName,
115
- // alias: member.name,
116
- // stringId: undefined,
117
- // numberId: initText as number
118
- // })
119
- }
120
- return res;
100
+ correctStyleNames.push({
101
+ name: originalName ? member.name : `${member.name}_DUMMY`,
102
+ alias: undefined,
103
+ stringId: isTypeString ? initText : undefined,
104
+ numberId: initText
105
+ });
106
+ originalStyleNames.push({
107
+ name: originalName !== null && originalName !== void 0 ? originalName : member.name,
108
+ alias: undefined,
109
+ stringId: isTypeString ? initText : undefined,
110
+ numberId: initText
111
+ });
121
112
  });
113
+ let members = originalStyleNames;
114
+ if (this.enumEntity.elements.some(it => idl.hasExtAttribute(it, idl.IDLExtendedAttributes.OriginalEnumMemberName))) {
115
+ members = members.concat(correctStyleNames);
116
+ }
122
117
  writer.writeEnum(enumName, members, { isExport: this.options.isExport, isDeclare: this.options.isDeclare });
123
118
  }
124
119
  }
@@ -149,12 +144,6 @@ export class ETSLambdaExpression extends LambdaExpression {
149
144
  ////////////////////////////////////////////////////////////////
150
145
  // UTILS //
151
146
  ////////////////////////////////////////////////////////////////
152
- export function generateTypeCheckerName(typeName) {
153
- return "is" + typeName
154
- .replaceAll('[]', 'BracketsArray')
155
- .replaceAll(/<.*$/g, '') // delete type arguments
156
- .replaceAll('.', '_');
157
- }
158
147
  export function generateEnumToNumericName(entry) {
159
148
  const typeName = idl.getQualifiedName(entry, "namespace.name").split('.').join('_');
160
149
  return `${typeName}_ToNumeric`;
@@ -163,10 +152,6 @@ export function generateEnumFromNumericName(entry) {
163
152
  const typeName = idl.getQualifiedName(entry, "namespace.name").split('.').join('_');
164
153
  return `${typeName}_FromNumeric`;
165
154
  }
166
- export function makeArrayTypeCheckCall(valueAccessor, typeName, writer) {
167
- return writer.makeMethodCall("TypeChecker", generateTypeCheckerName(typeName), [writer.makeString(valueAccessor)
168
- ]);
169
- }
170
155
  ////////////////////////////////////////////////////////////////
171
156
  // WRITER //
172
157
  ////////////////////////////////////////////////////////////////
@@ -175,9 +160,6 @@ export class ETSLanguageWriter extends TSLanguageWriter {
175
160
  super(printer, resolver, typeConvertor, Language.ARKTS);
176
161
  this.arrayConvertor = arrayConvertor;
177
162
  }
178
- pushNamespace(namespace, options) {
179
- super.pushNamespace(namespace, options);
180
- }
181
163
  fork(options) {
182
164
  var _a;
183
165
  return new ETSLanguageWriter(new IndentedPrinter([], this.indentDepth()), (_a = options === null || options === void 0 ? void 0 : options.resolver) !== null && _a !== void 0 ? _a : this.resolver, this.typeConvertor, this.arrayConvertor);
@@ -207,18 +189,22 @@ export class ETSLanguageWriter extends TSLanguageWriter {
207
189
  return this.makeString(`${value} as ${type}`);
208
190
  }
209
191
  i32FromEnum(value, enumEntry) {
210
- if (ETSLanguageWriter.isUseTypeChecker) {
211
- return this.makeMethodCall('TypeChecker', generateEnumToNumericName(enumEntry), [value]);
192
+ if (idl.isStringEnum(enumEntry)) {
193
+ let extractorStatement = this.makeMethodCall(value.asString(), 'getOrdinal', []);
194
+ if (enumEntry.elements.some(it => idl.hasExtAttribute(it, idl.IDLExtendedAttributes.OriginalEnumMemberName))) {
195
+ extractorStatement = this.makeNaryOp('%', [
196
+ extractorStatement,
197
+ this.makeString(enumEntry.elements.length.toString())
198
+ ]);
199
+ }
200
+ return extractorStatement;
201
+ }
202
+ else {
203
+ return this.makeMethodCall(value.asString(), 'valueOf', []);
212
204
  }
213
- return idl.isStringEnum(enumEntry)
214
- ? this.makeMethodCall(value.asString(), 'getOrdinal', [])
215
- : this.makeMethodCall(value.asString(), 'valueOf', []);
216
205
  }
217
206
  enumFromI32(value, enumEntry) {
218
207
  const enumName = this.getNodeName(enumEntry);
219
- if (ETSLanguageWriter.isUseTypeChecker) {
220
- return this.makeMethodCall('TypeChecker', generateEnumFromNumericName(enumEntry), [value]);
221
- }
222
208
  return idl.isStringEnum(enumEntry)
223
209
  ? this.makeString(`${enumName}.values()[${value.asString()}]`)
224
210
  : this.makeMethodCall(enumName, 'fromValue', [value]);
@@ -230,7 +216,7 @@ export class ETSLanguageWriter extends TSLanguageWriter {
230
216
  || convertor instanceof CustomTypeConvertor) {
231
217
  return this.instanceOf(value, convertor.idlType);
232
218
  }
233
- return this.makeString(`${value} instanceof ${convertor.targetType(this)}`);
219
+ return this.makeString(`${value} instanceof ${withInsideInstanceof(true, () => convertor.targetType(this))}`);
234
220
  }
235
221
  makeValueFromOption(value, destinationConvertor) {
236
222
  if (idl.isEnum(this.resolver.toDeclaration(destinationConvertor.nativeType()))) {
@@ -269,15 +255,16 @@ export class ETSLanguageWriter extends TSLanguageWriter {
269
255
  return super.makeNaryOp('==', args);
270
256
  }
271
257
  discriminate(value, index, type, runtimeTypes) {
272
- // work around ArkTS compiler bugs
273
- if (idl.IDLContainerUtils.isSequence(type)) {
274
- const arrayTypeName = this.arrayConvertor.convert(type);
275
- return `TypeChecker.${generateTypeCheckerName(arrayTypeName)}(${value})`;
276
- }
277
- if (this.getNodeName(type) === "DragPreviewMode") {
278
- return `TypeChecker.isDragPreviewMode(${value})`;
279
- }
280
- return `${value} instanceof ${this.getNodeName(type)}`;
258
+ return `${value} instanceof ${withInsideInstanceof(true, () => {
259
+ let typeName = this.getNodeName(type);
260
+ if (idl.isReferenceType(type)) {
261
+ const decl = this.resolver.resolveTypeReference(type);
262
+ if (decl && idl.isInterface(decl) && decl.subkind == idl.IDLInterfaceSubkind.Tuple) {
263
+ typeName = "Tuple";
264
+ }
265
+ }
266
+ return typeName;
267
+ })}`;
281
268
  }
282
269
  castToInt(value, bitness) {
283
270
  // This fix is used to avoid unnecessary writeInt8(value as int32) call, which is generated if value is already an int32
@@ -287,50 +274,23 @@ export class ETSLanguageWriter extends TSLanguageWriter {
287
274
  return `(${value}).toChar()`;
288
275
  return `(${value}).toInt()`; // FIXME: is there int8 in ARKTS?
289
276
  }
290
- castToBoolean(value) { return `${value} ? 1 : 0`; }
291
- typeInstanceOf(type, value, members) {
292
- if (!members || members.length === 0) {
293
- throw new Error("At least one member needs to provided to pass it to TypeChecker!");
294
- }
295
- const prop = members[0];
296
- // Use the same typeInstanceOf<T>(...) method to compile the ETS code by two compilers ArkTS and TS
297
- return this.makeString(`TypeChecker.typeInstanceOf<${this.getNodeName(type)}>(value, "${prop}")`);
298
- }
299
- makeTypeCast(value, type, options) {
300
- return this.makeString(`TypeChecker.typeCast<${this.getNodeName(type)}>(value)`);
301
- }
277
+ castToBoolean(value) { return `${value} ? true : false`; }
302
278
  makeCast(value, node, options) {
303
279
  var _a;
304
280
  if (node === idl.IDLI64Type)
305
- return this.makeMethodCall(value.asString(), `toLong`, []);
281
+ return this.makeMethodCall(value.asString() + '!', `toLong`, []);
306
282
  if (node === idl.IDLI32Type)
307
- return this.makeMethodCall(value.asString(), `toInt`, []);
283
+ return this.makeMethodCall(value.asString() + '!', `toInt`, []);
308
284
  if (node === idl.IDLI8Type)
309
- return this.makeMethodCall(value.asString(), `toByte`, []);
285
+ return this.makeMethodCall(value.asString() + '!', `toByte`, []);
310
286
  if (node === idl.IDLF64Type)
311
- return this.makeMethodCall(value.asString(), `toDouble`, []);
287
+ return this.makeMethodCall(value.asString() + '!', `toDouble`, []);
312
288
  if (node === idl.IDLF32Type)
313
- return this.makeMethodCall(value.asString(), `toFloat`, []);
289
+ return this.makeMethodCall(value.asString() + '!', `toFloat`, []);
314
290
  return new TSCastExpression(value, `${this.getNodeName(node)}`, (_a = options === null || options === void 0 ? void 0 : options.unsafe) !== null && _a !== void 0 ? _a : false);
315
291
  }
316
- static get isUseTypeChecker() { return this._isUseTypeChecker; }
317
- static useTypeChecker(isUseTypeChecker, op) {
318
- const prevIsUse = this.isReferenceRelativeToNamespaces;
319
- this._isUseTypeChecker = isUseTypeChecker;
320
- const result = op();
321
- this._isUseTypeChecker = prevIsUse;
322
- return result;
292
+ instanceOf(value, type) {
293
+ return this.makeString(this.discriminate(value, -1, type, []));
323
294
  }
324
295
  }
325
- ETSLanguageWriter._isUseTypeChecker = true;
326
- function makeInterfaceTypeCheckerCall(valueAccessor, interfaceName, allFields, duplicates, writer) {
327
- return writer.makeMethodCall("TypeChecker", generateTypeCheckerName(interfaceName), [writer.makeString(valueAccessor),
328
- ...allFields.map(it => {
329
- return writer.makeString(duplicates.has(it) ? "true" : "false");
330
- })
331
- ]);
332
- }
333
- export function makeEnumTypeCheckerCall(valueAccessor, enumName, writer) {
334
- return writer.makeMethodCall("TypeChecker", generateTypeCheckerName(enumName), [writer.makeString(valueAccessor)]);
335
- }
336
296
  //# sourceMappingURL=ETSLanguageWriter.js.map
@@ -61,6 +61,8 @@ export declare class KotlinLanguageWriter extends LanguageWriter {
61
61
  resolver?: ReferenceResolver;
62
62
  }): LanguageWriter;
63
63
  getNodeName(type: idl.IDLNode): string;
64
+ get interopModule(): string;
65
+ maybeSemicolon(): string;
64
66
  writeClass(name: string, op: (writer: this) => void, superClass?: string, interfaces?: string[], generics?: string[], isDeclared?: boolean, isAbstract?: boolean): void;
65
67
  writeInterface(name: string, op: (writer: this) => void, superInterfaces?: string[], generics?: string[], isDeclared?: boolean): void;
66
68
  writeFunctionDeclaration(name: string, signature: MethodSignature, generics?: string[]): void;
@@ -78,6 +80,11 @@ export declare class KotlinLanguageWriter extends LanguageWriter {
78
80
  private writeDeclaration;
79
81
  writeFieldDeclaration(name: string, type: idl.IDLType, modifiers: FieldModifier[] | undefined, optional: boolean, initExpr?: LanguageExpression): void;
80
82
  writeNativeMethodDeclaration(method: Method): void;
83
+ private printForeignApiOptIn;
84
+ private get foreignApiOptIn();
85
+ private isPrimitiveArray;
86
+ private pinArrayArgument;
87
+ private unpinArrayArgument;
81
88
  private convertInteropArgument;
82
89
  private convertInteropReturnValue;
83
90
  writeMethodDeclaration(name: string, signature: MethodSignature, modifiers?: MethodModifier[]): void;
@@ -94,6 +101,7 @@ export declare class KotlinLanguageWriter extends LanguageWriter {
94
101
  writeSetterImplementation(method: Method, op: (writer: this) => void): void;
95
102
  writeTypeDeclaration(decl: idl.IDLTypedef): void;
96
103
  writeConstant(constName: string, constType: idl.IDLType, constVal?: string): void;
104
+ writeImports(moduleName: string, importedFeatures: string[], aliases: string[]): void;
97
105
  makeNull(): LanguageExpression;
98
106
  makeAssign(variableName: string, type: idl.IDLType | undefined, expr: LanguageExpression, isDeclared?: boolean, isConst?: boolean, options?: MakeAssignOptions): LanguageStatement;
99
107
  makeLambda(signature: MethodSignature, body?: LanguageStatement[]): LanguageExpression;