@idlizer/core 2.0.30 → 2.0.32
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/convertors/CppConvertors.js +3 -5
- package/build/lib/src/LanguageWriters/convertors/ETSConvertors.js +1 -1
- 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 +2 -2
- package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.js +1 -1
- package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +5 -2
- package/build/lib/src/from-idl/DtsPrinter.js +18 -15
- 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 +18 -8
- package/build/lib/src/idl.js +81 -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/idl/common.d.ts +1 -1
- package/build/lib/src/peer-generation/idl/common.js +4 -4
- package/build/lib/src/peer-generation/unions.js +2 -2
- 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
|
|
@@ -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
|
}
|
|
@@ -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
|
}
|
|
@@ -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");
|
|
@@ -113,7 +113,7 @@ export class ETSLambdaExpression extends LambdaExpression {
|
|
|
113
113
|
// Issue: https://rnd-gitlab-msc.huawei.com/rus-os-team/virtual-machines-and-tools/panda/-/issues/21333
|
|
114
114
|
let isRetTypeCallback = idl.isCallback(this.signature.returnType);
|
|
115
115
|
if (idl.isReferenceType(this.signature.returnType)) {
|
|
116
|
-
const resolved = this.resolver.resolveTypeReference(
|
|
116
|
+
const resolved = this.resolver.resolveTypeReference(this.signature.returnType);
|
|
117
117
|
isRetTypeCallback = resolved !== undefined && idl.isCallback(resolved);
|
|
118
118
|
}
|
|
119
119
|
return `(${params.join(", ")})${isRetTypeCallback
|
|
@@ -237,7 +237,7 @@ export class ETSLanguageWriter extends TSLanguageWriter {
|
|
|
237
237
|
? convertor.nativeType().types[runtimeTypeIndex]
|
|
238
238
|
: idl.maybeUnwrapOptionalType(convertor.nativeType());
|
|
239
239
|
if (idlType !== undefined && idl.isReferenceType(idlType)) {
|
|
240
|
-
const resolved = this.resolver.resolveTypeReference(
|
|
240
|
+
const resolved = this.resolver.resolveTypeReference(idlType);
|
|
241
241
|
type = resolved != undefined && idl.isEnum(resolved) ? RuntimeType[RuntimeType.OBJECT] : type;
|
|
242
242
|
}
|
|
243
243
|
}
|
|
@@ -262,7 +262,7 @@ export class JavaLanguageWriter extends CLikeLanguageWriter {
|
|
|
262
262
|
this.writeStatement(this.makeAssign(valueType, undefined, this.makeRuntimeTypeGetterCall(value), false));
|
|
263
263
|
}
|
|
264
264
|
makeEnumCast(enumName, _unsafe, _convertor) {
|
|
265
|
-
return `${enumName}.
|
|
265
|
+
return `${enumName}.value`;
|
|
266
266
|
}
|
|
267
267
|
castToBoolean(value) { return value; }
|
|
268
268
|
makeLengthSerializer(serializer, value) {
|
|
@@ -377,12 +377,15 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
377
377
|
return TSKeywords.has(keyword) ? keyword + "_" : keyword;
|
|
378
378
|
}
|
|
379
379
|
makeDiscriminatorConvertor(convertor, value, index) {
|
|
380
|
-
const
|
|
380
|
+
const convertorNativeType = convertor.nativeType();
|
|
381
|
+
const decl = this.resolver.resolveTypeReference(idl.isReferenceType(convertorNativeType)
|
|
382
|
+
? convertorNativeType
|
|
383
|
+
: idl.createReferenceType(this.getNodeName(convertorNativeType)));
|
|
381
384
|
if (decl === undefined || !idl.isEnum(decl)) {
|
|
382
385
|
throwException(`The type reference ${decl === null || decl === void 0 ? void 0 : decl.name} must be Enum`);
|
|
383
386
|
}
|
|
384
387
|
const ordinal = idl.isStringEnum(decl)
|
|
385
|
-
? this.ordinalFromEnum(this.makeCast(this.makeString(this.getObjectAccessor(convertor, value)), convertor.idlType), idl.createReferenceType(this.getNodeName(convertor.nativeType())
|
|
388
|
+
? this.ordinalFromEnum(this.makeCast(this.makeString(this.getObjectAccessor(convertor, value)), convertor.idlType), idl.createReferenceType(this.getNodeName(convertor.nativeType())))
|
|
386
389
|
: this.makeUnionVariantCast(this.getObjectAccessor(convertor, value), this.getNodeName(idl.IDLI32Type), convertor, index);
|
|
387
390
|
const { low, high } = idl.extremumOfOrdinals(decl);
|
|
388
391
|
return this.discriminatorFromExpressions(value, convertor.runtimeTypes[0], [
|
|
@@ -12,8 +12,8 @@
|
|
|
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";
|
|
@@ -27,7 +27,8 @@ export class CustomPrintVisitor {
|
|
|
27
27
|
visit(node, wrapNamespaces = false) {
|
|
28
28
|
const namespacesPath = wrapNamespaces ? getNamespacesPathFor(node) : [];
|
|
29
29
|
for (const namespace of namespacesPath) {
|
|
30
|
-
|
|
30
|
+
const isTopmost = namespacesPath[0] === namespace;
|
|
31
|
+
this.print(`${!isTopmost ? "" : "declare "}namespace ${namespace.name} {`);
|
|
31
32
|
this.pushIndent();
|
|
32
33
|
}
|
|
33
34
|
if (hasExtAttribute(node, IDLExtendedAttributes.TSType) && this.language == Language.TS)
|
|
@@ -82,7 +83,7 @@ export class CustomPrintVisitor {
|
|
|
82
83
|
this.print(exports);
|
|
83
84
|
}
|
|
84
85
|
printConstant(node) {
|
|
85
|
-
this.print(`${node
|
|
86
|
+
this.print(`${isInNamespace(node) ? "" : "declare "}const ${node.name} : ${isPrimitiveType(node.type) ? "" : "typeof"} ${this.printTypeForTS(node.type)} = ${node.value}`);
|
|
86
87
|
}
|
|
87
88
|
printInterface(node) {
|
|
88
89
|
var _a;
|
|
@@ -92,13 +93,13 @@ export class CustomPrintVisitor {
|
|
|
92
93
|
typeSpec = "WrappedBuilder<Args extends any[]>";
|
|
93
94
|
const entity = (_a = getExtAttribute(node, IDLExtendedAttributes.Entity)) !== null && _a !== void 0 ? _a : IDLEntity.Interface;
|
|
94
95
|
if (entity === IDLEntity.Literal) {
|
|
95
|
-
this.print(`${node
|
|
96
|
+
this.print(`${isInNamespace(node) ? "" : "declare "}type ${typeSpec} = ${this.literal(node, false, true)}`);
|
|
96
97
|
}
|
|
97
98
|
else if (entity === IDLEntity.Tuple) {
|
|
98
|
-
this.print(`${node
|
|
99
|
+
this.print(`${isInNamespace(node) ? "" : "declare "}type ${typeSpec} = ${this.literal(node, true, false)}`);
|
|
99
100
|
}
|
|
100
101
|
else if (entity === IDLEntity.NamedTuple) {
|
|
101
|
-
this.print(`${node
|
|
102
|
+
this.print(`${isInNamespace(node) ? "" : "declare "}type ${typeSpec} = ${this.literal(node, true, true)}`);
|
|
102
103
|
}
|
|
103
104
|
else {
|
|
104
105
|
// restore globalScope
|
|
@@ -118,7 +119,7 @@ export class CustomPrintVisitor {
|
|
|
118
119
|
}
|
|
119
120
|
if (interfaces.length > 0)
|
|
120
121
|
typeSpec += ` ${keyword} ${interfaces.map(it => this.toTypeName(it)).join(", ")}`;
|
|
121
|
-
this.print(`${node
|
|
122
|
+
this.print(`${isInNamespace(node) ? "" : "declare "}${entity.toLowerCase()} ${typeSpec} {`);
|
|
122
123
|
this.currentInterface = node;
|
|
123
124
|
this.pushIndent();
|
|
124
125
|
node.constructors.map(it => this.visit(it));
|
|
@@ -151,7 +152,8 @@ export class CustomPrintVisitor {
|
|
|
151
152
|
const isFree = isMethod(node) && node.isFree;
|
|
152
153
|
if (isGlobal && !isFree) // TODO: namespace-related-to-rework
|
|
153
154
|
throw new Error("internal error");
|
|
154
|
-
|
|
155
|
+
const inNamespace = getNamespacesPathFor(node).length > 0;
|
|
156
|
+
preamble = `${isFree ? `${isInNamespace(node) ? "" : "declare "}function ` : ""}${isProtected ? "protected " : ""}${isStatic ? "static " : ""}${name}${isOptional ? "?" : ""}`;
|
|
155
157
|
}
|
|
156
158
|
this.print(`${preamble}${typeParams}(${mixMethodParametersAndTags(node).map(p => this.paramText(p)).join(", ")})${returnType};`);
|
|
157
159
|
}
|
|
@@ -187,7 +189,7 @@ export class CustomPrintVisitor {
|
|
|
187
189
|
}
|
|
188
190
|
}
|
|
189
191
|
printEnum(node) {
|
|
190
|
-
this.print(`${node
|
|
192
|
+
this.print(`${isInNamespace(node) ? "" : "declare "}enum ${node.name} {`);
|
|
191
193
|
this.pushIndent();
|
|
192
194
|
node.elements.forEach(it => {
|
|
193
195
|
const initializer = (it.type === IDLStringType ? `"${it.initializer}"` : `${it.initializer}`);
|
|
@@ -204,7 +206,7 @@ export class CustomPrintVisitor {
|
|
|
204
206
|
// Let's skip imported declarations
|
|
205
207
|
if (isTypedef(node) &&
|
|
206
208
|
hasExtAttribute(node, IDLExtendedAttributes.Import)) {
|
|
207
|
-
let definition = this.resolver(createReferenceType(node
|
|
209
|
+
let definition = this.resolver(createReferenceType(node));
|
|
208
210
|
// TODO: handle namespace case better!
|
|
209
211
|
// TODO: namespace-related-to-rework
|
|
210
212
|
throw new Error("not implemented yet");
|
|
@@ -217,7 +219,7 @@ export class CustomPrintVisitor {
|
|
|
217
219
|
: hasExtAttribute(node, IDLExtendedAttributes.Import) ? IDLAnyType.name
|
|
218
220
|
: this.printTypeForTS(node.type);
|
|
219
221
|
const typeParams = node.typeParameters && node.typeParameters.length > 0 ? `<${node.typeParameters.join(",")}>` : "";
|
|
220
|
-
this.print(`${node
|
|
222
|
+
this.print(`${isInNamespace(node) ? '' : 'declare '}type ${getName(node)}${typeParams} = ${text};`);
|
|
221
223
|
}
|
|
222
224
|
printVersion(node) {
|
|
223
225
|
let text = node.value.join(".");
|
|
@@ -229,17 +231,17 @@ export class CustomPrintVisitor {
|
|
|
229
231
|
this.print(verbatimDts);
|
|
230
232
|
return;
|
|
231
233
|
}
|
|
232
|
-
this.print(`${node
|
|
234
|
+
this.print(`${isInNamespace(node) ? "" : "declare "} namespace ${node.name} {`);
|
|
233
235
|
this.pushIndent();
|
|
234
236
|
node.members.forEach(member => this.visit(member));
|
|
235
237
|
this.popIndent();
|
|
236
238
|
this.print("}");
|
|
237
239
|
}
|
|
238
240
|
printImport(node) {
|
|
239
|
-
this.print(`// import ${node.name}`);
|
|
241
|
+
this.print(`// import ${node.clause.join(".")}${node.name ? " as " : ""}${node.name || ""}`);
|
|
240
242
|
}
|
|
241
243
|
printPackage(node) {
|
|
242
|
-
this.print(`// package ${node.
|
|
244
|
+
this.print(`// package ${node.clause.join(".")}`);
|
|
243
245
|
}
|
|
244
246
|
checkVerbatim(node) {
|
|
245
247
|
let verbatim = getExtAttribute(node, IDLExtendedAttributes.VerbatimDts);
|
|
@@ -291,6 +293,7 @@ export class CustomPrintVisitor {
|
|
|
291
293
|
case IDLStringType: return "string";
|
|
292
294
|
case IDLVoidType: return "void";
|
|
293
295
|
case IDLThisType: return "T";
|
|
296
|
+
case IDLBigintType:
|
|
294
297
|
case IDLPointerType: return "number|bigint";
|
|
295
298
|
default: throw new Error(`Unknown primitive type ${DebugUtils.debugPrintType(type)}`);
|
|
296
299
|
}
|
|
@@ -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
|
package/build/lib/src/idl.d.ts
CHANGED
|
@@ -21,7 +21,8 @@ export declare enum IDLKind {
|
|
|
21
21
|
TypeParameterType = 18,
|
|
22
22
|
OptionalType = 19,
|
|
23
23
|
Version = 20,
|
|
24
|
-
Namespace = 21
|
|
24
|
+
Namespace = 21,
|
|
25
|
+
File = 22
|
|
25
26
|
}
|
|
26
27
|
export declare enum IDLEntity {
|
|
27
28
|
Class = "Class",
|
|
@@ -75,10 +76,15 @@ export interface IDLExtendedAttribute {
|
|
|
75
76
|
export interface IDLNode {
|
|
76
77
|
_idlNodeBrand: any;
|
|
77
78
|
kind: IDLKind;
|
|
79
|
+
parent?: IDLNode;
|
|
78
80
|
fileName?: string;
|
|
79
81
|
extendedAttributes?: IDLExtendedAttribute[];
|
|
80
82
|
documentation?: string;
|
|
81
83
|
}
|
|
84
|
+
export interface IDLFile extends IDLNode {
|
|
85
|
+
entries: IDLEntry[];
|
|
86
|
+
fileName?: string;
|
|
87
|
+
}
|
|
82
88
|
export interface IDLNamedNode extends IDLNode {
|
|
83
89
|
_idlNamedNodeBrand: any;
|
|
84
90
|
name: string;
|
|
@@ -86,7 +92,6 @@ export interface IDLNamedNode extends IDLNode {
|
|
|
86
92
|
export interface IDLEntry extends IDLNode, IDLNamedNode {
|
|
87
93
|
_idlEntryBrand: any;
|
|
88
94
|
comment?: string;
|
|
89
|
-
namespace?: IDLNamespace;
|
|
90
95
|
}
|
|
91
96
|
export interface IDLType extends IDLNode {
|
|
92
97
|
_idlTypeBrand: any;
|
|
@@ -112,7 +117,6 @@ export interface IDLContainerType extends IDLType {
|
|
|
112
117
|
export interface IDLReferenceType extends IDLType, IDLNamedNode {
|
|
113
118
|
kind: IDLKind.ReferenceType;
|
|
114
119
|
typeArguments?: IDLType[];
|
|
115
|
-
namespace?: IDLNamespace;
|
|
116
120
|
}
|
|
117
121
|
export interface IDLUnspecifiedGenericType extends IDLType, IDLNamedNode {
|
|
118
122
|
kind: IDLKind.UnspecifiedGenericType;
|
|
@@ -204,10 +208,11 @@ export interface IDLInterface extends IDLEntry {
|
|
|
204
208
|
}
|
|
205
209
|
export interface IDLPackage extends IDLEntry {
|
|
206
210
|
kind: IDLKind.Package;
|
|
211
|
+
clause: string[];
|
|
207
212
|
}
|
|
208
213
|
export interface IDLImport extends IDLEntry {
|
|
209
214
|
kind: IDLKind.Import;
|
|
210
|
-
|
|
215
|
+
clause: string[];
|
|
211
216
|
}
|
|
212
217
|
export interface IDLNamespace extends IDLEntry {
|
|
213
218
|
kind: IDLKind.Namespace;
|
|
@@ -220,6 +225,7 @@ export interface IDLCallback extends IDLEntry, IDLSignature {
|
|
|
220
225
|
export declare function forEachChild(node: IDLNode, cbEnter: (entry: IDLNode) => void, cbLeave?: (entry: IDLNode) => void): void;
|
|
221
226
|
export declare function isNamedNode(type: IDLNode): type is IDLNamedNode;
|
|
222
227
|
export declare function forceAsNamedNode(type: IDLNode): IDLNamedNode;
|
|
228
|
+
export declare function isFile(node: IDLNode): node is IDLFile;
|
|
223
229
|
export declare function isUndefinedType(type: IDLNode): type is IDLPrimitiveType;
|
|
224
230
|
export declare function isVoidType(type: IDLNode): type is IDLPrimitiveType;
|
|
225
231
|
export declare function isPrimitiveType(type: IDLNode): type is IDLPrimitiveType;
|
|
@@ -294,21 +300,25 @@ export type IDLNodeInitializer = {
|
|
|
294
300
|
documentation?: string;
|
|
295
301
|
};
|
|
296
302
|
export declare function createNamespace(name: string, extendedAttributes?: IDLExtendedAttribute[], fileName?: string): IDLNamespace;
|
|
297
|
-
export declare function
|
|
303
|
+
export declare function linkParentBack<T extends IDLNode>(node: T): T;
|
|
298
304
|
export declare function getNamespacesPathFor(entry: IDLEntry): IDLNamespace[];
|
|
305
|
+
export declare function getFileFor(entry: IDLNode): IDLFile | undefined;
|
|
299
306
|
export declare function isEqualByQualifedName(a?: IDLEntry, b?: IDLEntry): boolean;
|
|
307
|
+
export declare function getPackageClause(entry: IDLFile | IDLEntry): string[];
|
|
308
|
+
export declare function getPackageName(entry: IDLFile | IDLEntry): string;
|
|
300
309
|
export declare function getNamespaceName(a: IDLEntry): string;
|
|
301
310
|
export declare function getFQName(a: IDLEntry): string;
|
|
302
311
|
export declare function createVersion(value: string[], extendedAttributes?: IDLExtendedAttribute[], fileName?: string): IDLVersion;
|
|
303
312
|
export declare function fetchNamespaceFrom(pointOfView?: IDLNode): IDLNamespace | undefined;
|
|
304
|
-
export declare function createReferenceType(name: string, typeArguments?: IDLType[]
|
|
313
|
+
export declare function createReferenceType(name: string, typeArguments?: IDLType[]): IDLReferenceType;
|
|
305
314
|
export declare function createReferenceType(source: IDLEntry, typeArguments?: IDLType[]): IDLReferenceType;
|
|
306
315
|
export declare function createUnspecifiedGenericType(name: string, typeArguments: IDLType[]): IDLUnspecifiedGenericType;
|
|
307
316
|
export declare function entityToType(entity: IDLNode): IDLType;
|
|
308
317
|
export declare function createContainerType(container: IDLContainerKind, element: IDLType[]): IDLContainerType;
|
|
309
318
|
export declare function createUnionType(types: IDLType[], name?: string): IDLUnionType;
|
|
310
|
-
export declare function
|
|
311
|
-
export declare function
|
|
319
|
+
export declare function createFile(entries: IDLEntry[], fileName?: string): IDLFile;
|
|
320
|
+
export declare function createPackage(clause: string[]): IDLPackage;
|
|
321
|
+
export declare function createImport(clause: string[], name?: string, nodeInitializer?: IDLNodeInitializer): IDLImport;
|
|
312
322
|
export declare function createEnum(name: string, elements: IDLEnumMember[], nodeInitializer: IDLNodeInitializer): IDLEnum;
|
|
313
323
|
export declare function createEnumMember(name: string, parent: IDLEnum, type: IDLPrimitiveType, initializer: number | string | undefined, nodeInitializer?: IDLNodeInitializer): IDLEnumMember;
|
|
314
324
|
export declare function createInterface(name: string, subkind: IDLInterfaceSubkind, inheritance?: IDLReferenceType[], constructors?: IDLConstructor[], constants?: IDLConstant[], properties?: IDLProperty[], methods?: IDLMethod[], callables?: IDLCallable[], typeParameters?: string[], nodeInitializer?: IDLNodeInitializer): IDLInterface;
|