summaryrefslogtreecommitdiff
path: root/op_crates/webidl/00_webidl.js
diff options
context:
space:
mode:
authorLuca Casonato <lucacasonato@yahoo.com>2021-04-08 01:23:26 +0200
committerGitHub <noreply@github.com>2021-04-08 01:23:26 +0200
commitee07ef2962e5fe52e5f40b7516cdd813109e6104 (patch)
tree15ce73d5f6a1546ef50e8eaf42f3979252bb8186 /op_crates/webidl/00_webidl.js
parentfd65e6de3dc1ff909a1419c3b8f0c76daf1a69ed (diff)
chore: update deno_file to use deno_webidl (#10042)
This changes the custom input converters in deno_file to use deno_webidl converters.
Diffstat (limited to 'op_crates/webidl/00_webidl.js')
-rw-r--r--op_crates/webidl/00_webidl.js77
1 files changed, 44 insertions, 33 deletions
diff --git a/op_crates/webidl/00_webidl.js b/op_crates/webidl/00_webidl.js
index c00c605e8..843fd329e 100644
--- a/op_crates/webidl/00_webidl.js
+++ b/op_crates/webidl/00_webidl.js
@@ -615,6 +615,19 @@
}
function createDictionaryConverter(name, ...dictionaries) {
+ const allMembers = [];
+ for (const members of dictionaries) {
+ for (const member of members) {
+ allMembers.push(member);
+ }
+ }
+ allMembers.sort((a, b) => {
+ if (a.key == b.key) {
+ return 0;
+ }
+ return a.key < b.key ? -1 : 1;
+ });
+
return function (V, opts = {}) {
const typeV = type(V);
switch (typeV) {
@@ -633,39 +646,37 @@
const idlDict = {};
- for (const members of dictionaries) {
- for (const member of members) {
- const key = member.key;
-
- let esMemberValue;
- if (typeV === "Undefined" || typeV === "Null") {
- esMemberValue = undefined;
- } else {
- esMemberValue = esDict[key];
- }
-
- const context = `'${key}' of '${name}'${
- opts.context ? ` (${opts.context})` : ""
- }`;
-
- if (esMemberValue !== undefined) {
- const converter = member.converter;
- const idlMemberValue = converter(esMemberValue, {
- ...opts,
- context,
- });
- idlDict[key] = idlMemberValue;
- } else if ("defaultValue" in member) {
- const defaultValue = member.defaultValue;
- const idlMemberValue = defaultValue;
- idlDict[key] = idlMemberValue;
- } else if (member.required) {
- throw makeException(
- TypeError,
- `can not be converted to '${name}' because '${key}' is required in '${name}'.`,
- { ...opts },
- );
- }
+ for (const member of allMembers) {
+ const key = member.key;
+
+ let esMemberValue;
+ if (typeV === "Undefined" || typeV === "Null") {
+ esMemberValue = undefined;
+ } else {
+ esMemberValue = esDict[key];
+ }
+
+ const context = `'${key}' of '${name}'${
+ opts.context ? ` (${opts.context})` : ""
+ }`;
+
+ if (esMemberValue !== undefined) {
+ const converter = member.converter;
+ const idlMemberValue = converter(esMemberValue, {
+ ...opts,
+ context,
+ });
+ idlDict[key] = idlMemberValue;
+ } else if ("defaultValue" in member) {
+ const defaultValue = member.defaultValue;
+ const idlMemberValue = defaultValue;
+ idlDict[key] = idlMemberValue;
+ } else if (member.required) {
+ throw makeException(
+ TypeError,
+ `can not be converted to '${name}' because '${key}' is required in '${name}'.`,
+ { ...opts },
+ );
}
}