@idlizer/core 2.1.2 → 2.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/lib/src/LanguageWriters/ArgConvertors.d.ts +3 -4
- package/build/lib/src/LanguageWriters/ArgConvertors.js +43 -32
- package/build/lib/src/LanguageWriters/LanguageWriter.d.ts +35 -17
- package/build/lib/src/LanguageWriters/LanguageWriter.js +30 -56
- package/build/lib/src/LanguageWriters/convertors/CJConvertors.d.ts +3 -1
- package/build/lib/src/LanguageWriters/convertors/CJConvertors.js +32 -11
- package/build/lib/src/LanguageWriters/convertors/CppConvertors.d.ts +5 -2
- package/build/lib/src/LanguageWriters/convertors/CppConvertors.js +71 -62
- package/build/lib/src/LanguageWriters/convertors/ETSConvertors.d.ts +1 -1
- package/build/lib/src/LanguageWriters/convertors/ETSConvertors.js +9 -19
- package/build/lib/src/LanguageWriters/convertors/InteropConvertors.d.ts +4 -2
- package/build/lib/src/LanguageWriters/convertors/InteropConvertors.js +10 -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 +8 -4
- package/build/lib/src/LanguageWriters/convertors/TSConvertors.js +87 -33
- 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 +19 -11
- package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.js +34 -47
- 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 +9 -9
- package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.js +15 -24
- package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.d.ts +17 -8
- package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.js +48 -23
- package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.d.ts +4 -6
- package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.js +15 -14
- package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.d.ts +13 -8
- package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +33 -52
- package/build/lib/src/LibraryInterface.d.ts +1 -4
- package/build/lib/src/config.d.ts +813 -110
- package/build/lib/src/config.js +25 -3
- package/build/lib/src/configDescriber.d.ts +31 -4
- package/build/lib/src/configDescriber.js +101 -3
- package/build/lib/src/from-idl/DtsPrinter.js +31 -18
- 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 +10 -1
- package/build/lib/src/from-idl/deserialize.js +486 -352
- package/build/lib/src/idl.d.ts +29 -19
- package/build/lib/src/idl.js +404 -119
- package/build/lib/src/idlize.d.ts +2 -1
- package/build/lib/src/idlize.js +82 -26
- package/build/lib/src/index.d.ts +4 -3
- package/build/lib/src/index.js +3 -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 +3 -3
- 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 -7
- package/build/lib/src/peer-generation/PeerLibrary.js +131 -67
- 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 +3 -1
- package/build/lib/src/peer-generation/idl/common.js +21 -4
- package/build/lib/src/peer-generation/isMaterialized.js +28 -7
- package/build/lib/src/peer-generation/unions.d.ts +3 -2
- package/build/lib/src/peer-generation/unions.js +7 -3
- package/build/lib/src/resolveNamedNode.d.ts +3 -0
- package/build/lib/src/resolveNamedNode.js +105 -0
- package/build/lib/src/util.d.ts +8 -1
- package/build/lib/src/util.js +41 -3
- package/build/lib/src/visitor.d.ts +2 -1
- package/build/lib/src/visitor.js +109 -7
- package/package.json +2 -2
- package/webidl2.js/LICENSE +21 -0
- package/webidl2.js/README.md +827 -0
- package/webidl2.js/dist/package.json +3 -0
- package/webidl2.js/dist/webidl2.js +93 -19
|
@@ -17,8 +17,11 @@ export declare class EtsAssignStatement implements LanguageStatement {
|
|
|
17
17
|
}
|
|
18
18
|
export declare class ArkTSEnumEntityStatement implements LanguageStatement {
|
|
19
19
|
private readonly enumEntity;
|
|
20
|
-
private readonly
|
|
21
|
-
constructor(enumEntity: IDLEnum,
|
|
20
|
+
private readonly options;
|
|
21
|
+
constructor(enumEntity: IDLEnum, options: {
|
|
22
|
+
isExport: boolean;
|
|
23
|
+
isDeclare: boolean;
|
|
24
|
+
});
|
|
22
25
|
write(writer: LanguageWriter): void;
|
|
23
26
|
}
|
|
24
27
|
export declare class ETSLambdaExpression extends LambdaExpression {
|
|
@@ -28,8 +31,8 @@ export declare class ETSLambdaExpression extends LambdaExpression {
|
|
|
28
31
|
asString(): string;
|
|
29
32
|
}
|
|
30
33
|
export declare function generateTypeCheckerName(typeName: string): string;
|
|
31
|
-
export declare function
|
|
32
|
-
export declare function
|
|
34
|
+
export declare function generateEnumToNumericName(typeName: string): string;
|
|
35
|
+
export declare function generateEnumFromNumericName(typeName: string): string;
|
|
33
36
|
export declare function makeArrayTypeCheckCall(valueAccessor: string, typeName: string, writer: LanguageWriter): LanguageExpression;
|
|
34
37
|
export declare class ETSLanguageWriter extends TSLanguageWriter {
|
|
35
38
|
private arrayConvertor;
|
|
@@ -44,14 +47,17 @@ export declare class ETSLanguageWriter extends TSLanguageWriter {
|
|
|
44
47
|
get supportedModifiers(): MethodModifier[];
|
|
45
48
|
runtimeType(param: ArgConvertor, valueType: string, value: string): void;
|
|
46
49
|
makeUnionVariantCast(value: string, type: string, convertor: ArgConvertor, index?: number): LanguageExpression;
|
|
47
|
-
|
|
48
|
-
|
|
50
|
+
i32FromEnum(value: LanguageExpression, enumEntry: idl.IDLEnum): LanguageExpression;
|
|
51
|
+
enumFromI32(value: LanguageExpression, enumEntry: idl.IDLEnum): LanguageExpression;
|
|
49
52
|
makeDiscriminatorFromFields(convertor: {
|
|
50
53
|
targetType: (writer: LanguageWriter) => string;
|
|
51
54
|
}, value: string, accessors: string[], duplicates: Set<string>): LanguageExpression;
|
|
52
55
|
makeValueFromOption(value: string, destinationConvertor: ArgConvertor): LanguageExpression;
|
|
53
56
|
makeIsTypeCall(value: string, decl: idl.IDLInterface): LanguageExpression;
|
|
54
|
-
makeEnumEntity(enumEntity: IDLEnum,
|
|
57
|
+
makeEnumEntity(enumEntity: IDLEnum, options: {
|
|
58
|
+
isExport: boolean;
|
|
59
|
+
isDeclare?: boolean;
|
|
60
|
+
}): LanguageStatement;
|
|
55
61
|
getObjectAccessor(convertor: ArgConvertor, value: string, args?: ObjectArgs): string;
|
|
56
62
|
writeMethodCall(receiver: string, method: string, params: string[], nullable?: boolean): void;
|
|
57
63
|
isQuickType(type: IDLType): boolean;
|
|
@@ -66,7 +72,10 @@ export declare class ETSLanguageWriter extends TSLanguageWriter {
|
|
|
66
72
|
instanceOf(convertor: ArgConvertor, value: string, duplicateMembers?: Set<string>): LanguageExpression;
|
|
67
73
|
typeInstanceOf(type: idl.IDLEntry, value: string, members?: string[]): LanguageExpression;
|
|
68
74
|
makeTypeCast(value: LanguageExpression, type: idl.IDLType, options?: MakeCastOptions): LanguageExpression;
|
|
69
|
-
makeCast(value: LanguageExpression,
|
|
75
|
+
makeCast(value: LanguageExpression, node: idl.IDLNode, options?: MakeCastOptions): LanguageExpression;
|
|
76
|
+
static _isUseTypeChecker: boolean;
|
|
77
|
+
static get isUseTypeChecker(): boolean;
|
|
78
|
+
static useTypeChecker<T>(isUseTypeChecker: boolean, op: () => T): T;
|
|
70
79
|
}
|
|
71
80
|
export declare function makeEnumTypeCheckerCall(valueAccessor: string, enumName: string, writer: LanguageWriter): LanguageExpression;
|
|
72
81
|
//# sourceMappingURL=ETSLanguageWriter.d.ts.map
|
|
@@ -63,9 +63,9 @@ class ArkTSMapForEachStatement {
|
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
65
|
export class ArkTSEnumEntityStatement {
|
|
66
|
-
constructor(enumEntity,
|
|
66
|
+
constructor(enumEntity, options) {
|
|
67
67
|
this.enumEntity = enumEntity;
|
|
68
|
-
this.
|
|
68
|
+
this.options = options;
|
|
69
69
|
}
|
|
70
70
|
write(writer) {
|
|
71
71
|
let enumName = convertDeclaration(createDeclarationNameConvertor(Language.ARKTS), this.enumEntity);
|
|
@@ -99,10 +99,7 @@ export class ArkTSEnumEntityStatement {
|
|
|
99
99
|
}
|
|
100
100
|
return res;
|
|
101
101
|
});
|
|
102
|
-
|
|
103
|
-
nss.forEach(it => writer.pushNamespace(it.name));
|
|
104
|
-
writer.writeEnum(enumName, members);
|
|
105
|
-
nss.forEach(() => writer.popNamespace());
|
|
102
|
+
writer.writeEnum(enumName, members, { isExport: this.options.isExport, isDeclare: this.options.isDeclare });
|
|
106
103
|
}
|
|
107
104
|
}
|
|
108
105
|
export class ETSLambdaExpression extends LambdaExpression {
|
|
@@ -133,17 +130,18 @@ export class ETSLambdaExpression extends LambdaExpression {
|
|
|
133
130
|
// UTILS //
|
|
134
131
|
////////////////////////////////////////////////////////////////
|
|
135
132
|
export function generateTypeCheckerName(typeName) {
|
|
136
|
-
typeName = typeName
|
|
137
|
-
.replaceAll('
|
|
133
|
+
typeName = typeName
|
|
134
|
+
.replaceAll('[]', 'BracketsArray')
|
|
135
|
+
.split('.').at(-1); // Todo: hack for namespaces. Remove when ready to use FQNames
|
|
138
136
|
return `is${typeName.replaceAll('[]', 'Brackets')}`;
|
|
139
137
|
}
|
|
140
|
-
export function
|
|
141
|
-
typeName = typeName.split(
|
|
142
|
-
return `${typeName}
|
|
138
|
+
export function generateEnumToNumericName(typeName) {
|
|
139
|
+
typeName = typeName.split('.').at(-1); // Todo: hack for namespaces. Remove when ready to use FQNames
|
|
140
|
+
return `${typeName}_ToNumeric`;
|
|
143
141
|
}
|
|
144
|
-
export function
|
|
145
|
-
typeName = typeName.split(
|
|
146
|
-
return `${typeName}
|
|
142
|
+
export function generateEnumFromNumericName(typeName) {
|
|
143
|
+
typeName = typeName.split('.').at(-1); // Todo: hack for namespaces. Remove when ready to use FQNames
|
|
144
|
+
return `${typeName}_FromNumeric`;
|
|
147
145
|
}
|
|
148
146
|
export function makeArrayTypeCheckCall(valueAccessor, typeName, writer) {
|
|
149
147
|
return writer.makeMethodCall("TypeChecker", generateTypeCheckerName(typeName), [writer.makeString(valueAccessor)
|
|
@@ -182,13 +180,23 @@ export class ETSLanguageWriter extends TSLanguageWriter {
|
|
|
182
180
|
makeUnionVariantCast(value, type, convertor, index) {
|
|
183
181
|
return this.makeString(`${value} as ${type}`);
|
|
184
182
|
}
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
183
|
+
i32FromEnum(value, enumEntry) {
|
|
184
|
+
if (ETSLanguageWriter.isUseTypeChecker) {
|
|
185
|
+
const enumName = this.getNodeName(enumEntry);
|
|
186
|
+
return this.makeMethodCall('TypeChecker', generateEnumToNumericName(enumName), [value]);
|
|
187
|
+
}
|
|
188
|
+
return idl.isStringEnum(enumEntry)
|
|
189
|
+
? this.makeMethodCall(value.asString(), 'getOrdinal', [])
|
|
190
|
+
: this.makeMethodCall(value.asString(), 'valueOf', []);
|
|
188
191
|
}
|
|
189
|
-
|
|
192
|
+
enumFromI32(value, enumEntry) {
|
|
190
193
|
const enumName = this.getNodeName(enumEntry);
|
|
191
|
-
|
|
194
|
+
if (ETSLanguageWriter.isUseTypeChecker) {
|
|
195
|
+
return this.makeMethodCall('TypeChecker', generateEnumFromNumericName(enumName), [value]);
|
|
196
|
+
}
|
|
197
|
+
return idl.isStringEnum(enumEntry)
|
|
198
|
+
? this.makeString(`${enumName}.values()[${value.asString()}]`)
|
|
199
|
+
: this.makeMethodCall(enumName, 'fromValue', [value]);
|
|
192
200
|
}
|
|
193
201
|
makeDiscriminatorFromFields(convertor, value, accessors, duplicates) {
|
|
194
202
|
if (convertor instanceof AggregateConvertor
|
|
@@ -208,8 +216,11 @@ export class ETSLanguageWriter extends TSLanguageWriter {
|
|
|
208
216
|
makeIsTypeCall(value, decl) {
|
|
209
217
|
return makeInterfaceTypeCheckerCall(value, decl.name, decl.properties.map(it => it.name), new Set(), this);
|
|
210
218
|
}
|
|
211
|
-
makeEnumEntity(enumEntity,
|
|
212
|
-
return new ArkTSEnumEntityStatement(enumEntity,
|
|
219
|
+
makeEnumEntity(enumEntity, options) {
|
|
220
|
+
return new ArkTSEnumEntityStatement(enumEntity, {
|
|
221
|
+
isExport: options === null || options === void 0 ? void 0 : options.isExport,
|
|
222
|
+
isDeclare: !!(options === null || options === void 0 ? void 0 : options.isDeclare),
|
|
223
|
+
});
|
|
213
224
|
}
|
|
214
225
|
getObjectAccessor(convertor, value, args) {
|
|
215
226
|
return super.getObjectAccessor(convertor, value, args);
|
|
@@ -269,6 +280,11 @@ export class ETSLanguageWriter extends TSLanguageWriter {
|
|
|
269
280
|
// ])
|
|
270
281
|
}
|
|
271
282
|
castToInt(value, bitness) {
|
|
283
|
+
// This fix is used to avoid unnecessary writeInt8(value as int32) call, which is generated if value is already an int32
|
|
284
|
+
// The explicit cast forces ui2abc to call valueOf on an int, which fails the compilation
|
|
285
|
+
// TODO Fix this cast
|
|
286
|
+
if (bitness === 8)
|
|
287
|
+
return value;
|
|
272
288
|
return `${value} as int32`; // FIXME: is there int8 in ARKTS?
|
|
273
289
|
}
|
|
274
290
|
castToBoolean(value) { return `${value} ? 1 : 0`; }
|
|
@@ -304,11 +320,20 @@ export class ETSLanguageWriter extends TSLanguageWriter {
|
|
|
304
320
|
makeTypeCast(value, type, options) {
|
|
305
321
|
return this.makeString(`TypeChecker.typeCast<${this.getNodeName(type)}>(value)`);
|
|
306
322
|
}
|
|
307
|
-
makeCast(value,
|
|
323
|
+
makeCast(value, node, options) {
|
|
308
324
|
var _a;
|
|
309
|
-
return new TSCastExpression(value, `${this.getNodeName(
|
|
325
|
+
return new TSCastExpression(value, `${this.getNodeName(node)}`, (_a = options === null || options === void 0 ? void 0 : options.unsafe) !== null && _a !== void 0 ? _a : false);
|
|
326
|
+
}
|
|
327
|
+
static get isUseTypeChecker() { return this._isUseTypeChecker; }
|
|
328
|
+
static useTypeChecker(isUseTypeChecker, op) {
|
|
329
|
+
const prevIsUse = this.isReferenceRelativeToNamespaces;
|
|
330
|
+
this._isUseTypeChecker = isUseTypeChecker;
|
|
331
|
+
const result = op();
|
|
332
|
+
this._isUseTypeChecker = prevIsUse;
|
|
333
|
+
return result;
|
|
310
334
|
}
|
|
311
335
|
}
|
|
336
|
+
ETSLanguageWriter._isUseTypeChecker = true;
|
|
312
337
|
function makeInterfaceTypeCheckerCall(valueAccessor, interfaceName, allFields, duplicates, writer) {
|
|
313
338
|
return writer.makeMethodCall("TypeChecker", generateTypeCheckerName(interfaceName), [writer.makeString(valueAccessor),
|
|
314
339
|
...allFields.map(it => {
|
|
@@ -57,7 +57,7 @@ export declare class JavaLanguageWriter extends CLikeLanguageWriter {
|
|
|
57
57
|
makeLoop(counter: string, limit: string, statement?: LanguageStatement): LanguageStatement;
|
|
58
58
|
makeMapForEach(map: string, key: string, value: string, op: () => void): LanguageStatement;
|
|
59
59
|
makeMapSize(map: string): LanguageExpression;
|
|
60
|
-
makeCast(value: LanguageExpression,
|
|
60
|
+
makeCast(value: LanguageExpression, node: idl.IDLNode, options?: MakeCastOptions): LanguageExpression;
|
|
61
61
|
makeStatement(expr: LanguageExpression): LanguageStatement;
|
|
62
62
|
makeUnionSelector(value: string, valueType: string): LanguageStatement;
|
|
63
63
|
makeUnionVariantCondition(_convertor: ArgConvertor, _valueName: string, valueType: string, _type: string, convertorIndex: number): LanguageExpression;
|
|
@@ -69,7 +69,7 @@ export declare class JavaLanguageWriter extends CLikeLanguageWriter {
|
|
|
69
69
|
getObjectAccessor(convertor: ArgConvertor, value: string, args?: ObjectArgs): string;
|
|
70
70
|
makeUndefined(): LanguageExpression;
|
|
71
71
|
makeRuntimeType(rt: RuntimeType): LanguageExpression;
|
|
72
|
-
makeRuntimeTypeGetterCall(value: string): LanguageExpression;
|
|
72
|
+
protected makeRuntimeTypeGetterCall(value: string): LanguageExpression;
|
|
73
73
|
makeMapInsert(keyAccessor: string, key: string, valueAccessor: string, value: string): LanguageStatement;
|
|
74
74
|
getTagType(): idl.IDLType;
|
|
75
75
|
getRuntimeType(): idl.IDLType;
|
|
@@ -80,12 +80,10 @@ export declare class JavaLanguageWriter extends CLikeLanguageWriter {
|
|
|
80
80
|
makeClassInit(type: idl.IDLType, paramenters: LanguageExpression[]): LanguageExpression;
|
|
81
81
|
makeMapInit(type: idl.IDLType): LanguageExpression;
|
|
82
82
|
makeTupleAccess(value: string, index: number): LanguageExpression;
|
|
83
|
-
|
|
84
|
-
ordinalFromEnum(value: LanguageExpression, _: idl.IDLType): LanguageExpression;
|
|
83
|
+
enumFromI32(value: LanguageExpression, enumEntry: idl.IDLEnum): LanguageExpression;
|
|
85
84
|
makeValueFromOption(value: string): LanguageExpression;
|
|
86
85
|
runtimeType(param: ArgConvertor, valueType: string, value: string): void;
|
|
87
|
-
|
|
86
|
+
i32FromEnum(value: LanguageExpression, enumEntry: idl.IDLEnum): LanguageExpression;
|
|
88
87
|
castToBoolean(value: string): string;
|
|
89
|
-
makeLengthSerializer(serializer: string, value: string): LanguageStatement | undefined;
|
|
90
88
|
}
|
|
91
89
|
//# sourceMappingURL=JavaLanguageWriter.d.ts.map
|
|
@@ -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) {
|
|
@@ -203,9 +210,9 @@ export class JavaLanguageWriter extends CLikeLanguageWriter {
|
|
|
203
210
|
makeMapSize(map) {
|
|
204
211
|
return this.makeString(`${map}.size()`);
|
|
205
212
|
}
|
|
206
|
-
makeCast(value,
|
|
213
|
+
makeCast(value, node, options) {
|
|
207
214
|
var _a;
|
|
208
|
-
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);
|
|
209
216
|
}
|
|
210
217
|
makeStatement(expr) {
|
|
211
218
|
return new CLikeExpressionStatement(expr);
|
|
@@ -276,29 +283,23 @@ export class JavaLanguageWriter extends CLikeLanguageWriter {
|
|
|
276
283
|
makeTupleAccess(value, index) {
|
|
277
284
|
return this.makeString(`${value}.value${index}`);
|
|
278
285
|
}
|
|
279
|
-
|
|
286
|
+
enumFromI32(value, enumEntry) {
|
|
280
287
|
const enumName = idl.forceAsNamedNode(enumEntry).name;
|
|
281
288
|
const ordinal = value.asString();
|
|
282
289
|
return this.makeString(`${enumName}.values()[${ordinal}]`);
|
|
283
290
|
}
|
|
284
|
-
ordinalFromEnum(value, _) {
|
|
285
|
-
return this.makeString(`${value.asString()}.ordinal()`);
|
|
286
|
-
}
|
|
287
291
|
makeValueFromOption(value) {
|
|
288
292
|
return this.makeString(`${value}`);
|
|
289
293
|
}
|
|
290
294
|
runtimeType(param, valueType, value) {
|
|
291
295
|
this.writeStatement(this.makeAssign(valueType, undefined, this.makeRuntimeTypeGetterCall(value), false));
|
|
292
296
|
}
|
|
293
|
-
|
|
294
|
-
|
|
297
|
+
i32FromEnum(value, enumEntry) {
|
|
298
|
+
const i32Value = idl.isStringEnum(enumEntry)
|
|
299
|
+
? `${value.asString()}.ordinal`
|
|
300
|
+
: `${value.asString()}.value`;
|
|
301
|
+
return this.makeString(i32Value);
|
|
295
302
|
}
|
|
296
303
|
castToBoolean(value) { return value; }
|
|
297
|
-
makeLengthSerializer(serializer, value) {
|
|
298
|
-
return this.makeBlock([
|
|
299
|
-
this.makeStatement(this.makeMethodCall(serializer, "writeInt8", [this.makeRuntimeType(RuntimeType.STRING)])),
|
|
300
|
-
this.makeStatement(this.makeMethodCall(serializer, "writeString", [this.makeString(`${value}.value`)]))
|
|
301
|
-
], false);
|
|
302
|
-
}
|
|
303
304
|
}
|
|
304
305
|
//# sourceMappingURL=JavaLanguageWriter.js.map
|
|
@@ -32,22 +32,28 @@ export declare class TSLanguageWriter extends LanguageWriter {
|
|
|
32
32
|
protected typeConvertor: IdlNameConvertor;
|
|
33
33
|
constructor(printer: IndentedPrinter, resolver: ReferenceResolver, typeConvertor: IdlNameConvertor, language?: Language);
|
|
34
34
|
maybeSemicolon(): string;
|
|
35
|
-
pushNamespace(namespace: string,
|
|
35
|
+
pushNamespace(namespace: string, options: {
|
|
36
|
+
ident: boolean;
|
|
37
|
+
isDeclared?: boolean;
|
|
38
|
+
}): void;
|
|
36
39
|
fork(options?: {
|
|
37
40
|
resolver?: ReferenceResolver;
|
|
38
41
|
}): LanguageWriter;
|
|
39
42
|
getNodeName(type: idl.IDLNode): string;
|
|
40
43
|
writeClass(name: string, op: (writer: this) => void, superClass?: string, interfaces?: string[], generics?: string[], isDeclared?: boolean, isAbstract?: boolean): void;
|
|
41
44
|
writeInterface(name: string, op: (writer: this) => void, superInterfaces?: string[], generics?: string[], isDeclared?: boolean): void;
|
|
42
|
-
writeFunctionDeclaration(name: string, signature: MethodSignature): void;
|
|
43
|
-
writeFunctionImplementation(name: string, signature: MethodSignature, op: (writer: this) => void): void;
|
|
45
|
+
writeFunctionDeclaration(name: string, signature: MethodSignature, generics?: string[]): void;
|
|
46
|
+
writeFunctionImplementation(name: string, signature: MethodSignature, op: (writer: this) => void, generics?: string[]): void;
|
|
44
47
|
private generateFunctionDeclaration;
|
|
45
48
|
writeEnum(name: string, members: {
|
|
46
49
|
name: string;
|
|
47
50
|
alias?: string | undefined;
|
|
48
51
|
stringId: string | undefined;
|
|
49
52
|
numberId: number;
|
|
50
|
-
}[]
|
|
53
|
+
}[], options: {
|
|
54
|
+
isDeclare?: boolean;
|
|
55
|
+
isExport: boolean;
|
|
56
|
+
}): void;
|
|
51
57
|
writeFieldDeclaration(name: string, type: idl.IDLType, modifiers: FieldModifier[] | undefined, optional: boolean, initExpr?: LanguageExpression): void;
|
|
52
58
|
writeNativeMethodDeclaration(method: Method): void;
|
|
53
59
|
writeMethodDeclaration(name: string, signature: MethodSignature, modifiers?: MethodModifier[]): void;
|
|
@@ -73,7 +79,7 @@ export declare class TSLanguageWriter extends LanguageWriter {
|
|
|
73
79
|
makeLoop(counter: string, limit: string, statement?: LanguageStatement): LanguageStatement;
|
|
74
80
|
makeMapForEach(map: string, key: string, value: string, op: () => void): LanguageStatement;
|
|
75
81
|
writePrintLog(message: string): void;
|
|
76
|
-
makeCast(value: LanguageExpression,
|
|
82
|
+
makeCast(value: LanguageExpression, node: idl.IDLNode, options?: MakeCastOptions): LanguageExpression;
|
|
77
83
|
typeInstanceOf(type: idl.IDLEntry, value: string, members?: string[]): LanguageExpression;
|
|
78
84
|
getObjectAccessor(convertor: ArgConvertor, value: string, args?: ObjectArgs): string;
|
|
79
85
|
makeUndefined(): LanguageExpression;
|
|
@@ -89,9 +95,8 @@ export declare class TSLanguageWriter extends LanguageWriter {
|
|
|
89
95
|
makeTupleAssign(receiver: string, fields: string[]): LanguageStatement;
|
|
90
96
|
get supportedModifiers(): MethodModifier[];
|
|
91
97
|
get supportedFieldModifiers(): FieldModifier[];
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
makeEnumCast(enumEntry: idl.IDLEnum, param: string): string;
|
|
98
|
+
enumFromI32(value: LanguageExpression, enumEntry: idl.IDLEnum): LanguageExpression;
|
|
99
|
+
i32FromEnum(value: LanguageExpression, enumEntry: idl.IDLEnum): LanguageExpression;
|
|
95
100
|
castToBoolean(value: string): string;
|
|
96
101
|
makeCallIsObject(value: string): LanguageExpression;
|
|
97
102
|
escapeKeyword(keyword: string): string;
|
|
@@ -20,7 +20,6 @@ import { AssignStatement, BlockStatement, CheckOptionalStatement, ExpressionStat
|
|
|
20
20
|
import { RuntimeType } from "../common";
|
|
21
21
|
import { rightmostIndexOf, throwException } from "../../util";
|
|
22
22
|
import { TSKeywords } from '../../languageSpecificKeywords';
|
|
23
|
-
import { isStringEnumType } from '../../peer-generation/isEnumType';
|
|
24
23
|
////////////////////////////////////////////////////////////////
|
|
25
24
|
// EXPRESSIONS //
|
|
26
25
|
////////////////////////////////////////////////////////////////
|
|
@@ -125,10 +124,11 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
125
124
|
this.typeConvertor = typeConvertor;
|
|
126
125
|
}
|
|
127
126
|
maybeSemicolon() { return ""; }
|
|
128
|
-
pushNamespace(namespace,
|
|
127
|
+
pushNamespace(namespace, options) {
|
|
129
128
|
this.namespaceStack.push(namespace);
|
|
130
|
-
|
|
131
|
-
|
|
129
|
+
const declaredPrefix = options.isDeclared ? "declare " : "";
|
|
130
|
+
this.print(`export ${declaredPrefix}namespace ${namespace} {`);
|
|
131
|
+
if (options.ident)
|
|
132
132
|
this.pushIndent();
|
|
133
133
|
}
|
|
134
134
|
fork(options) {
|
|
@@ -136,14 +136,14 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
136
136
|
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);
|
|
137
137
|
}
|
|
138
138
|
getNodeName(type) {
|
|
139
|
-
//
|
|
140
|
-
//
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
139
|
+
// another stub. Bad one.
|
|
140
|
+
// I hope that I will rewrite LWs soon
|
|
141
|
+
if (idl.isType(type) && idl.isReferenceType(type)) {
|
|
142
|
+
if (type.name.startsWith('%TEXT%:')) {
|
|
143
|
+
return type.name.substring(7);
|
|
144
|
+
}
|
|
145
145
|
}
|
|
146
|
-
return
|
|
146
|
+
return this.typeConvertor.convert(type);
|
|
147
147
|
}
|
|
148
148
|
writeClass(name, op, superClass, interfaces, generics, isDeclared, isAbstract) {
|
|
149
149
|
let extendsClause = superClass ? ` extends ${superClass}` : '';
|
|
@@ -166,27 +166,28 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
166
166
|
this.popIndent();
|
|
167
167
|
this.printer.print(`}`);
|
|
168
168
|
}
|
|
169
|
-
writeFunctionDeclaration(name, signature) {
|
|
170
|
-
this.printer.print(this.generateFunctionDeclaration(name, signature));
|
|
169
|
+
writeFunctionDeclaration(name, signature, generics) {
|
|
170
|
+
this.printer.print(this.generateFunctionDeclaration(name, signature, generics));
|
|
171
171
|
}
|
|
172
|
-
writeFunctionImplementation(name, signature, op) {
|
|
173
|
-
this.printer.print(`${this.generateFunctionDeclaration(name, signature)} {`);
|
|
172
|
+
writeFunctionImplementation(name, signature, op, generics) {
|
|
173
|
+
this.printer.print(`${this.generateFunctionDeclaration(name, signature, generics)} {`);
|
|
174
174
|
this.printer.pushIndent();
|
|
175
175
|
op(this);
|
|
176
176
|
this.printer.popIndent();
|
|
177
177
|
this.printer.print('}');
|
|
178
178
|
}
|
|
179
|
-
generateFunctionDeclaration(name, signature) {
|
|
179
|
+
generateFunctionDeclaration(name, signature, generics) {
|
|
180
180
|
const rightmostRegularParameterIndex = rightmostIndexOf(signature.args, it => !isOptionalType(it));
|
|
181
181
|
const args = signature.args.map((it, index) => {
|
|
182
182
|
const optionalToken = idl.isOptionalType(it) && index > rightmostRegularParameterIndex ? '?' : '';
|
|
183
183
|
return `${signature.argName(index)}${optionalToken}: ${this.getNodeName(it)}`;
|
|
184
184
|
});
|
|
185
185
|
const returnType = this.getNodeName(signature.returnType);
|
|
186
|
-
|
|
186
|
+
const typeParams = generics && generics.length ? '<' + (generics === null || generics === void 0 ? void 0 : generics.join(', ')) + '>' : '';
|
|
187
|
+
return `export function ${name}${typeParams}(${args.join(", ")}): ${returnType}`;
|
|
187
188
|
}
|
|
188
|
-
writeEnum(name, members) {
|
|
189
|
-
this.printer.print(
|
|
189
|
+
writeEnum(name, members, options) {
|
|
190
|
+
this.printer.print(`${options.isExport ? "export " : ""}${options.isDeclare ? "declare " : ""}enum ${name} {`);
|
|
190
191
|
this.printer.pushIndent();
|
|
191
192
|
for (const [index, member] of members.entries()) {
|
|
192
193
|
let value;
|
|
@@ -274,7 +275,6 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
274
275
|
this.print(`export const ${constName}: ${this.getNodeName(constType)}${constVal ? ' = ' + constVal : ''}`);
|
|
275
276
|
}
|
|
276
277
|
writeDeclaration(name, signature, needReturn, needBracket, modifiers, generics) {
|
|
277
|
-
var _a;
|
|
278
278
|
let prefix = !modifiers ? undefined : this.supportedModifiers
|
|
279
279
|
.filter(it => modifiers.includes(it))
|
|
280
280
|
.map(it => this.mapMethodModifier(it)).join(" ");
|
|
@@ -290,19 +290,8 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
290
290
|
}
|
|
291
291
|
prefix = prefix ? prefix.trim() + " " : "";
|
|
292
292
|
const typeParams = (generics === null || generics === void 0 ? void 0 : generics.length) ? `<${generics.join(", ")}>` : "";
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
const canBeOptional = [];
|
|
296
|
-
for (let i = signature.args.length - 1; i >= 0; --i) {
|
|
297
|
-
const prevCanBeOptional = (_a = canBeOptional.at(-1)) !== null && _a !== void 0 ? _a : true;
|
|
298
|
-
const curr = signature.args[i];
|
|
299
|
-
const result = prevCanBeOptional && (idl.isOptionalType(curr) || signature.argDefault(i) !== undefined);
|
|
300
|
-
canBeOptional.push(result);
|
|
301
|
-
}
|
|
302
|
-
canBeOptional.reverse();
|
|
303
|
-
const isOptional = signature.args.map((it, i) => idl.isOptionalType(it) && canBeOptional[i] && !isSetter);
|
|
304
|
-
const normalizedArgs = signature.args.map((it, i) => idl.isOptionalType(it) && isOptional[i] ? idl.maybeUnwrapOptionalType(it) : it);
|
|
305
|
-
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 ? " {" : ""}`);
|
|
293
|
+
const normalizedArgs = signature.args.map((it, i) => idl.isOptionalType(it) && signature.isArgOptional(i) ? idl.maybeUnwrapOptionalType(it) : it);
|
|
294
|
+
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 ? " {" : ""}`);
|
|
306
295
|
}
|
|
307
296
|
makeNull() {
|
|
308
297
|
return new StringExpression("undefined");
|
|
@@ -334,9 +323,9 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
334
323
|
writePrintLog(message) {
|
|
335
324
|
this.print(`console.log("${message}")`);
|
|
336
325
|
}
|
|
337
|
-
makeCast(value,
|
|
326
|
+
makeCast(value, node, options) {
|
|
338
327
|
var _a;
|
|
339
|
-
return new TSCastExpression(value, this.getNodeName(
|
|
328
|
+
return new TSCastExpression(value, this.getNodeName(node), (_a = options === null || options === void 0 ? void 0 : options.unsafe) !== null && _a !== void 0 ? _a : false);
|
|
340
329
|
}
|
|
341
330
|
typeInstanceOf(type, value, members) {
|
|
342
331
|
if (idl.isInterface(type)) {
|
|
@@ -399,27 +388,19 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
399
388
|
get supportedFieldModifiers() {
|
|
400
389
|
return [FieldModifier.PUBLIC, FieldModifier.PRIVATE, FieldModifier.PROTECTED, FieldModifier.READONLY, FieldModifier.STATIC];
|
|
401
390
|
}
|
|
402
|
-
|
|
403
|
-
const enumName =
|
|
391
|
+
enumFromI32(value, enumEntry) {
|
|
392
|
+
const enumName = enumEntry.name;
|
|
404
393
|
const ordinal = value.asString();
|
|
405
|
-
return
|
|
394
|
+
return idl.isStringEnum(enumEntry)
|
|
406
395
|
? this.makeString(`Object.values(${enumName})[${ordinal}]`)
|
|
407
|
-
: this.makeString(
|
|
396
|
+
: this.makeString(ordinal);
|
|
408
397
|
}
|
|
409
|
-
|
|
410
|
-
const enumName =
|
|
411
|
-
|
|
412
|
-
if (decl && idl.isEnum(decl) && idl.isStringEnum(decl)) {
|
|
398
|
+
i32FromEnum(value, enumEntry) {
|
|
399
|
+
const enumName = this.getNodeName(enumEntry);
|
|
400
|
+
if (idl.isEnum(enumEntry) && idl.isStringEnum(enumEntry)) {
|
|
413
401
|
return this.makeString(`Object.values(${enumName}).indexOf(${value.asString()})`);
|
|
414
402
|
}
|
|
415
|
-
return value;
|
|
416
|
-
}
|
|
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()`;
|
|
403
|
+
return this.makeString(`${value.asString()}.valueOf()`);
|
|
423
404
|
}
|
|
424
405
|
castToBoolean(value) { return `+${value}`; }
|
|
425
406
|
makeCallIsObject(value) {
|
|
@@ -437,7 +418,7 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
437
418
|
throwException(`The type reference ${decl === null || decl === void 0 ? void 0 : decl.name} must be Enum`);
|
|
438
419
|
}
|
|
439
420
|
const ordinal = idl.isStringEnum(decl)
|
|
440
|
-
? this.
|
|
421
|
+
? this.i32FromEnum(this.makeCast(this.makeString(this.getObjectAccessor(convertor, value)), convertor.idlType), decl)
|
|
441
422
|
: this.makeUnionVariantCast(this.getObjectAccessor(convertor, value), this.getNodeName(idl.IDLI32Type), convertor, index);
|
|
442
423
|
const { low, high } = idl.extremumOfOrdinals(decl);
|
|
443
424
|
return this.discriminatorFromExpressions(value, convertor.runtimeTypes[0], [
|
|
@@ -3,12 +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():
|
|
8
|
+
get files(): idl.IDLFile[];
|
|
12
9
|
typeConvertor(param: string, type: idl.IDLType, isOptionalParam?: boolean): ArgConvertor;
|
|
13
10
|
declarationConvertor(param: string, type: idl.IDLReferenceType, declaration: idl.IDLEntry | undefined): ArgConvertor;
|
|
14
11
|
getInteropName(node: idl.IDLNode): string;
|