@idlizer/core 2.1.10-arktscgen-5 → 2.1.10-arktscgen-7

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 (104) hide show
  1. package/build/lib/src/Language.js +1 -1
  2. package/build/lib/src/LanguageWriters/ArgConvertors.d.ts +16 -6
  3. package/build/lib/src/LanguageWriters/ArgConvertors.js +80 -92
  4. package/build/lib/src/LanguageWriters/LanguageWriter.d.ts +8 -7
  5. package/build/lib/src/LanguageWriters/LanguageWriter.js +35 -22
  6. package/build/lib/src/LanguageWriters/common.d.ts +1 -0
  7. package/build/lib/src/LanguageWriters/common.js +2 -1
  8. package/build/lib/src/LanguageWriters/convertors/CppConvertors.d.ts +7 -1
  9. package/build/lib/src/LanguageWriters/convertors/CppConvertors.js +53 -15
  10. package/build/lib/src/LanguageWriters/convertors/ETSConvertors.d.ts +1 -0
  11. package/build/lib/src/LanguageWriters/convertors/ETSConvertors.js +10 -8
  12. package/build/lib/src/LanguageWriters/convertors/InteropConvertors.js +1 -1
  13. package/build/lib/src/LanguageWriters/convertors/TSConvertors.js +26 -14
  14. package/build/lib/src/LanguageWriters/index.d.ts +4 -3
  15. package/build/lib/src/LanguageWriters/index.js +9 -11
  16. package/build/lib/src/LanguageWriters/nameConvertor.d.ts +2 -0
  17. package/build/lib/src/LanguageWriters/nameConvertor.js +11 -0
  18. package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.js +1 -1
  19. package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.d.ts +2 -22
  20. package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.js +34 -113
  21. package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.d.ts +3 -0
  22. package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +33 -9
  23. package/build/lib/src/config.d.ts +2 -1461
  24. package/build/lib/src/config.js +16 -32
  25. package/build/lib/src/configMerge.d.ts +3 -0
  26. package/build/lib/src/configMerge.js +63 -0
  27. package/build/lib/src/diagnostictypes.d.ts +1 -5
  28. package/build/lib/src/diagnostictypes.js +1 -27
  29. package/build/lib/src/from-idl/DtsPrinter.js +12 -5
  30. package/build/lib/src/from-idl/IDLLinter.d.ts +3 -4
  31. package/build/lib/src/from-idl/IDLLinter.js +30 -32
  32. package/build/lib/src/from-idl/deserialize.d.ts +3 -4
  33. package/build/lib/src/from-idl/deserialize.js +29 -641
  34. package/build/lib/src/from-idl/parser.d.ts +20 -2
  35. package/build/lib/src/from-idl/parser.js +97 -29
  36. package/build/lib/src/idl/builders.d.ts +43 -0
  37. package/build/lib/src/idl/builders.js +135 -0
  38. package/build/lib/src/idl/discriminators.d.ts +53 -0
  39. package/build/lib/src/idl/discriminators.js +232 -0
  40. package/build/lib/src/idl/dump.d.ts +48 -0
  41. package/build/lib/src/idl/dump.js +327 -0
  42. package/build/lib/src/idl/index.d.ts +9 -0
  43. package/build/lib/src/idl/index.js +23 -0
  44. package/build/lib/src/idl/keywords.d.ts +2 -0
  45. package/build/lib/src/{options.js → idl/keywords.js} +7 -3
  46. package/build/lib/src/idl/node.d.ts +233 -0
  47. package/build/lib/src/idl/node.js +103 -0
  48. package/build/lib/src/idl/stdlib.d.ts +34 -0
  49. package/build/lib/src/idl/stdlib.js +54 -0
  50. package/build/lib/src/idl/utils.d.ts +44 -0
  51. package/build/lib/src/idl/utils.js +215 -0
  52. package/build/lib/src/idl/visitors.d.ts +15 -0
  53. package/build/lib/src/idl/visitors.js +593 -0
  54. package/build/lib/src/index.d.ts +4 -2
  55. package/build/lib/src/index.js +5 -3
  56. package/build/lib/src/inputPaths.d.ts +11 -0
  57. package/build/lib/src/inputPaths.js +81 -0
  58. package/build/lib/src/languageSpecificKeywords.d.ts +0 -1
  59. package/build/lib/src/languageSpecificKeywords.js +0 -5
  60. package/build/lib/src/peer-generation/LayoutManager.d.ts +1 -1
  61. package/build/lib/src/peer-generation/Materialized.d.ts +8 -2
  62. package/build/lib/src/peer-generation/Materialized.js +24 -12
  63. package/build/lib/src/peer-generation/PeerLibrary.d.ts +10 -15
  64. package/build/lib/src/peer-generation/PeerLibrary.js +35 -215
  65. package/build/lib/src/peer-generation/ReferenceResolver.d.ts +6 -1
  66. package/build/lib/src/peer-generation/ReferenceResolver.js +93 -2
  67. package/build/lib/src/peer-generation/idl/common.d.ts +6 -2
  68. package/build/lib/src/peer-generation/idl/common.js +7 -7
  69. package/build/lib/src/peer-generation/isMaterialized.js +2 -3
  70. package/build/lib/src/peer-generation/modules.js +2 -0
  71. package/build/lib/src/peer-generation/toDeclaration.d.ts +4 -0
  72. package/build/lib/src/peer-generation/toDeclaration.js +53 -0
  73. package/build/lib/src/peer-generation/unions.d.ts +1 -1
  74. package/build/lib/src/peer-generation/unions.js +15 -7
  75. package/build/lib/src/resolveNamedNode.d.ts +1 -0
  76. package/build/lib/src/resolveNamedNode.js +7 -0
  77. package/build/lib/src/transformers/FqnTransformer.d.ts +1 -1
  78. package/build/lib/src/transformers/FqnTransformer.js +20 -12
  79. package/build/lib/src/transformers/GenericTransformer.d.ts +4 -3
  80. package/build/lib/src/transformers/GenericTransformer.js +252 -158
  81. package/build/lib/src/transformers/IdlTransformer.d.ts +6 -0
  82. package/build/lib/src/transformers/IdlTransformer.js +7 -0
  83. package/build/lib/src/transformers/NullTransformer.d.ts +1 -1
  84. package/build/lib/src/transformers/NullTransformer.js +27 -21
  85. package/build/lib/src/transformers/OnSerializeTransformer.d.ts +1 -1
  86. package/build/lib/src/transformers/OnSerializeTransformer.js +28 -13
  87. package/build/lib/src/util.d.ts +5 -0
  88. package/build/lib/src/util.js +25 -0
  89. package/package.json +6 -7
  90. package/build/lib/src/LanguageWriters/convertors/JavaConvertors.d.ts +0 -37
  91. package/build/lib/src/LanguageWriters/convertors/JavaConvertors.js +0 -210
  92. package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.d.ts +0 -85
  93. package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.js +0 -306
  94. package/build/lib/src/from-idl/webidl2-utils.d.ts +0 -21
  95. package/build/lib/src/from-idl/webidl2-utils.js +0 -87
  96. package/build/lib/src/idl.d.ts +0 -444
  97. package/build/lib/src/idl.js +0 -1385
  98. package/build/lib/src/idlize.d.ts +0 -25
  99. package/build/lib/src/idlize.js +0 -198
  100. package/build/lib/src/options.d.ts +0 -13
  101. package/build/lib/src/peer-generation/BuilderClass.d.ts +0 -20
  102. package/build/lib/src/peer-generation/BuilderClass.js +0 -68
  103. package/webidl2.js/dist/webidl2.js +0 -4622
  104. package/webidl2.js/package.json +0 -55
