@idlizer/core 2.1.0 → 2.1.5
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.
- package/build/lib/src/LanguageWriters/ArgConvertors.d.ts +15 -2
- package/build/lib/src/LanguageWriters/ArgConvertors.js +93 -33
- package/build/lib/src/LanguageWriters/LanguageWriter.d.ts +34 -14
- package/build/lib/src/LanguageWriters/LanguageWriter.js +29 -52
- package/build/lib/src/LanguageWriters/convertors/CJConvertors.d.ts +2 -1
- package/build/lib/src/LanguageWriters/convertors/CJConvertors.js +16 -5
- package/build/lib/src/LanguageWriters/convertors/CppConvertors.d.ts +4 -2
- package/build/lib/src/LanguageWriters/convertors/CppConvertors.js +25 -15
- package/build/lib/src/LanguageWriters/convertors/ETSConvertors.js +7 -18
- package/build/lib/src/LanguageWriters/convertors/InteropConvertors.d.ts +4 -2
- package/build/lib/src/LanguageWriters/convertors/InteropConvertors.js +13 -3
- package/build/lib/src/LanguageWriters/convertors/JavaConvertors.d.ts +2 -1
- package/build/lib/src/LanguageWriters/convertors/JavaConvertors.js +24 -4
- package/build/lib/src/LanguageWriters/convertors/TSConvertors.d.ts +4 -2
- package/build/lib/src/LanguageWriters/convertors/TSConvertors.js +49 -29
- package/build/lib/src/LanguageWriters/nameConvertor.d.ts +3 -1
- package/build/lib/src/LanguageWriters/nameConvertor.js +5 -1
- package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.d.ts +21 -10
- package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.js +56 -65
- package/build/lib/src/LanguageWriters/writers/CLikeLanguageWriter.d.ts +4 -1
- package/build/lib/src/LanguageWriters/writers/CLikeLanguageWriter.js +1 -1
- package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.d.ts +16 -10
- package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.js +18 -27
- package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.d.ts +14 -9
- package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.js +18 -21
- package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.d.ts +11 -7
- package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.js +42 -18
- package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.d.ts +14 -6
- package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +49 -44
- package/build/lib/src/LibraryInterface.d.ts +1 -5
- package/build/lib/src/config.d.ts +1029 -66
- package/build/lib/src/config.js +15 -2
- package/build/lib/src/configDescriber.d.ts +30 -3
- package/build/lib/src/configDescriber.js +99 -1
- package/build/lib/src/from-idl/DtsPrinter.js +32 -20
- package/build/lib/src/from-idl/IDLLinter.d.ts +40 -7
- package/build/lib/src/from-idl/IDLLinter.js +211 -25
- package/build/lib/src/from-idl/common.js +1 -1
- package/build/lib/src/from-idl/deserialize.d.ts +4 -1
- package/build/lib/src/from-idl/deserialize.js +434 -346
- package/build/lib/src/idl.d.ts +28 -18
- package/build/lib/src/idl.js +376 -111
- package/build/lib/src/idlize.d.ts +3 -1
- package/build/lib/src/idlize.js +85 -28
- package/build/lib/src/index.d.ts +6 -3
- package/build/lib/src/index.js +5 -2
- package/build/lib/src/options.d.ts +1 -1
- package/build/lib/src/peer-generation/BuilderClass.d.ts +0 -2
- package/build/lib/src/peer-generation/BuilderClass.js +0 -8
- package/build/lib/src/peer-generation/LayoutManager.d.ts +10 -3
- package/build/lib/src/peer-generation/LayoutManager.js +3 -2
- package/build/lib/src/peer-generation/Materialized.d.ts +1 -1
- package/build/lib/src/peer-generation/Materialized.js +2 -2
- package/build/lib/src/peer-generation/PeerClass.d.ts +3 -8
- package/build/lib/src/peer-generation/PeerClass.js +0 -1
- package/build/lib/src/peer-generation/PeerFile.d.ts +1 -2
- package/build/lib/src/peer-generation/PeerFile.js +1 -1
- package/build/lib/src/peer-generation/PeerLibrary.d.ts +12 -9
- package/build/lib/src/peer-generation/PeerLibrary.js +136 -71
- package/build/lib/src/peer-generation/ReferenceResolver.d.ts +1 -1
- package/build/lib/src/peer-generation/ReferenceResolver.js +2 -2
- package/build/lib/src/peer-generation/idl/IdlNameConvertor.d.ts +1 -0
- package/build/lib/src/peer-generation/idl/IdlNameConvertor.js +6 -2
- package/build/lib/src/peer-generation/idl/common.d.ts +2 -1
- package/build/lib/src/peer-generation/idl/common.js +13 -2
- package/build/lib/src/peer-generation/isEnumType.d.ts +5 -0
- package/build/lib/src/peer-generation/isEnumType.js +29 -0
- package/build/lib/src/peer-generation/isMaterialized.js +25 -8
- package/build/lib/src/peer-generation/modules.d.ts +10 -0
- package/build/lib/src/peer-generation/modules.js +38 -0
- package/build/lib/src/peer-generation/unions.d.ts +3 -2
- package/build/lib/src/peer-generation/unions.js +6 -2
- package/build/lib/src/resolveNamedNode.d.ts +3 -0
- package/build/lib/src/resolveNamedNode.js +105 -0
- package/build/lib/src/util.d.ts +7 -0
- package/build/lib/src/util.js +39 -0
- package/build/lib/src/visitor.d.ts +0 -1
- package/build/lib/src/visitor.js +1 -7
- package/package.json +2 -2
- package/webidl2.js/dist/webidl2.js +35 -7
- package/build/lib/src/configMerge.d.ts +0 -2
- package/build/lib/src/configMerge.js +0 -42
|
@@ -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
|
|
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;
|
|
@@ -51,7 +57,7 @@ export declare class JavaLanguageWriter extends CLikeLanguageWriter {
|
|
|
51
57
|
makeLoop(counter: string, limit: string, statement?: LanguageStatement): LanguageStatement;
|
|
52
58
|
makeMapForEach(map: string, key: string, value: string, op: () => void): LanguageStatement;
|
|
53
59
|
makeMapSize(map: string): LanguageExpression;
|
|
54
|
-
makeCast(value: LanguageExpression,
|
|
60
|
+
makeCast(value: LanguageExpression, node: idl.IDLNode, options?: MakeCastOptions): LanguageExpression;
|
|
55
61
|
makeStatement(expr: LanguageExpression): LanguageStatement;
|
|
56
62
|
makeUnionSelector(value: string, valueType: string): LanguageStatement;
|
|
57
63
|
makeUnionVariantCondition(_convertor: ArgConvertor, _valueName: string, valueType: string, _type: string, convertorIndex: number): LanguageExpression;
|
|
@@ -63,7 +69,7 @@ export declare class JavaLanguageWriter extends CLikeLanguageWriter {
|
|
|
63
69
|
getObjectAccessor(convertor: ArgConvertor, value: string, args?: ObjectArgs): string;
|
|
64
70
|
makeUndefined(): LanguageExpression;
|
|
65
71
|
makeRuntimeType(rt: RuntimeType): LanguageExpression;
|
|
66
|
-
makeRuntimeTypeGetterCall(value: string): LanguageExpression;
|
|
72
|
+
protected makeRuntimeTypeGetterCall(value: string): LanguageExpression;
|
|
67
73
|
makeMapInsert(keyAccessor: string, key: string, valueAccessor: string, value: string): LanguageStatement;
|
|
68
74
|
getTagType(): idl.IDLType;
|
|
69
75
|
getRuntimeType(): idl.IDLType;
|
|
@@ -74,12 +80,10 @@ 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
|
-
|
|
78
|
-
ordinalFromEnum(value: LanguageExpression, _: idl.IDLType): LanguageExpression;
|
|
83
|
+
enumFromI32(value: LanguageExpression, enumEntry: idl.IDLEnum): LanguageExpression;
|
|
79
84
|
makeValueFromOption(value: string): LanguageExpression;
|
|
80
85
|
runtimeType(param: ArgConvertor, valueType: string, value: string): void;
|
|
81
|
-
|
|
86
|
+
i32FromEnum(value: LanguageExpression, enumEntry: idl.IDLEnum): LanguageExpression;
|
|
82
87
|
castToBoolean(value: string): string;
|
|
83
|
-
makeLengthSerializer(serializer: string, value: string): LanguageStatement | undefined;
|
|
84
88
|
}
|
|
85
89
|
//# sourceMappingURL=JavaLanguageWriter.d.ts.map
|
|
@@ -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";
|
|
@@ -100,6 +100,13 @@ export class JavaLanguageWriter extends CLikeLanguageWriter {
|
|
|
100
100
|
this.typeConvertor = typeConvertor;
|
|
101
101
|
}
|
|
102
102
|
getNodeName(type) {
|
|
103
|
+
// another stub. Bad one.
|
|
104
|
+
// I hope that I will rewrite LWs soon
|
|
105
|
+
if (idl.isType(type) && idl.isReferenceType(type)) {
|
|
106
|
+
if (type.name.startsWith('%TEXT%:')) {
|
|
107
|
+
return type.name.substring(7);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
103
110
|
return this.typeConvertor.convert(type);
|
|
104
111
|
}
|
|
105
112
|
fork(options) {
|
|
@@ -149,8 +156,29 @@ export class JavaLanguageWriter extends CLikeLanguageWriter {
|
|
|
149
156
|
this.popIndent();
|
|
150
157
|
this.printer.print(`}`);
|
|
151
158
|
}
|
|
152
|
-
writeProperty(propName, propType) {
|
|
153
|
-
|
|
159
|
+
writeProperty(propName, propType, modifiers, getter, setter) {
|
|
160
|
+
let isStatic = modifiers.includes(FieldModifier.STATIC);
|
|
161
|
+
let isMutable = !modifiers.includes(FieldModifier.READONLY);
|
|
162
|
+
let containerName = propName.concat("_container");
|
|
163
|
+
if (getter) {
|
|
164
|
+
if (!getter.op) {
|
|
165
|
+
this.print(`private var ${this.getNodeName(propType)} ${containerName};`);
|
|
166
|
+
}
|
|
167
|
+
this.writeGetterImplementation(new Method(propName, new MethodSignature(propType, []), isStatic ? [MethodModifier.STATIC, MethodModifier.PUBLIC] : [MethodModifier.PUBLIC]), getter ? getter.op :
|
|
168
|
+
(writer) => {
|
|
169
|
+
writer.print(`return ${containerName}`);
|
|
170
|
+
});
|
|
171
|
+
if (isMutable) {
|
|
172
|
+
const setSignature = new NamedMethodSignature(idl.IDLVoidType, [propType], [propName]);
|
|
173
|
+
this.writeSetterImplementation(new Method(propName, setSignature, isStatic ? [MethodModifier.STATIC, MethodModifier.PUBLIC] : [MethodModifier.PUBLIC]), setter ? setter.op :
|
|
174
|
+
(writer) => {
|
|
175
|
+
writer.print(`${containerName} = ${propName};`);
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
this.writeMethodDeclaration(propName, new MethodSignature(propType, []));
|
|
181
|
+
}
|
|
154
182
|
}
|
|
155
183
|
writeTypeDeclaration(decl) {
|
|
156
184
|
throw new Error(`Type declarations do not exist in Java, use something else`);
|
|
@@ -182,9 +210,9 @@ export class JavaLanguageWriter extends CLikeLanguageWriter {
|
|
|
182
210
|
makeMapSize(map) {
|
|
183
211
|
return this.makeString(`${map}.size()`);
|
|
184
212
|
}
|
|
185
|
-
makeCast(value,
|
|
213
|
+
makeCast(value, node, options) {
|
|
186
214
|
var _a;
|
|
187
|
-
return new JavaCastExpression(value, this.getNodeName(
|
|
215
|
+
return new JavaCastExpression(value, this.getNodeName(node), (_a = options === null || options === void 0 ? void 0 : options.unsafe) !== null && _a !== void 0 ? _a : false);
|
|
188
216
|
}
|
|
189
217
|
makeStatement(expr) {
|
|
190
218
|
return new CLikeExpressionStatement(expr);
|
|
@@ -255,11 +283,10 @@ export class JavaLanguageWriter extends CLikeLanguageWriter {
|
|
|
255
283
|
makeTupleAccess(value, index) {
|
|
256
284
|
return this.makeString(`${value}.value${index}`);
|
|
257
285
|
}
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
return this.makeString(`${value.asString()}.value`);
|
|
286
|
+
enumFromI32(value, enumEntry) {
|
|
287
|
+
const enumName = idl.forceAsNamedNode(enumEntry).name;
|
|
288
|
+
const ordinal = value.asString();
|
|
289
|
+
return this.makeString(`${enumName}.values()[${ordinal}]`);
|
|
263
290
|
}
|
|
264
291
|
makeValueFromOption(value) {
|
|
265
292
|
return this.makeString(`${value}`);
|
|
@@ -267,15 +294,12 @@ export class JavaLanguageWriter extends CLikeLanguageWriter {
|
|
|
267
294
|
runtimeType(param, valueType, value) {
|
|
268
295
|
this.writeStatement(this.makeAssign(valueType, undefined, this.makeRuntimeTypeGetterCall(value), false));
|
|
269
296
|
}
|
|
270
|
-
|
|
271
|
-
|
|
297
|
+
i32FromEnum(value, enumEntry) {
|
|
298
|
+
const i32Value = idl.isStringEnum(enumEntry)
|
|
299
|
+
? `${value.asString()}.ordinal`
|
|
300
|
+
: `${value.asString()}.value`;
|
|
301
|
+
return this.makeString(i32Value);
|
|
272
302
|
}
|
|
273
303
|
castToBoolean(value) { return value; }
|
|
274
|
-
makeLengthSerializer(serializer, value) {
|
|
275
|
-
return this.makeBlock([
|
|
276
|
-
this.makeStatement(this.makeMethodCall(serializer, "writeInt8", [this.makeRuntimeType(RuntimeType.STRING)])),
|
|
277
|
-
this.makeStatement(this.makeMethodCall(serializer, "writeString", [this.makeString(`${value}.value`)]))
|
|
278
|
-
], false);
|
|
279
|
-
}
|
|
280
304
|
}
|
|
281
305
|
//# sourceMappingURL=JavaLanguageWriter.js.map
|
|
@@ -47,13 +47,22 @@ export declare class TSLanguageWriter extends LanguageWriter {
|
|
|
47
47
|
alias?: string | undefined;
|
|
48
48
|
stringId: string | undefined;
|
|
49
49
|
numberId: number;
|
|
50
|
-
}[]
|
|
50
|
+
}[], options: {
|
|
51
|
+
isDeclare?: boolean;
|
|
52
|
+
isExport: boolean;
|
|
53
|
+
}): void;
|
|
51
54
|
writeFieldDeclaration(name: string, type: idl.IDLType, modifiers: FieldModifier[] | undefined, optional: boolean, initExpr?: LanguageExpression): void;
|
|
52
55
|
writeNativeMethodDeclaration(method: Method): void;
|
|
53
56
|
writeMethodDeclaration(name: string, signature: MethodSignature, modifiers?: MethodModifier[]): void;
|
|
54
57
|
writeConstructorImplementation(className: string, signature: MethodSignature, op: (writer: this) => void, superCall?: Method, modifiers?: MethodModifier[]): void;
|
|
55
58
|
writeMethodImplementation(method: Method, op: (writer: this) => void): void;
|
|
56
|
-
writeProperty(propName: string, propType: idl.IDLType
|
|
59
|
+
writeProperty(propName: string, propType: idl.IDLType, modifiers: FieldModifier[], getter?: {
|
|
60
|
+
method: Method;
|
|
61
|
+
op: () => void;
|
|
62
|
+
}, setter?: {
|
|
63
|
+
method: Method;
|
|
64
|
+
op: () => void;
|
|
65
|
+
}): void;
|
|
57
66
|
writeTypeDeclaration(decl: idl.IDLTypedef): void;
|
|
58
67
|
writeConstant(constName: string, constType: idl.IDLType, constVal?: string): void;
|
|
59
68
|
private writeDeclaration;
|
|
@@ -67,7 +76,7 @@ export declare class TSLanguageWriter extends LanguageWriter {
|
|
|
67
76
|
makeLoop(counter: string, limit: string, statement?: LanguageStatement): LanguageStatement;
|
|
68
77
|
makeMapForEach(map: string, key: string, value: string, op: () => void): LanguageStatement;
|
|
69
78
|
writePrintLog(message: string): void;
|
|
70
|
-
makeCast(value: LanguageExpression,
|
|
79
|
+
makeCast(value: LanguageExpression, node: idl.IDLNode, options?: MakeCastOptions): LanguageExpression;
|
|
71
80
|
typeInstanceOf(type: idl.IDLEntry, value: string, members?: string[]): LanguageExpression;
|
|
72
81
|
getObjectAccessor(convertor: ArgConvertor, value: string, args?: ObjectArgs): string;
|
|
73
82
|
makeUndefined(): LanguageExpression;
|
|
@@ -83,9 +92,8 @@ export declare class TSLanguageWriter extends LanguageWriter {
|
|
|
83
92
|
makeTupleAssign(receiver: string, fields: string[]): LanguageStatement;
|
|
84
93
|
get supportedModifiers(): MethodModifier[];
|
|
85
94
|
get supportedFieldModifiers(): FieldModifier[];
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
makeEnumCast(enumEntry: idl.IDLEnum, param: string): string;
|
|
95
|
+
enumFromI32(value: LanguageExpression, enumEntry: idl.IDLEnum): LanguageExpression;
|
|
96
|
+
i32FromEnum(value: LanguageExpression, enumEntry: idl.IDLEnum): LanguageExpression;
|
|
89
97
|
castToBoolean(value: string): string;
|
|
90
98
|
makeCallIsObject(value: string): LanguageExpression;
|
|
91
99
|
escapeKeyword(keyword: string): string;
|
|
@@ -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, 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";
|
|
20
20
|
import { RuntimeType } from "../common";
|
|
21
21
|
import { rightmostIndexOf, throwException } from "../../util";
|
|
22
22
|
import { TSKeywords } from '../../languageSpecificKeywords';
|
|
@@ -135,14 +135,14 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
135
135
|
return new TSLanguageWriter(new IndentedPrinter(), (_a = options === null || options === void 0 ? void 0 : options.resolver) !== null && _a !== void 0 ? _a : this.resolver, this.typeConvertor, this.language);
|
|
136
136
|
}
|
|
137
137
|
getNodeName(type) {
|
|
138
|
-
//
|
|
139
|
-
//
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
138
|
+
// another stub. Bad one.
|
|
139
|
+
// I hope that I will rewrite LWs soon
|
|
140
|
+
if (idl.isType(type) && idl.isReferenceType(type)) {
|
|
141
|
+
if (type.name.startsWith('%TEXT%:')) {
|
|
142
|
+
return type.name.substring(7);
|
|
143
|
+
}
|
|
144
144
|
}
|
|
145
|
-
return
|
|
145
|
+
return this.typeConvertor.convert(type);
|
|
146
146
|
}
|
|
147
147
|
writeClass(name, op, superClass, interfaces, generics, isDeclared, isAbstract) {
|
|
148
148
|
let extendsClause = superClass ? ` extends ${superClass}` : '';
|
|
@@ -184,8 +184,8 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
184
184
|
const returnType = this.getNodeName(signature.returnType);
|
|
185
185
|
return `export function ${name}(${args.join(", ")}): ${returnType}`;
|
|
186
186
|
}
|
|
187
|
-
writeEnum(name, members) {
|
|
188
|
-
this.printer.print(
|
|
187
|
+
writeEnum(name, members, options) {
|
|
188
|
+
this.printer.print(`${options.isExport ? "export " : ""}${options.isDeclare ? "declare " : ""}enum ${name} {`);
|
|
189
189
|
this.printer.pushIndent();
|
|
190
190
|
for (const [index, member] of members.entries()) {
|
|
191
191
|
let value;
|
|
@@ -223,7 +223,7 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
223
223
|
this.writeDeclaration(name, signature, true, false, modifiers);
|
|
224
224
|
}
|
|
225
225
|
writeConstructorImplementation(className, signature, op, superCall, modifiers) {
|
|
226
|
-
this.writeDeclaration(`${modifiers ? modifiers.map((it) => MethodModifier[it].toLowerCase()).join(' ') : ''}
|
|
226
|
+
this.writeDeclaration(`${modifiers ? modifiers.map((it) => MethodModifier[it].toLowerCase()).join(' ') + ' ' : ''}constructor`, signature, false, true);
|
|
227
227
|
this.pushIndent();
|
|
228
228
|
if (superCall) {
|
|
229
229
|
this.print(`super(${superCall.signature.args.map((_, i) => superCall === null || superCall === void 0 ? void 0 : superCall.signature.argName(i)).join(", ")})`);
|
|
@@ -239,8 +239,29 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
239
239
|
this.popIndent();
|
|
240
240
|
this.printer.print(`}`);
|
|
241
241
|
}
|
|
242
|
-
writeProperty(propName, propType) {
|
|
243
|
-
|
|
242
|
+
writeProperty(propName, propType, modifiers, getter, setter) {
|
|
243
|
+
let isStatic = modifiers.includes(FieldModifier.STATIC);
|
|
244
|
+
let isMutable = !modifiers.includes(FieldModifier.READONLY);
|
|
245
|
+
let containerName = propName.concat("_container");
|
|
246
|
+
if (getter) {
|
|
247
|
+
if (!getter.op) {
|
|
248
|
+
this.print(`private var ${this.getNodeName(propType)} ${containerName}`);
|
|
249
|
+
}
|
|
250
|
+
this.writeGetterImplementation(new Method(propName, new MethodSignature(propType, []), isStatic ? [MethodModifier.STATIC] : []), getter ? getter.op :
|
|
251
|
+
(writer) => {
|
|
252
|
+
writer.print(`return ${containerName}`);
|
|
253
|
+
});
|
|
254
|
+
if (isMutable) {
|
|
255
|
+
const setSignature = new NamedMethodSignature(idl.IDLVoidType, [propType], [propName]);
|
|
256
|
+
this.writeSetterImplementation(new Method(propName, setSignature, isStatic ? [MethodModifier.STATIC] : []), setter ? setter.op :
|
|
257
|
+
(writer) => {
|
|
258
|
+
writer.print(`${containerName} = ${propName}`);
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
this.writeFieldDeclaration(propName, propType, modifiers, idl.isOptionalType(propType));
|
|
264
|
+
}
|
|
244
265
|
}
|
|
245
266
|
writeTypeDeclaration(decl) {
|
|
246
267
|
var _a;
|
|
@@ -252,7 +273,6 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
252
273
|
this.print(`export const ${constName}: ${this.getNodeName(constType)}${constVal ? ' = ' + constVal : ''}`);
|
|
253
274
|
}
|
|
254
275
|
writeDeclaration(name, signature, needReturn, needBracket, modifiers, generics) {
|
|
255
|
-
var _a;
|
|
256
276
|
let prefix = !modifiers ? undefined : this.supportedModifiers
|
|
257
277
|
.filter(it => modifiers.includes(it))
|
|
258
278
|
.map(it => this.mapMethodModifier(it)).join(" ");
|
|
@@ -268,19 +288,8 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
268
288
|
}
|
|
269
289
|
prefix = prefix ? prefix.trim() + " " : "";
|
|
270
290
|
const typeParams = (generics === null || generics === void 0 ? void 0 : generics.length) ? `<${generics.join(", ")}>` : "";
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
const canBeOptional = [];
|
|
274
|
-
for (let i = signature.args.length - 1; i >= 0; --i) {
|
|
275
|
-
const prevCanBeOptional = (_a = canBeOptional.at(-1)) !== null && _a !== void 0 ? _a : true;
|
|
276
|
-
const curr = signature.args[i];
|
|
277
|
-
const result = prevCanBeOptional && (idl.isOptionalType(curr) || signature.argDefault(i) !== undefined);
|
|
278
|
-
canBeOptional.push(result);
|
|
279
|
-
}
|
|
280
|
-
canBeOptional.reverse();
|
|
281
|
-
const isOptional = signature.args.map((it, i) => idl.isOptionalType(it) && canBeOptional[i] && !isSetter);
|
|
282
|
-
const normalizedArgs = signature.args.map((it, i) => idl.isOptionalType(it) && isOptional[i] ? idl.maybeUnwrapOptionalType(it) : it);
|
|
283
|
-
this.printer.print(`${prefix}${name}${typeParams}(${normalizedArgs.map((it, index) => `${this.escapeKeyword(signature.argName(index))}${isOptional[index] ? "?" : ""}: ${this.getNodeName(it)}${signature.argDefault(index) ? ' = ' + signature.argDefault(index) : ""}`).join(", ")})${needReturn ? ": " + this.getNodeName(signature.returnType) : ""}${needBracket ? " {" : ""}`);
|
|
291
|
+
const normalizedArgs = signature.args.map((it, i) => idl.isOptionalType(it) && signature.isArgOptional(i) ? idl.maybeUnwrapOptionalType(it) : it);
|
|
292
|
+
this.printer.print(`${prefix}${name}${typeParams}(${normalizedArgs.map((it, index) => `${this.escapeKeyword(signature.argName(index))}${signature.isArgOptional(index) ? "?" : ``}: ${this.getNodeName(it)}${signature.argDefault(index) ? ' = ' + signature.argDefault(index) : ""}`).join(", ")})${needReturn ? ": " + this.getNodeName(signature.returnType) : ""}${needBracket ? " {" : ""}`);
|
|
284
293
|
}
|
|
285
294
|
makeNull() {
|
|
286
295
|
return new StringExpression("undefined");
|
|
@@ -312,9 +321,9 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
312
321
|
writePrintLog(message) {
|
|
313
322
|
this.print(`console.log("${message}")`);
|
|
314
323
|
}
|
|
315
|
-
makeCast(value,
|
|
324
|
+
makeCast(value, node, options) {
|
|
316
325
|
var _a;
|
|
317
|
-
return new TSCastExpression(value, this.getNodeName(
|
|
326
|
+
return new TSCastExpression(value, this.getNodeName(node), (_a = options === null || options === void 0 ? void 0 : options.unsafe) !== null && _a !== void 0 ? _a : false);
|
|
318
327
|
}
|
|
319
328
|
typeInstanceOf(type, value, members) {
|
|
320
329
|
if (idl.isInterface(type)) {
|
|
@@ -377,23 +386,19 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
377
386
|
get supportedFieldModifiers() {
|
|
378
387
|
return [FieldModifier.PUBLIC, FieldModifier.PRIVATE, FieldModifier.PROTECTED, FieldModifier.READONLY, FieldModifier.STATIC];
|
|
379
388
|
}
|
|
380
|
-
|
|
381
|
-
|
|
389
|
+
enumFromI32(value, enumEntry) {
|
|
390
|
+
const enumName = enumEntry.name;
|
|
391
|
+
const ordinal = value.asString();
|
|
392
|
+
return idl.isStringEnum(enumEntry)
|
|
393
|
+
? this.makeString(`Object.values(${enumName})[${ordinal}]`)
|
|
394
|
+
: this.makeString(ordinal);
|
|
382
395
|
}
|
|
383
|
-
|
|
384
|
-
const enumName =
|
|
385
|
-
|
|
386
|
-
if (decl && idl.isEnum(decl) && idl.isStringEnum(decl)) {
|
|
396
|
+
i32FromEnum(value, enumEntry) {
|
|
397
|
+
const enumName = this.getNodeName(enumEntry);
|
|
398
|
+
if (idl.isEnum(enumEntry) && idl.isStringEnum(enumEntry)) {
|
|
387
399
|
return this.makeString(`Object.values(${enumName}).indexOf(${value.asString()})`);
|
|
388
400
|
}
|
|
389
|
-
return value;
|
|
390
|
-
}
|
|
391
|
-
makeEnumCast(enumEntry, param) {
|
|
392
|
-
// Take the ordinal value if Enum is a string, and valueOf when it is an integer
|
|
393
|
-
// Enum.valueOf() - compatible with ArkTS/TS
|
|
394
|
-
return idl.isStringEnum(enumEntry)
|
|
395
|
-
? this.ordinalFromEnum(this.makeString(param), idl.createReferenceType(enumEntry)).asString()
|
|
396
|
-
: `${param}.valueOf()`;
|
|
401
|
+
return this.makeString(`${value.asString()}.valueOf()`);
|
|
397
402
|
}
|
|
398
403
|
castToBoolean(value) { return `+${value}`; }
|
|
399
404
|
makeCallIsObject(value) {
|
|
@@ -411,7 +416,7 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
411
416
|
throwException(`The type reference ${decl === null || decl === void 0 ? void 0 : decl.name} must be Enum`);
|
|
412
417
|
}
|
|
413
418
|
const ordinal = idl.isStringEnum(decl)
|
|
414
|
-
? this.
|
|
419
|
+
? this.i32FromEnum(this.makeCast(this.makeString(this.getObjectAccessor(convertor, value)), convertor.idlType), decl)
|
|
415
420
|
: this.makeUnionVariantCast(this.getObjectAccessor(convertor, value), this.getNodeName(idl.IDLI32Type), convertor, index);
|
|
416
421
|
const { low, high } = idl.extremumOfOrdinals(decl);
|
|
417
422
|
return this.discriminatorFromExpressions(value, convertor.runtimeTypes[0], [
|
|
@@ -3,13 +3,9 @@ import { Language } from "./Language";
|
|
|
3
3
|
import { IdlNameConvertor } from "./LanguageWriters";
|
|
4
4
|
import { ArgConvertor } from "./LanguageWriters/ArgConvertors";
|
|
5
5
|
import { ReferenceResolver } from "./peer-generation/ReferenceResolver";
|
|
6
|
-
export interface LibraryFileInterface {
|
|
7
|
-
get entries(): idl.IDLEntry[];
|
|
8
|
-
}
|
|
9
6
|
export interface LibraryInterface extends ReferenceResolver {
|
|
10
7
|
language: Language;
|
|
11
|
-
get files():
|
|
12
|
-
get libraryPackages(): string[] | undefined;
|
|
8
|
+
get files(): idl.IDLFile[];
|
|
13
9
|
typeConvertor(param: string, type: idl.IDLType, isOptionalParam?: boolean): ArgConvertor;
|
|
14
10
|
declarationConvertor(param: string, type: idl.IDLReferenceType, declaration: idl.IDLEntry | undefined): ArgConvertor;
|
|
15
11
|
getInteropName(node: idl.IDLNode): string;
|