@idlizer/core 2.1.10-arktscgen-5 → 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 (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 -6
  5. package/build/lib/src/LanguageWriters/LanguageWriter.js +8 -2
  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 +25 -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 +1 -8
  20. package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.js +52 -89
  21. package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.d.ts +3 -0
  22. package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +24 -7
  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 +4 -0
  88. package/build/lib/src/util.js +22 -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
@@ -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 } 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,9 @@ 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
+ ? (_b = (_a = type.typeArguments) === null || _a === void 0 ? void 0 : _a.map(it => this.convert(it))) !== null && _b !== void 0 ? _b : []
146
+ : [];
145
147
  if (typeSpec === `Optional`)
146
148
  return `${typeArgs} | undefined`;
147
149
  if (typeSpec === `Function`)
@@ -249,7 +251,7 @@ export class TSTypeNameConvertor {
249
251
  return name;
250
252
  }
251
253
  mapFunctionType(typeArgs) {
252
- return `Function${typeArgs.length ? `<${typeArgs.join(",")}>` : ''}`;
254
+ return isInsideInstanceof() ? `Function` : `Function${typeArgs.length ? `<${typeArgs.join(",")}>` : ''}`;
253
255
  }
254
256
  }
255
257
  export class TSInteropArgConvertor {
@@ -257,6 +259,11 @@ export class TSInteropArgConvertor {
257
259
  return convertType(this, type);
258
260
  }
259
261
  convertContainer(type) {
262
+ switch (type.elementType[0]) {
263
+ case idl.IDLU8Type: return 'KUint8ArrayPtr';
264
+ case idl.IDLI32Type: return 'KInt32ArrayPtr';
265
+ case idl.IDLF32Type: return 'KFloat32ArrayPtr';
266
+ }
260
267
  throw new Error(`Cannot pass container types through interop`);
261
268
  }
262
269
  convertImport(type) {
@@ -276,13 +283,17 @@ export class TSInteropArgConvertor {
276
283
  case idl.IDLF64Type: return "KDouble";
277
284
  case idl.IDLNumberType: return 'number';
278
285
  case idl.IDLBigintType: return 'bigint';
279
- case idl.IDLBooleanType:
286
+ case idl.IDLBooleanType: return 'boolean';
280
287
  case idl.IDLFunctionType: return 'KInt';
281
288
  case idl.IDLStringType: return 'KStringPtr';
282
289
  case idl.IDLBufferType: return 'ArrayBuffer';
290
+ case idl.IDLSerializerBuffer: return 'KSerializerBuffer';
291
+ case idl.IDLInteropReturnBufferType: return `KInteropReturnBuffer`;
292
+ case idl.IDLObjectType: return 'Object';
293
+ case idl.IDLAnyType: return "Object";
283
294
  case idl.IDLDate: return 'number';
295
+ case idl.IDLVoidType: return 'void';
284
296
  case idl.IDLUndefinedType:
285
- case idl.IDLVoidType:
286
297
  case idl.IDLPointerType: return 'KPointer';
287
298
  }
288
299
  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) => {
@@ -38,10 +38,8 @@ 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);
@@ -74,12 +72,7 @@ export declare class ETSLanguageWriter extends TSLanguageWriter {
74
72
  discriminate(value: string, index: number, type: idl.IDLType, runtimeTypes: RuntimeType[]): string;
75
73
  castToInt(value: string, bitness: 8 | 32): string;
76
74
  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
75
  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;
76
+ instanceOf(value: string, type: idl.IDLType): LanguageExpression;
83
77
  }
84
- export declare function makeEnumTypeCheckerCall(valueAccessor: string, enumName: string, writer: LanguageWriter): LanguageExpression;
85
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
  ////////////////////////////////////////////////////////////////
@@ -204,18 +189,22 @@ export class ETSLanguageWriter extends TSLanguageWriter {
204
189
  return this.makeString(`${value} as ${type}`);
205
190
  }
206
191
  i32FromEnum(value, enumEntry) {
207
- if (ETSLanguageWriter.isUseTypeChecker) {
208
- 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', []);
209
204
  }
210
- return idl.isStringEnum(enumEntry)
211
- ? this.makeMethodCall(value.asString(), 'getOrdinal', [])
212
- : this.makeMethodCall(value.asString(), 'valueOf', []);
213
205
  }
214
206
  enumFromI32(value, enumEntry) {
215
207
  const enumName = this.getNodeName(enumEntry);
216
- if (ETSLanguageWriter.isUseTypeChecker) {
217
- return this.makeMethodCall('TypeChecker', generateEnumFromNumericName(enumEntry), [value]);
218
- }
219
208
  return idl.isStringEnum(enumEntry)
220
209
  ? this.makeString(`${enumName}.values()[${value.asString()}]`)
221
210
  : this.makeMethodCall(enumName, 'fromValue', [value]);
@@ -227,7 +216,7 @@ export class ETSLanguageWriter extends TSLanguageWriter {
227
216
  || convertor instanceof CustomTypeConvertor) {
228
217
  return this.instanceOf(value, convertor.idlType);
229
218
  }
230
- return this.makeString(`${value} instanceof ${convertor.targetType(this)}`);
219
+ return this.makeString(`${value} instanceof ${withInsideInstanceof(true, () => convertor.targetType(this))}`);
231
220
  }
232
221
  makeValueFromOption(value, destinationConvertor) {
233
222
  if (idl.isEnum(this.resolver.toDeclaration(destinationConvertor.nativeType()))) {
@@ -266,15 +255,16 @@ export class ETSLanguageWriter extends TSLanguageWriter {
266
255
  return super.makeNaryOp('==', args);
267
256
  }
268
257
  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)}`;
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
+ })}`;
278
268
  }