@@ -14,6 +14,7 @@
14
14
  */
15
15
  import * as idl from "../../idl";
16
16
  import { LanguageWriter } from "../LanguageWriter";
17
+ import { isInsideInstanceof } from "../nameConvertor";
17
18
  import { TSInteropArgConvertor, TSTypeNameConvertor } from "./TSConvertors";
18
19
  export class ETSTypeNameConvertor extends TSTypeNameConvertor {
19
20
  convertTypeReference(type) {
@@ -25,18 +26,13 @@ export class ETSTypeNameConvertor extends TSTypeNameConvertor {
25
26
  }
26
27
  // TODO: Fix for 'TypeError: Type 'Function<R>' is generic but type argument were not provided.'
27
28
  if (typeName === "Function") {
28
- return "Function<void>";
29
+ return isInsideInstanceof() ? "Function" : "Function<void>";
29
30
  }
30
31
  return typeName;
31
32
  }
32
33
  convertContainer(type) {
33
34
  if (idl.IDLContainerUtils.isSequence(type)) {
34
- switch (type.elementType[0]) {
35
- case idl.IDLU8Type: return 'KUint8ArrayPtr';
36
- case idl.IDLI32Type: return 'KInt32ArrayPtr';
37
- case idl.IDLF32Type: return 'KFloat32ArrayPtr';
38
- }
39
- return `Array<${this.convert(type.elementType[0])}>`;
35
+ return isInsideInstanceof() ? `Array` : `Array<${this.convert(type.elementType[0])}>`;
40
36
  }
41
37
  return super.convertContainer(type);
42
38
  }
@@ -95,9 +91,15 @@ export class ETSTypeNameConvertor extends TSTypeNameConvertor {
95
91
  if (typeArgs.length === 0) {
96
92
  typeArgs = [this.convert(idl.IDLVoidType)];
97
93
  }
98
- return `Function${typeArgs.length - 1}<${typeArgs.join(",")}>`;
94
+ return isInsideInstanceof() ? `Function${typeArgs.length - 1}` : `Function${typeArgs.length - 1}<${typeArgs.join(",")}>`;
99
95
  }
100
96
  }
101
97
  export class ETSInteropArgConvertor extends TSInteropArgConvertor {
98
+ convertPrimitiveType(type) {
99
+ switch (type) {
100
+ case idl.IDLBigintType: return 'long';
101
+ }
102
+ return super.convertPrimitiveType(type);
103
+ }
102
104
  }
