diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..e188a5f --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "yaml.schemas": { + "https://json.schemastore.org/github-action.json": "file:///Users/timbendt/Sites/frets/.github/workflows/deploy.yml" + } +} diff --git a/build/browser/frets.js b/build/browser/frets.js new file mode 100644 index 0000000..74065b8 --- /dev/null +++ b/build/browser/frets.js @@ -0,0 +1,1773 @@ +var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function unwrapExports (x) { + return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; +} + +function createCommonjsModule(fn, module) { + return module = { exports: {} }, fn(module, module.exports), module.exports; +} + +var maquette_umd = createCommonjsModule(function (module, exports) { +(function (global, factory) { + factory(exports) ; +}(commonjsGlobal, (function (exports) { + var NAMESPACE_W3 = "http://www.w3.org/"; + var NAMESPACE_SVG = NAMESPACE_W3 + "2000/svg"; + var NAMESPACE_XLINK = NAMESPACE_W3 + "1999/xlink"; + var emptyArray = []; + var extend = function (base, overrides) { + var result = {}; + Object.keys(base).forEach(function (key) { + result[key] = base[key]; + }); + if (overrides) { + Object.keys(overrides).forEach(function (key) { + result[key] = overrides[key]; + }); + } + return result; + }; + var same = function (vnode1, vnode2) { + if (vnode1.vnodeSelector !== vnode2.vnodeSelector) { + return false; + } + if (vnode1.properties && vnode2.properties) { + if (vnode1.properties.key !== vnode2.properties.key) { + return false; + } + return vnode1.properties.bind === vnode2.properties.bind; + } + return !vnode1.properties && !vnode2.properties; + }; + var checkStyleValue = function (styleValue) { + if (typeof styleValue !== "string") { + throw new Error("Style values must be strings"); + } + }; + var findIndexOfChild = function (children, sameAs, start) { + if (sameAs.vnodeSelector !== "") { + // Never scan for text-nodes + for (var i = start; i < children.length; i++) { + if (same(children[i], sameAs)) { + return i; + } + } + } + return -1; + }; + var checkDistinguishable = function (childNodes, indexToCheck, parentVNode, operation) { + var childNode = childNodes[indexToCheck]; + if (childNode.vnodeSelector === "") { + return; // Text nodes need not be distinguishable + } + var properties = childNode.properties; + var key = properties + ? properties.key === undefined + ? properties.bind + : properties.key + : undefined; + if (!key) { + // A key is just assumed to be unique + for (var i = 0; i < childNodes.length; i++) { + if (i !== indexToCheck) { + var node = childNodes[i]; + if (same(node, childNode)) { + throw new Error(parentVNode.vnodeSelector + " had a " + childNode.vnodeSelector + " child " + (operation === "added" ? operation : "removed") + ", but there is now more than one. You must add unique key properties to make them distinguishable."); + } + } + } + } + }; + var nodeAdded = function (vNode) { + if (vNode.properties) { + var enterAnimation = vNode.properties.enterAnimation; + if (enterAnimation) { + enterAnimation(vNode.domNode, vNode.properties); + } + } + }; + var removedNodes = []; + var requestedIdleCallback = false; + var visitRemovedNode = function (node) { + (node.children || []).forEach(visitRemovedNode); + if (node.properties && node.properties.afterRemoved) { + node.properties.afterRemoved.apply(node.properties.bind || node.properties, [ + node.domNode, + ]); + } + }; + var processPendingNodeRemovals = function () { + requestedIdleCallback = false; + removedNodes.forEach(visitRemovedNode); + removedNodes.length = 0; + }; + var scheduleNodeRemoval = function (vNode) { + removedNodes.push(vNode); + if (!requestedIdleCallback) { + requestedIdleCallback = true; + if (typeof window !== "undefined" && "requestIdleCallback" in window) { + window.requestIdleCallback(processPendingNodeRemovals, { timeout: 16 }); + } + else { + setTimeout(processPendingNodeRemovals, 16); + } + } + }; + var nodeToRemove = function (vNode) { + var domNode = vNode.domNode; + if (vNode.properties) { + var exitAnimation = vNode.properties.exitAnimation; + if (exitAnimation) { + domNode.style.pointerEvents = "none"; + var removeDomNode = function () { + if (domNode.parentNode) { + domNode.parentNode.removeChild(domNode); + scheduleNodeRemoval(vNode); + } + }; + exitAnimation(domNode, removeDomNode, vNode.properties); + return; + } + } + if (domNode.parentNode) { + domNode.parentNode.removeChild(domNode); + scheduleNodeRemoval(vNode); + } + }; + var setProperties = function (domNode, properties, projectionOptions) { + if (!properties) { + return; + } + var eventHandlerInterceptor = projectionOptions.eventHandlerInterceptor; + var propNames = Object.keys(properties); + var propCount = propNames.length; + var _loop_1 = function (i) { + var propName = propNames[i]; + var propValue = properties[propName]; + if (propName === "className") { + throw new Error('Property "className" is not supported, use "class".'); + } + else if (propName === "class") { + toggleClasses(domNode, propValue, true); + } + else if (propName === "classes") { + // object with string keys and boolean values + var classNames = Object.keys(propValue); + var classNameCount = classNames.length; + for (var j = 0; j < classNameCount; j++) { + var className = classNames[j]; + if (propValue[className]) { + domNode.classList.add(className); + } + } + } + else if (propName === "styles") { + // object with string keys and string (!) values + var styleNames = Object.keys(propValue); + var styleCount = styleNames.length; + for (var j = 0; j < styleCount; j++) { + var styleName = styleNames[j]; + var styleValue = propValue[styleName]; + if (styleValue) { + checkStyleValue(styleValue); + projectionOptions.styleApplyer(domNode, styleName, styleValue); + } + } + } + else if (propName !== "key" && propValue !== null && propValue !== undefined) { + var type = typeof propValue; + if (type === "function") { + if (propName.lastIndexOf("on", 0) === 0) { + // lastIndexOf(,0)===0 -> startsWith + if (eventHandlerInterceptor) { + propValue = eventHandlerInterceptor(propName, propValue, domNode, properties); // intercept eventhandlers + } + if (propName === "oninput") { + (function () { + // record the evt.target.value, because IE and Edge sometimes do a requestAnimationFrame between changing value and running oninput + var oldPropValue = propValue; + propValue = function (evt) { + oldPropValue.apply(this, [evt]); + evt.target["oninput-value"] = evt.target.value; // may be HTMLTextAreaElement as well + }; + })(); + } + } + domNode[propName] = propValue; + } + else if (projectionOptions.namespace === NAMESPACE_SVG) { + if (propName === "href") { + domNode.setAttributeNS(NAMESPACE_XLINK, propName, propValue); + } + else { + // all SVG attributes are read-only in DOM, so... + domNode.setAttribute(propName, propValue); + } + } + else if (type === "string" && propName !== "value" && propName !== "innerHTML") { + domNode.setAttribute(propName, propValue); + } + else { + domNode[propName] = propValue; + } + } + }; + for (var i = 0; i < propCount; i++) { + _loop_1(i); + } + }; + var addChildren = function (domNode, children, projectionOptions) { + if (!children) { + return; + } + for (var _i = 0, children_1 = children; _i < children_1.length; _i++) { + var child = children_1[_i]; + createDom(child, domNode, undefined, projectionOptions); + } + }; + var initPropertiesAndChildren = function (domNode, vnode, projectionOptions) { + addChildren(domNode, vnode.children, projectionOptions); // children before properties, needed for value property of .\r\n if (vnode.text) {\r\n domNode.textContent = vnode.text;\r\n }\r\n setProperties(domNode, vnode.properties, projectionOptions);\r\n if (vnode.properties && vnode.properties.afterCreate) {\r\n vnode.properties.afterCreate.apply(vnode.properties.bind || vnode.properties, [\r\n domNode,\r\n projectionOptions,\r\n vnode.vnodeSelector,\r\n vnode.properties,\r\n vnode.children,\r\n ]);\r\n }\r\n };\r\n var createDom = function (vnode, parentNode, insertBefore, projectionOptions) {\r\n var domNode;\r\n var start = 0;\r\n var vnodeSelector = vnode.vnodeSelector;\r\n var doc = parentNode.ownerDocument;\r\n if (vnodeSelector === \"\") {\r\n domNode = vnode.domNode = doc.createTextNode(vnode.text);\r\n if (insertBefore !== undefined) {\r\n parentNode.insertBefore(domNode, insertBefore);\r\n }\r\n else {\r\n parentNode.appendChild(domNode);\r\n }\r\n }\r\n else {\r\n for (var i = 0; i <= vnodeSelector.length; ++i) {\r\n var c = vnodeSelector.charAt(i);\r\n if (i === vnodeSelector.length || c === \".\" || c === \"#\") {\r\n var type = vnodeSelector.charAt(start - 1);\r\n var found = vnodeSelector.slice(start, i);\r\n if (type === \".\") {\r\n domNode.classList.add(found);\r\n }\r\n else if (type === \"#\") {\r\n domNode.id = found;\r\n }\r\n else {\r\n if (found === \"svg\") {\r\n projectionOptions = extend(projectionOptions, {\r\n namespace: NAMESPACE_SVG,\r\n });\r\n }\r\n if (projectionOptions.namespace !== undefined) {\r\n domNode = vnode.domNode = doc.createElementNS(projectionOptions.namespace, found);\r\n }\r\n else {\r\n domNode = vnode.domNode = vnode.domNode || doc.createElement(found);\r\n if (found === \"input\" && vnode.properties && vnode.properties.type !== undefined) {\r\n // IE8 and older don't support setting input type after the DOM Node has been added to the document\r\n domNode.setAttribute(\"type\", vnode.properties.type);\r\n }\r\n }\r\n if (insertBefore !== undefined) {\r\n parentNode.insertBefore(domNode, insertBefore);\r\n }\r\n else if (domNode.parentNode !== parentNode) {\r\n parentNode.appendChild(domNode);\r\n }\r\n }\r\n start = i + 1;\r\n }\r\n }\r\n initPropertiesAndChildren(domNode, vnode, projectionOptions);\r\n }\r\n };\r\n var updateDom;\r\n /**\r\n * Adds or removes classes from an Element\r\n * @param domNode the element\r\n * @param classes a string separated list of classes\r\n * @param on true means add classes, false means remove\r\n */\r\n var toggleClasses = function (domNode, classes, on) {\r\n if (!classes) {\r\n return;\r\n }\r\n classes.split(\" \").forEach(function (classToToggle) {\r\n if (classToToggle) {\r\n domNode.classList.toggle(classToToggle, on);\r\n }\r\n });\r\n };\r\n var updateProperties = function (domNode, previousProperties, properties, projectionOptions) {\r\n if (!properties) {\r\n return;\r\n }\r\n var propertiesUpdated = false;\r\n var propNames = Object.keys(properties);\r\n var propCount = propNames.length;\r\n for (var i = 0; i < propCount; i++) {\r\n var propName = propNames[i];\r\n // assuming that properties will be nullified instead of missing is by design\r\n var propValue = properties[propName];\r\n var previousValue = previousProperties[propName];\r\n if (propName === \"class\") {\r\n if (previousValue !== propValue) {\r\n toggleClasses(domNode, previousValue, false);\r\n toggleClasses(domNode, propValue, true);\r\n }\r\n }\r\n else if (propName === \"classes\") {\r\n var classList = domNode.classList;\r\n var classNames = Object.keys(propValue);\r\n var classNameCount = classNames.length;\r\n for (var j = 0; j < classNameCount; j++) {\r\n var className = classNames[j];\r\n var on = !!propValue[className];\r\n var previousOn = !!previousValue[className];\r\n if (on === previousOn) {\r\n continue;\r\n }\r\n propertiesUpdated = true;\r\n if (on) {\r\n classList.add(className);\r\n }\r\n else {\r\n classList.remove(className);\r\n }\r\n }\r\n }\r\n else if (propName === \"styles\") {\r\n var styleNames = Object.keys(propValue);\r\n var styleCount = styleNames.length;\r\n for (var j = 0; j < styleCount; j++) {\r\n var styleName = styleNames[j];\r\n var newStyleValue = propValue[styleName];\r\n var oldStyleValue = previousValue[styleName];\r\n if (newStyleValue === oldStyleValue) {\r\n continue;\r\n }\r\n propertiesUpdated = true;\r\n if (newStyleValue) {\r\n checkStyleValue(newStyleValue);\r\n projectionOptions.styleApplyer(domNode, styleName, newStyleValue);\r\n }\r\n else {\r\n projectionOptions.styleApplyer(domNode, styleName, \"\");\r\n }\r\n }\r\n }\r\n else {\r\n if (!propValue && typeof previousValue === \"string\") {\r\n propValue = \"\";\r\n }\r\n if (propName === \"value\") {\r\n // value can be manipulated by the user directly and using event.preventDefault() is not an option\r\n var domValue = domNode[propName];\r\n if (domValue !== propValue && // The 'value' in the DOM tree !== newValue\r\n (domNode[\"oninput-value\"]\r\n ? domValue === domNode[\"oninput-value\"] // If the last reported value to 'oninput' does not match domValue, do nothing and wait for oninput\r\n : propValue !== previousValue) // Only update the value if the vdom changed\r\n ) {\r\n // The edge cases are described in the tests\r\n domNode[propName] = propValue; // Reset the value, even if the virtual DOM did not change\r\n domNode[\"oninput-value\"] = undefined;\r\n } // else do not update the domNode, otherwise the cursor position would be changed\r\n if (propValue !== previousValue) {\r\n propertiesUpdated = true;\r\n }\r\n }\r\n else if (propValue !== previousValue) {\r\n var type = typeof propValue;\r\n if (type !== \"function\" || !projectionOptions.eventHandlerInterceptor) {\r\n // Function updates are expected to be handled by the EventHandlerInterceptor\r\n if (projectionOptions.namespace === NAMESPACE_SVG) {\r\n if (propName === \"href\") {\r\n domNode.setAttributeNS(NAMESPACE_XLINK, propName, propValue);\r\n }\r\n else {\r\n // all SVG attributes are read-only in DOM, so...\r\n domNode.setAttribute(propName, propValue);\r\n }\r\n }\r\n else if (type === \"string\" && propName !== \"innerHTML\") {\r\n if (propName === \"role\" && propValue === \"\") {\r\n domNode.removeAttribute(propName);\r\n }\r\n else {\r\n domNode.setAttribute(propName, propValue);\r\n }\r\n }\r\n else if (domNode[propName] !== propValue) {\r\n // Comparison is here for side-effects in Edge with scrollLeft and scrollTop\r\n domNode[propName] = propValue;\r\n }\r\n propertiesUpdated = true;\r\n }\r\n }\r\n }\r\n }\r\n return propertiesUpdated;\r\n };\r\n var updateChildren = function (vnode, domNode, oldChildren, newChildren, projectionOptions) {\r\n if (oldChildren === newChildren) {\r\n return false;\r\n }\r\n oldChildren = oldChildren || emptyArray;\r\n newChildren = newChildren || emptyArray;\r\n var oldChildrenLength = oldChildren.length;\r\n var newChildrenLength = newChildren.length;\r\n var oldIndex = 0;\r\n var newIndex = 0;\r\n var i;\r\n var textUpdated = false;\r\n while (newIndex < newChildrenLength) {\r\n var oldChild = oldIndex < oldChildrenLength ? oldChildren[oldIndex] : undefined;\r\n var newChild = newChildren[newIndex];\r\n if (oldChild !== undefined && same(oldChild, newChild)) {\r\n textUpdated = updateDom(oldChild, newChild, projectionOptions) || textUpdated;\r\n oldIndex++;\r\n }\r\n else {\r\n var findOldIndex = findIndexOfChild(oldChildren, newChild, oldIndex + 1);\r\n if (findOldIndex >= 0) {\r\n // Remove preceding missing children\r\n for (i = oldIndex; i < findOldIndex; i++) {\r\n nodeToRemove(oldChildren[i]);\r\n checkDistinguishable(oldChildren, i, vnode, \"removed\");\r\n }\r\n textUpdated =\r\n updateDom(oldChildren[findOldIndex], newChild, projectionOptions) || textUpdated;\r\n oldIndex = findOldIndex + 1;\r\n }\r\n else {\r\n // New child\r\n createDom(newChild, domNode, oldIndex < oldChildrenLength ? oldChildren[oldIndex].domNode : undefined, projectionOptions);\r\n nodeAdded(newChild);\r\n checkDistinguishable(newChildren, newIndex, vnode, \"added\");\r\n }\r\n }\r\n newIndex++;\r\n }\r\n if (oldChildrenLength > oldIndex) {\r\n // Remove child fragments\r\n for (i = oldIndex; i < oldChildrenLength; i++) {\r\n nodeToRemove(oldChildren[i]);\r\n checkDistinguishable(oldChildren, i, vnode, \"removed\");\r\n }\r\n }\r\n return textUpdated;\r\n };\r\n updateDom = function (previous, vnode, projectionOptions) {\r\n var domNode = previous.domNode;\r\n var textUpdated = false;\r\n if (previous === vnode) {\r\n return false; // By contract, VNode objects may not be modified anymore after passing them to maquette\r\n }\r\n var updated = false;\r\n if (vnode.vnodeSelector === \"\") {\r\n if (vnode.text !== previous.text) {\r\n var newTextNode = domNode.ownerDocument.createTextNode(vnode.text);\r\n domNode.parentNode.replaceChild(newTextNode, domNode);\r\n vnode.domNode = newTextNode;\r\n textUpdated = true;\r\n return textUpdated;\r\n }\r\n vnode.domNode = domNode;\r\n }\r\n else {\r\n if (vnode.vnodeSelector.lastIndexOf(\"svg\", 0) === 0) {\r\n // lastIndexOf(needle,0)===0 means StartsWith\r\n projectionOptions = extend(projectionOptions, {\r\n namespace: NAMESPACE_SVG,\r\n });\r\n }\r\n if (previous.text !== vnode.text) {\r\n updated = true;\r\n if (vnode.text === undefined) {\r\n domNode.removeChild(domNode.firstChild); // the only textnode presumably\r\n }\r\n else {\r\n domNode.textContent = vnode.text;\r\n }\r\n }\r\n vnode.domNode = domNode;\r\n updated =\r\n updateChildren(vnode, domNode, previous.children, vnode.children, projectionOptions) ||\r\n updated;\r\n updated =\r\n updateProperties(domNode, previous.properties, vnode.properties, projectionOptions) ||\r\n updated;\r\n if (vnode.properties && vnode.properties.afterUpdate) {\r\n vnode.properties.afterUpdate.apply(vnode.properties.bind || vnode.properties, [\r\n domNode,\r\n projectionOptions,\r\n vnode.vnodeSelector,\r\n vnode.properties,\r\n vnode.children,\r\n ]);\r\n }\r\n }\r\n if (updated && vnode.properties && vnode.properties.updateAnimation) {\r\n vnode.properties.updateAnimation(domNode, vnode.properties, previous.properties);\r\n }\r\n return textUpdated;\r\n };\r\n var createProjection = function (vnode, projectionOptions) {\r\n return {\r\n getLastRender: function () { return vnode; },\r\n update: function (updatedVnode) {\r\n if (vnode.vnodeSelector !== updatedVnode.vnodeSelector) {\r\n throw new Error(\"The selector for the root VNode may not be changed. (consider using dom.merge and add one extra level to the virtual DOM)\");\r\n }\r\n var previousVNode = vnode;\r\n vnode = updatedVnode;\r\n updateDom(previousVNode, updatedVnode, projectionOptions);\r\n },\r\n domNode: vnode.domNode,\r\n };\r\n };\n\n var DEFAULT_PROJECTION_OPTIONS = {\r\n namespace: undefined,\r\n performanceLogger: function () { return undefined; },\r\n eventHandlerInterceptor: undefined,\r\n styleApplyer: function (domNode, styleName, value) {\r\n if (styleName.charAt(0) === \"-\") {\r\n // CSS variables must be set using setProperty\r\n domNode.style.setProperty(styleName, value);\r\n }\r\n else {\r\n // properties like 'backgroundColor' must be set as a js-property\r\n domNode.style[styleName] = value;\r\n }\r\n },\r\n };\r\n var applyDefaultProjectionOptions = function (projectorOptions) {\r\n return extend(DEFAULT_PROJECTION_OPTIONS, projectorOptions);\r\n };\r\n var dom = {\r\n /**\r\n * Creates a real DOM tree from `vnode`. The [[Projection]] object returned will contain the resulting DOM Node in\r\n * its [[Projection.domNode|domNode]] property.\r\n * This is a low-level method. Users will typically use a [[Projector]] instead.\r\n * @param vnode - The root of the virtual DOM tree that was created using the [[h]] function. NOTE: [[VNode]]\r\n * objects may only be rendered once.\r\n * @param projectionOptions - Options to be used to create and update the projection.\r\n * @returns The [[Projection]] which also contains the DOM Node that was created.\r\n */\r\n create: function (vnode, projectionOptions) {\r\n projectionOptions = applyDefaultProjectionOptions(projectionOptions);\r\n createDom(vnode, document.createElement(\"div\"), undefined, projectionOptions);\r\n return createProjection(vnode, projectionOptions);\r\n },\r\n /**\r\n * Appends a new child node to the DOM which is generated from a [[VNode]].\r\n * This is a low-level method. Users will typically use a [[Projector]] instead.\r\n * @param parentNode - The parent node for the new child node.\r\n * @param vnode - The root of the virtual DOM tree that was created using the [[h]] function. NOTE: [[VNode]]\r\n * objects may only be rendered once.\r\n * @param projectionOptions - Options to be used to create and update the [[Projection]].\r\n * @returns The [[Projection]] that was created.\r\n */\r\n append: function (parentNode, vnode, projectionOptions) {\r\n projectionOptions = applyDefaultProjectionOptions(projectionOptions);\r\n createDom(vnode, parentNode, undefined, projectionOptions);\r\n return createProjection(vnode, projectionOptions);\r\n },\r\n /**\r\n * Inserts a new DOM node which is generated from a [[VNode]].\r\n * This is a low-level method. Users wil typically use a [[Projector]] instead.\r\n * @param beforeNode - The node that the DOM Node is inserted before.\r\n * @param vnode - The root of the virtual DOM tree that was created using the [[h]] function.\r\n * NOTE: [[VNode]] objects may only be rendered once.\r\n * @param projectionOptions - Options to be used to create and update the projection, see [[createProjector]].\r\n * @returns The [[Projection]] that was created.\r\n */\r\n insertBefore: function (beforeNode, vnode, projectionOptions) {\r\n projectionOptions = applyDefaultProjectionOptions(projectionOptions);\r\n createDom(vnode, beforeNode.parentNode, beforeNode, projectionOptions);\r\n return createProjection(vnode, projectionOptions);\r\n },\r\n /**\r\n * Merges a new DOM node which is generated from a [[VNode]] with an existing DOM Node.\r\n * This means that the virtual DOM and the real DOM will have one overlapping element.\r\n * Therefore the selector for the root [[VNode]] will be ignored, but its properties and children will be applied to the Element provided.\r\n * This is a low-level method. Users wil typically use a [[Projector]] instead.\r\n * @param element - The existing element to adopt as the root of the new virtual DOM. Existing attributes and child nodes are preserved.\r\n * @param vnode - The root of the virtual DOM tree that was created using the [[h]] function. NOTE: [[VNode]] objects\r\n * may only be rendered once.\r\n * @param projectionOptions - Options to be used to create and update the projection, see [[createProjector]].\r\n * @returns The [[Projection]] that was created.\r\n */\r\n merge: function (element, vnode, projectionOptions) {\r\n projectionOptions = applyDefaultProjectionOptions(projectionOptions);\r\n vnode.domNode = element;\r\n initPropertiesAndChildren(element, vnode, projectionOptions);\r\n return createProjection(vnode, projectionOptions);\r\n },\r\n /**\r\n * Replaces an existing DOM node with a node generated from a [[VNode]].\r\n * This is a low-level method. Users will typically use a [[Projector]] instead.\r\n * @param element - The node for the [[VNode]] to replace.\r\n * @param vnode - The root of the virtual DOM tree that was created using the [[h]] function. NOTE: [[VNode]]\r\n * objects may only be rendered once.\r\n * @param projectionOptions - Options to be used to create and update the [[Projection]].\r\n * @returns The [[Projection]] that was created.\r\n */\r\n replace: function (element, vnode, projectionOptions) {\r\n projectionOptions = applyDefaultProjectionOptions(projectionOptions);\r\n createDom(vnode, element.parentNode, element, projectionOptions);\r\n element.parentNode.removeChild(element);\r\n return createProjection(vnode, projectionOptions);\r\n },\r\n };\n\n var toTextVNode = function (data) {\r\n return {\r\n vnodeSelector: \"\",\r\n properties: undefined,\r\n children: undefined,\r\n text: data.toString(),\r\n domNode: null,\r\n };\r\n };\r\n var appendChildren = function (parentSelector, insertions, main) {\r\n for (var i = 0, length_1 = insertions.length; i < length_1; i++) {\r\n var item = insertions[i];\r\n if (Array.isArray(item)) {\r\n appendChildren(parentSelector, item, main);\r\n }\r\n else {\r\n if (item !== null && item !== undefined && item !== false) {\r\n if (typeof item === \"string\") {\r\n item = toTextVNode(item);\r\n }\r\n main.push(item);\r\n }\r\n }\r\n }\r\n };\r\n function h(selector, properties, children) {\r\n if (Array.isArray(properties)) {\r\n children = properties;\r\n properties = undefined;\r\n }\r\n else if ((properties && (typeof properties === \"string\" || properties.vnodeSelector)) ||\r\n (children && (typeof children === \"string\" || children.vnodeSelector))) {\r\n throw new Error(\"h called with invalid arguments\");\r\n }\r\n var text;\r\n var flattenedChildren;\r\n // Recognize a common special case where there is only a single text node\r\n if (children && children.length === 1 && typeof children[0] === \"string\") {\r\n text = children[0];\r\n }\r\n else if (children) {\r\n flattenedChildren = [];\r\n appendChildren(selector, children, flattenedChildren);\r\n if (flattenedChildren.length === 0) {\r\n flattenedChildren = undefined;\r\n }\r\n }\r\n return {\r\n vnodeSelector: selector,\r\n properties: properties,\r\n children: flattenedChildren,\r\n text: text === \"\" ? undefined : text,\r\n domNode: null,\r\n };\r\n }\n\n var createParentNodePath = function (node, rootNode) {\r\n var parentNodePath = [];\r\n while (node && node !== rootNode) {\r\n parentNodePath.push(node);\r\n node = node.parentNode;\r\n }\r\n return parentNodePath;\r\n };\r\n var find;\r\n if (Array.prototype.find) {\r\n find = function (items, predicate) { return items.find(predicate); };\r\n }\r\n else {\r\n find = function (items, predicate) { return items.filter(predicate)[0]; };\r\n }\r\n var findVNodeByParentNodePath = function (vnode, parentNodePath) {\r\n var result = vnode;\r\n parentNodePath.forEach(function (node) {\r\n result =\r\n result && result.children\r\n ? find(result.children, function (child) { return child.domNode === node; })\r\n : undefined;\r\n });\r\n return result;\r\n };\r\n var createEventHandlerInterceptor = function (projector, getProjection, performanceLogger) {\r\n return function (propertyName, eventHandler, domNode, properties) { return modifiedEventHandler; };\r\n function modifiedEventHandler(evt) {\r\n performanceLogger(\"domEvent\", evt);\r\n var projection = getProjection();\r\n var parentNodePath = createParentNodePath(evt.currentTarget, projection.domNode);\r\n parentNodePath.reverse();\r\n var matchingVNode = findVNodeByParentNodePath(projection.getLastRender(), parentNodePath);\r\n projector.scheduleRender();\r\n var result;\r\n if (matchingVNode) {\r\n /* eslint-disable prefer-rest-params */\r\n result = matchingVNode.properties[\"on\" + evt.type].apply(matchingVNode.properties.bind || this, arguments);\r\n /* eslint-enable prefer-rest-params */\r\n }\r\n performanceLogger(\"domEventProcessed\", evt);\r\n return result;\r\n }\r\n };\r\n /**\r\n * Creates a [[Projector]] instance using the provided projectionOptions.\r\n *\r\n * For more information, see [[Projector]].\r\n *\r\n * @param projectorOptions Options that influence how the DOM is rendered and updated.\r\n */\r\n var createProjector = function (projectorOptions) {\r\n var projector;\r\n var projectionOptions = applyDefaultProjectionOptions(projectorOptions);\r\n var performanceLogger = projectionOptions.performanceLogger;\r\n var renderCompleted = true;\r\n var scheduled;\r\n var stopped = false;\r\n var projections = [];\r\n var renderFunctions = []; // matches the projections array\r\n var addProjection = function (\r\n /* one of: dom.append, dom.insertBefore, dom.replace, dom.merge */\r\n domFunction, \r\n /* the parameter of the domFunction */\r\n node, renderFunction) {\r\n var projection;\r\n var getProjection = function () { return projection; };\r\n projectionOptions.eventHandlerInterceptor = createEventHandlerInterceptor(projector, getProjection, performanceLogger);\r\n projection = domFunction(node, renderFunction(), projectionOptions);\r\n projections.push(projection);\r\n renderFunctions.push(renderFunction);\r\n };\r\n var doRender = function () {\r\n scheduled = undefined;\r\n if (!renderCompleted) {\r\n return; // The last render threw an error, it should have been logged in the browser console.\r\n }\r\n renderCompleted = false;\r\n performanceLogger(\"renderStart\", undefined);\r\n for (var i = 0; i < projections.length; i++) {\r\n var updatedVnode = renderFunctions[i]();\r\n performanceLogger(\"rendered\", undefined);\r\n projections[i].update(updatedVnode);\r\n performanceLogger(\"patched\", undefined);\r\n }\r\n performanceLogger(\"renderDone\", undefined);\r\n renderCompleted = true;\r\n };\r\n projector = {\r\n renderNow: doRender,\r\n scheduleRender: function () {\r\n if (!scheduled && !stopped) {\r\n scheduled = requestAnimationFrame(doRender);\r\n }\r\n },\r\n stop: function () {\r\n if (scheduled) {\r\n cancelAnimationFrame(scheduled);\r\n scheduled = undefined;\r\n }\r\n stopped = true;\r\n },\r\n resume: function () {\r\n stopped = false;\r\n renderCompleted = true;\r\n projector.scheduleRender();\r\n },\r\n append: function (parentNode, renderFunction) {\r\n addProjection(dom.append, parentNode, renderFunction);\r\n },\r\n insertBefore: function (beforeNode, renderFunction) {\r\n addProjection(dom.insertBefore, beforeNode, renderFunction);\r\n },\r\n merge: function (domNode, renderFunction) {\r\n addProjection(dom.merge, domNode, renderFunction);\r\n },\r\n replace: function (domNode, renderFunction) {\r\n addProjection(dom.replace, domNode, renderFunction);\r\n },\r\n detach: function (renderFunction) {\r\n for (var i = 0; i < renderFunctions.length; i++) {\r\n if (renderFunctions[i] === renderFunction) {\r\n renderFunctions.splice(i, 1);\r\n return projections.splice(i, 1)[0];\r\n }\r\n }\r\n throw new Error(\"renderFunction was not found\");\r\n },\r\n };\r\n return projector;\r\n };\n\n /**\r\n * Creates a [[CalculationCache]] object, useful for caching [[VNode]] trees.\r\n * In practice, caching of [[VNode]] trees is not needed, because achieving 60 frames per second is almost never a problem.\r\n * For more information, see [[CalculationCache]].\r\n *\r\n * @param The type of the value that is cached.\r\n */\r\n var createCache = function () {\r\n var cachedInputs;\r\n var cachedOutcome;\r\n return {\r\n invalidate: function () {\r\n cachedOutcome = undefined;\r\n cachedInputs = undefined;\r\n },\r\n result: function (inputs, calculation) {\r\n if (cachedInputs) {\r\n for (var i = 0; i < inputs.length; i++) {\r\n if (cachedInputs[i] !== inputs[i]) {\r\n cachedOutcome = undefined;\r\n }\r\n }\r\n }\r\n if (!cachedOutcome) {\r\n cachedOutcome = calculation();\r\n cachedInputs = inputs;\r\n }\r\n return cachedOutcome;\r\n },\r\n };\r\n };\n\n /**\r\n * Creates a {@link Mapping} instance that keeps an array of result objects synchronized with an array of source objects.\r\n * See {@link http://maquettejs.org/docs/arrays.html|Working with arrays}.\r\n *\r\n * @param The type of source items. A database-record for instance.\r\n * @param The type of target items. A [[MaquetteComponent]] for instance.\r\n * @param getSourceKey `function(source)` that must return a key to identify each source object. The result must either be a string or a number.\r\n * @param createResult `function(source, index)` that must create a new result object from a given source. This function is identical\r\n * to the `callback` argument in `Array.map(callback)`.\r\n * @param updateResult `function(source, target, index)` that updates a result to an updated source.\r\n */\r\n var createMapping = function (getSourceKey, createResult, updateResult) {\r\n var keys = [];\r\n var results = [];\r\n return {\r\n results: results,\r\n map: function (newSources) {\r\n var newKeys = newSources.map(getSourceKey);\r\n var oldTargets = results.slice();\r\n var oldIndex = 0;\r\n for (var i = 0; i < newSources.length; i++) {\r\n var source = newSources[i];\r\n var sourceKey = newKeys[i];\r\n if (sourceKey === keys[oldIndex]) {\r\n results[i] = oldTargets[oldIndex];\r\n updateResult(source, oldTargets[oldIndex], i);\r\n oldIndex++;\r\n }\r\n else {\r\n var found = false;\r\n for (var j = 1; j < keys.length + 1; j++) {\r\n var searchIndex = (oldIndex + j) % keys.length;\r\n if (keys[searchIndex] === sourceKey) {\r\n results[i] = oldTargets[searchIndex];\r\n updateResult(newSources[i], oldTargets[searchIndex], i);\r\n oldIndex = searchIndex + 1;\r\n found = true;\r\n break;\r\n }\r\n }\r\n if (!found) {\r\n results[i] = createResult(source, i);\r\n }\r\n }\r\n }\r\n results.length = newSources.length;\r\n keys = newKeys;\r\n },\r\n };\r\n };\n\n exports.createCache = createCache;\n exports.createMapping = createMapping;\n exports.createProjector = createProjector;\n exports.dom = dom;\n exports.h = h;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","var makeOptions = function makeOptions(opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n return {\n arrayFormat: opts.arrayFormat || 'none',\n booleanFormat: opts.booleanFormat || 'none',\n nullFormat: opts.nullFormat || 'default'\n };\n};\n\nvar encodeValue = function encodeValue(value) {\n return encodeURIComponent(value);\n};\n\nvar decodeValue = function decodeValue(value) {\n return decodeURIComponent(value);\n};\n\nvar encodeBoolean = function encodeBoolean(name, value, opts) {\n if (opts.booleanFormat === 'empty-true' && value) {\n return name;\n }\n\n var encodedValue;\n\n if (opts.booleanFormat === 'unicode') {\n encodedValue = value ? '✓' : '✗';\n } else {\n encodedValue = value.toString();\n }\n\n return name + \"=\" + encodedValue;\n};\n\nvar encodeNull = function encodeNull(name, opts) {\n if (opts.nullFormat === 'hidden') {\n return '';\n }\n\n if (opts.nullFormat === 'string') {\n return name + \"=null\";\n }\n\n return name;\n};\n\nvar getNameEncoder = function getNameEncoder(opts) {\n if (opts.arrayFormat === 'index') {\n return function (name, index) {\n return name + \"[\" + index + \"]\";\n };\n }\n\n if (opts.arrayFormat === 'brackets') {\n return function (name) {\n return name + \"[]\";\n };\n }\n\n return function (name) {\n return name;\n };\n};\n\nvar encodeArray = function encodeArray(name, arr, opts) {\n var encodeName = getNameEncoder(opts);\n return arr.map(function (val, index) {\n return encodeName(name, index) + \"=\" + encodeValue(val);\n }).join('&');\n};\nvar encode = function encode(name, value, opts) {\n if (value === null) {\n return encodeNull(name, opts);\n }\n\n if (typeof value === 'boolean') {\n return encodeBoolean(name, value, opts);\n }\n\n if (Array.isArray(value)) {\n return encodeArray(name, value, opts);\n }\n\n return name + \"=\" + encodeValue(value);\n};\nvar decode = function decode(value, opts) {\n if (value === undefined) {\n return opts.booleanFormat === 'empty-true' ? true : null;\n }\n\n if (opts.booleanFormat === 'string') {\n if (value === 'true') {\n return true;\n }\n\n if (value === 'false') {\n return false;\n }\n }\n\n if (opts.booleanFormat === 'unicode') {\n if (decodeValue(value) === '✓') {\n return true;\n }\n\n if (decodeValue(value) === '✗') {\n return false;\n }\n }\n\n if (opts.nullFormat === 'string') {\n if (value === 'null') {\n return null;\n }\n }\n\n return decodeValue(value);\n};\n\nvar getSearch = function getSearch(path) {\n var pos = path.indexOf('?');\n\n if (pos === -1) {\n return path;\n }\n\n return path.slice(pos + 1);\n};\nvar isSerialisable = function isSerialisable(val) {\n return val !== undefined;\n};\nvar parseName = function parseName(name) {\n var bracketPosition = name.indexOf('[');\n var hasBrackets = bracketPosition !== -1;\n return {\n hasBrackets: hasBrackets,\n name: hasBrackets ? name.slice(0, bracketPosition) : name\n };\n};\n\n/**\r\n * Parse a querystring and return an object of parameters\r\n */\n\nvar parse = function parse(path, opts) {\n var options = makeOptions(opts);\n return getSearch(path).split('&').reduce(function (params, param) {\n var _a = param.split('='),\n rawName = _a[0],\n value = _a[1];\n\n var _b = parseName(rawName),\n hasBrackets = _b.hasBrackets,\n name = _b.name;\n\n var currentValue = params[name];\n var decodedValue = decode(value, options);\n\n if (currentValue === undefined) {\n params[name] = hasBrackets ? [decodedValue] : decodedValue;\n } else {\n params[name] = (Array.isArray(currentValue) ? currentValue : [currentValue]).concat(decodedValue);\n }\n\n return params;\n }, {});\n};\n/**\r\n * Build a querystring from an object of parameters\r\n */\n\nvar build = function build(params, opts) {\n var options = makeOptions(opts);\n return Object.keys(params).filter(function (paramName) {\n return isSerialisable(params[paramName]);\n }).map(function (paramName) {\n return encode(paramName, params[paramName], options);\n }).filter(Boolean).join('&');\n};\n/**\r\n * Remove a list of parameters from a querystring\r\n */\n\nvar omit = function omit(path, paramsToOmit, opts) {\n var options = makeOptions(opts);\n var searchPart = getSearch(path);\n\n if (searchPart === '') {\n return {\n querystring: '',\n removedParams: {}\n };\n }\n\n var _a = path.split('&').reduce(function (_a, chunk) {\n var left = _a[0],\n right = _a[1];\n var rawName = chunk.split('=')[0];\n var name = parseName(rawName).name;\n return paramsToOmit.indexOf(name) === -1 ? [left.concat(chunk), right] : [left, right.concat(chunk)];\n }, [[], []]),\n kept = _a[0],\n removed = _a[1];\n\n return {\n querystring: kept.join('&'),\n removedParams: parse(removed.join('&'), options)\n };\n};\n/**\r\n * Remove a list of parameters from a querystring\r\n */\n\nvar keep = function keep(path, paramsToKeep, opts) {\n var options = makeOptions(opts);\n var searchPart = getSearch(path);\n\n if (searchPart === '') {\n return {\n keptParams: {},\n querystring: ''\n };\n }\n\n var kept = path.split('&').reduce(function (acc, chunk) {\n var rawName = chunk.split('=')[0];\n var name = parseName(rawName).name;\n\n if (paramsToKeep.includes(name)) {\n acc.push(chunk);\n }\n\n return acc;\n }, []);\n return {\n keptParams: parse(kept.join('&'), options),\n querystring: kept.join('&')\n };\n};\n\nexport { build, keep, omit, parse };\n//# sourceMappingURL=search-params.esm.js.map\n","import { __assign } from 'tslib';\nimport { parse, build } from 'search-params';\n\n/**\r\n * We encode using encodeURIComponent but we want to\r\n * preserver certain characters which are commonly used\r\n * (sub delimiters and ':')\r\n *\r\n * https://www.ietf.org/rfc/rfc3986.txt\r\n *\r\n * reserved = gen-delims / sub-delims\r\n *\r\n * gen-delims = \":\" / \"/\" / \"?\" / \"#\" / \"[\" / \"]\" / \"@\"\r\n *\r\n * sub-delims = \"!\" / \"$\" / \"&\" / \"'\" / \"(\" / \")\"\r\n / \"*\" / \"+\" / \",\" / \";\" / \"=\"\r\n */\nvar excludeSubDelimiters = /[^!$'()*+,;|:]/g;\nvar encodeURIComponentExcludingSubDelims = function encodeURIComponentExcludingSubDelims(segment) {\n return segment.replace(excludeSubDelimiters, function (match) {\n return encodeURIComponent(match);\n });\n};\nvar encodingMethods = {\n \"default\": encodeURIComponentExcludingSubDelims,\n uri: encodeURI,\n uriComponent: encodeURIComponent,\n none: function none(val) {\n return val;\n },\n legacy: encodeURI\n};\nvar decodingMethods = {\n \"default\": decodeURIComponent,\n uri: decodeURI,\n uriComponent: decodeURIComponent,\n none: function none(val) {\n return val;\n },\n legacy: decodeURIComponent\n};\nvar encodeParam = function encodeParam(param, encoding, isSpatParam) {\n var encoder = encodingMethods[encoding] || encodeURIComponentExcludingSubDelims;\n\n if (isSpatParam) {\n return String(param).split('/').map(encoder).join('/');\n }\n\n return encoder(String(param));\n};\nvar decodeParam = function decodeParam(param, encoding) {\n return (decodingMethods[encoding] || decodeURIComponent)(param);\n};\n\nvar defaultOrConstrained = function defaultOrConstrained(match) {\n return '(' + (match ? match.replace(/(^<|>$)/g, '') : \"[a-zA-Z0-9-_.~%':|=+\\\\*@$]+\") + ')';\n};\nvar rules = [{\n name: 'url-parameter',\n pattern: /^:([a-zA-Z0-9-_]*[a-zA-Z0-9]{1})(<(.+?)>)?/,\n regex: function regex(match) {\n return new RegExp(defaultOrConstrained(match[2]));\n }\n}, {\n name: 'url-parameter-splat',\n pattern: /^\\*([a-zA-Z0-9-_]*[a-zA-Z0-9]{1})/,\n regex: /([^?]*)/\n}, {\n name: 'url-parameter-matrix',\n pattern: /^;([a-zA-Z0-9-_]*[a-zA-Z0-9]{1})(<(.+?)>)?/,\n regex: function regex(match) {\n return new RegExp(';' + match[1] + '=' + defaultOrConstrained(match[2]));\n }\n}, {\n name: 'query-parameter',\n pattern: /^(?:\\?|&)(?::)?([a-zA-Z0-9-_]*[a-zA-Z0-9]{1})/\n}, {\n name: 'delimiter',\n pattern: /^(\\/|\\?)/,\n regex: function regex(match) {\n return new RegExp('\\\\' + match[0]);\n }\n}, {\n name: 'sub-delimiter',\n pattern: /^(!|&|-|_|\\.|;)/,\n regex: function regex(match) {\n return new RegExp(match[0]);\n }\n}, {\n name: 'fragment',\n pattern: /^([0-9a-zA-Z]+)/,\n regex: function regex(match) {\n return new RegExp(match[0]);\n }\n}];\n\nvar tokenise = function tokenise(str, tokens) {\n if (tokens === void 0) {\n tokens = [];\n } // Look for a matching rule\n\n\n var matched = rules.some(function (rule) {\n var match = str.match(rule.pattern);\n\n if (!match) {\n return false;\n }\n\n tokens.push({\n type: rule.name,\n match: match[0],\n val: match.slice(1, 2),\n otherVal: match.slice(2),\n regex: rule.regex instanceof Function ? rule.regex(match) : rule.regex\n });\n\n if (match[0].length < str.length) {\n tokens = tokenise(str.substr(match[0].length), tokens);\n }\n\n return true;\n }); // If no rules matched, throw an error (possible malformed path)\n\n if (!matched) {\n throw new Error(\"Could not parse path '\" + str + \"'\");\n }\n\n return tokens;\n};\n\nvar exists = function exists(val) {\n return val !== undefined && val !== null;\n};\n\nvar optTrailingSlash = function optTrailingSlash(source, strictTrailingSlash) {\n if (strictTrailingSlash) {\n return source;\n }\n\n if (source === '\\\\/') {\n return source;\n }\n\n return source.replace(/\\\\\\/$/, '') + '(?:\\\\/)?';\n};\n\nvar upToDelimiter = function upToDelimiter(source, delimiter) {\n if (!delimiter) {\n return source;\n }\n\n return /(\\/)$/.test(source) ? source : source + '(\\\\/|\\\\?|\\\\.|;|$)';\n};\n\nvar appendQueryParam = function appendQueryParam(params, param, val) {\n if (val === void 0) {\n val = '';\n }\n\n var existingVal = params[param];\n\n if (existingVal === undefined) {\n params[param] = val;\n } else {\n params[param] = Array.isArray(existingVal) ? existingVal.concat(val) : [existingVal, val];\n }\n\n return params;\n};\n\nvar defaultOptions = {\n urlParamsEncoding: 'default'\n};\n\nvar Path =\n/*#__PURE__*/\n\n/** @class */\nfunction () {\n function Path(path, options) {\n if (!path) {\n throw new Error('Missing path in Path constructor');\n }\n\n this.path = path;\n this.options = __assign(__assign({}, defaultOptions), options);\n this.tokens = tokenise(path);\n this.hasUrlParams = this.tokens.filter(function (t) {\n return /^url-parameter/.test(t.type);\n }).length > 0;\n this.hasSpatParam = this.tokens.filter(function (t) {\n return /splat$/.test(t.type);\n }).length > 0;\n this.hasMatrixParams = this.tokens.filter(function (t) {\n return /matrix$/.test(t.type);\n }).length > 0;\n this.hasQueryParams = this.tokens.filter(function (t) {\n return /^query-parameter/.test(t.type);\n }).length > 0; // Extract named parameters from tokens\n\n this.spatParams = this.getParams('url-parameter-splat');\n this.urlParams = this.getParams(/^url-parameter/); // Query params\n\n this.queryParams = this.getParams('query-parameter'); // All params\n\n this.params = this.urlParams.concat(this.queryParams); // Check if hasQueryParams\n // Regular expressions for url part only (full and partial match)\n\n this.source = this.tokens.filter(function (t) {\n return t.regex !== undefined;\n }).map(function (t) {\n return t.regex.source;\n }).join('');\n }\n\n Path.createPath = function (path, options) {\n return new Path(path, options);\n };\n\n Path.prototype.isQueryParam = function (name) {\n return this.queryParams.indexOf(name) !== -1;\n };\n\n Path.prototype.isSpatParam = function (name) {\n return this.spatParams.indexOf(name) !== -1;\n };\n\n Path.prototype.test = function (path, opts) {\n var _this = this;\n\n var options = __assign(__assign({\n caseSensitive: false,\n strictTrailingSlash: false\n }, this.options), opts); // trailingSlash: falsy => non optional, truthy => optional\n\n\n var source = optTrailingSlash(this.source, options.strictTrailingSlash); // Check if exact match\n\n var match = this.urlTest(path, source + (this.hasQueryParams ? '(\\\\?.*$|$)' : '$'), options.caseSensitive, options.urlParamsEncoding); // If no match, or no query params, no need to go further\n\n if (!match || !this.hasQueryParams) {\n return match;\n } // Extract query params\n\n\n var queryParams = parse(path, options.queryParams);\n var unexpectedQueryParams = Object.keys(queryParams).filter(function (p) {\n return !_this.isQueryParam(p);\n });\n\n if (unexpectedQueryParams.length === 0) {\n // Extend url match\n Object.keys(queryParams).forEach( // @ts-ignore\n function (p) {\n return match[p] = queryParams[p];\n });\n return match;\n }\n\n return null;\n };\n\n Path.prototype.partialTest = function (path, opts) {\n var _this = this;\n\n var options = __assign(__assign({\n caseSensitive: false,\n delimited: true\n }, this.options), opts); // Check if partial match (start of given path matches regex)\n // trailingSlash: falsy => non optional, truthy => optional\n\n\n var source = upToDelimiter(this.source, options.delimited);\n var match = this.urlTest(path, source, options.caseSensitive, options.urlParamsEncoding);\n\n if (!match) {\n return match;\n }\n\n if (!this.hasQueryParams) {\n return match;\n }\n\n var queryParams = parse(path, options.queryParams);\n Object.keys(queryParams).filter(function (p) {\n return _this.isQueryParam(p);\n }).forEach(function (p) {\n return appendQueryParam(match, p, queryParams[p]);\n });\n return match;\n };\n\n Path.prototype.build = function (params, opts) {\n var _this = this;\n\n if (params === void 0) {\n params = {};\n }\n\n var options = __assign(__assign({\n ignoreConstraints: false,\n ignoreSearch: false,\n queryParams: {}\n }, this.options), opts);\n\n var encodedUrlParams = Object.keys(params).filter(function (p) {\n return !_this.isQueryParam(p);\n }).reduce(function (acc, key) {\n if (!exists(params[key])) {\n return acc;\n }\n\n var val = params[key];\n\n var isSpatParam = _this.isSpatParam(key);\n\n if (typeof val === 'boolean') {\n acc[key] = val;\n } else if (Array.isArray(val)) {\n acc[key] = val.map(function (v) {\n return encodeParam(v, options.urlParamsEncoding, isSpatParam);\n });\n } else {\n acc[key] = encodeParam(val, options.urlParamsEncoding, isSpatParam);\n }\n\n return acc;\n }, {}); // Check all params are provided (not search parameters which are optional)\n\n if (this.urlParams.some(function (p) {\n return !exists(params[p]);\n })) {\n var missingParameters = this.urlParams.filter(function (p) {\n return !exists(params[p]);\n });\n throw new Error(\"Cannot build path: '\" + this.path + \"' requires missing parameters { \" + missingParameters.join(', ') + ' }');\n } // Check constraints\n\n\n if (!options.ignoreConstraints) {\n var constraintsPassed = this.tokens.filter(function (t) {\n return /^url-parameter/.test(t.type) && !/-splat$/.test(t.type);\n }).every(function (t) {\n return new RegExp('^' + defaultOrConstrained(t.otherVal[0]) + '$').test(encodedUrlParams[t.val]);\n });\n\n if (!constraintsPassed) {\n throw new Error(\"Some parameters of '\" + this.path + \"' are of invalid format\");\n }\n }\n\n var base = this.tokens.filter(function (t) {\n return /^query-parameter/.test(t.type) === false;\n }).map(function (t) {\n if (t.type === 'url-parameter-matrix') {\n return \";\" + t.val + \"=\" + encodedUrlParams[t.val[0]];\n }\n\n return /^url-parameter/.test(t.type) ? encodedUrlParams[t.val[0]] : t.match;\n }).join('');\n\n if (options.ignoreSearch) {\n return base;\n }\n\n var searchParams = this.queryParams.filter(function (p) {\n return Object.keys(params).indexOf(p) !== -1;\n }).reduce(function (sparams, paramName) {\n sparams[paramName] = params[paramName];\n return sparams;\n }, {});\n var searchPart = build(searchParams, options.queryParams);\n return searchPart ? base + '?' + searchPart : base;\n };\n\n Path.prototype.getParams = function (type) {\n var predicate = type instanceof RegExp ? function (t) {\n return type.test(t.type);\n } : function (t) {\n return t.type === type;\n };\n return this.tokens.filter(predicate).map(function (t) {\n return t.val[0];\n });\n };\n\n Path.prototype.urlTest = function (path, source, caseSensitive, urlParamsEncoding) {\n var _this = this;\n\n var regex = new RegExp('^' + source, caseSensitive ? '' : 'i');\n var match = path.match(regex);\n\n if (!match) {\n return null;\n } else if (!this.urlParams.length) {\n return {};\n } // Reduce named params to key-value pairs\n\n\n return match.slice(1, this.urlParams.length + 1).reduce(function (params, m, i) {\n params[_this.urlParams[i]] = decodeParam(m, urlParamsEncoding);\n return params;\n }, {});\n };\n\n return Path;\n}();\n\nexport { Path };\n//# sourceMappingURL=path-parser.esm.js.map\n","import { createProjector } from 'maquette';\nimport { Path } from 'path-parser';\n/**\n * Creates a Frets application, it takes initial modelProps for your data model, and a function to be called when first run\n * @param {T} modelProps\n * @param {(fretsApp:FunFrets)=>void} setupFn\n * @param {SetupOptions} options?\n * @returns Mountable\n */\nexport function setup(modelProps, setupFn, options) {\n const projector = (options === null || options === void 0 ? void 0 : options.projector) || createProjector();\n const actions = {};\n const routes = {};\n const registeredFieldActions = {};\n const stateGraph = {};\n let currentStateNode;\n /**\n * Returns a path when given the key of a route that was previously registered.\n * @param {string} key\n * @param {any} data? A route data object\n * @returns string\n */\n function getRouteLink(key, data) {\n if (!routes || !routes[key]) {\n return false;\n }\n return routes[key].spec.build(data || {});\n }\n /**\n * Change the browser location to match the path configured in the route with the\n * provided key. You still need to call an action to update state before the UI will re-render.\n * @param {string} key\n * @param {any} data?\n */\n function navToRoute(key, data) {\n const r = getRouteLink(key, data);\n if (r) {\n navToPath(r);\n }\n }\n /**\n * Update the browser location with the provided raw string path.\n * @param {string} path\n */\n function navToPath(path) {\n try {\n window.history.pushState(modelProps, '', path);\n }\n catch (error) {\n console.warn('Error routing', error);\n window.location.pathname = path;\n }\n applyRouteFunction();\n }\n const modelPresenters = {};\n function modelPresenter(proposal) {\n for (const key in modelPresenters) {\n if (Object.prototype.hasOwnProperty.call(modelPresenters, key)) {\n const accept = modelPresenters[key];\n accept(proposal);\n }\n }\n }\n let state;\n function registerAction(key, actionFn) {\n if (!actions[key]) {\n actions[key] = actionFn;\n }\n return (event) => {\n actionFn(event, modelPresenter);\n };\n }\n function registerRouteAction(key, path, actionFn) {\n // Console.log(\"register route\", key, path)\n routes[key] = {\n calculator: actionFn,\n spec: new Path(path),\n };\n }\n function registerAcceptor(presenterFn) {\n const acceptorId = presenterFn.toString().slice(0, 250);\n if (!modelPresenters[acceptorId]) {\n modelPresenters[acceptorId] = (proposal) => {\n presenterFn(proposal, state);\n };\n }\n }\n function resolveState(props) {\n if (!stateGraph.entry) {\n throw new Error('Cannot resolve current state.');\n }\n function validEdge(edges) {\n if (!edges)\n return undefined;\n return edges.find((x) => {\n return x.guard(props);\n });\n }\n const nestedEdges = (s) => {\n return (s && nestedEdges(validEdge(s.edges))) || s;\n };\n return nestedEdges(stateGraph.entry);\n }\n /**\n * Checks to see if any of the registered routes are matched and then updates the app state using\n * the provided transformation function.\n */\n function applyRouteFunction() {\n // Console.log(\"routes:\", routes)\n for (const key in routes) {\n if (Object.prototype.hasOwnProperty.call(routes, key)) {\n const entry = routes[key];\n // Console.log(\"testing\", entry)\n const result = entry.spec.test(window.location.pathname);\n if (result) {\n // Console.log(\"found route\", res)\n entry.calculator({ key, path: entry.spec.path, data: result }, modelPresenter);\n }\n }\n }\n }\n let stateRenderer;\n const fretsInstance = {\n getRouteLink,\n modelProps,\n navToPath,\n navToRoute,\n present: modelPresenter,\n projector,\n registerAcceptor,\n registerAction,\n registerField(key, initialValue, validation) {\n const handler = (evt, skipValidation) => {\n const value = typeof evt === typeof InputEvent\n ? evt.data\n : evt.target.value;\n this.modelProps.registeredFieldsValues[key] = value;\n if (value.length > 0) {\n this.modelProps.registeredFieldsState[key].dirty = true; // Latching switch\n }\n if (!skipValidation) {\n validate();\n }\n };\n const validate = () => {\n const { validation } = fretsInstance.modelProps.registeredFieldsState[key];\n if (validation) {\n const value = fretsInstance.modelProps.registeredFieldsValues[key];\n const errors = [];\n if (validation.notEmpty && (!value || value === '')) {\n errors.push(validation.notEmpty.message);\n }\n if (typeof value === 'string' &&\n validation.minLength &&\n value.length < validation.minLength.value) {\n errors.push(validation.minLength.message);\n }\n if (typeof value === 'string' &&\n validation.maxLength &&\n value.length > validation.maxLength.value) {\n errors.push(validation.maxLength.message);\n }\n this.modelProps.registeredFieldValidationErrors[key] = errors;\n }\n };\n if (this.modelProps.registeredFieldsValues[key] === undefined) {\n this.modelProps.registeredFieldsValues[key] = initialValue || '';\n this.modelProps.registeredFieldValidationErrors[key] = [];\n this.modelProps.registeredFieldsState[key] = { dirty: false };\n if (validation) {\n this.modelProps.registeredFieldsState[key].validation = validation;\n }\n }\n if (registeredFieldActions[key] === undefined) {\n registeredFieldActions[key] = handler;\n }\n return {\n clear: () => {\n this.modelProps.registeredFieldsValues[key] = initialValue || '';\n this.modelProps.registeredFieldValidationErrors[key] = [];\n },\n handler,\n isDirty: () => fretsInstance.modelProps.registeredFieldsState[key].dirty,\n isValid: () => this.modelProps.registeredFieldValidationErrors[key].length === 0,\n key,\n validate,\n validationErrors: fretsInstance.modelProps.registeredFieldValidationErrors[key],\n value: fretsInstance.modelProps.registeredFieldsValues[key],\n };\n },\n registerRouteAction,\n registerStateGraph(entryState) {\n stateGraph.entry = entryState;\n this.currentStateNode = resolveState(modelProps);\n },\n currentStateNode,\n registerView(renderFn) {\n stateRenderer = () => {\n return renderFn(this);\n };\n state = (newProps) => {\n fretsInstance.modelProps = Object.assign(Object.assign({}, fretsInstance.modelProps), newProps);\n if (stateGraph === null || stateGraph === void 0 ? void 0 : stateGraph.entry) {\n this.currentStateNode = resolveState(this.modelProps);\n }\n projector.scheduleRender();\n };\n },\n };\n window.addEventListener('popstate', () => {\n applyRouteFunction();\n });\n setupFn(fretsInstance);\n return {\n fretsApp: fretsInstance,\n mountTo(id) {\n // eslint-disable-next-line unicorn/prefer-query-selector\n projector.replace(document.getElementById(id), stateRenderer);\n },\n present: modelPresenter,\n stateRenderer,\n };\n}\n//# sourceMappingURL=Frets.js.map","export class PropsWithFields {\n constructor(data) {\n this.registeredFieldsValues = {};\n this.registeredFieldsState = {};\n this.registeredFieldValidationErrors = {};\n Object.assign(this, data);\n }\n}\n//# sourceMappingURL=props-field-registry.js.map"],"names":["this","createProjector"],"mappings":"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"} \ No newline at end of file diff --git a/build/main/Frets.d.ts b/build/main/Frets.d.ts index 8c4ff2b..a9ff16e 100644 --- a/build/main/Frets.d.ts +++ b/build/main/Frets.d.ts @@ -1,83 +1,10 @@ -import { Projector, VNode } from 'maquette'; -import { Path } from 'path-parser'; +import { FunFrets, Mountable, SetupOptions } from './Frets.types'; import { PropsWithFields } from './props-field-registry'; -export interface IValidationObject { - notEmpty?: { - value: boolean; - message: string; - }; - minLength?: { - value: number; - message: string; - }; - maxLength?: { - value: number; - message: string; - }; -} -export interface IRegisteredField { - handler: (evt: Event, skipValidation?: boolean) => void | boolean; - validate: () => void; - validationErrors: string[]; - isValid: () => boolean; - isDirty: () => boolean; - value: T; - clear: () => void; - key: string; -} -export interface IRouteRegistry { - [key: string]: { - calculator: (routeName: string, routeParams: any, props: Readonly) => T; - spec: Path; - }; -} -declare type ActionFn = (e: Event, data: Readonly) => Partial; -declare type RouteActionFn = (context: { - key: string; - path: string; - data: any; -}, present: IPresent) => void; -export interface IActionsObj { - [k: string]: ActionFn; -} /** - * FRETS class is the main way to instantiate a new application and hang your models, actions, and state off it - * @template T, U + * Creates a Frets application, it takes initial modelProps for your data model, and a function to be called when first run + * @param {T} modelProps + * @param {(fretsApp:FunFrets)=>void} setupFn + * @param {SetupOptions} options? + * @returns Mountable */ -export declare type IPresent = (proposal: Partial) => void; -export declare type IActionEventHandler = (event: Event) => void; -export declare type IActionFn = (event: Event, present: IPresent) => void; -export declare type IModelPresenter = (proposal: Partial, state: (props: Partial) => void) => void; -export declare type IRegisterFieldFn = (key: string, defaultValue?: U, validation?: IValidationObject) => IRegisteredField; -export interface IFunFrets { - modelProps: T; - present: (proposal: Partial) => void; - projector: Projector; - registerView: (renderFn: (app: IFunFrets) => VNode) => void; - registerField: IRegisterFieldFn; - registerAction: (key: string, actionFn: IActionFn) => IActionEventHandler; - registerRouteAction: (key: string, path: string, actionFn: RouteActionFn) => void; - registerAcceptor: (presenterFn: IModelPresenter) => void; - registerStateGraph: (entryState: IStateNode) => void; - currentStateNode: IStateNode; - getRouteLink: (key: string, data?: any) => string | false; - navToRoute: (key: string, data?: any) => void; - navToPath: (key: string, data?: any) => void; -} -export interface IMountable { - fretsApp: IFunFrets; - mountTo: (id: string) => void; - stateRenderer: () => VNode; - present: (proposal: Partial) => void; -} -export interface ISetupOptions { - projector: Projector; -} -export interface IStateNode { - name: string; - guard?: (modelProps: T) => boolean; - edges?: Array>; - renderer: (app: IFunFrets) => VNode; -} -export declare function setup(modelProps: T, setupFn: (fretsApp: IFunFrets) => void, opts?: ISetupOptions): IMountable; -export {}; +export declare function setup(modelProps: T, setupFn: (fretsApp: FunFrets) => void, options?: SetupOptions): Mountable; diff --git a/build/main/Frets.js b/build/main/Frets.js index 9d89d19..0c7c17c 100644 --- a/build/main/Frets.js +++ b/build/main/Frets.js @@ -1,11 +1,17 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +exports.setup = void 0; const maquette_1 = require("maquette"); -// Import * as maquette from 'maquette'; const path_parser_1 = require("path-parser"); -function setup(modelProps, setupFn, opts) { - var _a; - const projector = ((_a = opts) === null || _a === void 0 ? void 0 : _a.projector) || maquette_1.createProjector(); +/** + * Creates a Frets application, it takes initial modelProps for your data model, and a function to be called when first run + * @param {T} modelProps + * @param {(fretsApp:FunFrets)=>void} setupFn + * @param {SetupOptions} options? + * @returns Mountable + */ +function setup(modelProps, setupFn, options) { + const projector = (options === null || options === void 0 ? void 0 : options.projector) || (0, maquette_1.createProjector)(); const actions = {}; const routes = {}; const registeredFieldActions = {}; @@ -54,7 +60,6 @@ function setup(modelProps, setupFn, opts) { for (const key in modelPresenters) { if (Object.prototype.hasOwnProperty.call(modelPresenters, key)) { const accept = modelPresenters[key]; - // Console.log('--> sending proposal', proposal); accept(proposal); } } @@ -72,7 +77,7 @@ function setup(modelProps, setupFn, opts) { // Console.log("register route", key, path) routes[key] = { calculator: actionFn, - spec: new path_parser_1.Path(path) + spec: new path_parser_1.Path(path), }; } function registerAcceptor(presenterFn) { @@ -83,41 +88,19 @@ function setup(modelProps, setupFn, opts) { }; } } - // Function registerView(renderFn: (fretsApp: IFunFrets) => VNode) { - // stateRenderer = () => { - // console.log("calling renderView fn", F) - // return renderFn(F); - // } - // state = (newProps: Partial) => { - // console.log('updating state inside frets', newProps) - // modelProps = { - // ...modelProps, - // ...newProps - // } - // projector.scheduleRender(); - // }; - // } function resolveState(props) { if (!stateGraph.entry) { throw new Error('Cannot resolve current state.'); } function validEdge(edges) { - // Console.log('checking all guards', props); - return edges.find(x => { - // Console.log('guard', x.guard(props)); + if (!edges) + return undefined; + return edges.find((x) => { return x.guard(props); }); } const nestedEdges = (s) => { - // Console.log('eval node', s.name); - if (s.edges && s.edges.length !== 0) { - const v = validEdge(s.edges); - // Console.log('found valid edge', v); - if (v) { - return nestedEdges(v); - } - } - return s; + return (s && nestedEdges(validEdge(s.edges))) || s; }; return nestedEdges(stateGraph.entry); } @@ -131,16 +114,16 @@ function setup(modelProps, setupFn, opts) { if (Object.prototype.hasOwnProperty.call(routes, key)) { const entry = routes[key]; // Console.log("testing", entry) - const res = entry.spec.test(window.location.pathname); - if (res) { + const result = entry.spec.test(window.location.pathname); + if (result) { // Console.log("found route", res) - entry.calculator({ key, path: entry.spec.path, data: res }, modelPresenter); + entry.calculator({ key, path: entry.spec.path, data: result }, modelPresenter); } } } } let stateRenderer; - const F = { + const fretsInstance = { getRouteLink, modelProps, navToPath, @@ -151,36 +134,34 @@ function setup(modelProps, setupFn, opts) { registerAction, registerField(key, initialValue, validation) { const handler = (evt, skipValidation) => { - let val; - if (typeof evt === typeof InputEvent) { - val = evt.data; - } - else { - val = evt.target.value; - } - this.modelProps.registeredFieldsValues[key] = val; - if (val.length > 0) { + const value = typeof evt === typeof InputEvent + ? evt.data + : evt.target.value; + this.modelProps.registeredFieldsValues[key] = value; + if (value.length > 0) { this.modelProps.registeredFieldsState[key].dirty = true; // Latching switch } if (!skipValidation) { validate(); } - // Console.log('field event handler finished', this.modelProps); }; const validate = () => { - const v = this.modelProps.registeredFieldsState[key].validation; - if (v) { - // Console.log('validating', v); - const val = this.modelProps.registeredFieldsValues[key]; + const { validation } = fretsInstance.modelProps.registeredFieldsState[key]; + if (validation) { + const value = fretsInstance.modelProps.registeredFieldsValues[key]; const errors = []; - if (v.notEmpty && (!val || val === '')) { - errors.push(v.notEmpty.message); + if (validation.notEmpty && (!value || value === '')) { + errors.push(validation.notEmpty.message); } - if (v.minLength && val.length < v.minLength.value) { - errors.push(v.minLength.message); + if (typeof value === 'string' && + validation.minLength && + value.length < validation.minLength.value) { + errors.push(validation.minLength.message); } - if (v.maxLength && val.length > v.maxLength.value) { - errors.push(v.maxLength.message); + if (typeof value === 'string' && + validation.maxLength && + value.length > validation.maxLength.value) { + errors.push(validation.maxLength.message); } this.modelProps.registeredFieldValidationErrors[key] = errors; } @@ -202,12 +183,12 @@ function setup(modelProps, setupFn, opts) { this.modelProps.registeredFieldValidationErrors[key] = []; }, handler, - isDirty: () => this.modelProps.registeredFieldsState[key].dirty, - isValid: () => !(this.modelProps.registeredFieldValidationErrors[key].length > 0), + isDirty: () => fretsInstance.modelProps.registeredFieldsState[key].dirty, + isValid: () => this.modelProps.registeredFieldValidationErrors[key].length === 0, key, validate, - validationErrors: this.modelProps.registeredFieldValidationErrors[key], - value: this.modelProps.registeredFieldsValues[key] + validationErrors: fretsInstance.modelProps.registeredFieldValidationErrors[key], + value: fretsInstance.modelProps.registeredFieldsValues[key], }; }, registerRouteAction, @@ -221,28 +202,27 @@ function setup(modelProps, setupFn, opts) { return renderFn(this); }; state = (newProps) => { - var _a; - this.modelProps = Object.assign(Object.assign({}, this.modelProps), newProps); - if ((_a = stateGraph) === null || _a === void 0 ? void 0 : _a.entry) { + fretsInstance.modelProps = Object.assign(Object.assign({}, fretsInstance.modelProps), newProps); + if (stateGraph === null || stateGraph === void 0 ? void 0 : stateGraph.entry) { this.currentStateNode = resolveState(this.modelProps); } projector.scheduleRender(); }; - } + }, }; - window.onpopstate = () => { + window.addEventListener('popstate', () => { applyRouteFunction(); - }; - setupFn(F); + }); + setupFn(fretsInstance); return { - fretsApp: F, - mountTo: (id) => { + fretsApp: fretsInstance, + mountTo(id) { // eslint-disable-next-line unicorn/prefer-query-selector projector.replace(document.getElementById(id), stateRenderer); }, present: modelPresenter, - stateRenderer + stateRenderer, }; } exports.setup = setup; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRnJldHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvRnJldHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx1Q0FBMkQ7QUFDM0Qsd0NBQXdDO0FBRXhDLDZDQUFpQztBQTJHakMsU0FBZ0IsS0FBSyxDQUNwQixVQUFhLEVBQ2IsT0FBeUMsRUFDekMsSUFBb0I7O0lBRXBCLE1BQU0sU0FBUyxHQUFHLE9BQUEsSUFBSSwwQ0FBRSxTQUFTLEtBQUksMEJBQWUsRUFBRSxDQUFDO0lBRXZELE1BQU0sT0FBTyxHQUVULEVBQUUsQ0FBQztJQUVQLE1BQU0sTUFBTSxHQUtSLEVBQUUsQ0FBQztJQUVQLE1BQU0sc0JBQXNCLEdBRXhCLEVBQUUsQ0FBQztJQUVQLE1BQU0sVUFBVSxHQUE0QixFQUFFLENBQUM7SUFFL0MsSUFBSSxnQkFBMkMsQ0FBQztJQUNoRDs7Ozs7T0FLRztJQUNILFNBQVMsWUFBWSxDQUFDLEdBQVcsRUFBRSxJQUFVO1FBQzVDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDNUIsT0FBTyxLQUFLLENBQUM7U0FDYjtRQUVELE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFNBQVMsVUFBVSxDQUFDLEdBQVcsRUFBRSxJQUFVO1FBQzFDLE1BQU0sQ0FBQyxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLEVBQUU7WUFDTixTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDYjtJQUNGLENBQUM7SUFFRDs7O09BR0c7SUFDSCxTQUFTLFNBQVMsQ0FBQyxJQUFZO1FBQzlCLElBQUk7WUFDSCxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxF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 \ No newline at end of file +//# sourceMappingURL=Frets.js.map \ No newline at end of file diff --git a/build/main/Frets.js.map b/build/main/Frets.js.map new file mode 100644 index 0000000..b2d067b --- /dev/null +++ b/build/main/Frets.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Frets.js","sourceRoot":"","sources":["../../src/Frets.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/main/Frets.spec.js b/build/main/Frets.spec.js index 85c0923..00bcdcf 100644 --- a/build/main/Frets.spec.js +++ b/build/main/Frets.spec.js @@ -18,8 +18,8 @@ class SimpleProps extends index_1.PropsWithFields { this.checkValue = 0; } } -ava_1.default('FRETS initializes with simple types', t => { - const app = index_1.setup(new SimpleProps(), (f) => { +(0, ava_1.default)('FRETS initializes with simple types', t => { + const app = (0, index_1.setup)(new SimpleProps(), (f) => { t.truthy(f.modelProps); t.truthy(f.modelProps.messages); }); @@ -27,8 +27,8 @@ ava_1.default('FRETS initializes with simple types', t => { }); // Test("renders default div", (t) => { // }); -ava_1.default('actions change state', t => { - const app = index_1.setup(new SimpleProps(), f => { +(0, ava_1.default)('actions change state', t => { + const app = (0, index_1.setup)(new SimpleProps(), f => { f.registerAcceptor((proposal, state) => { if (proposal.messages) { f.modelProps.messages = proposal.messages; @@ -39,13 +39,13 @@ ava_1.default('actions change state', t => { present({ messages: ['test'] }); }); f.registerView((fretsApp) => { - return maquette_1.h('div', [ - maquette_1.h('button', { onclick: changeState }, ['Load Messages']), - maquette_1.h('ul', fretsApp.modelProps.messages.map(x => maquette_1.h('li', [x.toString()]))) + return (0, maquette_1.h)('div', [ + (0, maquette_1.h)('button', { onclick: changeState }, ['Load Messages']), + (0, maquette_1.h)('ul', fretsApp.modelProps.messages.map(x => (0, maquette_1.h)('li', [x.toString()]))) ]); }); }); - const proj = maquette_query_1.createTestProjector(app.stateRenderer); + const proj = (0, maquette_query_1.createTestProjector)(app.stateRenderer); const list = proj.query('ul'); t.falsy(list.children.length); const button = proj.query('button'); @@ -55,8 +55,8 @@ ava_1.default('actions change state', t => { t.falsy(list.children[0].children); t.is(list.children[0].text, 'test'); }); -ava_1.default('change state but validator stops mutation', t => { - const mainApp = index_1.setup(new SimpleProps(), f => { +(0, ava_1.default)('change state but validator stops mutation', t => { + const mainApp = (0, index_1.setup)(new SimpleProps(), f => { f.registerAcceptor((proposal, state) => { if (proposal.checkValue < 0) { f.modelProps.messages = ['Invalid']; @@ -70,14 +70,14 @@ ava_1.default('change state but validator stops mutation', t => { propose({ checkValue: -1 }); }); f.registerView((app) => { - return maquette_1.h('div', [ - maquette_1.h('button#valid', { onclick: setOne }, ['Set to 1']), - maquette_1.h('button#invalid', { onclick: setNegOne }, ['Set to -1']), - maquette_1.h('ul', app.modelProps.messages.map(x => maquette_1.h('li', [x.toString()]))) + return (0, maquette_1.h)('div', [ + (0, maquette_1.h)('button#valid', { onclick: setOne }, ['Set to 1']), + (0, maquette_1.h)('button#invalid', { onclick: setNegOne }, ['Set to -1']), + (0, maquette_1.h)('ul', app.modelProps.messages.map(x => (0, maquette_1.h)('li', [x.toString()]))) ]); }); }); - const proj = maquette_query_1.createTestProjector(mainApp.stateRenderer); + const proj = (0, maquette_query_1.createTestProjector)(mainApp.stateRenderer); const list = proj.query('ul'); t.falsy(list.children.length); const button1 = proj.query('button#valid'); @@ -87,8 +87,8 @@ ava_1.default('change state but validator stops mutation', t => { button2.simulate.click(); t.is(list.children[0].text, 'Invalid'); }); -ava_1.default('state updates async', t => { - const mainApp = index_1.setup(new SimpleProps(), f => { +(0, ava_1.default)('state updates async', t => { + const mainApp = (0, index_1.setup)(new SimpleProps(), f => { f.registerAcceptor((proposal, state) => { state(f.modelProps); }); @@ -100,13 +100,13 @@ ava_1.default('state updates async', t => { }, 50); }); f.registerView((app) => { - return maquette_1.h('div', [ - maquette_1.h('button', { onclick: timeoutdone }, ['Load Messages']), - maquette_1.h('ul', app.modelProps.messages.map(x => maquette_1.h('li', [x.toString()]))) + return (0, maquette_1.h)('div', [ + (0, maquette_1.h)('button', { onclick: timeoutdone }, ['Load Messages']), + (0, maquette_1.h)('ul', app.modelProps.messages.map(x => (0, maquette_1.h)('li', [x.toString()]))) ]); }); }); - const proj = maquette_query_1.createTestProjector(mainApp.stateRenderer); + const proj = (0, maquette_query_1.createTestProjector)(mainApp.stateRenderer); const list = proj.query('ul'); t.falsy(list.children.length); proj.query('button').simulate.click(); @@ -116,11 +116,10 @@ ava_1.default('state updates async', t => { t.is(list2.children[0].text, 'async'); }, 100); }); -ava_1.default('state updates async model', t => { - const mainApp = index_1.setup(new SimpleProps(), f => { +(0, ava_1.default)('state updates async model', t => { + const mainApp = (0, index_1.setup)(new SimpleProps(), f => { f.registerAcceptor((proposal, state) => { - var _a; - if ((_a = proposal) === null || _a === void 0 ? void 0 : _a.messages.length) { + if (proposal === null || proposal === void 0 ? void 0 : proposal.messages.length) { f.modelProps.messages = proposal.messages; state(f.modelProps); } @@ -133,13 +132,13 @@ ava_1.default('state updates async model', t => { present({ messages: ['loading'] }); }); f.registerView((app) => { - return maquette_1.h('div', [ - maquette_1.h('button', { onclick: timeoutdone }, ['Load Messages']), - maquette_1.h('ul', app.modelProps.messages.map(x => maquette_1.h('li', [x.toString()]))) + return (0, maquette_1.h)('div', [ + (0, maquette_1.h)('button', { onclick: timeoutdone }, ['Load Messages']), + (0, maquette_1.h)('ul', app.modelProps.messages.map(x => (0, maquette_1.h)('li', [x.toString()]))) ]); }); }); - const proj = maquette_query_1.createTestProjector(mainApp.stateRenderer); + const proj = (0, maquette_query_1.createTestProjector)(mainApp.stateRenderer); const list = proj.query('ul'); t.falsy(list.children.length); proj.query('button').simulate.click(); @@ -151,26 +150,26 @@ ava_1.default('state updates async model', t => { t.is(list2.children[0].text, 'done'); }, 100); }); -ava_1.default('registers a field', t => { - const mainApp = index_1.setup(new SimpleProps(), f => { +(0, ava_1.default)('registers a field', t => { + const mainApp = (0, index_1.setup)(new SimpleProps(), f => { const field = f.registerField('test', '0'); t.is(f.modelProps.registeredFieldsValues.test, '0'); t.is(field.value, '0'); }); }); -ava_1.default("registers and updates a field", (t) => { - const mainApp = index_1.setup(new SimpleProps(), (f) => { +(0, ava_1.default)("registers and updates a field", (t) => { + const mainApp = (0, index_1.setup)(new SimpleProps(), (f) => { f.registerView((app) => { const field = f.registerField("test", "a"); t.truthy(field.value); - return maquette_1.h("div", [ - maquette_1.h("button", ["Load Messages"]), - maquette_1.h("input", { type: "text", oninput: field.handler, value: field.value.toString() }), - maquette_1.h("div.output", [field.value]), + return (0, maquette_1.h)("div", [ + (0, maquette_1.h)("button", ["Load Messages"]), + (0, maquette_1.h)("input", { type: "text", onchange: field.handler, value: field.value.toString() }), + (0, maquette_1.h)("div.output", [field.value]), ]); }); }); - const proj = maquette_query_1.createTestProjector(mainApp.stateRenderer); + const proj = (0, maquette_query_1.createTestProjector)(mainApp.stateRenderer); const input = proj.query("input"); let inputElement; // not really useful in this particular application, but added just for demonstration purposes. proj.initialize(mainApp.stateRenderer); @@ -178,9 +177,42 @@ ava_1.default("registers and updates a field", (t) => { input.setTargetDomNode(inputElement); t.truthy(input.exists); t.is(proj.query(".output").textContent, "a"); - proj.query("input").simulate.keyPress("b", "", "ab"); + inputElement = { value: 'ab' }; + input.simulate.change(inputElement); t.is(proj.query(".output").textContent, "ab"); }); +(0, ava_1.default)("validates a field", (t) => { + const mainApp = (0, index_1.setup)(new SimpleProps(), (f) => { + f.registerView((app) => { + const field2 = f.registerField("test2", "", { notEmpty: { value: true, message: "missing" }, minLength: { value: 2, message: "short" }, maxLength: { value: 2, message: "long" } }); + return (0, maquette_1.h)("div", [ + (0, maquette_1.h)("input", { type: "text", onchange: field2.handler, value: field2.value.toString() }), + (0, maquette_1.h)("div.message", [field2.validationErrors]), + (0, maquette_1.h)("div.output", [field2.value]), + ]); + }); + }); + const proj = (0, maquette_query_1.createTestProjector)(mainApp.stateRenderer); + const input = proj.query("input"); + let inputElement; // not really useful in this particular application, but added just for demonstration purposes. + proj.initialize(mainApp.stateRenderer); + inputElement = { value: '' }; + input.setTargetDomNode(inputElement); + t.truthy(input.exists); + t.is(proj.query(".output").textContent, ""); + inputElement = { value: 'b' }; + input.simulate.change(inputElement); + t.is(proj.query(".output").textContent, "b"); + t.is(proj.query(".message").textContent, "short"); + inputElement = { value: 'bc' }; + input.simulate.change(inputElement); + t.is(proj.query(".output").textContent, "bc"); + t.is(proj.query(".message").textContent, ""); + inputElement = { value: 'bcd' }; + input.simulate.change(inputElement); + t.is(proj.query(".output").textContent, "bcd"); + t.is(proj.query(".message").textContent, "long"); +}); // test("register view async", (t) => { // const F = new FRETS(new SimpleProps(), new SimpleActions()); // async function asyncViewFunction(app: main): Promise { @@ -198,8 +230,8 @@ ava_1.default("registers and updates a field", (t) => { // const list = proj.query("ul"); // t.truthy(list.exists); // }); -ava_1.default('registers a route and changes when navigating', t => { - const mainApp = index_1.setup(new SimpleProps(), f => { +(0, ava_1.default)('registers a route and changes when navigating', t => { + const mainApp = (0, index_1.setup)(new SimpleProps(), f => { f.registerAcceptor((proposal, state) => { if (proposal.activeScreen) { f.modelProps.activeScreen = proposal.activeScreen; @@ -217,17 +249,17 @@ ava_1.default('registers a route and changes when navigating', t => { }); }); f.registerView((app) => { - return maquette_1.h('div', [ + return (0, maquette_1.h)('div', [ !app.modelProps.activeScreen || app.modelProps.activeScreen === SimpleScreens.Home - ? maquette_1.h('h1', ['Home Page']) - : maquette_1.h('h1', ['About Page']) + ? (0, maquette_1.h)('h1', ['Home Page']) + : (0, maquette_1.h)('h1', ['About Page']) ]); }); }); t.is(mainApp.fretsApp.getRouteLink('about'), '/about'); t.false(mainApp.fretsApp.getRouteLink('xyz')); - const proj = maquette_query_1.createTestProjector(mainApp.stateRenderer); + const proj = (0, maquette_query_1.createTestProjector)(mainApp.stateRenderer); t.is(proj.query('h1').textContent, 'Home Page'); mainApp.fretsApp.navToPath('/about'); window.dispatchEvent(new Event('popstate')); @@ -261,8 +293,8 @@ class FormProps extends index_1.PropsWithFields { this.actionInProgress = 'load'; } } -ava_1.default("state graph resolves", (t) => { - const main = index_1.setup(new FormProps(), f => { +(0, ava_1.default)("state graph resolves", (t) => { + const main = (0, index_1.setup)(new FormProps(), f => { f.registerAcceptor((proposal, updateState) => { console.log('accepting', proposal); updateState(proposal); @@ -275,47 +307,47 @@ ava_1.default("state graph resolves", (t) => { { name: 'submitted', guard: (props) => props.status === 'submitted', - renderer: () => maquette_1.h("span", ["submitted the form"]) + renderer: () => (0, maquette_1.h)("span", ["submitted the form"]) }, { name: 'saved', guard: (props) => Boolean(props.id), - renderer: () => maquette_1.h("span", ["saved form"]), + renderer: () => (0, maquette_1.h)("span", ["saved form"]), edges: [ { name: 'submitting', guard: (props) => props.actionInProgress === 'submit', - renderer: () => maquette_1.h("span", ["submitting"]) + renderer: () => (0, maquette_1.h)("span", ["submitting"]) } ] }, { name: 'empty', guard: (props) => !props.id && props.actionInProgress !== 'load', - renderer: () => maquette_1.h("span", ["empty form screen"]), + renderer: () => (0, maquette_1.h)("span", ["empty form screen"]), edges: [ { name: 'saving', guard: (props) => (props.actionInProgress === 'save'), - renderer: () => maquette_1.h("span", ["saving"]) + renderer: () => (0, maquette_1.h)("span", ["saving"]) } ] }, ], - renderer: () => maquette_1.h("span", ["opening screen"]) + renderer: () => (0, maquette_1.h)("span", ["opening screen"]) }); t.truthy(f.currentStateNode); const save = f.registerAction('save', (e, present) => { console.log('finished loading action'); present({ actionInProgress: 'save' }); }); - f.registerView((app) => maquette_1.h('div', [ - maquette_1.h('button#save', { onclick: save }, ['save']), + f.registerView((app) => (0, maquette_1.h)('div', [ + (0, maquette_1.h)('button#save', { onclick: save }, ['save']), app.currentStateNode.renderer(app) ])); }); t.is(main.fretsApp.modelProps.actionInProgress, 'load'); - const proj = maquette_query_1.createTestProjector(main.stateRenderer); + const proj = (0, maquette_query_1.createTestProjector)(main.stateRenderer); t.is(proj.query('span').textContent, 'opening screen'); // t.is(main.fretsApp.resolveState().name, 'opening') main.present({ actionInProgress: undefined }); @@ -329,4 +361,4 @@ ava_1.default("state graph resolves", (t) => { main.present({ actionInProgress: undefined, status: 'submitted' }); t.is(proj.query('span').textContent, 'submitted the form'); }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJldHMuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mcmV0cy5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNkJBQXVCO0FBQ3ZCLG1DQUlpQjtBQUNqQix1Q0FBa0M7QUFDbEMsbURBQXFEO0FBR3JELElBQUssYUFLSjtBQUxELFdBQUssYUFBYTtJQUNqQixtREFBSyxDQUFBO0lBQ0wsK0NBQUcsQ0FBQTtJQUNILGlEQUFJLENBQUE7SUFDSixtREFBSyxDQUFBO0FBQ04sQ0FBQyxFQUxJLGFBQWEsS0FBYixhQUFhLFFBS2pCO0FBRUQsTUFBTSxXQUFZLFNBQVEsdUJBQWU7SUFBekM7O1FBQ1EsYUFBUSxHQUFhLEVBQUUsQ0FBQztRQUd4QixlQUFVLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7Q0FBQTtBQUlELGFBQUksQ0FBQyxxQ0FBcUMsRUFBRSxDQUFDLENBQUMsRUFBRTtJQUMvQyxNQUFNLEdBQUcsR0FBRyxhQUFLLENBQWMsSUFBSSxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQU8sRUFBRSxFQUFFO1FBQzdELENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNILENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0FBRUgsdUNBQXVDO0FBRXZDLE1BQU07QUFFTixhQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDaEMsTUFBTSxHQUFHLEdBQUcsYUFBSyxDQUFjLElBQUksV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUU7UUFDckQsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxF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 \ No newline at end of file +//# sourceMappingURL=Frets.spec.js.map \ No newline at end of file diff --git a/build/main/Frets.spec.js.map b/build/main/Frets.spec.js.map new file mode 100644 index 0000000..e8dfc83 --- /dev/null +++ b/build/main/Frets.spec.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Frets.spec.js","sourceRoot":"","sources":["../../src/Frets.spec.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/main/Frets.types.d.ts b/build/main/Frets.types.d.ts new file mode 100644 index 0000000..176b9ba --- /dev/null +++ b/build/main/Frets.types.d.ts @@ -0,0 +1,63 @@ +import { Path } from 'path-parser'; +import { Projector, VNode } from 'maquette'; +import { PropsWithFields, ValidationConfiguration } from './props-field-registry'; +export declare type HandlerFn = (evt: Event, skipValidation?: boolean) => void; +export interface RegisteredField { + handler: HandlerFn; + validate: () => void; + validationErrors: string[]; + isValid: () => boolean; + isDirty: () => boolean; + value: string; + clear: () => void; + key: string; +} +export declare type RouteRegistry = Record) => T; + spec: Path; +}>; +export declare type RouteActionFn = (context: { + key: string; + path: string; + data: any; +}, present: Present) => void; +export declare type ActionsObject = Record>; +export declare type Present = (proposal: Partial) => void; +export declare type ActionEventHandler = (event: Event) => void; +export declare type ActionFn = (event: Event, present: Present) => void; +export declare type ModelPresenter = (proposal: Partial, state: (props: Partial) => void) => void; +export declare type RegisterFieldFn = (key: string, defaultValue?: string, validation?: ValidationConfiguration) => RegisteredField; +/** + * Primary controlling object for registering your app logic and interacting with routing. + * This is returned by the `setup()` function + */ +export interface FunFrets { + modelProps: T; + present: (proposal: Partial) => void; + projector: Projector; + registerView: (renderFn: (app: FunFrets) => VNode) => void; + registerField: RegisterFieldFn; + registerAction: (key: string, actionFn: ActionFn) => ActionEventHandler; + registerRouteAction: (key: string, path: string, actionFn: RouteActionFn) => void; + registerAcceptor: (presenterFn: ModelPresenter) => void; + registerStateGraph: (entryState: StateNode) => void; + currentStateNode: StateNode; + getRouteLink: (key: string, data?: any) => string | false; + navToRoute: (key: string, data?: any) => void; + navToPath: (key: string, data?: any) => void; +} +export interface Mountable { + fretsApp: FunFrets; + mountTo: (id: string) => void; + stateRenderer: () => VNode; + present: (proposal: Partial) => void; +} +export interface SetupOptions { + projector: Projector; +} +export interface StateNode { + name: string; + guard?: (modelProps: T) => boolean; + edges?: Array>; + renderer: (app: FunFrets) => VNode; +} diff --git a/build/main/Frets.types.js b/build/main/Frets.types.js new file mode 100644 index 0000000..ca60b86 --- /dev/null +++ b/build/main/Frets.types.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=Frets.types.js.map \ No newline at end of file diff --git a/build/main/Frets.types.js.map b/build/main/Frets.types.js.map new file mode 100644 index 0000000..2dd3c45 --- /dev/null +++ b/build/main/Frets.types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Frets.types.js","sourceRoot":"","sources":["../../src/Frets.types.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/build/main/index.d.ts b/build/main/index.d.ts index 690811b..ffff974 100644 --- a/build/main/index.d.ts +++ b/build/main/index.d.ts @@ -1,6 +1,5 @@ -import * as maquette from 'maquette'; -import { VNode, VNodeChild, VNodeChildren, VNodeProperties } from 'maquette'; -export { setup, IActionEventHandler, IActionFn, IFunFrets, IPresent, IMountable, IModelPresenter, IRegisteredField } from './Frets'; -export { PropsWithFields } from './props-field-registry'; -export { maquette }; -export { VNode, VNodeChild, VNodeProperties, VNodeChildren }; +export { VNode, VNodeChild, VNodeChildren, VNodeProperties } from 'maquette'; +export { setup } from './Frets'; +export { ActionEventHandler, ActionFn, FunFrets, Present, Mountable, ModelPresenter, RegisteredField, } from './Frets.types'; +export { PropsWithFields, ValidationConfiguration } from './props-field-registry'; +export * as maquette from 'maquette'; diff --git a/build/main/index.js b/build/main/index.js index 20d9ced..f176e6d 100644 --- a/build/main/index.js +++ b/build/main/index.js @@ -1,9 +1,9 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const maquette = require("maquette"); -exports.maquette = maquette; +exports.maquette = exports.PropsWithFields = exports.setup = void 0; var Frets_1 = require("./Frets"); -exports.setup = Frets_1.setup; +Object.defineProperty(exports, "setup", { enumerable: true, get: function () { return Frets_1.setup; } }); var props_field_registry_1 = require("./props-field-registry"); -exports.PropsWithFields = props_field_registry_1.PropsWithFields; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxxQ0FBcUM7QUFjN0IsNEJBQVE7QUFYaEIsaUNBU2lCO0FBUmhCLHdCQUFBLEtBQUssQ0FBQTtBQVNOLCtEQUF1RDtBQUEvQyxpREFBQSxlQUFlLENBQUEifQ== \ No newline at end of file +Object.defineProperty(exports, "PropsWithFields", { enumerable: true, get: function () { return props_field_registry_1.PropsWithFields; } }); +exports.maquette = require("maquette"); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/main/index.js.map b/build/main/index.js.map new file mode 100644 index 0000000..ff2da92 --- /dev/null +++ b/build/main/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAEA,iCAA8B;AAAtB,8FAAA,KAAK,OAAA;AAUb,+DAAgF;AAAxE,uHAAA,eAAe,OAAA;AAEvB,uCAAqC"} \ No newline at end of file diff --git a/build/main/props-field-registry.d.ts b/build/main/props-field-registry.d.ts index f0123b8..b33eaac 100644 --- a/build/main/props-field-registry.d.ts +++ b/build/main/props-field-registry.d.ts @@ -1,16 +1,23 @@ -import { IValidationObject } from './Frets'; -export declare class PropsWithFields { - registeredFieldsValues: { - [key: string]: any; +export interface ValidationConfiguration { + notEmpty?: { + value: boolean; + message: string; }; - registeredFieldsState: { - [key: string]: { - dirty: boolean; - validation: IValidationObject; - }; + minLength?: { + value: number; + message: string; }; - registeredFieldValidationErrors: { - [key: string]: string[]; + maxLength?: { + value: number; + message: string; }; +} +export declare class PropsWithFields { + registeredFieldsValues: Record; + registeredFieldsState: Record; + registeredFieldValidationErrors: Record; constructor(data?: any); } diff --git a/build/main/props-field-registry.js b/build/main/props-field-registry.js index b663d63..e453090 100644 --- a/build/main/props-field-registry.js +++ b/build/main/props-field-registry.js @@ -1,5 +1,6 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +exports.PropsWithFields = void 0; class PropsWithFields { constructor(data) { this.registeredFieldsValues = {}; @@ -9,4 +10,4 @@ class PropsWithFields { } } exports.PropsWithFields = PropsWithFields; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcHMtZmllbGQtcmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvcHMtZmllbGQtcmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSxNQUFhLGVBQWU7SUFhM0IsWUFBWSxJQUFVO1FBWmYsMkJBQXNCLEdBRXpCLEVBQUUsQ0FBQztRQUVBLDBCQUFxQixHQUV4QixFQUFFLENBQUM7UUFFQSxvQ0FBK0IsR0FFbEMsRUFBRSxDQUFDO1FBR04sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztDQUNEO0FBaEJELDBDQWdCQyJ9 \ No newline at end of file +//# sourceMappingURL=props-field-registry.js.map \ No newline at end of file diff --git a/build/main/props-field-registry.js.map b/build/main/props-field-registry.js.map new file mode 100644 index 0000000..2ebdedb --- /dev/null +++ b/build/main/props-field-registry.js.map @@ -0,0 +1 @@ +{"version":3,"file":"props-field-registry.js","sourceRoot":"","sources":["../../src/props-field-registry.ts"],"names":[],"mappings":";;;AAcA,MAAa,eAAe;IAU3B,YAAY,IAAU;QATf,2BAAsB,GAAuC,EAAE,CAAC;QAEhE,0BAAqB,GAGxB,EAAE,CAAC;QAEA,oCAA+B,GAA6B,EAAE,CAAC;QAGrE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC;CACD;AAbD,0CAaC"} \ No newline at end of file diff --git a/build/module/Frets.js b/build/module/Frets.js new file mode 100644 index 0000000..4d61ec6 --- /dev/null +++ b/build/module/Frets.js @@ -0,0 +1,224 @@ +import { createProjector } from 'maquette'; +import { Path } from 'path-parser'; +/** + * Creates a Frets application, it takes initial modelProps for your data model, and a function to be called when first run + * @param {T} modelProps + * @param {(fretsApp:FunFrets)=>void} setupFn + * @param {SetupOptions} options? + * @returns Mountable + */ +export function setup(modelProps, setupFn, options) { + const projector = (options === null || options === void 0 ? void 0 : options.projector) || createProjector(); + const actions = {}; + const routes = {}; + const registeredFieldActions = {}; + const stateGraph = {}; + let currentStateNode; + /** + * Returns a path when given the key of a route that was previously registered. + * @param {string} key + * @param {any} data? A route data object + * @returns string + */ + function getRouteLink(key, data) { + if (!routes || !routes[key]) { + return false; + } + return routes[key].spec.build(data || {}); + } + /** + * Change the browser location to match the path configured in the route with the + * provided key. You still need to call an action to update state before the UI will re-render. + * @param {string} key + * @param {any} data? + */ + function navToRoute(key, data) { + const r = getRouteLink(key, data); + if (r) { + navToPath(r); + } + } + /** + * Update the browser location with the provided raw string path. + * @param {string} path + */ + function navToPath(path) { + try { + window.history.pushState(modelProps, '', path); + } + catch (error) { + console.warn('Error routing', error); + window.location.pathname = path; + } + applyRouteFunction(); + } + const modelPresenters = {}; + function modelPresenter(proposal) { + for (const key in modelPresenters) { + if (Object.prototype.hasOwnProperty.call(modelPresenters, key)) { + const accept = modelPresenters[key]; + accept(proposal); + } + } + } + let state; + function registerAction(key, actionFn) { + if (!actions[key]) { + actions[key] = actionFn; + } + return (event) => { + actionFn(event, modelPresenter); + }; + } + function registerRouteAction(key, path, actionFn) { + // Console.log("register route", key, path) + routes[key] = { + calculator: actionFn, + spec: new Path(path), + }; + } + function registerAcceptor(presenterFn) { + const acceptorId = presenterFn.toString().slice(0, 250); + if (!modelPresenters[acceptorId]) { + modelPresenters[acceptorId] = (proposal) => { + presenterFn(proposal, state); + }; + } + } + function resolveState(props) { + if (!stateGraph.entry) { + throw new Error('Cannot resolve current state.'); + } + function validEdge(edges) { + if (!edges) + return undefined; + return edges.find((x) => { + return x.guard(props); + }); + } + const nestedEdges = (s) => { + return (s && nestedEdges(validEdge(s.edges))) || s; + }; + return nestedEdges(stateGraph.entry); + } + /** + * Checks to see if any of the registered routes are matched and then updates the app state using + * the provided transformation function. + */ + function applyRouteFunction() { + // Console.log("routes:", routes) + for (const key in routes) { + if (Object.prototype.hasOwnProperty.call(routes, key)) { + const entry = routes[key]; + // Console.log("testing", entry) + const result = entry.spec.test(window.location.pathname); + if (result) { + // Console.log("found route", res) + entry.calculator({ key, path: entry.spec.path, data: result }, modelPresenter); + } + } + } + } + let stateRenderer; + const fretsInstance = { + getRouteLink, + modelProps, + navToPath, + navToRoute, + present: modelPresenter, + projector, + registerAcceptor, + registerAction, + registerField(key, initialValue, validation) { + const handler = (evt, skipValidation) => { + const value = typeof evt === typeof InputEvent + ? evt.data + : evt.target.value; + this.modelProps.registeredFieldsValues[key] = value; + if (value.length > 0) { + this.modelProps.registeredFieldsState[key].dirty = true; // Latching switch + } + if (!skipValidation) { + validate(); + } + }; + const validate = () => { + const { validation } = fretsInstance.modelProps.registeredFieldsState[key]; + if (validation) { + const value = fretsInstance.modelProps.registeredFieldsValues[key]; + const errors = []; + if (validation.notEmpty && (!value || value === '')) { + errors.push(validation.notEmpty.message); + } + if (typeof value === 'string' && + validation.minLength && + value.length < validation.minLength.value) { + errors.push(validation.minLength.message); + } + if (typeof value === 'string' && + validation.maxLength && + value.length > validation.maxLength.value) { + errors.push(validation.maxLength.message); + } + this.modelProps.registeredFieldValidationErrors[key] = errors; + } + }; + if (this.modelProps.registeredFieldsValues[key] === undefined) { + this.modelProps.registeredFieldsValues[key] = initialValue || ''; + this.modelProps.registeredFieldValidationErrors[key] = []; + this.modelProps.registeredFieldsState[key] = { dirty: false }; + if (validation) { + this.modelProps.registeredFieldsState[key].validation = validation; + } + } + if (registeredFieldActions[key] === undefined) { + registeredFieldActions[key] = handler; + } + return { + clear: () => { + this.modelProps.registeredFieldsValues[key] = initialValue || ''; + this.modelProps.registeredFieldValidationErrors[key] = []; + }, + handler, + isDirty: () => fretsInstance.modelProps.registeredFieldsState[key].dirty, + isValid: () => this.modelProps.registeredFieldValidationErrors[key].length === 0, + key, + validate, + validationErrors: fretsInstance.modelProps.registeredFieldValidationErrors[key], + value: fretsInstance.modelProps.registeredFieldsValues[key], + }; + }, + registerRouteAction, + registerStateGraph(entryState) { + stateGraph.entry = entryState; + this.currentStateNode = resolveState(modelProps); + }, + currentStateNode, + registerView(renderFn) { + stateRenderer = () => { + return renderFn(this); + }; + state = (newProps) => { + fretsInstance.modelProps = Object.assign(Object.assign({}, fretsInstance.modelProps), newProps); + if (stateGraph === null || stateGraph === void 0 ? void 0 : stateGraph.entry) { + this.currentStateNode = resolveState(this.modelProps); + } + projector.scheduleRender(); + }; + }, + }; + window.addEventListener('popstate', () => { + applyRouteFunction(); + }); + setupFn(fretsInstance); + return { + fretsApp: fretsInstance, + mountTo(id) { + // eslint-disable-next-line unicorn/prefer-query-selector + projector.replace(document.getElementById(id), stateRenderer); + }, + present: modelPresenter, + stateRenderer, + }; +} +//# sourceMappingURL=Frets.js.map \ No newline at end of file diff --git a/build/module/Frets.js.map b/build/module/Frets.js.map new file mode 100644 index 0000000..8147ea2 --- /dev/null +++ b/build/module/Frets.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Frets.js","sourceRoot":"","sources":["../../src/Frets.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/module/Frets.spec.js b/build/module/Frets.spec.js new file mode 100644 index 0000000..14c518e --- /dev/null +++ b/build/module/Frets.spec.js @@ -0,0 +1,362 @@ +import test from 'ava'; +import { PropsWithFields, setup } from './index'; +import { h } from 'maquette'; +import { createTestProjector } from 'maquette-query'; +var SimpleScreens; +(function (SimpleScreens) { + SimpleScreens[SimpleScreens["Start"] = 0] = "Start"; + SimpleScreens[SimpleScreens["End"] = 1] = "End"; + SimpleScreens[SimpleScreens["Home"] = 2] = "Home"; + SimpleScreens[SimpleScreens["About"] = 3] = "About"; +})(SimpleScreens || (SimpleScreens = {})); +class SimpleProps extends PropsWithFields { + constructor() { + super(...arguments); + this.messages = []; + this.checkValue = 0; + } +} +test('FRETS initializes with simple types', t => { + const app = setup(new SimpleProps(), (f) => { + t.truthy(f.modelProps); + t.truthy(f.modelProps.messages); + }); + t.truthy(app.mountTo); +}); +// Test("renders default div", (t) => { +// }); +test('actions change state', t => { + const app = setup(new SimpleProps(), f => { + f.registerAcceptor((proposal, state) => { + if (proposal.messages) { + f.modelProps.messages = proposal.messages; + } + state(f.modelProps); + }); + const changeState = f.registerAction('changeState', (e, present) => { + present({ messages: ['test'] }); + }); + f.registerView((fretsApp) => { + return h('div', [ + h('button', { onclick: changeState }, ['Load Messages']), + h('ul', fretsApp.modelProps.messages.map(x => h('li', [x.toString()]))) + ]); + }); + }); + const proj = createTestProjector(app.stateRenderer); + const list = proj.query('ul'); + t.falsy(list.children.length); + const button = proj.query('button'); + t.truthy(button.exists); + button.simulate.click(); + t.truthy(list.children.length); + t.falsy(list.children[0].children); + t.is(list.children[0].text, 'test'); +}); +test('change state but validator stops mutation', t => { + const mainApp = setup(new SimpleProps(), f => { + f.registerAcceptor((proposal, state) => { + if (proposal.checkValue < 0) { + f.modelProps.messages = ['Invalid']; + } + state(f.modelProps); + }); + const setOne = f.registerAction('setOne', (e, propose) => { + propose({ checkValue: 1 }); + }); + const setNegOne = f.registerAction('setNegOne', (e, propose) => { + propose({ checkValue: -1 }); + }); + f.registerView((app) => { + return h('div', [ + h('button#valid', { onclick: setOne }, ['Set to 1']), + h('button#invalid', { onclick: setNegOne }, ['Set to -1']), + h('ul', app.modelProps.messages.map(x => h('li', [x.toString()]))) + ]); + }); + }); + const proj = createTestProjector(mainApp.stateRenderer); + const list = proj.query('ul'); + t.falsy(list.children.length); + const button1 = proj.query('button#valid'); + const button2 = proj.query('button#invalid'); + button1.simulate.click(); + t.falsy(list.children.length); + button2.simulate.click(); + t.is(list.children[0].text, 'Invalid'); +}); +test('state updates async', t => { + const mainApp = setup(new SimpleProps(), f => { + f.registerAcceptor((proposal, state) => { + state(f.modelProps); + }); + const timeoutdone = f.registerAction('timeoutdone', (e, present) => { + setTimeout(() => { + present({ + messages: ['async'] + }); + }, 50); + }); + f.registerView((app) => { + return h('div', [ + h('button', { onclick: timeoutdone }, ['Load Messages']), + h('ul', app.modelProps.messages.map(x => h('li', [x.toString()]))) + ]); + }); + }); + const proj = createTestProjector(mainApp.stateRenderer); + const list = proj.query('ul'); + t.falsy(list.children.length); + proj.query('button').simulate.click(); + setTimeout(() => { + const list2 = proj.query('ul'); + t.truthy(list2.children.length); + t.is(list2.children[0].text, 'async'); + }, 100); +}); +test('state updates async model', t => { + const mainApp = setup(new SimpleProps(), f => { + f.registerAcceptor((proposal, state) => { + if (proposal === null || proposal === void 0 ? void 0 : proposal.messages.length) { + f.modelProps.messages = proposal.messages; + state(f.modelProps); + } + setTimeout(() => { + f.modelProps.messages = ['done']; + state(Object.assign({}, f.modelProps)); + }, 50); + }); + const timeoutdone = f.registerAction('timeoutdone', (e, present) => { + present({ messages: ['loading'] }); + }); + f.registerView((app) => { + return h('div', [ + h('button', { onclick: timeoutdone }, ['Load Messages']), + h('ul', app.modelProps.messages.map(x => h('li', [x.toString()]))) + ]); + }); + }); + const proj = createTestProjector(mainApp.stateRenderer); + const list = proj.query('ul'); + t.falsy(list.children.length); + proj.query('button').simulate.click(); + t.truthy(list.children.length); + t.is(list.children[0].text, 'loading'); + setTimeout(() => { + const list2 = proj.query('ul'); + t.truthy(list2.children.length); + t.is(list2.children[0].text, 'done'); + }, 100); +}); +test('registers a field', t => { + const mainApp = setup(new SimpleProps(), f => { + const field = f.registerField('test', '0'); + t.is(f.modelProps.registeredFieldsValues.test, '0'); + t.is(field.value, '0'); + }); +}); +test("registers and updates a field", (t) => { + const mainApp = setup(new SimpleProps(), (f) => { + f.registerView((app) => { + const field = f.registerField("test", "a"); + t.truthy(field.value); + return h("div", [ + h("button", ["Load Messages"]), + h("input", { type: "text", onchange: field.handler, value: field.value.toString() }), + h("div.output", [field.value]), + ]); + }); + }); + const proj = createTestProjector(mainApp.stateRenderer); + const input = proj.query("input"); + let inputElement; // not really useful in this particular application, but added just for demonstration purposes. + proj.initialize(mainApp.stateRenderer); + inputElement = { value: 'a' }; + input.setTargetDomNode(inputElement); + t.truthy(input.exists); + t.is(proj.query(".output").textContent, "a"); + inputElement = { value: 'ab' }; + input.simulate.change(inputElement); + t.is(proj.query(".output").textContent, "ab"); +}); +test("validates a field", (t) => { + const mainApp = setup(new SimpleProps(), (f) => { + f.registerView((app) => { + const field2 = f.registerField("test2", "", { notEmpty: { value: true, message: "missing" }, minLength: { value: 2, message: "short" }, maxLength: { value: 2, message: "long" } }); + return h("div", [ + h("input", { type: "text", onchange: field2.handler, value: field2.value.toString() }), + h("div.message", [field2.validationErrors]), + h("div.output", [field2.value]), + ]); + }); + }); + const proj = createTestProjector(mainApp.stateRenderer); + const input = proj.query("input"); + let inputElement; // not really useful in this particular application, but added just for demonstration purposes. + proj.initialize(mainApp.stateRenderer); + inputElement = { value: '' }; + input.setTargetDomNode(inputElement); + t.truthy(input.exists); + t.is(proj.query(".output").textContent, ""); + inputElement = { value: 'b' }; + input.simulate.change(inputElement); + t.is(proj.query(".output").textContent, "b"); + t.is(proj.query(".message").textContent, "short"); + inputElement = { value: 'bc' }; + input.simulate.change(inputElement); + t.is(proj.query(".output").textContent, "bc"); + t.is(proj.query(".message").textContent, ""); + inputElement = { value: 'bcd' }; + input.simulate.change(inputElement); + t.is(proj.query(".output").textContent, "bcd"); + t.is(proj.query(".message").textContent, "long"); +}); +// test("register view async", (t) => { +// const F = new FRETS(new SimpleProps(), new SimpleActions()); +// async function asyncViewFunction(app: main): Promise { +// return new Promise((resolve, reject) => { +// // simulate view rendering code being loaded async like from a webpack chunk +// setTimeout(() => { +// resolve(h("div", [ +// h("ul", app.modelProps.messages.map((x) => h("li", [x.toString()]))), +// ])); +// }, 50); +// }); +// } +// F.registerViewAsync(asyncViewFunction); +// const proj = createTestProjector(F.stateRenderer); +// const list = proj.query("ul"); +// t.truthy(list.exists); +// }); +test('registers a route and changes when navigating', t => { + const mainApp = setup(new SimpleProps(), f => { + f.registerAcceptor((proposal, state) => { + if (proposal.activeScreen) { + f.modelProps.activeScreen = proposal.activeScreen; + state(f.modelProps); + } + }); + f.registerRouteAction('home', '/home', (context, propose) => { + propose({ + activeScreen: SimpleScreens.Home + }); + }); + f.registerRouteAction('about', '/about', (context, propose) => { + propose({ + activeScreen: SimpleScreens.About + }); + }); + f.registerView((app) => { + return h('div', [ + !app.modelProps.activeScreen || + app.modelProps.activeScreen === SimpleScreens.Home + ? h('h1', ['Home Page']) + : h('h1', ['About Page']) + ]); + }); + }); + t.is(mainApp.fretsApp.getRouteLink('about'), '/about'); + t.false(mainApp.fretsApp.getRouteLink('xyz')); + const proj = createTestProjector(mainApp.stateRenderer); + t.is(proj.query('h1').textContent, 'Home Page'); + mainApp.fretsApp.navToPath('/about'); + window.dispatchEvent(new Event('popstate')); + t.is(proj.query('h1').textContent, 'About Page'); + mainApp.fretsApp.navToRoute('home'); + window.dispatchEvent(new Event('popstate')); + t.is(proj.query('h1').textContent, 'Home Page'); +}); +// Test("model props can only be updated through an action", (t) => { +// const F = new FRETS(new SimpleProps(), new SimpleActions()); +// F.registerView((app): VNode => { +// // try overwriting something in modelProps +// t.throws(() => app.modelProps.messages.push("try")); +// return h("div", [ +// (!app.modelProps.activeScreen || app.modelProps.activeScreen === SimpleScreens.Home) +// ? h("h1", ["Home Page"]) +// : h("h1", ["About Page"]), +// h("ul", app.modelProps.messages.map((x: string) => h("li", [x]))), +// ]); +// }); +// t.not(F.modelProps.messages[0], "try"); +// const proj = createTestProjector(F.stateRenderer); +// const msgs = proj.query("ul>li"); +// t.falsy(msgs.exists()); +// t.not(F.modelProps.messages[0], "try"); +// }); +class FormProps extends PropsWithFields { + constructor() { + super(...arguments); + this.status = 'draft'; + this.actionInProgress = 'load'; + } +} +test("state graph resolves", (t) => { + const main = setup(new FormProps(), f => { + f.registerAcceptor((proposal, updateState) => { + console.log('accepting', proposal); + updateState(proposal); + }); + f.registerStateGraph({ + name: 'opening', + // edges are specified in reverse specificity order because edges are evaluated + // in order and only the first node in an array of edges is returned + edges: [ + { + name: 'submitted', + guard: (props) => props.status === 'submitted', + renderer: () => h("span", ["submitted the form"]) + }, + { + name: 'saved', + guard: (props) => Boolean(props.id), + renderer: () => h("span", ["saved form"]), + edges: [ + { + name: 'submitting', + guard: (props) => props.actionInProgress === 'submit', + renderer: () => h("span", ["submitting"]) + } + ] + }, + { + name: 'empty', + guard: (props) => !props.id && props.actionInProgress !== 'load', + renderer: () => h("span", ["empty form screen"]), + edges: [ + { + name: 'saving', + guard: (props) => (props.actionInProgress === 'save'), + renderer: () => h("span", ["saving"]) + } + ] + }, + ], + renderer: () => h("span", ["opening screen"]) + }); + t.truthy(f.currentStateNode); + const save = f.registerAction('save', (e, present) => { + console.log('finished loading action'); + present({ actionInProgress: 'save' }); + }); + f.registerView((app) => h('div', [ + h('button#save', { onclick: save }, ['save']), + app.currentStateNode.renderer(app) + ])); + }); + t.is(main.fretsApp.modelProps.actionInProgress, 'load'); + const proj = createTestProjector(main.stateRenderer); + t.is(proj.query('span').textContent, 'opening screen'); + // t.is(main.fretsApp.resolveState().name, 'opening') + main.present({ actionInProgress: undefined }); + t.is(proj.query('span').textContent, 'empty form screen'); + proj.query('button#save').simulate.click(); + t.is(proj.query('span').textContent, 'saving'); + main.present({ actionInProgress: undefined, id: '12321' }); + t.is(proj.query('span').textContent, 'saved form'); + main.present({ actionInProgress: 'submit' }); + t.is(proj.query('span').textContent, 'submitting'); + main.present({ actionInProgress: undefined, status: 'submitted' }); + t.is(proj.query('span').textContent, 'submitted the form'); +}); +//# sourceMappingURL=Frets.spec.js.map \ No newline at end of file diff --git a/build/module/Frets.spec.js.map b/build/module/Frets.spec.js.map new file mode 100644 index 0000000..0d99cda --- /dev/null +++ b/build/module/Frets.spec.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Frets.spec.js","sourceRoot":"","sources":["../../src/Frets.spec.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,KAAK,CAAC;AACvB,OAAO,EAEN,eAAe,EACf,KAAK,EACL,MAAM,SAAS,CAAC;AACjB,OAAO,EAAC,CAAC,EAAQ,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAGrD,IAAK,aAKJ;AALD,WAAK,aAAa;IACjB,mDAAK,CAAA;IACL,+CAAG,CAAA;IACH,iDAAI,CAAA;IACJ,mDAAK,CAAA;AACN,CAAC,EALI,aAAa,KAAb,aAAa,QAKjB;AAED,MAAM,WAAY,SAAQ,eAAe;IAAzC;;QACQ,aAAQ,GAAa,EAAE,CAAC;QAGxB,eAAU,GAAG,CAAC,CAAC;IACvB,CAAC;CAAA;AAID,IAAI,CAAC,qCAAqC,EAAE,CAAC,CAAC,EAAE;IAC/C,MAAM,GAAG,GAAG,KAAK,CAAc,IAAI,WAAW,EAAE,EAAE,CAAC,CAAO,EAAE,EAAE;QAC7D,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QACvB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IACH,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC;AAEH,uCAAuC;AAEvC,MAAM;AAEN,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE;IAChC,MAAM,GAAG,GAAG,KAAK,CAAc,IAAI,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE;QACrD,CAAC,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;YACtC,IAAI,QAAQ,CAAC,QAAQ,EAAE;gBACtB,CAAC,CAAC,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;aAC1C;YAED,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,CAAC,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC,CAAQ,EAAE,OAAO,EAAE,EAAE;YACzE,OAAO,CAAC,EAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAC,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,YAAY,CACb,CAAC,QAAc,EAAS,EAAE;YACzB,OAAO,CAAC,CAAC,KAAK,EAAE;gBACf,CAAC,CAAC,QAAQ,EAAE,EAAC,OAAO,EAAE,WAAW,EAAC,EAAE,CAAC,eAAe,CAAC,CAAC;gBACtD,CAAC,CACA,IAAI,EACJ,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAC9D;aACD,CAAC,CAAC;QACJ,CAAC,CACD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACxB,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACrC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2CAA2C,EAAE,CAAC,CAAC,EAAE;IACrD,MAAM,OAAO,GAAG,KAAK,CAAc,IAAI,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE;QACzD,CAAC,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;YACtC,IAAI,QAAQ,CAAC,UAAU,GAAG,CAAC,EAAE;gBAC5B,CAAC,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC;aACpC;YAED,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAQ,EAAE,OAAO,EAAE,EAAE;YAC/D,OAAO,CAAC,EAAC,UAAU,EAAE,CAAC,EAAC,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,CAAC,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,CAAQ,EAAE,OAAO,EAAE,EAAE;YACrE,OAAO,CAAC,EAAC,UAAU,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,CAAC,CAAC,YAAY,CACb,CAAC,GAAS,EAAS,EAAE;YACpB,OAAO,CAAC,CAAC,KAAK,EAAE;gBACf,CAAC,CAAC,cAAc,EAAE,EAAC,OAAO,EAAE,MAAM,EAAC,EAAE,CAAC,UAAU,CAAC,CAAC;gBAClD,CAAC,CAAC,gBAAgB,EAAE,EAAC,OAAO,EAAE,SAAS,EAAC,EAAE,CAAC,WAAW,CAAC,CAAC;gBACxD,CAAC,CACA,IAAI,EACJ,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CACzD;aACD,CAAC,CAAC;QACJ,CAAC,CACD,CAAC;IACH,CAAC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC7C,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9B,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC,EAAE;IAC/B,MAAM,OAAO,GAAG,KAAK,CAAc,IAAI,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE;QACzD,CAAC,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;YACtC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,CAAC,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC,CAAQ,EAAE,OAAO,EAAE,EAAE;YACzE,UAAU,CAAC,GAAG,EAAE;gBACf,OAAO,CAAC;oBACP,QAAQ,EAAE,CAAC,OAAO,CAAC;iBACnB,CAAC,CAAC;YACJ,CAAC,EAAE,EAAE,CAAC,CAAC;QACR,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,YAAY,CACb,CAAC,GAAS,EAAS,EAAE;YACpB,OAAO,CAAC,CAAC,KAAK,EAAE;gBACf,CAAC,CAAC,QAAQ,EAAE,EAAC,OAAO,EAAE,WAAW,EAAC,EAAE,CAAC,eAAe,CAAC,CAAC;gBACtD,CAAC,CACA,IAAI,EACJ,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CACzD;aACD,CAAC,CAAC;QACJ,CAAC,CACD,CAAC;IACH,CAAC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACtC,UAAU,CAAC,GAAG,EAAE;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC,EAAE,GAAG,CAAC,CAAC;AACT,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2BAA2B,EAAE,CAAC,CAAC,EAAE;IACrC,MAAM,OAAO,GAAG,KAAK,CAAc,IAAI,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE;QACzD,CAAC,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;YACtC,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,CAAC,MAAM,EAAE;gBAC9B,CAAC,CAAC,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;gBAC1C,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;aACpB;YAED,UAAU,CAAC,GAAG,EAAE;gBACf,CAAC,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC;gBACjC,KAAK,mBACD,CAAC,CAAC,UAAU,EACd,CAAC;YACJ,CAAC,EAAE,EAAE,CAAC,CAAC;QACR,CAAC,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,CAAC,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC,CAAQ,EAAE,OAAO,EAAE,EAAE;YACzE,OAAO,CAAC,EAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAC,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,YAAY,CACb,CAAC,GAAS,EAAS,EAAE;YACpB,OAAO,CAAC,CAAC,KAAK,EAAE;gBACf,CAAC,CAAC,QAAQ,EAAE,EAAC,OAAO,EAAE,WAAW,EAAC,EAAE,CAAC,eAAe,CAAC,CAAC;gBACtD,CAAC,CACA,IAAI,EACJ,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CACzD;aACD,CAAC,CAAC;QACJ,CAAC,CACD,CAAC;IACH,CAAC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACtC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACvC,UAAU,CAAC,GAAG,EAAE;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC,EAAE,GAAG,CAAC,CAAC;AACT,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,EAAE;IAC7B,MAAM,OAAO,GAAG,KAAK,CAAc,IAAI,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE;QACzD,MAAM,KAAK,GAAG,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC3C,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,sBAAsB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACpD,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,+BAA+B,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1C,MAAM,OAAO,GAAG,KAAK,CAAc,IAAI,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE;QAE5D,CAAC,CAAC,YAAY,CAAC,CAAC,GAAS,EAAS,EAAE;YACnC,MAAM,KAAK,GAAG,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC3C,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACnB,OAAO,CAAC,CAAC,KAAK,EAAE;gBACd,CAAC,CAAC,QAAQ,EAAE,CAAC,eAAe,CAAC,CAAC;gBAClC,CAAC,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAC,CAAC;gBAC/E,CAAC,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aAC/B,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACJ,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,YAA8B,CAAC,CAAC,+FAA+F;IACnI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACvC,YAAY,GAAG,EAAE,KAAK,EAAE,GAAG,EAAS,CAAC;IACrC,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IACpC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAC9C,YAAY,GAAG,EAAE,KAAK,EAAE,IAAI,EAAS,CAAC;IACtC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;IAClC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AAChD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,EAAE,EAAE;IAC9B,MAAM,OAAO,GAAG,KAAK,CAAc,IAAI,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE;QAE5D,CAAC,CAAC,YAAY,CAAC,CAAC,GAAS,EAAS,EAAE;YACnC,MAAM,MAAM,GAAG,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAC,EAAE,SAAS,EAAE,EAAC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAC,EAAE,SAAS,EAAE,EAAC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAC,EAAE,CAAC,CAAC;YAE3K,OAAO,CAAC,CAAC,KAAK,EAAE;gBAClB,CAAC,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACtF,CAAC,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;gBACvC,CAAC,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aAChC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACJ,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,YAA8B,CAAC,CAAC,+FAA+F;IACnI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACvC,YAAY,GAAG,EAAE,KAAK,EAAE,EAAE,EAAS,CAAC;IACpC,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IACpC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC7C,YAAY,GAAG,EAAE,KAAK,EAAE,GAAG,EAAS,CAAC;IACrC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;IACnC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAC7C,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAClD,YAAY,GAAG,EAAE,KAAK,EAAE,IAAI,EAAS,CAAC;IACtC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;IACnC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC7C,YAAY,GAAG,EAAE,KAAK,EAAE,KAAK,EAAS,CAAC;IACvC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;IACnC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC,CAAC,CAAC;AAEH,uCAAuC;AACvC,6FAA6F;AAC7F,kEAAkE;AAClE,uDAAuD;AACvD,qFAAqF;AACrF,2BAA2B;AAC3B,6BAA6B;AAC7B,kFAAkF;AAClF,eAAe;AACf,gBAAgB;AAChB,UAAU;AACV,MAAM;AAEN,4CAA4C;AAC5C,uDAAuD;AACvD,mCAAmC;AACnC,2BAA2B;AAC3B,MAAM;AAEN,IAAI,CAAC,+CAA+C,EAAE,CAAC,CAAC,EAAE;IACzD,MAAM,OAAO,GAAG,KAAK,CAAc,IAAI,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE;QACzD,CAAC,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;YACtC,IAAI,QAAQ,CAAC,YAAY,EAAE;gBAC1B,CAAC,CAAC,UAAU,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;gBAClD,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;aACpB;QACF,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;YAC3D,OAAO,CAAC;gBACP,YAAY,EAAE,aAAa,CAAC,IAAI;aAChC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,mBAAmB,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;YAC7D,OAAO,CAAC;gBACP,YAAY,EAAE,aAAa,CAAC,KAAK;aACjC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,YAAY,CACb,CAAC,GAAG,EAAS,EAAE;YACd,OAAO,CAAC,CAAC,KAAK,EAAE;gBACf,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY;oBAC5B,GAAG,CAAC,UAAU,CAAC,YAAY,KAAK,aAAa,CAAC,IAAI;oBACjD,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC;oBACxB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC;aAC1B,CAAC,CAAC;QACJ,CAAC,CACD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;IACvD,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACxD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAChD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IACjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC;AAEH,qEAAqE;AACrE,6FAA6F;AAC7F,qCAAqC;AACrC,iDAAiD;AACjD,2DAA2D;AAE3D,wBAAwB;AACxB,6FAA6F;AAC7F,mCAAmC;AACnC,qCAAqC;AACrC,2EAA2E;AAC3E,UAAU;AACV,QAAQ;AACR,4CAA4C;AAC5C,uDAAuD;AACvD,sCAAsC;AACtC,4BAA4B;AAC5B,4CAA4C;AAC5C,MAAM;AAEN,MAAM,SAAU,SAAQ,eAAe;IAAvC;;QACC,WAAM,GAA0B,OAAO,CAAC;QACxC,qBAAgB,GAAgC,MAAM,CAAC;IAExD,CAAC;CAAA;AAED,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,EAAE;IAClC,MAAM,IAAI,GAAG,KAAK,CAAY,IAAI,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE;QAClD,CAAC,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE;YAC5C,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;YAClC,WAAW,CAAC,QAAQ,CAAC,CAAA;QACtB,CAAC,CAAC,CAAA;QACF,CAAC,CAAC,kBAAkB,CAAC;YACpB,IAAI,EAAE,SAAS;YACf,+EAA+E;YAC/E,oEAAoE;YACpE,KAAK,EAAE;gBACN;oBACC,IAAI,EAAE,WAAW;oBACjB,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW;oBAC9C,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,oBAAoB,CAAC,CAAC;iBACjD;gBACD;oBACC,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBACnC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,YAAY,CAAC,CAAC;oBACzC,KAAK,EAAE;wBACN;4BACC,IAAI,EAAE,YAAY;4BAClB,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,gBAAgB,KAAK,QAAQ;4BACrD,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,YAAY,CAAC,CAAC;yBACzC;qBACD;iBACD;gBACD;oBACC,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,gBAAgB,KAAK,MAAM;oBAChE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,mBAAmB,CAAC,CAAC;oBAChD,KAAK,EAAE;wBACN;4BACC,IAAI,EAAE,QAAQ;4BACd,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,KAAK,MAAM,CAAC;4BACrD,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC;yBACrC;qBACD;iBACD;aACD;YACD,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,CAAC,CAAC;SAC7C,CAAC,CAAA;QACF,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAA;QAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE;YACpD,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAA;YACtC,OAAO,CAAC,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,CAAA;QACtC,CAAC,CAAC,CAAA;QAEF,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE;YAChC,CAAC,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;YAC7C,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC;SAClC,CAAC,CAAC,CAAA;IAGJ,CAAC,CAAC,CAAA;IAEF,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAA;IACvD,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACrD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;IACvD,qDAAqD;IACrD,IAAI,CAAC,OAAO,CAAC,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC,CAAA;IAC7C,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;IAC1D,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;IAC1C,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC/C,IAAI,CAAC,OAAO,CAAC,EAAE,gBAAgB,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;IAC1D,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IACnD,IAAI,CAAC,OAAO,CAAC,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC,CAAA;IAC5C,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IACnD,IAAI,CAAC,OAAO,CAAC,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAA;IAClE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;AAE5D,CAAC,CAAC,CAAA"} \ No newline at end of file diff --git a/build/module/Frets.types.js b/build/module/Frets.types.js new file mode 100644 index 0000000..ae7e906 --- /dev/null +++ b/build/module/Frets.types.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=Frets.types.js.map \ No newline at end of file diff --git a/build/module/Frets.types.js.map b/build/module/Frets.types.js.map new file mode 100644 index 0000000..2dd3c45 --- /dev/null +++ b/build/module/Frets.types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Frets.types.js","sourceRoot":"","sources":["../../src/Frets.types.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/build/module/index.js b/build/module/index.js new file mode 100644 index 0000000..b24064b --- /dev/null +++ b/build/module/index.js @@ -0,0 +1,5 @@ +export { setup } from './Frets'; +export { PropsWithFields } from './props-field-registry'; +import * as maquette_1 from 'maquette'; +export { maquette_1 as maquette }; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/module/index.js.map b/build/module/index.js.map new file mode 100644 index 0000000..d9cd841 --- /dev/null +++ b/build/module/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAU9B,OAAO,EAAC,eAAe,EAA0B,MAAM,wBAAwB,CAAC;4BAEtD,UAAU;uBAAxB,QAAQ"} \ No newline at end of file diff --git a/build/module/props-field-registry.js b/build/module/props-field-registry.js new file mode 100644 index 0000000..e88316d --- /dev/null +++ b/build/module/props-field-registry.js @@ -0,0 +1,9 @@ +export class PropsWithFields { + constructor(data) { + this.registeredFieldsValues = {}; + this.registeredFieldsState = {}; + this.registeredFieldValidationErrors = {}; + Object.assign(this, data); + } +} +//# sourceMappingURL=props-field-registry.js.map \ No newline at end of file diff --git a/build/module/props-field-registry.js.map b/build/module/props-field-registry.js.map new file mode 100644 index 0000000..1b00f9e --- /dev/null +++ b/build/module/props-field-registry.js.map @@ -0,0 +1 @@ +{"version":3,"file":"props-field-registry.js","sourceRoot":"","sources":["../../src/props-field-registry.ts"],"names":[],"mappings":"AAcA,MAAM,OAAO,eAAe;IAU3B,YAAY,IAAU;QATf,2BAAsB,GAAuC,EAAE,CAAC;QAEhE,0BAAqB,GAGxB,EAAE,CAAC;QAEA,oCAA+B,GAA6B,EAAE,CAAC;QAGrE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC;CACD"} \ No newline at end of file diff --git a/config/exports/rollup.config.js b/config/exports/rollup.config.js index 0aed146..c73b23b 100644 --- a/config/exports/rollup.config.js +++ b/config/exports/rollup.config.js @@ -12,7 +12,6 @@ const substituteModulePaths = { export default { input: 'build/module/index.js', - sourceMap: true, plugins: [ alias(substituteModulePaths), nodeResolve({ @@ -23,7 +22,7 @@ export default { // left-hand side can be an absolute path, a path // relative to the current directory, or the name // of a module in node_modules - 'maquette': ['Projector', 'createProjector'] + 'node_modules/maquette/dist/maquette.umd.js': ['Projector', 'createProjector'] } }) ] diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index d185429..caae112 100644 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -16,7 +16,7 @@ module.exports = { link: 'https://github.com/sirtimbly/frets/' }, { - text: 'API Docss', + text: 'API Docs', link: 'https://sirtimbly.github.io/frets/api/' }, ], @@ -25,7 +25,7 @@ module.exports = { '/guide/', '/guide/layers', '/guide/components', - '/guide/philosophy' + '/guide/philosophy' ] } } diff --git a/package-lock.json b/package-lock.json index c48818e..c33f920 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1238,6 +1238,105 @@ "arrify": "^1.0.1" } }, + "@cspotcode/source-map-consumer": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", + "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", + "dev": true + }, + "@cspotcode/source-map-support": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", + "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", + "dev": true, + "requires": { + "@cspotcode/source-map-consumer": "0.8.0" + } + }, + "@eslint/eslintrc": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz", + "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.1", + "globals": "^13.9.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + } + } + }, + "@humanwhocodes/config-array": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, "@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -1831,6 +1930,30 @@ "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", "dev": true }, + "@tsconfig/node10": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", + "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", + "dev": true + }, + "@tsconfig/node12": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", + "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", + "dev": true + }, + "@tsconfig/node14": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", + "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", + "dev": true + }, + "@tsconfig/node16": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", + "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", + "dev": true + }, "@types/color-name": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", @@ -1838,26 +1961,20 @@ "dev": true }, "@types/dom-inputevent": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/dom-inputevent/-/dom-inputevent-1.0.5.tgz", - "integrity": "sha512-oL8NzIAn1J8vsIigjEM2qip6PUBRkb1kE+3gbM+NvSCzrScgz+Ixymuv9Z9jmktVjeHWMJc9zhP49YBUBeCTaQ==" + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/dom-inputevent/-/dom-inputevent-1.0.7.tgz", + "integrity": "sha512-R0ILeMNwjxCwiF9FDlCl2pUlGZW+4OUqJe6DyOsyrdK1PEoZ1TxgkfQfEy7vniFUrKyAy+dP2BNAXcRqEyf9dQ==" }, "@types/eslint": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.0.tgz", - "integrity": "sha512-LpUXkr7fnmPXWGxB0ZuLEzNeTURuHPavkC5zuU4sg62/TgL5ZEjamr5Y8b6AftwHtx2bPJasI+CL0TT2JwQ7aA==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", + "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", "dev": true, "requires": { "@types/estree": "*", "@types/json-schema": "*" } }, - "@types/eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", - "dev": true - }, "@types/estree": { "version": "0.0.45", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.45.tgz", @@ -1938,89 +2055,217 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.7.1.tgz", - "integrity": "sha512-3DB9JDYkMrc8Au00rGFiJLK2Ja9CoMP6Ut0sHsXp3ZtSugjNxvSSHTnKLfo4o+QmjYBJqEznDqsG1zj4F2xnsg==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.15.0.tgz", + "integrity": "sha512-u6Db5JfF0Esn3tiAKELvoU5TpXVSkOpZ78cEGn/wXtT2RVqs2vkt4ge6N8cRCyw7YVKhmmLDbwI2pg92mlv7cA==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "3.7.1", - "debug": "^4.1.1", + "@typescript-eslint/scope-manager": "5.15.0", + "@typescript-eslint/type-utils": "5.15.0", + "@typescript-eslint/utils": "5.15.0", + "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", - "regexpp": "^3.0.0", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "ignore": "^5.1.8", + "regexpp": "^3.2.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" }, "dependencies": { + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true } } }, - "@typescript-eslint/experimental-utils": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.7.1.tgz", - "integrity": "sha512-TqE97pv7HrqWcGJbLbZt1v59tcqsSVpWTOf1AqrWK7n8nok2sGgVtYRuGXeNeLw3wXlLEbY1MKP3saB2HsO/Ng==", + "@typescript-eslint/parser": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.15.0.tgz", + "integrity": "sha512-NGAYP/+RDM2sVfmKiKOCgJYPstAO40vPAgACoWPO/+yoYKSgAXIFaBKsV8P0Cc7fwKgvj27SjRNX4L7f4/jCKQ==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.15.0", + "@typescript-eslint/types": "5.15.0", + "@typescript-eslint/typescript-estree": "5.15.0", + "debug": "^4.3.2" + }, + "dependencies": { + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + } + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.15.0.tgz", + "integrity": "sha512-EFiZcSKrHh4kWk0pZaa+YNJosvKE50EnmN4IfgjkA3bTHElPtYcd2U37QQkNTqwMCS7LXeDeZzEqnsOH8chjSg==", "dev": true, "requires": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/types": "3.7.1", - "@typescript-eslint/typescript-estree": "3.7.1", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" + "@typescript-eslint/types": "5.15.0", + "@typescript-eslint/visitor-keys": "5.15.0" } }, - "@typescript-eslint/parser": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-3.7.1.tgz", - "integrity": "sha512-W4QV/gXvfIsccN8225784LNOorcm7ch68Fi3V4Wg7gmkWSQRKevO4RrRqWo6N/Z/myK1QAiGgeaXN57m+R/8iQ==", + "@typescript-eslint/type-utils": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.15.0.tgz", + "integrity": "sha512-KGeDoEQ7gHieLydujGEFLyLofipe9PIzfvA/41urz4hv+xVxPEbmMQonKSynZ0Ks2xDhJQ4VYjB3DnRiywvKDA==", "dev": true, "requires": { - "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "3.7.1", - "@typescript-eslint/types": "3.7.1", - "@typescript-eslint/typescript-estree": "3.7.1", - "eslint-visitor-keys": "^1.1.0" + "@typescript-eslint/utils": "5.15.0", + "debug": "^4.3.2", + "tsutils": "^3.21.0" + }, + "dependencies": { + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + } } }, "@typescript-eslint/types": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.7.1.tgz", - "integrity": "sha512-PZe8twm5Z4b61jt7GAQDor6KiMhgPgf4XmUb9zdrwTbgtC/Sj29gXP1dws9yEn4+aJeyXrjsD9XN7AWFhmnUfg==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.15.0.tgz", + "integrity": "sha512-yEiTN4MDy23vvsIksrShjNwQl2vl6kJeG9YkVJXjXZnkJElzVK8nfPsWKYxcsGWG8GhurYXP4/KGj3aZAxbeOA==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.7.1.tgz", - "integrity": "sha512-m97vNZkI08dunYOr2lVZOHoyfpqRs0KDpd6qkGaIcLGhQ2WPtgHOd/eVbsJZ0VYCQvupKrObAGTOvk3tfpybYA==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.15.0.tgz", + "integrity": "sha512-Hb0e3dGc35b75xLzixM3cSbG1sSbrTBQDfIScqdyvrfJZVEi4XWAT+UL/HMxEdrJNB8Yk28SKxPLtAhfCbBInA==", "dev": true, "requires": { - "@typescript-eslint/types": "3.7.1", - "@typescript-eslint/visitor-keys": "3.7.1", - "debug": "^4.1.1", - "glob": "^7.1.6", - "is-glob": "^4.0.1", - "lodash": "^4.17.15", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "@typescript-eslint/types": "5.15.0", + "@typescript-eslint/visitor-keys": "5.15.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" }, "dependencies": { - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "fill-range": "^7.0.1" + } + }, + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" } }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -2028,29 +2273,86 @@ "dev": true }, "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "requires": { "is-extglob": "^2.1.1" } }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@typescript-eslint/utils": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.15.0.tgz", + "integrity": "sha512-081rWu2IPKOgTOhHUk/QfxuFog8m4wxW43sXNOMSCdh578tGJ1PAaWPsj42LOa7pguh173tNlMigsbrHvh/mtA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.15.0", + "@typescript-eslint/types": "5.15.0", + "@typescript-eslint/typescript-estree": "5.15.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "dependencies": { + "@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", "dev": true } } }, "@typescript-eslint/visitor-keys": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.7.1.tgz", - "integrity": "sha512-xn22sQbEya+Utj2IqJHGLA3i1jDzR43RzWupxojbSWnj3nnPLavaQmWe5utw03CwYao3r00qzXfgJMGNkrzrAA==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.15.0.tgz", + "integrity": "sha512-+vX5FKtgvyHbmIJdxMJ2jKm9z2BIlXJiuewI8dsDYMp5LzPUcuTT78Ya5iwvQg3VqSVdmxyM8Anj1Jeq7733ZQ==", "dev": true, "requires": { - "eslint-visitor-keys": "^1.1.0" + "@typescript-eslint/types": "5.15.0", + "eslint-visitor-keys": "^3.0.0" } }, "@vue/babel-helper-vue-jsx-merge-props": { @@ -3559,9 +3861,9 @@ } }, "acorn-jsx": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", - "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true }, "acorn-walk": { @@ -3728,12 +4030,6 @@ } } }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, "ansi-escapes": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", @@ -3883,18 +4179,110 @@ "dev": true }, "array-includes": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", - "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", + "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", "dev": true, "requires": { + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.17.0", - "is-string": "^1.0.5" - } - }, - "array-map": { - "version": "0.0.0", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.7" + }, + "dependencies": { + "es-abstract": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "dev": true + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + } + } + }, + "array-map": { + "version": "0.0.0", "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", "dev": true @@ -3927,13 +4315,104 @@ "dev": true }, "array.prototype.flat": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", - "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", + "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", "dev": true, "requires": { + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" + "es-abstract": "^1.19.0" + }, + "dependencies": { + "es-abstract": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "dev": true + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + } } }, "arrgv": { @@ -4595,31 +5074,6 @@ "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", "dev": true }, - "babel-eslint": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", - "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0", - "eslint-visitor-keys": "^1.0.0", - "resolve": "^1.12.0" - }, - "dependencies": { - "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - } - } - }, "babel-loader": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", @@ -5229,12 +5683,6 @@ "node-releases": "^1.1.58" } }, - "buf-compare": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buf-compare/-/buf-compare-1.0.1.tgz", - "integrity": "sha1-/vKNqLgROgoNtEMLC2Rntpcws0o=", - "dev": true - }, "buffer": { "version": "4.9.2", "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", @@ -5621,6 +6069,16 @@ } } }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, "call-me-maybe": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", @@ -6445,9 +6903,9 @@ } }, "confusing-browser-globals": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz", - "integrity": "sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", "dev": true }, "connect-history-api-fallback": { @@ -6483,12 +6941,6 @@ "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", "dev": true }, - "contains-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", - "dev": true - }, "content-disposition": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", @@ -7739,16 +8191,6 @@ } } }, - "core-assert": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/core-assert/-/core-assert-0.2.1.tgz", - "integrity": "sha1-+F4s+b/tKPdzzIs/pcW2m9wC/j8=", - "dev": true, - "requires": { - "buf-compare": "^1.0.0", - "is-error": "^2.2.0" - } - }, "core-js": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", @@ -7926,6 +8368,12 @@ "sha.js": "^2.4.8" } }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, "cross-spawn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", @@ -8447,15 +8895,6 @@ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, - "deep-strict-equal": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/deep-strict-equal/-/deep-strict-equal-0.2.0.tgz", - "integrity": "sha1-SgeBR6irV/ag1PVUckPNIvROtOQ=", - "dev": true, - "requires": { - "core-assert": "^0.2.0" - } - }, "deepmerge": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", @@ -8549,6 +8988,12 @@ "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", "dev": true }, + "define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -9190,15 +9635,6 @@ } } }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - } - }, "entities": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", @@ -9300,9 +9736,9 @@ } }, "env-editor": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/env-editor/-/env-editor-0.4.1.tgz", - "integrity": "sha512-suh+Vm00GnPQgXpmONTkcUT9LgBSL6sJrRnJxbykT0j+ONjzmIS+1U3ne467ArdZN/42/npp+GnhtwkLQ+vUjw==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/env-editor/-/env-editor-1.0.0.tgz", + "integrity": "sha512-SRy6e7u1tZgohoxL952q9+kbRkkUrzi63dB7J4zr6wOSMQrCD0KJUNhMZajGTNQfdY68PaStfmIzh7To/FKilQ==", "dev": true }, "envify": { @@ -9440,69 +9876,73 @@ } }, "eslint": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.5.0.tgz", - "integrity": "sha512-vlUP10xse9sWt9SGRtcr1LAC67BENcQMFeV+w5EvLEoFe3xJ8cF1Skd0msziRx/VMC+72B4DxreCE+OR12OA6Q==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.11.0.tgz", + "integrity": "sha512-/KRpd9mIRg2raGxHRGwW9ZywYNAClZrHjdueHcrVDuO3a6bj83eoTirCCk0M0yPwOjWYKHwRVRid+xK4F/GHgA==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", + "@eslint/eslintrc": "^1.2.1", + "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "eslint-scope": "^5.1.0", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^1.3.0", - "espree": "^7.2.0", - "esquery": "^1.2.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", + "glob-parent": "^6.0.1", + "globals": "^13.6.0", + "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.19", + "lodash.merge": "^4.6.2", "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", - "table": "^5.2.3", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, "dependencies": { "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "@types/color-name": "^1.1.1", "color-convert": "^2.0.1" } }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -9535,13 +9975,59 @@ "which": "^2.0.1" } }, + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "requires": { - "is-glob": "^4.0.1" + "is-glob": "^4.0.3" } }, "has-flag": { @@ -9551,9 +10037,9 @@ "dev": true }, "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true }, "is-extglob": { @@ -9563,14 +10049,23 @@ "dev": true }, "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "requires": { "is-extglob": "^2.1.1" } }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, "levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -9581,12 +10076,6 @@ "type-check": "~0.4.0" } }, - "lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", - "dev": true - }, "optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", @@ -9613,12 +10102,6 @@ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, - "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "dev": true - }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -9635,12 +10118,12 @@ "dev": true }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" } }, "strip-json-comments": { @@ -9650,9 +10133,9 @@ "dev": true }, "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -9678,92 +10161,81 @@ } } }, - "eslint-ast-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-ast-utils/-/eslint-ast-utils-1.1.0.tgz", - "integrity": "sha512-otzzTim2/1+lVrlH19EfQQJEhVJSu0zOb9ygb3iapN6UlyaDtyRq4b5U1FuW0v1lRa9Fp/GJyHkSwm6NqABgCA==", - "dev": true, - "requires": { - "lodash.get": "^4.4.2", - "lodash.zip": "^4.2.0" - } - }, "eslint-config-prettier": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz", - "integrity": "sha512-oB8cpLWSAjOVFEJhhyMZh6NOEOtBVziaqdDQ86+qhDHFbZXoRTM7pNSvFRfW/W/L/LrQ38C99J5CGuRBBzBsdA==", - "dev": true, - "requires": { - "get-stdin": "^6.0.0" - }, - "dependencies": { - "get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", - "dev": true - } - } + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true }, "eslint-config-xo": { - "version": "0.32.1", - "resolved": "https://registry.npmjs.org/eslint-config-xo/-/eslint-config-xo-0.32.1.tgz", - "integrity": "sha512-achnYLilUTtljR1CGRikVj9HRAf5GplJeGgeyQMvph7mKo+AqTkNuig4EO/IrNOChcjoazgw9YT4cW/3+69i3Q==", + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/eslint-config-xo/-/eslint-config-xo-0.40.0.tgz", + "integrity": "sha512-msI1O0JGxeK2bbExg3U6EGaWKcjhOFzEjwzObywG/DC5GSNZTOyJT+b2l9MZGBeZsVdxfIGwdXTNeWXl8cN9iw==", "dev": true, "requires": { - "confusing-browser-globals": "1.0.9" + "confusing-browser-globals": "1.0.11" } }, "eslint-config-xo-typescript": { - "version": "0.31.0", - "resolved": "https://registry.npmjs.org/eslint-config-xo-typescript/-/eslint-config-xo-typescript-0.31.0.tgz", - "integrity": "sha512-zxfUdKscsdrZTI5Uz9ZqAAR+W6fuH+DiQnTRRJAwLZaKJemT3hzH0DtIxNhB9t5fxKMwZYNYw2lvW4aWrSMbag==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/eslint-config-xo-typescript/-/eslint-config-xo-typescript-0.50.0.tgz", + "integrity": "sha512-Ru2tXB8y2w9fFHLm4v2AVfY6P81UbfEuDZuxEpeXlfV65Ezlk0xO4nBaT899ojIFkWfr60rP9Ye4CdVUUT1UYg==", "dev": true }, "eslint-formatter-pretty": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-formatter-pretty/-/eslint-formatter-pretty-3.0.1.tgz", - "integrity": "sha512-hhQ/ASD4i6BAEalcEfUxesFtJFftT8xFsimCzUpPbTzygJ4J17yCGcJ3XKCB2g7XTJTv0pi7rVTadfHVmtfSRA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-formatter-pretty/-/eslint-formatter-pretty-4.1.0.tgz", + "integrity": "sha512-IsUTtGxF1hrH6lMWiSl1WbGaiP01eT6kzywdY1U+zLc0MP+nwEnUiS9UI8IaOTUhTeQJLlCEWIbXINBH4YJbBQ==", "dev": true, "requires": { + "@types/eslint": "^7.2.13", "ansi-escapes": "^4.2.1", - "chalk": "^3.0.0", + "chalk": "^4.1.0", "eslint-rule-docs": "^1.1.5", - "log-symbols": "^3.0.0", - "plur": "^3.0.1", + "log-symbols": "^4.0.0", + "plur": "^4.0.0", "string-width": "^4.2.0", "supports-hyperlinks": "^2.0.0" }, "dependencies": { - "ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "@types/eslint": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz", + "integrity": "sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==", "dev": true, "requires": { - "type-fest": "^0.11.0" + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" } }, "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "@types/color-name": "^1.1.1", "color-convert": "^2.0.1" } }, "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -9797,125 +10269,117 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "irregular-plurals": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-2.0.0.tgz", - "integrity": "sha512-Y75zBYLkh0lJ9qxeHlMjQ7bSbyiSqNW/UOPWDmzC7cXskL1hekSITh1Oc6JV0XCWWZ9DE8VYSB71xocLk3gmGw==", - "dev": true - }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, - "plur": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/plur/-/plur-3.1.1.tgz", - "integrity": "sha512-t1Ax8KUvV3FFII8ltczPn2tJdjqbd1sIzu6t4JL7nQ3EyeL/lTrj5PWKb06ic5/6XYDr65rQ4uzQEGN70/6X5w==", + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, "requires": { - "irregular-plurals": "^2.0.0" + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" } }, "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "strip-ansi": "^6.0.1" } }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" } }, "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" } }, "type-fest": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true } } }, "eslint-import-resolver-node": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", - "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", "dev": true, "requires": { - "debug": "^2.6.9", - "resolve": "^1.13.1" + "debug": "^3.2.7", + "resolve": "^1.20.0" }, "dependencies": { "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", "dev": true, "requires": { - "path-parse": "^1.0.6" + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } } } }, "eslint-import-resolver-webpack": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.12.2.tgz", - "integrity": "sha512-7Jnm4YAoNNkvqPaZkKdIHsKGmv8/uNnYC5QsXkiSodvX4XEEfH2AKOna98FK52fCDXm3q4HzuX+7pRMKkJ64EQ==", + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.13.2.tgz", + "integrity": "sha512-XodIPyg1OgE2h5BDErz3WJoK7lawxKTJNhgPNafRST6csC/MZC+L5P6kKqsZGRInpbgc02s/WZMrb4uGJzcuRg==", "dev": true, "requires": { "array-find": "^1.0.0", - "debug": "^2.6.9", + "debug": "^3.2.7", "enhanced-resolve": "^0.9.1", "find-root": "^1.1.0", "has": "^1.0.3", - "interpret": "^1.2.0", - "lodash": "^4.17.15", - "node-libs-browser": "^1.0.0 || ^2.0.0", - "resolve": "^1.13.1", + "interpret": "^1.4.0", + "is-core-module": "^2.7.0", + "is-regex": "^1.1.4", + "lodash": "^4.17.21", + "resolve": "^1.20.0", "semver": "^5.7.1" }, "dependencies": { "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "enhanced-resolve": { @@ -9929,25 +10393,37 @@ "tapable": "^0.1.8" } }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, "memory-fs": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz", "integrity": "sha1-8rslNovBIeORwlIN6Slpyu4KApA=", "dev": true }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", "dev": true, "requires": { - "path-parse": "^1.0.6" + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } }, "semver": { @@ -9965,55 +10441,94 @@ } }, "eslint-module-utils": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", - "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", + "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", "dev": true, "requires": { - "debug": "^2.6.9", - "pkg-dir": "^2.0.0" + "debug": "^3.2.7", + "find-up": "^2.1.0" }, "dependencies": { "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { - "find-up": "^2.1.0" + "ms": "^2.1.1" } } } }, "eslint-plugin-ava": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-ava/-/eslint-plugin-ava-10.5.0.tgz", - "integrity": "sha512-2I0Ze8ZtwbSlLdnzms4bsa6PxxOxGMIJ9d4yy7aRy3yc5zEO2wHJLic8l3Lrct73hb5ML+PLt5VRqvdV87xWdQ==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-ava/-/eslint-plugin-ava-13.2.0.tgz", + "integrity": "sha512-i5B5izsEdERKQLruk1nIWzTTE7C26/ju8qQf7JeyRv32XT2lRMW0zMFZNhIrEf5/5VvpSz2rqrV7UcjClGbKsw==", "dev": true, "requires": { - "deep-strict-equal": "^0.2.0", "enhance-visitors": "^1.0.0", - "espree": "^7.1.0", - "espurify": "^2.0.1", - "import-modules": "^2.0.0", + "eslint-utils": "^3.0.0", + "espree": "^9.0.0", + "espurify": "^2.1.1", + "import-modules": "^2.1.0", "micro-spelling-correcter": "^1.1.1", - "pkg-dir": "^4.2.0", + "pkg-dir": "^5.0.0", "resolve-from": "^5.0.0" + }, + "dependencies": { + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pkg-dir": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", + "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", + "dev": true, + "requires": { + "find-up": "^5.0.0" + } + } } }, "eslint-plugin-es": { @@ -10024,6 +10539,23 @@ "requires": { "eslint-utils": "^2.0.0", "regexpp": "^3.0.0" + }, + "dependencies": { + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } } }, "eslint-plugin-eslint-comments": { @@ -10037,24 +10569,24 @@ } }, "eslint-plugin-import": { - "version": "2.22.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.0.tgz", - "integrity": "sha512-66Fpf1Ln6aIS5Gr/55ts19eUuoDhAbZgnr6UxK5hbDx6l/QgQgx61AePq+BV4PP2uXQFClgMVzep5zZ94qqsxg==", + "version": "2.25.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz", + "integrity": "sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==", "dev": true, "requires": { - "array-includes": "^3.1.1", - "array.prototype.flat": "^1.2.3", - "contains-path": "^0.1.0", + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", "debug": "^2.6.9", - "doctrine": "1.5.0", - "eslint-import-resolver-node": "^0.3.3", - "eslint-module-utils": "^2.6.0", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.2", "has": "^1.0.3", + "is-core-module": "^2.8.0", + "is-glob": "^4.0.3", "minimatch": "^3.0.4", - "object.values": "^1.1.1", - "read-pkg-up": "^2.0.0", - "resolve": "^1.17.0", - "tsconfig-paths": "^3.9.0" + "object.values": "^1.1.5", + "resolve": "^1.20.0", + "tsconfig-paths": "^3.12.0" }, "dependencies": { "debug": { @@ -10067,25 +10599,77 @@ } }, "doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "requires": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" + "esutils": "^2.0.2" } }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "es-abstract": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" } }, "ms": { @@ -10094,43 +10678,64 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "dev": true + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", "dev": true, "requires": { - "pify": "^2.0.0" + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" } }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "object.values": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", "dev": true, "requires": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" } }, - "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", "dev": true, "requires": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } }, - "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", "dev": true, "requires": { - "path-parse": "^1.0.6" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } } } @@ -10161,13 +10766,30 @@ "semver": "^6.1.0" }, "dependencies": { + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + }, "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", "dev": true, "requires": { - "path-parse": "^1.0.6" + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } }, "semver": { @@ -10187,108 +10809,190 @@ "prettier-linter-helpers": "^1.0.0" } }, - "eslint-plugin-promise": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz", - "integrity": "sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw==", - "dev": true - }, "eslint-plugin-unicorn": { - "version": "20.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-20.1.0.tgz", - "integrity": "sha512-XQxLBJT/gnwyRR6cfYsIK1AdekQchAt5tmcsnldevGjgR2xoZsRUa5/i6e0seNHy2RoT57CkTnbVHwHF8No8LA==", + "version": "40.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-40.1.0.tgz", + "integrity": "sha512-y5doK2DF9Sr5AqKEHbHxjFllJ167nKDRU01HDcWyv4Tnmaoe9iNxMrBnaybZvWZUaE3OC5Unu0lNIevYamloig==", "dev": true, "requires": { - "ci-info": "^2.0.0", + "@babel/helper-validator-identifier": "^7.15.7", + "ci-info": "^3.3.0", "clean-regexp": "^1.0.0", - "eslint-ast-utils": "^1.1.0", - "eslint-template-visitor": "^2.0.0", - "eslint-utils": "^2.0.0", - "import-modules": "^2.0.0", - "lodash": "^4.17.15", + "eslint-utils": "^3.0.0", + "esquery": "^1.4.0", + "indent-string": "^4.0.0", + "is-builtin-module": "^3.1.0", + "lodash": "^4.17.21", "pluralize": "^8.0.0", "read-pkg-up": "^7.0.1", - "regexp-tree": "^0.1.21", - "reserved-words": "^0.1.2", + "regexp-tree": "^0.1.24", "safe-regex": "^2.1.1", - "semver": "^7.3.2" + "semver": "^7.3.5", + "strip-indent": "^3.0.0" }, "dependencies": { - "safe-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-2.1.1.tgz", - "integrity": "sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==", - "dev": true, - "requires": { - "regexp-tree": "~0.1.1" - } + "@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true }, - "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "builtin-modules": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", "dev": true - } - } + }, + "ci-info": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", + "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "is-builtin-module": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.1.0.tgz", + "integrity": "sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg==", + "dev": true, + "requires": { + "builtin-modules": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "safe-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-2.1.1.tgz", + "integrity": "sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==", + "dev": true, + "requires": { + "regexp-tree": "~0.1.1" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "requires": { + "min-indent": "^1.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } }, "eslint-rule-docs": { - "version": "1.1.201", - "resolved": "https://registry.npmjs.org/eslint-rule-docs/-/eslint-rule-docs-1.1.201.tgz", - "integrity": "sha512-HS327MkM3ebCcjAQMkhNYZbN/4Eu/NO5ipDK8uNVPqUrAPRUsXkuuEfE+DEx4YItkszKp4ND1F3hN8BwfXdx0w==", + "version": "1.1.231", + "resolved": "https://registry.npmjs.org/eslint-rule-docs/-/eslint-rule-docs-1.1.231.tgz", + "integrity": "sha512-egHz9A1WG7b8CS0x1P6P/Rj5FqZOjray/VjpJa14tMZalfRKvpE2ONJ3plCM7+PcinmU4tcmbPLv0VtwzSdLVA==", "dev": true }, "eslint-scope": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz", - "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "requires": { - "esrecurse": "^4.1.0", + "esrecurse": "^4.3.0", "estraverse": "^4.1.1" - } - }, - "eslint-template-visitor": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/eslint-template-visitor/-/eslint-template-visitor-2.2.1.tgz", - "integrity": "sha512-q3SxoBXz0XjPGkUpwGVAwIwIPIxzCAJX1uwfVc8tW3v7u/zS7WXNH3I2Mu2MDz2NgSITAyKLRaQFPHu/iyKxDQ==", - "dev": true, - "requires": { - "babel-eslint": "^10.1.0", - "eslint-visitor-keys": "^1.3.0", - "esquery": "^1.3.1", - "multimap": "^1.1.0" + }, + "dependencies": { + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + } } }, "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, "requires": { - "eslint-visitor-keys": "^1.1.0" + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } } }, "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + }, + "esm-utils": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/esm-utils/-/esm-utils-2.2.0.tgz", + "integrity": "sha512-kYj4yNRo4W3by0f1mj4AfRh1nsRTTpQG921Ik3AfyUq6upGlkI1fnMLypHn6XtFzZPdCYH1k9mtQA5MyZF9m+w==", "dev": true }, "espree": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.2.0.tgz", - "integrity": "sha512-H+cQ3+3JYRMEIOl87e7QdHX70ocly5iW4+dttuR8iYSPr/hXKFb+7dBsZ7+u1adC4VrnPlTkv0+OwuPnDop19g==", + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", + "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", "dev": true, "requires": { - "acorn": "^7.3.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.3.0" + "acorn": "^8.7.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^3.3.0" }, "dependencies": { "acorn": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz", - "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", "dev": true } } @@ -10300,24 +11004,24 @@ "dev": true }, "espurify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/espurify/-/espurify-2.0.1.tgz", - "integrity": "sha512-7w/dUrReI/QbJFHRwfomTlkQOXaB1NuCrBRn5Y26HXn5gvh18/19AgLbayVrNxXQfkckvgrJloWyvZDuJ7dhEA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/espurify/-/espurify-2.1.1.tgz", + "integrity": "sha512-zttWvnkhcDyGOhSH4vO2qCBILpdCMv/MX8lp4cqgRkQoDRGK2oZxi2GfWhlP2dIXmk7BaKeOTuzbHhyC68o8XQ==", "dev": true }, "esquery": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, "requires": { "estraverse": "^5.1.0" }, "dependencies": { "estraverse": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz", - "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true } } @@ -10701,12 +11405,12 @@ } }, "file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "requires": { - "flat-cache": "^2.0.1" + "flat-cache": "^3.0.4" } }, "file-loader": { @@ -11220,20 +11924,19 @@ } }, "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" + "flatted": "^3.1.0", + "rimraf": "^3.0.2" }, "dependencies": { "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -11245,9 +11948,9 @@ } }, "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { "glob": "^7.1.3" @@ -11256,9 +11959,9 @@ } }, "flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", "dev": true }, "flush-write-stream": { @@ -12078,6 +12781,17 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, "get-package-type": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", @@ -12115,6 +12829,16 @@ "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -12660,18 +13384,18 @@ } }, "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "version": "13.12.1", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz", + "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==", "dev": true, "requires": { - "type-fest": "^0.8.1" + "type-fest": "^0.20.2" }, "dependencies": { "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true } } @@ -12854,6 +13578,12 @@ } } }, + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true + }, "has-flag": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", @@ -12866,6 +13596,23 @@ "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", "dev": true }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + }, + "dependencies": { + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + } + } + }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -13029,12 +13776,6 @@ "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", "dev": true }, - "highlight.js": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.1.2.tgz", - "integrity": "sha512-Q39v/Mn5mfBlMff9r+zzA+gWxRsCRKwEMvYTiisLr/XUiFI/4puWt0Ojdko3R3JCNWGdOWaA5g/Yxqa23kC5AA==", - "dev": true - }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -13798,9 +14539,9 @@ } }, "import-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-modules/-/import-modules-2.0.0.tgz", - "integrity": "sha512-iczM/v9drffdNnABOKwj0f9G3cFDon99VcG1mxeBsdqnbd+vnQ5c2uAiCHNQITqFTOPaEvwg3VjoWCur0uHLEw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-modules/-/import-modules-2.1.0.tgz", + "integrity": "sha512-8HEWcnkbGpovH9yInoisxaSoIg9Brbul+Ju3Kqe2UsYDUBJD/iQjSgEj0zPcTDPKfPp2fs5xlv1i+JSye/m1/A==", "dev": true }, "imurmurhash": { @@ -13975,6 +14716,17 @@ "ipaddr.js": "^1.9.0" } }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, "interpret": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", @@ -14061,6 +14813,15 @@ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, "is-binary-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", @@ -14070,6 +14831,16 @@ "binary-extensions": "^1.0.0" } }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", @@ -14114,6 +14885,15 @@ "rgba-regex": "^1.0.0" } }, + "is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", @@ -14154,6 +14934,12 @@ "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", "dev": true }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, "is-dotfile": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", @@ -14258,6 +15044,12 @@ "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", "dev": true }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true + }, "is-npm": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-3.0.0.tgz", @@ -14273,6 +15065,15 @@ "kind-of": "^3.0.2" } }, + "is-number-object": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", + "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", @@ -14405,6 +15206,12 @@ "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", "dev": true }, + "is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "dev": true + }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -14412,10 +15219,13 @@ "dev": true }, "is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", - "dev": true + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } }, "is-svg": { "version": "3.0.0", @@ -14459,12 +15269,27 @@ "unc-path-regex": "^0.1.2" } }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", "dev": true }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -14852,6 +15677,12 @@ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", @@ -14899,6 +15730,12 @@ } } }, + "jsonc-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", + "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", + "dev": true + }, "jsonfile": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", @@ -15002,18 +15839,18 @@ } }, "line-column-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/line-column-path/-/line-column-path-2.0.0.tgz", - "integrity": "sha512-nz3A+vi4bElhwd62E9+Qk/f9BDYLSzD/4Hy1rir0I4GnMxSTezSymzANyph5N1PgRZ3sSbA+yR5hOuXxc71a0Q==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/line-column-path/-/line-column-path-3.0.0.tgz", + "integrity": "sha512-Atocnm7Wr9nuvAn97yEPQa3pcQI5eLQGBz+m6iTb+CVw+IOzYB9MrYK7jI7BfC9ISnT4Fu0eiwhAScV//rp4Hw==", "dev": true, "requires": { - "type-fest": "^0.4.1" + "type-fest": "^2.0.0" }, "dependencies": { "type-fest": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.4.1.tgz", - "integrity": "sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.12.0.tgz", + "integrity": "sha512-Qe5GRT+n/4GoqCNGGVp5Snapg1Omq3V7irBJB3EaKsp7HWDo5Gv2d/67gfNyV+d5EXD+x/RF5l1h4yJ7qNkcGA==", "dev": true } } @@ -15132,6 +15969,12 @@ "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", "dev": true }, + "lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "dev": true + }, "lodash._reinterpolate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", @@ -15168,12 +16011,6 @@ "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", "dev": true }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", - "dev": true - }, "lodash.ismatch": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", @@ -15210,6 +16047,12 @@ "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", "dev": true }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", @@ -15253,12 +16096,6 @@ "integrity": "sha1-2ZwHpmnp5tJOE2Lf4mbGdhavEwI=", "dev": true }, - "lodash.zip": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz", - "integrity": "sha1-7GZi5IlkCO1KtsVCo5kLcswIACA=", - "dev": true - }, "log-symbols": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", @@ -15359,9 +16196,9 @@ } }, "lunr": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.8.tgz", - "integrity": "sha512-oxMeX/Y35PNFuZoHp+jUj5OSEmLCaIH4KTFJh7a93cHBoFmpw2IoPs22VIz7vyO2YUnx2Tn9dzIwO2P/4quIRg==", + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", "dev": true }, "magic-string": { @@ -15435,9 +16272,9 @@ } }, "maquette": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/maquette/-/maquette-3.3.7.tgz", - "integrity": "sha512-yB10T1PjjsojFJMz5PP+HfIYQBKZD06Y9rWTUqPRMJMYGCELlWCebY4LrtWhF2x32eZZ263WJUu4sms/rh1sKQ==" + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/maquette/-/maquette-3.5.1.tgz", + "integrity": "sha512-GZINsa1sCRaGWM22UtMyISus2UKFZR3VfLPO66lPqZRibJXtJb/kjLowjUJaK/UHo3dxffI27KcaONJXA+sjdA==" }, "maquette-query": { "version": "0.11.7", @@ -16015,6 +16852,12 @@ "brace-expansion": "^1.1.7" } }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, "minimist-options": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", @@ -16242,12 +17085,6 @@ "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", "dev": true }, - "multimap": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multimap/-/multimap-1.1.0.tgz", - "integrity": "sha512-0ZIR9PasPxGXmRsEF8jsDzndzHDj7tIav+JUmvIFB/WHswliFnquxECT/De7GR4yg99ky/NlRKJT82G1y271bw==", - "dev": true - }, "mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", @@ -20485,51 +21322,180 @@ } }, "open-editor": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/open-editor/-/open-editor-2.0.1.tgz", - "integrity": "sha512-B3KdD7Pl8jYdpBSBBbdYaqVUI3whQjLl1G1+CvhNc8+d7GzKRUq+VuCIx1thxGiqD2oBGRvsZz7QWrBsFP2yVA==", - "dev": true, - "requires": { - "env-editor": "^0.4.0", - "line-column-path": "^2.0.0", - "open": "^6.2.0" - } - }, - "opencollective-postinstall": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", - "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==", - "dev": true - }, - "opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - } - }, - "opn-cli": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/opn-cli/-/opn-cli-5.0.0.tgz", - "integrity": "sha512-+KGOnL1M9C9BbgLh6KvbSshAmOZqJtblq5w/1tpNRswCJchn9kmD4ZgQLj6mVMr7DzLpE8M/kRrvGoIYYca4sg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/open-editor/-/open-editor-4.0.0.tgz", + "integrity": "sha512-5mKZ98iFdkivozt5XTCOspoKbL3wtYu6oOoVxfWQ0qUX9NYsK8pdkHE7VUHXr+CwyC3nf6mV0S5FPsMS65innw==", "dev": true, "requires": { - "file-type": "^11.0.0", - "get-stdin": "^7.0.0", - "meow": "^5.0.0", - "open": "^6.3.0", - "temp-write": "^4.0.0" + "env-editor": "^1.0.0", + "execa": "^5.1.1", + "line-column-path": "^3.0.0", + "open": "^8.4.0" }, "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "camelcase-keys": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "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" + } + }, + "open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "opencollective-postinstall": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", + "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==", + "dev": true + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "opn-cli": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/opn-cli/-/opn-cli-5.0.0.tgz", + "integrity": "sha512-+KGOnL1M9C9BbgLh6KvbSshAmOZqJtblq5w/1tpNRswCJchn9kmD4ZgQLj6mVMr7DzLpE8M/kRrvGoIYYca4sg==", + "dev": true, + "requires": { + "file-type": "^11.0.0", + "get-stdin": "^7.0.0", + "meow": "^5.0.0", + "open": "^6.3.0", + "temp-write": "^4.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "camelcase-keys": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", @@ -22117,12 +23083,6 @@ "fromentries": "^1.2.0" } }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, "promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", @@ -22615,9 +23575,9 @@ } }, "regexp-tree": { - "version": "0.1.21", - "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.21.tgz", - "integrity": "sha512-kUUXjX4AnqnR8KRTCrayAo9PzYMRKmVoGgaz2tBuz0MF3g1ZbGebmtW0yFHfFK9CmBjQKeYIgoL22pFLBJY7sw==", + "version": "0.1.24", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.24.tgz", + "integrity": "sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw==", "dev": true }, "regexp.prototype.flags": { @@ -22631,9 +23591,9 @@ } }, "regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true }, "regexpu-core": { @@ -22889,12 +23849,6 @@ "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", "dev": true }, - "reserved-words": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/reserved-words/-/reserved-words-0.1.2.tgz", - "integrity": "sha1-AKCUD5jNUBrqqsMWQR2a3FKzGrE=", - "dev": true - }, "resolve": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", @@ -23753,6 +24707,36 @@ "rechoir": "^0.6.2" } }, + "shiki": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.10.1.tgz", + "integrity": "sha512-VsY7QJVzU51j5o1+DguUd+6vmCmZ5v/6gYu4vyYAhzjuNQU6P/vmSy4uQaOhvje031qQMiW0d2BwgMH52vqMng==", + "dev": true, + "requires": { + "jsonc-parser": "^3.0.0", + "vscode-oniguruma": "^1.6.1", + "vscode-textmate": "5.2.0" + } + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "dependencies": { + "object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "dev": true + } + } + }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", @@ -25001,6 +25985,12 @@ } } }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, "svg-tags": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", @@ -25086,57 +26076,6 @@ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", "dev": true }, - "table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", - "dev": true, - "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "dependencies": { - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true - }, - "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - } - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, "tapable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", @@ -25779,22 +26718,44 @@ } }, "ts-node": { - "version": "8.10.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.10.2.tgz", - "integrity": "sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA==", - "dev": true, - "requires": { + "version": "10.7.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.7.0.tgz", + "integrity": "sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==", + "dev": true, + "requires": { + "@cspotcode/source-map-support": "0.7.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", "arg": "^4.1.0", + "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", - "source-map-support": "^0.5.17", + "v8-compile-cache-lib": "^3.0.0", "yn": "3.1.1" + }, + "dependencies": { + "acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true + }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true + } } }, "tsconfig-paths": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", - "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.0.tgz", + "integrity": "sha512-cg/1jAZoL57R39+wiw4u/SCC6Ic9Q5NqjBOb+9xISedOYurfog9ZNmKJSxAnb2m/5Bq4lE9lhUcau33Ml8DM0g==", "dev": true, "requires": { "@types/json5": "^0.0.29", @@ -25811,33 +26772,27 @@ "requires": { "minimist": "^1.2.0" } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true } } }, "tslib": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz", - "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g==" + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" }, "tsutils": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", - "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, "requires": { "tslib": "^1.8.1" }, "dependencies": { "tslib": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true } } @@ -25904,76 +26859,75 @@ } }, "typedoc": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.17.8.tgz", - "integrity": "sha512-/OyrHCJ8jtzu+QZ+771YaxQ9s4g5Z3XsQE3Ma7q+BL392xxBn4UMvvCdVnqKC2T/dz03/VXSLVKOP3lHmDdc/w==", + "version": "0.22.13", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.22.13.tgz", + "integrity": "sha512-NHNI7Dr6JHa/I3+c62gdRNXBIyX7P33O9TafGLd07ur3MqzcKgwTvpg18EtvCLHJyfeSthAtCLpM7WkStUmDuQ==", "dev": true, "requires": { - "fs-extra": "^8.1.0", - "handlebars": "^4.7.6", - "highlight.js": "^10.0.0", - "lodash": "^4.17.15", - "lunr": "^2.3.8", - "marked": "1.0.0", - "minimatch": "^3.0.0", - "progress": "^2.0.3", - "shelljs": "^0.8.4", - "typedoc-default-themes": "^0.10.2" + "glob": "^7.2.0", + "lunr": "^2.3.9", + "marked": "^4.0.12", + "minimatch": "^5.0.1", + "shiki": "^0.10.1" }, "dependencies": { - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "dependencies": { + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } } }, - "graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "marked": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.12.tgz", + "integrity": "sha512-hgibXWrEDNBWgGiK18j/4lkS6ihTe9sxtV4Q1OQppb/0zzyPSzoFANBa5MfsG/zgsWklmNnhm0XACZOH/0HBiQ==", "dev": true }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", "dev": true, "requires": { - "graceful-fs": "^4.1.6" - } - }, - "marked": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-1.0.0.tgz", - "integrity": "sha512-Wo+L1pWTVibfrSr+TTtMuiMfNzmZWiOPeO7rZsQUY5bgsxpHesBEcIWJloWVTFnrMXnf/TL30eTFSGJddmQAng==", - "dev": true - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true + "brace-expansion": "^2.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + } + } } } }, - "typedoc-default-themes": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.10.2.tgz", - "integrity": "sha512-zo09yRj+xwLFE3hyhJeVHWRSPuKEIAsFK5r2u47KL/HBKqpwdUSanoaz5L34IKiSATFrjG5ywmIu98hPVMfxZg==", - "dev": true, - "requires": { - "lunr": "^2.3.8" - } - }, "typescript": { - "version": "3.9.7", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", - "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.2.tgz", + "integrity": "sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==", "dev": true }, "uc.micro": { @@ -25989,6 +26943,26 @@ "dev": true, "optional": true }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + }, + "dependencies": { + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + } + } + }, "unc-path-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", @@ -26341,9 +27315,15 @@ "dev": true }, "v8-compile-cache": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", - "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "v8-compile-cache-lib": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.0.tgz", + "integrity": "sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA==", "dev": true }, "validate-npm-package-license": { @@ -26391,6 +27371,18 @@ "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", "dev": true }, + "vscode-oniguruma": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.6.2.tgz", + "integrity": "sha512-KH8+KKov5eS/9WhofZR8M8dMHWN2gTxjMsG4jd04YhpbPR91fUj7rYQ2/XjeHCJWbg7X++ApRIU9NUwM2vTvLA==", + "dev": true + }, + "vscode-textmate": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.2.0.tgz", + "integrity": "sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==", + "dev": true + }, "vue": { "version": "2.6.11", "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.11.tgz", @@ -28850,6 +29842,19 @@ "isexe": "^2.0.0" } }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", @@ -28977,32 +29982,6 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, - "write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - } - } - }, "write-file-atomic": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", @@ -29066,652 +30045,473 @@ "dev": true }, "xo": { - "version": "0.32.1", - "resolved": "https://registry.npmjs.org/xo/-/xo-0.32.1.tgz", - "integrity": "sha512-L43ROY2opNW7yp7byEAibBSk0jYvMuC4yUUrphkqegqU76Bxp5Rc+Gcl62lK1f5zuRrlY0IwMypIfY4EPSzMfQ==", - "dev": true, - "requires": { - "@typescript-eslint/eslint-plugin": "^3.1.0", - "@typescript-eslint/parser": "^3.1.0", - "arrify": "^2.0.1", - "cosmiconfig": "^6.0.0", - "debug": "^4.1.1", - "eslint": "^7.1.0", - "eslint-config-prettier": "^6.11.0", - "eslint-config-xo": "^0.30.0", - "eslint-config-xo-typescript": "^0.31.0", - "eslint-formatter-pretty": "^3.0.1", - "eslint-import-resolver-webpack": "^0.12.1", - "eslint-plugin-ava": "^10.3.0", + "version": "0.48.0", + "resolved": "https://registry.npmjs.org/xo/-/xo-0.48.0.tgz", + "integrity": "sha512-f0sbQGJoML3nwOLG7EIAJroBypmLokoGJqTPN+bI/oogKLMciqWBEiFh9Vpxnfwxafq1AkHoWrQZQWSflDCG1w==", + "dev": true, + "requires": { + "@eslint/eslintrc": "^1.0.5", + "@typescript-eslint/eslint-plugin": "^5.11.0", + "@typescript-eslint/parser": "^5.11.0", + "arrify": "^3.0.0", + "cosmiconfig": "^7.0.1", + "define-lazy-prop": "^3.0.0", + "eslint": "^8.8.0", + "eslint-config-prettier": "^8.3.0", + "eslint-config-xo": "^0.40.0", + "eslint-config-xo-typescript": "^0.50.0", + "eslint-formatter-pretty": "^4.1.0", + "eslint-import-resolver-webpack": "^0.13.2", + "eslint-plugin-ava": "^13.2.0", "eslint-plugin-eslint-comments": "^3.2.0", - "eslint-plugin-import": "^2.20.2", + "eslint-plugin-import": "^2.25.4", "eslint-plugin-no-use-extend-native": "^0.5.0", "eslint-plugin-node": "^11.1.0", - "eslint-plugin-prettier": "^3.1.3", - "eslint-plugin-promise": "^4.2.1", - "eslint-plugin-unicorn": "^20.1.0", - "find-cache-dir": "^3.3.1", - "find-up": "^4.1.0", - "fs-extra": "^9.0.0", - "get-stdin": "^8.0.0", - "globby": "^9.0.0", - "has-flag": "^4.0.0", + "eslint-plugin-prettier": "^4.0.0", + "eslint-plugin-unicorn": "^40.1.0", + "esm-utils": "^2.0.1", + "find-cache-dir": "^3.3.2", + "find-up": "^6.3.0", + "get-stdin": "^9.0.0", + "globby": "^13.1.1", "imurmurhash": "^0.1.4", - "is-path-inside": "^3.0.2", "json-stable-stringify-without-jsonify": "^1.0.1", - "json5": "^2.1.3", - "lodash": "^4.17.15", - "meow": "^7.0.1", - "micromatch": "^4.0.2", - "open-editor": "^2.0.1", - "p-reduce": "^2.1.0", - "path-exists": "^4.0.0", - "prettier": "2.0.4", - "resolve-cwd": "^3.0.0", - "resolve-from": "^5.0.0", - "semver": "^7.3.2", - "slash": "^3.0.0", + "json5": "^2.2.0", + "lodash-es": "^4.17.21", + "meow": "^10.1.2", + "micromatch": "^4.0.4", + "open-editor": "^4.0.0", + "prettier": "^2.5.1", + "semver": "^7.3.5", + "slash": "^4.0.0", "to-absolute-glob": "^2.0.2", - "typescript": "^3.3.1", - "update-notifier": "^4.1.0" + "typescript": "^4.5.5" }, "dependencies": { - "@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", - "dev": true + "@nodelib/fs.scandir": { + "version": "2.1.5", + "bundled": true, + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "@nodelib/fs.stat": { + "version": "2.0.5", + "bundled": true, "dev": true }, - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "@nodelib/fs.walk": { + "version": "1.2.8", + "bundled": true, "dev": true, "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" } }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "@types/json-schema": { + "version": "7.0.9", + "bundled": true, "dev": true }, - "arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", "dev": true }, - "boxen": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", - "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", + "@typescript-eslint/eslint-plugin": { + "version": "5.11.0", + "bundled": true, "dev": true, "requires": { - "ansi-align": "^3.0.0", - "camelcase": "^5.3.1", - "chalk": "^3.0.0", - "cli-boxes": "^2.2.0", - "string-width": "^4.1.0", - "term-size": "^2.1.0", - "type-fest": "^0.8.1", - "widest-line": "^3.1.0" + "@typescript-eslint/scope-manager": "5.11.0", + "@typescript-eslint/type-utils": "5.11.0", + "@typescript-eslint/utils": "5.11.0", + "debug": "^4.3.2", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.2.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" }, "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "ignore": { + "version": "5.2.0", + "bundled": true, "dev": true } } }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "@typescript-eslint/parser": { + "version": "5.11.0", + "bundled": true, "dev": true, "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "@typescript-eslint/scope-manager": "5.11.0", + "@typescript-eslint/types": "5.11.0", + "@typescript-eslint/typescript-estree": "5.11.0", + "debug": "^4.3.2" } }, - "camelcase": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.0.0.tgz", - "integrity": "sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w==", + "@typescript-eslint/scope-manager": { + "version": "5.11.0", + "bundled": true, + "dev": true, + "requires": { + "@typescript-eslint/types": "5.11.0", + "@typescript-eslint/visitor-keys": "5.11.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.11.0", + "bundled": true, + "dev": true, + "requires": { + "@typescript-eslint/utils": "5.11.0", + "debug": "^4.3.2", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/types": { + "version": "5.11.0", + "bundled": true, "dev": true }, - "camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "@typescript-eslint/typescript-estree": { + "version": "5.11.0", + "bundled": true, "dev": true, "requires": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" + "@typescript-eslint/types": "5.11.0", + "@typescript-eslint/visitor-keys": "5.11.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" }, "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "globby": { + "version": "11.1.0", + "bundled": true, + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "ignore": { + "version": "5.2.0", + "bundled": true, + "dev": true + }, + "slash": { + "version": "3.0.0", + "bundled": true, "dev": true } } }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "@typescript-eslint/utils": { + "version": "5.11.0", + "bundled": true, "dev": true, "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.11.0", + "@typescript-eslint/types": "5.11.0", + "@typescript-eslint/typescript-estree": "5.11.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" } }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "@typescript-eslint/visitor-keys": { + "version": "5.11.0", + "bundled": true, "dev": true, "requires": { - "color-name": "~1.1.4" + "@typescript-eslint/types": "5.11.0", + "eslint-visitor-keys": "^3.0.0" } }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "array-union": { + "version": "2.1.0", + "bundled": true, "dev": true }, - "configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "arrify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-3.0.0.tgz", + "integrity": "sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==", + "dev": true + }, + "braces": { + "version": "3.0.2", + "bundled": true, "dev": true, "requires": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" + "fill-range": "^7.0.1" } }, - "crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true }, - "dot-prop": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", - "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", + "camelcase-keys": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz", + "integrity": "sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==", "dev": true, "requires": { - "is-obj": "^2.0.0" + "camelcase": "^6.3.0", + "map-obj": "^4.1.0", + "quick-lru": "^5.1.1", + "type-fest": "^1.2.1" } }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "eslint-config-xo": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/eslint-config-xo/-/eslint-config-xo-0.30.0.tgz", - "integrity": "sha512-0C+Hl1Mfrbh+LMc2A2v2BabI+n0MoVHYyGJOJoWped/Tfh/OoyZ7gLyed5vLqVR4czjR8Zi7DGW2S1nTGKUY4w==", + "cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", "dev": true, "requires": { - "confusing-browser-globals": "1.0.9" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" } }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "debug": { + "version": "4.3.3", + "bundled": true, "dev": true, "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "ms": "2.1.2" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "ms": { + "version": "2.1.2", + "bundled": true, "dev": true } } }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "decamelize": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz", + "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "bundled": true, "dev": true, "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "path-type": "^4.0.0" } }, - "fast-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "eslint-config-xo-typescript": { + "version": "0.50.0", + "bundled": true, + "dev": true + }, + "eslint-plugin-prettier": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz", + "integrity": "sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==", "dev": true, "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" + "prettier-linter-helpers": "^1.0.0" + } + }, + "eslint-scope": { + "version": "5.1.1", + "bundled": true, + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" }, "dependencies": { - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } + "estraverse": { + "version": "4.3.0", + "bundled": true, + "dev": true } } }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "eslint-utils": { + "version": "3.0.0", + "bundled": true, "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "eslint-visitor-keys": "^2.0.0" }, "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } + "eslint-visitor-keys": { + "version": "2.1.0", + "bundled": true, + "dev": true } } }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "eslint-visitor-keys": { + "version": "3.2.0", + "bundled": true, + "dev": true + }, + "esrecurse": { + "version": "4.3.0", + "bundled": true, "dev": true, "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "estraverse": "^5.2.0" } }, - "get-stdin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", - "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", + "estraverse": { + "version": "5.3.0", + "bundled": true, "dev": true }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "fast-glob": { + "version": "3.2.11", + "bundled": true, "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" } }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "fastq": { + "version": "1.13.0", + "bundled": true, "dev": true, "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } + "reusify": "^1.0.4" } }, - "global-dirs": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.0.1.tgz", - "integrity": "sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A==", + "fill-range": { + "version": "7.0.1", + "bundled": true, "dev": true, "requires": { - "ini": "^1.3.5" + "to-regex-range": "^5.0.1" } }, - "globby": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", - "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, "requires": { - "@types/glob": "^7.1.1", - "array-union": "^1.0.2", - "dir-glob": "^2.2.2", - "fast-glob": "^2.2.6", - "glob": "^7.1.3", - "ignore": "^4.0.3", - "pify": "^4.0.1", - "slash": "^2.0.0" - }, - "dependencies": { - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - } + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" } }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, + "requires": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + } }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "functional-red-black-tree": { + "version": "1.0.1", + "bundled": true, "dev": true }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "get-stdin": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", + "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", "dev": true }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "glob-parent": { + "version": "5.1.2", + "bundled": true, "dev": true, "requires": { - "kind-of": "^6.0.0" + "is-glob": "^4.0.1" } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "globby": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.1.tgz", + "integrity": "sha512-XMzoDZbGZ37tufiv7g0N4F/zp3zkwdFtVbV3EHsVl1KQr4RPLfNoT068/97RPshz2J5xYNEjLKKBKaGHifBd3Q==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "lru-cache": "^6.0.0" } }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "bundled": true, "dev": true }, "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "version": "4.0.3", + "bundled": true, "dev": true, "requires": { "is-extglob": "^2.1.1" } }, - "is-installed-globally": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", - "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", - "dev": true, - "requires": { - "global-dirs": "^2.0.1", - "is-path-inside": "^3.0.1" - } - }, - "is-npm": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", - "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", + "is-number": { + "version": "7.0.0", + "bundled": true, "dev": true }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", "dev": true, "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "minimist": "^1.2.5" } }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true - }, - "is-path-inside": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", - "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -29719,12 +30519,20 @@ "dev": true }, "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.1.0.tgz", + "integrity": "sha512-HNx5uOnYeK4SxEoid5qnhRfprlJeGMzFRKPLCf/15N3/B4AiofNwC/yq7VBKdVk9dx7m+PiYCJOGg55JYTAqoQ==", "dev": true, "requires": { - "p-locate": "^4.1.0" + "p-locate": "^6.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "bundled": true, + "dev": true, + "requires": { + "yallist": "^4.0.0" } }, "make-dir": { @@ -29745,75 +30553,43 @@ } }, "map-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.1.0.tgz", - "integrity": "sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", "dev": true }, "meow": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-7.0.1.tgz", - "integrity": "sha512-tBKIQqVrAHqwit0vfuFPY3LlzJYkEOFyKa3bPgxzNl6q/RtN8KQ+ALYEASYuFayzSAsjlhXj/JZ10rH85Q6TUw==", + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.2.tgz", + "integrity": "sha512-zbuAlN+V/sXlbGchNS9WTWjUzeamwMt/BApKCJi7B0QyZstZaMx0n4Unll/fg0njGtMdC9UP5SAscvOCLYdM+Q==", "dev": true, "requires": { - "@types/minimist": "^1.2.0", - "arrify": "^2.0.1", - "camelcase": "^6.0.0", - "camelcase-keys": "^6.2.2", + "@types/minimist": "^1.2.2", + "camelcase-keys": "^7.0.0", + "decamelize": "^5.0.0", "decamelize-keys": "^1.1.0", "hard-rejection": "^2.1.0", - "minimist-options": "^4.0.2", - "normalize-package-data": "^2.5.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.13.1", - "yargs-parser": "^18.1.3" + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.2", + "read-pkg-up": "^8.0.0", + "redent": "^4.0.0", + "trim-newlines": "^4.0.2", + "type-fest": "^1.2.2", + "yargs-parser": "^20.2.9" } }, + "merge2": { + "version": "1.4.1", + "bundled": true, + "dev": true + }, "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "version": "4.0.4", + "bundled": true, "dev": true, "requires": { "braces": "^3.0.1", - "picomatch": "^2.0.5" - }, - "dependencies": { - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - } + "picomatch": "^2.2.3" } }, "minimist-options": { @@ -29835,262 +30611,255 @@ } } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, + "normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "requires": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + } + }, "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", "dev": true, "requires": { - "p-try": "^2.0.0" + "yocto-queue": "^1.0.0" } }, "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", "dev": true, "requires": { - "p-limit": "^2.2.0" + "p-limit": "^4.0.0" } }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } }, "path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true + }, + "path-type": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "bundled": true, "dev": true }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "picomatch": { + "version": "2.3.1", + "bundled": true, "dev": true }, "prettier": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.4.tgz", - "integrity": "sha512-SVJIQ51spzFDvh4fIbCLvciiDMCrRhlN3mbZvv/+ycjvmF5E73bKdGfU8QDLNmjYJf+lsGnDBC4UUnvTe5OO0w==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz", + "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==", "dev": true }, - "quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "queue-microtask": { + "version": "1.2.3", + "bundled": true, "dev": true }, - "redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, - "requires": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - } + "quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true }, - "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "read-pkg": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz", + "integrity": "sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==", "dev": true, "requires": { - "path-parse": "^1.0.6" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^3.0.2", + "parse-json": "^5.2.0", + "type-fest": "^1.0.1" } }, - "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "dev": true - }, - "semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "read-pkg-up": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-8.0.0.tgz", + "integrity": "sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==", "dev": true, "requires": { - "semver": "^6.3.0" + "find-up": "^5.0.0", + "read-pkg": "^6.0.0", + "type-fest": "^1.0.1" }, "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true } } }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "redent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz", + "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==", "dev": true, "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "indent-string": "^5.0.0", + "strip-indent": "^4.0.0" } }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "regexpp": { + "version": "3.2.0", + "bundled": true, + "dev": true + }, + "reusify": { + "version": "1.0.4", + "bundled": true, + "dev": true + }, + "run-parallel": { + "version": "1.2.0", + "bundled": true, "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "queue-microtask": "^1.2.2" } }, - "strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "semver": { + "version": "7.3.5", + "bundled": true, "dev": true, "requires": { - "min-indent": "^1.0.0" + "lru-cache": "^6.0.0" } }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true + }, + "strip-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", + "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", "dev": true, "requires": { - "has-flag": "^4.0.0" + "min-indent": "^1.0.1" } }, - "term-size": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz", - "integrity": "sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw==", - "dev": true - }, "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "version": "5.0.1", + "bundled": true, "dev": true, "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "is-number": "^7.0.0" } }, "trim-newlines": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.0.tgz", - "integrity": "sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.0.2.tgz", + "integrity": "sha512-GJtWyq9InR/2HRiLZgpIKv+ufIKrVrvjQWEj7PxAXNc5dwbNJkqhAUoAGgzRmULAnoOM5EIpveYd3J2VeSAIew==", "dev": true }, - "type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "tslib": { + "version": "1.14.1", + "bundled": true, "dev": true }, - "unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dev": true, - "requires": { - "crypto-random-string": "^2.0.0" - } - }, - "update-notifier": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.0.tgz", - "integrity": "sha512-w3doE1qtI0/ZmgeoDoARmI5fjDoT93IfKgEGqm26dGUOh8oNpaSTsGNdYRN/SjOuo10jcJGwkEL3mroKzktkew==", - "dev": true, - "requires": { - "boxen": "^4.2.0", - "chalk": "^3.0.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.3.1", - "is-npm": "^4.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.0.0", - "pupa": "^2.0.1", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" - } - }, - "widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "tsutils": { + "version": "3.21.0", + "bundled": true, "dev": true, "requires": { - "string-width": "^4.0.0" + "tslib": "^1.8.1" } }, - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } + "type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true }, - "xdg-basedir": { + "yallist": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "bundled": true, "dev": true }, "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - } - } + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + }, + "yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true } } }, @@ -30276,6 +31045,12 @@ "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + }, "zepto": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/zepto/-/zepto-1.2.0.tgz", diff --git a/package.json b/package.json index cf85f77..c1be2fc 100644 --- a/package.json +++ b/package.json @@ -11,10 +11,10 @@ "license": "MIT", "scripts": { "info": "npm-scripts-info", - "build": "trash build && npm run build:main", + "build": "trash build && npm run build:main && npm run build:module && npm run build:browser", "build:main": "tsc -p tsconfig.json", "build:module": "tsc -p config/exports/tsconfig.module.json", - "build:browser": "rollup -c config/exports/rollup.config.js -f es -o build/browser/frets.js", + "build:browser": "rollup -m -c config/exports/rollup.config.js -f es -o build/browser/frets.js", "build:browser-min": "rollup -c config/exports/rollup_min.config.js -f umd -o build/browser/frets.min.js", "build:browser-cjs": "rollup -c config/exports/rollup.config.js -f cjs -o build/browser/frets.cjs.js", "build:resolve-sourcemaps": "sorcery -i build/browser/frets.js && sorcery -i build/browser/frets.cjs.js", @@ -29,8 +29,8 @@ "html-coverage": "nyc report --reporter=html", "send-coverage": "nyc report --reporter=lcov", "docs": "npm run docs:html && opn public/docs/index.html", - "docs:html": "typedoc src/index.ts --excludePrivate --mode file --theme minimal --out docs/.vuepress/dist/api/", - "docs:json": "typedoc --mode file --json public/docs/typedoc.json src/index.ts", + "docs:html": "typedoc src/index.ts --excludePrivate --theme default --out docs/.vuepress/dist/api/", + "docs:json": "typedoc --json public/docs/typedoc.json src/index.ts", "docs:publish": "./scripts/docs-deploy.sh", "docs:dev": "vuepress dev docs", "docs:build": "NODE_ENV=production vuepress build docs", @@ -59,44 +59,44 @@ "node": ">=10.22.0" }, "devDependencies": { - "@semantic-release/commit-analyzer": "^8.0.1", - "@semantic-release/npm": "^7.0.5", - "@semantic-release/release-notes-generator": "^9.0.1", - "@types/eslint": "^7.2.0", - "@types/node": "^8.10.21", - "@typescript-eslint/eslint-plugin": "^3.7.1", - "@typescript-eslint/parser": "3.7.1", - "ava": "^3.11.0", + "@semantic-release/commit-analyzer": "^9.0.2", + "@semantic-release/npm": "^9.0.1", + "@semantic-release/release-notes-generator": "^10.0.3", + "@types/eslint": "^8.4.1", + "@types/node": "^17.0.21", + "@typescript-eslint/eslint-plugin": "^5.15.0", + "@typescript-eslint/parser": "5.15.0", + "ava": "^4.1.0", "browser-env": "^3.3.0", - "codecov": "^3.7.2", + "codecov": "^3.8.3", "cpx": "^1.5.0", - "cz-conventional-changelog": "^3.2.0", - "eslint": "7.5.0", - "eslint-config-xo": "^0.32.1", - "eslint-config-xo-typescript": "^0.31.0", - "eslint-plugin-prettier": "^3.1.4", - "gh-pages": "^3.1.0", + "cz-conventional-changelog": "^3.3.0", + "eslint": "8.11.0", + "eslint-config-xo": "^0.40.0", + "eslint-config-xo-typescript": "^0.50.0", + "eslint-plugin-prettier": "^4.0.0", + "gh-pages": "^3.2.3", "maquette-query": "^0.11.7", "mkdirp": "^1.0.4", "npm-scripts-info": "^0.3.9", "nyc": "^15.1.0", "opn-cli": "^5.0.0", - "prettier": "2.0.5", - "rollup": "~1.32.1", + "prettier": "2.5.1", + "rollup": "~2.70.1", "rollup-plugin-alias": "^2.2.0", "rollup-plugin-commonjs": "^10.1.0", "rollup-plugin-node-resolve": "^5.2.0", - "rollup-plugin-terser": "~5.3.0", - "semantic-release": "^17.1.1", + "rollup-plugin-terser": "~7.0.2", + "semantic-release": "^19.0.2", "sleep-ms": "^2.0.1", "sorcery": "^0.10.0", - "standard-version": "^8.0.2", - "trash-cli": "^3.0.0", - "ts-node": "8.10.2", - "typedoc": "^0.17.8", - "typescript": "^3.9.7", - "vuepress": "^1.5.2", - "xo": "^0.32.1" + "standard-version": "^9.3.2", + "trash-cli": "^5.0.0", + "ts-node": "10.7.0", + "typedoc": "^0.22.13", + "typescript": "^4.6.2", + "vuepress": "^1.9.7", + "xo": "^0.48.0" }, "keywords": [ "framework", @@ -132,10 +132,10 @@ ] }, "dependencies": { - "@types/dom-inputevent": "^1.0.5", - "maquette": "3.3.7", + "@types/dom-inputevent": "^1.0.7", + "maquette": "3.5.1", "path-parser": "6.1.0", - "tslib": "2.0.0" + "tslib": "2.3.1" }, "config": { "commitizen": { @@ -159,6 +159,7 @@ ], "prettier": true, "rules": { + "import/extensions": 0, "import/no-unresolved": 0, "xo/filename-case": 0, "unicorn/filename-case": 0 diff --git a/src/Frets.spec.ts b/src/Frets.spec.ts index ac72b85..a96eaae 100644 --- a/src/Frets.spec.ts +++ b/src/Frets.spec.ts @@ -1,6 +1,6 @@ import test from 'ava'; import { - IFunFrets, + FunFrets, PropsWithFields, setup } from './index'; @@ -22,7 +22,7 @@ class SimpleProps extends PropsWithFields { public checkValue = 0; } -type main = IFunFrets; +type main = FunFrets; test('FRETS initializes with simple types', t => { const app = setup(new SimpleProps(), (f: main) => { @@ -207,7 +207,7 @@ test("registers and updates a field", (t) => { t.truthy(field.value); return h("div", [ h("button", ["Load Messages"]), - h("input", { type: "text", oninput: field.handler, value: field.value.toString()}), + h("input", { type: "text", onchange: field.handler, value: field.value.toString()}), h("div.output", [field.value]), ]); }); @@ -220,10 +220,46 @@ test("registers and updates a field", (t) => { input.setTargetDomNode(inputElement); t.truthy(input.exists); t.is(proj.query(".output").textContent, "a"); - proj.query("input").simulate.keyPress("b", "", "ab") + inputElement = { value: 'ab' } as any; + input.simulate.change(inputElement) t.is(proj.query(".output").textContent, "ab"); }); +test("validates a field", (t) => { + const mainApp = setup(new SimpleProps(), (f) => { + + f.registerView((app: main): VNode => { + const field2 = f.registerField("test2", "", { notEmpty: {value: true, message: "missing"}, minLength: {value: 2, message: "short"}, maxLength: {value: 2, message: "long"} }); + + return h("div", [ + h("input", { type: "text", onchange: field2.handler, value: field2.value.toString() }), + h("div.message", [field2.validationErrors]), + h("div.output", [field2.value]), + ]); + }); + }); + const proj = createTestProjector(mainApp.stateRenderer); + const input = proj.query("input"); + let inputElement: HTMLInputElement; // not really useful in this particular application, but added just for demonstration purposes. + proj.initialize(mainApp.stateRenderer); + inputElement = { value: '' } as any; + input.setTargetDomNode(inputElement); + t.truthy(input.exists); + t.is(proj.query(".output").textContent, ""); + inputElement = { value: 'b' } as any; + input.simulate.change(inputElement) + t.is(proj.query(".output").textContent, "b"); + t.is(proj.query(".message").textContent, "short"); + inputElement = { value: 'bc' } as any; + input.simulate.change(inputElement) + t.is(proj.query(".output").textContent, "bc"); + t.is(proj.query(".message").textContent, ""); + inputElement = { value: 'bcd' } as any; + input.simulate.change(inputElement) + t.is(proj.query(".output").textContent, "bcd"); + t.is(proj.query(".message").textContent, "long"); +}); + // test("register view async", (t) => { // const F = new FRETS(new SimpleProps(), new SimpleActions()); // async function asyncViewFunction(app: main): Promise { diff --git a/src/Frets.ts b/src/Frets.ts index 6bf6284..d23b3e3 100644 --- a/src/Frets.ts +++ b/src/Frets.ts @@ -1,139 +1,49 @@ -import {createProjector, Projector, VNode} from 'maquette'; -// Import * as maquette from 'maquette'; - +import {createProjector, VNode} from 'maquette'; import {Path} from 'path-parser'; -import {PropsWithFields} from './props-field-registry'; - -export interface IValidationObject { - notEmpty?: { - value: boolean; - message: string; - }; - minLength?: { - value: number; - message: string; - }; - maxLength?: { - value: number; - message: string; - }; -} -type handlerFn = (evt: Event, skipValidation?: boolean) => void; - -export interface IRegisteredField { - handler: handlerFn; - validate: () => void; - validationErrors: string[]; - isValid: () => boolean; - isDirty: () => boolean; - value: T; - clear: () => void; - key: string; -} +import { + FunFrets, + Mountable, + RegisteredField, + SetupOptions, + ActionFn, + RouteActionFn, + ActionEventHandler, + StateNode, + Present, + ModelPresenter, +} from './Frets.types'; +// Import * as maquette from 'maquette'; -export interface IRouteRegistry { - [key: string]: { - calculator: (routeName: string, routeParams: any, props: Readonly) => T; - spec: Path; - }; -} -type ActionFn = (e: Event, data: Readonly) => Partial; -type RouteActionFn = ( - context: { - key: string; - path: string; - data: any; - }, - present: IPresent -) => void; - -export interface IActionsObj { - [k: string]: ActionFn; -} +import {PropsWithFields, ValidationConfiguration} from './props-field-registry'; /** - * FRETS class is the main way to instantiate a new application and hang your models, actions, and state off it - * @template T, U + * Creates a Frets application, it takes initial modelProps for your data model, and a function to be called when first run + * @param {T} modelProps + * @param {(fretsApp:FunFrets)=>void} setupFn + * @param {SetupOptions} options? + * @returns Mountable */ - -export type IPresent = ( - proposal: Partial -) => void; -export type IActionEventHandler = (event: Event) => void; -export type IActionFn = ( - event: Event, - present: IPresent -) => void; -export type IModelPresenter = ( - proposal: Partial, - state: (props: Partial) => void -) => void; -export type IRegisterFieldFn = ( - key: string, - defaultValue?: U, - validation?: IValidationObject -) => IRegisteredField; -export interface IFunFrets { - modelProps: T; - present: (proposal: Partial) => void; - projector: Projector; - registerView: (renderFn: (app: IFunFrets) => VNode) => void; - registerField: IRegisterFieldFn; - registerAction: (key: string, actionFn: IActionFn) => IActionEventHandler; - registerRouteAction: ( - key: string, - path: string, - actionFn: RouteActionFn - ) => void; - registerAcceptor: (presenterFn: IModelPresenter) => void; - registerStateGraph: (entryState: IStateNode) => void; - currentStateNode: IStateNode; - getRouteLink: (key: string, data?: any) => string | false; - navToRoute: (key: string, data?: any) => void; - navToPath: (key: string, data?: any) => void; -} - -export interface IMountable { - fretsApp: IFunFrets; - mountTo: (id: string) => void; - stateRenderer: () => VNode; - present: (proposal: Partial) => void; -} -export interface ISetupOptions { - projector: Projector; -} - -export interface IStateNode { - name: string; - guard?: (modelProps: T) => boolean; - edges?: Array>; - renderer: (app: IFunFrets) => VNode; -} - export function setup( modelProps: T, - setupFn: (fretsApp: IFunFrets) => void, - options?: ISetupOptions -): IMountable { + setupFn: (fretsApp: FunFrets) => void, + options?: SetupOptions, +): Mountable { const projector = options?.projector || createProjector(); - const actions: { - [key: string]: IActionFn; - } = {}; + const actions: Record> = {}; - const routes: { - [key: string]: { + const routes: Record< + string, + { calculator: RouteActionFn; spec: Path; - }; - } = {}; + } + > = {}; - const registeredFieldActions: { - [key: string]: IActionEventHandler; - } = {}; + const registeredFieldActions: Record = {}; - const stateGraph: {entry?: IStateNode} = {}; + const stateGraph: {entry?: StateNode} = {}; - let currentStateNode: IStateNode | undefined; + let currentStateNode: StateNode | undefined; /** * Returns a path when given the key of a route that was previously registered. * @param {string} key @@ -168,7 +78,7 @@ export function setup( function navToPath(path: string): void { try { window.history.pushState(modelProps, '', path); - } catch (error) { + } catch (error: unknown) { console.warn('Error routing', error); window.location.pathname = path; } @@ -176,7 +86,7 @@ export function setup( applyRouteFunction(); } - const modelPresenters: {[k: string]: IPresent} = {}; + const modelPresenters: Record> = {}; function modelPresenter(proposal: Partial): void { for (const key in modelPresenters) { @@ -191,8 +101,8 @@ export function setup( function registerAction( key: string, - actionFn: IActionFn - ): IActionEventHandler { + actionFn: ActionFn, + ): ActionEventHandler { if (!actions[key]) { actions[key] = actionFn; } @@ -205,16 +115,16 @@ export function setup( function registerRouteAction( key: string, path: string, - actionFn: RouteActionFn + actionFn: RouteActionFn, ): void { // Console.log("register route", key, path) routes[key] = { calculator: actionFn, - spec: new Path(path) + spec: new Path(path), }; } - function registerAcceptor(presenterFn: IModelPresenter): void { + function registerAcceptor(presenterFn: ModelPresenter): void { const acceptorId = presenterFn.toString().slice(0, 250); if (!modelPresenters[acceptorId]) { modelPresenters[acceptorId] = (proposal: Partial) => { @@ -223,19 +133,19 @@ export function setup( } } - function resolveState(props: T): IStateNode { + function resolveState(props: T): StateNode { if (!stateGraph.entry) { throw new Error('Cannot resolve current state.'); } - function validEdge(edges: Array>): IStateNode | undefined { + function validEdge(edges: Array>): StateNode | undefined { if (!edges) return undefined; return edges.find((x) => { return x.guard(props); }); } - const nestedEdges = (s: IStateNode | undefined): IStateNode => { + const nestedEdges = (s: StateNode | undefined): StateNode => { return (s && nestedEdges(validEdge(s.edges))) || s; }; @@ -257,7 +167,7 @@ export function setup( // Console.log("found route", res) entry.calculator( {key, path: entry.spec.path, data: result}, - modelPresenter + modelPresenter, ); } } @@ -266,7 +176,7 @@ export function setup( let stateRenderer: () => VNode; - const F: IFunFrets = { + const fretsInstance: FunFrets = { getRouteLink, modelProps, navToPath, @@ -275,21 +185,19 @@ export function setup( projector, registerAcceptor, registerAction, - registerField( + registerField( key: string, - initialValue?: S, - validation?: IValidationObject - ): IRegisteredField { + initialValue?: string, + validation?: ValidationConfiguration, + ): RegisteredField { const handler = ( evt: InputEvent | Event, - skipValidation?: boolean + skipValidation?: boolean, ): void => { - let value: string | any[]; - if (typeof evt === typeof InputEvent) { - value = (evt as InputEvent).data; - } else { - value = (evt.target as HTMLInputElement).value; - } + const value: string | any[] = + typeof evt === typeof InputEvent + ? (evt as InputEvent).data + : (evt.target as HTMLInputElement).value; this.modelProps.registeredFieldsValues[key] = value; @@ -303,20 +211,29 @@ export function setup( }; const validate = (): void => { - const v = this.modelProps.registeredFieldsState[key].validation; - if (v) { - const value = this.modelProps.registeredFieldsValues[key]; + const {validation} = + fretsInstance.modelProps.registeredFieldsState[key]; + if (validation) { + const value = fretsInstance.modelProps.registeredFieldsValues[key]; const errors: string[] = []; - if (v.notEmpty && (!value || value === '')) { - errors.push(v.notEmpty.message); + if (validation.notEmpty && (!value || value === '')) { + errors.push(validation.notEmpty.message); } - if (v.minLength && value.length < v.minLength.value) { - errors.push(v.minLength.message); + if ( + typeof value === 'string' && + validation.minLength && + value.length < validation.minLength.value + ) { + errors.push(validation.minLength.message); } - if (v.maxLength && value.length > v.maxLength.value) { - errors.push(v.maxLength.message); + if ( + typeof value === 'string' && + validation.maxLength && + value.length > validation.maxLength.value + ) { + errors.push(validation.maxLength.message); } this.modelProps.registeredFieldValidationErrors[key] = errors; @@ -342,31 +259,33 @@ export function setup( this.modelProps.registeredFieldValidationErrors[key] = []; }, handler, - isDirty: () => this.modelProps.registeredFieldsState[key].dirty, + isDirty: () => + fretsInstance.modelProps.registeredFieldsState[key].dirty, isValid: () => - !(this.modelProps.registeredFieldValidationErrors[key].length > 0), + this.modelProps.registeredFieldValidationErrors[key].length === 0, key, validate, - validationErrors: this.modelProps.registeredFieldValidationErrors[key], - value: this.modelProps.registeredFieldsValues[key] + validationErrors: + fretsInstance.modelProps.registeredFieldValidationErrors[key], + value: fretsInstance.modelProps.registeredFieldsValues[key], }; }, registerRouteAction, - registerStateGraph(entryState: IStateNode): void { + registerStateGraph(entryState: StateNode): void { stateGraph.entry = entryState; this.currentStateNode = resolveState(modelProps); }, currentStateNode, - registerView(renderFn: (fretsApp: IFunFrets) => VNode) { + registerView(renderFn: (fretsApp: FunFrets) => VNode) { stateRenderer = () => { return renderFn(this); }; state = (newProps: Partial): void => { - this.modelProps = { - ...this.modelProps, - ...newProps + fretsInstance.modelProps = { + ...fretsInstance.modelProps, + ...newProps, }; if (stateGraph?.entry) { this.currentStateNode = resolveState(this.modelProps); @@ -374,22 +293,22 @@ export function setup( projector.scheduleRender(); }; - } + }, }; - window.onpopstate = () => { + window.addEventListener('popstate', () => { applyRouteFunction(); - }; + }); - setupFn(F); + setupFn(fretsInstance); return { - fretsApp: F, - mountTo: (id: string) => { + fretsApp: fretsInstance, + mountTo(id: string) { // eslint-disable-next-line unicorn/prefer-query-selector projector.replace(document.getElementById(id), stateRenderer); }, present: modelPresenter, - stateRenderer + stateRenderer, }; } diff --git a/src/Frets.types.ts b/src/Frets.types.ts new file mode 100644 index 0000000..7c884a3 --- /dev/null +++ b/src/Frets.types.ts @@ -0,0 +1,99 @@ +import {Path} from 'path-parser'; +import {Projector, VNode} from 'maquette'; +import {PropsWithFields, ValidationConfiguration} from './props-field-registry'; + +export type HandlerFn = (evt: Event, skipValidation?: boolean) => void; + +export interface RegisteredField { + handler: HandlerFn; + validate: () => void; + validationErrors: string[]; + isValid: () => boolean; + isDirty: () => boolean; + value: string; + clear: () => void; + key: string; +} + +export type RouteRegistry = Record< + string, + { + calculator: ( + routeName: string, + routeParameters: any, + props: Readonly, + ) => T; + spec: Path; + } +>; + +export type RouteActionFn = ( + context: { + key: string; + path: string; + data: any; + }, + present: Present, +) => void; + +export type ActionsObject = Record< + string, + ActionFn +>; + +export type Present = (proposal: Partial) => void; +export type ActionEventHandler = (event: Event) => void; +export type ActionFn = ( + event: Event, + present: Present, +) => void; +export type ModelPresenter = ( + proposal: Partial, + state: (props: Partial) => void, +) => void; +export type RegisterFieldFn = ( + key: string, + defaultValue?: string, + validation?: ValidationConfiguration, +) => RegisteredField; + +/** + * Primary controlling object for registering your app logic and interacting with routing. + * This is returned by the `setup()` function + */ +export interface FunFrets { + modelProps: T; + present: (proposal: Partial) => void; + projector: Projector; + registerView: (renderFn: (app: FunFrets) => VNode) => void; + registerField: RegisterFieldFn; + registerAction: (key: string, actionFn: ActionFn) => ActionEventHandler; + registerRouteAction: ( + key: string, + path: string, + actionFn: RouteActionFn, + ) => void; + registerAcceptor: (presenterFn: ModelPresenter) => void; + registerStateGraph: (entryState: StateNode) => void; + currentStateNode: StateNode; + getRouteLink: (key: string, data?: any) => string | false; + navToRoute: (key: string, data?: any) => void; + navToPath: (key: string, data?: any) => void; +} + +export interface Mountable { + fretsApp: FunFrets; + mountTo: (id: string) => void; + stateRenderer: () => VNode; + present: (proposal: Partial) => void; +} +export interface SetupOptions { + projector: Projector; +} + +export interface StateNode { + name: string; + guard?: (modelProps: T) => boolean; + edges?: Array>; + renderer: (app: FunFrets) => VNode; +} diff --git a/src/index.ts b/src/index.ts index e6ab4f1..e542b9a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,16 +1,15 @@ -import * as maquette from 'maquette'; -import {VNode, VNodeChild, VNodeChildren, VNodeProperties} from 'maquette'; +export {VNode, VNodeChild, VNodeChildren, VNodeProperties} from 'maquette'; +export {setup} from './Frets'; export { - setup, - IActionEventHandler, - IActionFn, - IFunFrets, - IPresent, - IMountable, - IModelPresenter, - IRegisteredField -} from './Frets'; -export {PropsWithFields} from './props-field-registry'; -export {maquette}; -export {VNode, VNodeChild, VNodeProperties, VNodeChildren}; + ActionEventHandler, + ActionFn, + FunFrets, + Present, + Mountable, + ModelPresenter, + RegisteredField, +} from './Frets.types'; +export {PropsWithFields, ValidationConfiguration} from './props-field-registry'; + +export * as maquette from 'maquette'; diff --git a/src/props-field-registry.ts b/src/props-field-registry.ts index e35f347..b044b63 100644 --- a/src/props-field-registry.ts +++ b/src/props-field-registry.ts @@ -1,16 +1,26 @@ -import {IValidationObject} from './Frets'; +export interface ValidationConfiguration { + notEmpty?: { + value: boolean; + message: string; + }; + minLength?: { + value: number; + message: string; + }; + maxLength?: { + value: number; + message: string; + }; +} export class PropsWithFields { - public registeredFieldsValues: { - [key: string]: any; - } = {}; + public registeredFieldsValues: Record = {}; - public registeredFieldsState: { - [key: string]: {dirty: boolean; validation: IValidationObject}; - } = {}; + public registeredFieldsState: Record< + string, + {dirty: boolean; validation: ValidationConfiguration} + > = {}; - public registeredFieldValidationErrors: { - [key: string]: string[]; - } = {}; + public registeredFieldValidationErrors: Record = {}; constructor(data?: any) { Object.assign(this, data); diff --git a/tsconfig.json b/tsconfig.json index bd4412b..770cc92 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,8 +2,8 @@ "compilerOptions": { "outDir": "build/main", "declaration": true, - "inlineSourceMap": true, - //"sourceMap": true, + // "inlineSourceMap": true, + "sourceMap": true, "noImplicitAny": false, "skipLibCheck": true, "module": "commonjs",