@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.
- package/build/lib/src/LanguageWriters/ArgConvertors.d.ts +0 -1
- package/build/lib/src/LanguageWriters/ArgConvertors.js +8 -3
- package/build/lib/src/LanguageWriters/LanguageWriter.d.ts +9 -4
- package/build/lib/src/LanguageWriters/LanguageWriter.js +4 -4
- package/build/lib/src/LanguageWriters/convertors/CJConvertors.d.ts +1 -0
- package/build/lib/src/LanguageWriters/convertors/CJConvertors.js +16 -6
- package/build/lib/src/LanguageWriters/convertors/CppConvertors.d.ts +1 -0
- package/build/lib/src/LanguageWriters/convertors/CppConvertors.js +55 -54
- package/build/lib/src/LanguageWriters/convertors/ETSConvertors.d.ts +1 -1
- package/build/lib/src/LanguageWriters/convertors/ETSConvertors.js +2 -2
- package/build/lib/src/LanguageWriters/convertors/InteropConvertors.js +1 -0
- package/build/lib/src/LanguageWriters/convertors/TSConvertors.d.ts +4 -2
- package/build/lib/src/LanguageWriters/convertors/TSConvertors.js +44 -9
- package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.d.ts +7 -2
- package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.js +24 -10
- package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.d.ts +3 -0
- package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.js +32 -7
- package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.d.ts +6 -3
- package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +11 -9
- package/build/lib/src/config.d.ts +607 -44
- package/build/lib/src/config.js +18 -0
- package/build/lib/src/configDescriber.d.ts +1 -1
- package/build/lib/src/configDescriber.js +2 -2
- package/build/lib/src/from-idl/DtsPrinter.js +3 -2
- package/build/lib/src/from-idl/IDLLinter.js +1 -1
- package/build/lib/src/from-idl/deserialize.d.ts +7 -1
- package/build/lib/src/from-idl/deserialize.js +79 -33
- package/build/lib/src/idl.d.ts +4 -2
- package/build/lib/src/idl.js +64 -33
- package/build/lib/src/peer-generation/Materialized.js +1 -1
- package/build/lib/src/peer-generation/PeerLibrary.js +4 -4
- package/build/lib/src/peer-generation/idl/common.d.ts +1 -0
- package/build/lib/src/peer-generation/idl/common.js +8 -2
- package/build/lib/src/peer-generation/isMaterialized.js +4 -0
- package/build/lib/src/peer-generation/unions.js +1 -1
- package/build/lib/src/util.d.ts +2 -1
- package/build/lib/src/util.js +8 -3
- package/build/lib/src/visitor.d.ts +2 -0
- package/build/lib/src/visitor.js +108 -0
- package/package.json +2 -2
- 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
|
|
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
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
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: /[
|
|
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 (/[
|
|
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");
|