Comparing version 4.1.0 to 4.2.0
@@ -45,2 +45,3 @@ (function() { | ||
tokens = tokens.slice(); | ||
var names = new Map(); | ||
@@ -64,2 +65,10 @@ var FLOAT = "float", | ||
var sanitize_name = function(name, type) { | ||
if (names.has(name)) { | ||
error(`The name "${name}" of type "${names.get(name)}" is already seen`); | ||
} | ||
names.set(name, type); | ||
return name; | ||
} | ||
var last_token = null; | ||
@@ -476,3 +485,3 @@ | ||
var name = consume(ID) || error("No name for callback"); | ||
ret = { type: "callback", name: name.value }; | ||
ret = { type: "callback", name: sanitize_name(name.value, "callback") }; | ||
all_ws(); | ||
@@ -565,3 +574,2 @@ consume(OTHER, "=") || error("No assignment in callback"); | ||
deleter: false, | ||
legacycaller: false, | ||
"static": false, | ||
@@ -576,6 +584,5 @@ stringifier: false | ||
else if (consume(ID, "deleter")) ret.deleter = true; | ||
else if (consume(ID, "legacycaller")) ret.legacycaller = true; | ||
else break; | ||
} | ||
if (ret.getter || ret.setter || ret.creator || ret.deleter || ret.legacycaller) { | ||
if (ret.getter || ret.setter || ret.creator || ret.deleter) { | ||
all_ws(); | ||
@@ -701,3 +708,3 @@ ret.idlType = return_type(); | ||
type: "interface", | ||
name: name.value, | ||
name: isPartial ? name.value : sanitize_name(name.value, "interface"), | ||
partial: false, | ||
@@ -742,3 +749,3 @@ members: mems | ||
type: "namespace", | ||
name: name.value, | ||
name: isPartial ? name.value : sanitize_name(name.value, "namespace"), | ||
partial: isPartial, | ||
@@ -798,3 +805,2 @@ members: mems | ||
deleter: false, | ||
legacycaller: false, | ||
"static": false, | ||
@@ -826,3 +832,3 @@ stringifier: false | ||
type: "dictionary", | ||
name: name.value, | ||
name: isPartial ? name.value : sanitize_name(name.value, "dictionary"), | ||
partial: false, | ||
@@ -873,3 +879,3 @@ members: mems | ||
type: "enum", | ||
name: name.value, | ||
name: sanitize_name(name.value, "enum"), | ||
values: vals | ||
@@ -910,3 +916,3 @@ }; | ||
var name = consume(ID) || error("No name in typedef"); | ||
ret.name = name.value; | ||
ret.name = sanitize_name(name.value, "typedef"); | ||
all_ws(); | ||
@@ -913,0 +919,0 @@ consume(OTHER, ";") || error("Unterminated typedef"); |
{ | ||
"name": "webidl2", | ||
"description": "A WebIDL Parser", | ||
"version": "4.1.0", | ||
"version": "4.2.0", | ||
"contributors": [ | ||
@@ -12,4 +12,4 @@ "Robin Berjon <robin@berjon.com> (https://berjon.com)", | ||
"devDependencies": { | ||
"mocha": "3.4.1", | ||
"expect": "1.20.2", | ||
"mocha": "4.0.1", | ||
"expect": "21.2.1", | ||
"jsondiffpatch": "0.2.4" | ||
@@ -16,0 +16,0 @@ }, |
@@ -117,2 +117,3 @@ | ||
{ | ||
"sequence": false, | ||
"generic": null, | ||
@@ -127,2 +128,3 @@ "idlType": "void", | ||
* `sequence`: Boolean indicating if it is a sequence. Same as `generic === "sequence"`. | ||
* `generic`: String indicating the generic type (e.g. "Promise", "sequence"). `null` | ||
@@ -363,3 +365,2 @@ otherwise. | ||
"deleter": false, | ||
"legacycaller": false, | ||
"static": false, | ||
@@ -399,3 +400,2 @@ "stringifier": false, | ||
* `deleter`: True if a deleter operation. | ||
* `legacycaller`: True if a legacycaller operation. | ||
* `static`: True if a static operation. | ||
@@ -480,3 +480,2 @@ * `stringifier`: True if a stringifier operation. | ||
"deleter": false, | ||
"legacycaller": false, | ||
"static": false, | ||
@@ -483,0 +482,0 @@ "stringifier": false, |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Mixed license
License(Experimental) Package contains multiple licenses.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Mixed license
License(Experimental) Package contains multiple licenses.
Found 1 instance in 1 package
1
261202
10
1185
639
1