103
105
  //# sourceMappingURL=ETSConvertors.js.map
@@ -84,7 +84,7 @@ export class InteropReturnTypeConvertor {
84
84
  if (decl) {
85
85
  // Callbacks and array types return by value
86
86
  if (idl.isCallback(this.resolver.toDeclaration(type))) {
87
- return type.name;
87
+ return KInteropReturnBuffer;
88
88
  }
89
89
  if (idl.isInterface(decl)) {
90
90
  if (isMaterialized(decl, this.resolver)) {
@@ -17,7 +17,7 @@ import { Language } from '../../Language';
17
17
  import { isTopLevelConflicted } from '../../peer-generation/ConflictingDeclarations';
18
18
  import { isDeclaredInCurrentFile, LayoutNodeRole } from '../../peer-generation/LayoutManager';
19
19
  import { maybeRestoreGenerics } from '../../transformers/GenericTransformer';
20
- import { convertNode, convertType } from '../nameConvertor';
20
+ import { convertNode, convertType, isInsideInstanceof, withInsideInstanceof } from '../nameConvertor';
21
21
  export class TSTypeNameConvertor {
22
22
  constructor(library) {
23
23
  this.library = library;
@@ -50,6 +50,8 @@ export class TSTypeNameConvertor {
50
50
  }
51
51
  convertTypedef(node) {
52
52
  var _a;
53
+ if (idl.isSyntheticEntry(node))
54
+ return this.convert(node.type);
53
55
  return (_a = this.mangleTopLevel(node)) !== null && _a !== void 0 ? _a : idl.getQualifiedName(node, "namespace.name");
54
56
  }
55
57
  convertCallback(node) {
@@ -87,18 +89,13 @@ export class TSTypeNameConvertor {
87
89
  }
88
90
  convertContainer(type) {
89
91
  if (idl.IDLContainerUtils.isSequence(type)) {
90
- switch (type.elementType[0]) {
91
- case idl.IDLU8Type: return 'Uint8Array'; // should be changed to Array
92
- case idl.IDLI32Type: return 'Int32Array'; // should be changed to Array
93
- case idl.IDLF32Type: return 'KFloat32ArrayPtr'; // should be changed to Array
94
- default: return `Array<${this.convert(type.elementType[0])}>`;
95
- }
92
+ return isInsideInstanceof() ? `Array` : `Array<${this.convert(type.elementType[0])}>`;
96
93
  }
97
94
  if (idl.IDLContainerUtils.isRecord(type)) {
98
- return `Map<${this.convert(type.elementType[0])}, ${this.convert(type.elementType[1])}>`;
95
+ return isInsideInstanceof() ? `Map` : `Map<${this.convert(type.elementType[0])}, ${this.convert(type.elementType[1])}>`;
99
96
  }
100
97
  if (idl.IDLContainerUtils.isPromise(type)) {
101
- return `Promise<${this.convert(type.elementType[0])}>`;
98
+ return isInsideInstanceof() ? `Promise` : `Promise<${this.convert(type.elementType[0])}>`;
102
99
  }
103
100
  throw new Error(`Unmapped container type ${idl.DebugUtils.debugPrintType(type)}`);
104
101
  }
@@ -108,7 +105,7 @@ export class TSTypeNameConvertor {
108
105
  }
109
106
  convertTypeReferenceAsImport(type, importClause) {
110
107
  var _a;
111
- const maybeTypeArguments = ((_a = type.typeArguments) === null || _a === void 0 ? void 0 : _a.length) ? `<${type.typeArguments.join(', ')}>` : "";
108
+ const maybeTypeArguments = ((_a = type.typeArguments) === null || _a === void 0 ? void 0 : _a.length) && !isInsideInstanceof() ? `<${type.typeArguments.join(', ')}>` : "";
112
109
  let decl = this.library.resolveTypeReference(type);
113
110
  if (decl)
114
111
  return `${decl.name}${maybeTypeArguments}`;
@@ -122,6 +119,9 @@ export class TSTypeNameConvertor {
122
119
  if (idl.isCallback(decl)) {
123
120
  return this.mapCallback(decl, type.typeArguments);
124
121
  }
122
+ if (idl.isTypedef(decl)) {
123
+ return this.convert(decl.type);
124
+ }
125
125
  const entity = idl.getExtAttribute(decl, idl.IDLExtendedAttributes.Entity);
126
126
  if (entity) {
127
127
  const isTuple = entity === idl.IDLEntity.Tuple;
@@ -141,7 +141,10 @@ export class TSTypeNameConvertor {
141
141
  decl = this.library.resolveTypeReference(maybeRestoredGeneric);
142
142
  }
143
143
  let typeSpec = type.name;
144
- let typeArgs = (_b = (_a = type.typeArguments) === null || _a === void 0 ? void 0 : _a.map(it => this.convert(it))) !== null && _b !== void 0 ? _b : [];
144
+ let typeArgs = !isInsideInstanceof() || decl && idl.isCallback(decl)
145
+ // there is a bug with panda - if we're inside callback generics, we need to expand other generics too. So withInsideInstanceof is used
146
+ ? (_b = (_a = type.typeArguments) === null || _a === void 0 ? void 0 : _a.map(it => withInsideInstanceof(false, () => this.convert(it)))) !== null && _b !== void 0 ? _b : []
147
+ : [];
145
148
  if (typeSpec === `Optional`)
146
149
  return `${typeArgs} | undefined`;
147
150
  if (typeSpec === `Function`)
@@ -249,7 +252,7 @@ export class TSTypeNameConvertor {
249
252
  return name;
250
253
  }
251
254
  mapFunctionType(typeArgs) {
252
- return `Function${typeArgs.length ? `<${typeArgs.join(",")}>` : ''}`;
255
+ return isInsideInstanceof() ? `Function` : `Function${typeArgs.length ? `<${typeArgs.join(",")}>` : ''}`;
253
256
  }
254
257
  }
255
258
  export class TSInteropArgConvertor {
@@ -257,6 +260,11 @@ export class TSInteropArgConvertor {
257
260
  return convertType(this, type);
258
261
  }
259
262
  convertContainer(type) {
263
+ switch (type.elementType[0]) {
264
+ case idl.IDLU8Type: return 'KUint8ArrayPtr';
265
+ case idl.IDLI32Type: return 'KInt32ArrayPtr';
266
+ case idl.IDLF32Type: return 'KFloat32ArrayPtr';
267
+ }
260
268
  throw new Error(`Cannot pass container types through interop`);
261
269
  }
262
270
  convertImport(type) {
@@ -276,13 +284,17 @@ export class TSInteropArgConvertor {
276
284
  case idl.IDLF64Type: return "KDouble";
277
285
  case idl.IDLNumberType: return 'number';
278
286
  case idl.IDLBigintType: return 'bigint';
279
- case idl.IDLBooleanType:
287
+ case idl.IDLBooleanType: return 'boolean';
280
288
  case idl.IDLFunctionType: return 'KInt';
281
289
  case idl.IDLStringType: return 'KStringPtr';
282
290
  case idl.IDLBufferType: return 'ArrayBuffer';
291
+ case idl.IDLSerializerBuffer: return 'KSerializerBuffer';
292
+ case idl.IDLInteropReturnBufferType: return `KInteropReturnBuffer`;
293
+ case idl.IDLObjectType: return 'Object';
294
+ case idl.IDLAnyType: return "Object";
283
295
  case idl.IDLDate: return 'number';
296
+ case idl.IDLVoidType: return 'void';
284
297
  case idl.IDLUndefinedType:
285
- case idl.IDLVoidType:
286
298
  case idl.IDLPointerType: return 'KPointer';
287
299
  }
288
300
  throw new Error(`Cannot pass primitive type ${type.name} through interop`);
@@ -1,8 +1,9 @@
1
1
  import { Language } from "../Language";
2
2
  import { LibraryInterface } from "../LibraryInterface";
3
+ import { PeerLibrary } from "../peer-generation/PeerLibrary";
3
4
  import { LanguageWriter } from "./LanguageWriter";
4
- import { TypeConvertor } from "./nameConvertor";
5
+ import { IdlNameConvertor } from "./nameConvertor";
5
6
  export * from "./nameConvertor";
6
- export declare function createLanguageWriter(language: Language, library: LibraryInterface): LanguageWriter;
7
- export declare function createInteropArgConvertor(language: Language): TypeConvertor<string>;
7
+ export declare function createLanguageWriter(language: Language, library: LibraryInterface, nameConvertor?: IdlNameConvertor): LanguageWriter;
8
+ export declare function createInteropArgConvertor(language: Language, library: PeerLibrary): IdlNameConvertor;
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1,11 +1,10 @@
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 { KotlinCInteropArgConvertor, KotlinTypeNameConvertor } from "./convertors/KotlinConvertors";
7
+ import { KotlinTypeNameConvertor } from "./convertors/KotlinConvertors";
9
8
  import { TSInteropArgConvertor, TSTypeNameConvertor } from "./convertors/TSConvertors";
10
9
  import { CJLanguageWriter } from "./writers/CJLanguageWriter";
11
10
  import { CppLanguageWriter } from "./writers/CppLanguageWriter";
@@ -13,26 +12,25 @@ import { ETSLanguageWriter } from "./writers/ETSLanguageWriter";
13
12
  import { KotlinLanguageWriter } from "./writers/KotlinLanguageWriter";
14
13
  import { TSLanguageWriter } from "./writers/TsLanguageWriter";
15
14
  export * from "./nameConvertor";
16
- export function createLanguageWriter(language, library) {
15
+ export function createLanguageWriter(language, library, nameConvertor) {
17
16
  const printer = new IndentedPrinter();
18
17
  switch (language) {
19
- case Language.TS: return new TSLanguageWriter(printer, library, new TSTypeNameConvertor(library));
20
- case Language.ARKTS: return new ETSLanguageWriter(printer, library, new ETSTypeNameConvertor(library), new CppConvertor(library));
21
- case Language.CPP: return new CppLanguageWriter(printer, library, new CppConvertor(library), PrimitiveTypesInstance);
22
- case Language.CJ: return new CJLanguageWriter(printer, library, new CJTypeNameConvertor(library), new CJIDLTypeToForeignStringConvertor(library));
23
- case Language.KOTLIN: return new KotlinLanguageWriter(printer, library, new KotlinTypeNameConvertor(library));
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));
24
23
  default: throw new Error(`Language ${language.toString()} is not supported`);
25
24
  }
26
25
  }
27
- export function createInteropArgConvertor(language) {
26
+ export function createInteropArgConvertor(language, library) {
28
27
  switch (language) {
29
28
  case Language.TS: return new TSInteropArgConvertor();
30
29
  case Language.ARKTS: return new ETSInteropArgConvertor();
31
30
  case Language.CPP: return CppInteropArgConvertor.INSTANCE;
32
31
  case Language.CJ: return new CJInteropArgConvertor();
33
- case Language.KOTLIN: return new KotlinCInteropArgConvertor();
32
+ case Language.KOTLIN: return new KotlinTypeNameConvertor(library);
34
33
  }
35
34
  throw new Error(`InteropArgConvertor for language ${language} not implemented`);
36
35
  }
37
- const EmptyReferenceResolver = createEmptyReferenceResolver();
38
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
@@ -386,7 +386,7 @@ export class CppLanguageWriter extends CLikeLanguageWriter {
386
386
  return createReferenceType('Tag');
387
387
  }
388
388
  getRuntimeType() {
389
- return createReferenceType(`RuntimeType`);
389
+ return createReferenceType(`idlize.stdlib.RuntimeType`);
390
390
  }
391
391
  makeTupleAssign(receiver, tupleFields) {
392
392
  const statements = tupleFields.map((field, index) => {
@@ -1,7 +1,7 @@
1
1
  import { IndentedPrinter } from "../../IndentedPrinter";
2
2
  import { LambdaExpression, LanguageExpression, LanguageStatement, LanguageWriter, MakeAssignOptions, MakeCastOptions, Method, MethodModifier, MethodSignature } from "../LanguageWriter";
3
3
  import { TSLanguageWriter } from "./TsLanguageWriter";
4
- import { IDLEnum, IDLType } from '../../idl';
4
+ import { IDLType } from '../../idl';
5
5
  import { ArgConvertor } from "../ArgConvertors";
6
6
  import * as idl from '../../idl';
7
7
  import { IdlNameConvertor } from "../nameConvertor";
@@ -23,25 +23,14 @@ export declare class EtsAssignStatement implements LanguageStatement {
23
23
  constructor(variableName: string, type: IDLType | undefined, expression: LanguageExpression, isDeclared?: boolean, isConst?: boolean, options?: MakeAssignOptions | undefined);
24
24
  write(writer: LanguageWriter): void;
25
25
  }
26
- export declare class ArkTSEnumEntityStatement implements LanguageStatement {
27
- private readonly enumEntity;
28
- private readonly options;
29
- constructor(enumEntity: IDLEnum, options: {
30
- isExport: boolean;
31
- isDeclare: boolean;
32
- });
33
- write(writer: LanguageWriter): void;
34
- }
35
26
  export declare class ETSLambdaExpression extends LambdaExpression {
36
27
  private convertor;
37
28
  constructor(writer: LanguageWriter, convertor: IdlNameConvertor, signature: MethodSignature, resolver: ReferenceResolver, body?: LanguageStatement[]);
38
29
  protected get statementHasSemicolon(): boolean;
39
30
  asString(): string;
40
31
  }
41
- export declare function generateTypeCheckerName(typeName: string): string;
42
32
  export declare function generateEnumToNumericName(entry: idl.IDLEntry): string;
43
33
  export declare function generateEnumFromNumericName(entry: idl.IDLEntry): string;
44
- export declare function makeArrayTypeCheckCall(valueAccessor: string, typeName: string, writer: LanguageWriter): LanguageExpression;
45
34
  export declare class ETSLanguageWriter extends TSLanguageWriter {
46
35
  private arrayConvertor;
47
36
  constructor(printer: IndentedPrinter, resolver: ReferenceResolver, typeConvertor: IdlNameConvertor, arrayConvertor: IdlNameConvertor);
@@ -62,10 +51,6 @@ export declare class ETSLanguageWriter extends TSLanguageWriter {
62
51
  targetType: (writer: LanguageWriter) => string;
63
52
  }, value: string, accessors: string[], duplicates: Set<string>): LanguageExpression;
64
53
  makeValueFromOption(value: string, destinationConvertor: ArgConvertor): LanguageExpression;
65
- makeEnumEntity(enumEntity: IDLEnum, options: {
66
- isExport: boolean;
67
- isDeclare?: boolean;
68
- }): LanguageStatement;
69
54
  writeMethodCall(receiver: string, method: string, params: string[], nullable?: boolean): void;
70
55
  isQuickType(type: IDLType): boolean;
71
56
  writeNativeMethodDeclaration(method: Method): void;
@@ -74,12 +59,7 @@ export declare class ETSLanguageWriter extends TSLanguageWriter {
74
59
  discriminate(value: string, index: number, type: idl.IDLType, runtimeTypes: RuntimeType[]): string;
75
60
  castToInt(value: string, bitness: 8 | 32): string;
76
61
  castToBoolean(value: string): string;
77
- typeInstanceOf(type: idl.IDLEntry, value: string, members?: string[]): LanguageExpression;
78
- makeTypeCast(value: LanguageExpression, type: idl.IDLType, options?: MakeCastOptions): LanguageExpression;
79
62
  makeCast(value: LanguageExpression, node: idl.IDLNode, options?: MakeCastOptions): LanguageExpression;
80
- static _isUseTypeChecker: boolean;
81
- static get isUseTypeChecker(): boolean;
82
- static useTypeChecker<T>(isUseTypeChecker: boolean, op: () => T): T;
63
+ instanceOf(value: string, type: idl.IDLType): LanguageExpression;
83
64
  }
84
- export declare function makeEnumTypeCheckerCall(valueAccessor: string, enumName: string, writer: LanguageWriter): LanguageExpression;
85
65
  //# sourceMappingURL=ETSLanguageWriter.d.ts.map
@@ -15,11 +15,10 @@
15
15
  import { IndentedPrinter } from "../../IndentedPrinter";
16
16
  import { BlockStatement, LambdaExpression, MethodModifier } from "../LanguageWriter";
17
17
  import { TSCastExpression, TSLanguageWriter } from "./TsLanguageWriter";
18
- import { getExtAttribute, IDLThisType } from '../../idl';
18
+ import { IDLThisType } from '../../idl';
19
19
  import { AggregateConvertor, CustomTypeConvertor, InterfaceConvertor, MaterializedClassConvertor } from "../ArgConvertors";
20
20
  import * as idl from '../../idl';
21
- import { convertDeclaration } from "../nameConvertor";
22
- import { createDeclarationNameConvertor } from "../../peer-generation/idl/IdlNameConvertor";
21
+ import { withInsideInstanceof } from "../nameConvertor";
23
22
  import { Language } from "../../Language";
24
23
  ////////////////////////////////////////////////////////////////
25
24
  // EXPRESSIONS //
@@ -56,7 +55,7 @@ export class EtsAssignStatement {
56
55
  const typeClause = this.type !== undefined ? `: ${writer.getNodeName(this.type)}` : '';
57
56
  const maybeAssign = this.expression !== undefined ? " = " : "";
58
57
  const initValue = this.expression !== undefined ? this.expression : writer.makeString("");
59
- writer.print(`${this.isConst ? "const" : "let"} ${this.variableName} ${typeClause}${maybeAssign}${initValue.asString()}`);
58
+ writer.print(`${this.isConst ? "const" : "let"} ${this.variableName}${typeClause}${maybeAssign}${initValue.asString()}`);
60
59
  }
61
60
  else {
62
61
  const receiver = (_a = this.options) === null || _a === void 0 ? void 0 : _a.receiver;
@@ -82,46 +81,6 @@ class ArkTSMapForEachStatement {
82
81
  writer.print(`}`);
83
82
  }
84
83
  }
85
- export class ArkTSEnumEntityStatement {
86
- constructor(enumEntity, options) {
87
- this.enumEntity = enumEntity;
88
- this.options = options;
89
- }
90
- write(writer) {
91
- let enumName = convertDeclaration(createDeclarationNameConvertor(Language.ARKTS), this.enumEntity);
92
- enumName = enumName.split('.').at(-1);
93
- const members = this.enumEntity.elements
94
- .flatMap((member, index) => {
95
- var _a;
96
- const initText = (_a = member.initializer) !== null && _a !== void 0 ? _a : index;
97
- const isTypeString = typeof initText !== "number";
98
- 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;
121
- });
122
- writer.writeEnum(enumName, members, { isExport: this.options.isExport, isDeclare: this.options.isDeclare });
123
- }
124
- }
125
84
  export class ETSLambdaExpression extends LambdaExpression {
126
85
  constructor(writer, convertor, signature, resolver, body) {
127
86
  super(writer, signature, resolver, body);
@@ -149,12 +108,6 @@ export class ETSLambdaExpression extends LambdaExpression {
149
108
  ////////////////////////////////////////////////////////////////
150
109
  // UTILS //
151
110
  ////////////////////////////////////////////////////////////////
152
- export function generateTypeCheckerName(typeName) {
153
- return "is" + typeName
154
- .replaceAll('[]', 'BracketsArray')
155
- .replaceAll(/<.*$/g, '') // delete type arguments
156
- .replaceAll('.', '_');
157
- }
158
111
  export function generateEnumToNumericName(entry) {
159
112
  const typeName = idl.getQualifiedName(entry, "namespace.name").split('.').join('_');
160
113
  return `${typeName}_ToNumeric`;
@@ -163,10 +116,6 @@ export function generateEnumFromNumericName(entry) {
163
116
  const typeName = idl.getQualifiedName(entry, "namespace.name").split('.').join('_');
164
117
  return `${typeName}_FromNumeric`;
165
118
  }
166
- export function makeArrayTypeCheckCall(valueAccessor, typeName, writer) {
167
- return writer.makeMethodCall("TypeChecker", generateTypeCheckerName(typeName), [writer.makeString(valueAccessor)
168
- ]);
169
- }
170
119
  ////////////////////////////////////////////////////////////////
171
120
  // WRITER //
172
121
  ////////////////////////////////////////////////////////////////
@@ -204,18 +153,22 @@ export class ETSLanguageWriter extends TSLanguageWriter {
204
153
  return this.makeString(`${value} as ${type}`);
205
154
  }
206
155
  i32FromEnum(value, enumEntry) {
207
- if (ETSLanguageWriter.isUseTypeChecker) {
208
- return this.makeMethodCall('TypeChecker', generateEnumToNumericName(enumEntry), [value]);
156
+ if (idl.isStringEnum(enumEntry)) {
157
+ let extractorStatement = this.makeMethodCall(value.asString(), 'getOrdinal', []);
158
+ if (enumEntry.elements.some(it => idl.hasExtAttribute(it, idl.IDLExtendedAttributes.OriginalEnumMemberName))) {
159
+ extractorStatement = this.makeNaryOp('%', [
160
+ extractorStatement,
161
+ this.makeString(enumEntry.elements.length.toString())
162
+ ]);
163
+ }
164
+ return extractorStatement;
165
+ }
166
+ else {
167
+ return this.makeMethodCall(value.asString(), 'valueOf', []);
209
168
  }
210
- return idl.isStringEnum(enumEntry)
211
- ? this.makeMethodCall(value.asString(), 'getOrdinal', [])
212
- : this.makeMethodCall(value.asString(), 'valueOf', []);
213
169
  }
214
170
  enumFromI32(value, enumEntry) {
215
171
  const enumName = this.getNodeName(enumEntry);
216
- if (ETSLanguageWriter.isUseTypeChecker) {
217
- return this.makeMethodCall('TypeChecker', generateEnumFromNumericName(enumEntry), [value]);
218
- }
219
172
  return idl.isStringEnum(enumEntry)
220
173
  ? this.makeString(`${enumName}.values()[${value.asString()}]`)
221
174
  : this.makeMethodCall(enumName, 'fromValue', [value]);
@@ -227,7 +180,7 @@ export class ETSLanguageWriter extends TSLanguageWriter {
227
180
  || convertor instanceof CustomTypeConvertor) {
228
181
  return this.instanceOf(value, convertor.idlType);
229
182
  }
230
- return this.makeString(`${value} instanceof ${convertor.targetType(this)}`);
183
+ return this.makeString(`${value} instanceof ${withInsideInstanceof(true, () => convertor.targetType(this))}`);
231
184
  }
232
185
  makeValueFromOption(value, destinationConvertor) {
233
186
  if (idl.isEnum(this.resolver.toDeclaration(destinationConvertor.nativeType()))) {
@@ -235,12 +188,6 @@ export class ETSLanguageWriter extends TSLanguageWriter {
235
188
  }
236
189
  return super.makeValueFromOption(value, destinationConvertor);
237
190
  }
238
- makeEnumEntity(enumEntity, options) {
239
- return new ArkTSEnumEntityStatement(enumEntity, {
240
- isExport: options === null || options === void 0 ? void 0 : options.isExport,
241
- isDeclare: !!(options === null || options === void 0 ? void 0 : options.isDeclare),
242
- });
243
- }
244
191
  writeMethodCall(receiver, method, params, nullable = false) {
245
192
  // ArkTS does not support - 'this.?'
246
193
  super.writeMethodCall(receiver, method, params, nullable && receiver !== "this");
@@ -266,15 +213,16 @@ export class ETSLanguageWriter extends TSLanguageWriter {
266
213
  return super.makeNaryOp('==', args);
267
214
  }
268
215
  discriminate(value, index, type, runtimeTypes) {
269
- // work around ArkTS compiler bugs
270
- if (idl.IDLContainerUtils.isSequence(type)) {
271
- const arrayTypeName = this.arrayConvertor.convert(type);
272
- return `TypeChecker.${generateTypeCheckerName(arrayTypeName)}(${value})`;
273
- }
274
- if (this.getNodeName(type) === "DragPreviewMode") {
275
- return `TypeChecker.isDragPreviewMode(${value})`;
276
- }
277
- return `${value} instanceof ${this.getNodeName(type)}`;
216
+ return `${value} instanceof ${withInsideInstanceof(true, () => {
217
+ let typeName = this.getNodeName(type);
218
+ if (idl.isReferenceType(type)) {
219
+ const decl = this.resolver.resolveTypeReference(type);
220
+ if (decl && idl.isInterface(decl) && decl.subkind == idl.IDLInterfaceSubkind.Tuple) {
221
+ typeName = "Tuple";
222
+ }
223
+ }
224
+ return typeName;
225
+ })}`;
278
226
  }
279
227
  castToInt(value, bitness) {
280
228
  // This fix is used to avoid unnecessary writeInt8(value as int32) call, which is generated if value is already an int32
@@ -284,50 +232,23 @@ export class ETSLanguageWriter extends TSLanguageWriter {
284
232
  return `(${value}).toChar()`;
285
233
  return `(${value}).toInt()`; // FIXME: is there int8 in ARKTS?
286
234
  }
287
- castToBoolean(value) { return `${value} ? 1 : 0`; }
288
- typeInstanceOf(type, value, members) {
289
- if (!members || members.length === 0) {
290
- throw new Error("At least one member needs to provided to pass it to TypeChecker!");
291
- }
292
- const prop = members[0];
293
- // Use the same typeInstanceOf<T>(...) method to compile the ETS code by two compilers ArkTS and TS
294
- return this.makeString(`TypeChecker.typeInstanceOf<${this.getNodeName(type)}>(value, "${prop}")`);
295
- }
296
- makeTypeCast(value, type, options) {
297
- return this.makeString(`TypeChecker.typeCast<${this.getNodeName(type)}>(value)`);
298
- }
235
+ castToBoolean(value) { return `${value} ? true : false`; }
299
236
  makeCast(value, node, options) {
300
237
  var _a;
301
238
  if (node === idl.IDLI64Type)
302
- return this.makeMethodCall(value.asString(), `toLong`, []);
239
+ return this.makeMethodCall(value.asString() + '!', `toLong`, []);
303
240
  if (node === idl.IDLI32Type)
304
- return this.makeMethodCall(value.asString(), `toInt`, []);
241
+ return this.makeMethodCall(value.asString() + '!', `toInt`, []);
305
242
  if (node === idl.IDLI8Type)
306
- return this.makeMethodCall(value.asString(), `toByte`, []);
243
+ return this.makeMethodCall(value.asString() + '!', `toByte`, []);
307
244
  if (node === idl.IDLF64Type)
308
- return this.makeMethodCall(value.asString(), `toDouble`, []);
245
+ return this.makeMethodCall(value.asString() + '!', `toDouble`, []);
309
246
  if (node === idl.IDLF32Type)
310
- return this.makeMethodCall(value.asString(), `toFloat`, []);
247
+ return this.makeMethodCall(value.asString() + '!', `toFloat`, []);
311
248
  return new TSCastExpression(value, `${this.getNodeName(node)}`, (_a = options === null || options === void 0 ? void 0 : options.unsafe) !== null && _a !== void 0 ? _a : false);
312
249
  }
313
- static get isUseTypeChecker() { return this._isUseTypeChecker; }
314
- static useTypeChecker(isUseTypeChecker, op) {
315
- const prevIsUse = this.isReferenceRelativeToNamespaces;
316
- this._isUseTypeChecker = isUseTypeChecker;
317
- const result = op();
318
- this._isUseTypeChecker = prevIsUse;
319
- return result;
250
+ instanceOf(value, type) {
251
+ return this.makeString(this.discriminate(value, -1, type, []));
320
252
  }
321
253
  }
322
- ETSLanguageWriter._isUseTypeChecker = true;
323
- function makeInterfaceTypeCheckerCall(valueAccessor, interfaceName, allFields, duplicates, writer) {
324
- return writer.makeMethodCall("TypeChecker", generateTypeCheckerName(interfaceName), [writer.makeString(valueAccessor),
325
- ...allFields.map(it => {
326
- return writer.makeString(duplicates.has(it) ? "true" : "false");
327
- })
328
- ]);
329
- }
330
- export function makeEnumTypeCheckerCall(valueAccessor, enumName, writer) {
331
- return writer.makeMethodCall("TypeChecker", generateTypeCheckerName(enumName), [writer.makeString(valueAccessor)]);
332
- }
333
254
  //# sourceMappingURL=ETSLanguageWriter.js.map
@@ -78,6 +78,7 @@ export declare class TSLanguageWriter extends LanguageWriter {
78
78
  makeMapForEach(map: string, key: string, value: string, body: LanguageStatement[]): LanguageStatement;
79
79
  writePrintLog(message: string): void;
80
80
  makeCast(value: LanguageExpression, node: idl.IDLNode, options?: MakeCastOptions): LanguageExpression;
81
+ instanceOf(value: string, type: idl.IDLType): LanguageExpression;
81
82
  typeInstanceOf(type: idl.IDLEntry, value: string, members?: string[]): LanguageExpression;
82
83
  getObjectAccessor(convertor: ArgConvertor, value: string, args?: ObjectArgs): string;
83
84
  makeUndefined(): LanguageExpression;
@@ -100,5 +101,7 @@ export declare class TSLanguageWriter extends LanguageWriter {
100
101
  makeCallIsObject(value: string): LanguageExpression;
101
102
  escapeKeyword(keyword: string): string;
102
103
  discriminate(value: string, index: number, type: idl.IDLType, runtimeTypes: RuntimeType[]): string;
104
+ private writingClassBody;
105
+ classOp(op: () => void): void;
103
106
  }
104
107
  //# sourceMappingURL=TsLanguageWriter.d.ts.map