279
269
  castToInt(value, bitness) {
280
270
  // This fix is used to avoid unnecessary writeInt8(value as int32) call, which is generated if value is already an int32
@@ -284,50 +274,23 @@ export class ETSLanguageWriter extends TSLanguageWriter {
284
274
  return `(${value}).toChar()`;
285
275
  return `(${value}).toInt()`; // FIXME: is there int8 in ARKTS?
286
276
  }
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
- }
277
+ castToBoolean(value) { return `${value} ? true : false`; }
299
278
  makeCast(value, node, options) {
300
279
  var _a;
301
280
  if (node === idl.IDLI64Type)
302
- return this.makeMethodCall(value.asString(), `toLong`, []);
281
+ return this.makeMethodCall(value.asString() + '!', `toLong`, []);
303
282
  if (node === idl.IDLI32Type)
304
- return this.makeMethodCall(value.asString(), `toInt`, []);
283
+ return this.makeMethodCall(value.asString() + '!', `toInt`, []);
305
284
  if (node === idl.IDLI8Type)
306
- return this.makeMethodCall(value.asString(), `toByte`, []);
285
+ return this.makeMethodCall(value.asString() + '!', `toByte`, []);
307
286
  if (node === idl.IDLF64Type)
308
- return this.makeMethodCall(value.asString(), `toDouble`, []);
287
+ return this.makeMethodCall(value.asString() + '!', `toDouble`, []);
309
288
  if (node === idl.IDLF32Type)
310
- return this.makeMethodCall(value.asString(), `toFloat`, []);
289
+ return this.makeMethodCall(value.asString() + '!', `toFloat`, []);
311
290
  return new TSCastExpression(value, `${this.getNodeName(node)}`, (_a = options === null || options === void 0 ? void 0 : options.unsafe) !== null && _a !== void 0 ? _a : false);
312
291
  }
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;
292
+ instanceOf(value, type) {
293
+ return this.makeString(this.discriminate(value, -1, type, []));
320
294
  }
321
295
  }
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
296
  //# 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
