@idlizer/core 2.1.5 → 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 (41) hide show
  1. package/build/lib/src/LanguageWriters/ArgConvertors.d.ts +0 -1
  2. package/build/lib/src/LanguageWriters/ArgConvertors.js +8 -3
  3. package/build/lib/src/LanguageWriters/LanguageWriter.d.ts +9 -4
  4. package/build/lib/src/LanguageWriters/LanguageWriter.js +4 -4
  5. package/build/lib/src/LanguageWriters/convertors/CJConvertors.d.ts +1 -0
  6. package/build/lib/src/LanguageWriters/convertors/CJConvertors.js +16 -6
  7. package/build/lib/src/LanguageWriters/convertors/CppConvertors.d.ts +1 -0
  8. package/build/lib/src/LanguageWriters/convertors/CppConvertors.js +55 -54
  9. package/build/lib/src/LanguageWriters/convertors/ETSConvertors.d.ts +1 -1
  10. package/build/lib/src/LanguageWriters/convertors/ETSConvertors.js +2 -2
  11. package/build/lib/src/LanguageWriters/convertors/InteropConvertors.js +1 -0
  12. package/build/lib/src/LanguageWriters/convertors/TSConvertors.d.ts +4 -2
  13. package/build/lib/src/LanguageWriters/convertors/TSConvertors.js +44 -9
  14. package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.d.ts +7 -2
  15. package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.js +24 -10
  16. package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.d.ts +3 -0
  17. package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.js +32 -7
  18. package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.d.ts +6 -3
  19. package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +11 -9
  20. package/build/lib/src/config.d.ts +607 -44
  21. package/build/lib/src/config.js +18 -0
  22. package/build/lib/src/configDescriber.d.ts +1 -1
  23. package/build/lib/src/configDescriber.js +2 -2
  24. package/build/lib/src/from-idl/DtsPrinter.js +3 -2
  25. package/build/lib/src/from-idl/IDLLinter.js +1 -1
  26. package/build/lib/src/from-idl/deserialize.d.ts +7 -1
  27. package/build/lib/src/from-idl/deserialize.js +79 -33
  28. package/build/lib/src/idl.d.ts +4 -2
  29. package/build/lib/src/idl.js +64 -33
  30. package/build/lib/src/peer-generation/Materialized.js +1 -1
  31. package/build/lib/src/peer-generation/PeerLibrary.js +4 -4
  32. package/build/lib/src/peer-generation/idl/common.d.ts +1 -0
  33. package/build/lib/src/peer-generation/idl/common.js +8 -2
  34. package/build/lib/src/peer-generation/isMaterialized.js +4 -0
  35. package/build/lib/src/peer-generation/unions.js +1 -1
  36. package/build/lib/src/util.d.ts +2 -1
  37. package/build/lib/src/util.js +8 -3
  38. package/build/lib/src/visitor.d.ts +2 -0
  39. package/build/lib/src/visitor.js +108 -0
  40. package/package.json +2 -2
  41. package/webidl2.js/dist/webidl2.js +62 -16
@@ -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
 
@@ -1829,13 +1876,13 @@ function return_type(tokeniser, typeName) {
1829
1876
  typ.tokens.closeRT = closeRT;
1830
1877
  return typ;
1831
1878
  } while (false);
1832
- const typ = Type.parse(tokeniser, typeName || "return-type");
1879
+ const typ = _type_js__WEBPACK_IMPORTED_MODULE_0__.Type.parse(tokeniser, typeName || "return-type");
1833
1880
  if (typ) {
1834
1881
  return typ;
1835
1882
  }
1836
1883
  const voidToken = tokeniser.consume("void");
1837
1884
  if (voidToken) {
1838
- const ret = new Type({
1885
+ const ret = new _type_js__WEBPACK_IMPORTED_MODULE_0__.Type({
1839
1886
  source: tokeniser.source,
1840
1887
  tokens: { base: voidToken },
1841
1888
  });
@@ -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
  }
@@ -3585,7 +3633,7 @@ const tokenRe = {
3585
3633
  decimal:
3586
3634
  /-?(?=[0-9]*\.|[0-9]+[eE])(([0-9]+\.[0-9]*|[0-9]*\.[0-9]+)([Ee][-+]?[0-9]+)?|[0-9]+[Ee][-+]?[0-9]+)/y,
3587
3635
  integer: /-?(0([Xx][0-9A-Fa-f]+|[0-7]*)|[1-9][0-9]*)/y,
3588
- identifier: /[_-]?[A-Za-z](\.?[0-9A-Z_a-z-])*/y,
3636
+ identifier: /[-$_A-Za-z](\.?[$0-9A-Z_a-z-])*/y,
3589
3637
  string: /"(\\"|[^"])*"/y,
3590
3638
  whitespace: /[\t\n\r ]+/y,
3591
3639
  comment: /\/\/.*|\/\*[\s\S]*?\*\//y,
@@ -3695,8 +3743,6 @@ const punctuations = [
3695
3743
  const reserved = [
3696
3744
  // "constructor" is now a keyword
3697
3745
  "_constructor",
3698
- "toString",
3699
- "_toString",
3700
3746
  ];
3701
3747
 
3702
3748
  /**
@@ -3724,7 +3770,7 @@ function tokenise(str) {
3724
3770
  line += (currentTrivia.match(/\n/g) || []).length;
3725
3771
  trivia += currentTrivia;
3726
3772
  index -= 1;
3727
- } else if (/[-0-9.A-Z_a-z]/.test(nextChar)) {
3773
+ } else if (/[-$0-9.A-Z_a-z]/.test(nextChar)) {
3728
3774
  result = attemptTokenMatch("decimal");
3729
3775
  if (result === -1) {
3730
3776
  result = attemptTokenMatch("integer");