@idlizer/core 2.0.31 → 2.0.33
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 -2
- package/build/lib/src/LanguageWriters/ArgConvertors.js +19 -19
- package/build/lib/src/LanguageWriters/LanguageWriter.d.ts +9 -7
- package/build/lib/src/LanguageWriters/LanguageWriter.js +10 -7
- package/build/lib/src/LanguageWriters/convertors/CppConvertors.js +3 -5
- package/build/lib/src/LanguageWriters/convertors/ETSConvertors.d.ts +0 -1
- package/build/lib/src/LanguageWriters/convertors/ETSConvertors.js +1 -8
- package/build/lib/src/LanguageWriters/convertors/TSConvertors.js +2 -2
- package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.js +1 -1
- package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.js +1 -1
- package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.js +7 -3
- package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +14 -3
- package/build/lib/src/from-idl/DtsPrinter.d.ts +1 -1
- package/build/lib/src/from-idl/DtsPrinter.js +28 -22
- package/build/lib/src/from-idl/deserialize.d.ts +1 -2
- package/build/lib/src/from-idl/deserialize.js +10 -12
- package/build/lib/src/idl.d.ts +19 -8
- package/build/lib/src/idl.js +82 -39
- package/build/lib/src/idlize.d.ts +12 -2
- package/build/lib/src/idlize.js +24 -9
- package/build/lib/src/library.d.ts +5 -10
- package/build/lib/src/library.js +2 -2
- package/build/lib/src/peer-generation/PeerFile.d.ts +4 -3
- package/build/lib/src/peer-generation/PeerFile.js +10 -3
- package/build/lib/src/peer-generation/PeerLibrary.d.ts +4 -6
- package/build/lib/src/peer-generation/PeerLibrary.js +18 -36
- package/build/lib/src/peer-generation/PeerMethod.js +5 -1
- package/build/lib/src/peer-generation/idl/IdlNameConvertor.js +5 -4
- package/build/lib/src/peer-generation/idl/common.js +3 -3
- package/build/lib/src/util.d.ts +2 -0
- package/build/lib/src/util.js +4 -0
- package/build/lib/src/visitor.js +1 -1
- package/package.json +1 -1
- package/webidl2.js/dist/webidl2.js +20 -19
|
@@ -3,6 +3,7 @@ import { Language } from "../Language";
|
|
|
3
3
|
import { LanguageExpression, LanguageStatement, LanguageWriter, ExpressionAssigner } from "./LanguageWriter";
|
|
4
4
|
import { RuntimeType } from "./common";
|
|
5
5
|
import { LibraryInterface } from "../LibraryInterface";
|
|
6
|
+
import { ReferenceResolver } from "../peer-generation/ReferenceResolver";
|
|
6
7
|
export interface ArgConvertor {
|
|
7
8
|
param: string;
|
|
8
9
|
idlType: idl.IDLType;
|
|
@@ -220,7 +221,7 @@ export declare class DateConvertor extends BaseArgConvertor {
|
|
|
220
221
|
}
|
|
221
222
|
export declare class ProxyConvertor extends BaseArgConvertor {
|
|
222
223
|
convertor: ArgConvertor;
|
|
223
|
-
constructor(convertor: ArgConvertor,
|
|
224
|
+
constructor(convertor: ArgConvertor, suggestedReference?: idl.IDLReferenceType);
|
|
224
225
|
convertorArg(param: string, writer: LanguageWriter): string;
|
|
225
226
|
convertorDeserialize(bufferName: string, deserializerName: string, assigneer: ExpressionAssigner, writer: LanguageWriter): LanguageStatement;
|
|
226
227
|
convertorSerialize(param: string, value: string, printer: LanguageWriter): void;
|
|
@@ -323,5 +324,5 @@ export declare function generateCallbackKindName(callback: idl.IDLCallback): str
|
|
|
323
324
|
export declare function generateCallbackKindAccess(callback: idl.IDLCallback, language: Language): string;
|
|
324
325
|
export declare function generateCallbackKindValue(callback: idl.IDLCallback): number;
|
|
325
326
|
export declare function generateCallbackAPIArguments(library: LibraryInterface, callback: idl.IDLCallback): string[];
|
|
326
|
-
export declare function maybeTransformManagedCallback(callback: idl.IDLCallback): idl.IDLCallback | undefined;
|
|
327
|
+
export declare function maybeTransformManagedCallback(callback: idl.IDLCallback, library: ReferenceResolver): idl.IDLCallback | undefined;
|
|
327
328
|
//# sourceMappingURL=ArgConvertors.d.ts.map
|
|
@@ -154,7 +154,7 @@ export class StringConvertor extends BaseArgConvertor {
|
|
|
154
154
|
}
|
|
155
155
|
export class EnumConvertor extends BaseArgConvertor {
|
|
156
156
|
constructor(param, enumEntry) {
|
|
157
|
-
super(idl.createReferenceType(enumEntry
|
|
157
|
+
super(idl.createReferenceType(enumEntry), [idl.isStringEnum(enumEntry) ? RuntimeType.STRING : RuntimeType.NUMBER], false, false, param);
|
|
158
158
|
this.enumEntry = enumEntry;
|
|
159
159
|
}
|
|
160
160
|
convertorArg(param, writer) {
|
|
@@ -163,19 +163,19 @@ export class EnumConvertor extends BaseArgConvertor {
|
|
|
163
163
|
convertorSerialize(param, value, writer) {
|
|
164
164
|
value =
|
|
165
165
|
idl.isStringEnum(this.enumEntry)
|
|
166
|
-
? writer.ordinalFromEnum(writer.makeString(value), idl.createReferenceType(this.enumEntry
|
|
166
|
+
? writer.ordinalFromEnum(writer.makeString(value), idl.createReferenceType(this.enumEntry)).asString()
|
|
167
167
|
: writer.makeEnumCast(value, false, this);
|
|
168
168
|
writer.writeMethodCall(`${param}Serializer`, "writeInt32", [value]);
|
|
169
169
|
}
|
|
170
170
|
convertorDeserialize(bufferName, deserializerName, assigneer, writer) {
|
|
171
171
|
const readExpr = writer.makeMethodCall(`${deserializerName}`, "readInt32", []);
|
|
172
172
|
const enumExpr = idl.isStringEnum(this.enumEntry)
|
|
173
|
-
? writer.enumFromOrdinal(readExpr, idl.createReferenceType(this.enumEntry
|
|
174
|
-
: writer.makeCast(readExpr, idl.createReferenceType(this.enumEntry
|
|
173
|
+
? writer.enumFromOrdinal(readExpr, idl.createReferenceType(this.enumEntry))
|
|
174
|
+
: writer.makeCast(readExpr, idl.createReferenceType(this.enumEntry));
|
|
175
175
|
return assigneer(enumExpr);
|
|
176
176
|
}
|
|
177
177
|
nativeType() {
|
|
178
|
-
return idl.createReferenceType(this.enumEntry
|
|
178
|
+
return idl.createReferenceType(this.enumEntry);
|
|
179
179
|
}
|
|
180
180
|
interopType() {
|
|
181
181
|
return idl.IDLI32Type;
|
|
@@ -388,7 +388,7 @@ export class AggregateConvertor extends BaseArgConvertor {
|
|
|
388
388
|
return writer.makeCast(writer.makeString(`{${content}}`), this.idlType);
|
|
389
389
|
}
|
|
390
390
|
nativeType() {
|
|
391
|
-
return idl.createReferenceType(this.decl
|
|
391
|
+
return idl.createReferenceType(this.decl);
|
|
392
392
|
}
|
|
393
393
|
interopType() {
|
|
394
394
|
throw new Error("Must never be used");
|
|
@@ -421,7 +421,7 @@ export class TupleConvertor extends AggregateConvertor {
|
|
|
421
421
|
return writer.makeCast(writer.makeString(`[${fields.map(it => it[1].asString()).join(', ')}]`), this.idlType);
|
|
422
422
|
}
|
|
423
423
|
nativeType() {
|
|
424
|
-
return idl.createReferenceType(this.decl
|
|
424
|
+
return idl.createReferenceType(this.decl);
|
|
425
425
|
}
|
|
426
426
|
interopType() {
|
|
427
427
|
throw new Error("Must never be used");
|
|
@@ -439,7 +439,7 @@ export class TupleConvertor extends AggregateConvertor {
|
|
|
439
439
|
}
|
|
440
440
|
export class InterfaceConvertor extends BaseArgConvertor {
|
|
441
441
|
constructor(library, name /* change to IDLReferenceType */, param, declaration) {
|
|
442
|
-
super(idl.createReferenceType(
|
|
442
|
+
super(idl.createReferenceType(declaration), [RuntimeType.OBJECT], false, true, param);
|
|
443
443
|
this.library = library;
|
|
444
444
|
this.declaration = declaration;
|
|
445
445
|
}
|
|
@@ -637,8 +637,8 @@ export class DateConvertor extends BaseArgConvertor {
|
|
|
637
637
|
}
|
|
638
638
|
}
|
|
639
639
|
export class ProxyConvertor extends BaseArgConvertor {
|
|
640
|
-
constructor(convertor,
|
|
641
|
-
super(
|
|
640
|
+
constructor(convertor, suggestedReference) {
|
|
641
|
+
super(suggestedReference ? suggestedReference : convertor.idlType, convertor.runtimeTypes, convertor.isScoped, convertor.useArray, convertor.param);
|
|
642
642
|
this.convertor = convertor;
|
|
643
643
|
}
|
|
644
644
|
convertorArg(param, writer) {
|
|
@@ -668,7 +668,7 @@ export class ProxyConvertor extends BaseArgConvertor {
|
|
|
668
668
|
}
|
|
669
669
|
export class TypeAliasConvertor extends ProxyConvertor {
|
|
670
670
|
constructor(library, param, typedef) {
|
|
671
|
-
super(library.typeConvertor(param, typedef.type), typedef
|
|
671
|
+
super(library.typeConvertor(param, typedef.type), idl.createReferenceType(typedef));
|
|
672
672
|
}
|
|
673
673
|
}
|
|
674
674
|
export class CustomTypeConvertor extends BaseArgConvertor {
|
|
@@ -888,7 +888,7 @@ export class FunctionConvertor extends BaseArgConvertor {
|
|
|
888
888
|
}
|
|
889
889
|
export class MaterializedClassConvertor extends BaseArgConvertor {
|
|
890
890
|
constructor(param, declaration) {
|
|
891
|
-
super(idl.createReferenceType(declaration
|
|
891
|
+
super(idl.createReferenceType(declaration), [RuntimeType.OBJECT], false, true, param);
|
|
892
892
|
this.declaration = declaration;
|
|
893
893
|
}
|
|
894
894
|
convertorArg(param, writer) {
|
|
@@ -900,11 +900,11 @@ export class MaterializedClassConvertor extends BaseArgConvertor {
|
|
|
900
900
|
])));
|
|
901
901
|
}
|
|
902
902
|
convertorDeserialize(bufferName, deserializerName, assigneer, writer) {
|
|
903
|
-
const readStatement = writer.makeCast(writer.makeMethodCall(`${deserializerName}`, `read${this.declaration.name}`, []), idl.createReferenceType(this.declaration
|
|
903
|
+
const readStatement = writer.makeCast(writer.makeMethodCall(`${deserializerName}`, `read${this.declaration.name}`, []), idl.createReferenceType(this.declaration));
|
|
904
904
|
return assigneer(readStatement);
|
|
905
905
|
}
|
|
906
906
|
nativeType() {
|
|
907
|
-
return idl.createReferenceType(this.declaration
|
|
907
|
+
return idl.createReferenceType(this.declaration);
|
|
908
908
|
}
|
|
909
909
|
interopType() {
|
|
910
910
|
throw new Error("Must never be used");
|
|
@@ -952,7 +952,7 @@ export class ImportTypeConvertor extends BaseArgConvertor {
|
|
|
952
952
|
}
|
|
953
953
|
export class CallbackConvertor extends BaseArgConvertor {
|
|
954
954
|
constructor(library, param, decl) {
|
|
955
|
-
super(idl.createReferenceType(decl
|
|
955
|
+
super(idl.createReferenceType(decl), [RuntimeType.FUNCTION], false, true, param);
|
|
956
956
|
this.library = library;
|
|
957
957
|
this.decl = decl;
|
|
958
958
|
}
|
|
@@ -961,7 +961,7 @@ export class CallbackConvertor extends BaseArgConvertor {
|
|
|
961
961
|
}
|
|
962
962
|
get transformedDecl() {
|
|
963
963
|
var _a;
|
|
964
|
-
return (_a = maybeTransformManagedCallback(this.decl)) !== null && _a !== void 0 ? _a : this.decl;
|
|
964
|
+
return (_a = maybeTransformManagedCallback(this.decl, this.library)) !== null && _a !== void 0 ? _a : this.decl;
|
|
965
965
|
}
|
|
966
966
|
convertorArg(param, writer) {
|
|
967
967
|
throw new Error("Must never be used");
|
|
@@ -998,7 +998,7 @@ export class CallbackConvertor extends BaseArgConvertor {
|
|
|
998
998
|
return assigneer(result);
|
|
999
999
|
}
|
|
1000
1000
|
nativeType() {
|
|
1001
|
-
return idl.createReferenceType(this.
|
|
1001
|
+
return idl.createReferenceType(this.decl);
|
|
1002
1002
|
}
|
|
1003
1003
|
isPointerType() {
|
|
1004
1004
|
return true;
|
|
@@ -1042,9 +1042,9 @@ export function generateCallbackAPIArguments(library, callback) {
|
|
|
1042
1042
|
}
|
|
1043
1043
|
return args;
|
|
1044
1044
|
}
|
|
1045
|
-
export function maybeTransformManagedCallback(callback) {
|
|
1045
|
+
export function maybeTransformManagedCallback(callback, library) {
|
|
1046
1046
|
if (callback.name === "CustomBuilder")
|
|
1047
|
-
return
|
|
1047
|
+
return library.resolveTypeReference(idl.createReferenceType("CustomNodeBuilder"));
|
|
1048
1048
|
return undefined;
|
|
1049
1049
|
}
|
|
1050
1050
|
//# sourceMappingURL=ArgConvertors.js.map
|
|
@@ -147,13 +147,14 @@ export declare enum FieldModifier {
|
|
|
147
147
|
export declare enum MethodModifier {
|
|
148
148
|
PUBLIC = 0,
|
|
149
149
|
PRIVATE = 1,
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
150
|
+
PROTECTED = 2,
|
|
151
|
+
STATIC = 3,
|
|
152
|
+
NATIVE = 4,
|
|
153
|
+
INLINE = 5,
|
|
154
|
+
GETTER = 6,
|
|
155
|
+
SETTER = 7,
|
|
156
|
+
THROWS = 8,
|
|
157
|
+
FREE = 9
|
|
157
158
|
}
|
|
158
159
|
export declare enum ClassModifier {
|
|
159
160
|
PUBLIC = 0,
|
|
@@ -214,6 +215,7 @@ export declare abstract class LanguageWriter {
|
|
|
214
215
|
printer: IndentedPrinter;
|
|
215
216
|
resolver: ReferenceResolver;
|
|
216
217
|
language: Language;
|
|
218
|
+
protected namespaceStack: string[];
|
|
217
219
|
constructor(printer: IndentedPrinter, resolver: ReferenceResolver, // TODO make protected again
|
|
218
220
|
language: Language);
|
|
219
221
|
indentDepth(): number;
|
|
@@ -309,13 +309,14 @@ export var MethodModifier;
|
|
|
309
309
|
(function (MethodModifier) {
|
|
310
310
|
MethodModifier[MethodModifier["PUBLIC"] = 0] = "PUBLIC";
|
|
311
311
|
MethodModifier[MethodModifier["PRIVATE"] = 1] = "PRIVATE";
|
|
312
|
-
MethodModifier[MethodModifier["
|
|
313
|
-
MethodModifier[MethodModifier["
|
|
314
|
-
MethodModifier[MethodModifier["
|
|
315
|
-
MethodModifier[MethodModifier["
|
|
316
|
-
MethodModifier[MethodModifier["
|
|
317
|
-
MethodModifier[MethodModifier["
|
|
318
|
-
MethodModifier[MethodModifier["
|
|
312
|
+
MethodModifier[MethodModifier["PROTECTED"] = 2] = "PROTECTED";
|
|
313
|
+
MethodModifier[MethodModifier["STATIC"] = 3] = "STATIC";
|
|
314
|
+
MethodModifier[MethodModifier["NATIVE"] = 4] = "NATIVE";
|
|
315
|
+
MethodModifier[MethodModifier["INLINE"] = 5] = "INLINE";
|
|
316
|
+
MethodModifier[MethodModifier["GETTER"] = 6] = "GETTER";
|
|
317
|
+
MethodModifier[MethodModifier["SETTER"] = 7] = "SETTER";
|
|
318
|
+
MethodModifier[MethodModifier["THROWS"] = 8] = "THROWS";
|
|
319
|
+
MethodModifier[MethodModifier["FREE"] = 9] = "FREE";
|
|
319
320
|
})(MethodModifier || (MethodModifier = {}));
|
|
320
321
|
export var ClassModifier;
|
|
321
322
|
(function (ClassModifier) {
|
|
@@ -396,6 +397,7 @@ export class LanguageWriter {
|
|
|
396
397
|
this.printer = printer;
|
|
397
398
|
this.resolver = resolver;
|
|
398
399
|
this.language = language;
|
|
400
|
+
this.namespaceStack = [];
|
|
399
401
|
}
|
|
400
402
|
indentDepth() {
|
|
401
403
|
return this.printer.indentDepth();
|
|
@@ -731,6 +733,7 @@ export class LanguageWriter {
|
|
|
731
733
|
* Writes closing brace of namespace block and removes one level of indent
|
|
732
734
|
*/
|
|
733
735
|
popNamespace(ident = true) {
|
|
736
|
+
this.namespaceStack.pop();
|
|
734
737
|
if (ident)
|
|
735
738
|
this.popIndent();
|
|
736
739
|
this.print(`}`);
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* limitations under the License.
|
|
14
14
|
*/
|
|
15
15
|
import * as idl from '../../idl';
|
|
16
|
-
import { generatorConfiguration } from "../../config";
|
|
16
|
+
import { generatorConfiguration, generatorTypePrefix } from "../../config";
|
|
17
17
|
import { convertNode, convertType } from "../nameConvertor";
|
|
18
18
|
import { PrimitiveTypesInstance } from '../../peer-generation/PrimitiveType';
|
|
19
19
|
import { InteropArgConvertor } from './InteropConvertors';
|
|
@@ -105,7 +105,7 @@ export class GenericCppConvertor {
|
|
|
105
105
|
}
|
|
106
106
|
let decl = this.resolver.toDeclaration(type);
|
|
107
107
|
if (idl.isCallback(decl)) {
|
|
108
|
-
decl = (_a = maybeTransformManagedCallback(decl)) !== null && _a !== void 0 ? _a : decl;
|
|
108
|
+
decl = (_a = maybeTransformManagedCallback(decl, this.resolver)) !== null && _a !== void 0 ? _a : decl;
|
|
109
109
|
}
|
|
110
110
|
if (idl.isType(decl)) {
|
|
111
111
|
if (idl.isReferenceType(decl)) {
|
|
@@ -239,8 +239,6 @@ export class CppReturnTypeConvertor {
|
|
|
239
239
|
convertPrimitiveType(type) {
|
|
240
240
|
if (type == idl.IDLUndefinedType)
|
|
241
241
|
return 'void';
|
|
242
|
-
if (type == idl.IDLStringType)
|
|
243
|
-
return 'void';
|
|
244
242
|
if (type == idl.IDLNumberType)
|
|
245
243
|
return generatorConfiguration().TypePrefix + 'Int32'; // :(
|
|
246
244
|
return this.convertor.convert(type);
|
|
@@ -251,7 +249,7 @@ export class CppReturnTypeConvertor {
|
|
|
251
249
|
convertTypeReference(type) {
|
|
252
250
|
const decl = this.resolver.resolveTypeReference(type);
|
|
253
251
|
if (decl && idl.isInterface(decl) && isMaterialized(decl, this.resolver)) {
|
|
254
|
-
return
|
|
252
|
+
return generatorTypePrefix() + decl.name;
|
|
255
253
|
}
|
|
256
254
|
return this.convertor.convert(type);
|
|
257
255
|
}
|
|
@@ -2,7 +2,6 @@ import * as idl from "../../idl";
|
|
|
2
2
|
import { TSTypeNameConvertor } from "./TSConvertors";
|
|
3
3
|
export declare class ETSTypeNameConvertor extends TSTypeNameConvertor {
|
|
4
4
|
convertTypeReference(type: idl.IDLReferenceType): string;
|
|
5
|
-
convertEnum(node: idl.IDLEnum): string;
|
|
6
5
|
convertContainer(type: idl.IDLContainerType): string;
|
|
7
6
|
convertPrimitiveType(type: idl.IDLPrimitiveType): string;
|
|
8
7
|
protected productType(decl: idl.IDLInterface, isTuple: boolean, includeFieldNames: boolean): string;
|
|
@@ -28,7 +28,7 @@ export class ETSTypeNameConvertor extends TSTypeNameConvertor {
|
|
|
28
28
|
const types = type.name.split(".");
|
|
29
29
|
if (types.length > 1) {
|
|
30
30
|
// Takes only name without the namespace prefix
|
|
31
|
-
const decl = this.resolver.resolveTypeReference(idl.createReferenceType(types.slice(-1).join()
|
|
31
|
+
const decl = this.resolver.resolveTypeReference(idl.createReferenceType(types.slice(-1).join()));
|
|
32
32
|
if (decl !== undefined) {
|
|
33
33
|
return convertDeclaration(createDeclarationNameConvertor(Language.ARKTS), decl);
|
|
34
34
|
}
|
|
@@ -40,13 +40,6 @@ export class ETSTypeNameConvertor extends TSTypeNameConvertor {
|
|
|
40
40
|
}
|
|
41
41
|
return typeName;
|
|
42
42
|
}
|
|
43
|
-
convertEnum(node) {
|
|
44
|
-
let ns = idl.getNamespaceName(node).split('.').join('_');
|
|
45
|
-
if (ns !== '') {
|
|
46
|
-
ns += '_';
|
|
47
|
-
}
|
|
48
|
-
return ns + node.name;
|
|
49
|
-
}
|
|
50
43
|
convertContainer(type) {
|
|
51
44
|
if (idl.IDLContainerUtils.isSequence(type)) {
|
|
52
45
|
switch (type.elementType[0]) {
|
|
@@ -25,10 +25,10 @@ export class TSTypeNameConvertor {
|
|
|
25
25
|
return node.name;
|
|
26
26
|
}
|
|
27
27
|
convertInterface(node) {
|
|
28
|
-
return node
|
|
28
|
+
return idl.getFQName(node);
|
|
29
29
|
}
|
|
30
30
|
convertEnum(node) {
|
|
31
|
-
return node
|
|
31
|
+
return idl.getFQName(node);
|
|
32
32
|
}
|
|
33
33
|
convertTypedef(node) {
|
|
34
34
|
return node.name;
|
|
@@ -186,7 +186,7 @@ export class CJEnumWithGetter {
|
|
|
186
186
|
}
|
|
187
187
|
let enumName = this.enumEntity.name;
|
|
188
188
|
writer.writeClass(enumName, () => {
|
|
189
|
-
const enumType = idl.createReferenceType(
|
|
189
|
+
const enumType = idl.createReferenceType(this.enumEntity);
|
|
190
190
|
members.forEach(it => {
|
|
191
191
|
writer.writeFieldDeclaration(it.name, enumType, [FieldModifier.PUBLIC, FieldModifier.STATIC, FieldModifier.FINAL], false, writer.makeString(`${enumName}(${it.numberId})`));
|
|
192
192
|
});
|
|
@@ -243,7 +243,7 @@ export class CppLanguageWriter extends CLikeLanguageWriter {
|
|
|
243
243
|
this.print(`#include <${path}>`);
|
|
244
244
|
}
|
|
245
245
|
makeRef(type, options) {
|
|
246
|
-
return createReferenceType(`${this.stringifyTypeWithReceiver(type, options === null || options === void 0 ? void 0 : options.receiver)}
|
|
246
|
+
return createReferenceType(`${this.stringifyTypeWithReceiver(type, options === null || options === void 0 ? void 0 : options.receiver)}&`);
|
|
247
247
|
}
|
|
248
248
|
makeThis() {
|
|
249
249
|
return new StringExpression("*this");
|
|
@@ -63,7 +63,8 @@ export class ArkTSEnumEntityStatement {
|
|
|
63
63
|
this.isExport = isExport;
|
|
64
64
|
}
|
|
65
65
|
write(writer) {
|
|
66
|
-
|
|
66
|
+
let enumName = convertDeclaration(createDeclarationNameConvertor(Language.ARKTS), this.enumEntity);
|
|
67
|
+
enumName = enumName.split('.').at(-1);
|
|
67
68
|
const members = this.enumEntity.elements
|
|
68
69
|
.flatMap((member, index) => {
|
|
69
70
|
var _a;
|
|
@@ -93,7 +94,10 @@ export class ArkTSEnumEntityStatement {
|
|
|
93
94
|
}
|
|
94
95
|
return res;
|
|
95
96
|
});
|
|
97
|
+
const nss = idl.getNamespacesPathFor(this.enumEntity);
|
|
98
|
+
nss.forEach(it => writer.pushNamespace(it.name));
|
|
96
99
|
writer.writeEnum(enumName, members);
|
|
100
|
+
nss.forEach(() => writer.popNamespace());
|
|
97
101
|
}
|
|
98
102
|
}
|
|
99
103
|
export class ETSLambdaExpression extends LambdaExpression {
|
|
@@ -113,7 +117,7 @@ export class ETSLambdaExpression extends LambdaExpression {
|
|
|
113
117
|
// Issue: https://rnd-gitlab-msc.huawei.com/rus-os-team/virtual-machines-and-tools/panda/-/issues/21333
|
|
114
118
|
let isRetTypeCallback = idl.isCallback(this.signature.returnType);
|
|
115
119
|
if (idl.isReferenceType(this.signature.returnType)) {
|
|
116
|
-
const resolved = this.resolver.resolveTypeReference(
|
|
120
|
+
const resolved = this.resolver.resolveTypeReference(this.signature.returnType);
|
|
117
121
|
isRetTypeCallback = resolved !== undefined && idl.isCallback(resolved);
|
|
118
122
|
}
|
|
119
123
|
return `(${params.join(", ")})${isRetTypeCallback
|
|
@@ -237,7 +241,7 @@ export class ETSLanguageWriter extends TSLanguageWriter {
|
|
|
237
241
|
? convertor.nativeType().types[runtimeTypeIndex]
|
|
238
242
|
: idl.maybeUnwrapOptionalType(convertor.nativeType());
|
|
239
243
|
if (idlType !== undefined && idl.isReferenceType(idlType)) {
|
|
240
|
-
const resolved = this.resolver.resolveTypeReference(
|
|
244
|
+
const resolved = this.resolver.resolveTypeReference(idlType);
|
|
241
245
|
type = resolved != undefined && idl.isEnum(resolved) ? RuntimeType[RuntimeType.OBJECT] : type;
|
|
242
246
|
}
|
|
243
247
|
}
|
|
@@ -124,6 +124,7 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
124
124
|
}
|
|
125
125
|
maybeSemicolon() { return ""; }
|
|
126
126
|
pushNamespace(namespace, ident = true) {
|
|
127
|
+
this.namespaceStack.push(namespace);
|
|
127
128
|
this.print(`export namespace ${namespace} {`);
|
|
128
129
|
if (ident)
|
|
129
130
|
this.pushIndent();
|
|
@@ -133,7 +134,14 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
133
134
|
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);
|
|
134
135
|
}
|
|
135
136
|
getNodeName(type) {
|
|
136
|
-
|
|
137
|
+
// just stub.
|
|
138
|
+
// language writers and name convertors are subject to rework for namespaces
|
|
139
|
+
const row = this.typeConvertor.convert(type);
|
|
140
|
+
const nsPrefix = this.namespaceStack.join('.') + '.';
|
|
141
|
+
if (row.startsWith(nsPrefix)) {
|
|
142
|
+
return row.substring(nsPrefix.length);
|
|
143
|
+
}
|
|
144
|
+
return row;
|
|
137
145
|
}
|
|
138
146
|
writeClass(name, op, superClass, interfaces, generics, isDeclared, isAbstract) {
|
|
139
147
|
let extendsClause = superClass ? ` extends ${superClass}` : '';
|
|
@@ -377,12 +385,15 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
377
385
|
return TSKeywords.has(keyword) ? keyword + "_" : keyword;
|
|
378
386
|
}
|
|
379
387
|
makeDiscriminatorConvertor(convertor, value, index) {
|
|
380
|
-
const
|
|
388
|
+
const convertorNativeType = convertor.nativeType();
|
|
389
|
+
const decl = this.resolver.resolveTypeReference(idl.isReferenceType(convertorNativeType)
|
|
390
|
+
? convertorNativeType
|
|
391
|
+
: idl.createReferenceType(this.getNodeName(convertorNativeType)));
|
|
381
392
|
if (decl === undefined || !idl.isEnum(decl)) {
|
|
382
393
|
throwException(`The type reference ${decl === null || decl === void 0 ? void 0 : decl.name} must be Enum`);
|
|
383
394
|
}
|
|
384
395
|
const ordinal = idl.isStringEnum(decl)
|
|
385
|
-
? this.ordinalFromEnum(this.makeCast(this.makeString(this.getObjectAccessor(convertor, value)), convertor.idlType), idl.createReferenceType(this.getNodeName(convertor.nativeType())
|
|
396
|
+
? this.ordinalFromEnum(this.makeCast(this.makeString(this.getObjectAccessor(convertor, value)), convertor.idlType), idl.createReferenceType(this.getNodeName(convertor.nativeType())))
|
|
386
397
|
: this.makeUnionVariantCast(this.getObjectAccessor(convertor, value), this.getNodeName(idl.IDLI32Type), convertor, index);
|
|
387
398
|
const { low, high } = idl.extremumOfOrdinals(decl);
|
|
388
399
|
return this.discriminatorFromExpressions(value, convertor.runtimeTypes[0], [
|
|
@@ -11,7 +11,7 @@ export declare class CustomPrintVisitor {
|
|
|
11
11
|
printMetadata(node: IDLEnum): void;
|
|
12
12
|
printConstant(node: IDLConstant): void;
|
|
13
13
|
printInterface(node: IDLInterface): void;
|
|
14
|
-
printMethod(node: IDLMethod | IDLConstructor | IDLCallable,
|
|
14
|
+
printMethod(node: IDLMethod | IDLConstructor | IDLCallable, forceAsFree?: boolean): void;
|
|
15
15
|
paramText(paramOrTag: IDLParameter | SignatureTag): string;
|
|
16
16
|
printProperty(node: IDLProperty): void;
|
|
17
17
|
printEnum(node: IDLEnum): void;
|
|
@@ -12,11 +12,12 @@
|
|
|
12
12
|
* See the License for the specific language governing permissions and
|
|
13
13
|
* limitations under the License.
|
|
14
14
|
*/
|
|
15
|
-
import { indentedBy } from "../util";
|
|
16
|
-
import { IDLEntity, IDLKind, getExtAttribute, getVerbatimDts, hasExtAttribute, isCallback, isConstructor, isContainerType, isEnum, isInterface, isMethod, isPrimitiveType, isProperty, isReferenceType, isSyntheticEntry, isTypeParameterType, isTypedef, isUnionType, isPackage, isImport, isVersion, isNamespace, IDLExtendedAttributes, IDLAccessorAttribute, IDLVoidType, IDLStringType, IDLUndefinedType, isCallable, getSuperType, IDLAnyType, IDLContainerUtils, DebugUtils, mixMethodParametersAndTags, createReferenceType, transformMethodsAsync2ReturnPromise, isNamedNode, IDLThisType, isOptionalType, IDLI8Type, IDLU8Type, IDLI16Type, IDLU16Type, IDLI32Type, IDLU32Type, IDLI64Type, IDLU64Type, IDLF16Type, IDLF32Type, IDLF64Type, IDLBufferType, isUnspecifiedGenericType, IDLUnknownType, IDLBooleanType, IDLNumberType, IDLPointerType, IDLInterfaceSubkind, escapeIDLKeyword, getNamespacesPathFor } from "../idl";
|
|
15
|
+
import { indentedBy, isInNamespace } from "../util";
|
|
16
|
+
import { IDLEntity, IDLKind, getExtAttribute, getVerbatimDts, hasExtAttribute, isCallback, isConstructor, isContainerType, isEnum, isInterface, isMethod, isPrimitiveType, isProperty, isReferenceType, isSyntheticEntry, isTypeParameterType, isTypedef, isUnionType, isPackage, isImport, isVersion, isNamespace, IDLExtendedAttributes, IDLAccessorAttribute, IDLVoidType, IDLStringType, IDLUndefinedType, isCallable, getSuperType, IDLAnyType, IDLContainerUtils, DebugUtils, mixMethodParametersAndTags, createReferenceType, transformMethodsAsync2ReturnPromise, isNamedNode, IDLThisType, isOptionalType, IDLI8Type, IDLU8Type, IDLI16Type, IDLU16Type, IDLI32Type, IDLU32Type, IDLI64Type, IDLU64Type, IDLF16Type, IDLF32Type, IDLF64Type, IDLBufferType, isUnspecifiedGenericType, IDLUnknownType, IDLBooleanType, IDLNumberType, IDLPointerType, IDLInterfaceSubkind, escapeIDLKeyword, getNamespacesPathFor, IDLBigintType } from "../idl";
|
|
17
17
|
import * as webidl2 from "webidl2";
|
|
18
18
|
import { resolveSyntheticType, toIDLNode } from "./deserialize";
|
|
19
19
|
import { Language } from "../Language";
|
|
20
|
+
import { warn } from "../util";
|
|
20
21
|
export class CustomPrintVisitor {
|
|
21
22
|
constructor(resolver, language) {
|
|
22
23
|
this.resolver = resolver;
|
|
@@ -27,7 +28,8 @@ export class CustomPrintVisitor {
|
|
|
27
28
|
visit(node, wrapNamespaces = false) {
|
|
28
29
|
const namespacesPath = wrapNamespaces ? getNamespacesPathFor(node) : [];
|
|
29
30
|
for (const namespace of namespacesPath) {
|
|
30
|
-
|
|
31
|
+
const isTopmost = namespacesPath[0] === namespace;
|
|
32
|
+
this.print(`${!isTopmost ? "" : "declare "}namespace ${namespace.name} {`);
|
|
31
33
|
this.pushIndent();
|
|
32
34
|
}
|
|
33
35
|
if (hasExtAttribute(node, IDLExtendedAttributes.TSType) && this.language == Language.TS)
|
|
@@ -82,7 +84,7 @@ export class CustomPrintVisitor {
|
|
|
82
84
|
this.print(exports);
|
|
83
85
|
}
|
|
84
86
|
printConstant(node) {
|
|
85
|
-
this.print(`${node
|
|
87
|
+
this.print(`${isInNamespace(node) ? "" : "declare "}const ${node.name} : ${isPrimitiveType(node.type) ? "" : "typeof"} ${this.printTypeForTS(node.type)} = ${node.value}`);
|
|
86
88
|
}
|
|
87
89
|
printInterface(node) {
|
|
88
90
|
var _a;
|
|
@@ -92,13 +94,13 @@ export class CustomPrintVisitor {
|
|
|
92
94
|
typeSpec = "WrappedBuilder<Args extends any[]>";
|
|
93
95
|
const entity = (_a = getExtAttribute(node, IDLExtendedAttributes.Entity)) !== null && _a !== void 0 ? _a : IDLEntity.Interface;
|
|
94
96
|
if (entity === IDLEntity.Literal) {
|
|
95
|
-
this.print(`${node
|
|
97
|
+
this.print(`${isInNamespace(node) ? "" : "declare "}type ${typeSpec} = ${this.literal(node, false, true)}`);
|
|
96
98
|
}
|
|
97
99
|
else if (entity === IDLEntity.Tuple) {
|
|
98
|
-
this.print(`${node
|
|
100
|
+
this.print(`${isInNamespace(node) ? "" : "declare "}type ${typeSpec} = ${this.literal(node, true, false)}`);
|
|
99
101
|
}
|
|
100
102
|
else if (entity === IDLEntity.NamedTuple) {
|
|
101
|
-
this.print(`${node
|
|
103
|
+
this.print(`${isInNamespace(node) ? "" : "declare "}type ${typeSpec} = ${this.literal(node, true, true)}`);
|
|
102
104
|
}
|
|
103
105
|
else {
|
|
104
106
|
// restore globalScope
|
|
@@ -118,7 +120,7 @@ export class CustomPrintVisitor {
|
|
|
118
120
|
}
|
|
119
121
|
if (interfaces.length > 0)
|
|
120
122
|
typeSpec += ` ${keyword} ${interfaces.map(it => this.toTypeName(it)).join(", ")}`;
|
|
121
|
-
this.print(`${node
|
|
123
|
+
this.print(`${isInNamespace(node) ? "" : "declare "}${entity.toLowerCase()} ${typeSpec} {`);
|
|
122
124
|
this.currentInterface = node;
|
|
123
125
|
this.pushIndent();
|
|
124
126
|
node.constructors.map(it => this.visit(it));
|
|
@@ -135,8 +137,7 @@ export class CustomPrintVisitor {
|
|
|
135
137
|
this.print("}");
|
|
136
138
|
}
|
|
137
139
|
}
|
|
138
|
-
|
|
139
|
-
printMethod(node, isGlobal = false) {
|
|
140
|
+
printMethod(node, forceAsFree = false) {
|
|
140
141
|
const returnType = node.returnType && !(isConstructor(node) && this.currentInterface.subkind === IDLInterfaceSubkind.Class)
|
|
141
142
|
? `: ${this.printTypeForTS(node.returnType, true)}` : "";
|
|
142
143
|
const name = isConstructor(node)
|
|
@@ -145,13 +146,16 @@ export class CustomPrintVisitor {
|
|
|
145
146
|
const typeParams = (node.typeParameters && node.typeParameters.length > 0) ? `<${node.typeParameters.join(",")}>` : "";
|
|
146
147
|
let preamble = "";
|
|
147
148
|
if (!isCallable(node)) {
|
|
148
|
-
|
|
149
|
+
let isStatic = isMethod(node) && node.isStatic;
|
|
149
150
|
const isProtected = hasExtAttribute(node, IDLExtendedAttributes.Protected);
|
|
150
151
|
const isOptional = isMethod(node) && node.isOptional;
|
|
151
|
-
|
|
152
|
-
if (
|
|
153
|
-
|
|
154
|
-
|
|
152
|
+
let isFree = isMethod(node) && node.isFree;
|
|
153
|
+
if (forceAsFree) {
|
|
154
|
+
isStatic = false;
|
|
155
|
+
isFree = true;
|
|
156
|
+
}
|
|
157
|
+
const inNamespace = getNamespacesPathFor(node).length > 0;
|
|
158
|
+
preamble = `${isFree ? `${isInNamespace(node) ? "" : "declare "}function ` : ""}${isProtected ? "protected " : ""}${isStatic ? "static " : ""}${name}${isOptional ? "?" : ""}`;
|
|
155
159
|
}
|
|
156
160
|
this.print(`${preamble}${typeParams}(${mixMethodParametersAndTags(node).map(p => this.paramText(p)).join(", ")})${returnType};`);
|
|
157
161
|
}
|
|
@@ -187,7 +191,7 @@ export class CustomPrintVisitor {
|
|
|
187
191
|
}
|
|
188
192
|
}
|
|
189
193
|
printEnum(node) {
|
|
190
|
-
this.print(`${node
|
|
194
|
+
this.print(`${isInNamespace(node) ? "" : "declare "}enum ${node.name} {`);
|
|
191
195
|
this.pushIndent();
|
|
192
196
|
node.elements.forEach(it => {
|
|
193
197
|
const initializer = (it.type === IDLStringType ? `"${it.initializer}"` : `${it.initializer}`);
|
|
@@ -204,10 +208,11 @@ export class CustomPrintVisitor {
|
|
|
204
208
|
// Let's skip imported declarations
|
|
205
209
|
if (isTypedef(node) &&
|
|
206
210
|
hasExtAttribute(node, IDLExtendedAttributes.Import)) {
|
|
207
|
-
let definition = this.resolver(createReferenceType(node
|
|
211
|
+
let definition = this.resolver(createReferenceType(node));
|
|
208
212
|
// TODO: handle namespace case better!
|
|
209
213
|
// TODO: namespace-related-to-rework
|
|
210
|
-
throw new Error("not implemented yet")
|
|
214
|
+
//throw new Error("not implemented yet")
|
|
215
|
+
warn("Typedef-with-Import is not implemented yet");
|
|
211
216
|
// if (definition && !isTypedef(definition) && !hasExtAttribute(definition, IDLExtendedAttributes.Namespace)) {
|
|
212
217
|
// console.log(`Has better definition for ${node.name}: ${definition.fileName} ${definition.kind}`)
|
|
213
218
|
// return
|
|
@@ -217,7 +222,7 @@ export class CustomPrintVisitor {
|
|
|
217
222
|
: hasExtAttribute(node, IDLExtendedAttributes.Import) ? IDLAnyType.name
|
|
218
223
|
: this.printTypeForTS(node.type);
|
|
219
224
|
const typeParams = node.typeParameters && node.typeParameters.length > 0 ? `<${node.typeParameters.join(",")}>` : "";
|
|
220
|
-
this.print(`${node
|
|
225
|
+
this.print(`${isInNamespace(node) ? '' : 'declare '}type ${getName(node)}${typeParams} = ${text};`);
|
|
221
226
|
}
|
|
222
227
|
printVersion(node) {
|
|
223
228
|
let text = node.value.join(".");
|
|
@@ -229,17 +234,17 @@ export class CustomPrintVisitor {
|
|
|
229
234
|
this.print(verbatimDts);
|
|
230
235
|
return;
|
|
231
236
|
}
|
|
232
|
-
this.print(`${node
|
|
237
|
+
this.print(`${isInNamespace(node) ? "" : "declare "} namespace ${node.name} {`);
|
|
233
238
|
this.pushIndent();
|
|
234
239
|
node.members.forEach(member => this.visit(member));
|
|
235
240
|
this.popIndent();
|
|
236
241
|
this.print("}");
|
|
237
242
|
}
|
|
238
243
|
printImport(node) {
|
|
239
|
-
this.print(`// import ${node.name}`);
|
|
244
|
+
this.print(`// import ${node.clause.join(".")}${node.name ? " as " : ""}${node.name || ""}`);
|
|
240
245
|
}
|
|
241
246
|
printPackage(node) {
|
|
242
|
-
this.print(`// package ${node.
|
|
247
|
+
this.print(`// package ${node.clause.join(".")}`);
|
|
243
248
|
}
|
|
244
249
|
checkVerbatim(node) {
|
|
245
250
|
let verbatim = getExtAttribute(node, IDLExtendedAttributes.VerbatimDts);
|
|
@@ -291,6 +296,7 @@ export class CustomPrintVisitor {
|
|
|
291
296
|
case IDLStringType: return "string";
|
|
292
297
|
case IDLVoidType: return "void";
|
|
293
298
|
case IDLThisType: return "T";
|
|
299
|
+
case IDLBigintType:
|
|
294
300
|
case IDLPointerType: return "number|bigint";
|
|
295
301
|
default: throw new Error(`Unknown primitive type ${DebugUtils.debugPrintType(type)}`);
|
|
296
302
|
}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import * as webidl2 from "webidl2";
|
|
2
2
|
import * as idl from "../idl";
|
|
3
|
-
import * as lib from "../library";
|
|
4
3
|
export declare function addSyntheticType(name: string, type: idl.IDLEntry): void;
|
|
5
4
|
export declare function resolveSyntheticType(type: idl.IDLReferenceType): idl.IDLEntry | undefined;
|
|
6
5
|
export declare function toIDLNode(file: string, node: webidl2.IDLRootType): idl.IDLEntry;
|
|
7
6
|
export declare function toIDL(file: string): idl.IDLEntry[];
|
|
8
|
-
export declare function toIDLFile(fileName: string):
|
|
7
|
+
export declare function toIDLFile(fileName: string): idl.IDLFile;
|
|
9
8
|
//# sourceMappingURL=deserialize.d.ts.map
|
|
@@ -29,9 +29,7 @@ export function resolveSyntheticType(type) {
|
|
|
29
29
|
return syntheticTypes.get(type.name);
|
|
30
30
|
}
|
|
31
31
|
export function toIDLNode(file, node) {
|
|
32
|
-
|
|
33
|
-
idl.linkNamespacesBack(result);
|
|
34
|
-
return result;
|
|
32
|
+
return toIDLNodeForward(file, node);
|
|
35
33
|
}
|
|
36
34
|
function toIDLNodeForward(file, node) {
|
|
37
35
|
if (isEnum(node)) {
|
|
@@ -88,11 +86,15 @@ function isCallable(node) {
|
|
|
88
86
|
return node.extAttrs.some(it => it.name == "Invoke");
|
|
89
87
|
}
|
|
90
88
|
function toIDLPackage(node) {
|
|
91
|
-
|
|
89
|
+
if (node.clause.startsWith('"')) { // TODO: remove after new schema formation
|
|
90
|
+
//node.clause = node.clause.substring(1, node.clause.length - 1)
|
|
91
|
+
throw new Error("Obsolete IDL-source syntax detected");
|
|
92
|
+
}
|
|
93
|
+
return idl.createPackage(node.clause.split("."));
|
|
92
94
|
}
|
|
93
95
|
function toIDLImport(node) {
|
|
94
96
|
// console.log(node)
|
|
95
|
-
return idl.createImport(node.
|
|
97
|
+
return idl.createImport(node.clause.split("."), node.alias || undefined);
|
|
96
98
|
}
|
|
97
99
|
function toIDLInterface(file, node) {
|
|
98
100
|
var _a;
|
|
@@ -373,12 +375,8 @@ export function toIDL(file) {
|
|
|
373
375
|
}
|
|
374
376
|
export function toIDLFile(fileName) {
|
|
375
377
|
const content = fs.readFileSync(fileName).toString();
|
|
376
|
-
const
|
|
377
|
-
const
|
|
378
|
-
return
|
|
379
|
-
fileName,
|
|
380
|
-
entities,
|
|
381
|
-
package: pack,
|
|
382
|
-
};
|
|
378
|
+
const entries = webidl2.parse(content).map(it => toIDLNode(fileName, it));
|
|
379
|
+
const file = idl.createFile(entries, fileName);
|
|
380
|
+
return idl.linkParentBack(file);
|
|
383
381
|
}
|
|
384
382
|
//# sourceMappingURL=deserialize.js.map
|