@idlizer/core 2.1.2 → 2.1.7

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 (80) hide show
  1. package/build/lib/src/LanguageWriters/ArgConvertors.d.ts +3 -4
  2. package/build/lib/src/LanguageWriters/ArgConvertors.js +43 -32
  3. package/build/lib/src/LanguageWriters/LanguageWriter.d.ts +35 -17
  4. package/build/lib/src/LanguageWriters/LanguageWriter.js +30 -56
  5. package/build/lib/src/LanguageWriters/convertors/CJConvertors.d.ts +3 -1
  6. package/build/lib/src/LanguageWriters/convertors/CJConvertors.js +32 -11
  7. package/build/lib/src/LanguageWriters/convertors/CppConvertors.d.ts +5 -2
  8. package/build/lib/src/LanguageWriters/convertors/CppConvertors.js +71 -62
  9. package/build/lib/src/LanguageWriters/convertors/ETSConvertors.d.ts +1 -1
  10. package/build/lib/src/LanguageWriters/convertors/ETSConvertors.js +9 -19
  11. package/build/lib/src/LanguageWriters/convertors/InteropConvertors.d.ts +4 -2
  12. package/build/lib/src/LanguageWriters/convertors/InteropConvertors.js +10 -3
  13. package/build/lib/src/LanguageWriters/convertors/JavaConvertors.d.ts +2 -1
  14. package/build/lib/src/LanguageWriters/convertors/JavaConvertors.js +24 -4
  15. package/build/lib/src/LanguageWriters/convertors/TSConvertors.d.ts +8 -4
  16. package/build/lib/src/LanguageWriters/convertors/TSConvertors.js +87 -33
  17. package/build/lib/src/LanguageWriters/nameConvertor.d.ts +3 -1
  18. package/build/lib/src/LanguageWriters/nameConvertor.js +5 -1
  19. package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.d.ts +19 -11
  20. package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.js +34 -47
  21. package/build/lib/src/LanguageWriters/writers/CLikeLanguageWriter.d.ts +4 -1
  22. package/build/lib/src/LanguageWriters/writers/CLikeLanguageWriter.js +1 -1
  23. package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.d.ts +9 -9
  24. package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.js +15 -24
  25. package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.d.ts +17 -8
  26. package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.js +48 -23
  27. package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.d.ts +4 -6
  28. package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.js +15 -14
  29. package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.d.ts +13 -8
  30. package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +33 -52
  31. package/build/lib/src/LibraryInterface.d.ts +1 -4
  32. package/build/lib/src/config.d.ts +813 -110
  33. package/build/lib/src/config.js +25 -3
  34. package/build/lib/src/configDescriber.d.ts +31 -4
  35. package/build/lib/src/configDescriber.js +101 -3
  36. package/build/lib/src/from-idl/DtsPrinter.js +31 -18
  37. package/build/lib/src/from-idl/IDLLinter.d.ts +40 -7
  38. package/build/lib/src/from-idl/IDLLinter.js +211 -25
  39. package/build/lib/src/from-idl/common.js +1 -1
  40. package/build/lib/src/from-idl/deserialize.d.ts +10 -1
  41. package/build/lib/src/from-idl/deserialize.js +486 -352
  42. package/build/lib/src/idl.d.ts +29 -19
  43. package/build/lib/src/idl.js +404 -119
  44. package/build/lib/src/idlize.d.ts +2 -1
  45. package/build/lib/src/idlize.js +82 -26
  46. package/build/lib/src/index.d.ts +4 -3
  47. package/build/lib/src/index.js +3 -2
  48. package/build/lib/src/options.d.ts +1 -1
  49. package/build/lib/src/peer-generation/BuilderClass.d.ts +0 -2
  50. package/build/lib/src/peer-generation/BuilderClass.js +0 -8
  51. package/build/lib/src/peer-generation/LayoutManager.d.ts +10 -3
  52. package/build/lib/src/peer-generation/LayoutManager.js +3 -2
  53. package/build/lib/src/peer-generation/Materialized.d.ts +1 -1
  54. package/build/lib/src/peer-generation/Materialized.js +3 -3
  55. package/build/lib/src/peer-generation/PeerClass.d.ts +3 -8
  56. package/build/lib/src/peer-generation/PeerClass.js +0 -1
  57. package/build/lib/src/peer-generation/PeerFile.d.ts +1 -2
  58. package/build/lib/src/peer-generation/PeerFile.js +1 -1
  59. package/build/lib/src/peer-generation/PeerLibrary.d.ts +12 -7
  60. package/build/lib/src/peer-generation/PeerLibrary.js +131 -67
  61. package/build/lib/src/peer-generation/ReferenceResolver.d.ts +1 -1
  62. package/build/lib/src/peer-generation/ReferenceResolver.js +2 -2
  63. package/build/lib/src/peer-generation/idl/IdlNameConvertor.d.ts +1 -0
  64. package/build/lib/src/peer-generation/idl/IdlNameConvertor.js +6 -2
  65. package/build/lib/src/peer-generation/idl/common.d.ts +3 -1
  66. package/build/lib/src/peer-generation/idl/common.js +21 -4
  67. package/build/lib/src/peer-generation/isMaterialized.js +28 -7
  68. package/build/lib/src/peer-generation/unions.d.ts +3 -2
  69. package/build/lib/src/peer-generation/unions.js +7 -3
  70. package/build/lib/src/resolveNamedNode.d.ts +3 -0
  71. package/build/lib/src/resolveNamedNode.js +105 -0
  72. package/build/lib/src/util.d.ts +8 -1
  73. package/build/lib/src/util.js +41 -3
  74. package/build/lib/src/visitor.d.ts +2 -1
  75. package/build/lib/src/visitor.js +109 -7
  76. package/package.json +2 -2
  77. package/webidl2.js/LICENSE +21 -0
  78. package/webidl2.js/README.md +827 -0
  79. package/webidl2.js/dist/package.json +3 -0
  80. package/webidl2.js/dist/webidl2.js +93 -19
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -855,19 +855,52 @@ __webpack_require__.r(__webpack_exports__);
855
855
  /**
856
856
  * @param {import("../tokeniser.js").Tokeniser} tokeniser
857
857
  */
