@idlizer/core 2.0.43 → 2.1.2

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 (45) hide show
  1. package/build/lib/src/LanguageWriters/ArgConvertors.d.ts +17 -1
  2. package/build/lib/src/LanguageWriters/ArgConvertors.js +115 -13
  3. package/build/lib/src/LanguageWriters/LanguageWriter.d.ts +13 -5
  4. package/build/lib/src/LanguageWriters/LanguageWriter.js +9 -3
  5. package/build/lib/src/LanguageWriters/convertors/CppConvertors.d.ts +1 -1
  6. package/build/lib/src/LanguageWriters/convertors/CppConvertors.js +15 -13
  7. package/build/lib/src/LanguageWriters/convertors/ETSConvertors.js +0 -1
  8. package/build/lib/src/LanguageWriters/convertors/InteropConvertors.js +4 -0
  9. package/build/lib/src/LanguageWriters/convertors/TSConvertors.js +2 -1
  10. package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.d.ts +10 -2
  11. package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.js +47 -29
  12. package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.d.ts +10 -3
  13. package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.js +7 -10
  14. package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.d.ts +0 -5
  15. package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.js +1 -42
  16. package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.d.ts +9 -3
  17. package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.js +30 -7
  18. package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.d.ts +8 -2
  19. package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +38 -11
  20. package/build/lib/src/LibraryInterface.d.ts +0 -1
  21. package/build/lib/src/config.d.ts +889 -0
  22. package/build/lib/src/config.js +11 -0
  23. package/build/lib/src/from-idl/DtsPrinter.js +2 -2
  24. package/build/lib/src/idl.d.ts +4 -2
  25. package/build/lib/src/idl.js +13 -2
  26. package/build/lib/src/idlize.d.ts +1 -0
  27. package/build/lib/src/idlize.js +3 -2
  28. package/build/lib/src/index.d.ts +2 -0
  29. package/build/lib/src/index.js +2 -0
  30. package/build/lib/src/peer-generation/PeerLibrary.d.ts +1 -3
  31. package/build/lib/src/peer-generation/PeerLibrary.js +23 -9
  32. package/build/lib/src/peer-generation/PeerMethod.js +2 -16
  33. package/build/lib/src/peer-generation/isEnumType.d.ts +5 -0
  34. package/build/lib/src/peer-generation/isEnumType.js +29 -0
  35. package/build/lib/src/peer-generation/isMaterialized.js +16 -1
  36. package/build/lib/src/peer-generation/modules.d.ts +10 -0
  37. package/build/lib/src/peer-generation/modules.js +38 -0
  38. package/build/lib/src/util.d.ts +1 -0
  39. package/build/lib/src/util.js +6 -0
  40. package/package.json +2 -2
  41. package/build/lib/src/configMerge.d.ts +0 -2
  42. package/build/lib/src/configMerge.js +0 -42
  43. package/webidl2.js/LICENSE +0 -21
  44. package/webidl2.js/README.md +0 -827
  45. package/webidl2.js/dist/package.json +0 -3
@@ -12,15 +12,15 @@
12
12
  * See the License for the specific language governing permissions and
13
13
  * limitations under the License.
14
14
  */
15
- import { createReferenceType, forceAsNamedNode, IDLU32Type, IDLUint8ArrayType, IDLVoidType } from '../../idl';
15
+ import { createReferenceType, forceAsNamedNode, IDLU32Type, IDLVoidType } from '../../idl';
16
16
  import { Language } from '../../Language';
17
17
  import { PrimitiveTypeList } from "../../peer-generation/PrimitiveType";
18
18
  import { AssignStatement, BlockStatement, FieldModifier, PrintHint, MethodModifier, NamedMethodSignature, StringExpression } from "../LanguageWriter";
19
19
  import { CDefinedExpression, CLikeExpressionStatement, CLikeLanguageWriter, CLikeLoopStatement, CLikeReturnStatement } from "./CLikeLanguageWriter";
20
20
  import { RuntimeType } from "../common";
21
21
  import { IndentedPrinter } from "../../IndentedPrinter";
