@idlizer/core 2.0.32 → 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/LanguageWriter.d.ts +9 -7
- package/build/lib/src/LanguageWriters/LanguageWriter.js +10 -7
- package/build/lib/src/LanguageWriters/convertors/ETSConvertors.d.ts +0 -1
- package/build/lib/src/LanguageWriters/convertors/ETSConvertors.js +0 -7
- package/build/lib/src/LanguageWriters/convertors/TSConvertors.js +2 -2
- package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.js +5 -1
- package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +9 -1
- package/build/lib/src/from-idl/DtsPrinter.d.ts +1 -1
- package/build/lib/src/from-idl/DtsPrinter.js +10 -7
- package/build/lib/src/idl.d.ts +1 -0
- package/build/lib/src/idl.js +1 -0
- package/build/lib/src/peer-generation/PeerMethod.js +5 -1
- package/build/lib/src/peer-generation/idl/IdlNameConvertor.js +5 -4
- package/package.json +1 -1
|
@@ -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(`}`);
|
|
@@ -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;
|
|
@@ -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;
|
|
@@ -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 {
|
|
@@ -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}` : '';
|
|
@@ -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;
|
|
@@ -17,6 +17,7 @@ import { IDLEntity, IDLKind, getExtAttribute, getVerbatimDts, hasExtAttribute, i
|
|
|
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;
|
|
@@ -136,8 +137,7 @@ export class CustomPrintVisitor {
|
|
|
136
137
|
this.print("}");
|
|
137
138
|
}
|
|
138
139
|
}
|
|
139
|
-
|
|
140
|
-
printMethod(node, isGlobal = false) {
|
|
140
|
+
printMethod(node, forceAsFree = false) {
|
|
141
141
|
const returnType = node.returnType && !(isConstructor(node) && this.currentInterface.subkind === IDLInterfaceSubkind.Class)
|
|
142
142
|
? `: ${this.printTypeForTS(node.returnType, true)}` : "";
|
|
143
143
|
const name = isConstructor(node)
|
|
@@ -146,12 +146,14 @@ export class CustomPrintVisitor {
|
|
|
146
146
|
const typeParams = (node.typeParameters && node.typeParameters.length > 0) ? `<${node.typeParameters.join(",")}>` : "";
|
|
147
147
|
let preamble = "";
|
|
148
148
|
if (!isCallable(node)) {
|
|
149
|
-
|
|
149
|
+
let isStatic = isMethod(node) && node.isStatic;
|
|
150
150
|
const isProtected = hasExtAttribute(node, IDLExtendedAttributes.Protected);
|
|
151
151
|
const isOptional = isMethod(node) && node.isOptional;
|
|
152
|
-
|
|
153
|
-
if (
|
|
154
|
-
|
|
152
|
+
let isFree = isMethod(node) && node.isFree;
|
|
153
|
+
if (forceAsFree) {
|
|
154
|
+
isStatic = false;
|
|
155
|
+
isFree = true;
|
|
156
|
+
}
|
|
155
157
|
const inNamespace = getNamespacesPathFor(node).length > 0;
|
|
156
158
|
preamble = `${isFree ? `${isInNamespace(node) ? "" : "declare "}function ` : ""}${isProtected ? "protected " : ""}${isStatic ? "static " : ""}${name}${isOptional ? "?" : ""}`;
|
|
157
159
|
}
|
|
@@ -209,7 +211,8 @@ export class CustomPrintVisitor {
|
|
|
209
211
|
let definition = this.resolver(createReferenceType(node));
|
|
210
212
|
// TODO: handle namespace case better!
|
|
211
213
|
// TODO: namespace-related-to-rework
|
|
212
|
-
throw new Error("not implemented yet")
|
|
214
|
+
//throw new Error("not implemented yet")
|
|
215
|
+
warn("Typedef-with-Import is not implemented yet");
|
|
213
216
|
// if (definition && !isTypedef(definition) && !hasExtAttribute(definition, IDLExtendedAttributes.Namespace)) {
|
|
214
217
|
// console.log(`Has better definition for ${node.name}: ${definition.fileName} ${definition.kind}`)
|
|
215
218
|
// return
|
package/build/lib/src/idl.d.ts
CHANGED
package/build/lib/src/idl.js
CHANGED
|
@@ -79,6 +79,7 @@ export var IDLExtendedAttributes;
|
|
|
79
79
|
IDLExtendedAttributes["Predefined"] = "Predefined";
|
|
80
80
|
IDLExtendedAttributes["Protected"] = "Protected";
|
|
81
81
|
IDLExtendedAttributes["Synthetic"] = "Synthetic";
|
|
82
|
+
IDLExtendedAttributes["Throws"] = "Throws";
|
|
82
83
|
IDLExtendedAttributes["TSType"] = "TSType";
|
|
83
84
|
IDLExtendedAttributes["TypeArguments"] = "TypeArguments";
|
|
84
85
|
IDLExtendedAttributes["TypeParameters"] = "TypeParameters";
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
* See the License for the specific language governing permissions and
|
|
13
13
|
* limitations under the License.
|
|
14
14
|
*/
|
|
15
|
+
import { generatorTypePrefix } from "../config";
|
|
15
16
|
import { mangleMethodName, MethodModifier } from "../LanguageWriters/LanguageWriter";
|
|
16
17
|
import { capitalize, isDefined } from "../util";
|
|
17
18
|
import { PrimitiveTypesInstance } from "./PrimitiveType";
|
|
@@ -69,13 +70,16 @@ export class PeerMethod {
|
|
|
69
70
|
return !((_a = this.method.modifiers) === null || _a === void 0 ? void 0 : _a.includes(MethodModifier.STATIC));
|
|
70
71
|
}
|
|
71
72
|
generateAPIParameters(converter) {
|
|
73
|
+
var _a;
|
|
72
74
|
const args = this.argAndOutConvertors.map(it => {
|
|
73
75
|
let isPointer = it.isPointerType();
|
|
74
76
|
return `${isPointer ? "const " : ""}${converter.convert(it.nativeType())}${isPointer ? "*" : ""} ${it.param}`;
|
|
75
77
|
});
|
|
76
78
|
const receiver = this.generateReceiver();
|
|
77
79
|
if (receiver)
|
|
78
|
-
|
|
80
|
+
args.unshift(`${receiver.argType} ${receiver.argName}`);
|
|
81
|
+
if ((_a = this.method.modifiers) === null || _a === void 0 ? void 0 : _a.includes(MethodModifier.THROWS))
|
|
82
|
+
args.unshift(`${generatorTypePrefix()}VMContext vmContext`);
|
|
79
83
|
return args;
|
|
80
84
|
}
|
|
81
85
|
generateReceiver() {
|
|
@@ -53,15 +53,16 @@ export class ETSDeclarationNameConvertor extends DeclarationNameConvertor {
|
|
|
53
53
|
return idl.getFQName(decl);
|
|
54
54
|
}
|
|
55
55
|
convertEnum(decl) {
|
|
56
|
-
|
|
57
|
-
return `${namespace ? `${namespace}_` : ``}${decl.name}`;
|
|
56
|
+
return idl.getFQName(decl);
|
|
58
57
|
}
|
|
59
58
|
}
|
|
60
59
|
ETSDeclarationNameConvertor.I = new ETSDeclarationNameConvertor();
|
|
61
60
|
export class ETSFeatureNameConvertor extends DeclarationNameConvertor {
|
|
62
61
|
convertEnum(decl) {
|
|
63
|
-
const namespace = idl.getNamespacesPathFor(decl).map(it => it.name)
|
|
64
|
-
|
|
62
|
+
const namespace = idl.getNamespacesPathFor(decl).map(it => it.name);
|
|
63
|
+
if (namespace.length > 0)
|
|
64
|
+
return namespace[0];
|
|
65
|
+
return decl.name;
|
|
65
66
|
}
|
|
66
67
|
}
|
|
67
68
|
ETSFeatureNameConvertor.I = new ETSFeatureNameConvertor();
|