@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.
Files changed (30) hide show
  1. package/build/lib/src/LanguageWriters/ArgConvertors.d.ts +3 -2
  2. package/build/lib/src/LanguageWriters/ArgConvertors.js +19 -19
  3. package/build/lib/src/LanguageWriters/convertors/CppConvertors.js +3 -5
  4. package/build/lib/src/LanguageWriters/convertors/ETSConvertors.js +1 -1
  5. package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.js +1 -1
  6. package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.js +1 -1
  7. package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.js +2 -2
  8. package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.js +1 -1
  9. package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +5 -2
  10. package/build/lib/src/from-idl/DtsPrinter.js +18 -15
  11. package/build/lib/src/from-idl/deserialize.d.ts +1 -2
  12. package/build/lib/src/from-idl/deserialize.js +10 -12
  13. package/build/lib/src/idl.d.ts +18 -8
  14. package/build/lib/src/idl.js +81 -39
  15. package/build/lib/src/idlize.d.ts +12 -2
  16. package/build/lib/src/idlize.js +24 -9
  17. package/build/lib/src/library.d.ts +5 -10
  18. package/build/lib/src/library.js +2 -2
  19. package/build/lib/src/peer-generation/PeerFile.d.ts +4 -3
  20. package/build/lib/src/peer-generation/PeerFile.js +10 -3
  21. package/build/lib/src/peer-generation/PeerLibrary.d.ts +4 -6
  22. package/build/lib/src/peer-generation/PeerLibrary.js +18 -36
  23. package/build/lib/src/peer-generation/idl/common.d.ts +1 -1
  24. package/build/lib/src/peer-generation/idl/common.js +4 -4
  25. package/build/lib/src/peer-generation/unions.js +2 -2
  26. package/build/lib/src/util.d.ts +2 -0
  27. package/build/lib/src/util.js +4 -0
  28. package/build/lib/src/visitor.js +1 -1
  29. package/package.json +1 -1
  30. 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, suggestedName?: string);
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.name, undefined, enumEntry), [idl.isStringEnum(enumEntry) ? RuntimeType.STRING : RuntimeType.NUMBER], false, false, param);
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.name, undefined, this.enumEntry)).asString()
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.name, undefined, this.enumEntry))
174
- : writer.makeCast(readExpr, idl.createReferenceType(this.enumEntry.name, undefined, 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.name, undefined, 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.name, undefined, 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.name, undefined, 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(name, undefined, declaration), [RuntimeType.OBJECT], false, true, param);
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, suggestedName) {
641
- super(suggestedName ? idl.createReferenceType(suggestedName, undefined, convertor.idlType) : convertor.idlType, convertor.runtimeTypes, convertor.isScoped, convertor.useArray, convertor.param);
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.name);
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.name, undefined, declaration), [RuntimeType.OBJECT], false, true, param);
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.name, undefined, 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.name, undefined, 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.name, undefined, decl), [RuntimeType.FUNCTION], false, true, param);
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.transformedDecl.name, undefined, this.decl);
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 idl.createCallback("CustomNodeBuilder", [idl.createParameter("parentNode", idl.IDLPointerType)], idl.IDLPointerType, { extendedAttributes: [{ name: idl.IDLExtendedAttributes.Synthetic }] });
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 generatorConfiguration().TypePrefix + decl.name;
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(), undefined, type));
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(enumName, undefined, this.enumEntity);
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)}&`, undefined, type);
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(idl.createReferenceType(this.signature.returnType.name, undefined, this.signature.returnType));
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(idl.createReferenceType(idlType.name, undefined, idlType));
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}.getIntValue()`;
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 decl = this.resolver.resolveTypeReference(idl.createReferenceType(this.getNodeName(convertor.nativeType()), undefined, convertor.idlType));
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()), undefined, convertor.idlType))
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
- this.print(`${namespace.namespace ? "" : "declare "}namespace ${namespace.name} {`);
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.namespace ? "" : "declare "}const ${node.name} : ${isPrimitiveType(node.type) ? "" : "typeof"} ${this.printTypeForTS(node.type)} = ${node.value}`);
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.namespace ? "" : "declare "}type ${typeSpec} = ${this.literal(node, false, true)}`);
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.namespace ? "" : "declare "}type ${typeSpec} = ${this.literal(node, true, false)}`);
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.namespace ? "" : "declare "}type ${typeSpec} = ${this.literal(node, true, true)}`);
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.namespace ? "" : "declare "}${entity.toLowerCase()} ${typeSpec} {`);
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
- preamble = `${isFree ? `${node.namespace ? "" : "declare "}function ` : ""}${isProtected ? "protected " : ""}${isStatic ? "static " : ""}${name}${isOptional ? "?" : ""}`;
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.namespace ? "" : "declare "}enum ${node.name} {`);
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.name, undefined, 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.namespace ? '' : 'declare '}type ${getName(node)}${typeParams} = ${text};`);
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.namespace ? "" : "declare "} namespace ${node.name} {`);
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.name}`);
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): lib.IDLFile;
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
- const result = toIDLNodeForward(file, node);
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
- return idl.createPackage(node.nameValue);
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.nameValue);
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 entities = webidl2.parse(content).map(it => toIDLNode(fileName, it));
377
- const pack = entities.find(idl.isPackage);
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
@@ -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
- importClause?: string[];
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 linkNamespacesBack(node: IDLNode): void;
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[], pointOfView?: IDLNode): IDLReferenceType;
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 createPackage(name: string): IDLPackage;
311
- export declare function createImport(name: string, importClause?: string[], nodeInitializer?: IDLNodeInitializer): IDLImport;
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;