858
- function inheritance(tokeniser) {
858
+ function inheritanceItem(tokeniser) {
859
+ const extAttrs = _extended_attributes_js__WEBPACK_IMPORTED_MODULE_2__.ExtendedAttributes.parse(tokeniser);
860
+ const inheritance = tokeniser.consumeKind("identifier");
861
+ if (!inheritance) {
862
+ return undefined;
863
+ }
864
+ return {
865
+ extAttrs,
866
+ inheritance,
867
+ tokens: {},
868
+ };
869
+ }
870
+
871
+ /**
872
+ * @param {import("../tokeniser.js").Tokeniser} tokeniser
873
+ * @param {boolean} multipleInheritance
874
+ */
875
+ function inheritance(tokeniser, multipleInheritance) {
859
876
  const colon = tokeniser.consume(":");
860
877
  if (!colon) {
861
878
  return {};
862
879
  }
863
- const extAttrs = _extended_attributes_js__WEBPACK_IMPORTED_MODULE_2__.ExtendedAttributes.parse(tokeniser);
864
- const inheritance =
865
- tokeniser.consumeKind("identifier") ||
866
- tokeniser.error("Inheritance lacks a type");
880
+ const first =
881
+ inheritanceItem(tokeniser) || tokeniser.error("Inheritance lacks a type");
882
+ if (!multipleInheritance) {
883
+ return {
884
+ colon,
885
+ extAttrs: first.extAttrs,
886
+ inheritance: first.inheritance,
887
+ };
888
+ }
889
+ first.tokens.separator = tokeniser.consume(",");
890
+ if (!first.tokens.separator) {
891
+ return {
892
+ colon,
893
+ inheritance: [first],
894
+ };
895
+ }
896
+ const rest = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_3__.list)(tokeniser, {
897
+ parser: inheritanceItem,
898
+ listName: "inheritance-list",
899
+ allowDangler: false,
900
+ });
867
901
  return {
868
902
  colon,
869
- extAttrs: extAttrs && extAttrs.length ? extAttrs : undefined,
870
- inheritance,
903
+ inheritance: [first, ...rest],
871
904
  };
872
905
  }
873
906
 
