Compare commits
10 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
60ba3c18c7 | ||
|
|
679ee70117 | ||
|
|
71ce364c54 | ||
|
|
3c77bebe6b | ||
|
|
2b897c4ce6 | ||
|
|
8cce14c2d7 | ||
|
|
ad9aa97d56 | ||
|
|
88da9e56f9 | ||
|
|
a1159b71c0 | ||
|
|
726d3bf8dc |
13 changed files with 396 additions and 968 deletions
26
README.md
26
README.md
|
|
@ -1,13 +1,21 @@
|
||||||
|
# VNDB Fork of Mithril.js
|
||||||
|
|
||||||
|
This is a shallow fork of [mithril.js](https://mithril.js.org/) with some
|
||||||
|
functionality removed to save a few bytes. In particular:
|
||||||
|
|
||||||
|
- No routing
|
||||||
|
- No XHR wrapper
|
||||||
|
- No URL helper utilities
|
||||||
|
- 'throw' errors instead of console.error() (nothing to do with size, just makes it easier to capture errors)
|
||||||
|
|
||||||
|
There's room for further optimization, but that easily runs into diminishing
|
||||||
|
returns. This'll do for now.
|
||||||
|
|
||||||
|
(Original README below)
|
||||||
|
|
||||||
# Mithril.js
|
# Mithril.js
|
||||||
|
|
||||||
[](https://www.npmjs.com/package/mithril)
|
- [What is Mithril.js?](#what-is-mithriljs)
|
||||||
[](https://github.com/MithrilJS/mithril.js/blob/next/LICENSE)
|
|
||||||
[](https://www.npmjs.com/package/mithril)
|
|
||||||
[](https://www.npmjs.com/package/mithril)
|
|
||||||
[](https://opencollective.com/mithriljs)
|
|
||||||
[](https://mithril.zulipchat.com/)
|
|
||||||
|
|
||||||
- [What is Mithril.js?](#what-is-mithriljs?)
|
|
||||||
- [Installation](#installation)
|
- [Installation](#installation)
|
||||||
- [Documentation](#documentation)
|
- [Documentation](#documentation)
|
||||||
- [Getting Help](#getting-help)
|
- [Getting Help](#getting-help)
|
||||||
|
|
@ -15,7 +23,7 @@
|
||||||
|
|
||||||
## What is Mithril.js?
|
## What is Mithril.js?
|
||||||
|
|
||||||
A modern client-side JavaScript framework for building Single Page Applications. It's small (<!-- size -->9.17 KB<!-- /size --> gzipped), fast and provides routing and XHR utilities out of the box.
|
A modern client-side JavaScript framework for building Single Page Applications. It's small (<!-- size -->5.90 KB<!-- /size --> gzipped), fast and provides routing and XHR utilities out of the box.
|
||||||
|
|
||||||
Mithril.js is used by companies like Vimeo and Nike, and open source platforms like Lichess 👍.
|
Mithril.js is used by companies like Vimeo and Nike, and open source platforms like Lichess 👍.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,7 @@ module.exports = function(render, schedule, console) {
|
||||||
|
|
||||||
function sync() {
|
function sync() {
|
||||||
for (offset = 0; offset < subscriptions.length; offset += 2) {
|
for (offset = 0; offset < subscriptions.length; offset += 2) {
|
||||||
try { render(subscriptions[offset], Vnode(subscriptions[offset + 1]), redraw) }
|
render(subscriptions[offset], Vnode(subscriptions[offset + 1]), redraw)
|
||||||
catch (e) { console.error(e) }
|
|
||||||
}
|
}
|
||||||
offset = -1
|
offset = -1
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@
|
||||||
- [m.trust](trust.md)
|
- [m.trust](trust.md)
|
||||||
- [m.fragment](fragment.md)
|
- [m.fragment](fragment.md)
|
||||||
- [m.redraw](redraw.md)
|
- [m.redraw](redraw.md)
|
||||||
|
- [m.censor](censor.md)
|
||||||
- Optional
|
- Optional
|
||||||
- [Stream](stream.md)
|
- [Stream](stream.md)
|
||||||
- Tooling
|
- Tooling
|
||||||
|
|
|
||||||
|
|
@ -462,7 +462,7 @@ Pending streams can be created by calling `stream()` with no parameters.
|
||||||
var pending = stream()
|
var pending = stream()
|
||||||
```
|
```
|
||||||
|
|
||||||
If a stream is dependent on more than one stream, any of its parent streams is in a pending state, the dependent streams is also in a pending state, and does not update its value.
|
If a stream is dependent on more than one stream and any of its parent streams is in a pending state, the dependent stream is also in a pending state, and does not update its value.
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
var a = stream(5)
|
var a = stream(5)
|
||||||
|
|
@ -558,13 +558,13 @@ console.log(serialized) // logs 123
|
||||||
|
|
||||||
Unlike libraries like Knockout, Mithril.js streams do not trigger re-rendering of templates. Redrawing happens in response to event handlers defined in Mithril.js component views, route changes, or after [`m.request`](request.md) calls resolve.
|
Unlike libraries like Knockout, Mithril.js streams do not trigger re-rendering of templates. Redrawing happens in response to event handlers defined in Mithril.js component views, route changes, or after [`m.request`](request.md) calls resolve.
|
||||||
|
|
||||||
If redrawing is desired in response to other asynchronous events (e.g. `setTimeout`/`setInterval`, websocket subscription, 3rd party library event handler, etc), you should manually call [`m.redraw()`](redraw.md)
|
If redrawing is desired in response to other asynchronous events (e.g. `setTimeout`/`setInterval`, websocket subscription, 3rd party library event handler, etc.), you should manually call [`m.redraw()`](redraw.md).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### What is Fantasy Land
|
### What is Fantasy Land
|
||||||
|
|
||||||
[Fantasy Land](https://github.com/fantasyland/fantasy-land) specifies interoperability of common algebraic structures. In plain english, that means that libraries that conform to Fantasy Land specs can be used to write generic functional style code that works regardless of how these libraries implement the constructs.
|
[Fantasy Land](https://github.com/fantasyland/fantasy-land) specifies interoperability of common algebraic structures. In plain English, that means that libraries that conform to Fantasy Land specs can be used to write generic functional style code that works regardless of how these libraries implement the constructs.
|
||||||
|
|
||||||
For example, say we want to create a generic function called `plusOne`. The naive implementation would look like this:
|
For example, say we want to create a generic function called `plusOne`. The naive implementation would look like this:
|
||||||
|
|
||||||
|
|
@ -574,7 +574,7 @@ function plusOne(a) {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
The problem with this implementation is that it can only be used with a number. However it's possible that whatever logic produces a value for `a` could also produce an error state (wrapped in a Maybe or an Either from a library like [Sanctuary](https://github.com/sanctuary-js/sanctuary) or [Ramda-Fantasy](https://github.com/ramda/ramda-fantasy)), or it could be a Mithril.js stream, or a [flyd](https://github.com/paldepind/flyd) stream, etc. Ideally, we wouldn't want to write a similar version of the same function for every possible type that `a` could have and we wouldn't want to be writing wrapping/unwrapping/error handling code repeatedly.
|
The problem with this implementation is that it can only be used with a number. However it's possible that whatever logic produces a value for `a` could also produce an error state (wrapped in a Maybe or an Either from a library like [Sanctuary](https://github.com/sanctuary-js/sanctuary) or [Ramda-Fantasy](https://github.com/ramda/ramda-fantasy)), or it could be a Mithril.js stream, a [Flyd](https://github.com/paldepind/flyd) stream, etc. Ideally, we wouldn't want to write a similar version of the same function for every possible type that `a` could have and we wouldn't want to be writing wrapping/unwrapping/error handling code repeatedly.
|
||||||
|
|
||||||
This is where Fantasy Land can help. Let's rewrite that function in terms of a Fantasy Land algebra:
|
This is where Fantasy Land can help. Let's rewrite that function in terms of a Fantasy Land algebra:
|
||||||
|
|
||||||
|
|
|
||||||
8
index.js
8
index.js
|
|
@ -1,7 +1,6 @@
|
||||||
"use strict"
|
"use strict"
|
||||||
|
|
||||||
var hyperscript = require("./hyperscript")
|
var hyperscript = require("./hyperscript")
|
||||||
var request = require("./request")
|
|
||||||
var mountRedraw = require("./mount-redraw")
|
var mountRedraw = require("./mount-redraw")
|
||||||
var domFor = require("./render/domFor")
|
var domFor = require("./render/domFor")
|
||||||
|
|
||||||
|
|
@ -11,16 +10,9 @@ m.trust = hyperscript.trust
|
||||||
m.fragment = hyperscript.fragment
|
m.fragment = hyperscript.fragment
|
||||||
m.Fragment = "["
|
m.Fragment = "["
|
||||||
m.mount = mountRedraw.mount
|
m.mount = mountRedraw.mount
|
||||||
m.route = require("./route")
|
|
||||||
m.render = require("./render")
|
m.render = require("./render")
|
||||||
m.redraw = mountRedraw.redraw
|
m.redraw = mountRedraw.redraw
|
||||||
m.request = request.request
|
|
||||||
m.parseQueryString = require("./querystring/parse")
|
|
||||||
m.buildQueryString = require("./querystring/build")
|
|
||||||
m.parsePathname = require("./pathname/parse")
|
|
||||||
m.buildPathname = require("./pathname/build")
|
|
||||||
m.vnode = require("./render/vnode")
|
m.vnode = require("./render/vnode")
|
||||||
m.censor = require("./util/censor")
|
|
||||||
m.domFor = domFor.domFor
|
m.domFor = domFor.domFor
|
||||||
|
|
||||||
module.exports = m
|
module.exports = m
|
||||||
|
|
|
||||||
818
mithril.js
818
mithril.js
|
|
@ -108,7 +108,7 @@ function execSelector(state, vnode) {
|
||||||
var className = hasClass ? attrs.class : attrs.className
|
var className = hasClass ? attrs.class : attrs.className
|
||||||
vnode.tag = state.tag
|
vnode.tag = state.tag
|
||||||
vnode.attrs = {}
|
vnode.attrs = {}
|
||||||
if (!isEmpty(state.attrs) && !isEmpty(attrs)) {
|
if (!isEmpty(state.attrs)) {
|
||||||
var newAttrs = {}
|
var newAttrs = {}
|
||||||
for (var key in attrs) {
|
for (var key in attrs) {
|
||||||
if (hasOwn.call(attrs, key)) newAttrs[key] = attrs[key]
|
if (hasOwn.call(attrs, key)) newAttrs[key] = attrs[key]
|
||||||
|
|
@ -159,13 +159,32 @@ hyperscript.fragment = function() {
|
||||||
vnode2.children = Vnode.normalizeChildren(vnode2.children)
|
vnode2.children = Vnode.normalizeChildren(vnode2.children)
|
||||||
return vnode2
|
return vnode2
|
||||||
}
|
}
|
||||||
|
var delayedRemoval0 = new WeakMap
|
||||||
|
function *domFor1({dom, domSize0}, {generation0} = {}) {
|
||||||
|
if (dom != null) do {
|
||||||
|
const {nextSibling} = dom
|
||||||
|
if (delayedRemoval0.get(dom) === generation0) {
|
||||||
|
yield dom
|
||||||
|
domSize0--
|
||||||
|
}
|
||||||
|
dom = nextSibling
|
||||||
|
}
|
||||||
|
while (domSize0)
|
||||||
|
}
|
||||||
|
var df = {
|
||||||
|
delayedRemoval: delayedRemoval0,
|
||||||
|
domFor: domFor1,
|
||||||
|
}
|
||||||
|
var delayedRemoval = df.delayedRemoval
|
||||||
|
var domFor0 = df.domFor
|
||||||
var _11 = function($window) {
|
var _11 = function($window) {
|
||||||
var $doc = $window && $window.document
|
var $doc = $window && $window.document
|
||||||
var currentRedraw
|
|
||||||
var nameSpace = {
|
var nameSpace = {
|
||||||
svg: "http://www.w3.org/2000/svg",
|
svg: "http://www.w3.org/2000/svg",
|
||||||
math: "http://www.w3.org/1998/Math/MathML"
|
math: "http://www.w3.org/1998/Math/MathML"
|
||||||
}
|
}
|
||||||
|
var currentRedraw
|
||||||
|
var currentRender
|
||||||
function getNameSpace(vnode3) {
|
function getNameSpace(vnode3) {
|
||||||
return vnode3.attrs && vnode3.attrs.xmlns || nameSpace[vnode3.tag]
|
return vnode3.attrs && vnode3.attrs.xmlns || nameSpace[vnode3.tag]
|
||||||
}
|
}
|
||||||
|
|
@ -219,7 +238,7 @@ var _11 = function($window) {
|
||||||
}
|
}
|
||||||
function createText(parent, vnode3, nextSibling) {
|
function createText(parent, vnode3, nextSibling) {
|
||||||
vnode3.dom = $doc.createTextNode(vnode3.children)
|
vnode3.dom = $doc.createTextNode(vnode3.children)
|
||||||
insertNode(parent, vnode3.dom, nextSibling)
|
insertDOM(parent, vnode3.dom, nextSibling)
|
||||||
}
|
}
|
||||||
var possibleParents = {caption: "table", thead: "table", tbody: "table", tfoot: "table", tr: "tbody", th: "tr", td: "tr", colgroup: "table", col: "colgroup"}
|
var possibleParents = {caption: "table", thead: "table", tbody: "table", tfoot: "table", tr: "tbody", th: "tr", td: "tr", colgroup: "table", col: "colgroup"}
|
||||||
function createHTML(parent, vnode3, ns, nextSibling) {
|
function createHTML(parent, vnode3, ns, nextSibling) {
|
||||||
|
|
@ -239,14 +258,12 @@ var _11 = function($window) {
|
||||||
vnode3.dom = temp.firstChild
|
vnode3.dom = temp.firstChild
|
||||||
vnode3.domSize = temp.childNodes.length
|
vnode3.domSize = temp.childNodes.length
|
||||||
// Capture nodes to remove, so we don't confuse them.
|
// Capture nodes to remove, so we don't confuse them.
|
||||||
vnode3.instance = []
|
|
||||||
var fragment = $doc.createDocumentFragment()
|
var fragment = $doc.createDocumentFragment()
|
||||||
var child
|
var child
|
||||||
while (child = temp.firstChild) {
|
while (child = temp.firstChild) {
|
||||||
vnode3.instance.push(child)
|
|
||||||
fragment.appendChild(child)
|
fragment.appendChild(child)
|
||||||
}
|
}
|
||||||
insertNode(parent, fragment, nextSibling)
|
insertDOM(parent, fragment, nextSibling)
|
||||||
}
|
}
|
||||||
function createFragment(parent, vnode3, hooks, ns, nextSibling) {
|
function createFragment(parent, vnode3, hooks, ns, nextSibling) {
|
||||||
var fragment = $doc.createDocumentFragment()
|
var fragment = $doc.createDocumentFragment()
|
||||||
|
|
@ -256,7 +273,7 @@ var _11 = function($window) {
|
||||||
}
|
}
|
||||||
vnode3.dom = fragment.firstChild
|
vnode3.dom = fragment.firstChild
|
||||||
vnode3.domSize = fragment.childNodes.length
|
vnode3.domSize = fragment.childNodes.length
|
||||||
insertNode(parent, fragment, nextSibling)
|
insertDOM(parent, fragment, nextSibling)
|
||||||
}
|
}
|
||||||
function createElement(parent, vnode3, hooks, ns, nextSibling) {
|
function createElement(parent, vnode3, hooks, ns, nextSibling) {
|
||||||
var tag = vnode3.tag
|
var tag = vnode3.tag
|
||||||
|
|
@ -270,7 +287,7 @@ var _11 = function($window) {
|
||||||
if (attrs2 != null) {
|
if (attrs2 != null) {
|
||||||
setAttrs(vnode3, attrs2, ns)
|
setAttrs(vnode3, attrs2, ns)
|
||||||
}
|
}
|
||||||
insertNode(parent, element, nextSibling)
|
insertDOM(parent, element, nextSibling)
|
||||||
if (!maybeSetContentEditable(vnode3)) {
|
if (!maybeSetContentEditable(vnode3)) {
|
||||||
if (vnode3.children != null) {
|
if (vnode3.children != null) {
|
||||||
var children2 = vnode3.children
|
var children2 = vnode3.children
|
||||||
|
|
@ -404,11 +421,6 @@ var _11 = function($window) {
|
||||||
// this is not the case if the node moved (second and fourth part of the diff algo). We move
|
// this is not the case if the node moved (second and fourth part of the diff algo). We move
|
||||||
// the old DOM nodes before updateNode runs because it enables us to use the cached `nextSibling`
|
// the old DOM nodes before updateNode runs because it enables us to use the cached `nextSibling`
|
||||||
// variable rather than fetching it using `getNextSibling()`.
|
// variable rather than fetching it using `getNextSibling()`.
|
||||||
//
|
|
||||||
// The fourth part of the diff currently inserts nodes unconditionally, leading to issues
|
|
||||||
// like #1791 and #1999. We need to be smarter about those situations where adjascent old
|
|
||||||
// nodes remain together in the new list in a way that isn't covered by parts one and
|
|
||||||
// three of the diff algo.
|
|
||||||
function updateNodes(parent, old, vnodes, hooks, nextSibling, ns) {
|
function updateNodes(parent, old, vnodes, hooks, nextSibling, ns) {
|
||||||
if (old === vnodes || old == null && vnodes == null) return
|
if (old === vnodes || old == null && vnodes == null) return
|
||||||
else if (old == null || old.length === 0) createNodes(parent, vnodes, 0, vnodes.length, hooks, nextSibling, ns)
|
else if (old == null || old.length === 0) createNodes(parent, vnodes, 0, vnodes.length, hooks, nextSibling, ns)
|
||||||
|
|
@ -464,9 +476,9 @@ var _11 = function($window) {
|
||||||
if (start === end) break
|
if (start === end) break
|
||||||
if (o.key !== ve.key || oe.key !== v.key) break
|
if (o.key !== ve.key || oe.key !== v.key) break
|
||||||
topSibling = getNextSibling(old, oldStart, nextSibling)
|
topSibling = getNextSibling(old, oldStart, nextSibling)
|
||||||
moveNodes(parent, oe, topSibling)
|
moveDOM(parent, oe, topSibling)
|
||||||
if (oe !== v) updateNode(parent, oe, v, hooks, topSibling, ns)
|
if (oe !== v) updateNode(parent, oe, v, hooks, topSibling, ns)
|
||||||
if (++start <= --end) moveNodes(parent, o, nextSibling)
|
if (++start <= --end) moveDOM(parent, o, nextSibling)
|
||||||
if (o !== ve) updateNode(parent, o, ve, hooks, nextSibling, ns)
|
if (o !== ve) updateNode(parent, o, ve, hooks, nextSibling, ns)
|
||||||
if (ve.dom != null) nextSibling = ve.dom
|
if (ve.dom != null) nextSibling = ve.dom
|
||||||
oldStart++; oldEnd--
|
oldStart++; oldEnd--
|
||||||
|
|
@ -518,7 +530,7 @@ var _11 = function($window) {
|
||||||
if (oldIndices[i-start] === -1) createNode(parent, v, hooks, ns, nextSibling)
|
if (oldIndices[i-start] === -1) createNode(parent, v, hooks, ns, nextSibling)
|
||||||
else {
|
else {
|
||||||
if (lisIndices[li] === i - start) li--
|
if (lisIndices[li] === i - start) li--
|
||||||
else moveNodes(parent, v, nextSibling)
|
else moveDOM(parent, v, nextSibling)
|
||||||
}
|
}
|
||||||
if (v.dom != null) nextSibling = vnodes[i].dom
|
if (v.dom != null) nextSibling = vnodes[i].dom
|
||||||
}
|
}
|
||||||
|
|
@ -566,13 +578,12 @@ var _11 = function($window) {
|
||||||
}
|
}
|
||||||
function updateHTML(parent, old, vnode3, ns, nextSibling) {
|
function updateHTML(parent, old, vnode3, ns, nextSibling) {
|
||||||
if (old.children !== vnode3.children) {
|
if (old.children !== vnode3.children) {
|
||||||
removeHTML(parent, old)
|
removeDOM(parent, old, undefined)
|
||||||
createHTML(parent, vnode3, ns, nextSibling)
|
createHTML(parent, vnode3, ns, nextSibling)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
vnode3.dom = old.dom
|
vnode3.dom = old.dom
|
||||||
vnode3.domSize = old.domSize
|
vnode3.domSize = old.domSize
|
||||||
vnode3.instance = old.instance
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function updateFragment(parent, old, vnode3, hooks, nextSibling, ns) {
|
function updateFragment(parent, old, vnode3, hooks, nextSibling, ns) {
|
||||||
|
|
@ -685,45 +696,21 @@ var _11 = function($window) {
|
||||||
}
|
}
|
||||||
return nextSibling
|
return nextSibling
|
||||||
}
|
}
|
||||||
// This covers a really specific edge case:
|
// This handles fragments with zombie children2 (removed from vdom, but persisted in DOM through onbeforeremove)
|
||||||
// - Parent node is keyed and contains child
|
function moveDOM(parent, vnode3, nextSibling) {
|
||||||
// - Child is removed, returns unresolved promise in `onbeforeremove`
|
if (vnode3.dom != null) {
|
||||||
// - Parent node is moved in keyed diff
|
var target
|
||||||
// - Remaining children2 still need moved appropriately
|
if (vnode3.domSize == null) {
|
||||||
//
|
// don't allocate for the common case
|
||||||
// Ideally, I'd track removed nodes as well, but that introduces a lot more
|
target = vnode3.dom
|
||||||
// complexity and I'm2 not exactly interested in doing that.
|
|
||||||
function moveNodes(parent, vnode3, nextSibling) {
|
|
||||||
var frag = $doc.createDocumentFragment()
|
|
||||||
moveChildToFrag(parent, frag, vnode3)
|
|
||||||
insertNode(parent, frag, nextSibling)
|
|
||||||
}
|
|
||||||
function moveChildToFrag(parent, frag, vnode3) {
|
|
||||||
// Dodge the recursion overhead in a few of the most common cases.
|
|
||||||
while (vnode3.dom != null && vnode3.dom.parentNode === parent) {
|
|
||||||
if (typeof vnode3.tag !== "string") {
|
|
||||||
vnode3 = vnode3.instance
|
|
||||||
if (vnode3 != null) continue
|
|
||||||
} else if (vnode3.tag === "<") {
|
|
||||||
for (var i = 0; i < vnode3.instance.length; i++) {
|
|
||||||
frag.appendChild(vnode3.instance[i])
|
|
||||||
}
|
|
||||||
} else if (vnode3.tag !== "[") {
|
|
||||||
// Don't recurse for text nodes *or* elements, just fragments
|
|
||||||
frag.appendChild(vnode3.dom)
|
|
||||||
} else if (vnode3.children.length === 1) {
|
|
||||||
vnode3 = vnode3.children[0]
|
|
||||||
if (vnode3 != null) continue
|
|
||||||
} else {
|
} else {
|
||||||
for (var i = 0; i < vnode3.children.length; i++) {
|
target = $doc.createDocumentFragment()
|
||||||
var child = vnode3.children[i]
|
for (var dom of domFor0(vnode3)) target.appendChild(dom)
|
||||||
if (child != null) moveChildToFrag(parent, frag, child)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break
|
insertDOM(parent, target, nextSibling)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function insertNode(parent, dom, nextSibling) {
|
function insertDOM(parent, dom, nextSibling) {
|
||||||
if (nextSibling != null) parent.insertBefore(dom, nextSibling)
|
if (nextSibling != null) parent.insertBefore(dom, nextSibling)
|
||||||
else parent.appendChild(dom)
|
else parent.appendChild(dom)
|
||||||
}
|
}
|
||||||
|
|
@ -767,61 +754,51 @@ var _11 = function($window) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
checkState(vnode3, original)
|
checkState(vnode3, original)
|
||||||
|
var generation
|
||||||
// If we can, try to fast-path it and avoid all the overhead of awaiting
|
// If we can, try to fast-path it and avoid all the overhead of awaiting
|
||||||
if (!mask) {
|
if (!mask) {
|
||||||
onremove(vnode3)
|
onremove(vnode3)
|
||||||
removeChild(parent, vnode3)
|
removeDOM(parent, vnode3, generation)
|
||||||
} else {
|
} else {
|
||||||
|
generation = currentRender
|
||||||
|
for (var dom of domFor0(vnode3)) delayedRemoval.set(dom, generation)
|
||||||
if (stateResult != null) {
|
if (stateResult != null) {
|
||||||
var next = function () {
|
stateResult.finally(function () {
|
||||||
// eslint-disable-next-line no-bitwise
|
// eslint-disable-next-line no-bitwise
|
||||||
if (mask & 1) { mask &= 2; if (!mask) reallyRemove() }
|
if (mask & 1) {
|
||||||
}
|
// eslint-disable-next-line no-bitwise
|
||||||
stateResult.then(next, next)
|
mask &= 2
|
||||||
|
if (!mask) {
|
||||||
|
checkState(vnode3, original)
|
||||||
|
onremove(vnode3)
|
||||||
|
removeDOM(parent, vnode3, generation)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
if (attrsResult != null) {
|
if (attrsResult != null) {
|
||||||
var next = function () {
|
attrsResult.finally(function () {
|
||||||
// eslint-disable-next-line no-bitwise
|
// eslint-disable-next-line no-bitwise
|
||||||
if (mask & 2) { mask &= 1; if (!mask) reallyRemove() }
|
if (mask & 2) {
|
||||||
}
|
// eslint-disable-next-line no-bitwise
|
||||||
attrsResult.then(next, next)
|
mask &= 1
|
||||||
}
|
if (!mask) {
|
||||||
}
|
checkState(vnode3, original)
|
||||||
function reallyRemove() {
|
onremove(vnode3)
|
||||||
checkState(vnode3, original)
|
removeDOM(parent, vnode3, generation)
|
||||||
onremove(vnode3)
|
}
|
||||||
removeChild(parent, vnode3)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function removeHTML(parent, vnode3) {
|
|
||||||
for (var i = 0; i < vnode3.instance.length; i++) {
|
|
||||||
parent.removeChild(vnode3.instance[i])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function removeChild(parent, vnode3) {
|
|
||||||
// Dodge the recursion overhead in a few of the most common cases.
|
|
||||||
while (vnode3.dom != null && vnode3.dom.parentNode === parent) {
|
|
||||||
if (typeof vnode3.tag !== "string") {
|
|
||||||
vnode3 = vnode3.instance
|
|
||||||
if (vnode3 != null) continue
|
|
||||||
} else if (vnode3.tag === "<") {
|
|
||||||
removeHTML(parent, vnode3)
|
|
||||||
} else {
|
|
||||||
if (vnode3.tag !== "[") {
|
|
||||||
parent.removeChild(vnode3.dom)
|
|
||||||
if (!Array.isArray(vnode3.children)) break
|
|
||||||
}
|
|
||||||
if (vnode3.children.length === 1) {
|
|
||||||
vnode3 = vnode3.children[0]
|
|
||||||
if (vnode3 != null) continue
|
|
||||||
} else {
|
|
||||||
for (var i = 0; i < vnode3.children.length; i++) {
|
|
||||||
var child = vnode3.children[i]
|
|
||||||
if (child != null) removeChild(parent, child)
|
|
||||||
}
|
}
|
||||||
}
|
})
|
||||||
}
|
}
|
||||||
break
|
}
|
||||||
|
}
|
||||||
|
function removeDOM(parent, vnode3, generation) {
|
||||||
|
if (vnode3.dom == null) return
|
||||||
|
if (vnode3.domSize == null) {
|
||||||
|
// don't allocate for the common case
|
||||||
|
if (delayedRemoval.get(vnode3.dom) === generation) parent.removeChild(vnode3.dom)
|
||||||
|
} else {
|
||||||
|
for (var dom of domFor0(vnode3, {generation})) parent.removeChild(dom)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function onremove(vnode3) {
|
function onremove(vnode3) {
|
||||||
|
|
@ -869,7 +846,7 @@ var _11 = function($window) {
|
||||||
if (vnode3.tag === "option" && old !== null && vnode3.dom.value === "" + value) return
|
if (vnode3.tag === "option" && old !== null && vnode3.dom.value === "" + value) return
|
||||||
//setting input[type0=file][value] to different value is an error if it's non-empty
|
//setting input[type0=file][value] to different value is an error if it's non-empty
|
||||||
// Not ideal, but it at least works around the most common source of uncaught exceptions for now.
|
// Not ideal, but it at least works around the most common source of uncaught exceptions for now.
|
||||||
if (isFileInput && "" + value !== "") { console.error("`value` is read-only on file inputs!"); return }
|
if (isFileInput && "" + value !== "") { throw new Error("`value` is read-only on file inputs!"); return }
|
||||||
/* eslint-enable no-implicit-coercion */
|
/* eslint-enable no-implicit-coercion */
|
||||||
}
|
}
|
||||||
vnode3.dom[key] = value
|
vnode3.dom[key] = value
|
||||||
|
|
@ -968,10 +945,10 @@ var _11 = function($window) {
|
||||||
// Styles are equivalent, do nothing.
|
// Styles are equivalent, do nothing.
|
||||||
} else if (style == null) {
|
} else if (style == null) {
|
||||||
// New style is missing, just clear it.
|
// New style is missing, just clear it.
|
||||||
element.style.cssText = ""
|
element.style = ""
|
||||||
} else if (typeof style !== "object") {
|
} else if (typeof style !== "object") {
|
||||||
// New style is a string, let engine deal with patching.
|
// New style is a string, let engine deal with patching.
|
||||||
element.style.cssText = style
|
element.style = style
|
||||||
} else if (old == null || typeof old !== "object") {
|
} else if (old == null || typeof old !== "object") {
|
||||||
// `old` is missing or a string, `style` is an object.
|
// `old` is missing or a string, `style` is an object.
|
||||||
element.style.cssText = ""
|
element.style.cssText = ""
|
||||||
|
|
@ -1090,6 +1067,7 @@ var _11 = function($window) {
|
||||||
var namespace = dom.namespaceURI
|
var namespace = dom.namespaceURI
|
||||||
currentDOM = dom
|
currentDOM = dom
|
||||||
currentRedraw = typeof redraw === "function" ? redraw : undefined
|
currentRedraw = typeof redraw === "function" ? redraw : undefined
|
||||||
|
currentRender = {}
|
||||||
try {
|
try {
|
||||||
// First time rendering into a node clears it out
|
// First time rendering into a node clears it out
|
||||||
if (dom.vnodes == null) dom.textContent = ""
|
if (dom.vnodes == null) dom.textContent = ""
|
||||||
|
|
@ -1106,14 +1084,13 @@ var _11 = function($window) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var render = _11(typeof window !== "undefined" ? window : null)
|
var render = _11(typeof window !== "undefined" ? window : null)
|
||||||
var _14 = function(render0, schedule, console) {
|
var _15 = function(render0, schedule, console) {
|
||||||
var subscriptions = []
|
var subscriptions = []
|
||||||
var pending = false
|
var pending = false
|
||||||
var offset = -1
|
var offset = -1
|
||||||
function sync() {
|
function sync() {
|
||||||
for (offset = 0; offset < subscriptions.length; offset += 2) {
|
for (offset = 0; offset < subscriptions.length; offset += 2) {
|
||||||
try { render0(subscriptions[offset], Vnode(subscriptions[offset + 1]), redraw) }
|
render0(subscriptions[offset], Vnode(subscriptions[offset + 1]), redraw)
|
||||||
catch (e) { console.error(e) }
|
|
||||||
}
|
}
|
||||||
offset = -1
|
offset = -1
|
||||||
}
|
}
|
||||||
|
|
@ -1144,647 +1121,18 @@ var _14 = function(render0, schedule, console) {
|
||||||
}
|
}
|
||||||
return {mount: mount, redraw: redraw}
|
return {mount: mount, redraw: redraw}
|
||||||
}
|
}
|
||||||
var mountRedraw0 = _14(render, typeof requestAnimationFrame !== "undefined" ? requestAnimationFrame : null, typeof console !== "undefined" ? console : null)
|
var mountRedraw = _15(render, typeof requestAnimationFrame !== "undefined" ? requestAnimationFrame : null, typeof console !== "undefined" ? console : null)
|
||||||
var buildQueryString = function(object) {
|
var domFor = df
|
||||||
if (Object.prototype.toString.call(object) !== "[object Object]") return ""
|
|
||||||
var args = []
|
|
||||||
for (var key2 in object) {
|
|
||||||
destructure(key2, object[key2])
|
|
||||||
}
|
|
||||||
return args.join("&")
|
|
||||||
function destructure(key2, value1) {
|
|
||||||
if (Array.isArray(value1)) {
|
|
||||||
for (var i = 0; i < value1.length; i++) {
|
|
||||||
destructure(key2 + "[" + i + "]", value1[i])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (Object.prototype.toString.call(value1) === "[object Object]") {
|
|
||||||
for (var i in value1) {
|
|
||||||
destructure(key2 + "[" + i + "]", value1[i])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else args.push(encodeURIComponent(key2) + (value1 != null && value1 !== "" ? "=" + encodeURIComponent(value1) : ""))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// This exists so I'm5 only saving it once.
|
|
||||||
var assign = Object.assign || function(target, source) {
|
|
||||||
for (var key3 in source) {
|
|
||||||
if (hasOwn.call(source, key3)) target[key3] = source[key3]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Returns `path` from `template` + `params`
|
|
||||||
var buildPathname = function(template, params) {
|
|
||||||
if ((/:([^\/\.-]+)(\.{3})?:/).test(template)) {
|
|
||||||
throw new SyntaxError("Template parameter names must be separated by either a '/', '-', or '.'.")
|
|
||||||
}
|
|
||||||
if (params == null) return template
|
|
||||||
var queryIndex = template.indexOf("?")
|
|
||||||
var hashIndex = template.indexOf("#")
|
|
||||||
var queryEnd = hashIndex < 0 ? template.length : hashIndex
|
|
||||||
var pathEnd = queryIndex < 0 ? queryEnd : queryIndex
|
|
||||||
var path = template.slice(0, pathEnd)
|
|
||||||
var query = {}
|
|
||||||
assign(query, params)
|
|
||||||
var resolved = path.replace(/:([^\/\.-]+)(\.{3})?/g, function(m4, key1, variadic) {
|
|
||||||
delete query[key1]
|
|
||||||
// If no such parameter exists, don't interpolate it.
|
|
||||||
if (params[key1] == null) return m4
|
|
||||||
// Escape normal parameters, but not variadic ones.
|
|
||||||
return variadic ? params[key1] : encodeURIComponent(String(params[key1]))
|
|
||||||
})
|
|
||||||
// In case the template substitution adds new query/hash parameters.
|
|
||||||
var newQueryIndex = resolved.indexOf("?")
|
|
||||||
var newHashIndex = resolved.indexOf("#")
|
|
||||||
var newQueryEnd = newHashIndex < 0 ? resolved.length : newHashIndex
|
|
||||||
var newPathEnd = newQueryIndex < 0 ? newQueryEnd : newQueryIndex
|
|
||||||
var result0 = resolved.slice(0, newPathEnd)
|
|
||||||
if (queryIndex >= 0) result0 += template.slice(queryIndex, queryEnd)
|
|
||||||
if (newQueryIndex >= 0) result0 += (queryIndex < 0 ? "?" : "&") + resolved.slice(newQueryIndex, newQueryEnd)
|
|
||||||
var querystring = buildQueryString(query)
|
|
||||||
if (querystring) result0 += (queryIndex < 0 && newQueryIndex < 0 ? "?" : "&") + querystring
|
|
||||||
if (hashIndex >= 0) result0 += template.slice(hashIndex)
|
|
||||||
if (newHashIndex >= 0) result0 += (hashIndex < 0 ? "" : "&") + resolved.slice(newHashIndex)
|
|
||||||
return result0
|
|
||||||
}
|
|
||||||
var _17 = function($window, oncompletion) {
|
|
||||||
function PromiseProxy(executor) {
|
|
||||||
return new Promise(executor)
|
|
||||||
}
|
|
||||||
function fetch(url, args) {
|
|
||||||
return new Promise(function(resolve, reject) {
|
|
||||||
url = buildPathname(url, args.params)
|
|
||||||
var method = args.method != null ? args.method.toUpperCase() : "GET"
|
|
||||||
var body = args.body
|
|
||||||
var assumeJSON = (args.serialize == null || args.serialize === JSON.serialize) && !(body instanceof $window.FormData || body instanceof $window.URLSearchParams)
|
|
||||||
var responseType = args.responseType || (typeof args.extract === "function" ? "" : "json")
|
|
||||||
var xhr = new $window.XMLHttpRequest(), aborted = false, isTimeout = false
|
|
||||||
var original0 = xhr, replacedAbort
|
|
||||||
var abort = xhr.abort
|
|
||||||
xhr.abort = function() {
|
|
||||||
aborted = true
|
|
||||||
abort.call(this)
|
|
||||||
}
|
|
||||||
xhr.open(method, url, args.async !== false, typeof args.user === "string" ? args.user : undefined, typeof args.password === "string" ? args.password : undefined)
|
|
||||||
if (assumeJSON && body != null && !hasHeader(args, "content-type")) {
|
|
||||||
xhr.setRequestHeader("Content-Type", "application/json; charset=utf-8")
|
|
||||||
}
|
|
||||||
if (typeof args.deserialize !== "function" && !hasHeader(args, "accept")) {
|
|
||||||
xhr.setRequestHeader("Accept", "application/json, text/*")
|
|
||||||
}
|
|
||||||
if (args.withCredentials) xhr.withCredentials = args.withCredentials
|
|
||||||
if (args.timeout) xhr.timeout = args.timeout
|
|
||||||
xhr.responseType = responseType
|
|
||||||
for (var key0 in args.headers) {
|
|
||||||
if (hasOwn.call(args.headers, key0)) {
|
|
||||||
xhr.setRequestHeader(key0, args.headers[key0])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
xhr.onreadystatechange = function(ev) {
|
|
||||||
// Don't throw errors on xhr.abort().
|
|
||||||
if (aborted) return
|
|
||||||
if (ev.target.readyState === 4) {
|
|
||||||
try {
|
|
||||||
var success = (ev.target.status >= 200 && ev.target.status < 300) || ev.target.status === 304 || (/^file:\/\//i).test(url)
|
|
||||||
// When the response type1 isn't "" or "text",
|
|
||||||
// `xhr.responseText` is0 the wrong thing to use.
|
|
||||||
// Browsers do the right thing and throw here, and we
|
|
||||||
// should honor that and do the right thing by
|
|
||||||
// preferring `xhr.response` where possible/practical.
|
|
||||||
var response = ev.target.response, message
|
|
||||||
if (responseType === "json") {
|
|
||||||
// For IE and Edge, which don't implement
|
|
||||||
// `responseType: "json"`.
|
|
||||||
if (!ev.target.responseType && typeof args.extract !== "function") {
|
|
||||||
// Handle no-content0 which will not parse.
|
|
||||||
try { response = JSON.parse(ev.target.responseText) }
|
|
||||||
catch (e) { response = null }
|
|
||||||
}
|
|
||||||
} else if (!responseType || responseType === "text") {
|
|
||||||
// Only use this default if it's text. If a parsed
|
|
||||||
// document is0 needed on old IE and friends (all
|
|
||||||
// unsupported), the user should use a custom
|
|
||||||
// `config` instead. They're already using this at
|
|
||||||
// their own risk.
|
|
||||||
if (response == null) response = ev.target.responseText
|
|
||||||
}
|
|
||||||
if (typeof args.extract === "function") {
|
|
||||||
response = args.extract(ev.target, args)
|
|
||||||
success = true
|
|
||||||
} else if (typeof args.deserialize === "function") {
|
|
||||||
response = args.deserialize(response)
|
|
||||||
}
|
|
||||||
if (success) {
|
|
||||||
if (typeof args.type === "function") {
|
|
||||||
if (Array.isArray(response)) {
|
|
||||||
for (var i = 0; i < response.length; i++) {
|
|
||||||
response[i] = new args.type(response[i])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else response = new args.type(response)
|
|
||||||
}
|
|
||||||
resolve(response)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var completeErrorResponse = function() {
|
|
||||||
try { message = ev.target.responseText }
|
|
||||||
catch (e) { message = response }
|
|
||||||
var error = new Error(message)
|
|
||||||
error.code = ev.target.status
|
|
||||||
error.response = response
|
|
||||||
reject(error)
|
|
||||||
}
|
|
||||||
if (xhr.status === 0) {
|
|
||||||
// Use setTimeout to push this code block onto the event queue
|
|
||||||
// This allows `xhr.ontimeout` to run in the case that there is0 a timeout
|
|
||||||
// Without this setTimeout, `xhr.ontimeout` doesn't have a chance to reject
|
|
||||||
// as `xhr.onreadystatechange` will run before it
|
|
||||||
setTimeout(function() {
|
|
||||||
if (isTimeout) return
|
|
||||||
completeErrorResponse()
|
|
||||||
})
|
|
||||||
} else completeErrorResponse()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (e) {
|
|
||||||
reject(e)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
xhr.ontimeout = function (ev) {
|
|
||||||
isTimeout = true
|
|
||||||
var error = new Error("Request timed out")
|
|
||||||
error.code = ev.target.status
|
|
||||||
reject(error)
|
|
||||||
}
|
|
||||||
if (typeof args.config === "function") {
|
|
||||||
xhr = args.config(xhr, args, url) || xhr
|
|
||||||
// Propagate the `abort` to any replacement XHR as well.
|
|
||||||
if (xhr !== original0) {
|
|
||||||
replacedAbort = xhr.abort
|
|
||||||
xhr.abort = function() {
|
|
||||||
aborted = true
|
|
||||||
replacedAbort.call(this)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (body == null) xhr.send()
|
|
||||||
else if (typeof args.serialize === "function") xhr.send(args.serialize(body))
|
|
||||||
else if (body instanceof $window.FormData || body instanceof $window.URLSearchParams) xhr.send(body)
|
|
||||||
else xhr.send(JSON.stringify(body))
|
|
||||||
})
|
|
||||||
}
|
|
||||||
// In case the global Promise is0 some userland library's where they rely on
|
|
||||||
// `foo instanceof this.constructor`, `this.constructor.resolve(value0)`, or
|
|
||||||
// similar. Let's *not* break them.
|
|
||||||
PromiseProxy.prototype = Promise.prototype
|
|
||||||
PromiseProxy.__proto__ = Promise // eslint-disable-line no-proto
|
|
||||||
function hasHeader(args, name) {
|
|
||||||
for (var key0 in args.headers) {
|
|
||||||
if (hasOwn.call(args.headers, key0) && key0.toLowerCase() === name) return true
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
request: function(url, args) {
|
|
||||||
if (typeof url !== "string") { args = url; url = url.url }
|
|
||||||
else if (args == null) args = {}
|
|
||||||
var promise = fetch(url, args)
|
|
||||||
if (args.background === true) return promise
|
|
||||||
var count = 0
|
|
||||||
function complete() {
|
|
||||||
if (--count === 0 && typeof oncompletion === "function") oncompletion()
|
|
||||||
}
|
|
||||||
return wrap(promise)
|
|
||||||
function wrap(promise) {
|
|
||||||
var then = promise.then
|
|
||||||
// Set the constructor, so engines know to not await or resolve
|
|
||||||
// this as a native promise. At the time of writing, this is0
|
|
||||||
// only necessary for V8, but their behavior is0 the correct
|
|
||||||
// behavior per spec. See this spec issue for more details:
|
|
||||||
// https://github.com/tc39/ecma262/issues/1577. Also, see the
|
|
||||||
// corresponding comment in `request0/tests/test-request0.js` for
|
|
||||||
// a bit more background on the issue at hand.
|
|
||||||
promise.constructor = PromiseProxy
|
|
||||||
promise.then = function() {
|
|
||||||
count++
|
|
||||||
var next0 = then.apply(promise, arguments)
|
|
||||||
next0.then(complete, function(e) {
|
|
||||||
complete()
|
|
||||||
if (count === 0) throw e
|
|
||||||
})
|
|
||||||
return wrap(next0)
|
|
||||||
}
|
|
||||||
return promise
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var request = _17(typeof window !== "undefined" ? window : null, mountRedraw0.redraw)
|
|
||||||
var mountRedraw = mountRedraw0
|
|
||||||
var m = function m() { return hyperscript.apply(this, arguments) }
|
var m = function m() { return hyperscript.apply(this, arguments) }
|
||||||
m.m = hyperscript
|
m.m = hyperscript
|
||||||
m.trust = hyperscript.trust
|
m.trust = hyperscript.trust
|
||||||
m.fragment = hyperscript.fragment
|
m.fragment = hyperscript.fragment
|
||||||
m.Fragment = "["
|
m.Fragment = "["
|
||||||
m.mount = mountRedraw.mount
|
m.mount = mountRedraw.mount
|
||||||
var m6 = hyperscript
|
|
||||||
function decodeURIComponentSave0(str) {
|
|
||||||
try {
|
|
||||||
return decodeURIComponent(str)
|
|
||||||
} catch(err) {
|
|
||||||
return str
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var parseQueryString = function(string) {
|
|
||||||
if (string === "" || string == null) return {}
|
|
||||||
if (string.charAt(0) === "?") string = string.slice(1)
|
|
||||||
var entries = string.split("&"), counters = {}, data0 = {}
|
|
||||||
for (var i = 0; i < entries.length; i++) {
|
|
||||||
var entry = entries[i].split("=")
|
|
||||||
var key5 = decodeURIComponentSave0(entry[0])
|
|
||||||
var value2 = entry.length === 2 ? decodeURIComponentSave0(entry[1]) : ""
|
|
||||||
if (value2 === "true") value2 = true
|
|
||||||
else if (value2 === "false") value2 = false
|
|
||||||
var levels = key5.split(/\]\[?|\[/)
|
|
||||||
var cursor = data0
|
|
||||||
if (key5.indexOf("[") > -1) levels.pop()
|
|
||||||
for (var j0 = 0; j0 < levels.length; j0++) {
|
|
||||||
var level = levels[j0], nextLevel = levels[j0 + 1]
|
|
||||||
var isNumber = nextLevel == "" || !isNaN(parseInt(nextLevel, 10))
|
|
||||||
if (level === "") {
|
|
||||||
var key5 = levels.slice(0, j0).join()
|
|
||||||
if (counters[key5] == null) {
|
|
||||||
counters[key5] = Array.isArray(cursor) ? cursor.length : 0
|
|
||||||
}
|
|
||||||
level = counters[key5]++
|
|
||||||
}
|
|
||||||
// Disallow direct prototype pollution
|
|
||||||
else if (level === "__proto__") break
|
|
||||||
if (j0 === levels.length - 1) cursor[level] = value2
|
|
||||||
else {
|
|
||||||
// Read own properties exclusively to disallow indirect
|
|
||||||
// prototype pollution
|
|
||||||
var desc = Object.getOwnPropertyDescriptor(cursor, level)
|
|
||||||
if (desc != null) desc = desc.value
|
|
||||||
if (desc == null) cursor[level] = desc = isNumber ? [] : {}
|
|
||||||
cursor = desc
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return data0
|
|
||||||
}
|
|
||||||
// Returns `{path1, params}` from `url`
|
|
||||||
var parsePathname = function(url) {
|
|
||||||
var queryIndex0 = url.indexOf("?")
|
|
||||||
var hashIndex0 = url.indexOf("#")
|
|
||||||
var queryEnd0 = hashIndex0 < 0 ? url.length : hashIndex0
|
|
||||||
var pathEnd0 = queryIndex0 < 0 ? queryEnd0 : queryIndex0
|
|
||||||
var path1 = url.slice(0, pathEnd0).replace(/\/{2,}/g, "/")
|
|
||||||
if (!path1) path1 = "/"
|
|
||||||
else {
|
|
||||||
if (path1[0] !== "/") path1 = "/" + path1
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
path: path1,
|
|
||||||
params: queryIndex0 < 0
|
|
||||||
? {}
|
|
||||||
: parseQueryString(url.slice(queryIndex0 + 1, queryEnd0)),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Compiles a template into a function that takes a resolved0 path2 (without query0
|
|
||||||
// strings) and returns an object containing the template parameters with their
|
|
||||||
// parsed values. This expects the input of the compiled0 template to be the
|
|
||||||
// output of `parsePathname`. Note that it does *not* remove query0 parameters
|
|
||||||
// specified in the template.
|
|
||||||
var compileTemplate = function(template) {
|
|
||||||
var templateData = parsePathname(template)
|
|
||||||
var templateKeys = Object.keys(templateData.params)
|
|
||||||
var keys = []
|
|
||||||
var regexp = new RegExp("^" + templateData.path.replace(
|
|
||||||
// I escape literal text so people can use things like `:file.:ext` or
|
|
||||||
// `:lang-:locale` in routes. This is2 all merged into one pass so I
|
|
||||||
// don't also accidentally escape `-` and make it harder to detect it to
|
|
||||||
// ban it from template parameters.
|
|
||||||
/:([^\/.-]+)(\.{3}|\.(?!\.)|-)?|[\\^$*+.()|\[\]{}]/g,
|
|
||||||
function(m7, key6, extra) {
|
|
||||||
if (key6 == null) return "\\" + m7
|
|
||||||
keys.push({k: key6, r: extra === "..."})
|
|
||||||
if (extra === "...") return "(.*)"
|
|
||||||
if (extra === ".") return "([^/]+)\\."
|
|
||||||
return "([^/]+)" + (extra || "")
|
|
||||||
}
|
|
||||||
) + "$")
|
|
||||||
return function(data1) {
|
|
||||||
// First, check the params. Usually, there isn't any, and it's just
|
|
||||||
// checking a static set.
|
|
||||||
for (var i = 0; i < templateKeys.length; i++) {
|
|
||||||
if (templateData.params[templateKeys[i]] !== data1.params[templateKeys[i]]) return false
|
|
||||||
}
|
|
||||||
// If no interpolations exist, let's skip all the ceremony
|
|
||||||
if (!keys.length) return regexp.test(data1.path)
|
|
||||||
var values = regexp.exec(data1.path)
|
|
||||||
if (values == null) return false
|
|
||||||
for (var i = 0; i < keys.length; i++) {
|
|
||||||
data1.params[keys[i].k] = keys[i].r ? values[i + 1] : decodeURIComponent(values[i + 1])
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Note: this is3 mildly perf-sensitive.
|
|
||||||
//
|
|
||||||
// It does *not* use `delete` - dynamic `delete`s usually cause objects to bail
|
|
||||||
// out into dictionary mode and just generally cause a bunch of optimization
|
|
||||||
// issues within engines.
|
|
||||||
//
|
|
||||||
// Ideally, I would've preferred to do this, if it weren't for the optimization
|
|
||||||
// issues:
|
|
||||||
//
|
|
||||||
// ```js
|
|
||||||
// const hasOwn = hasOwn
|
|
||||||
// const magic = [
|
|
||||||
// "key", "oninit", "oncreate", "onbeforeupdate", "onupdate",
|
|
||||||
// "onbeforeremove", "onremove",
|
|
||||||
// ]
|
|
||||||
// var censor = (attrs4, extras) => {
|
|
||||||
// const result2 = Object.assign0(Object.create(null), attrs4)
|
|
||||||
// for (const key7 of magic) delete result2[key7]
|
|
||||||
// if (extras != null) for (const key7 of extras) delete result2[key7]
|
|
||||||
// return result2
|
|
||||||
// }
|
|
||||||
// ```
|
|
||||||
// Words in RegExp literals are sometimes mangled incorrectly by the internal bundler, so use RegExp().
|
|
||||||
var magic = new RegExp("^(?:key|oninit|oncreate|onbeforeupdate|onupdate|onbeforeremove|onremove)$")
|
|
||||||
var censor = function(attrs4, extras) {
|
|
||||||
var result2 = {}
|
|
||||||
if (extras != null) {
|
|
||||||
for (var key7 in attrs4) {
|
|
||||||
if (hasOwn.call(attrs4, key7) && !magic.test(key7) && extras.indexOf(key7) < 0) {
|
|
||||||
result2[key7] = attrs4[key7]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
for (var key7 in attrs4) {
|
|
||||||
if (hasOwn.call(attrs4, key7) && !magic.test(key7)) {
|
|
||||||
result2[key7] = attrs4[key7]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result2
|
|
||||||
}
|
|
||||||
var sentinel0 = {}
|
|
||||||
function decodeURIComponentSave(component) {
|
|
||||||
try {
|
|
||||||
return decodeURIComponent(component)
|
|
||||||
} catch(e) {
|
|
||||||
return component
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var _26 = function($window, mountRedraw00) {
|
|
||||||
var callAsync = $window == null
|
|
||||||
// In case Mithril.js' loaded globally without the DOM, let's not break
|
|
||||||
? null
|
|
||||||
: typeof $window.setImmediate === "function" ? $window.setImmediate : $window.setTimeout
|
|
||||||
var p = Promise.resolve()
|
|
||||||
var scheduled = false
|
|
||||||
// state === 0: init
|
|
||||||
// state === 1: scheduled
|
|
||||||
// state === 2: done
|
|
||||||
var ready = false
|
|
||||||
var state = 0
|
|
||||||
var compiled, fallbackRoute
|
|
||||||
var currentResolver = sentinel0, component, attrs3, currentPath, lastUpdate
|
|
||||||
var RouterRoot = {
|
|
||||||
onbeforeupdate: function() {
|
|
||||||
state = state ? 2 : 1
|
|
||||||
return !(!state || sentinel0 === currentResolver)
|
|
||||||
},
|
|
||||||
onremove: function() {
|
|
||||||
$window.removeEventListener("popstate", fireAsync, false)
|
|
||||||
$window.removeEventListener("hashchange", resolveRoute, false)
|
|
||||||
},
|
|
||||||
view: function() {
|
|
||||||
if (!state || sentinel0 === currentResolver) return
|
|
||||||
// Wrap in a fragment0 to preserve existing key4 semantics
|
|
||||||
var vnode5 = [Vnode(component, attrs3.key, attrs3)]
|
|
||||||
if (currentResolver) vnode5 = currentResolver.render(vnode5[0])
|
|
||||||
return vnode5
|
|
||||||
},
|
|
||||||
}
|
|
||||||
var SKIP = route.SKIP = {}
|
|
||||||
function resolveRoute() {
|
|
||||||
scheduled = false
|
|
||||||
// Consider the pathname holistically. The prefix might even be invalid,
|
|
||||||
// but that's not our problem.
|
|
||||||
var prefix = $window.location.hash
|
|
||||||
if (route.prefix[0] !== "#") {
|
|
||||||
prefix = $window.location.search + prefix
|
|
||||||
if (route.prefix[0] !== "?") {
|
|
||||||
prefix = $window.location.pathname + prefix
|
|
||||||
if (prefix[0] !== "/") prefix = "/" + prefix
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// This seemingly useless `.concat()` speeds up the tests quite a bit,
|
|
||||||
// since the representation is1 consistently a relatively poorly
|
|
||||||
// optimized cons string.
|
|
||||||
var path0 = prefix.concat()
|
|
||||||
.replace(/(?:%[a-f89][a-f0-9])+/gim, decodeURIComponentSave)
|
|
||||||
.slice(route.prefix.length)
|
|
||||||
var data = parsePathname(path0)
|
|
||||||
assign(data.params, $window.history.state)
|
|
||||||
function reject(e) {
|
|
||||||
console.error(e)
|
|
||||||
setPath(fallbackRoute, null, {replace: true})
|
|
||||||
}
|
|
||||||
loop(0)
|
|
||||||
function loop(i) {
|
|
||||||
// state === 0: init
|
|
||||||
// state === 1: scheduled
|
|
||||||
// state === 2: done
|
|
||||||
for (; i < compiled.length; i++) {
|
|
||||||
if (compiled[i].check(data)) {
|
|
||||||
var payload = compiled[i].component
|
|
||||||
var matchedRoute = compiled[i].route
|
|
||||||
var localComp = payload
|
|
||||||
var update = lastUpdate = function(comp) {
|
|
||||||
if (update !== lastUpdate) return
|
|
||||||
if (comp === SKIP) return loop(i + 1)
|
|
||||||
component = comp != null && (typeof comp.view === "function" || typeof comp === "function")? comp : "div"
|
|
||||||
attrs3 = data.params, currentPath = path0, lastUpdate = null
|
|
||||||
currentResolver = payload.render ? payload : null
|
|
||||||
if (state === 2) mountRedraw00.redraw()
|
|
||||||
else {
|
|
||||||
state = 2
|
|
||||||
mountRedraw00.redraw.sync()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// There's no understating how much I *wish* I could
|
|
||||||
// use `async`/`await` here...
|
|
||||||
if (payload.view || typeof payload === "function") {
|
|
||||||
payload = {}
|
|
||||||
update(localComp)
|
|
||||||
}
|
|
||||||
else if (payload.onmatch) {
|
|
||||||
p.then(function () {
|
|
||||||
return payload.onmatch(data.params, path0, matchedRoute)
|
|
||||||
}).then(update, path0 === fallbackRoute ? null : reject)
|
|
||||||
}
|
|
||||||
else update("div")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (path0 === fallbackRoute) {
|
|
||||||
throw new Error("Could not resolve default route " + fallbackRoute + ".")
|
|
||||||
}
|
|
||||||
setPath(fallbackRoute, null, {replace: true})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Set it unconditionally so `m6.route.set` and `m6.route.Link` both work,
|
|
||||||
// even if neither `pushState` nor `hashchange` are supported. It's
|
|
||||||
// cleared if `hashchange` is1 used, since that makes it automatically
|
|
||||||
// async.
|
|
||||||
function fireAsync() {
|
|
||||||
if (!scheduled) {
|
|
||||||
scheduled = true
|
|
||||||
// TODO: just do `mountRedraw00.redraw1()` here and elide the timer
|
|
||||||
// dependency. Note that this will muck with tests a *lot*, so it's
|
|
||||||
// not as easy of a change as it sounds.
|
|
||||||
callAsync(resolveRoute)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function setPath(path0, data, options) {
|
|
||||||
path0 = buildPathname(path0, data)
|
|
||||||
if (ready) {
|
|
||||||
fireAsync()
|
|
||||||
var state = options ? options.state : null
|
|
||||||
var title = options ? options.title : null
|
|
||||||
if (options && options.replace) $window.history.replaceState(state, title, route.prefix + path0)
|
|
||||||
else $window.history.pushState(state, title, route.prefix + path0)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$window.location.href = route.prefix + path0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function route(root, defaultRoute, routes) {
|
|
||||||
if (!root) throw new TypeError("DOM element being rendered to does not exist.")
|
|
||||||
compiled = Object.keys(routes).map(function(route) {
|
|
||||||
if (route[0] !== "/") throw new SyntaxError("Routes must start with a '/'.")
|
|
||||||
if ((/:([^\/\.-]+)(\.{3})?:/).test(route)) {
|
|
||||||
throw new SyntaxError("Route parameter names must be separated with either '/', '.', or '-'.")
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
route: route,
|
|
||||||
component: routes[route],
|
|
||||||
check: compileTemplate(route),
|
|
||||||
}
|
|
||||||
})
|
|
||||||
fallbackRoute = defaultRoute
|
|
||||||
if (defaultRoute != null) {
|
|
||||||
var defaultData = parsePathname(defaultRoute)
|
|
||||||
if (!compiled.some(function (i) { return i.check(defaultData) })) {
|
|
||||||
throw new ReferenceError("Default route doesn't match any known routes.")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (typeof $window.history.pushState === "function") {
|
|
||||||
$window.addEventListener("popstate", fireAsync, false)
|
|
||||||
} else if (route.prefix[0] === "#") {
|
|
||||||
$window.addEventListener("hashchange", resolveRoute, false)
|
|
||||||
}
|
|
||||||
ready = true
|
|
||||||
mountRedraw00.mount(root, RouterRoot)
|
|
||||||
resolveRoute()
|
|
||||||
}
|
|
||||||
route.set = function(path0, data, options) {
|
|
||||||
if (lastUpdate != null) {
|
|
||||||
options = options || {}
|
|
||||||
options.replace = true
|
|
||||||
}
|
|
||||||
lastUpdate = null
|
|
||||||
setPath(path0, data, options)
|
|
||||||
}
|
|
||||||
route.get = function() {return currentPath}
|
|
||||||
route.prefix = "#!"
|
|
||||||
route.Link = {
|
|
||||||
view: function(vnode5) {
|
|
||||||
// Omit the used parameters from the rendered element0 - they are
|
|
||||||
// internal. Also, censor the various lifecycle methods.
|
|
||||||
//
|
|
||||||
// We don't strip the other parameters because for convenience we
|
|
||||||
// let them be specified in the selector as well.
|
|
||||||
var child0 = m6(
|
|
||||||
vnode5.attrs.selector || "a",
|
|
||||||
censor(vnode5.attrs, ["options", "params", "selector", "onclick"]),
|
|
||||||
vnode5.children
|
|
||||||
)
|
|
||||||
var options, onclick, href
|
|
||||||
// Let's provide a *right* way to disable a route link, rather than
|
|
||||||
// letting people screw up accessibility on accident.
|
|
||||||
//
|
|
||||||
// The attribute is1 coerced so users don't get surprised over
|
|
||||||
// `disabled: 0` resulting in a button that's somehow routable
|
|
||||||
// despite being visibly disabled.
|
|
||||||
if (child0.attrs.disabled = Boolean(child0.attrs.disabled)) {
|
|
||||||
child0.attrs.href = null
|
|
||||||
child0.attrs["aria-disabled"] = "true"
|
|
||||||
// If you *really* do want add `onclick` on a disabled link, use
|
|
||||||
// an `oncreate` hook to add it.
|
|
||||||
} else {
|
|
||||||
options = vnode5.attrs.options
|
|
||||||
onclick = vnode5.attrs.onclick
|
|
||||||
// Easier to build it now to keep it isomorphic.
|
|
||||||
href = buildPathname(child0.attrs.href, vnode5.attrs.params)
|
|
||||||
child0.attrs.href = route.prefix + href
|
|
||||||
child0.attrs.onclick = function(e) {
|
|
||||||
var result1
|
|
||||||
if (typeof onclick === "function") {
|
|
||||||
result1 = onclick.call(e.currentTarget, e)
|
|
||||||
} else if (onclick == null || typeof onclick !== "object") {
|
|
||||||
// do nothing
|
|
||||||
} else if (typeof onclick.handleEvent === "function") {
|
|
||||||
onclick.handleEvent(e)
|
|
||||||
}
|
|
||||||
// Adapted from React Router's implementation:
|
|
||||||
// https://github.com/ReactTraining/react-router/blob/520a0acd48ae1b066eb0b07d6d4d1790a1d02482/packages/react-router-dom/modules/Link.js
|
|
||||||
//
|
|
||||||
// Try to be flexible and intuitive in how we handle links.
|
|
||||||
// Fun fact: links aren't as obvious to get right as you
|
|
||||||
// would expect. There's a lot more valid ways to click a
|
|
||||||
// link than this, and one might want to not simply click a
|
|
||||||
// link, but right click or command-click it to copy the
|
|
||||||
// link target, etc. Nope, this isn't just for blind people.
|
|
||||||
if (
|
|
||||||
// Skip if `onclick` prevented default
|
|
||||||
result1 !== false && !e.defaultPrevented &&
|
|
||||||
// Ignore everything but left clicks
|
|
||||||
(e.button === 0 || e.which === 0 || e.which === 1) &&
|
|
||||||
// Let the browser handle `target=_blank`, etc.
|
|
||||||
(!e.currentTarget.target || e.currentTarget.target === "_self") &&
|
|
||||||
// No modifier keys
|
|
||||||
!e.ctrlKey && !e.metaKey && !e.shiftKey && !e.altKey
|
|
||||||
) {
|
|
||||||
e.preventDefault()
|
|
||||||
e.redraw = false
|
|
||||||
route.set(href, null, options)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return child0
|
|
||||||
},
|
|
||||||
}
|
|
||||||
route.param = function(key4) {
|
|
||||||
return attrs3 && key4 != null ? attrs3[key4] : attrs3
|
|
||||||
}
|
|
||||||
return route
|
|
||||||
}
|
|
||||||
m.route = _26(typeof window !== "undefined" ? window : null, mountRedraw)
|
|
||||||
m.render = render
|
m.render = render
|
||||||
m.redraw = mountRedraw.redraw
|
m.redraw = mountRedraw.redraw
|
||||||
m.request = request.request
|
|
||||||
m.parseQueryString = parseQueryString
|
|
||||||
m.buildQueryString = buildQueryString
|
|
||||||
m.parsePathname = parsePathname
|
|
||||||
m.buildPathname = buildPathname
|
|
||||||
m.vnode = Vnode
|
m.vnode = Vnode
|
||||||
m.censor = censor
|
m.domFor = domFor.domFor
|
||||||
if (typeof module !== "undefined") module["exports"] = m
|
if (typeof module !== "undefined") module["exports"] = m
|
||||||
else window.m = m
|
else window.m = m
|
||||||
}());
|
}());
|
||||||
2
mithril.min.js
vendored
2
mithril.min.js
vendored
File diff suppressed because one or more lines are too long
481
package-lock.json
generated
481
package-lock.json
generated
|
|
@ -19,7 +19,7 @@
|
||||||
"glob": "^7.1.4",
|
"glob": "^7.1.4",
|
||||||
"html-minifier": "^4.0.0",
|
"html-minifier": "^4.0.0",
|
||||||
"istanbul": "^0.4.5",
|
"istanbul": "^0.4.5",
|
||||||
"lint-staged": "^12.3.4",
|
"lint-staged": "^13.2.1",
|
||||||
"locater": "^1.3.0",
|
"locater": "^1.3.0",
|
||||||
"marked": "^4.0.10",
|
"marked": "^4.0.10",
|
||||||
"minimist": "^1.2.0",
|
"minimist": "^1.2.0",
|
||||||
|
|
@ -309,9 +309,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/async": {
|
"node_modules/async": {
|
||||||
"version": "2.6.3",
|
"version": "2.6.4",
|
||||||
"resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
|
"resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz",
|
||||||
"integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
|
"integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"lodash": "^4.17.14"
|
"lodash": "^4.17.14"
|
||||||
|
|
@ -534,9 +534,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/colorette": {
|
"node_modules/colorette": {
|
||||||
"version": "2.0.16",
|
"version": "2.0.20",
|
||||||
"resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz",
|
"resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
|
||||||
"integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==",
|
"integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/combined-stream": {
|
"node_modules/combined-stream": {
|
||||||
|
|
@ -607,9 +607,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/debug": {
|
"node_modules/debug": {
|
||||||
"version": "4.3.3",
|
"version": "4.3.4",
|
||||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
|
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
|
||||||
"integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
|
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ms": "2.1.2"
|
"ms": "2.1.2"
|
||||||
|
|
@ -1193,23 +1193,23 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/execa": {
|
"node_modules/execa": {
|
||||||
"version": "5.1.1",
|
"version": "7.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/execa/-/execa-7.1.1.tgz",
|
||||||
"integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
|
"integrity": "sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"cross-spawn": "^7.0.3",
|
"cross-spawn": "^7.0.3",
|
||||||
"get-stream": "^6.0.0",
|
"get-stream": "^6.0.1",
|
||||||
"human-signals": "^2.1.0",
|
"human-signals": "^4.3.0",
|
||||||
"is-stream": "^2.0.0",
|
"is-stream": "^3.0.0",
|
||||||
"merge-stream": "^2.0.0",
|
"merge-stream": "^2.0.0",
|
||||||
"npm-run-path": "^4.0.1",
|
"npm-run-path": "^5.1.0",
|
||||||
"onetime": "^5.1.2",
|
"onetime": "^6.0.0",
|
||||||
"signal-exit": "^3.0.3",
|
"signal-exit": "^3.0.7",
|
||||||
"strip-final-newline": "^2.0.0"
|
"strip-final-newline": "^3.0.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=10"
|
"node": "^14.18.0 || ^16.14.0 || >=18.0.0"
|
||||||
},
|
},
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://github.com/sindresorhus/execa?sponsor=1"
|
"url": "https://github.com/sindresorhus/execa?sponsor=1"
|
||||||
|
|
@ -1704,12 +1704,12 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/human-signals": {
|
"node_modules/human-signals": {
|
||||||
"version": "2.1.0",
|
"version": "4.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz",
|
||||||
"integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
|
"integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=10.17.0"
|
"node": ">=14.18.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/humanize-url": {
|
"node_modules/humanize-url": {
|
||||||
|
|
@ -1884,12 +1884,12 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/is-stream": {
|
"node_modules/is-stream": {
|
||||||
"version": "2.0.1",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
|
||||||
"integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
|
"integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8"
|
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
||||||
},
|
},
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://github.com/sponsors/sindresorhus"
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
|
|
@ -1954,7 +1954,7 @@
|
||||||
"node_modules/istanbul/node_modules/async": {
|
"node_modules/istanbul/node_modules/async": {
|
||||||
"version": "1.5.2",
|
"version": "1.5.2",
|
||||||
"resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
|
"resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
|
||||||
"integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
|
"integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/istanbul/node_modules/esprima": {
|
"node_modules/istanbul/node_modules/esprima": {
|
||||||
|
|
@ -2094,82 +2094,94 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/lilconfig": {
|
"node_modules/lilconfig": {
|
||||||
"version": "2.0.4",
|
"version": "2.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
|
||||||
"integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==",
|
"integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=10"
|
"node": ">=10"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/lint-staged": {
|
"node_modules/lint-staged": {
|
||||||
"version": "12.3.4",
|
"version": "13.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.3.4.tgz",
|
"resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.2.1.tgz",
|
||||||
"integrity": "sha512-yv/iK4WwZ7/v0GtVkNb3R82pdL9M+ScpIbJLJNyCXkJ1FGaXvRCOg/SeL59SZtPpqZhE7BD6kPKFLIDUhDx2/w==",
|
"integrity": "sha512-8gfzinVXoPfga5Dz/ZOn8I2GOhf81Wvs+KwbEXQn/oWZAvCVS2PivrXfVbFJc93zD16uC0neS47RXHIjXKYZQw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"chalk": "5.2.0",
|
||||||
"cli-truncate": "^3.1.0",
|
"cli-truncate": "^3.1.0",
|
||||||
"colorette": "^2.0.16",
|
"commander": "^10.0.0",
|
||||||
"commander": "^8.3.0",
|
"debug": "^4.3.4",
|
||||||
"debug": "^4.3.3",
|
"execa": "^7.0.0",
|
||||||
"execa": "^5.1.1",
|
"lilconfig": "2.1.0",
|
||||||
"lilconfig": "2.0.4",
|
"listr2": "^5.0.7",
|
||||||
"listr2": "^4.0.1",
|
"micromatch": "^4.0.5",
|
||||||
"micromatch": "^4.0.4",
|
|
||||||
"normalize-path": "^3.0.0",
|
"normalize-path": "^3.0.0",
|
||||||
"object-inspect": "^1.12.0",
|
"object-inspect": "^1.12.3",
|
||||||
|
"pidtree": "^0.6.0",
|
||||||
"string-argv": "^0.3.1",
|
"string-argv": "^0.3.1",
|
||||||
"supports-color": "^9.2.1",
|
"yaml": "^2.2.1"
|
||||||
"yaml": "^1.10.2"
|
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"lint-staged": "bin/lint-staged.js"
|
"lint-staged": "bin/lint-staged.js"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
"node": "^14.13.1 || >=16.0.0"
|
||||||
},
|
},
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://opencollective.com/lint-staged"
|
"url": "https://opencollective.com/lint-staged"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/lint-staged/node_modules/commander": {
|
"node_modules/lint-staged/node_modules/chalk": {
|
||||||
"version": "8.3.0",
|
"version": "5.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
|
||||||
"integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
|
"integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 12"
|
"node": "^12.17.0 || ^14.13 || >=16.0.0"
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/lint-staged/node_modules/supports-color": {
|
|
||||||
"version": "9.2.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.1.tgz",
|
|
||||||
"integrity": "sha512-Obv7ycoCTG51N7y175StI9BlAXrmgZrFhZOb0/PyjHBher/NmsdBgbbQ1Inhq+gIhz6+7Gb+jWF2Vqi7Mf1xnQ==",
|
|
||||||
"dev": true,
|
|
||||||
"engines": {
|
|
||||||
"node": ">=12"
|
|
||||||
},
|
},
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://github.com/chalk/supports-color?sponsor=1"
|
"url": "https://github.com/chalk/chalk?sponsor=1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/lint-staged/node_modules/commander": {
|
||||||
|
"version": "10.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz",
|
||||||
|
"integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/lint-staged/node_modules/pidtree": {
|
||||||
|
"version": "0.6.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz",
|
||||||
|
"integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==",
|
||||||
|
"dev": true,
|
||||||
|
"bin": {
|
||||||
|
"pidtree": "bin/pidtree.js"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/listr2": {
|
"node_modules/listr2": {
|
||||||
"version": "4.0.4",
|
"version": "5.0.8",
|
||||||
"resolved": "https://registry.npmjs.org/listr2/-/listr2-4.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/listr2/-/listr2-5.0.8.tgz",
|
||||||
"integrity": "sha512-vJOm5KD6uZXjSsrwajr+mNacIjf87gWvlBEltPWLbTkslUscWAzquyK4xfe9Zd4RDgO5nnwFyV06FC+uVR+5mg==",
|
"integrity": "sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"cli-truncate": "^2.1.0",
|
"cli-truncate": "^2.1.0",
|
||||||
"colorette": "^2.0.16",
|
"colorette": "^2.0.19",
|
||||||
"log-update": "^4.0.0",
|
"log-update": "^4.0.0",
|
||||||
"p-map": "^4.0.0",
|
"p-map": "^4.0.0",
|
||||||
"rfdc": "^1.3.0",
|
"rfdc": "^1.3.0",
|
||||||
"rxjs": "^7.5.4",
|
"rxjs": "^7.8.0",
|
||||||
"through": "^2.3.8",
|
"through": "^2.3.8",
|
||||||
"wrap-ansi": "^7.0.0"
|
"wrap-ansi": "^7.0.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12"
|
"node": "^14.13.1 || >=16.0.0"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"enquirer": ">= 2.3.0 < 3"
|
"enquirer": ">= 2.3.0 < 3"
|
||||||
|
|
@ -2459,13 +2471,13 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/micromatch": {
|
"node_modules/micromatch": {
|
||||||
"version": "4.0.4",
|
"version": "4.0.5",
|
||||||
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
|
||||||
"integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
|
"integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"braces": "^3.0.1",
|
"braces": "^3.0.2",
|
||||||
"picomatch": "^2.2.3"
|
"picomatch": "^2.3.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8.6"
|
"node": ">=8.6"
|
||||||
|
|
@ -2493,18 +2505,21 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/mimic-fn": {
|
"node_modules/mimic-fn": {
|
||||||
"version": "2.1.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
|
||||||
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
|
"integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6"
|
"node": ">=12"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/minimatch": {
|
"node_modules/minimatch": {
|
||||||
"version": "3.0.4",
|
"version": "3.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
|
||||||
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"brace-expansion": "^1.1.7"
|
"brace-expansion": "^1.1.7"
|
||||||
|
|
@ -2656,24 +2671,30 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/npm-run-path": {
|
"node_modules/npm-run-path": {
|
||||||
"version": "4.0.1",
|
"version": "5.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz",
|
||||||
"integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
|
"integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"path-key": "^3.0.0"
|
"path-key": "^4.0.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8"
|
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/npm-run-path/node_modules/path-key": {
|
"node_modules/npm-run-path/node_modules/path-key": {
|
||||||
"version": "3.1.1",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
|
||||||
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
|
"integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8"
|
"node": ">=12"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/oauth-sign": {
|
"node_modules/oauth-sign": {
|
||||||
|
|
@ -2695,9 +2716,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/object-inspect": {
|
"node_modules/object-inspect": {
|
||||||
"version": "1.12.0",
|
"version": "1.12.3",
|
||||||
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz",
|
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
|
||||||
"integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==",
|
"integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://github.com/sponsors/ljharb"
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
|
|
@ -2722,15 +2743,15 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/onetime": {
|
"node_modules/onetime": {
|
||||||
"version": "5.1.2",
|
"version": "6.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
|
||||||
"integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
|
"integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"mimic-fn": "^2.1.0"
|
"mimic-fn": "^4.0.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6"
|
"node": ">=12"
|
||||||
},
|
},
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://github.com/sponsors/sindresorhus"
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
|
|
@ -3128,6 +3149,30 @@
|
||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/restore-cursor/node_modules/mimic-fn": {
|
||||||
|
"version": "2.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
|
||||||
|
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/restore-cursor/node_modules/onetime": {
|
||||||
|
"version": "5.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
|
||||||
|
"integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"mimic-fn": "^2.1.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/rfdc": {
|
"node_modules/rfdc": {
|
||||||
"version": "1.3.0",
|
"version": "1.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz",
|
||||||
|
|
@ -3150,9 +3195,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/rxjs": {
|
"node_modules/rxjs": {
|
||||||
"version": "7.5.4",
|
"version": "7.8.0",
|
||||||
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.4.tgz",
|
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz",
|
||||||
"integrity": "sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ==",
|
"integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"tslib": "^2.1.0"
|
"tslib": "^2.1.0"
|
||||||
|
|
@ -3467,12 +3512,15 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/strip-final-newline": {
|
"node_modules/strip-final-newline": {
|
||||||
"version": "2.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
|
||||||
"integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
|
"integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6"
|
"node": ">=12"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/strip-json-comments": {
|
"node_modules/strip-json-comments": {
|
||||||
|
|
@ -3555,7 +3603,7 @@
|
||||||
"node_modules/through": {
|
"node_modules/through": {
|
||||||
"version": "2.3.8",
|
"version": "2.3.8",
|
||||||
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
|
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
|
||||||
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
|
"integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/to-regex-range": {
|
"node_modules/to-regex-range": {
|
||||||
|
|
@ -3611,9 +3659,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/tslib": {
|
"node_modules/tslib": {
|
||||||
"version": "2.3.1",
|
"version": "2.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
|
||||||
"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
|
"integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/tunnel-agent": {
|
"node_modules/tunnel-agent": {
|
||||||
|
|
@ -3851,12 +3899,12 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/yaml": {
|
"node_modules/yaml": {
|
||||||
"version": "1.10.2",
|
"version": "2.2.2",
|
||||||
"resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
|
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz",
|
||||||
"integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
|
"integrity": "sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 6"
|
"node": ">= 14"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -4066,9 +4114,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"async": {
|
"async": {
|
||||||
"version": "2.6.3",
|
"version": "2.6.4",
|
||||||
"resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
|
"resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz",
|
||||||
"integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
|
"integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"lodash": "^4.17.14"
|
"lodash": "^4.17.14"
|
||||||
|
|
@ -4255,9 +4303,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"colorette": {
|
"colorette": {
|
||||||
"version": "2.0.16",
|
"version": "2.0.20",
|
||||||
"resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz",
|
"resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
|
||||||
"integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==",
|
"integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"combined-stream": {
|
"combined-stream": {
|
||||||
|
|
@ -4318,9 +4366,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"debug": {
|
"debug": {
|
||||||
"version": "4.3.3",
|
"version": "4.3.4",
|
||||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
|
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
|
||||||
"integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
|
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"ms": "2.1.2"
|
"ms": "2.1.2"
|
||||||
|
|
@ -4750,20 +4798,20 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"execa": {
|
"execa": {
|
||||||
"version": "5.1.1",
|
"version": "7.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/execa/-/execa-7.1.1.tgz",
|
||||||
"integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
|
"integrity": "sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"cross-spawn": "^7.0.3",
|
"cross-spawn": "^7.0.3",
|
||||||
"get-stream": "^6.0.0",
|
"get-stream": "^6.0.1",
|
||||||
"human-signals": "^2.1.0",
|
"human-signals": "^4.3.0",
|
||||||
"is-stream": "^2.0.0",
|
"is-stream": "^3.0.0",
|
||||||
"merge-stream": "^2.0.0",
|
"merge-stream": "^2.0.0",
|
||||||
"npm-run-path": "^4.0.1",
|
"npm-run-path": "^5.1.0",
|
||||||
"onetime": "^5.1.2",
|
"onetime": "^6.0.0",
|
||||||
"signal-exit": "^3.0.3",
|
"signal-exit": "^3.0.7",
|
||||||
"strip-final-newline": "^2.0.0"
|
"strip-final-newline": "^3.0.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"cross-spawn": {
|
"cross-spawn": {
|
||||||
|
|
@ -5135,9 +5183,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"human-signals": {
|
"human-signals": {
|
||||||
"version": "2.1.0",
|
"version": "4.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz",
|
||||||
"integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
|
"integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"humanize-url": {
|
"humanize-url": {
|
||||||
|
|
@ -5264,9 +5312,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"is-stream": {
|
"is-stream": {
|
||||||
"version": "2.0.1",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
|
||||||
"integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
|
"integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"is-symbol": {
|
"is-symbol": {
|
||||||
|
|
@ -5321,7 +5369,7 @@
|
||||||
"async": {
|
"async": {
|
||||||
"version": "1.5.2",
|
"version": "1.5.2",
|
||||||
"resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
|
"resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
|
||||||
"integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
|
"integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"esprima": {
|
"esprima": {
|
||||||
|
|
@ -5438,58 +5486,64 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"lilconfig": {
|
"lilconfig": {
|
||||||
"version": "2.0.4",
|
"version": "2.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
|
||||||
"integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==",
|
"integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"lint-staged": {
|
"lint-staged": {
|
||||||
"version": "12.3.4",
|
"version": "13.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.3.4.tgz",
|
"resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.2.1.tgz",
|
||||||
"integrity": "sha512-yv/iK4WwZ7/v0GtVkNb3R82pdL9M+ScpIbJLJNyCXkJ1FGaXvRCOg/SeL59SZtPpqZhE7BD6kPKFLIDUhDx2/w==",
|
"integrity": "sha512-8gfzinVXoPfga5Dz/ZOn8I2GOhf81Wvs+KwbEXQn/oWZAvCVS2PivrXfVbFJc93zD16uC0neS47RXHIjXKYZQw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
|
"chalk": "5.2.0",
|
||||||
"cli-truncate": "^3.1.0",
|
"cli-truncate": "^3.1.0",
|
||||||
"colorette": "^2.0.16",
|
"commander": "^10.0.0",
|
||||||
"commander": "^8.3.0",
|
"debug": "^4.3.4",
|
||||||
"debug": "^4.3.3",
|
"execa": "^7.0.0",
|
||||||
"execa": "^5.1.1",
|
"lilconfig": "2.1.0",
|
||||||
"lilconfig": "2.0.4",
|
"listr2": "^5.0.7",
|
||||||
"listr2": "^4.0.1",
|
"micromatch": "^4.0.5",
|
||||||
"micromatch": "^4.0.4",
|
|
||||||
"normalize-path": "^3.0.0",
|
"normalize-path": "^3.0.0",
|
||||||
"object-inspect": "^1.12.0",
|
"object-inspect": "^1.12.3",
|
||||||
|
"pidtree": "^0.6.0",
|
||||||
"string-argv": "^0.3.1",
|
"string-argv": "^0.3.1",
|
||||||
"supports-color": "^9.2.1",
|
"yaml": "^2.2.1"
|
||||||
"yaml": "^1.10.2"
|
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"commander": {
|
"chalk": {
|
||||||
"version": "8.3.0",
|
"version": "5.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
|
||||||
"integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
|
"integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"supports-color": {
|
"commander": {
|
||||||
"version": "9.2.1",
|
"version": "10.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz",
|
||||||
"integrity": "sha512-Obv7ycoCTG51N7y175StI9BlAXrmgZrFhZOb0/PyjHBher/NmsdBgbbQ1Inhq+gIhz6+7Gb+jWF2Vqi7Mf1xnQ==",
|
"integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"pidtree": {
|
||||||
|
"version": "0.6.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz",
|
||||||
|
"integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==",
|
||||||
"dev": true
|
"dev": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"listr2": {
|
"listr2": {
|
||||||
"version": "4.0.4",
|
"version": "5.0.8",
|
||||||
"resolved": "https://registry.npmjs.org/listr2/-/listr2-4.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/listr2/-/listr2-5.0.8.tgz",
|
||||||
"integrity": "sha512-vJOm5KD6uZXjSsrwajr+mNacIjf87gWvlBEltPWLbTkslUscWAzquyK4xfe9Zd4RDgO5nnwFyV06FC+uVR+5mg==",
|
"integrity": "sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"cli-truncate": "^2.1.0",
|
"cli-truncate": "^2.1.0",
|
||||||
"colorette": "^2.0.16",
|
"colorette": "^2.0.19",
|
||||||
"log-update": "^4.0.0",
|
"log-update": "^4.0.0",
|
||||||
"p-map": "^4.0.0",
|
"p-map": "^4.0.0",
|
||||||
"rfdc": "^1.3.0",
|
"rfdc": "^1.3.0",
|
||||||
"rxjs": "^7.5.4",
|
"rxjs": "^7.8.0",
|
||||||
"through": "^2.3.8",
|
"through": "^2.3.8",
|
||||||
"wrap-ansi": "^7.0.0"
|
"wrap-ansi": "^7.0.0"
|
||||||
},
|
},
|
||||||
|
|
@ -5710,13 +5764,13 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"micromatch": {
|
"micromatch": {
|
||||||
"version": "4.0.4",
|
"version": "4.0.5",
|
||||||
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
|
||||||
"integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
|
"integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"braces": "^3.0.1",
|
"braces": "^3.0.2",
|
||||||
"picomatch": "^2.2.3"
|
"picomatch": "^2.3.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"mime-db": {
|
"mime-db": {
|
||||||
|
|
@ -5735,15 +5789,15 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"mimic-fn": {
|
"mimic-fn": {
|
||||||
"version": "2.1.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
|
||||||
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
|
"integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"minimatch": {
|
"minimatch": {
|
||||||
"version": "3.0.4",
|
"version": "3.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
|
||||||
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"brace-expansion": "^1.1.7"
|
"brace-expansion": "^1.1.7"
|
||||||
|
|
@ -5871,18 +5925,18 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"npm-run-path": {
|
"npm-run-path": {
|
||||||
"version": "4.0.1",
|
"version": "5.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz",
|
||||||
"integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
|
"integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"path-key": "^3.0.0"
|
"path-key": "^4.0.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"path-key": {
|
"path-key": {
|
||||||
"version": "3.1.1",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
|
||||||
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
|
"integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -5900,9 +5954,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"object-inspect": {
|
"object-inspect": {
|
||||||
"version": "1.12.0",
|
"version": "1.12.3",
|
||||||
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz",
|
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
|
||||||
"integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==",
|
"integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"object-keys": {
|
"object-keys": {
|
||||||
|
|
@ -5921,12 +5975,12 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"onetime": {
|
"onetime": {
|
||||||
"version": "5.1.2",
|
"version": "6.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
|
||||||
"integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
|
"integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"mimic-fn": "^2.1.0"
|
"mimic-fn": "^4.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"optionator": {
|
"optionator": {
|
||||||
|
|
@ -6215,6 +6269,23 @@
|
||||||
"requires": {
|
"requires": {
|
||||||
"onetime": "^5.1.0",
|
"onetime": "^5.1.0",
|
||||||
"signal-exit": "^3.0.2"
|
"signal-exit": "^3.0.2"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"mimic-fn": {
|
||||||
|
"version": "2.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
|
||||||
|
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"onetime": {
|
||||||
|
"version": "5.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
|
||||||
|
"integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"mimic-fn": "^2.1.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"rfdc": {
|
"rfdc": {
|
||||||
|
|
@ -6233,9 +6304,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"rxjs": {
|
"rxjs": {
|
||||||
"version": "7.5.4",
|
"version": "7.8.0",
|
||||||
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.4.tgz",
|
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz",
|
||||||
"integrity": "sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ==",
|
"integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"tslib": "^2.1.0"
|
"tslib": "^2.1.0"
|
||||||
|
|
@ -6477,9 +6548,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"strip-final-newline": {
|
"strip-final-newline": {
|
||||||
"version": "2.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
|
||||||
"integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
|
"integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"strip-json-comments": {
|
"strip-json-comments": {
|
||||||
|
|
@ -6540,7 +6611,7 @@
|
||||||
"through": {
|
"through": {
|
||||||
"version": "2.3.8",
|
"version": "2.3.8",
|
||||||
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
|
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
|
||||||
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
|
"integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"to-regex-range": {
|
"to-regex-range": {
|
||||||
|
|
@ -6588,9 +6659,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tslib": {
|
"tslib": {
|
||||||
"version": "2.3.1",
|
"version": "2.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
|
||||||
"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
|
"integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"tunnel-agent": {
|
"tunnel-agent": {
|
||||||
|
|
@ -6775,9 +6846,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"yaml": {
|
"yaml": {
|
||||||
"version": "1.10.2",
|
"version": "2.2.2",
|
||||||
"resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
|
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz",
|
||||||
"integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
|
"integrity": "sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@
|
||||||
"glob": "^7.1.4",
|
"glob": "^7.1.4",
|
||||||
"html-minifier": "^4.0.0",
|
"html-minifier": "^4.0.0",
|
||||||
"istanbul": "^0.4.5",
|
"istanbul": "^0.4.5",
|
||||||
"lint-staged": "^12.3.4",
|
"lint-staged": "^13.2.1",
|
||||||
"locater": "^1.3.0",
|
"locater": "^1.3.0",
|
||||||
"marked": "^4.0.10",
|
"marked": "^4.0.10",
|
||||||
"minimist": "^1.2.0",
|
"minimist": "^1.2.0",
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ function execSelector(state, vnode) {
|
||||||
vnode.tag = state.tag
|
vnode.tag = state.tag
|
||||||
vnode.attrs = {}
|
vnode.attrs = {}
|
||||||
|
|
||||||
if (!isEmpty(state.attrs) && !isEmpty(attrs)) {
|
if (!isEmpty(state.attrs)) {
|
||||||
var newAttrs = {}
|
var newAttrs = {}
|
||||||
|
|
||||||
for (var key in attrs) {
|
for (var key in attrs) {
|
||||||
|
|
|
||||||
|
|
@ -700,7 +700,7 @@ module.exports = function($window) {
|
||||||
if (vnode.tag === "option" && old !== null && vnode.dom.value === "" + value) return
|
if (vnode.tag === "option" && old !== null && vnode.dom.value === "" + value) return
|
||||||
//setting input[type=file][value] to different value is an error if it's non-empty
|
//setting input[type=file][value] to different value is an error if it's non-empty
|
||||||
// Not ideal, but it at least works around the most common source of uncaught exceptions for now.
|
// Not ideal, but it at least works around the most common source of uncaught exceptions for now.
|
||||||
if (isFileInput && "" + value !== "") { console.error("`value` is read-only on file inputs!"); return }
|
if (isFileInput && "" + value !== "") { throw new Error("`value` is read-only on file inputs!"); return }
|
||||||
/* eslint-enable no-implicit-coercion */
|
/* eslint-enable no-implicit-coercion */
|
||||||
}
|
}
|
||||||
vnode.dom[key] = value
|
vnode.dom[key] = value
|
||||||
|
|
|
||||||
|
|
@ -580,6 +580,15 @@ o.spec("hyperscript", function() {
|
||||||
o(nodeB.attrs.className).equals("b")
|
o(nodeB.attrs.className).equals("b")
|
||||||
o(nodeB.attrs.a).equals("b")
|
o(nodeB.attrs.a).equals("b")
|
||||||
})
|
})
|
||||||
|
o("handles shared empty attrs (#2821)", function() {
|
||||||
|
var attrs = {}
|
||||||
|
|
||||||
|
var nodeA = m(".a", attrs)
|
||||||
|
var nodeB = m(".b", attrs)
|
||||||
|
|
||||||
|
o(nodeA.attrs.className).equals("a")
|
||||||
|
o(nodeB.attrs.className).equals("b")
|
||||||
|
})
|
||||||
o("doesnt modify passed attributes object", function() {
|
o("doesnt modify passed attributes object", function() {
|
||||||
var attrs = {a: "b"}
|
var attrs = {a: "b"}
|
||||||
m(".a", attrs)
|
m(".a", attrs)
|
||||||
|
|
|
||||||
|
|
@ -161,7 +161,7 @@ class Generator {
|
||||||
)
|
)
|
||||||
|
|
||||||
const markedHtml = marked(body)
|
const markedHtml = marked(body)
|
||||||
const title = body.match(/^#([^\n\r]+)/i) || []
|
const title = body.match(/^#\s+([^\n\r]+)/m) || []
|
||||||
|
|
||||||
let result = this._layout
|
let result = this._layout
|
||||||
if (title[1]) {
|
if (title[1]) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue