Merge branch 'current' into rc

This commit is contained in:
Franck Nijhof 2020-07-21 01:14:51 +02:00
commit d5594870cf
No known key found for this signature in database
GPG Key ID: D62583BA8AB11CA3
17 changed files with 311 additions and 244 deletions

View File

@ -29,7 +29,7 @@ GEM
ffi (1.13.1-x64-mingw32) ffi (1.13.1-x64-mingw32)
forwardable-extended (2.6.0) forwardable-extended (2.6.0)
http_parser.rb (0.6.0) http_parser.rb (0.6.0)
i18n (1.8.3) i18n (1.8.4)
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
jekyll (4.1.1) jekyll (4.1.1)
addressable (~> 2.4) addressable (~> 2.4)

244
package-lock.json generated
View File

@ -20,27 +20,27 @@
} }
}, },
"@babel/code-frame": { "@babel/code-frame": {
"version": "7.8.3", "version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
"integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/highlight": "^7.8.3" "@babel/highlight": "^7.10.4"
} }
}, },
"@babel/helper-validator-identifier": { "@babel/helper-validator-identifier": {
"version": "7.9.0", "version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz",
"integrity": "sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw==", "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==",
"dev": true "dev": true
}, },
"@babel/highlight": { "@babel/highlight": {
"version": "7.9.0", "version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz",
"integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/helper-validator-identifier": "^7.9.0", "@babel/helper-validator-identifier": "^7.10.4",
"chalk": "^2.0.0", "chalk": "^2.0.0",
"js-tokens": "^4.0.0" "js-tokens": "^4.0.0"
}, },
@ -647,9 +647,9 @@
"dev": true "dev": true
}, },
"binary-extensions": { "binary-extensions": {
"version": "2.0.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz",
"integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==",
"dev": true "dev": true
}, },
"boundary": { "boundary": {
@ -736,9 +736,9 @@
"dev": true "dev": true
}, },
"chokidar": { "chokidar": {
"version": "3.3.1", "version": "3.4.1",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.1.tgz",
"integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", "integrity": "sha512-TQTJyr2stihpC4Sya9hs2Xh+O2wf+igjL36Y75xx2WdHuiICcn/XJza46Jwt0eT5hVpQOzo3FpY3cj3RVYLX0g==",
"dev": true, "dev": true,
"requires": { "requires": {
"anymatch": "~3.1.1", "anymatch": "~3.1.1",
@ -748,7 +748,7 @@
"is-binary-path": "~2.1.0", "is-binary-path": "~2.1.0",
"is-glob": "~4.0.1", "is-glob": "~4.0.1",
"normalize-path": "~3.0.0", "normalize-path": "~3.0.0",
"readdirp": "~3.3.0" "readdirp": "~3.4.0"
} }
}, },
"co": { "co": {
@ -1008,9 +1008,9 @@
"dev": true "dev": true
}, },
"fsevents": { "fsevents": {
"version": "2.1.2", "version": "2.1.3",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz",
"integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
@ -1100,9 +1100,9 @@
"dev": true "dev": true
}, },
"ignore": { "ignore": {
"version": "5.1.4", "version": "5.1.8",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz",
"integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==",
"dev": true "dev": true
}, },
"inflight": { "inflight": {
@ -1319,20 +1319,12 @@
} }
}, },
"json5": { "json5": {
"version": "2.1.2", "version": "2.1.3",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.1.2.tgz", "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz",
"integrity": "sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ==", "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==",
"dev": true, "dev": true,
"requires": { "requires": {
"minimist": "^1.2.5" "minimist": "^1.2.5"
},
"dependencies": {
"minimist": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
"dev": true
}
} }
}, },
"jsonify": { "jsonify": {
@ -1382,9 +1374,9 @@
} }
}, },
"p-limit": { "p-limit": {
"version": "2.2.2", "version": "2.3.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
"integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
"dev": true, "dev": true,
"requires": { "requires": {
"p-try": "^2.0.0" "p-try": "^2.0.0"
@ -1458,9 +1450,9 @@
} }
}, },
"lodash": { "lodash": {
"version": "4.17.15", "version": "4.17.19",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz",
"integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==",
"dev": true "dev": true
}, },
"log-symbols": { "log-symbols": {
@ -1588,9 +1580,9 @@
"dev": true "dev": true
}, },
"unist-util-visit": { "unist-util-visit": {
"version": "2.0.2", "version": "2.0.3",
"resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.2.tgz", "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz",
"integrity": "sha512-HoHNhGnKj6y+Sq+7ASo2zpVdfdRifhTgX2KTU3B/sO/TTlZchp7E3S4vjRzDJ7L60KmrCPsQkVK3lEF3cz36XQ==", "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==",
"dev": true, "dev": true,
"requires": { "requires": {
"@types/unist": "^2.0.0", "@types/unist": "^2.0.0",
@ -1599,9 +1591,9 @@
} }
}, },
"unist-util-visit-parents": { "unist-util-visit-parents": {
"version": "3.0.2", "version": "3.1.0",
"resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.0.2.tgz", "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.0.tgz",
"integrity": "sha512-yJEfuZtzFpQmg1OSCyS9M5NJRrln/9FbYosH3iW0MG402QbdbaB8ZESwUv9RO6nRfLAKvWcMxCwdLWOov36x/g==", "integrity": "sha512-0g4wbluTF93npyPrp/ymd3tCDTMnP0yo2akFD2FIBAYXq/Sga3lwaU1D8OYKbtpioaI6CkDcQ6fsMnmtzt7htw==",
"dev": true, "dev": true,
"requires": { "requires": {
"@types/unist": "^2.0.0", "@types/unist": "^2.0.0",
@ -1953,12 +1945,12 @@
} }
}, },
"readdirp": { "readdirp": {
"version": "3.3.0", "version": "3.4.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz",
"integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"picomatch": "^2.0.7" "picomatch": "^2.2.1"
} }
}, },
"regexp.prototype.flags": { "regexp.prototype.flags": {
@ -1972,116 +1964,20 @@
} }
}, },
"remark": { "remark": {
"version": "12.0.0", "version": "12.0.1",
"resolved": "https://registry.npmjs.org/remark/-/remark-12.0.0.tgz", "resolved": "https://registry.npmjs.org/remark/-/remark-12.0.1.tgz",
"integrity": "sha512-oX4lMIS0csgk8AEbzY0h2jdR0ngiCHOpwwpxjmRa5TqAkeknY+tkhjRJGZqnCmvyuWh55/0SW5WY3R3nn3PH9A==", "integrity": "sha512-gS7HDonkdIaHmmP/+shCPejCEEW+liMp/t/QwmF0Xt47Rpuhl32lLtDV1uKWvGoq+kxr5jSgg5oAIpGuyULjUw==",
"dev": true, "dev": true,
"requires": { "requires": {
"remark-parse": "^8.0.0", "remark-parse": "^8.0.0",
"remark-stringify": "^8.0.0", "remark-stringify": "^8.0.0",
"unified": "^9.0.0" "unified": "^9.0.0"
},
"dependencies": {
"markdown-table": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz",
"integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==",
"dev": true,
"requires": {
"repeat-string": "^1.0.0"
}
},
"mdast-util-compact": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-2.0.1.tgz",
"integrity": "sha512-7GlnT24gEwDrdAwEHrU4Vv5lLWrEer4KOkAiKT9nYstsTad7Oc1TwqT2zIMKRdZF7cTuaf+GA1E4Kv7jJh8mPA==",
"dev": true,
"requires": {
"unist-util-visit": "^2.0.0"
}
},
"parse-entities": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz",
"integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==",
"dev": true,
"requires": {
"character-entities": "^1.0.0",
"character-entities-legacy": "^1.0.0",
"character-reference-invalid": "^1.0.0",
"is-alphanumerical": "^1.0.0",
"is-decimal": "^1.0.0",
"is-hexadecimal": "^1.0.0"
}
},
"remark-stringify": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-8.0.0.tgz",
"integrity": "sha512-cABVYVloFH+2ZI5bdqzoOmemcz/ZuhQSH6W6ZNYnLojAUUn3xtX7u+6BpnYp35qHoGr2NFBsERV14t4vCIeW8w==",
"dev": true,
"requires": {
"ccount": "^1.0.0",
"is-alphanumeric": "^1.0.0",
"is-decimal": "^1.0.0",
"is-whitespace-character": "^1.0.0",
"longest-streak": "^2.0.1",
"markdown-escapes": "^1.0.0",
"markdown-table": "^2.0.0",
"mdast-util-compact": "^2.0.0",
"parse-entities": "^2.0.0",
"repeat-string": "^1.5.4",
"state-toggle": "^1.0.0",
"stringify-entities": "^3.0.0",
"unherit": "^1.0.4",
"xtend": "^4.0.1"
}
},
"stringify-entities": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-3.0.0.tgz",
"integrity": "sha512-h7NJJIssprqlyjHT2eQt2W1F+MCcNmwPGlKb0bWEdET/3N44QN3QbUF/ueKCgAssyKRZ3Br9rQ7FcXjHr0qLHw==",
"dev": true,
"requires": {
"character-entities-html4": "^1.0.0",
"character-entities-legacy": "^1.0.0",
"is-alphanumerical": "^1.0.0",
"is-decimal": "^1.0.2",
"is-hexadecimal": "^1.0.0"
}
},
"unist-util-is": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.0.2.tgz",
"integrity": "sha512-Ofx8uf6haexJwI1gxWMGg6I/dLnF2yE+KibhD3/diOqY2TinLcqHXCV6OI5gFVn3xQqDH+u0M625pfKwIwgBKQ==",
"dev": true
},
"unist-util-visit": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.2.tgz",
"integrity": "sha512-HoHNhGnKj6y+Sq+7ASo2zpVdfdRifhTgX2KTU3B/sO/TTlZchp7E3S4vjRzDJ7L60KmrCPsQkVK3lEF3cz36XQ==",
"dev": true,
"requires": {
"@types/unist": "^2.0.0",
"unist-util-is": "^4.0.0",
"unist-util-visit-parents": "^3.0.0"
}
},
"unist-util-visit-parents": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.0.2.tgz",
"integrity": "sha512-yJEfuZtzFpQmg1OSCyS9M5NJRrln/9FbYosH3iW0MG402QbdbaB8ZESwUv9RO6nRfLAKvWcMxCwdLWOov36x/g==",
"dev": true,
"requires": {
"@types/unist": "^2.0.0",
"unist-util-is": "^4.0.0"
}
}
} }
}, },
"remark-cli": { "remark-cli": {
"version": "8.0.0", "version": "8.0.1",
"resolved": "https://registry.npmjs.org/remark-cli/-/remark-cli-8.0.0.tgz", "resolved": "https://registry.npmjs.org/remark-cli/-/remark-cli-8.0.1.tgz",
"integrity": "sha512-5iRrk8ad+dU4espDl60H7ANhXqoaEXYsIyL8Mau0lDN6pP7QMAZsZTCX2XdoCfKfKEpiOggA7CHv43HkyVEppA==", "integrity": "sha512-UaYeFI5qUAzkthUd8/MLBQD5OKM6jLN8GRvF6v+KF7xO/i1jQ+X2VqUSQAxWFYxZ8R25gM56GVjeoKOZ0EIr8A==",
"dev": true, "dev": true,
"requires": { "requires": {
"markdown-extensions": "^1.1.0", "markdown-extensions": "^1.1.0",
@ -2199,9 +2095,9 @@
} }
}, },
"remark-parse": { "remark-parse": {
"version": "8.0.0", "version": "8.0.3",
"resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.0.tgz", "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz",
"integrity": "sha512-Ck14G1Ns/GEPXhSw6m1Uv28kMtVk63e59NyL+QlhBBwBdIUXROM6MPfBehPhW6TW2d73batMdZsKwuxl5i3tEA==", "integrity": "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==",
"dev": true, "dev": true,
"requires": { "requires": {
"ccount": "^1.0.0", "ccount": "^1.0.0",
@ -2252,9 +2148,9 @@
} }
}, },
"unist-util-visit": { "unist-util-visit": {
"version": "2.0.2", "version": "2.0.3",
"resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.2.tgz", "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz",
"integrity": "sha512-HoHNhGnKj6y+Sq+7ASo2zpVdfdRifhTgX2KTU3B/sO/TTlZchp7E3S4vjRzDJ7L60KmrCPsQkVK3lEF3cz36XQ==", "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==",
"dev": true, "dev": true,
"requires": { "requires": {
"@types/unist": "^2.0.0", "@types/unist": "^2.0.0",
@ -2263,9 +2159,9 @@
} }
}, },
"unist-util-visit-parents": { "unist-util-visit-parents": {
"version": "3.0.2", "version": "3.1.0",
"resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.0.2.tgz", "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.0.tgz",
"integrity": "sha512-yJEfuZtzFpQmg1OSCyS9M5NJRrln/9FbYosH3iW0MG402QbdbaB8ZESwUv9RO6nRfLAKvWcMxCwdLWOov36x/g==", "integrity": "sha512-0g4wbluTF93npyPrp/ymd3tCDTMnP0yo2akFD2FIBAYXq/Sga3lwaU1D8OYKbtpioaI6CkDcQ6fsMnmtzt7htw==",
"dev": true, "dev": true,
"requires": { "requires": {
"@types/unist": "^2.0.0", "@types/unist": "^2.0.0",
@ -2281,9 +2177,9 @@
} }
}, },
"remark-stringify": { "remark-stringify": {
"version": "8.1.0", "version": "8.1.1",
"resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-8.1.0.tgz", "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-8.1.1.tgz",
"integrity": "sha512-FSPZv1ds76oAZjurhhuV5qXSUSoz6QRPuwYK38S41sLHwg4oB7ejnmZshj7qwjgYLf93kdz6BOX9j5aidNE7rA==", "integrity": "sha512-q4EyPZT3PcA3Eq7vPpT6bIdokXzFGp9i85igjmhRyXWmPs0Y6/d2FYwUNotKAWyLch7g0ASZJn/KHHcHZQ163A==",
"dev": true, "dev": true,
"requires": { "requires": {
"ccount": "^1.0.0", "ccount": "^1.0.0",
@ -2479,9 +2375,9 @@
}, },
"dependencies": { "dependencies": {
"safe-buffer": { "safe-buffer": {
"version": "5.2.0", "version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
"integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
"dev": true "dev": true
} }
} }
@ -2806,9 +2702,9 @@
} }
}, },
"unified-args": { "unified-args": {
"version": "8.0.0", "version": "8.1.0",
"resolved": "https://registry.npmjs.org/unified-args/-/unified-args-8.0.0.tgz", "resolved": "https://registry.npmjs.org/unified-args/-/unified-args-8.1.0.tgz",
"integrity": "sha512-224jfXOL0Xu0e52fJTfxmAaNTuW1zopPmnXh/5GDAxx4Z6NbcZpjgQPBmo1xoLAhGih0rWVG2+a2kodzrEHfHw==", "integrity": "sha512-t1HPS1cQPsVvt/6EtyWIbQGurza5684WGRigNghZRvzIdHm3LPgMdXPyGx0npORKzdiy5+urkF0rF5SXM8lBuQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"camelcase": "^5.0.0", "camelcase": "^5.0.0",
@ -3000,9 +2896,9 @@
} }
}, },
"vfile": { "vfile": {
"version": "4.1.0", "version": "4.1.1",
"resolved": "https://registry.npmjs.org/vfile/-/vfile-4.1.0.tgz", "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.1.1.tgz",
"integrity": "sha512-BaTPalregj++64xbGK6uIlsurN3BCRNM/P2Pg8HezlGzKd1O9PrwIac6bd9Pdx2uTb0QHoioZ+rXKolbVXEgJg==", "integrity": "sha512-lRjkpyDGjVlBA7cDQhQ+gNcvB1BGaTHYuSOcY3S7OhDmBtnzX95FhtZZDecSTDm6aajFymyve6S5DN4ZHGezdQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@types/unist": "^2.0.0", "@types/unist": "^2.0.0",

View File

@ -4,12 +4,12 @@
"version": "1.0.0", "version": "1.0.0",
"dependencies": {}, "dependencies": {},
"devDependencies": { "devDependencies": {
"remark-cli": "^8.0.0", "remark-cli": "^8.0.1",
"remark-frontmatter": "^2.0.0", "remark-frontmatter": "^2.0.0",
"remark-lint": "^7.0.1", "remark-lint": "^7.0.1",
"remark-lint-fenced-code-flag": "^2.0.1", "remark-lint-fenced-code-flag": "^2.0.1",
"remark-lint-no-shell-dollars": "^2.0.2", "remark-lint-no-shell-dollars": "^2.0.2",
"remark-stringify": "^8.1.0", "remark-stringify": "^8.1.1",
"textlint": "^11.6.3", "textlint": "^11.6.3",
"textlint-rule-common-misspellings": "^1.0.1", "textlint-rule-common-misspellings": "^1.0.1",
"textlint-rule-terminology": "^2.1.4" "textlint-rule-terminology": "^2.1.4"

View File

@ -12,6 +12,8 @@ module Jekyll
'device_class', 'icon', 'map', 'list', 'date', 'datetime' 'device_class', 'icon', 'map', 'list', 'date', 'datetime'
] ]
MIN_DEFAULT_LENGTH = 30
def initialize(tag_name, text, tokens) def initialize(tag_name, text, tokens)
super super
@component, @platform = text.strip.split('.', 2) @component, @platform = text.strip.split('.', 2)
@ -55,13 +57,11 @@ module Jekyll
def render_config_vars(vars:, component:, platform:, converter:, classes: nil, parent_type: nil) def render_config_vars(vars:, component:, platform:, converter:, classes: nil, parent_type: nil)
result = Array.new result = Array.new
result << "<dl class='#{classes}'>" result << "<div class='#{classes}'>"
result << vars.map do |key, attr| result << vars.map do |key, attr|
markup = Array.new markup = Array.new
markup << "<dt><a class='title-link' name='#{slug(key)}' href='\##{slug(key)}'></a> #{key}</dt>" markup << "<div class='config-vars-item'><div class='config-vars-label'><a name='#{slug(key)}' class='title-link' href='\##{slug(key)}'></a> <span class='config-vars-label-name'>#{key}</span>"
markup << "<dd>"
markup << "<p class='desc'>"
if attr.key? 'type' if attr.key? 'type'
@ -78,14 +78,23 @@ module Jekyll
TYPES.include? attr['type'] TYPES.include? attr['type']
end end
markup << "<span class='type'>(<span class='#{type_class(attr['type'])}'>" markup << "<span class='config-vars-type'>#{type_link(attr['type'], component: component)}</span>"
markup << "#{type_link(attr['type'], component: component)}</span>)</span>"
else else
# Type is missing, which is required (unless we are in a list or template) # Type is missing, which is required (unless we are in a list or template)
raise ArgumentError, "Configuration key '#{key}' is missing a type definition" \ raise ArgumentError, "Configuration key '#{key}' is missing a type definition" \
unless ['list', 'template'].include? parent_type unless ['list', 'template'].include? parent_type
end end
defaultValue = ""
isDefault = false
if attr.key? 'default' and not attr['default'].to_s.empty?
isDefault = true
defaultValue = converter.convert(attr['default'].to_s)
elsif attr['type'].to_s.include? 'boolean'
# If the type is a boolean, a default key is required
raise ArgumentError, "Configuration key '#{key}' is a boolean type and"\
" therefore, requires a default."
end
if attr.key? 'required' if attr.key? 'required'
# Check if required is a valid value # Check if required is a valid value
@ -93,41 +102,48 @@ module Jekyll
"true, false, inclusive or exclusive."\ "true, false, inclusive or exclusive."\
unless [true, false, 'inclusive', 'exclusive'].include? attr['required'] unless [true, false, 'inclusive', 'exclusive'].include? attr['required']
markup << "<span class='required'>(#{required_value(attr['required'])})</span>" isTrue = attr['required'].to_s == 'true'
startSymbol = isTrue ? '' : '('
endSymbol = isTrue ? '' : ')'
showDefault = isDefault && (defaultValue.length <= MIN_DEFAULT_LENGTH)
shortDefaultValue = ""
if showDefault
shortDefaultValue = defaultValue
shortDefaultValue.slice!("<p>")
shortDefaultValue.slice!("</p>")
shortDefaultValue = shortDefaultValue.strip
shortDefaultValue = ", default: " + shortDefaultValue
end
markup << "<span class='config-vars-required'>#{startSymbol}<span class='#{attr['required'].to_s}'>#{required_value(attr['required'])}</span>#{shortDefaultValue}#{endSymbol}</span>"
end end
markup << "</div><div class='config-vars-description-and-children'>"
if attr.key? 'description' if attr.key? 'description'
markup << "<span class='description'>#{converter.convert(attr['description'].to_s)}</span>" markup << "<span class='config-vars-description'>#{converter.convert(attr['description'].to_s)}</span>"
else else
# Description is missing # Description is missing
raise ArgumentError, "Configuration key '#{key}' is missing a description." raise ArgumentError, "Configuration key '#{key}' is missing a description."
end end
markup << "</p>"
if attr.key? 'default' and not attr['default'].to_s.empty? if isDefault && defaultValue.length > MIN_DEFAULT_LENGTH
markup << "<p class='default'>\nDefault value: #{converter.convert(attr['default'].to_s)}</p>" markup << "<div class='config-vars-default'>\nDefault: #{defaultValue}</div>"
elsif attr['type'].to_s.include? 'boolean'
# Is the type is a boolean, a default key is required
raise ArgumentError, "Configuration key '#{key}' is a boolean type and"\
" therefore, requires a default."
end end
markup << "</div>"
markup << "</dd>"
# Check for nested configuration variables # Check for nested configuration variables
if attr.key? 'keys' if attr.key? 'keys'
markup << "<dd>"
markup << render_config_vars( markup << render_config_vars(
vars: attr['keys'], component: component, vars: attr['keys'], component: component,
platform: platform, converter: converter, platform: platform, converter: converter,
classes: 'nested', parent_type: attr['type']) classes: 'nested', parent_type: attr['type'])
markup << "</dd>"
end end
markup markup << "</div>"
end end
result << "</dl>" result << "</div>"
result.join result.join
end end

View File

@ -0,0 +1,74 @@
module Jekyll
class ConfigurationBasicBlock < Liquid::Block
def initialize(tag_name, text, tokens)
super
@component, @platform = text.strip.split('.', 2)
end
def slug(key)
key.downcase.strip.gsub(' ', '-').gsub(/[^\w\-]/, '')
end
def render_config_vars(vars:, component:, platform:, converter:, classes: nil, parent_type: nil)
result = Array.new
result << "<div class='#{classes}'>"
result << vars.map do |key, attr|
markup = Array.new
markup << "<div class='config-vars-item'><div class='config-vars-label'><a name='#{slug(key)}' class='title-link' href='\##{slug(key)}'></a> <span class='config-vars-label-name'>#{key}</span></div><div class='config-vars-description-and-children'>"
if attr.key? 'description'
markup << "<span class='config-vars-description'>#{converter.convert(attr['description'].to_s)}</span>"
else
# Description is missing
raise ArgumentError, "Configuration key '#{key}' is missing a description."
end
markup << "</div>"
# Check for nested configuration variables
if attr.key? 'keys'
markup << render_config_vars(
vars: attr['keys'], component: component,
platform: platform, converter: converter,
classes: 'nested', parent_type: attr['type'])
end
markup << "</div>"
end
result << "</div>"
result.join
end
def render(context)
if @component.nil? and @platform.nil?
page = context.environments.first['page']
@component, @platform = page['slug'].split('.', 2)
end
contents = super(context)
component = Liquid::Template.parse(@component).render context
platform = Liquid::Template.parse(@platform).render context
site = context.registers[:site]
converter = site.find_converter_instance(::Jekyll::Converters::Markdown)
vars = SafeYAML.load(contents)
<<~MARKUP
<div class="config-vars basic">
#{render_config_vars(
vars: vars,
component: component,
platform: platform,
converter: converter
)}
</div>
MARKUP
end
end
end
Liquid::Template.register_tag('configuration_basic', Jekyll::ConfigurationBasicBlock)

View File

@ -491,47 +491,82 @@ twitter-widget {
// Configuration variables // Configuration variables
div.config-vars { div.config-vars {
// Future re-design padding-bottom: 16px;
// h3 {
// border: 0;
// border-top: 1px solid $primary-color;
// padding-top: 1.4rem;
// }
dl { .config-vars-item {
margin-bottom: 1.5em; border-bottom: 1px solid #d9dbde;
padding-top: 16px;
padding-bottom: 16px;
}
&.nested { .nested .config-vars-item:last-child {
border-left: 1px dotted $primary-color; border: none
padding-left: 6px; }
.config-vars-label {
padding-bottom: 4px;
position: relative;
> span {
padding-right: 4px;
} }
dt { &:hover a.title-link::before {
font-weight: bold; position: absolute;
top: 5px;
left: -25px;
padding-right: 40px;
font-family: "FontAwesome";
font-size: 15px;
color: #999;
content: "";
} }
}
dd { .config-vars-label-name {
margin: 0 0 0.5em 1em; font-weight: bold;
font-size: 16px;
color: #222222bd;
}
p.desc { .config-vars-type {
margin: 0; color :#8792a2;
font-size: 13px;
}
span.type, .config-vars-required {
span.required { color :#8792a2;
font-style: italic; font-size: 13px;
text-transform: lowercase;
&::after { .true {
content: " " color: #e56f4a;
} text-transform: uppercase;
} font-size: 11px;
}
p.default {
font-style: italic;
margin: 0;
}
} }
} }
.config-vars-description-and-children {
font-size: 14px;
color: #4f566b;
}
.config-vars-description p {
margin: 0;
}
.config-vars-default {
padding-top: 8px;
p {
margin: 0;
display: inline;
}
}
.nested {
margin-left: 48px;
}
} }
code { code {

View File

@ -27,7 +27,7 @@
<div class='grid__item one-third lap-one-half palm-one-whole'> <div class='grid__item one-third lap-one-half palm-one-whole'>
Website powered by <a href='https://jekyllrb.com/'>Jekyll</a> and the Website powered by <a href='https://jekyllrb.com/'>Jekyll</a> and the
<a href='https://github.com/coogie/oscailte'>Oscalite theme</a>.<br /> <a href='https://github.com/coogie/oscailte'>Oscailte theme</a>.<br />
<br /> <br />
<a href="https://www.netlify.com"> <a href="https://www.netlify.com">
<img src="/images/frontpage/netlify.svg" alt="Deploys by Netlify Badge"/> <img src="/images/frontpage/netlify.svg" alt="Deploys by Netlify Badge"/>

View File

@ -63,7 +63,7 @@ Steps to Integrate an Amazon Alexa Smart Home Skill with Home Assistant:
</p> </p>
- In next screen, make sure *v3* is selected in `Payload version`. - In next screen, make sure *v3* is selected in `Payload version`.
- Now, you have created a skeleton of Smart Home skill. Next step we will do some "real" developer work. You can keep Alex Developer Console opened, we need change the skill configuration later. - Now, you have created a skeleton of Smart Home skill. Next step we will do some "real" developer work. You can keep Alexa Developer Console opened, we need change the skill configuration later.
## Create an AWS Lambda Function ## Create an AWS Lambda Function

View File

@ -19,6 +19,7 @@ Known supported devices:
- Denon AVR-X1200W - Denon AVR-X1200W
- Denon AVR-X1300W - Denon AVR-X1300W
- Denon AVR-X1500H - Denon AVR-X1500H
- Denon AVR-X1600H
- Denon AVR-X2000 - Denon AVR-X2000
- Denon AVR-X2100W - Denon AVR-X2100W
- Denon AVR-X2200W - Denon AVR-X2200W

View File

@ -10,12 +10,23 @@ ha_domain: hddtemp
The `hddtemp` sensor platform is using the data provided by [HDDTemp](https://savannah.nongnu.org/projects/hddtemp). The `hddtemp` sensor platform is using the data provided by [HDDTemp](https://savannah.nongnu.org/projects/hddtemp).
## Setup
It required that `hddtemp` is started or running in daemon mode on a local or remote system. It required that `hddtemp` is started or running in daemon mode on a local or remote system.
```bash ```bash
hddtemp -dF hddtemp -dF
``` ```
<div class='note warning'>
You can't use this sensor in a container (only Home Assistant Core is supported) as it requires access to `hddtemp` which is not available in a container-based setup.
</div>
## Configuration
To setup a HDDTemp to your installation, add the following to your `configuration.yaml` file: To setup a HDDTemp to your installation, add the following to your `configuration.yaml` file:
```yaml ```yaml

View File

@ -98,6 +98,7 @@ For example: for model `UN55NU7100`, the `UN55` would mean it's an LED, North Am
- F6400AF - F6400AF
- F6500 - F6500
- F7000 - F7000
- F1000
- F8000BF - F8000BF
- K5579 - K5579
- K5600AK (partially supported, turn on works but state is not updated) - K5600AK (partially supported, turn on works but state is not updated)
@ -107,6 +108,7 @@ For example: for model `UN55NU7100`, the `UN55` would mean it's an LED, North Am
- KS8000 - KS8000
- KS8005 - KS8005
- KS8500 - KS8500
- KU6000W
- KU6020 - KU6020
- KU6100 - KU6100
- KU6290 - KU6290
@ -130,6 +132,7 @@ For example: for model `UN55NU7100`, the `UN55` would mean it's an LED, North Am
- RU7172 - RU7172
- RU7475 - RU7475
- Q90RATXZT - Q90RATXZT
- QA55Q7FAM
#### Models tested but not yet working #### Models tested but not yet working

View File

@ -183,7 +183,7 @@ sensor:
sensor: sensor:
- platform: command_line - platform: command_line
name: wind direction name: wind direction
command: 'sh /home/pi/.homeassistant/scripts/wind_direction.sh {{ states('sensor.wind_direction') }}' command: "sh /home/pi/.homeassistant/scripts/wind_direction.sh {{ states('sensor.wind_direction') }}"
unit_of_measurement: "Direction" unit_of_measurement: "Direction"
``` ```

View File

@ -6,7 +6,7 @@ ha_category:
- Scene - Scene
ha_release: '0.110' ha_release: '0.110'
ha_config_flow: true ha_config_flow: true
ha_iot_class: Local Polling ha_iot_class: Local Push
ha_codeowners: ha_codeowners:
- '@gwww' - '@gwww'
ha_domain: upb ha_domain: upb

View File

@ -32,4 +32,4 @@ api_key:
All the data will be fetched from [Uptime Robot](https://uptimerobot.com). All the data will be fetched from [Uptime Robot](https://uptimerobot.com).
To get your API key, go to [My Settings](https://uptimerobot.com/dashboard#mySettings) on the Uptime Robot website, at the bottom you will find your "Main API Key". To get your API key, go to [My Settings](https://uptimerobot.com/dashboard#mySettings) on the Uptime Robot website, at the bottom you will find your "Read-Only API Key".

View File

@ -43,7 +43,7 @@ Stop the current cleaning task and return to the dock. For the Xiaomi Vacuum, Ro
#### Service `vacuum.start_pause` #### Service `vacuum.start_pause`
Start, pause or resume a cleaning task. Start, pause or resume a cleaning task. For the Xiaomi Vacuum, Roomba, and Neato use `vacuum.start` and `vacuum.pause` instead.
| Service data attribute | Optional | Description | | Service data attribute | Optional | Description |
|---------------------------|----------|-------------------------------------------------------| |---------------------------|----------|-------------------------------------------------------|

View File

@ -329,10 +329,18 @@ This token (32 hexadecimal characters) is required for the Xiaomi Mi Robot Vacuu
8. Install [DB Browser for SQLite](https://sqlitebrowser.org/). 8. Install [DB Browser for SQLite](https://sqlitebrowser.org/).
9. Open DB Browser and load the `.sqlite` file you saved from your backup. 9. Open DB Browser and load the `.sqlite` file you saved from your backup.
10. Click on the `Execute SQL` tab. 10. Click on the `Execute SQL` tab.
11. Input and run this query: 11. Input and run this query (use appropriate SELECT query for your device i.e. Vacuum, Powerstrip or Plug):
```sql ```sql
-- Execute to retrieve token for Vacuum
SELECT ZTOKEN FROM ZDEVICE WHERE ZMODEL LIKE "%vacuum%" SELECT ZTOKEN FROM ZDEVICE WHERE ZMODEL LIKE "%vacuum%"
-- Execute to retrieve token for Smart Powerstrip
SELECT ZTOKEN FROM ZDEVICE WHERE ZMODEL LIKE "%powerstrip%"
-- Execute to retrieve token for Smart Plug
SELECT ZTOKEN FROM ZDEVICE WHERE ZMODEL LIKE "%plug%"
``` ```
12. Copy the returned 96-digit hexadecimal string to your clipboard. 12. Copy the returned 96-digit hexadecimal string to your clipboard.

View File

@ -7,10 +7,40 @@ description: "The Weather Forecast card displays the weather. Very useful to inc
The Weather Forecast card displays the weather. Very useful to include on interfaces that people display on the wall. The Weather Forecast card displays the weather. Very useful to include on interfaces that people display on the wall.
<p class='img'> <p class='img'>
<img src='/images/lovelace/lovelace_weather.png' alt='Screenshot of the weather card'> <img src='/images/lovelace/lovelace_weather.png' alt='Screenshot of the weather card'>
Screenshot of the weather card. Screenshot of the weather card.
</p> </p>
### Card Settings
{% configuration_basic %}
Entity:
description: "The entity of the `weather` platform to use."
Name:
description: The name of the location where the weather platform is located. If not set, the name will be the name set on the weather entity
Show Forecast:
description: Check this if you would like to show the upcoming forecast under the current weather.
Secondary Info Attribute:
description: Here you can specify a secondary attribute to show under the current temperature. Ex. Extrema, Precipitation, Humidity. If not set, it will default to Extrema (High/Low) if available, if not available then Precipitation and if precipitation isn't available then Humidity.
Theme:
description: Theme your card using any installed theme in your HA environment.
{% endconfiguration_basic %}
<div class="note">
This card works only with platforms that define a `weather` entity.
E.g., it works with [OpenWeatherMap](https://www.home-assistant.io/integrations/openweathermap/#weather) but not [OpenWeatherMap Sensor](https://www.home-assistant.io/integrations/openweathermap/#sensor)
</div>
### YAML
This is for if you use YAML mode or just prefer to use YAML in the Code Editor in the UI
{% configuration %} {% configuration %}
type: type:
required: true required: true
@ -48,13 +78,6 @@ type: weather-forecast
entity: weather.openweathermap entity: weather.openweathermap
``` ```
<div class="note">
This card works only with platforms that define a `weather` entity.
E.g., it works with [OpenWeatherMap](https://www.home-assistant.io/integrations/openweathermap/#weather) but not [OpenWeatherMap Sensor](https://www.home-assistant.io/integrations/openweathermap/#sensor)
</div>
### Advanced ### Advanced