@@ -890,7 +923,11 @@ class Container extends _base_js__WEBPACK_IMPORTED_MODULE_0__.Base {
890
923
  * @param {*} instance TODO: This should be {T extends Container}, but see https://github.com/microsoft/TypeScript/issues/4628
891
924
  * @param {*} args
892
925
  */
893
- static parse(tokeniser, instance, { inheritable, allowedMembers }) {
926
+ static parse(
927
+ tokeniser,
928
+ instance,
929
+ { inheritable, allowedMembers, multipleInheritance = false },
930
+ ) {
894
931
  const { tokens, type } = instance;
895
932
  tokens.name =
896
933
  tokeniser.consumeKind("identifier") ||
@@ -898,10 +935,12 @@ class Container extends _base_js__WEBPACK_IMPORTED_MODULE_0__.Base {
898
935
  tokeniser.current = instance;
899
936
  instance = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_3__.autoParenter)(instance);
900
937
  if (inheritable) {
901
- const inheritanceParsed = inheritance(tokeniser);
938
+ const inheritanceParsed = inheritance(tokeniser, multipleInheritance);
902
939
  tokens.colon = inheritanceParsed.colon;
903
940
  tokens.inheritance = inheritanceParsed.inheritance;
904
- instance.inheritanceExtAttrs = inheritanceParsed.extAttrs;
941
+ if (!multipleInheritance) {
942
+ instance.inheritanceExtAttrs = inheritanceParsed.extAttrs;
943
+ }
905
944
  }
906
945
  tokens.open = tokeniser.consume("{") || tokeniser.error(`Bodyless ${type}`);
907
946
  instance.members = [];
@@ -944,6 +983,14 @@ class Container extends _base_js__WEBPACK_IMPORTED_MODULE_0__.Base {
944
983
  if (!this.tokens.inheritance) {
945
984
  return null;
946
985
  }
986
+ if (Array.isArray(this.tokens.inheritance)) {
987
+ return this.tokens.inheritance.map((it) => {
988
+ return {
989
+ extAttrs: it.extAttrs,
990
+ inheritance: (0,_helpers_js__WEBPACK_IMPORTED_MODULE_3__.unescape)(it.inheritance.value),
991
+ };
992
+ });
993
+ }
947
994
  return (0,_helpers_js__WEBPACK_IMPORTED_MODULE_3__.unescape)(this.tokens.inheritance.value);
948
995
  }
949
996
 
@@ -1661,7 +1708,7 @@ __webpack_require__.r(__webpack_exports__);
1661
1708
  * @param {string} identifier
1662
1709
  */
1663
1710
  function unescape(identifier) {
1664
- return identifier.startsWith("_") ? identifier.slice(1) : identifier;
1711
+ return identifier;
1665
1712
  }
1666
1713
 
1667
1714
  /** @typedef {'callbackInterface'|'dictionary'|'interface'|'mixin'|'namespace'} ExtendableInterfaces */
@@ -2250,6 +2297,7 @@ class Interface extends _container_js__WEBPACK_IMPORTED_MODULE_0__.Container {
2250
2297
  [_attribute_js__WEBPACK_IMPORTED_MODULE_1__.Attribute.parse],
2251
2298
  [_operation_js__WEBPACK_IMPORTED_MODULE_2__.Operation.parse],
2252
2299
  ],
2300
+ multipleInheritance: true,
2253
2301
  },
2254
2302
  );
2255
2303
  }
