@idlizer/core 2.1.2 → 2.1.5

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 (79) hide show
  1. package/build/lib/src/LanguageWriters/ArgConvertors.d.ts +3 -3
  2. package/build/lib/src/LanguageWriters/ArgConvertors.js +36 -30
  3. package/build/lib/src/LanguageWriters/LanguageWriter.d.ts +26 -13
  4. package/build/lib/src/LanguageWriters/LanguageWriter.js +26 -52
  5. package/build/lib/src/LanguageWriters/convertors/CJConvertors.d.ts +2 -1
  6. package/build/lib/src/LanguageWriters/convertors/CJConvertors.js +16 -5
  7. package/build/lib/src/LanguageWriters/convertors/CppConvertors.d.ts +4 -2
  8. package/build/lib/src/LanguageWriters/convertors/CppConvertors.js +20 -12
  9. package/build/lib/src/LanguageWriters/convertors/ETSConvertors.js +7 -17
  10. package/build/lib/src/LanguageWriters/convertors/InteropConvertors.d.ts +4 -2
  11. package/build/lib/src/LanguageWriters/convertors/InteropConvertors.js +9 -3
  12. package/build/lib/src/LanguageWriters/convertors/JavaConvertors.d.ts +2 -1
  13. package/build/lib/src/LanguageWriters/convertors/JavaConvertors.js +24 -4
  14. package/build/lib/src/LanguageWriters/convertors/TSConvertors.d.ts +4 -2
  15. package/build/lib/src/LanguageWriters/convertors/TSConvertors.js +47 -28
  16. package/build/lib/src/LanguageWriters/nameConvertor.d.ts +3 -1
  17. package/build/lib/src/LanguageWriters/nameConvertor.js +5 -1
  18. package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.d.ts +12 -9
  19. package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.js +10 -37
  20. package/build/lib/src/LanguageWriters/writers/CLikeLanguageWriter.d.ts +4 -1
  21. package/build/lib/src/LanguageWriters/writers/CLikeLanguageWriter.js +1 -1
  22. package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.d.ts +9 -9
  23. package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.js +15 -24
  24. package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.d.ts +14 -8
  25. package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.js +18 -18
  26. package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.d.ts +4 -6
  27. package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.js +15 -14
  28. package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.d.ts +7 -5
  29. package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +22 -43
  30. package/build/lib/src/LibraryInterface.d.ts +1 -4
  31. package/build/lib/src/config.d.ts +206 -66
  32. package/build/lib/src/config.js +7 -3
  33. package/build/lib/src/configDescriber.d.ts +30 -3
  34. package/build/lib/src/configDescriber.js +99 -1
  35. package/build/lib/src/from-idl/DtsPrinter.js +30 -18
  36. package/build/lib/src/from-idl/IDLLinter.d.ts +40 -7
  37. package/build/lib/src/from-idl/IDLLinter.js +211 -25
  38. package/build/lib/src/from-idl/common.js +1 -1
  39. package/build/lib/src/from-idl/deserialize.d.ts +4 -1
  40. package/build/lib/src/from-idl/deserialize.js +434 -346
  41. package/build/lib/src/idl.d.ts +25 -17
  42. package/build/lib/src/idl.js +363 -109
  43. package/build/lib/src/idlize.d.ts +2 -1
  44. package/build/lib/src/idlize.js +82 -26
  45. package/build/lib/src/index.d.ts +4 -3
  46. package/build/lib/src/index.js +3 -2
  47. package/build/lib/src/options.d.ts +1 -1
  48. package/build/lib/src/peer-generation/BuilderClass.d.ts +0 -2
  49. package/build/lib/src/peer-generation/BuilderClass.js +0 -8
  50. package/build/lib/src/peer-generation/LayoutManager.d.ts +10 -3
  51. package/build/lib/src/peer-generation/LayoutManager.js +3 -2
  52. package/build/lib/src/peer-generation/Materialized.d.ts +1 -1
  53. package/build/lib/src/peer-generation/Materialized.js +2 -2
  54. package/build/lib/src/peer-generation/PeerClass.d.ts +3 -8
  55. package/build/lib/src/peer-generation/PeerClass.js +0 -1
  56. package/build/lib/src/peer-generation/PeerFile.d.ts +1 -2
  57. package/build/lib/src/peer-generation/PeerFile.js +1 -1
  58. package/build/lib/src/peer-generation/PeerLibrary.d.ts +12 -7
  59. package/build/lib/src/peer-generation/PeerLibrary.js +129 -65
  60. package/build/lib/src/peer-generation/ReferenceResolver.d.ts +1 -1
  61. package/build/lib/src/peer-generation/ReferenceResolver.js +2 -2
  62. package/build/lib/src/peer-generation/idl/IdlNameConvertor.d.ts +1 -0
  63. package/build/lib/src/peer-generation/idl/IdlNameConvertor.js +6 -2
  64. package/build/lib/src/peer-generation/idl/common.d.ts +2 -1
  65. package/build/lib/src/peer-generation/idl/common.js +13 -2
  66. package/build/lib/src/peer-generation/isMaterialized.js +25 -8
  67. package/build/lib/src/peer-generation/unions.d.ts +3 -2
  68. package/build/lib/src/peer-generation/unions.js +6 -2
  69. package/build/lib/src/resolveNamedNode.d.ts +3 -0
  70. package/build/lib/src/resolveNamedNode.js +105 -0
  71. package/build/lib/src/util.d.ts +6 -0
  72. package/build/lib/src/util.js +33 -0
  73. package/build/lib/src/visitor.d.ts +0 -1
  74. package/build/lib/src/visitor.js +1 -7
  75. package/package.json +2 -2
  76. package/webidl2.js/LICENSE +21 -0
  77. package/webidl2.js/README.md +827 -0
  78. package/webidl2.js/dist/package.json +3 -0
  79. package/webidl2.js/dist/webidl2.js +35 -7