22
- import { throwException } from "../../util";
23
22
  import { cppKeywords } from "../../languageSpecificKeywords";
23
+ import * as idl from "../../idl";
24
24
  ////////////////////////////////////////////////////////////////
25
25
  // EXPRESSIONS //
26
26
  ////////////////////////////////////////////////////////////////
@@ -217,7 +217,7 @@ export class CppLanguageWriter extends CLikeLanguageWriter {
217
217
  this.popIndent();
218
218
  this.print(`}`);
219
219
  }
220
- writeProperty(propName, propType, mutable = true) {
220
+ writeProperty(propName, propType, modifiers, getter, setter) {
221
221
  throw new Error("writeProperty for c++ is not implemented yet.");
222
222
  }
223
223
  writeTypeDeclaration(decl) {
@@ -376,7 +376,7 @@ export class CppLanguageWriter extends CLikeLanguageWriter {
376
376
  ordinalFromEnum(value, _) {
377
377
  return value;
378
378
  }
379
- makeUnsafeCast(convertor, param) {
379
+ makeUnsafeCast(param) {
380
380
  return param;
381
381
  }
382
382
  makeUnsafeCast_(value, type, typeOptions) {
@@ -396,11 +396,8 @@ export class CppLanguageWriter extends CLikeLanguageWriter {
396
396
  }
397
397
  return `(${typeName}) (${value.asString()})`;
398
398
  }
399
- makeEnumCast(value, _unsafe, convertor) {
400
- if (convertor !== undefined) {
401
- return `static_cast<${this.typeConvertor.convert(convertor.nativeType())}>(${value})`;
402
- }
403
- throwException("Need pass EnumConvertor");
399
+ makeEnumCast(enumEntry, value) {
400
+ return `static_cast<${this.typeConvertor.convert(idl.createReferenceType(enumEntry))}>(${value})`;
404
401
  }
405
402
  escapeKeyword(name) {
406
403
  return cppKeywords.has(name) ? name + "_" : name;
@@ -463,7 +460,7 @@ export class CppLanguageWriter extends CLikeLanguageWriter {
463
460
  }
464
461
  makeSerializerConstructorSignatures() {
465
462
  const fromBufferCtor = new NamedMethodSignature(IDLVoidType, [
466
- IDLUint8ArrayType,
463
+ idl.IDLSerializerBuffer,
467
464
  IDLU32Type,
468
465
  createReferenceType("CallbackResourceHolder")
469
466
  ], ["data", "dataLength", "resourceHolder"], [undefined, `0`, `nullptr`], [undefined, undefined, undefined, PrintHint.AsPointer]);
@@ -42,7 +42,6 @@ export declare class ETSLanguageWriter extends TSLanguageWriter {
42
42
  makeMapForEach(map: string, key: string, value: string, op: () => void): LanguageStatement;
43
43
  makeMapSize(map: string): LanguageExpression;
44
44
  get supportedModifiers(): MethodModifier[];
45
- makeUnsafeCast(convertor: ArgConvertor, param: string): string;
46
45
  runtimeType(param: ArgConvertor, valueType: string, value: string): void;
47
46
  makeUnionVariantCast(value: string, type: string, convertor: ArgConvertor, index?: number): LanguageExpression;
48
47
  enumFromOrdinal(value: LanguageExpression, enumEntry: idl.IDLType): LanguageExpression;
@@ -55,12 +54,8 @@ export declare class ETSLanguageWriter extends TSLanguageWriter {
55
54
  makeEnumEntity(enumEntity: IDLEnum, isExport: boolean): LanguageStatement;
56
55
  getObjectAccessor(convertor: ArgConvertor, value: string, args?: ObjectArgs): string;
57
56
  writeMethodCall(receiver: string, method: string, params: string[], nullable?: boolean): void;
58
- isDirectType(type: IDLType): boolean;
59
57
  isQuickType(type: IDLType): boolean;
60
- tryWriteQuick(method: Method): void;
61
58
  writeNativeMethodDeclaration(method: Method): void;
62
- writeProperty(propName: string, propType: IDLType): void;
63
- makeEnumCast(value: string, _unsafe: boolean, convertor: ArgConvertor | undefined): string;
64
59
  makeUnionVariantCondition(convertor: ArgConvertor, valueName: string, valueType: string, type: string, convertorIndex: number, runtimeTypeIndex: number): LanguageExpression;
65
60
  makeCastCustomObject(customName: string, isGenericType: boolean): LanguageExpression;
66
61
  makeHasOwnProperty(value: string, valueTypeName: string, property: string, propertyTypeName: string): LanguageExpression;
@@ -15,14 +15,13 @@
15
15
  import { IndentedPrinter } from "../../IndentedPrinter";
16
16
  import { LambdaExpression, MethodModifier } from "../LanguageWriter";
17
17
  import { TSCastExpression, TSLanguageWriter } from "./TsLanguageWriter";
18
- import { getExtAttribute, IDLI32Type, IDLThisType } from '../../idl';
18
+ import { getExtAttribute, IDLThisType } from '../../idl';
19
19
  import { AggregateConvertor, ArrayConvertor, CustomTypeConvertor, InterfaceConvertor, MaterializedClassConvertor, OptionConvertor, UnionConvertor, BufferConvertor } from "../ArgConvertors";
20
20
  import * as idl from '../../idl';
21
21
  import { convertDeclaration } from "../nameConvertor";
22
22
  import { createDeclarationNameConvertor } from "../../peer-generation/idl/IdlNameConvertor";
23
23
  import { Language } from "../../Language";
24
24
  import { RuntimeType } from "../common";
25
- import { throwException } from "../../util";
26
25
  ////////////////////////////////////////////////////////////////
27
26
  // STATEMENTS //
28
27
  ////////////////////////////////////////////////////////////////
@@ -177,13 +176,6 @@ export class ETSLanguageWriter extends TSLanguageWriter {
177
176
  get supportedModifiers() {
178
177
  return [MethodModifier.PUBLIC, MethodModifier.PRIVATE, MethodModifier.NATIVE, MethodModifier.STATIC];
179
178
  }
180
- makeUnsafeCast(convertor, param) {
181
- if (idl.isEnum(convertor.idlType) && !param.endsWith(".value")) {
182
- const isStringEnum = idl.isStringEnum(convertor.idlType);
183
- return `(${param} as ${this.typeConvertor.convert(convertor.idlType)}).${isStringEnum ? 'ordinal' : 'value'}`;
184
- }
185
- return super.makeUnsafeCast(convertor, param);
186
- }
187
179
  runtimeType(param, valueType, value) {
188
180
  super.runtimeType(param, valueType, value);
189
181
  }
@@ -226,48 +218,15 @@ export class ETSLanguageWriter extends TSLanguageWriter {
226
218
  // ArkTS does not support - 'this.?'
227
219
  super.writeMethodCall(receiver, method, params, nullable && receiver !== "this");
228
220
  }
229
- isDirectType(type) {
230
- let converted = this.getNodeName(type);
231
- return type == idl.IDLI32Type || type == idl.IDLPointerType || type == idl.IDLBooleanType
232
- || type == idl.IDLVoidType || converted == "KPointer" || converted == "KInt";
233
- }
234
221
  isQuickType(type) {
235
222
  return idl.asPromise(type) == undefined;
236
223
  }
237
- tryWriteQuick(method) {
238
- var _a;
239
- if ((_a = method.modifiers) === null || _a === void 0 ? void 0 : _a.includes(MethodModifier.THROWS))
240
- return;
241
- if (false && this.isDirectType(method.signature.returnType) && method.signature.args.every((type) => this.isDirectType(type))) {
242
- this.print('@ani.unsafe.Direct');
243
- return;
244
- }
245
- if (this.isQuickType(method.signature.returnType)) {
246
- this.print('@ani.unsafe.Quick');
247
- return;
248
- }
249
- }
250
224
  writeNativeMethodDeclaration(method) {
251
225
  if (method.signature.returnType === IDLThisType) {
252
226
  throw new Error('static method can not return this!');
253
227
  }
254
- this.tryWriteQuick(method);
255
228
  this.writeMethodDeclaration(method.name, method.signature, [MethodModifier.STATIC, MethodModifier.NATIVE]);
256
229
  }
257
- writeProperty(propName, propType) {
258
- throw new Error("writeProperty for ArkTS is not implemented yet.");
259
- }
260
- makeEnumCast(value, _unsafe, convertor) {
261
- if (convertor === undefined) {
262
- throwException(`The makeEnumCast function required EnumConvertor`);
263
- }
264
- const decl = this.resolver.toDeclaration(convertor.nativeType());
265
- if (!idl.isEnum(decl)) {
266
- throwException(`Declaration type must be Enum`);
267
- }
268
- // ((value as Axis) as int) - in case when Axis was casted to Object in Map<Axis, Smth>
269
- return this.makeCast(this.makeCast(this.makeString(value), convertor.idlType), IDLI32Type).asString();
270
- }
271
230
  makeUnionVariantCondition(convertor, valueName, valueType, type, convertorIndex, runtimeTypeIndex) {
272
231
  if (idl.isEnum(this.resolver.toDeclaration(convertor.nativeType()))) {
273
232
  return this.instanceOf(convertor, valueName);
@@ -40,7 +40,13 @@ export declare class JavaLanguageWriter extends CLikeLanguageWriter {
40
40
  writeFieldDeclaration(name: string, type: idl.IDLType, modifiers: FieldModifier[] | undefined, optional: boolean, initExpr?: LanguageExpression): void;
41
41
  writeNativeMethodDeclaration(method: Method): void;
42
42
  writeConstructorImplementation(className: string, signature: MethodSignature, op: (writer: this) => void, superCall?: Method, modifiers?: MethodModifier[]): void;
43
- writeProperty(propName: string, propType: idl.IDLType): void;
43
+ writeProperty(propName: string, propType: idl.IDLType, modifiers: FieldModifier[], getter?: {
44
+ method: Method;
45
+ op: () => void;
46
+ }, setter?: {
47
+ method: Method;
48
+ op: () => void;
49
+ }): void;
44
50
  writeTypeDeclaration(decl: idl.IDLTypedef): void;
45
51
  writeConstant(constName: string, constType: idl.IDLType, constVal?: string): void;
46
52
  makeAssign(variableName: string, type: idl.IDLType | undefined, expr: LanguageExpression, isDeclared?: boolean, isConst?: boolean): LanguageStatement;
@@ -74,11 +80,11 @@ export declare class JavaLanguageWriter extends CLikeLanguageWriter {
74
80
  makeClassInit(type: idl.IDLType, paramenters: LanguageExpression[]): LanguageExpression;
75
81
  makeMapInit(type: idl.IDLType): LanguageExpression;
76
82
  makeTupleAccess(value: string, index: number): LanguageExpression;
77
- enumFromOrdinal(value: LanguageExpression, _: idl.IDLType): LanguageExpression;
83
+ enumFromOrdinal(value: LanguageExpression, enumEntry: idl.IDLType): LanguageExpression;
78
84
  ordinalFromEnum(value: LanguageExpression, _: idl.IDLType): LanguageExpression;
79
85
  makeValueFromOption(value: string): LanguageExpression;
80
86
  runtimeType(param: ArgConvertor, valueType: string, value: string): void;
81
- makeEnumCast(enumName: string, _unsafe: boolean, _convertor: ArgConvertor | undefined): string;
87
+ makeEnumCast(_enumEntry: idl.IDLEnum, enumName: string): string;
82
88
  castToBoolean(value: string): string;
83
89
  makeLengthSerializer(serializer: string, value: string): LanguageStatement | undefined;
84
90
  }
@@ -14,7 +14,7 @@
14
14
  */
15
15
  import { Language } from '../../Language';
16
16
  import { IndentedPrinter } from "../../IndentedPrinter";
17
- import { AssignStatement, CheckOptionalStatement, FieldModifier, LambdaExpression, MethodModifier, } from "../LanguageWriter";
17
+ import { AssignStatement, CheckOptionalStatement, FieldModifier, LambdaExpression, Method, MethodModifier, MethodSignature, NamedMethodSignature, } from "../LanguageWriter";
18
18
  import { CLikeExpressionStatement, CLikeLanguageWriter, CLikeLoopStatement, CLikeReturnStatement } from "./CLikeLanguageWriter";
19
19
  import * as idl from '../../idl';
20
20
  import { RuntimeType } from "../common";
@@ -149,8 +149,29 @@ export class JavaLanguageWriter extends CLikeLanguageWriter {
149
149
  this.popIndent();
150
150
  this.printer.print(`}`);
151
151
  }
152
- writeProperty(propName, propType) {
153
- throw new Error("writeProperty for Java is not implemented yet.");
152
+ writeProperty(propName, propType, modifiers, getter, setter) {
153
+ let isStatic = modifiers.includes(FieldModifier.STATIC);
154
+ let isMutable = !modifiers.includes(FieldModifier.READONLY);
155
+ let containerName = propName.concat("_container");
156
+ if (getter) {
157
+ if (!getter.op) {
158
+ this.print(`private var ${this.getNodeName(propType)} ${containerName};`);
159
+ }
160
+ this.writeGetterImplementation(new Method(propName, new MethodSignature(propType, []), isStatic ? [MethodModifier.STATIC, MethodModifier.PUBLIC] : [MethodModifier.PUBLIC]), getter ? getter.op :
161
+ (writer) => {
162
+ writer.print(`return ${containerName}`);
163
+ });
164
+ if (isMutable) {
165
+ const setSignature = new NamedMethodSignature(idl.IDLVoidType, [propType], [propName]);
166
+ this.writeSetterImplementation(new Method(propName, setSignature, isStatic ? [MethodModifier.STATIC, MethodModifier.PUBLIC] : [MethodModifier.PUBLIC]), setter ? setter.op :
167
+ (writer) => {
168
+ writer.print(`${containerName} = ${propName};`);
169
+ });
170
+ }
171
+ }
172
+ else {
173
+ this.writeMethodDeclaration(propName, new MethodSignature(propType, []));
174
+ }
154
175
  }
155
176
  writeTypeDeclaration(decl) {
156
177
  throw new Error(`Type declarations do not exist in Java, use something else`);
@@ -255,11 +276,13 @@ export class JavaLanguageWriter extends CLikeLanguageWriter {
255
276
  makeTupleAccess(value, index) {
256
277
  return this.makeString(`${value}.value${index}`);
257
278
  }
258
- enumFromOrdinal(value, _) {
259
- throw new Error("Method not implemented.");
279
+ enumFromOrdinal(value, enumEntry) {
280
+ const enumName = idl.forceAsNamedNode(enumEntry).name;
281
+ const ordinal = value.asString();
282
+ return this.makeString(`${enumName}.values()[${ordinal}]`);
260
283
  }
261
284
  ordinalFromEnum(value, _) {
262
- return this.makeString(`${value.asString()}.value`);
285
+ return this.makeString(`${value.asString()}.ordinal()`);
263
286
  }
264
287
  makeValueFromOption(value) {
265
288
  return this.makeString(`${value}`);
@@ -267,7 +290,7 @@ export class JavaLanguageWriter extends CLikeLanguageWriter {
267
290
  runtimeType(param, valueType, value) {
268
291
  this.writeStatement(this.makeAssign(valueType, undefined, this.makeRuntimeTypeGetterCall(value), false));
269
292
  }
270
- makeEnumCast(enumName, _unsafe, _convertor) {
293
+ makeEnumCast(_enumEntry, enumName) {
271
294
  return `${enumName}.value`;
272
295
  }
273
296
  castToBoolean(value) { return value; }
@@ -53,7 +53,13 @@ export declare class TSLanguageWriter extends LanguageWriter {
53
53
  writeMethodDeclaration(name: string, signature: MethodSignature, modifiers?: MethodModifier[]): void;
54
54
  writeConstructorImplementation(className: string, signature: MethodSignature, op: (writer: this) => void, superCall?: Method, modifiers?: MethodModifier[]): void;
55
55
  writeMethodImplementation(method: Method, op: (writer: this) => void): void;
56
- writeProperty(propName: string, propType: idl.IDLType): void;
56
+ writeProperty(propName: string, propType: idl.IDLType, modifiers: FieldModifier[], getter?: {
57
+ method: Method;
58
+ op: () => void;
59
+ }, setter?: {
60
+ method: Method;
61
+ op: () => void;
62
+ }): void;
57
63
  writeTypeDeclaration(decl: idl.IDLTypedef): void;
58
64
  writeConstant(constName: string, constType: idl.IDLType, constVal?: string): void;
59
65
  private writeDeclaration;
@@ -85,7 +91,7 @@ export declare class TSLanguageWriter extends LanguageWriter {
85
91
  get supportedFieldModifiers(): FieldModifier[];
86
92
  enumFromOrdinal(value: LanguageExpression, enumEntry: idl.IDLType): LanguageExpression;
87
93
  ordinalFromEnum(value: LanguageExpression, enumEntry: idl.IDLType): LanguageExpression;
88
- makeEnumCast(enumName: string, unsafe: boolean, convertor: ArgConvertor): string;
94
+ makeEnumCast(enumEntry: idl.IDLEnum, param: string): string;
89
95
  castToBoolean(value: string): string;
90
96
  makeCallIsObject(value: string): LanguageExpression;
91
97
  escapeKeyword(keyword: string): string;
@@ -13,13 +13,14 @@
13
13
  * limitations under the License.
14
14
  */
15
15
  import * as idl from '../../idl';
16
+ import { isOptionalType } from '../../idl';
16
17
  import { Language } from '../../Language';
17
18
  import { IndentedPrinter } from "../../IndentedPrinter";
18
- import { AssignStatement, BlockStatement, CheckOptionalStatement, ExpressionStatement, FieldModifier, IfStatement, LambdaExpression, LanguageWriter, Method, MethodModifier, NamedMethodSignature, NaryOpExpression, ReturnStatement, StringExpression } from "../LanguageWriter";
19
+ import { AssignStatement, BlockStatement, CheckOptionalStatement, ExpressionStatement, FieldModifier, IfStatement, LambdaExpression, LanguageWriter, Method, MethodModifier, MethodSignature, NamedMethodSignature, NaryOpExpression, ReturnStatement, StringExpression } from "../LanguageWriter";
19
20
  import { RuntimeType } from "../common";
20
21
  import { rightmostIndexOf, throwException } from "../../util";
21
22
  import { TSKeywords } from '../../languageSpecificKeywords';
22
- import { isOptionalType } from "../../idl";
23
+ import { isStringEnumType } from '../../peer-generation/isEnumType';
23
24
  ////////////////////////////////////////////////////////////////
24
25
  // EXPRESSIONS //
25
26
  ////////////////////////////////////////////////////////////////
@@ -223,7 +224,7 @@ export class TSLanguageWriter extends LanguageWriter {
223
224
  this.writeDeclaration(name, signature, true, false, modifiers);
224
225
  }
225
226
  writeConstructorImplementation(className, signature, op, superCall, modifiers) {
226
- this.writeDeclaration(`${modifiers ? modifiers.map((it) => MethodModifier[it].toLowerCase()).join(' ') : ''} constructor`, signature, false, true);
227
+ this.writeDeclaration(`${modifiers ? modifiers.map((it) => MethodModifier[it].toLowerCase()).join(' ') + ' ' : ''}constructor`, signature, false, true);
227
228
  this.pushIndent();
228
229
  if (superCall) {
229
230
  this.print(`super(${superCall.signature.args.map((_, i) => superCall === null || superCall === void 0 ? void 0 : superCall.signature.argName(i)).join(", ")})`);
@@ -239,8 +240,29 @@ export class TSLanguageWriter extends LanguageWriter {
239
240
  this.popIndent();
240
241
  this.printer.print(`}`);
241
242
  }
242
- writeProperty(propName, propType) {
243
- throw new Error("writeProperty for TS is not implemented yet.");
243
+ writeProperty(propName, propType, modifiers, getter, setter) {
244
+ let isStatic = modifiers.includes(FieldModifier.STATIC);
245
+ let isMutable = !modifiers.includes(FieldModifier.READONLY);
246
+ let containerName = propName.concat("_container");
247
+ if (getter) {
248
+ if (!getter.op) {
249
+ this.print(`private var ${this.getNodeName(propType)} ${containerName}`);
250
+ }
251
+ this.writeGetterImplementation(new Method(propName, new MethodSignature(propType, []), isStatic ? [MethodModifier.STATIC] : []), getter ? getter.op :
252
+ (writer) => {
253
+ writer.print(`return ${containerName}`);
254
+ });
255
+ if (isMutable) {
256
+ const setSignature = new NamedMethodSignature(idl.IDLVoidType, [propType], [propName]);
257
+ this.writeSetterImplementation(new Method(propName, setSignature, isStatic ? [MethodModifier.STATIC] : []), setter ? setter.op :
258
+ (writer) => {
259
+ writer.print(`${containerName} = ${propName}`);
260
+ });
261
+ }
262
+ }
263
+ else {
264
+ this.writeFieldDeclaration(propName, propType, modifiers, idl.isOptionalType(propType));
265
+ }
244
266
  }
245
267
  writeTypeDeclaration(decl) {
246
268
  var _a;
@@ -378,7 +400,11 @@ export class TSLanguageWriter extends LanguageWriter {
378
400
  return [FieldModifier.PUBLIC, FieldModifier.PRIVATE, FieldModifier.PROTECTED, FieldModifier.READONLY, FieldModifier.STATIC];
379
401
  }
380
402
  enumFromOrdinal(value, enumEntry) {
381
- return this.makeString(`Object.values(${idl.forceAsNamedNode(enumEntry).name})[${value.asString()}]`);
403
+ const enumName = idl.forceAsNamedNode(enumEntry).name;
404
+ const ordinal = value.asString();
405
+ return isStringEnumType(enumEntry, this.resolver)
406
+ ? this.makeString(`Object.values(${enumName})[${ordinal}]`)
407
+ : this.makeString(`${ordinal}`);
382
408
  }
383
409
  ordinalFromEnum(value, enumEntry) {
384
410
  const enumName = idl.forceAsNamedNode(enumEntry).name;
@@ -388,11 +414,12 @@ export class TSLanguageWriter extends LanguageWriter {
388
414
  }
389
415
  return value;
390
416
  }
391
- makeEnumCast(enumName, unsafe, convertor) {
392
- if (unsafe) {
393
- return this.makeUnsafeCast(convertor, enumName);
394
- }
395
- return enumName;
417
+ makeEnumCast(enumEntry, param) {
418
+ // Take the ordinal value if Enum is a string, and valueOf when it is an integer
419
+ // Enum.valueOf() - compatible with ArkTS/TS
420
+ return idl.isStringEnum(enumEntry)
421
+ ? this.ordinalFromEnum(this.makeString(param), idl.createReferenceType(enumEntry)).asString()
422
+ : `${param}.valueOf()`;
396
423
  }
397
424
  castToBoolean(value) { return `+${value}`; }
398
425
  makeCallIsObject(value) {
@@ -9,7 +9,6 @@ export interface LibraryFileInterface {
9
9
  export interface LibraryInterface extends ReferenceResolver {
10
10
  language: Language;
11
11
  get files(): LibraryFileInterface[];
12
- get libraryPackages(): string[] | undefined;
13
12
  typeConvertor(param: string, type: idl.IDLType, isOptionalParam?: boolean): ArgConvertor;
14
13
  declarationConvertor(param: string, type: idl.IDLReferenceType, declaration: idl.IDLEntry | undefined): ArgConvertor;
15
14
  getInteropName(node: idl.IDLNode): string;