@@ -3109,9 +3157,8 @@ function generic_type(tokeniser, typeName) {
3109
3157
  tokeniser.error(`No opening bracket after ${base.value}`);
3110
3158
  switch (base.value) {
3111
3159
  case "Promise": {
3112
- if (tokeniser.probe("["))
3113
- tokeniser.error("Promise type cannot have extended attribute");
3114
3160
  const subtype =
3161
+ (0,_helpers_js__WEBPACK_IMPORTED_MODULE_1__.type_with_extended_attributes)(tokeniser, typeName) ||
3115
3162
  (0,_helpers_js__WEBPACK_IMPORTED_MODULE_1__.return_type)(tokeniser, typeName) ||
3116
3163
  tokeniser.error("Missing Promise subtype");
3117
3164
  ret.subtype.push(subtype);
@@ -3586,7 +3633,7 @@ const tokenRe = {
3586
3633
  decimal:
3587
3634
  /-?(?=[0-9]*\.|[0-9]+[eE])(([0-9]+\.[0-9]*|[0-9]*\.[0-9]+)([Ee][-+]?[0-9]+)?|[0-9]+[Ee][-+]?[0-9]+)/y,
3588
3635
  integer: /-?(0([Xx][0-9A-Fa-f]+|[0-7]*)|[1-9][0-9]*)/y,
3589
- identifier: /[_-]?[A-Za-z](\.?[0-9A-Z_a-z-])*/y,
3636
+ identifier: /[-$_A-Za-z](\.?[$0-9A-Z_a-z-])*/y,
3590
3637
  string: /"(\\"|[^"])*"/y,
3591
3638
  whitespace: /[\t\n\r ]+/y,
3592
3639
  comment: /\/\/.*|\/\*[\s\S]*?\*\//y,
@@ -3696,8 +3743,6 @@ const punctuations = [
3696
3743
  const reserved = [
3697
3744
  // "constructor" is now a keyword
3698
3745
  "_constructor",
3699
- "toString",
3700
- "_toString",
3701
3746
  ];
3702
3747
 
3703
3748
  /**
@@ -3725,7 +3770,7 @@ function tokenise(str) {
3725
3770
  line += (currentTrivia.match(/\n/g) || []).length;
3726
3771
  trivia += currentTrivia;
3727
3772
  index -= 1;
3728
- } else if (/[-0-9.A-Z_a-z]/.test(nextChar)) {
3773
+ } else if (/[-$0-9.A-Z_a-z]/.test(nextChar)) {
3729
3774
  result = attemptTokenMatch("decimal");
3730
3775
  if (result === -1) {
3731
3776
  result = attemptTokenMatch("integer");
@@ -3757,6 +3802,7 @@ function tokenise(str) {
3757
3802
  trivia,
3758
3803
  line,
3759
3804
  index,
3805
+ position: lastCharIndex,
3760
3806
  });
3761
3807
  trivia = "";
3762
3808
  lastCharIndex += punctuation.length;
@@ -3783,6 +3829,7 @@ function tokenise(str) {
3783
3829
  trivia,
3784
3830
  line,
3785
3831
  index,
3832
+ position: lastCharIndex,
3786
3833
  });
3787
3834
 
3788
3835
  return tokens;
@@ -3797,7 +3844,14 @@ function tokenise(str) {
3797
3844
  re.lastIndex = lastCharIndex;
3798
3845
  const result = re.exec(str);
3799
3846
  if (result) {
3800
- tokens.push({ type, value: result[0], trivia, line, index });
3847
+ tokens.push({
3848
+ type,
3849
+ value: result[0],
3850
+ trivia,
3851
+ line,
3852
+ index,
3853
+ position: lastCharIndex,
3854
+ });
3801
3855
  if (!noFlushTrivia) {
3802
3856
  trivia = "";
3803
3857
  }
@@ -4251,7 +4305,8 @@ function* checkInterfaceMemberDuplication(defs, i) {
4251
4305
 
4252
4306
  __webpack_require__.r(__webpack_exports__);
4253
4307
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
4254
- /* harmony export */ parse: () => (/* binding */ parse)
4308
+ /* harmony export */ parse: () => (/* binding */ parse),
4309
+ /* harmony export */ parseType: () => (/* binding */ parseType)
4255
4310
  /* harmony export */ });
4256
4311
  /* harmony import */ var _tokeniser_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./tokeniser.js */ "./lib/tokeniser.js");
4257
4312
  /* harmony import */ var _productions_enum_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./productions/enum.js */ "./lib/productions/enum.js");
@@ -4367,6 +4422,20 @@ function parse(str, options = {}) {
4367
4422
  return parseByTokens(tokeniser, options);
4368
4423
  }
4369
4424
 
4425
+ /**
4426
+ * @param {string} str
4427
+ * @param {string} fileName
4428
+ */
4429
+ function parseType(str, fileName) {
4430
+ const tokeniser = new _tokeniser_js__WEBPACK_IMPORTED_MODULE_0__.Tokeniser(str);
4431
+ // @ts-ignore (See Tokeniser.source in supplement.d.ts)
4432
+ tokeniser.source.name = fileName;
4433
+ return (
4434
+ (0,_productions_helpers_js__WEBPACK_IMPORTED_MODULE_15__.type_with_extended_attributes)(tokeniser, "type") ||
4435
+ (0,_productions_helpers_js__WEBPACK_IMPORTED_MODULE_15__.return_type)(tokeniser, "return-type")
4436
+ );
4437
+ }
4438
+
4370
4439
 
4371
4440
  /***/ }),
4372
4441
 
@@ -4516,6 +4585,8 @@ function write(ast, { templates: ts = templates } = {}) {
4516
4585
  /******/
4517
4586
  /************************************************************************/
4518
4587
  var __webpack_exports__ = {};
4588
+ // This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk.
4589
+ (() => {
4519
4590
  /*!******************!*\
4520
4591
  !*** ./index.js ***!
4521
4592
  \******************/
@@ -4523,6 +4594,7 @@ __webpack_require__.r(__webpack_exports__);
4523
4594
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
4524
4595
  /* harmony export */ WebIDLParseError: () => (/* reexport safe */ _lib_tokeniser_js__WEBPACK_IMPORTED_MODULE_3__.WebIDLParseError),
4525
4596
  /* harmony export */ parse: () => (/* reexport safe */ _lib_webidl2_js__WEBPACK_IMPORTED_MODULE_0__.parse),
4597
+ /* harmony export */ parseType: () => (/* reexport safe */ _lib_webidl2_js__WEBPACK_IMPORTED_MODULE_0__.parseType),
4526
4598
  /* harmony export */ validate: () => (/* reexport safe */ _lib_validator_js__WEBPACK_IMPORTED_MODULE_2__.validate),
4527
4599
  /* harmony export */ write: () => (/* reexport safe */ _lib_writer_js__WEBPACK_IMPORTED_MODULE_1__.write)
4528
4600
  /* harmony export */ });
@@ -4541,6 +4613,8 @@ __webpack_require__.r(__webpack_exports__);
4541
4613
 
4542
4614
  if (false) {}
4543
4615
 
4616
+ })();
4617
+
4544
4618
  /******/ return __webpack_exports__;
4545
4619
  /******/ })()
4546
4620
  ;