@@ -20,7 +20,6 @@ import { AssignStatement, BlockStatement, CheckOptionalStatement, ExpressionStat
20
20
  import { RuntimeType } from "../common";
21
21
  import { rightmostIndexOf, throwException } from "../../util";
22
22
  import { TSKeywords } from '../../languageSpecificKeywords';
23
- import { isStringEnumType } from '../../peer-generation/isEnumType';
24
23
  ////////////////////////////////////////////////////////////////
25
24
  // EXPRESSIONS //
26
25
  ////////////////////////////////////////////////////////////////
@@ -136,14 +135,14 @@ export class TSLanguageWriter extends LanguageWriter {
136
135
  return new TSLanguageWriter(new IndentedPrinter(), (_a = options === null || options === void 0 ? void 0 : options.resolver) !== null && _a !== void 0 ? _a : this.resolver, this.typeConvertor, this.language);
137
136
  }
138
137
  getNodeName(type) {
139
- // just stub.
140
- // language writers and name convertors are subject to rework for namespaces
141
- const row = this.typeConvertor.convert(type);
142
- const nsPrefix = this.namespaceStack.join('.') + '.';
143
- if (row.startsWith(nsPrefix)) {
144
- return row.substring(nsPrefix.length);
138
+ // another stub. Bad one.
139
+ // I hope that I will rewrite LWs soon
140
+ if (idl.isType(type) && idl.isReferenceType(type)) {
141
+ if (type.name.startsWith('%TEXT%:')) {
142
+ return type.name.substring(7);
143
+ }
145
144
  }
146
- return row;
145
+ return this.typeConvertor.convert(type);
147
146
  }
148
147
  writeClass(name, op, superClass, interfaces, generics, isDeclared, isAbstract) {
149
148
  let extendsClause = superClass ? ` extends ${superClass}` : '';
@@ -185,8 +184,8 @@ export class TSLanguageWriter extends LanguageWriter {
185
184
  const returnType = this.getNodeName(signature.returnType);
186
185
  return `export function ${name}(${args.join(", ")}): ${returnType}`;
187
186
  }
188
- writeEnum(name, members) {
189
- this.printer.print(`export enum ${name} {`);
187
+ writeEnum(name, members, options) {
188
+ this.printer.print(`${options.isExport ? "export " : ""}${options.isDeclare ? "declare " : ""}enum ${name} {`);
190
189
  this.printer.pushIndent();
191
190
  for (const [index, member] of members.entries()) {
192
191
  let value;
@@ -274,7 +273,6 @@ export class TSLanguageWriter extends LanguageWriter {
274
273
  this.print(`export const ${constName}: ${this.getNodeName(constType)}${constVal ? ' = ' + constVal : ''}`);
275
274
  }
276
275
  writeDeclaration(name, signature, needReturn, needBracket, modifiers, generics) {
277
- var _a;
278
276
  let prefix = !modifiers ? undefined : this.supportedModifiers
279
277
  .filter(it => modifiers.includes(it))
280
278
  .map(it => this.mapMethodModifier(it)).join(" ");
@@ -290,19 +288,8 @@ export class TSLanguageWriter extends LanguageWriter {
290
288
  }
291
289
  prefix = prefix ? prefix.trim() + " " : "";
292
290
  const typeParams = (generics === null || generics === void 0 ? void 0 : generics.length) ? `<${generics.join(", ")}>` : "";
293
- // FIXME:
294
- const isSetter = modifiers === null || modifiers === void 0 ? void 0 : modifiers.includes(MethodModifier.SETTER);
295
- const canBeOptional = [];
296
- for (let i = signature.args.length - 1; i >= 0; --i) {
297
- const prevCanBeOptional = (_a = canBeOptional.at(-1)) !== null && _a !== void 0 ? _a : true;
298
- const curr = signature.args[i];
299
- const result = prevCanBeOptional && (idl.isOptionalType(curr) || signature.argDefault(i) !== undefined);
300
- canBeOptional.push(result);
301
- }
302
- canBeOptional.reverse();
303
- const isOptional = signature.args.map((it, i) => idl.isOptionalType(it) && canBeOptional[i] && !isSetter);
304
- const normalizedArgs = signature.args.map((it, i) => idl.isOptionalType(it) && isOptional[i] ? idl.maybeUnwrapOptionalType(it) : it);
305
- this.printer.print(`${prefix}${name}${typeParams}(${normalizedArgs.map((it, index) => `${this.escapeKeyword(signature.argName(index))}${isOptional[index] ? "?" : ""}: ${this.getNodeName(it)}${signature.argDefault(index) ? ' = ' + signature.argDefault(index) : ""}`).join(", ")})${needReturn ? ": " + this.getNodeName(signature.returnType) : ""}${needBracket ? " {" : ""}`);
291
+ const normalizedArgs = signature.args.map((it, i) => idl.isOptionalType(it) && signature.isArgOptional(i) ? idl.maybeUnwrapOptionalType(it) : it);
292
+ this.printer.print(`${prefix}${name}${typeParams}(${normalizedArgs.map((it, index) => `${this.escapeKeyword(signature.argName(index))}${signature.isArgOptional(index) ? "?" : ``}: ${this.getNodeName(it)}${signature.argDefault(index) ? ' = ' + signature.argDefault(index) : ""}`).join(", ")})${needReturn ? ": " + this.getNodeName(signature.returnType) : ""}${needBracket ? " {" : ""}`);
306
293
  }
307
294
  makeNull() {
308
295
  return new StringExpression("undefined");
@@ -334,9 +321,9 @@ export class TSLanguageWriter extends LanguageWriter {
334
321
  writePrintLog(message) {
335
322
  this.print(`console.log("${message}")`);
336
323
  }
337
- makeCast(value, type, options) {
324
+ makeCast(value, node, options) {
338
325
  var _a;
339
- return new TSCastExpression(value, this.getNodeName(/* FIXME: */ idl.maybeUnwrapOptionalType(type)), (_a = options === null || options === void 0 ? void 0 : options.unsafe) !== null && _a !== void 0 ? _a : false);
326
+ return new TSCastExpression(value, this.getNodeName(node), (_a = options === null || options === void 0 ? void 0 : options.unsafe) !== null && _a !== void 0 ? _a : false);
340
327
  }
341
328
  typeInstanceOf(type, value, members) {
342
329
  if (idl.isInterface(type)) {
@@ -399,27 +386,19 @@ export class TSLanguageWriter extends LanguageWriter {
399
386
  get supportedFieldModifiers() {
400
387
  return [FieldModifier.PUBLIC, FieldModifier.PRIVATE, FieldModifier.PROTECTED, FieldModifier.READONLY, FieldModifier.STATIC];
401
388
  }
402
- enumFromOrdinal(value, enumEntry) {
403
- const enumName = idl.forceAsNamedNode(enumEntry).name;
389
+ enumFromI32(value, enumEntry) {
390
+ const enumName = enumEntry.name;
404
391
  const ordinal = value.asString();
405
- return isStringEnumType(enumEntry, this.resolver)
392
+ return idl.isStringEnum(enumEntry)
406
393
  ? this.makeString(`Object.values(${enumName})[${ordinal}]`)
407
- : this.makeString(`${ordinal}`);
394
+ : this.makeString(ordinal);
408
395
  }
409
- ordinalFromEnum(value, enumEntry) {
410
- const enumName = idl.forceAsNamedNode(enumEntry).name;
411
- const decl = idl.isReferenceType(enumEntry) ? this.resolver.resolveTypeReference(enumEntry) : undefined;
412
- if (decl && idl.isEnum(decl) && idl.isStringEnum(decl)) {
396
+ i32FromEnum(value, enumEntry) {
397
+ const enumName = this.getNodeName(enumEntry);
398
+ if (idl.isEnum(enumEntry) && idl.isStringEnum(enumEntry)) {
413
399
  return this.makeString(`Object.values(${enumName}).indexOf(${value.asString()})`);
414
400
  }
415
- return value;
416
- }
417
- makeEnumCast(enumEntry, param) {
418
- // Take the ordinal value if Enum is a string, and valueOf when it is an integer
419
- // Enum.valueOf() - compatible with ArkTS/TS
420
- return idl.isStringEnum(enumEntry)
421
- ? this.ordinalFromEnum(this.makeString(param), idl.createReferenceType(enumEntry)).asString()
422
- : `${param}.valueOf()`;
401
+ return this.makeString(`${value.asString()}.valueOf()`);
423
402
  }
424
403
  castToBoolean(value) { return `+${value}`; }
425
404
  makeCallIsObject(value) {
@@ -437,7 +416,7 @@ export class TSLanguageWriter extends LanguageWriter {
437
416
  throwException(`The type reference ${decl === null || decl === void 0 ? void 0 : decl.name} must be Enum`);
438
417
  }
439
418
  const ordinal = idl.isStringEnum(decl)
440
- ? this.ordinalFromEnum(this.makeCast(this.makeString(this.getObjectAccessor(convertor, value)), convertor.idlType), idl.createReferenceType(this.getNodeName(convertor.nativeType())))
419
+ ? this.i32FromEnum(this.makeCast(this.makeString(this.getObjectAccessor(convertor, value)), convertor.idlType), decl)
441
420
  : this.makeUnionVariantCast(this.getObjectAccessor(convertor, value), this.getNodeName(idl.IDLI32Type), convertor, index);
442
421
  const { low, high } = idl.extremumOfOrdinals(decl);
443
422
  return this.discriminatorFromExpressions(value, convertor.runtimeTypes[0], [
@@ -3,12 +3,9 @@ import { Language } from "./Language";
3
3
  import { IdlNameConvertor } from "./LanguageWriters";
4
4
  import { ArgConvertor } from "./LanguageWriters/ArgConvertors";
5
5
  import { ReferenceResolver } from "./peer-generation/ReferenceResolver";
6
- export interface LibraryFileInterface {
7
- get entries(): idl.IDLEntry[];
8
- }
9
6
  export interface LibraryInterface extends ReferenceResolver {
10
7
  language: Language;
11
- get files(): LibraryFileInterface[];
8
+ get files(): idl.IDLFile[];
12
9
  typeConvertor(param: string, type: idl.IDLType, isOptionalParam?: boolean): ArgConvertor;
13
10
  declarationConvertor(param: string, type: idl.IDLReferenceType, declaration: idl.IDLEntry | undefined): ArgConvertor;
14
11
  getInteropName(node: idl.IDLNode): string;