@@ -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 ""; }
@@ -159,7 +160,7 @@ export class TSLanguageWriter extends LanguageWriter {
159
160
  let abstractClause = isAbstract ? ` abstract` : '';
160
161
  this.printer.print(`export${declaredClause}${abstractClause} class ${name}${genericsClause}${extendsClause}${implementsClause} {`);
161
162
  this.pushIndent();
162
- op(this);
163
+ this.classOp(() => op(this));
163
164
  this.popIndent();
164
165
  this.printer.print(`}`);
165
166
  }
@@ -201,7 +202,7 @@ export class TSLanguageWriter extends LanguageWriter {
201
202
  value = member.alias;
202
203
  }
203
204
  else {
204
- value = `${member.stringId != undefined ? `"${member.stringId}"` : `${member.numberId}`}`;
205
+ value = `${member.stringId != undefined ? `'${member.stringId}'` : `${member.numberId}`}`;
205
206
  }
206
207
  const maybeComma = index < members.length - 1 ? "," : "";
207
208
  this.printer.print(`${member.name} = ${value}${maybeComma}`);
@@ -210,6 +211,11 @@ export class TSLanguageWriter extends LanguageWriter {
210
211
  this.printer.print("}");
211
212
  }
212
213
  writeFieldDeclaration(name, type, modifiers, optional, initExpr) {
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
+ }
213
219
  let prefix = this.makeFieldModifiersList(modifiers);
214
220
  if (prefix)
215
221
  prefix += " ";
@@ -300,7 +306,7 @@ export class TSLanguageWriter extends LanguageWriter {
300
306
  for (let i = 0; i < importedFeatures.length; i++) {
301
307
  importNodes.push(importedFeatures[i] + (aliases[i] ? ` as ${aliases[i]}` : ``));
302
308
  }
303
- this.writeExpressionStatement(this.makeString(`import { ${importNodes.join(', ')} } from "${moduleName}"`));
309
+ this.writeExpressionStatement(this.makeString(`import { ${importNodes.join(', ')} } from '${moduleName}'`));
304
310
  }
305
311
  writeDeclaration(name, signature, needReturn, needBracket, modifiers, generics) {
306
312
  let prefix = !modifiers ? undefined : this.supportedModifiers
@@ -354,6 +360,11 @@ export class TSLanguageWriter extends LanguageWriter {
354
360
  var _a;
355
361
  return new TSCastExpression(value, this.getNodeName(node), (_a = options === null || options === void 0 ? void 0 : options.unsafe) !== null && _a !== void 0 ? _a : false);
356
362
  }
363
+ instanceOf(value, type) {
364
+ return idl.IDLContainerUtils.isSequence(type)
365
+ ? this.makeString(`Array.isArray(${value})`)
366
+ : super.instanceOf(value, type);
367
+ }
357
368
  typeInstanceOf(type, value, members) {
358
369
  if (idl.isInterface(type)) {
359
370
  if (idl.isInterfaceSubkind(type)) {
@@ -440,16 +451,22 @@ export class TSLanguageWriter extends LanguageWriter {
440
451
  }
441
452
  return this.makeString(`${value.asString()}.valueOf()`);
442
453
  }
443
- castToBoolean(value) { return `+${value}`; }
454
+ castToBoolean(value) { return `!!${value}`; }
444
455
  makeCallIsObject(value) {
445
456
  return this.makeString(`${value} instanceof Object`);
446
457
  }
447
458
  escapeKeyword(keyword) {
448
- return TSKeywords.has(keyword) ? keyword + "_" : keyword;
459
+ return TSKeywords.has(keyword) ? keyword + "Val" : keyword;
449
460
  }
450
461
  discriminate(value, index, type, runtimeTypes) {
451
462
  const runtimeTypeList = runtimeTypes.map(ty => "RuntimeType." + RuntimeType[ty]).join(", ");
452
463
  return `[${runtimeTypeList}].includes(runtimeType(${value}))`;
453
464
  }
465
+ classOp(op) {
466
+ const old = this.writingClassBody;
467
+ this.writingClassBody = true;
468
+ op();
469
+ this.writingClassBody = old;
470
+ }
454
471
  }
455
472
  //# sourceMappingURL=TsLanguageWriter.js.map