An `Observer` is an object that encapsulates information\n * about an interested object with a method that should\n * be called when a particular `Notification` is broadcast.
\n *\n * The notification method on the interested object should take\n * one parameter of type `Notification`
\n *\n * @param {function(Notification):void | null} [notify = null]\n * @param {Object | null} [context = null]\n */\n constructor(notify = null, context = null) {\n this._notifyMethod = notify;\n this._notifyContext = context;\n }\n\n /**\n * Notify the interested object.\n *\n * @param {Notification} notification\n */\n notifyObserver(notification) {\n this._notifyMethod.call(this._notifyContext, notification);\n }\n\n /**\n * Compare an object to the notification context.\n *\n * @param {Object} notifyContext\n * @returns {boolean}\n */\n compareNotifyContext(notifyContext) {\n return this._notifyContext === notifyContext;\n }\n\n /**\n * Get the notification method.\n *\n * @returns {function(Notification):void}\n */\n get notifyMethod() {\n return this._notifyMethod\n }\n\n /**\n * Set the notification method.\n *\n * The notification method should take one parameter of type `Notification`.
\n *\n * @param {function(Notification): void} notifyMethod - The function to be called when a notification is received.\n */\n set notifyMethod(notifyMethod) {\n this._notifyMethod = notifyMethod;\n }\n\n /**\n * Get the notifyContext\n *\n * @returns {Object}\n */\n get notifyContext() {\n return this._notifyContext;\n }\n\n /**\n * Set the notification context.\n *\n * @param {Object} notifyContext\n */\n set notifyContext(notifyContext) {\n this._notifyContext = notifyContext;\n }\n\n}\nexport { Observer }\n","/*\n * View.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\nimport {Observer} from \"../patterns/observer/Observer.js\";\n\n/**\n * A Multiton `View` implementation.\n *\n * In PureMVC, the `View` class assumes these responsibilities:
\n *\n * \n * - Maintain a cache of `Mediator` instances.
\n * - Provide methods for registering, retrieving, and removing `Mediators`.
\n * - Notifying `Mediators` when they are registered or removed.
\n * - Managing the observer lists for each `Notification` in the application.
\n * - Providing a method for attaching `Observers` to a `Notification`'s observer list.
\n * - Providing a method for broadcasting a `Notification`.
\n * - Notifying the `Observers` of a given `Notification` when it broadcast.
\n *
\n *\n * @see Mediator Mediator\n * @see Observer Observer\n * @see Notification Notification\n *\n * @class View\n */\nclass View {\n\n /**\n * Constructor.\n *\n * This `View` implementation is a Multiton,\n * so you should not call the constructor\n * directly, but instead call the static Multiton\n * Factory method `View.getInstance( multitonKey )`\n *\n * @constructor\n * @param {string} key\n *\n * @throws {Error} Error if instance for this Multiton key has already been constructed\n */\n constructor(key) {\n if (View.instanceMap.get(key) != null) throw new Error(View.MULTITON_MSG);\n /** @protected\n * @type {string} */\n this.multitonKey = key;\n View.instanceMap.set(this.multitonKey, this);\n /** @protected\n * @type {Map} */\n this.mediatorMap = new Map();\n /** @protected\n * @type {Map.>} */\n this.observerMap = new Map();\n this.initializeView();\n }\n\n /**\n * Initialize the Multiton View instance.
\n *\n * Called automatically by the constructor, this\n * is your opportunity to initialize the Multiton\n * instance in your subclass without overriding the\n * constructor.
\n */\n initializeView() {\n\n }\n\n /**\n * View Multiton factory method.\n *\n * @static\n * @param {string} key\n * @param {function(string):View} factory\n * @returns {View} the Multiton instance of `View`\n */\n static getInstance(key, factory) {\n if (View.instanceMap == null)\n /** @static\n * @type {Map} */\n View.instanceMap = new Map();\n if (View.instanceMap.get(key) == null) View.instanceMap.set(key, factory(key));\n return View.instanceMap.get(key);\n }\n\n /**\n * Register an `Observer` to be notified\n * of `Notifications` with a given name.
\n *\n * @param {string} notificationName the name of the `Notifications` to notify this `Observer` of\n * @param {Observer} observer the `Observer` to register\n */\n registerObserver(notificationName, observer) {\n if (this.observerMap.get(notificationName) != null) {\n let observers = this.observerMap.get(notificationName);\n observers.push(observer);\n } else {\n this.observerMap.set(notificationName, new Array(observer));\n }\n }\n\n /**\n * Notify the `Observers` for a particular `Notification`.
\n *\n * All previously attached `Observers` for this `Notification`'s\n * list are notified and are passed a reference to the `Notification` in\n * the order in which they were registered.
\n *\n * @param {Notification} notification the `Notification` to notify `Observers` of.\n */\n notifyObservers(notification) {\n if (this.observerMap.has(notification.name)) {\n // Copy observers from reference array to working array,\n // since the reference array may change during the notification loop\n let observers = this.observerMap.get(notification.name).slice();\n\n // Notify Observers from the working array\n for(let i = 0; i < observers.length; i++) {\n observers[i].notifyObserver(notification);\n }\n }\n }\n\n /**\n * Remove the observer for a given notifyContext from an observer list for a given Notification name.
\n *\n * @param {string} notificationName which observer list to remove from\n * @param {Object} notifyContext remove the observer with this object as its notifyContext\n */\n removeObserver(notificationName, notifyContext) {\n // the observer list for the notification under inspection\n let observers = this.observerMap.get(notificationName);\n\n // find the observer for the notifyContext\n for (let i = 0; i < observers.length; i++) {\n if (observers[i].compareNotifyContext(notifyContext) === true) {\n // there can only be one Observer for a given notifyContext\n // in any given Observer list, so remove it and break\n observers.splice(i, 1);\n break;\n }\n }\n\n // Also, when a Notification's Observer list length falls to\n // zero, delete the notification key from the observer map\n if (observers.length === 0) {\n this.observerMap.delete(notificationName);\n }\n }\n\n /**\n * Register a `Mediator` instance with the `View`.\n *\n * Registers the `Mediator` so that it can be retrieved by name,\n * and further interrogates the `Mediator` for its\n * `Notification` interests.
\n *\n * If the `Mediator` returns any `Notification`\n * names to be notified about, an `Observer` is created encapsulating\n * the `Mediator` instance's `handleNotification` method\n * and registering it as an `Observer` for all `Notifications` the\n * `Mediator` is interested in.
\n *\n * @param {Mediator} mediator a reference to the `Mediator` instance\n */\n registerMediator(mediator) {\n // do not allow re-registration (you must to removeMediator fist)\n if (this.mediatorMap.has(mediator.mediatorName) !== false) return;\n\n mediator.initializeNotifier(this.multitonKey);\n\n // Register the Mediator for retrieval by name\n this.mediatorMap.set(mediator.mediatorName, mediator);\n\n // Get Notification interests, if any.\n let interests = mediator.listNotificationInterests();\n\n // Register Mediator as an observer for each notification of interests\n if (interests.length > 0) {\n // Create Observer referencing this mediator's handleNotification method\n let observer = new Observer(mediator.handleNotification.bind(mediator), mediator); // check bind\n\n // Register Mediator as Observer for its list of Notification interests\n for (let i = 0; i < interests.length; i++) {\n this.registerObserver(interests[i], observer);\n }\n }\n\n // alert the mediator that it has been registered\n mediator.onRegister();\n }\n\n /**\n * Retrieve a `Mediator` from the `View`.\n *\n * @param {string} mediatorName the name of the `Mediator` instance to retrieve.\n * @returns {Mediator} the `Mediator` instance previously registered with the given `mediatorName`.\n */\n retrieveMediator(mediatorName) {\n return this.mediatorMap.get(mediatorName) || null;\n }\n\n /**\n * Remove a `Mediator` from the `View`.\n *\n * @param {string} mediatorName name of the `Mediator` instance to be removed.\n * @returns {Mediator} the `Mediator` that was removed from the `View`\n */\n removeMediator(mediatorName) {\n // Retrieve the named mediator\n let mediator = this.mediatorMap.get(mediatorName);\n\n if (mediator) {\n // for every notification this mediator is interested in...\n let interests = mediator.listNotificationInterests();\n for (let i = 0; i < interests.length; i++) {\n // remove the observer linking the mediator\n // to the notification interest\n this.removeObserver(interests[i], mediator);\n }\n\n // remove the mediator from the map\n this.mediatorMap.delete(mediatorName);\n\n // alert the mediator that it has been removed\n mediator.onRemove();\n }\n\n return mediator;\n }\n\n /**\n * Check if a Mediator is registered or not\n *\n * @param {string} mediatorName\n * @returns {boolean} whether a Mediator is registered with the given `mediatorName`.\n */\n hasMediator(mediatorName) {\n return this.mediatorMap.has(mediatorName);\n }\n\n /**\n * Remove a View instance\n *\n * @static\n * @param key multitonKey of View instance to remove\n */\n static removeView(key) {\n this.instanceMap.delete(key);\n }\n\n /**\n * Message Constants\n *\n * @static\n * @type {string}\n */\n static get MULTITON_MSG() { return \"View instance for this Multiton key already constructed!\" };\n\n}\nexport { View }\n","/*\n * Controller.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\nimport {View} from \"./View.js\"\nimport {Observer} from \"../patterns/observer/Observer.js\";\n\n/**\n * A Multiton `Controller` implementation.\n *\n * In PureMVC, the `Controller` class follows the\n * 'Command and Controller' strategy, and assumes these\n * responsibilities:
\n *\n * \n * - Remembering which `Command`s\n * are intended to handle which `Notifications`.
\n * - Registering itself as an `Observer` with\n * the `View` for each `Notification`\n * that it has a `Command` mapping for.
\n * - Creating a new instance of the proper `Command`\n * to handle a given `Notification` when notified by the `View`.
\n * - Calling the `Command`'s `execute`\n * method, passing in the `Notification`.
\n *
\n *\n * Your application must register `Commands` with the\n * Controller.
\n *\n * The simplest way is to subclass `Facade`,\n * and use its `initializeController` method to add your\n * registrations.
\n *\n * @see View View\n * @see Observer Observer\n * @see Notification Notification\n * @see SimpleCommand SimpleCommand\n * @see MacroCommand MacroCommand\n *\n * @class Controller\n */\nclass Controller {\n\n /**\n * Constructor.\n *\n * This `Controller` implementation is a Multiton,\n * so you should not call the constructor\n * directly, but instead call the static Factory method,\n * passing the unique key for this instance\n * `Controller.getInstance( multitonKey )`
\n *\n * @constructor\n * @param {string} key\n *\n * @throws {Error} Error if instance for this Multiton key has already been constructed\n */\n constructor(key) {\n if (Controller.instanceMap[key] != null) throw new Error(Controller.MULTITON_MSG);\n /** @protected\n * @type {string} */\n this.multitonKey = key;\n Controller.instanceMap.set(this.multitonKey, this);\n /** @protected\n * @type {Map} */\n this.commandMap = new Map();\n this.initializeController();\n }\n\n /**\n * Initialize the Multiton `Controller` instance.\n *\n * Called automatically by the constructor.
\n *\n * Note that if you are using a subclass of `View`\n * in your application, you should also subclass `Controller`\n * and override the `initializeController` method in the\n * following way:
\n *\n * `\n *\t\t// ensure that the Controller is talking to my View implementation\n *\t\tinitializeController( )\n *\t\t{\n *\t\t\tthis.view = MyView.getInstance(this.multitonKey, (key) => new MyView(key));\n *\t\t}\n * `
\n *\n */\n initializeController() {\n /** @protected\n * @type {View} **/\n this.view = View.getInstance(this.multitonKey, (key) => new View(key));\n }\n\n /**\n * `Controller` Multiton Factory method.\n *\n * @static\n * @param {string} key\n * @param {function(string):Controller} factory\n * @returns {Controller} the Multiton instance of `Controller`\n */\n static getInstance(key, factory) {\n if (Controller.instanceMap == null)\n /** @static\n @type {Map} */\n Controller.instanceMap = new Map();\n if (Controller.instanceMap.get(key) == null) Controller.instanceMap.set(key, factory(key));\n return Controller.instanceMap.get(key);\n }\n\n /**\n * If a `Command` has previously been registered\n * to handle the given `Notification`, then it is executed.
\n *\n * @param {Notification} notification a `Notification`\n */\n executeCommand(notification) {\n let factory = this.commandMap.get(notification.name);\n if (factory == null) return;\n\n let commandInstance = factory();\n commandInstance.initializeNotifier(this.multitonKey);\n commandInstance.execute(notification);\n }\n\n /**\n * Register a particular `Command` class as the handler\n * for a particular `Notification`.
\n *\n * If an `Command` has already been registered to\n * handle `Notification`s with this name, it is no longer\n * used, the new `Command` is used instead.
\n *\n * The Observer for the new Command is only created if this the\n * first time a Command has been registered for this Notification name.
\n *\n * @param notificationName the name of the `Notification`\n * @param {function():SimpleCommand} factory\n */\n registerCommand(notificationName, factory) {\n if (this.commandMap.get(notificationName) == null) {\n this.view.registerObserver(notificationName, new Observer(this.executeCommand, this));\n }\n this.commandMap.set(notificationName, factory);\n }\n\n /**\n * Check if a Command is registered for a given Notification\n *\n * @param {string} notificationName\n * @return {boolean} whether a Command is currently registered for the given `notificationName`.\n */\n hasCommand(notificationName) {\n return this.commandMap.has(notificationName);\n }\n\n /**\n * Remove a previously registered `Command` to `Notification` mapping.\n *\n * @param {string} notificationName the name of the `Notification` to remove the `Command` mapping for\n */\n removeCommand(notificationName) {\n // if the Command is registered...\n if(this.hasCommand(notificationName)) {\n // remove the observer\n this.view.removeObserver(notificationName, this);\n\n // remove the command\n this.commandMap.delete(notificationName)\n }\n }\n\n /**\n * Remove a Controller instance\n *\n * @static\n * @param {string} key of Controller instance to remove\n */\n static removeController(key) {\n Controller.instanceMap.delete(key);\n }\n\n /**\n * Message Constants\n *\n * @static\n * @type {string}\n */\n static get MULTITON_MSG() { return \"Controller instance for this Multiton key already constructed!\" };\n}\nexport { Controller }\n","/*\n * Model.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\n/**\n * A Multiton `Model` implementation.\n *\n * In PureMVC, the `Model` class provides\n * access to model objects (Proxies) by named lookup.\n *\n *
The `Model` assumes these responsibilities:
\n *\n * \n * - Maintain a cache of `Proxy` instances.
\n * - Provide methods for registering, retrieving, and removing\n * `Proxy` instances.
\n *
\n *\n * Your application must register `Proxy` instances\n * with the `Model`. Typically, you use an\n * `Command` to create and register `Proxy`\n * instances once the `Facade` has initialized the Core\n * actors.
\n *\n * @see Proxy Proxy\n *\n * @class Model\n */\nclass Model {\n\n /**\n * Constructor.\n *\n * This `Model` implementation is a Multiton,\n * so you should not call the constructor\n * directly, but instead call the static Multiton\n * Factory method `Model.getInstance( multitonKey )`\n *\n * @constructor\n * @param {string} key\n *\n * @throws {Error} Error if instance for this Multiton key instance has already been constructed\n */\n constructor(key) {\n if (Model.instanceMap.get(key) != null) throw new Error(Model.MULTITON_MSG);\n /** @protected\n * @type {string} */\n this.multitonKey = key;\n Model.instanceMap.set(this.multitonKey, this);\n /** @protected\n * @type {Map} */\n this.proxyMap = new Map();\n this.initializeModel();\n }\n\n /**\n * Initialize the `Model` instance.\n *\n * Called automatically by the constructor, this\n * is your opportunity to initialize the Multiton\n * instance in your subclass without overriding the\n * constructor.
\n *\n */\n initializeModel() {\n\n }\n\n /**\n * `Model` Multiton Factory method.\n *\n * @static\n * @param {string} key\n * @param {function(string):Model} factory\n * @returns {Model} the instance for this Multiton key\n */\n static getInstance(key, factory) {\n if (Model.instanceMap == null)\n /** @static\n @type {Map} */\n Model.instanceMap = new Map();\n if (Model.instanceMap.get(key) == null) Model.instanceMap.set(key, factory(key));\n return Model.instanceMap.get(key);\n }\n\n /**\n * Register a `Proxy` with the `Model`.\n *\n * @param {Proxy} proxy a `Proxy` to be held by the `Model`.\n */\n registerProxy(proxy) {\n proxy.initializeNotifier(this.multitonKey);\n this.proxyMap.set(proxy.proxyName, proxy);\n proxy.onRegister();\n }\n\n /**\n * Retrieve a `Proxy` from the `Model`.\n *\n * @param {string} proxyName\n * @returns {Proxy} the `Proxy` instance previously registered with the given `proxyName`.\n */\n retrieveProxy(proxyName) {\n return this.proxyMap.get(proxyName) || null;\n }\n\n /**\n * Check if a Proxy is registered\n *\n * @param {string} proxyName\n * @returns {boolean} whether a Proxy is currently registered with the given `proxyName`.\n */\n hasProxy(proxyName) {\n return this.proxyMap.has(proxyName);\n }\n\n /**\n * Remove a `Proxy` from the `Model`.\n *\n * @param {string} proxyName name of the `Proxy` instance to be removed.\n * @returns {Proxy} the `Proxy` that was removed from the `Model`\n */\n removeProxy(proxyName) {\n let proxy = this.proxyMap.get(proxyName);\n if (proxy != null) {\n this.proxyMap.delete(proxyName);\n proxy.onRemove();\n }\n return proxy;\n }\n\n /**\n * Remove a Model instance\n *\n * @static\n * @param key\n */\n static removeModel(key) {\n Model.instanceMap.delete(key);\n }\n\n /**\n * @static\n * @type {string}\n */\n static get MULTITON_MSG() { return \"Model instance for this Multiton key already constructed!\" };\n}\nexport { Model }\n","/*\n * Notification.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\n/**\n * A base `Notification` implementation.\n *\n * PureMVC does not rely upon underlying event models such\n * as the one provided with Flash, and ActionScript 3 does\n * not have an inherent event model.
\n *\n * The Observer Pattern as implemented within PureMVC exists\n * to support event-driven communication between the\n * application and the actors of the MVC triad.
\n *\n * Notifications are not meant to be a replacement for Events\n * in Flex/Flash/Apollo. Generally, `Mediator` implementors\n * place event listeners on their view components, which they\n * then handle in the usual way. This may lead to the broadcast of `Notification`s to\n * trigger `Command`s or to communicate with other `Mediators`. `Proxy` and `Command`\n * instances communicate with each other and `Mediator`s\n * by broadcasting `Notification`s.
\n *\n * A key difference between Flash `Event`s and PureMVC\n * `Notification`s is that `Event`s follow the\n * 'Chain of Responsibility' pattern, 'bubbling' up the display hierarchy\n * until some parent component handles the `Event`, while\n * PureMVC `Notification`s follow a 'Publish/Subscribe'\n * pattern. PureMVC classes need not be related to each other in a\n * parent/child relationship in order to communicate with one another\n * using `Notification`s.
\n *\n * @class Notification\n */\nclass Notification {\n\n /**\n * Constructor.\n *\n * @constructor\n * @param {string} name - The name of the notification.\n * @param {Object|null} [body=null] - The body of the notification, defaults to `null`.\n * @param {string} [type=\"\"] - The type of the notification, defaults to an empty string.\n */\n constructor(name, body = null, type = \"\") {\n this._name = name;\n this._body = body;\n this._type = type;\n }\n\n /**\n * Get the name of the `Notification` instance.\n *\n * @returns {string}\n */\n get name() {\n return this._name;\n }\n\n /**\n * Get the body of the `Notification` instance.\n *\n * @returns {Object | null}\n */\n get body() {\n return this._body;\n }\n\n /**\n * Set the body of the `Notification` instance.\n *\n * @param {Object|null} body\n */\n set body(body) {\n this._body = body;\n }\n\n /**\n * Get the type of the `Notification` instance.\n *\n * @returns {string}\n */\n get type() {\n return this._type;\n }\n\n /**\n * Set the type of the `Notification` instance.\n *\n * @param {string} type\n */\n set type(type) {\n this._type = type;\n }\n\n /**\n * Get the string representation of the `Notification` instance.\n *\n * @returns {string}\n */\n toString() {\n let str= \"Notification Name: \" + this.name;\n str+= \"\\nBody:\" + ((this.body == null ) ? \"null\" : this.body.toString());\n str+= \"\\nType:\" + ((this.type == null ) ? \"null\" : this.type);\n return str;\n }\n\n}\nexport { Notification }\n","/*\n * Facade.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\nimport {Controller} from \"../../core/Controller.js\";\nimport {Model} from \"../../core/Model.js\";\nimport {View} from \"../../core/View.js\";\nimport {Notification} from \"../observer/Notification.js\";\n\n/**\n * A base Multiton `Facade` implementation.\n *\n * @see Model Model\n * @see View View\n * @see Controller Controller\n *\n * @class Facade\n */\nclass Facade {\n\n /**\n * Constructor.\n *\n * This `Facade` implementation is a Multiton,\n * so you should not call the constructor\n * directly, but instead call the static Factory method,\n * passing the unique key for this instance\n * `Facade.getInstance( multitonKey )`
\n *\n * @constructor\n * @param {string} key\n *\n * @throws {Error} Error if instance for this Multiton key has already been constructed\n */\n constructor(key) {\n if (Facade.instanceMap[key] != null) throw new Error(Facade.MULTITON_MSG);\n this.initializeNotifier(key);\n Facade.instanceMap.set(this.multitonKey, this);\n this.initializeFacade();\n }\n\n /**\n * Initialize the Multiton `Facade` instance.\n *\n * Called automatically by the constructor. Override in your\n * subclass to do any subclass specific initializations. Be\n * sure to call `super.initializeFacade()`, though.
\n */\n initializeFacade() {\n this.initializeModel();\n this.initializeController();\n this.initializeView();\n }\n\n /**\n * Facade Multiton Factory method\n *\n * @static\n * @param {string} key\n * @param {function(string):Facade} factory\n * @returns {Facade} the Multiton instance of the Facade\n */\n static getInstance(key, factory) {\n if (Facade.instanceMap == null)\n /** @static\n * @type {Map} */\n Facade.instanceMap = new Map();\n if (Facade.instanceMap.get(key) == null) Facade.instanceMap.set(key, factory(key));\n return Facade.instanceMap.get(key);\n }\n\n /**\n * Initialize the `Model`.\n *\n * Called by the `initializeFacade` method.\n * Override this method in your subclass of `Facade`\n * if one or both of the following are true:
\n *\n * \n * - You wish to initialize a different `Model`.
\n * - You have `Proxy`s to register with the Model that do not\n * retrieve a reference to the Facade at construction time.`
\n *
\n *\n * If you don't want to initialize a different `Model`,\n * call `super.initializeModel()` at the beginning of your\n * method, then register `Proxy`s.\n *\n * Note: This method is rarely overridden; in practice you are more\n * likely to use a `Command` to create and register `Proxy`s\n * with the `Model`, since `Proxy`s with mutable data will likely\n * need to send `Notification`s and thus will likely want to fetch a reference to\n * the `Facade` during their construction.
\n */\n initializeModel() {\n if (this.model != null) return;\n this.model = Model.getInstance(this.multitonKey, key => new Model(key));\n }\n\n /**\n * Initialize the `Controller`.\n *\n * Called by the `initializeFacade` method.\n * Override this method in your subclass of `Facade`\n * if one or both of the following are true:
\n *\n * \n * - You wish to initialize a different `Controller`.
\n * - You have `Commands` to register with the `Controller` at startup.`.
\n *
\n *\n * If you don't want to initialize a different `Controller`,\n * call `super.initializeController()` at the beginning of your\n * method, then register `Command`s.
\n */\n initializeController() {\n if (this.controller != null) return;\n this.controller = Controller.getInstance(this.multitonKey, key => new Controller(key));\n }\n\n /**\n * Initialize the `View`.\n *\n * Called by the `initializeFacade` method.\n * Override this method in your subclass of `Facade`\n * if one or both of the following are true:
\n *\n * \n * - You wish to initialize a different `View`.
\n * - You have `Observers` to register with the `View`
\n *
\n *\n * If you don't want to initialize a different `View`,\n * call `super.initializeView()` at the beginning of your\n * method, then register `Mediator` instances.
\n *\n * Note: This method is rarely overridden; in practice you are more\n * likely to use a `Command` to create and register `Mediator`s\n * with the `View`, since `Mediator` instances will need to send\n * `Notification`s and thus will likely want to fetch a reference\n * to the `Facade` during their construction.
\n */\n initializeView() {\n if (this.view != null) return;\n this.view = View.getInstance(this.multitonKey, key => new View(key));\n }\n\n /**\n * Register a `Command` with the `Controller` by Notification name.\n *\n * @param {string} notificationName the name of the `Notification` to associate the `Command` with\n * @param {function():SimpleCommand} factory a reference to the factory of the `Command`\n */\n registerCommand(notificationName, factory) {\n this.controller.registerCommand(notificationName, factory);\n }\n\n /**\n * Check if a Command is registered for a given Notification\n *\n * @param {string} notificationName\n * @returns {boolean} whether a Command is currently registered for the given `notificationName`.\n */\n hasCommand(notificationName) {\n return this.controller.hasCommand(notificationName);\n }\n\n /**\n * Remove a previously registered `Command` to `Notification` mapping from the Controller.\n *\n * @param {string} notificationName the name of the `Notification` to remove the `Command` mapping for\n */\n removeCommand(notificationName) {\n this.controller.removeCommand(notificationName);\n }\n\n /**\n * Register a `Proxy` with the `Model` by name.\n *\n * @param {Proxy} proxy the `Proxy` instance to be registered with the `Model`.\n */\n registerProxy(proxy) {\n this.model.registerProxy(proxy);\n }\n\n /**\n * Remove a `Proxy` from the `Model` by name.\n *\n * @param {string} proxyName the `Proxy` to remove from the `Model`.\n * @returns {Proxy} the `Proxy` that was removed from the `Model`\n */\n removeProxy(proxyName) {\n return this.model.removeProxy(proxyName);\n }\n\n /**\n * Check if a `Proxy` is registered\n *\n * @param {string} proxyName\n * @returns {boolean} whether a Proxy is currently registered with the given `proxyName`.\n */\n hasProxy(proxyName) {\n return this.model.hasProxy(proxyName);\n }\n\n /**\n * Retrieve a `Proxy` from the `Model` by name.\n *\n * @param {string} proxyName the name of the proxy to be retrieved.\n * @returns {Proxy} the `Proxy` instance previously registered with the given `proxyName`.\n */\n retrieveProxy(proxyName) {\n return this.model.retrieveProxy(proxyName);\n }\n\n /**\n * Register a `Mediator` with the `View`.\n *\n * @param {Mediator} mediator a reference to the `Mediator`\n */\n registerMediator(mediator) {\n this.view.registerMediator(mediator);\n }\n\n /**\n * Remove a `Mediator` from the `View`.\n *\n * @param {string} mediatorName name of the `Mediator` to be removed.\n * @returns {Mediator} the `Mediator` that was removed from the `View`\n */\n removeMediator(mediatorName) {\n return this.view.removeMediator(mediatorName);\n }\n\n /**\n * Check if a `Mediator` is registered or not\n *\n * @param {string} mediatorName\n * @returns {boolean} whether a Mediator is registered with the given `mediatorName`.\n */\n hasMediator(mediatorName) {\n return this.view.hasMediator(mediatorName);\n }\n\n /**\n * Retrieve a `Mediator` from the `View`.\n *\n * @param {string} mediatorName\n * @returns {Mediator} the `Mediator` previously registered with the given `mediatorName`.\n */\n retrieveMediator(mediatorName) {\n return this.view.retrieveMediator(mediatorName);\n }\n\n /**\n * Create and send an `Notification`.\n *\n * Keeps us from having to construct new notification\n * instances in our implementation code.
\n *\n * @param {string} notificationName the name of the notification to send\n * @param {Object} [body] body the body of the notification (optional)\n * @param {string} [type] type the type of the notification (optional)\n */\n sendNotification(notificationName, body = null, type = \"\") {\n this.notifyObservers(new Notification(notificationName, body, type));\n }\n\n /**\n * Notify `Observer`s.\n *\n * This method is left public mostly for backward\n * compatibility, and to allow you to send custom\n * notification classes using the facade.
\n *\n * Usually you should just call `sendNotification`\n * and pass the parameters, never having to\n * construct the notification yourself.
\n *\n * @param {Notification} notification the `Notification` to have the `View` notify `Observers` of.\n */\n notifyObservers(notification) {\n this.view.notifyObservers(notification);\n }\n\n /**\n * Set the Multiton key for this facade instance.\n *\n * Not called directly, but instead from the\n * constructor when getInstance is invoked.\n * It is necessary to be public in order to\n * implement Notifier.
\n */\n initializeNotifier(key) {\n this.multitonKey = key;\n }\n\n /**\n * Check if a Core is registered or not\n *\n * @static\n * @param {string} key the multiton key for the Core in question\n * @returns {boolean} whether a Core is registered with the given `key`.\n */\n static hasCore(key) {\n return this.instanceMap.has(key);\n }\n\n /**\n * Remove a Core.\n *\n * Remove the Model, View, Controller and Facade\n * instances for the given key.
\n *\n * @static\n * @param {string} key multitonKey of the Core to remove\n */\n static removeCore(key) {\n if (Facade.instanceMap.get(key) == null) return;\n Model.removeModel(key);\n View.removeView(key);\n Controller.removeController(key);\n this.instanceMap.delete(key);\n }\n\n /**\n * Message Constants\n *\n * @static\n * @returns {string}\n */\n static get MULTITON_MSG() {return \"Facade instance for this Multiton key already constructed!\"};\n}\nexport { Facade }\n","/*\n * Notifier.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\nimport {Facade} from \"../facade/Facade.js\";\n\n/**\n * A Base `Notifier` implementation.\n *\n * `MacroCommand, Command, Mediator` and `Proxy`\n * all have a need to send `Notifications`.
\n *\n *
The `Notifier` interface provides a common method called\n * `sendNotification` that relieves implementation code of\n * the necessity to actually construct `Notifications`.
\n *\n * The `Notifier` class, which all the above-mentioned classes\n * extend, provides an initialized reference to the `Facade`\n * Multiton, which is required for the convenience method\n * for sending `Notifications`, but also eases implementation as these\n * classes have frequent `Facade` interactions and usually require\n * access to the facade anyway.
\n *\n * NOTE: In the MultiCore version of the framework, there is one caveat to\n * notifiers, they cannot send notifications or reach the facade until they\n * have a valid multitonKey.
\n *\n * The multitonKey is set:\n * * on a Command when it is executed by the Controller\n * * on a Mediator is registered with the View\n * * on a Proxy is registered with the Model.\n *\n * @see Proxy Proxy\n * @see Facade Facade\n * @see Mediator Mediator\n * @see MacroCommand MacroCommand\n * @see SimpleCommand SimpleCommand\n *\n * @class Notifier\n */\nclass Notifier {\n\n constructor() {}\n\n /**\n * Create and send an `Notification`.\n *\n * Keeps us from having to construct new Notification\n * instances in our implementation code.
\n *\n * @param {string} notificationName\n * @param {Object} [body] body\n * @param {string} [type] type\n */\n sendNotification (notificationName, body = null, type = \"\") {\n if (this.facade != null) {\n this.facade.sendNotification(notificationName, body, type);\n }\n }\n\n /**\n * Initialize this Notifier instance.\n *\n * This is how a Notifier gets its multitonKey.\n * Calls to sendNotification or to access the\n * facade will fail until after this method\n * has been called.
\n *\n * Mediators, Commands or Proxies may override\n * this method in order to send notifications\n * or access the Multiton Facade instance as\n * soon as possible. They CANNOT access the facade\n * in their constructors, since this method will not\n * yet have been called.
\n *\n * @param {string} key the multitonKey for this Notifier to use\n */\n initializeNotifier(key) {\n this.multitonKey = key;\n }\n\n /**\n * Return the Multiton Facade instance\n *\n * @typedef {Facade} Facade\n *\n * @throws {Error}\n */\n get facade() {\n if (this.multitonKey == null) throw new Error(Notifier.MULTITON_MSG);\n return Facade.getInstance(this.multitonKey, key => new Facade(key));\n }\n\n /**\n * Message Constants\n *\n * @static\n * @returns {string}\n */\n static get MULTITON_MSG() { return \"multitonKey for this Notifier not yet initialized!\" }\n}\nexport { Notifier }\n","/*\n * SimpleCommand.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\nimport {Notifier} from \"../observer/Notifier.js\";\n\n/**\n * A base `Command` implementation.\n *\n * Your subclass should override the `execute`\n * method where your business logic will handle the `Notification`.
\n *\n * @see Controller Controller\n * @see Notification Notification\n * @see MacroCommand MacroCommand\n *\n * @class SimpleCommand\n */\nclass SimpleCommand extends Notifier {\n\n constructor() {\n super();\n }\n\n /**\n * Fulfill the use-case initiated by the given `Notification`.\n *\n * In the Command Pattern, an application use-case typically\n * begins with some user action, which results in a `Notification` being broadcast, which\n * is handled by business logic in the `execute` method of an\n * `Command`.
\n *\n * @param {Notification} notification\n */\n execute(notification) {\n\n }\n\n}\nexport { SimpleCommand }\n","/*\n * Mediator.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\nimport {Notifier} from \"../observer/Notifier.js\";\n\n/**\n * A base `Mediator` implementation.\n *\n * @see View View\n *\n * @class Mediator\n */\nclass Mediator extends Notifier {\n\n /**\n * Constructor.\n *\n * @constructor\n * @param {string | null} [mediatorName=null]\n * @param {Object | null} [viewComponent=null]\n */\n constructor(mediatorName = null, viewComponent = null) {\n super();\n this._mediatorName = mediatorName || Mediator.NAME;\n this._viewComponent = viewComponent;\n }\n\n /**\n * Called by the View when the Mediator is registered\n */\n onRegister() {\n\n }\n\n /**\n * Called by the View when the Mediator is removed\n */\n onRemove() {\n\n }\n\n /**\n * List the `Notification` names this\n * `Mediator` is interested in being notified of.\n *\n * @returns {string[]}\n */\n listNotificationInterests() {\n return [];\n }\n\n /**\n * Handle `Notification`s.\n *\n * \n * Typically this will be handled in a switch statement,\n * with one 'case' entry per `Notification`\n * the `Mediator` is interested in.\n *\n * @param {Notification} notification\n */\n handleNotification(notification) {\n\n }\n\n /**\n * the mediator name\n *\n * @returns {string}\n */\n get mediatorName() {\n return this._mediatorName;\n }\n\n /**\n * Get the `Mediator`'s view component.\n *\n *
\n * Additionally, an implicit getter will usually\n * be defined in the subclass that casts the view\n * object to a type, like this:
\n *\n * @returns {Object | null}\n */\n get viewComponent() {\n return this._viewComponent;\n }\n\n /**\n * Set the `Mediator`'s view component.\n *\n * @param {Object} viewComponent\n */\n set viewComponent(viewComponent) {\n this._viewComponent = viewComponent;\n }\n\n /**\n * The name of the `Mediator`.\n *\n * Typically, a `Mediator` will be written to serve\n * one specific control or group controls and so,\n * will not have a need to be dynamically named.
\n *\n * @static\n * @returns {string}\n */\n static get NAME() { return \"Mediator\" }\n}\nexport { Mediator }\n","/*\n * Proxy.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\nimport {Notifier} from \"../observer/Notifier.js\";\n\n/**\n * A base `Proxy` implementation.\n *\n * In PureMVC, `Proxy` classes are used to manage parts of the\n * application's data model.
\n *\n * A `Proxy` might simply manage a reference to a local data object,\n * in which case interacting with it might involve setting and\n * getting of its data in synchronous fashion.
\n *\n * `Proxy` classes are also used to encapsulate the application's\n * interaction with remote services to save or retrieve data, in which case,\n * we adopt an asynchronous idiom; setting data (or calling a method) on the\n * `Proxy` and listening for a `Notification` to be sent\n * when the `Proxy` has retrieved the data from the service.
\n *\n * @see Model Model\n *\n * @class Proxy\n */\nclass Proxy extends Notifier {\n /**\n * Constructor\n *\n * @constructor\n * @param {string | null} [proxyName=null]\n * @param {Object | null} [data=null]\n */\n constructor(proxyName = null, data = null) {\n super();\n /** @protected\n * @type {string} */\n this._proxyName = proxyName || Proxy.NAME;\n /** @protected\n * @type {Object | null} */\n this._data = data;\n }\n\n /**\n * Called by the Model when the Proxy is registered\n */\n onRegister() {}\n\n /**\n * Called by the Model when the Proxy is removed\n */\n onRemove() {}\n\n /**\n * Get the proxy name\n *\n * @returns {string}\n */\n get proxyName() {\n return this._proxyName;\n }\n\n /**\n * Get the data object\n *\n * @returns {Object | null}\n */\n get data () {\n return this._data;\n }\n\n /**\n * Set the data object\n *\n * @param {Object} data\n */\n set data(data) {\n this._data = data;\n }\n\n /**\n *\n * @static\n * @returns {string}\n */\n static get NAME() { return \"Proxy\" }\n}\nexport { Proxy }\n","/*\n * MacroCommand.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\nimport {SimpleCommand} from \"./SimpleCommand.js\";\n\n/**\n * A base `Command` implementation that executes other `Command`s.\n *\n * A `MacroCommand` maintains a list of\n * `Command` Class references called SubCommands.
\n *\n * When `execute` is called, the `MacroCommand`\n * instantiates and calls `execute` on each of its SubCommands turn.\n * Each SubCommand will be passed a reference to the original\n * `Notification` that was passed to the `MacroCommand`'s\n * `execute` method.
\n *\n * Unlike `SimpleCommand`, your subclass\n * should not override `execute`, but instead, should\n * override the `initializeMacroCommand` method,\n * calling `addSubCommand` once for each SubCommand\n * to be executed.
\n *\n * @see Controller Controller\n * @see Notification Notification\n * @see SimpleCommand SimpleCommand\n *\n * @class MacroCommand\n */\nclass MacroCommand extends SimpleCommand {\n\n /**\n * Constructor.\n *\n * You should not need to define a constructor,\n * instead, override the `initializeMacroCommand`\n * method.
\n *\n * If your subclass does define a constructor, be\n * sure to call `super()`.
\n *\n * @constructor\n */\n constructor() {\n super();\n /** @protected\n * @type {Array.} */\n this.subCommands = [];\n this.initializeMacroCommand();\n }\n\n /**\n * Initialize the `MacroCommand`.\n *\n * In your subclass, override this method to\n * initialize the `MacroCommand`'s SubCommand\n * list with `Command` class references like\n * this:
\n *\n * `\n *\t\t// Initialize MyMacroCommand\n *\t\tinitializeMacroCommand() {\n *\t\t\tthis.addSubCommand(() => new app.FirstCommand());\n *\t\t\tthis.addSubCommand(() => new app.SecondCommand());\n *\t\t\tthis.addSubCommand(() => new app.ThirdCommand());\n *\t\t}\n * `
\n *\n * Note that SubCommands may be any `Command` implementor,\n * `MacroCommand`s or `SimpleCommands` are both acceptable.\n */\n initializeMacroCommand() {\n\n }\n\n /**\n * Add a SubCommand.\n *\n *
The SubCommands will be called in First In/First Out (FIFO)\n * order.
\n *\n * @param {function():SimpleCommand} factory\n */\n addSubCommand(factory) {\n this.subCommands.push(factory);\n }\n\n /**\n * Execute this `MacroCommand`'s SubCommands.\n *\n * The SubCommands will be called in First In/First Out (FIFO)\n * order.
\n *\n * @param {Notification} notification\n */\n execute(notification) {\n while(this.subCommands.length > 0) {\n let factory = this.subCommands.shift();\n let commandInstance = factory();\n commandInstance.initializeNotifier(this.multitonKey);\n commandInstance.execute(notification);\n }\n }\n\n}\nexport { MacroCommand }\n"],"names":["Observer","constructor","notify","context","this","_notifyMethod","_notifyContext","notifyObserver","notification","call","compareNotifyContext","notifyContext","notifyMethod","View","key","instanceMap","get","Error","MULTITON_MSG","multitonKey","set","mediatorMap","Map","observerMap","initializeView","getInstance","factory","registerObserver","notificationName","observer","push","Array","notifyObservers","has","name","observers","slice","i","length","removeObserver","splice","delete","registerMediator","mediator","mediatorName","initializeNotifier","interests","listNotificationInterests","handleNotification","bind","onRegister","retrieveMediator","removeMediator","onRemove","hasMediator","removeView","Controller","commandMap","initializeController","view","executeCommand","commandInstance","execute","registerCommand","hasCommand","removeCommand","removeController","Model","proxyMap","initializeModel","registerProxy","proxy","proxyName","retrieveProxy","hasProxy","removeProxy","removeModel","Notification","body","type","_name","_body","_type","toString","str","Facade","initializeFacade","model","controller","sendNotification","hasCore","removeCore","Notifier","facade","SimpleCommand","super","Mediator","viewComponent","_mediatorName","NAME","_viewComponent","Proxy","data","_proxyName","_data","subCommands","initializeMacroCommand","addSubCommand","shift"],"mappings":"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"}
\ No newline at end of file
diff --git a/bin/cjs/puremvc.min.cjs b/bin/cjs/puremvc.min.cjs
deleted file mode 100644
index ec5ea30..0000000
--- a/bin/cjs/puremvc.min.cjs
+++ /dev/null
@@ -1,2 +0,0 @@
-"use strict";class t{constructor(t,e){this._notifyMethod=t,this._notifyContext=e}notifyObserver(t){this._notifyMethod.call(this._notifyContext,t)}compareNotifyContext(t){return this._notifyContext===t}get notifyMethod(){return this._notifyMethod}set notifyMethod(t){this._notifyMethod=t}get notifyContext(){return this._notifyContext}set notifyContext(t){this._notifyContext=t}}class e{constructor(t){if(null!=e.instanceMap.get(t))throw new Error(e.MULTITON_MSG);this.multitonKey=t,e.instanceMap.set(this.multitonKey,this),this.mediatorMap=new Map,this.observerMap=new Map,this.initializeView()}initializeView(){}static getInstance(t,i){return null==e.instanceMap&&(e.instanceMap=new Map),null==e.instanceMap.get(t)&&e.instanceMap.set(t,i(t)),e.instanceMap.get(t)}registerObserver(t,e){if(null!=this.observerMap.get(t)){this.observerMap.get(t).push(e)}else this.observerMap.set(t,new Array(e))}notifyObservers(t){if(this.observerMap.has(t.name)){let e=this.observerMap.get(t.name).slice();for(let i=0;i0){let n=new t(e.handleNotification.bind(e),e);for(let t=0;tnew e(t)))}static getInstance(t,e){return null==i.instanceMap&&(i.instanceMap=new Map),null==i.instanceMap.get(t)&&i.instanceMap.set(t,e(t)),i.instanceMap.get(t)}executeCommand(t){let e=this.commandMap.get(t.name);if(null==e)return;let i=e();i.initializeNotifier(this.multitonKey),i.execute(t)}registerCommand(e,i){null==this.commandMap.get(e)&&this.view.registerObserver(e,new t(this.executeCommand,this)),this.commandMap.set(e,i)}hasCommand(t){return this.commandMap.has(t)}removeCommand(t){this.hasCommand(t)&&(this.view.removeObserver(t,this),this.commandMap.delete(t))}static removeController(t){i.instanceMap.delete(t)}static get MULTITON_MSG(){return"Controller instance for this Multiton key already constructed!"}}class n{constructor(t){if(null!=n.instanceMap.get(t))throw new Error(n.MULTITON_MSG);this.multitonKey=t,n.instanceMap.set(this.multitonKey,this),this.proxyMap=new Map,this.initializeModel()}initializeModel(){}static getInstance(t,e){return null==n.instanceMap&&(n.instanceMap=new Map),null==n.instanceMap.get(t)&&n.instanceMap.set(t,e(t)),n.instanceMap.get(t)}registerProxy(t){t.initializeNotifier(this.multitonKey),this.proxyMap.set(t.proxyName,t),t.onRegister()}retrieveProxy(t){return this.proxyMap.get(t)||null}hasProxy(t){return this.proxyMap.has(t)}removeProxy(t){let e=this.proxyMap.get(t);return null!=e&&(this.proxyMap.delete(t),e.onRemove()),e}static removeModel(t){n.instanceMap.delete(t)}static get MULTITON_MSG(){return"Model instance for this Multiton key already constructed!"}}class r{constructor(t,e=null,i=""){this._name=t,this._body=e,this._type=i}get name(){return this._name}get body(){return this._body}set body(t){this._body=t}get type(){return this._type}set type(t){this._type=t}toString(){let t="Notification Name: "+this.name;return t+="\nBody:"+(null==this.body?"null":this.body.toString()),t+="\nType:"+(null==this.type?"null":this.type),t}}class s{constructor(t){if(null!=s.instanceMap[t])throw new Error(s.MULTITON_MSG);this.initializeNotifier(t),s.instanceMap.set(this.multitonKey,this),this.initializeFacade()}initializeFacade(){this.initializeModel(),this.initializeController(),this.initializeView()}static getInstance(t,e){return null==s.instanceMap&&(s.instanceMap=new Map),null==s.instanceMap.get(t)&&s.instanceMap.set(t,e(t)),s.instanceMap.get(t)}initializeModel(){null==this.model&&(this.model=n.getInstance(this.multitonKey,(t=>new n(t))))}initializeController(){null==this.controller&&(this.controller=i.getInstance(this.multitonKey,(t=>new i(t))))}initializeView(){null==this.view&&(this.view=e.getInstance(this.multitonKey,(t=>new e(t))))}registerCommand(t,e){this.controller.registerCommand(t,e)}hasCommand(t){return this.controller.hasCommand(t)}removeCommand(t){this.controller.removeCommand(t)}registerProxy(t){this.model.registerProxy(t)}removeProxy(t){return this.model.removeProxy(t)}hasProxy(t){return this.model.hasProxy(t)}retrieveProxy(t){return this.model.retrieveProxy(t)}registerMediator(t){this.view.registerMediator(t)}removeMediator(t){return this.view.removeMediator(t)}hasMediator(t){return this.view.hasMediator(t)}retrieveMediator(t){return this.view.retrieveMediator(t)}sendNotification(t,e=null,i=""){this.notifyObservers(new r(t,e,i))}notifyObservers(t){this.view.notifyObservers(t)}initializeNotifier(t){this.multitonKey=t}static hasCore(t){return this.instanceMap.has(t)}static removeCore(t){null!=s.instanceMap.get(t)&&(n.removeModel(t),e.removeView(t),i.removeController(t),this.instanceMap.delete(t))}static get MULTITON_MSG(){return"Facade instance for this Multiton key already constructed!"}}class o{constructor(){}sendNotification(t,e=null,i=""){null!=this.facade&&this.facade.sendNotification(t,e,i)}initializeNotifier(t){this.multitonKey=t}get facade(){if(null==this.multitonKey)throw new Error(o.MULTITON_MSG);return s.getInstance(this.multitonKey,(t=>new s(t)))}static get MULTITON_MSG(){return"multitonKey for this Notifier not yet initialized!"}}class a extends o{constructor(){super()}execute(t){}}class l extends o{constructor(t,e=null){super(),this._mediatorName=t||l.NAME,this._viewComponent=e}onRegister(){}onRemove(){}listNotificationInterests(){return[]}handleNotification(t){}get mediatorName(){return this._mediatorName}get viewComponent(){return this._viewComponent}set viewComponent(t){this._viewComponent=t}static get NAME(){return"Mediator"}}class h extends o{constructor(t,e=null){super(),this._proxyName=t||h.NAME,this._data=e}onRegister(){}onRemove(){}get proxyName(){return this._proxyName}get data(){return this._data}set data(t){this._data=t}static get NAME(){return"Proxy"}}exports.Controller=i,exports.Facade=s,exports.MacroCommand=class extends a{constructor(){super(),this.subCommands=[],this.initializeMacroCommand()}initializeMacroCommand(){}addSubCommand(t){this.subCommands.push(t)}execute(t){for(;this.subCommands.length>0;){let e=this.subCommands.shift()();e.initializeNotifier(this.multitonKey),e.execute(t)}}},exports.Mediator=l,exports.Model=n,exports.Notification=r,exports.Notifier=o,exports.Observer=t,exports.Proxy=h,exports.SimpleCommand=a,exports.View=e;
-//# sourceMappingURL=puremvc.min.cjs.map
diff --git a/bin/cjs/puremvc.min.cjs.map b/bin/cjs/puremvc.min.cjs.map
deleted file mode 100644
index 9bf7af3..0000000
--- a/bin/cjs/puremvc.min.cjs.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"puremvc.min.cjs","sources":["../../src/patterns/observer/Observer.js","../../src/core/View.js","../../src/core/Controller.js","../../src/core/Model.js","../../src/patterns/observer/Notification.js","../../src/patterns/facade/Facade.js","../../src/patterns/observer/Notifier.js","../../src/patterns/command/SimpleCommand.js","../../src/patterns/mediator/Mediator.js","../../src/patterns/proxy/Proxy.js","../../src/patterns/command/MacroCommand.js"],"sourcesContent":["/*\n * Observer.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\n/**\n * A base `Observer` implementation.\n *\n * An `Observer` is an object that encapsulates information\n * about an interested object with a method that should\n * be called when a particular `Notification` is broadcast.
\n *\n * In PureMVC, the `Observer` class assumes these responsibilities:
\n *\n * \n * - Encapsulate the notification (callback) method of the interested object.
\n * - Encapsulate the notification context (this) of the interested object.
\n * - Provide methods for setting the notification method and context.
\n * - Provide a method for notifying the interested object.
\n *
\n *\n * @class Observer\n */\nclass Observer {\n\n /**\n * Constructor.\n *\n * The notification method on the interested object should take\n * one parameter of type `Notification`
\n *\n * @param {function(Notification):void} notifyMethod\n * @param {Object} notifyContext\n */\n constructor(notifyMethod, notifyContext) {\n this._notifyMethod = notifyMethod;\n this._notifyContext = notifyContext;\n }\n\n /**\n * Notify the interested object.\n *\n * @param {Notification} notification\n */\n notifyObserver(notification) {\n this._notifyMethod.call(this._notifyContext, notification);\n }\n\n /**\n * Compare an object to the notification context.\n *\n * @param {Object} notifyContext\n * @returns {boolean}\n */\n compareNotifyContext(notifyContext) {\n return this._notifyContext === notifyContext;\n }\n\n /**\n * Get the notification method.\n *\n * @returns {function(Notification):void}\n */\n get notifyMethod() {\n return this._notifyMethod\n }\n\n /**\n * Set the notification method.\n *\n * The notification method should take one parameter of type `Notification`.
\n *\n * @param {function(Notification): void} notifyMethod - The function to be called when a notification is received.\n */\n set notifyMethod(notifyMethod) {\n this._notifyMethod = notifyMethod;\n }\n\n /**\n * Get the notifyContext\n *\n * @returns {Object}\n */\n get notifyContext() {\n return this._notifyContext;\n }\n\n /**\n * Set the notification context.\n *\n * @param {Object} notifyContext\n */\n set notifyContext(notifyContext) {\n this._notifyContext = notifyContext;\n }\n\n}\nexport { Observer }\n","/*\n * View.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\nimport {Observer} from \"../patterns/observer/Observer.js\";\n\n/**\n * A Multiton `View` implementation.\n *\n * In PureMVC, the `View` class assumes these responsibilities:
\n *\n * \n * - Maintain a cache of `Mediator` instances.
\n * - Provide methods for registering, retrieving, and removing `Mediators`.
\n * - Notifying `Mediators` when they are registered or removed.
\n * - Managing the observer lists for each `Notification` in the application.
\n * - Providing a method for attaching `Observers` to a `Notification`'s observer list.
\n * - Providing a method for broadcasting a `Notification`.
\n * - Notifying the `Observers` of a given `Notification` when it broadcast.
\n *
\n *\n * @see Mediator Mediator\n * @see Observer Observer\n * @see Notification Notification\n *\n * @class View\n */\nclass View {\n\n /**\n * Constructor.\n *\n * This `View` implementation is a Multiton,\n * so you should not call the constructor\n * directly, but instead call the static Multiton\n * Factory method `View.getInstance( multitonKey )`\n *\n * @constructor\n * @param {string} key\n *\n * @throws {Error} Error if instance for this Multiton key has already been constructed\n */\n constructor(key) {\n if (View.instanceMap.get(key) != null) throw new Error(View.MULTITON_MSG);\n /** @protected\n * @type {string} */\n this.multitonKey = key;\n View.instanceMap.set(this.multitonKey, this);\n /** @protected\n * @type {Map} */\n this.mediatorMap = new Map();\n /** @protected\n * @type {Map.>} */\n this.observerMap = new Map();\n this.initializeView();\n }\n\n /**\n * Initialize the Multiton View instance.
\n *\n * Called automatically by the constructor, this\n * is your opportunity to initialize the Multiton\n * instance in your subclass without overriding the\n * constructor.
\n */\n initializeView() {\n\n }\n\n /**\n * View Multiton factory method.\n *\n * @static\n * @param {string} key\n * @param {function(string):View} factory\n * @returns {View} the Multiton instance of `View`\n */\n static getInstance(key, factory) {\n if (View.instanceMap == null)\n /** @static\n * @type {Map} */\n View.instanceMap = new Map();\n if (View.instanceMap.get(key) == null) View.instanceMap.set(key, factory(key));\n return View.instanceMap.get(key);\n }\n\n /**\n * Register an `Observer` to be notified\n * of `Notifications` with a given name.
\n *\n * @param {string} notificationName the name of the `Notifications` to notify this `Observer` of\n * @param {Observer} observer the `Observer` to register\n */\n registerObserver(notificationName, observer) {\n if (this.observerMap.get(notificationName) != null) {\n let observers = this.observerMap.get(notificationName);\n observers.push(observer);\n } else {\n this.observerMap.set(notificationName, new Array(observer));\n }\n }\n\n /**\n * Notify the `Observers` for a particular `Notification`.
\n *\n * All previously attached `Observers` for this `Notification`'s\n * list are notified and are passed a reference to the `Notification` in\n * the order in which they were registered.
\n *\n * @param {Notification} notification the `Notification` to notify `Observers` of.\n */\n notifyObservers(notification) {\n if (this.observerMap.has(notification.name)) {\n // Copy observers from reference array to working array,\n // since the reference array may change during the notification loop\n let observers = this.observerMap.get(notification.name).slice();\n\n // Notify Observers from the working array\n for(let i = 0; i < observers.length; i++) {\n observers[i].notifyObserver(notification);\n }\n }\n }\n\n /**\n * Remove the observer for a given notifyContext from an observer list for a given Notification name.
\n *\n * @param {string} notificationName which observer list to remove from\n * @param {Object} notifyContext remove the observer with this object as its notifyContext\n */\n removeObserver(notificationName, notifyContext) {\n // the observer list for the notification under inspection\n let observers = this.observerMap.get(notificationName);\n\n // find the observer for the notifyContext\n for (let i = 0; i < observers.length; i++) {\n if (observers[i].compareNotifyContext(notifyContext) === true) {\n // there can only be one Observer for a given notifyContext\n // in any given Observer list, so remove it and break\n observers.splice(i, 1);\n break;\n }\n }\n\n // Also, when a Notification's Observer list length falls to\n // zero, delete the notification key from the observer map\n if (observers.length === 0) {\n this.observerMap.delete(notificationName);\n }\n }\n\n /**\n * Register a `Mediator` instance with the `View`.\n *\n * Registers the `Mediator` so that it can be retrieved by name,\n * and further interrogates the `Mediator` for its\n * `Notification` interests.
\n *\n * If the `Mediator` returns any `Notification`\n * names to be notified about, an `Observer` is created encapsulating\n * the `Mediator` instance's `handleNotification` method\n * and registering it as an `Observer` for all `Notifications` the\n * `Mediator` is interested in.
\n *\n * @param {Mediator} mediator a reference to the `Mediator` instance\n */\n registerMediator(mediator) {\n // do not allow re-registration (you must to removeMediator fist)\n if (this.mediatorMap.has(mediator.mediatorName) !== false) return;\n\n mediator.initializeNotifier(this.multitonKey);\n\n // Register the Mediator for retrieval by name\n this.mediatorMap.set(mediator.mediatorName, mediator);\n\n // Get Notification interests, if any.\n let interests = mediator.listNotificationInterests();\n\n // Register Mediator as an observer for each notification of interests\n if (interests.length > 0) {\n // Create Observer referencing this mediator's handleNotification method\n let observer = new Observer(mediator.handleNotification.bind(mediator), mediator); // check bind\n\n // Register Mediator as Observer for its list of Notification interests\n for (let i = 0; i < interests.length; i++) {\n this.registerObserver(interests[i], observer);\n }\n }\n\n // alert the mediator that it has been registered\n mediator.onRegister();\n }\n\n /**\n * Retrieve a `Mediator` from the `View`.\n *\n * @param {string} mediatorName the name of the `Mediator` instance to retrieve.\n * @returns {Mediator} the `Mediator` instance previously registered with the given `mediatorName`.\n */\n retrieveMediator(mediatorName) {\n return this.mediatorMap.get(mediatorName) || null;\n }\n\n /**\n * Remove a `Mediator` from the `View`.\n *\n * @param {string} mediatorName name of the `Mediator` instance to be removed.\n * @returns {Mediator} the `Mediator` that was removed from the `View`\n */\n removeMediator(mediatorName) {\n // Retrieve the named mediator\n let mediator = this.mediatorMap.get(mediatorName);\n\n if (mediator) {\n // for every notification this mediator is interested in...\n let interests = mediator.listNotificationInterests();\n for (let i = 0; i < interests.length; i++) {\n // remove the observer linking the mediator\n // to the notification interest\n this.removeObserver(interests[i], mediator);\n }\n\n // remove the mediator from the map\n this.mediatorMap.delete(mediatorName);\n\n // alert the mediator that it has been removed\n mediator.onRemove();\n }\n\n return mediator;\n }\n\n /**\n * Check if a Mediator is registered or not\n *\n * @param {string} mediatorName\n * @returns {boolean} whether a Mediator is registered with the given `mediatorName`.\n */\n hasMediator(mediatorName) {\n return this.mediatorMap.has(mediatorName);\n }\n\n /**\n * Remove a View instance\n *\n * @static\n * @param key multitonKey of View instance to remove\n */\n static removeView(key) {\n this.instanceMap.delete(key);\n }\n\n /**\n * Message Constants\n *\n * @static\n * @type {string}\n */\n static get MULTITON_MSG() { return \"View instance for this Multiton key already constructed!\" };\n\n}\nexport { View }\n","/*\n * Controller.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\nimport {View} from \"./View.js\"\nimport {Observer} from \"../patterns/observer/Observer.js\";\n\n/**\n * A Multiton `Controller` implementation.\n *\n * In PureMVC, the `Controller` class follows the\n * 'Command and Controller' strategy, and assumes these\n * responsibilities:
\n *\n * \n * - Remembering which `Command`s\n * are intended to handle which `Notifications`.
\n * - Registering itself as an `Observer` with\n * the `View` for each `Notification`\n * that it has a `Command` mapping for.
\n * - Creating a new instance of the proper `Command`\n * to handle a given `Notification` when notified by the `View`.
\n * - Calling the `Command`'s `execute`\n * method, passing in the `Notification`.
\n *
\n *\n * Your application must register `Commands` with the\n * Controller.
\n *\n * The simplest way is to subclass `Facade`,\n * and use its `initializeController` method to add your\n * registrations.
\n *\n * @see View View\n * @see Observer Observer\n * @see Notification Notification\n * @see SimpleCommand SimpleCommand\n * @see MacroCommand MacroCommand\n *\n * @class Controller\n */\nclass Controller {\n\n /**\n * Constructor.\n *\n * This `Controller` implementation is a Multiton,\n * so you should not call the constructor\n * directly, but instead call the static Factory method,\n * passing the unique key for this instance\n * `Controller.getInstance( multitonKey )`
\n *\n * @throws {Error} Error if instance for this Multiton key has already been constructed\n *\n * @constructor\n * @param {string} key\n */\n constructor(key) {\n if (Controller.instanceMap[key] != null) throw new Error(Controller.MULTITON_MSG);\n /** @protected\n * @type {string} */\n this.multitonKey = key;\n Controller.instanceMap.set(this.multitonKey, this);\n /** @protected\n * @type {Map} */\n this.commandMap = new Map();\n this.initializeController();\n }\n\n /**\n * Initialize the Multiton `Controller` instance.\n *\n * Called automatically by the constructor.
\n *\n * Note that if you are using a subclass of `View`\n * in your application, you should also subclass `Controller`\n * and override the `initializeController` method in the\n * following way:
\n *\n * `\n *\t\t// ensure that the Controller is talking to my View implementation\n *\t\tinitializeController( )\n *\t\t{\n *\t\t\tthis.view = MyView.getInstance(this.multitonKey, (key) => new MyView(key));\n *\t\t}\n * `
\n *\n */\n initializeController() {\n /** @protected\n * @type {View} **/\n this.view = View.getInstance(this.multitonKey, (key) => new View(key));\n }\n\n /**\n * `Controller` Multiton Factory method.\n *\n * @static\n * @param {string} key\n * @param {function(string):Controller} factory\n * @returns {Controller} the Multiton instance of `Controller`\n */\n static getInstance(key, factory) {\n if (Controller.instanceMap == null)\n /** @static\n @type {Map} */\n Controller.instanceMap = new Map();\n if (Controller.instanceMap.get(key) == null) Controller.instanceMap.set(key, factory(key));\n return Controller.instanceMap.get(key);\n }\n\n /**\n * If a `Command` has previously been registered\n * to handle the given `Notification`, then it is executed.
\n *\n * @param {Notification} notification a `Notification`\n */\n executeCommand(notification) {\n let factory = this.commandMap.get(notification.name);\n if (factory == null) return;\n\n let commandInstance = factory();\n commandInstance.initializeNotifier(this.multitonKey);\n commandInstance.execute(notification);\n }\n\n /**\n * Register a particular `Command` class as the handler\n * for a particular `Notification`.
\n *\n * If an `Command` has already been registered to\n * handle `Notification`s with this name, it is no longer\n * used, the new `Command` is used instead.
\n *\n * The Observer for the new Command is only created if this the\n * first time a Command has been registered for this Notification name.
\n *\n * @param notificationName the name of the `Notification`\n * @param {function():SimpleCommand} factory\n */\n registerCommand(notificationName, factory) {\n if (this.commandMap.get(notificationName) == null) {\n this.view.registerObserver(notificationName, new Observer(this.executeCommand, this));\n }\n this.commandMap.set(notificationName, factory);\n }\n\n /**\n * Check if a Command is registered for a given Notification\n *\n * @param {string} notificationName\n * @return {boolean} whether a Command is currently registered for the given `notificationName`.\n */\n hasCommand(notificationName) {\n return this.commandMap.has(notificationName);\n }\n\n /**\n * Remove a previously registered `Command` to `Notification` mapping.\n *\n * @param {string} notificationName the name of the `Notification` to remove the `Command` mapping for\n */\n removeCommand(notificationName) {\n // if the Command is registered...\n if(this.hasCommand(notificationName)) {\n // remove the observer\n this.view.removeObserver(notificationName, this);\n\n // remove the command\n this.commandMap.delete(notificationName)\n }\n }\n\n /**\n * Remove a Controller instance\n *\n * @static\n * @param {string} key of Controller instance to remove\n */\n static removeController(key) {\n Controller.instanceMap.delete(key);\n }\n\n /**\n * Message Constants\n *\n * @static\n * @type {string}\n */\n static get MULTITON_MSG() { return \"Controller instance for this Multiton key already constructed!\" };\n}\nexport { Controller }\n","/*\n * Model.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\n/**\n * A Multiton `Model` implementation.\n *\n * In PureMVC, the `Model` class provides\n * access to model objects (Proxies) by named lookup.\n *\n *
The `Model` assumes these responsibilities:
\n *\n * \n * - Maintain a cache of `Proxy` instances.
\n * - Provide methods for registering, retrieving, and removing\n * `Proxy` instances.
\n *
\n *\n * Your application must register `Proxy` instances\n * with the `Model`. Typically, you use an\n * `Command` to create and register `Proxy`\n * instances once the `Facade` has initialized the Core\n * actors.
\n *\n * @see Proxy Proxy\n *\n * @class Model\n */\n\nclass Model {\n\n /**\n * Constructor.\n *\n * This `Model` implementation is a Multiton,\n * so you should not call the constructor\n * directly, but instead call the static Multiton\n * Factory method `Model.getInstance( multitonKey )`\n *\n * @constructor\n * @param {string} key\n *\n * @throws {Error} Error if instance for this Multiton key instance has already been constructed\n */\n constructor(key) {\n if (Model.instanceMap.get(key) != null) throw new Error(Model.MULTITON_MSG);\n /** @protected\n * @type {string} */\n this.multitonKey = key;\n Model.instanceMap.set(this.multitonKey, this);\n /** @protected\n * @type {Map} */\n this.proxyMap = new Map();\n this.initializeModel();\n }\n\n /**\n * Initialize the `Model` instance.\n *\n * Called automatically by the constructor, this\n * is your opportunity to initialize the Multiton\n * instance in your subclass without overriding the\n * constructor.
\n *\n */\n initializeModel() {\n\n }\n\n /**\n * `Model` Multiton Factory method.\n *\n * @static\n * @param {string} key\n * @param {function(string):Model} factory\n * @returns {Model} the instance for this Multiton key\n */\n static getInstance(key, factory) {\n if (Model.instanceMap == null)\n /** @static\n @type {Map} */\n Model.instanceMap = new Map();\n if (Model.instanceMap.get(key) == null) Model.instanceMap.set(key, factory(key));\n return Model.instanceMap.get(key);\n }\n\n /**\n * Register a `Proxy` with the `Model`.\n *\n * @param {Proxy} proxy a `Proxy` to be held by the `Model`.\n */\n registerProxy(proxy) {\n proxy.initializeNotifier(this.multitonKey);\n this.proxyMap.set(proxy.proxyName, proxy);\n proxy.onRegister();\n }\n\n /**\n * Retrieve a `Proxy` from the `Model`.\n *\n * @param {string} proxyName\n * @returns {Proxy} the `Proxy` instance previously registered with the given `proxyName`.\n */\n retrieveProxy(proxyName) {\n return this.proxyMap.get(proxyName) || null;\n }\n\n /**\n * Check if a Proxy is registered\n *\n * @param {string} proxyName\n * @returns {boolean} whether a Proxy is currently registered with the given `proxyName`.\n */\n hasProxy(proxyName) {\n return this.proxyMap.has(proxyName);\n }\n\n /**\n * Remove a `Proxy` from the `Model`.\n *\n * @param {string} proxyName name of the `Proxy` instance to be removed.\n * @returns {Proxy} the `Proxy` that was removed from the `Model`\n */\n removeProxy(proxyName) {\n let proxy = this.proxyMap.get(proxyName);\n if (proxy != null) {\n this.proxyMap.delete(proxyName);\n proxy.onRemove();\n }\n return proxy;\n }\n\n /**\n * Remove a Model instance\n *\n * @static\n * @param key\n */\n static removeModel(key) {\n Model.instanceMap.delete(key);\n }\n\n /**\n * @static\n * @type {string}\n */\n static get MULTITON_MSG() { return \"Model instance for this Multiton key already constructed!\" };\n}\nexport { Model }","/*\n * Notification.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\n/**\n *\n * A base `Notification` implementation.\n *\n * PureMVC does not rely upon underlying event models such\n * as the one provided with Flash, and ActionScript 3 does\n * not have an inherent event model.
\n *\n * The Observer Pattern as implemented within PureMVC exists\n * to support event-driven communication between the\n * application and the actors of the MVC triad.
\n *\n * Notifications are not meant to be a replacement for Events\n * in Flex/Flash/Apollo. Generally, `Mediator` implementors\n * place event listeners on their view components, which they\n * then handle in the usual way. This may lead to the broadcast of `Notification`s to\n * trigger `Command`s or to communicate with other `Mediators`. `Proxy` and `Command`\n * instances communicate with each other and `Mediator`s\n * by broadcasting `Notification`s.
\n *\n * A key difference between Flash `Event`s and PureMVC\n * `Notification`s is that `Event`s follow the\n * 'Chain of Responsibility' pattern, 'bubbling' up the display hierarchy\n * until some parent component handles the `Event`, while\n * PureMVC `Notification`s follow a 'Publish/Subscribe'\n * pattern. PureMVC classes need not be related to each other in a\n * parent/child relationship in order to communicate with one another\n * using `Notification`s.
\n *\n * @class Notification\n */\nclass Notification {\n\n /**\n * Constructor.\n *\n * @constructor\n * @param {string} name - The name of the notification.\n * @param {Object|null} [body=null] - The body of the notification, defaults to `null`.\n * @param {string} [type=\"\"] - The type of the notification, defaults to an empty string.\n */\n constructor(name, body = null, type = \"\") {\n this._name = name;\n this._body = body;\n this._type = type;\n }\n\n /**\n * Get the name of the `Notification` instance.\n *\n * @returns {string}\n */\n get name() {\n return this._name;\n }\n\n /**\n * Get the body of the `Notification` instance.\n *\n * @returns {Object}\n */\n get body() {\n return this._body;\n }\n\n /**\n * Set the body of the `Notification` instance.\n *\n * @param {Object|null} body\n */\n set body(body) {\n this._body = body;\n }\n\n /**\n * Get the type of the `Notification` instance.\n *\n * @returns {string}\n */\n get type() {\n return this._type;\n }\n\n /**\n * Set the type of the `Notification` instance.\n *\n * @param {string} type\n */\n set type(type) {\n this._type = type;\n }\n\n /**\n * Get the string representation of the `Notification` instance.\n *\n * @returns {string}\n */\n toString() {\n let str= \"Notification Name: \" + this.name;\n str+= \"\\nBody:\" + ((this.body == null ) ? \"null\" : this.body.toString());\n str+= \"\\nType:\" + ((this.type == null ) ? \"null\" : this.type);\n return str;\n }\n\n}\nexport { Notification }\n","/*\n * Facade.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\nimport {Controller} from \"../../core/Controller.js\";\nimport {Model} from \"../../core/Model.js\";\nimport {View} from \"../../core/View.js\";\nimport {Notification} from \"../observer/Notification.js\";\n\n/**\n * A base Multiton `Facade` implementation.\n *\n * @see Model Model\n * @see View View\n * @see Controller Controller\n *\n * @class Facade\n */\nclass Facade {\n\n /**\n * Constructor.\n *\n * This `Facade` implementation is a Multiton,\n * so you should not call the constructor\n * directly, but instead call the static Factory method,\n * passing the unique key for this instance\n * `Facade.getInstance( multitonKey )`
\n *\n * @constructor\n * @param {string} key\n * @throws {Error} Error if instance for this Multiton key has already been constructed\n */\n constructor(key) {\n if (Facade.instanceMap[key] != null) throw new Error(Facade.MULTITON_MSG);\n this.initializeNotifier(key);\n Facade.instanceMap.set(this.multitonKey, this);\n this.initializeFacade();\n }\n\n /**\n * Initialize the Multiton `Facade` instance.\n *\n * Called automatically by the constructor. Override in your\n * subclass to do any subclass specific initializations. Be\n * sure to call `super.initializeFacade()`, though.
\n */\n initializeFacade() {\n this.initializeModel();\n this.initializeController();\n this.initializeView();\n }\n\n /**\n * Facade Multiton Factory method\n *\n * @static\n * @param {string} key\n * @param {function(string):Facade} factory\n * @returns {Facade} the Multiton instance of the Facade\n */\n static getInstance(key, factory) {\n if (Facade.instanceMap == null)\n /** @static\n * @type {Map} */\n Facade.instanceMap = new Map();\n if (Facade.instanceMap.get(key) == null) Facade.instanceMap.set(key, factory(key));\n return Facade.instanceMap.get(key);\n }\n\n /**\n * Initialize the `Model`.\n *\n * Called by the `initializeFacade` method.\n * Override this method in your subclass of `Facade`\n * if one or both of the following are true:
\n *\n * \n * - You wish to initialize a different `Model`.
\n * - You have `Proxy`s to register with the Model that do not\n * retrieve a reference to the Facade at construction time.`
\n *
\n *\n * If you don't want to initialize a different `Model`,\n * call `super.initializeModel()` at the beginning of your\n * method, then register `Proxy`s.\n *\n * Note: This method is rarely overridden; in practice you are more\n * likely to use a `Command` to create and register `Proxy`s\n * with the `Model`, since `Proxy`s with mutable data will likely\n * need to send `Notification`s and thus will likely want to fetch a reference to\n * the `Facade` during their construction.
\n */\n initializeModel() {\n if (this.model != null) return;\n this.model = Model.getInstance(this.multitonKey, key => new Model(key));\n }\n\n /**\n * Initialize the `Controller`.\n *\n * Called by the `initializeFacade` method.\n * Override this method in your subclass of `Facade`\n * if one or both of the following are true:
\n *\n * \n * - You wish to initialize a different `Controller`.
\n * - You have `Commands` to register with the `Controller` at startup.`.
\n *
\n *\n * If you don't want to initialize a different `Controller`,\n * call `super.initializeController()` at the beginning of your\n * method, then register `Command`s.
\n */\n initializeController() {\n if (this.controller != null) return;\n this.controller = Controller.getInstance(this.multitonKey, key => new Controller(key));\n }\n\n /**\n * Initialize the `View`.\n *\n * Called by the `initializeFacade` method.\n * Override this method in your subclass of `Facade`\n * if one or both of the following are true:
\n *\n * \n * - You wish to initialize a different `View`.
\n * - You have `Observers` to register with the `View`
\n *
\n *\n * If you don't want to initialize a different `View`,\n * call `super.initializeView()` at the beginning of your\n * method, then register `Mediator` instances.
\n *\n * Note: This method is rarely overridden; in practice you are more\n * likely to use a `Command` to create and register `Mediator`s\n * with the `View`, since `Mediator` instances will need to send\n * `Notification`s and thus will likely want to fetch a reference\n * to the `Facade` during their construction.
\n */\n initializeView() {\n if (this.view != null) return;\n this.view = View.getInstance(this.multitonKey, key => new View(key));\n }\n\n /**\n * Register a `Command` with the `Controller` by Notification name.\n *\n * @param {string} notificationName the name of the `Notification` to associate the `Command` with\n * @param {function():SimpleCommand} factory a reference to the factory of the `Command`\n */\n registerCommand(notificationName, factory) {\n this.controller.registerCommand(notificationName, factory);\n }\n\n /**\n * Check if a Command is registered for a given Notification\n *\n * @param {string} notificationName\n * @returns {boolean} whether a Command is currently registered for the given `notificationName`.\n */\n hasCommand(notificationName) {\n return this.controller.hasCommand(notificationName);\n }\n\n /**\n * Remove a previously registered `Command` to `Notification` mapping from the Controller.\n *\n * @param {string} notificationName the name of the `Notification` to remove the `Command` mapping for\n */\n removeCommand(notificationName) {\n this.controller.removeCommand(notificationName);\n }\n\n /**\n * Register a `Proxy` with the `Model` by name.\n *\n * @param {Proxy} proxy the `Proxy` instance to be registered with the `Model`.\n */\n registerProxy(proxy) {\n this.model.registerProxy(proxy);\n }\n\n /**\n * Remove a `Proxy` from the `Model` by name.\n *\n * @param {string} proxyName the `Proxy` to remove from the `Model`.\n * @returns {Proxy} the `Proxy` that was removed from the `Model`\n */\n removeProxy(proxyName) {\n return this.model.removeProxy(proxyName);\n }\n\n /**\n * Check if a Proxy is registered\n *\n * @param {string} proxyName\n * @returns {boolean} whether a Proxy is currently registered with the given `proxyName`.\n */\n hasProxy(proxyName) {\n return this.model.hasProxy(proxyName);\n }\n\n /**\n * Retrieve a `Proxy` from the `Model` by name.\n *\n * @param {string} proxyName the name of the proxy to be retrieved.\n * @returns {Proxy} the `Proxy` instance previously registered with the given `proxyName`.\n */\n retrieveProxy(proxyName) {\n return this.model.retrieveProxy(proxyName);\n }\n\n /**\n * Register a `Mediator` with the `View`.\n *\n * @param {Mediator} mediator a reference to the `Mediator`\n */\n registerMediator(mediator) {\n this.view.registerMediator(mediator);\n }\n\n /**\n * Remove a `Mediator` from the `View`.\n *\n * @param {string} mediatorName name of the `Mediator` to be removed.\n * @returns {Mediator} the `Mediator` that was removed from the `View`\n */\n removeMediator(mediatorName) {\n return this.view.removeMediator(mediatorName);\n }\n\n /**\n * Check if a Mediator is registered or not\n *\n * @param {string} mediatorName\n * @returns {boolean} whether a Mediator is registered with the given `mediatorName`.\n */\n hasMediator(mediatorName) {\n return this.view.hasMediator(mediatorName);\n }\n\n /**\n * Retrieve a `Mediator` from the `View`.\n *\n * @param {string} mediatorName\n * @returns {Mediator} the `Mediator` previously registered with the given `mediatorName`.\n */\n retrieveMediator(mediatorName) {\n return this.view.retrieveMediator(mediatorName);\n }\n\n /**\n * Create and send an `Notification`.\n *\n * Keeps us from having to construct new notification\n * instances in our implementation code.
\n *\n * @param {string} notificationName the name of the notification to send\n * @param {Object} [body] body the body of the notification (optional)\n * @param {string} [type] type the type of the notification (optional)\n */\n sendNotification(notificationName, body = null, type = \"\") {\n this.notifyObservers(new Notification(notificationName, body, type));\n }\n\n /**\n * Notify `Observer`s.\n *\n * This method is left public mostly for backward\n * compatibility, and to allow you to send custom\n * notification classes using the facade.
\n *\n * Usually you should just call sendNotification\n * and pass the parameters, never having to\n * construct the notification yourself.
\n *\n * @param {Notification} notification the `Notification` to have the `View` notify `Observers` of.\n */\n notifyObservers(notification) {\n this.view.notifyObservers(notification);\n }\n\n /**\n * Set the Multiton key for this facade instance.\n *\n * Not called directly, but instead from the\n * constructor when getInstance is invoked.\n * It is necessary to be public in order to\n * implement Notifier.
\n */\n initializeNotifier(key) {\n this.multitonKey = key;\n }\n\n /**\n * Check if a Core is registered or not\n *\n * @static\n * @param {string} key the multiton key for the Core in question\n * @returns {boolean} whether a Core is registered with the given `key`.\n */\n static hasCore(key) {\n return this.instanceMap.has(key);\n }\n\n /**\n * Remove a Core.\n *\n * Remove the Model, View, Controller and Facade\n * instances for the given key.
\n *\n * @static\n * @param {string} key multitonKey of the Core to remove\n */\n static removeCore(key) {\n if (Facade.instanceMap.get(key) == null) return;\n Model.removeModel(key);\n View.removeView(key);\n Controller.removeController(key);\n this.instanceMap.delete(key);\n }\n\n /**\n * Message Constants\n *\n * @static\n * @returns {string}\n */\n static get MULTITON_MSG() {return \"Facade instance for this Multiton key already constructed!\"};\n}\nexport { Facade }\n","/*\n * Notifier.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\nimport {Facade} from \"../facade/Facade.js\";\n\n/**\n * A Base `Notifier` implementation.\n *\n * `MacroCommand, Command, Mediator` and `Proxy`\n * all have a need to send `Notifications`.
\n *\n *
The `Notifier` interface provides a common method called\n * `sendNotification` that relieves implementation code of\n * the necessity to actually construct `Notifications`.
\n *\n * The `Notifier` class, which all the above-mentioned classes\n * extend, provides an initialized reference to the `Facade`\n * Multiton, which is required for the convenience method\n * for sending `Notifications`, but also eases implementation as these\n * classes have frequent `Facade` interactions and usually require\n * access to the facade anyway.
\n *\n * NOTE: In the MultiCore version of the framework, there is one caveat to\n * notifiers, they cannot send notifications or reach the facade until they\n * have a valid multitonKey.
\n *\n * The multitonKey is set:\n * * on a Command when it is executed by the Controller\n * * on a Mediator is registered with the View\n * * on a Proxy is registered with the Model.\n *\n * @see Proxy Proxy\n * @see Facade Facade\n * @see Mediator Mediator\n * @see MacroCommand MacroCommand\n * @see SimpleCommand SimpleCommand\n *\n * @class Notifier\n */\nclass Notifier {\n\n constructor() {}\n\n /**\n * Create and send an `Notification`.\n *\n * Keeps us from having to construct new Notification\n * instances in our implementation code.
\n *\n * @param {string} notificationName\n * @param {Object} [body] body\n * @param {string} [type] type\n */\n sendNotification (notificationName, body = null, type = \"\") {\n if (this.facade != null) {\n this.facade.sendNotification(notificationName, body, type);\n }\n }\n\n /**\n * Initialize this Notifier instance.\n *\n * This is how a Notifier gets its multitonKey.\n * Calls to sendNotification or to access the\n * facade will fail until after this method\n * has been called.
\n *\n * Mediators, Commands or Proxies may override\n * this method in order to send notifications\n * or access the Multiton Facade instance as\n * soon as possible. They CANNOT access the facade\n * in their constructors, since this method will not\n * yet have been called.
\n *\n * @param {string} key the multitonKey for this Notifier to use\n */\n initializeNotifier(key) {\n this.multitonKey = key;\n }\n\n /**\n * Return the Multiton Facade instance\n *\n * @typedef {Facade} Facade\n *\n * @throws {Error}\n */\n get facade() {\n if (this.multitonKey == null) throw new Error(Notifier.MULTITON_MSG);\n return Facade.getInstance(this.multitonKey, key => new Facade(key));\n }\n\n /**\n * Message Constants\n *\n * @static\n * @returns {string}\n */\n static get MULTITON_MSG() { return \"multitonKey for this Notifier not yet initialized!\" }\n}\nexport { Notifier }\n","/*\n * SimpleCommand.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\nimport {Notifier} from \"../observer/Notifier.js\";\n\n/**\n * A base `Command` implementation.\n *\n * Your subclass should override the `execute`\n * method where your business logic will handle the `Notification`.
\n *\n * @see Controller Controller\n * @see Notification Notification\n * @see MacroCommand MacroCommand\n *\n * @class SimpleCommand\n */\nclass SimpleCommand extends Notifier {\n\n constructor() {\n super();\n }\n\n /**\n * Fulfill the use-case initiated by the given `Notification`.\n *\n * In the Command Pattern, an application use-case typically\n * begins with some user action, which results in a `Notification` being broadcast, which\n * is handled by business logic in the `execute` method of an\n * `Command`.
\n *\n * @param {Notification} notification\n */\n execute(notification) {\n\n }\n\n}\nexport { SimpleCommand }\n","/*\n * Mediator.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\nimport {Notifier} from \"../observer/Notifier.js\";\n\n/**\n * A base `Mediator` implementation.\n *\n * @see View View\n *\n * @class Mediator\n */\nclass Mediator extends Notifier {\n\n /**\n * Constructor.\n *\n * @constructor\n * @param {string} mediatorName\n * @param {Object} [viewComponent] viewComponent\n */\n constructor(mediatorName, viewComponent = null) {\n super();\n this._mediatorName = mediatorName || Mediator.NAME;\n this._viewComponent = viewComponent;\n }\n\n /**\n * Called by the View when the Mediator is registered\n */\n onRegister() {\n\n }\n\n /**\n * Called by the View when the Mediator is removed\n */\n onRemove() {\n\n }\n\n /**\n * List the `Notification` names this\n * `Mediator` is interested in being notified of.\n *\n * @returns {string[]}\n */\n listNotificationInterests() {\n return [];\n }\n\n /**\n * Handle `Notification`s.\n *\n * \n * Typically this will be handled in a switch statement,\n * with one 'case' entry per `Notification`\n * the `Mediator` is interested in.\n *\n * @param {Notification} notification\n */\n handleNotification(notification) {\n\n }\n\n /**\n * the mediator name\n *\n * @returns {string}\n */\n get mediatorName() {\n return this._mediatorName;\n }\n\n /**\n * Get the `Mediator`'s view component.\n *\n *
\n * Additionally, an implicit getter will usually\n * be defined in the subclass that casts the view\n * object to a type, like this:
\n *\n * @returns {Object}\n */\n get viewComponent() {\n return this._viewComponent;\n }\n\n /**\n * Set the `Mediator`'s view component.\n *\n * @param {Object} viewComponent\n */\n set viewComponent(viewComponent) {\n this._viewComponent = viewComponent;\n }\n\n /**\n * The name of the `Mediator`.\n *\n * Typically, a `Mediator` will be written to serve\n * one specific control or group controls and so,\n * will not have a need to be dynamically named.
\n *\n * @static\n * @returns {string}\n */\n static get NAME() { return \"Mediator\" }\n}\nexport { Mediator }\n","/*\n * Proxy.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\nimport {Notifier} from \"../observer/Notifier.js\";\n\n/**\n * A base `Proxy` implementation.\n *\n * In PureMVC, `Proxy` classes are used to manage parts of the\n * application's data model.
\n *\n * A `Proxy` might simply manage a reference to a local data object,\n * in which case interacting with it might involve setting and\n * getting of its data in synchronous fashion.
\n *\n * `Proxy` classes are also used to encapsulate the application's\n * interaction with remote services to save or retrieve data, in which case,\n * we adopt an asynchronous idiom; setting data (or calling a method) on the\n * `Proxy` and listening for a `Notification` to be sent\n * when the `Proxy` has retrieved the data from the service.
\n *\n * @see Model Model\n *\n * @class Proxy\n */\nclass Proxy extends Notifier {\n /**\n * Constructor\n *\n * @constructor\n * @param {string} proxyName\n * @param {Object} [data]\n */\n constructor(proxyName, data = null) {\n super();\n /** @protected\n * @type {string} */\n this._proxyName = proxyName || Proxy.NAME;\n /** @protected\n * @type {Object} */\n this._data = data;\n }\n\n /**\n * Called by the Model when the Proxy is registered\n */\n onRegister() {}\n\n /**\n * Called by the Model when the Proxy is removed\n */\n onRemove() {}\n\n /**\n * Get the proxy name\n *\n * @returns {string}\n */\n get proxyName() {\n return this._proxyName;\n }\n\n /**\n * Get the data object\n *\n * @returns {Object}\n */\n get data () {\n return this._data;\n }\n\n /**\n * Set the data object\n *\n * @param {Object} data\n */\n set data(data) {\n this._data = data;\n }\n\n /**\n *\n * @static\n * @returns {string}\n */\n static get NAME() { return \"Proxy\" }\n}\nexport { Proxy }\n","/*\n * MacroCommand.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\nimport {SimpleCommand} from \"./SimpleCommand.js\";\n\n/**\n * A base `Command` implementation that executes other `Command`s.\n *\n * A `MacroCommand` maintains a list of\n * `Command` Class references called SubCommands.
\n *\n * When `execute` is called, the `MacroCommand`\n * instantiates and calls `execute` on each of its SubCommands turn.\n * Each SubCommand will be passed a reference to the original\n * `Notification` that was passed to the `MacroCommand`'s\n * `execute` method.
\n *\n * Unlike `SimpleCommand`, your subclass\n * should not override `execute`, but instead, should\n * override the `initializeMacroCommand` method,\n * calling `addSubCommand` once for each SubCommand\n * to be executed.
\n *\n * @see Controller Controller\n * @see Notification Notification\n * @see SimpleCommand SimpleCommand\n *\n * @class MacroCommand\n */\nclass MacroCommand extends SimpleCommand {\n\n /**\n * Constructor.\n *\n * You should not need to define a constructor,\n * instead, override the `initializeMacroCommand`\n * method.
\n *\n * If your subclass does define a constructor, be\n * sure to call `super()`.
\n *\n * @constructor\n */\n constructor() {\n super();\n /** @protected\n * @type {Array.} */\n this.subCommands = [];\n this.initializeMacroCommand();\n }\n\n /**\n * Initialize the `MacroCommand`.\n *\n * In your subclass, override this method to\n * initialize the `MacroCommand`'s SubCommand\n * list with `Command` class references like\n * this:
\n *\n * `\n *\t\t// Initialize MyMacroCommand\n *\t\tinitializeMacroCommand() {\n *\t\t\tthis.addSubCommand(() => new app.FirstCommand());\n *\t\t\tthis.addSubCommand(() => new app.SecondCommand());\n *\t\t\tthis.addSubCommand(() => new app.ThirdCommand());\n *\t\t}\n * `
\n *\n * Note that SubCommands may be any `Command` implementor,\n * `MacroCommand`s or `SimpleCommands` are both acceptable.\n */\n initializeMacroCommand() {\n\n }\n\n /**\n * Add a SubCommand.\n *\n *
The SubCommands will be called in First In/First Out (FIFO)\n * order.
\n *\n * @param {function():SimpleCommand} factory\n */\n addSubCommand(factory) {\n this.subCommands.push(factory);\n }\n\n /**\n * Execute this `MacroCommand`'s SubCommands.\n *\n * The SubCommands will be called in First In/First Out (FIFO)\n * order.
\n *\n * @param {Notification} notification\n */\n execute(notification) {\n while(this.subCommands.length > 0) {\n let factory = this.subCommands.shift();\n let commandInstance = factory();\n commandInstance.initializeNotifier(this.multitonKey);\n commandInstance.execute(notification);\n }\n }\n\n}\nexport { MacroCommand }\n"],"names":["Observer","constructor","notifyMethod","notifyContext","this","_notifyMethod","_notifyContext","notifyObserver","notification","call","compareNotifyContext","View","key","instanceMap","get","Error","MULTITON_MSG","multitonKey","set","mediatorMap","Map","observerMap","initializeView","getInstance","factory","registerObserver","notificationName","observer","push","Array","notifyObservers","has","name","observers","slice","i","length","removeObserver","splice","delete","registerMediator","mediator","mediatorName","initializeNotifier","interests","listNotificationInterests","handleNotification","bind","onRegister","retrieveMediator","removeMediator","onRemove","hasMediator","removeView","Controller","commandMap","initializeController","view","executeCommand","commandInstance","execute","registerCommand","hasCommand","removeCommand","removeController","Model","proxyMap","initializeModel","registerProxy","proxy","proxyName","retrieveProxy","hasProxy","removeProxy","removeModel","Notification","body","type","_name","_body","_type","toString","str","Facade","initializeFacade","model","controller","sendNotification","hasCore","removeCore","Notifier","facade","SimpleCommand","super","Mediator","viewComponent","_mediatorName","NAME","_viewComponent","Proxy","data","_proxyName","_data","subCommands","initializeMacroCommand","addSubCommand","shift"],"mappings":"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"}
\ No newline at end of file
diff --git a/bin/esm/puremvc.js b/bin/esm/index.js
similarity index 98%
rename from bin/esm/puremvc.js
rename to bin/esm/index.js
index 9d4f99e..6e1013c 100644
--- a/bin/esm/puremvc.js
+++ b/bin/esm/index.js
@@ -32,12 +32,12 @@ class Observer {
* The notification method on the interested object should take
* one parameter of type `Notification`
*
- * @param {function(Notification):void} notifyMethod
- * @param {Object} notifyContext
+ * @param {function(Notification):void | null} [notify = null]
+ * @param {Object | null} [context = null]
*/
- constructor(notifyMethod, notifyContext) {
- this._notifyMethod = notifyMethod;
- this._notifyContext = notifyContext;
+ constructor(notify = null, context = null) {
+ this._notifyMethod = notify;
+ this._notifyContext = context;
}
/**
@@ -418,10 +418,10 @@ class Controller {
* passing the unique key for this instance
* `Controller.getInstance( multitonKey )`
*
- * @throws {Error} Error if instance for this Multiton key has already been constructed
- *
* @constructor
* @param {string} key
+ *
+ * @throws {Error} Error if instance for this Multiton key has already been constructed
*/
constructor(key) {
if (Controller.instanceMap[key] != null) throw new Error(Controller.MULTITON_MSG);
@@ -590,7 +590,6 @@ class Controller {
*
* @class Model
*/
-
class Model {
/**
@@ -720,7 +719,6 @@ class Model {
*/
/**
- *
* A base `Notification` implementation.
*
* PureMVC does not rely upon underlying event models such
@@ -778,7 +776,7 @@ class Notification {
/**
* Get the body of the `Notification` instance.
*
- * @returns {Object}
+ * @returns {Object | null}
*/
get body() {
return this._body;
@@ -856,6 +854,7 @@ class Facade {
*
* @constructor
* @param {string} key
+ *
* @throws {Error} Error if instance for this Multiton key has already been constructed
*/
constructor(key) {
@@ -1020,7 +1019,7 @@ class Facade {
}
/**
- * Check if a Proxy is registered
+ * Check if a `Proxy` is registered
*
* @param {string} proxyName
* @returns {boolean} whether a Proxy is currently registered with the given `proxyName`.
@@ -1059,7 +1058,7 @@ class Facade {
}
/**
- * Check if a Mediator is registered or not
+ * Check if a `Mediator` is registered or not
*
* @param {string} mediatorName
* @returns {boolean} whether a Mediator is registered with the given `mediatorName`.
@@ -1099,7 +1098,7 @@ class Facade {
* compatibility, and to allow you to send custom
* notification classes using the facade.
*
- * Usually you should just call sendNotification
+ *
Usually you should just call `sendNotification`
* and pass the parameters, never having to
* construct the notification yourself.
*
@@ -1438,10 +1437,10 @@ class Mediator extends Notifier {
* Constructor.
*
* @constructor
- * @param {string} mediatorName
- * @param {Object} [viewComponent] viewComponent
+ * @param {string | null} [mediatorName=null]
+ * @param {Object | null} [viewComponent=null]
*/
- constructor(mediatorName, viewComponent = null) {
+ constructor(mediatorName = null, viewComponent = null) {
super();
this._mediatorName = mediatorName || Mediator.NAME;
this._viewComponent = viewComponent;
@@ -1502,7 +1501,7 @@ class Mediator extends Notifier {
* be defined in the subclass that casts the view
* object to a type, like this:
*
- * @returns {Object}
+ * @returns {Object | null}
*/
get viewComponent() {
return this._viewComponent;
@@ -1564,16 +1563,16 @@ class Proxy extends Notifier {
* Constructor
*
* @constructor
- * @param {string} proxyName
- * @param {Object} [data]
+ * @param {string | null} [proxyName=null]
+ * @param {Object | null} [data=null]
*/
- constructor(proxyName, data = null) {
+ constructor(proxyName = null, data = null) {
super();
/** @protected
* @type {string} */
this._proxyName = proxyName || Proxy.NAME;
/** @protected
- * @type {Object} */
+ * @type {Object | null} */
this._data = data;
}
@@ -1599,7 +1598,7 @@ class Proxy extends Notifier {
/**
* Get the data object
*
- * @returns {Object}
+ * @returns {Object | null}
*/
get data () {
return this._data;
diff --git a/bin/esm/index.min.js b/bin/esm/index.min.js
new file mode 100644
index 0000000..02b3b0d
--- /dev/null
+++ b/bin/esm/index.min.js
@@ -0,0 +1,2 @@
+class t{constructor(t=null,e=null){this._notifyMethod=t,this._notifyContext=e}notifyObserver(t){this._notifyMethod.call(this._notifyContext,t)}compareNotifyContext(t){return this._notifyContext===t}get notifyMethod(){return this._notifyMethod}set notifyMethod(t){this._notifyMethod=t}get notifyContext(){return this._notifyContext}set notifyContext(t){this._notifyContext=t}}class e{constructor(t){if(null!=e.instanceMap.get(t))throw new Error(e.MULTITON_MSG);this.multitonKey=t,e.instanceMap.set(this.multitonKey,this),this.mediatorMap=new Map,this.observerMap=new Map,this.initializeView()}initializeView(){}static getInstance(t,i){return null==e.instanceMap&&(e.instanceMap=new Map),null==e.instanceMap.get(t)&&e.instanceMap.set(t,i(t)),e.instanceMap.get(t)}registerObserver(t,e){if(null!=this.observerMap.get(t)){this.observerMap.get(t).push(e)}else this.observerMap.set(t,new Array(e))}notifyObservers(t){if(this.observerMap.has(t.name)){let e=this.observerMap.get(t.name).slice();for(let i=0;i0){let n=new t(e.handleNotification.bind(e),e);for(let t=0;tnew e(t)))}static getInstance(t,e){return null==i.instanceMap&&(i.instanceMap=new Map),null==i.instanceMap.get(t)&&i.instanceMap.set(t,e(t)),i.instanceMap.get(t)}executeCommand(t){let e=this.commandMap.get(t.name);if(null==e)return;let i=e();i.initializeNotifier(this.multitonKey),i.execute(t)}registerCommand(e,i){null==this.commandMap.get(e)&&this.view.registerObserver(e,new t(this.executeCommand,this)),this.commandMap.set(e,i)}hasCommand(t){return this.commandMap.has(t)}removeCommand(t){this.hasCommand(t)&&(this.view.removeObserver(t,this),this.commandMap.delete(t))}static removeController(t){i.instanceMap.delete(t)}static get MULTITON_MSG(){return"Controller instance for this Multiton key already constructed!"}}class n{constructor(t){if(null!=n.instanceMap.get(t))throw new Error(n.MULTITON_MSG);this.multitonKey=t,n.instanceMap.set(this.multitonKey,this),this.proxyMap=new Map,this.initializeModel()}initializeModel(){}static getInstance(t,e){return null==n.instanceMap&&(n.instanceMap=new Map),null==n.instanceMap.get(t)&&n.instanceMap.set(t,e(t)),n.instanceMap.get(t)}registerProxy(t){t.initializeNotifier(this.multitonKey),this.proxyMap.set(t.proxyName,t),t.onRegister()}retrieveProxy(t){return this.proxyMap.get(t)||null}hasProxy(t){return this.proxyMap.has(t)}removeProxy(t){let e=this.proxyMap.get(t);return null!=e&&(this.proxyMap.delete(t),e.onRemove()),e}static removeModel(t){n.instanceMap.delete(t)}static get MULTITON_MSG(){return"Model instance for this Multiton key already constructed!"}}class s{constructor(t,e=null,i=""){this._name=t,this._body=e,this._type=i}get name(){return this._name}get body(){return this._body}set body(t){this._body=t}get type(){return this._type}set type(t){this._type=t}toString(){let t="Notification Name: "+this.name;return t+="\nBody:"+(null==this.body?"null":this.body.toString()),t+="\nType:"+(null==this.type?"null":this.type),t}}class r{constructor(t){if(null!=r.instanceMap[t])throw new Error(r.MULTITON_MSG);this.initializeNotifier(t),r.instanceMap.set(this.multitonKey,this),this.initializeFacade()}initializeFacade(){this.initializeModel(),this.initializeController(),this.initializeView()}static getInstance(t,e){return null==r.instanceMap&&(r.instanceMap=new Map),null==r.instanceMap.get(t)&&r.instanceMap.set(t,e(t)),r.instanceMap.get(t)}initializeModel(){null==this.model&&(this.model=n.getInstance(this.multitonKey,(t=>new n(t))))}initializeController(){null==this.controller&&(this.controller=i.getInstance(this.multitonKey,(t=>new i(t))))}initializeView(){null==this.view&&(this.view=e.getInstance(this.multitonKey,(t=>new e(t))))}registerCommand(t,e){this.controller.registerCommand(t,e)}hasCommand(t){return this.controller.hasCommand(t)}removeCommand(t){this.controller.removeCommand(t)}registerProxy(t){this.model.registerProxy(t)}removeProxy(t){return this.model.removeProxy(t)}hasProxy(t){return this.model.hasProxy(t)}retrieveProxy(t){return this.model.retrieveProxy(t)}registerMediator(t){this.view.registerMediator(t)}removeMediator(t){return this.view.removeMediator(t)}hasMediator(t){return this.view.hasMediator(t)}retrieveMediator(t){return this.view.retrieveMediator(t)}sendNotification(t,e=null,i=""){this.notifyObservers(new s(t,e,i))}notifyObservers(t){this.view.notifyObservers(t)}initializeNotifier(t){this.multitonKey=t}static hasCore(t){return this.instanceMap.has(t)}static removeCore(t){null!=r.instanceMap.get(t)&&(n.removeModel(t),e.removeView(t),i.removeController(t),this.instanceMap.delete(t))}static get MULTITON_MSG(){return"Facade instance for this Multiton key already constructed!"}}class o{constructor(){}sendNotification(t,e=null,i=""){null!=this.facade&&this.facade.sendNotification(t,e,i)}initializeNotifier(t){this.multitonKey=t}get facade(){if(null==this.multitonKey)throw new Error(o.MULTITON_MSG);return r.getInstance(this.multitonKey,(t=>new r(t)))}static get MULTITON_MSG(){return"multitonKey for this Notifier not yet initialized!"}}class a extends o{constructor(){super()}execute(t){}}class l extends a{constructor(){super(),this.subCommands=[],this.initializeMacroCommand()}initializeMacroCommand(){}addSubCommand(t){this.subCommands.push(t)}execute(t){for(;this.subCommands.length>0;){let e=this.subCommands.shift()();e.initializeNotifier(this.multitonKey),e.execute(t)}}}class h extends o{constructor(t=null,e=null){super(),this._mediatorName=t||h.NAME,this._viewComponent=e}onRegister(){}onRemove(){}listNotificationInterests(){return[]}handleNotification(t){}get mediatorName(){return this._mediatorName}get viewComponent(){return this._viewComponent}set viewComponent(t){this._viewComponent=t}static get NAME(){return"Mediator"}}class c extends o{constructor(t=null,e=null){super(),this._proxyName=t||c.NAME,this._data=e}onRegister(){}onRemove(){}get proxyName(){return this._proxyName}get data(){return this._data}set data(t){this._data=t}static get NAME(){return"Proxy"}}export{i as Controller,r as Facade,l as MacroCommand,h as Mediator,n as Model,s as Notification,o as Notifier,t as Observer,c as Proxy,a as SimpleCommand,e as View};
+//# sourceMappingURL=index.min.js.map
diff --git a/bin/esm/index.min.js.map b/bin/esm/index.min.js.map
new file mode 100644
index 0000000..cf6946e
--- /dev/null
+++ b/bin/esm/index.min.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.min.js","sources":["../../src/patterns/observer/Observer.js","../../src/core/View.js","../../src/core/Controller.js","../../src/core/Model.js","../../src/patterns/observer/Notification.js","../../src/patterns/facade/Facade.js","../../src/patterns/observer/Notifier.js","../../src/patterns/command/SimpleCommand.js","../../src/patterns/command/MacroCommand.js","../../src/patterns/mediator/Mediator.js","../../src/patterns/proxy/Proxy.js"],"sourcesContent":["/*\n * Observer.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\n/**\n * A base `Observer` implementation.\n *\n * An `Observer` is an object that encapsulates information\n * about an interested object with a method that should\n * be called when a particular `Notification` is broadcast.
\n *\n * In PureMVC, the `Observer` class assumes these responsibilities:
\n *\n * \n * - Encapsulate the notification (callback) method of the interested object.
\n * - Encapsulate the notification context (this) of the interested object.
\n * - Provide methods for setting the notification method and context.
\n * - Provide a method for notifying the interested object.
\n *
\n *\n * @class Observer\n */\nclass Observer {\n\n /**\n * Constructor.\n *\n * The notification method on the interested object should take\n * one parameter of type `Notification`
\n *\n * @param {function(Notification):void | null} [notify = null]\n * @param {Object | null} [context = null]\n */\n constructor(notify = null, context = null) {\n this._notifyMethod = notify;\n this._notifyContext = context;\n }\n\n /**\n * Notify the interested object.\n *\n * @param {Notification} notification\n */\n notifyObserver(notification) {\n this._notifyMethod.call(this._notifyContext, notification);\n }\n\n /**\n * Compare an object to the notification context.\n *\n * @param {Object} notifyContext\n * @returns {boolean}\n */\n compareNotifyContext(notifyContext) {\n return this._notifyContext === notifyContext;\n }\n\n /**\n * Get the notification method.\n *\n * @returns {function(Notification):void}\n */\n get notifyMethod() {\n return this._notifyMethod\n }\n\n /**\n * Set the notification method.\n *\n * The notification method should take one parameter of type `Notification`.
\n *\n * @param {function(Notification): void} notifyMethod - The function to be called when a notification is received.\n */\n set notifyMethod(notifyMethod) {\n this._notifyMethod = notifyMethod;\n }\n\n /**\n * Get the notifyContext\n *\n * @returns {Object}\n */\n get notifyContext() {\n return this._notifyContext;\n }\n\n /**\n * Set the notification context.\n *\n * @param {Object} notifyContext\n */\n set notifyContext(notifyContext) {\n this._notifyContext = notifyContext;\n }\n\n}\nexport { Observer }\n","/*\n * View.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\nimport {Observer} from \"../patterns/observer/Observer.js\";\n\n/**\n * A Multiton `View` implementation.\n *\n * In PureMVC, the `View` class assumes these responsibilities:
\n *\n * \n * - Maintain a cache of `Mediator` instances.
\n * - Provide methods for registering, retrieving, and removing `Mediators`.
\n * - Notifying `Mediators` when they are registered or removed.
\n * - Managing the observer lists for each `Notification` in the application.
\n * - Providing a method for attaching `Observers` to a `Notification`'s observer list.
\n * - Providing a method for broadcasting a `Notification`.
\n * - Notifying the `Observers` of a given `Notification` when it broadcast.
\n *
\n *\n * @see Mediator Mediator\n * @see Observer Observer\n * @see Notification Notification\n *\n * @class View\n */\nclass View {\n\n /**\n * Constructor.\n *\n * This `View` implementation is a Multiton,\n * so you should not call the constructor\n * directly, but instead call the static Multiton\n * Factory method `View.getInstance( multitonKey )`\n *\n * @constructor\n * @param {string} key\n *\n * @throws {Error} Error if instance for this Multiton key has already been constructed\n */\n constructor(key) {\n if (View.instanceMap.get(key) != null) throw new Error(View.MULTITON_MSG);\n /** @protected\n * @type {string} */\n this.multitonKey = key;\n View.instanceMap.set(this.multitonKey, this);\n /** @protected\n * @type {Map} */\n this.mediatorMap = new Map();\n /** @protected\n * @type {Map.>} */\n this.observerMap = new Map();\n this.initializeView();\n }\n\n /**\n * Initialize the Multiton View instance.
\n *\n * Called automatically by the constructor, this\n * is your opportunity to initialize the Multiton\n * instance in your subclass without overriding the\n * constructor.
\n */\n initializeView() {\n\n }\n\n /**\n * View Multiton factory method.\n *\n * @static\n * @param {string} key\n * @param {function(string):View} factory\n * @returns {View} the Multiton instance of `View`\n */\n static getInstance(key, factory) {\n if (View.instanceMap == null)\n /** @static\n * @type {Map} */\n View.instanceMap = new Map();\n if (View.instanceMap.get(key) == null) View.instanceMap.set(key, factory(key));\n return View.instanceMap.get(key);\n }\n\n /**\n * Register an `Observer` to be notified\n * of `Notifications` with a given name.
\n *\n * @param {string} notificationName the name of the `Notifications` to notify this `Observer` of\n * @param {Observer} observer the `Observer` to register\n */\n registerObserver(notificationName, observer) {\n if (this.observerMap.get(notificationName) != null) {\n let observers = this.observerMap.get(notificationName);\n observers.push(observer);\n } else {\n this.observerMap.set(notificationName, new Array(observer));\n }\n }\n\n /**\n * Notify the `Observers` for a particular `Notification`.
\n *\n * All previously attached `Observers` for this `Notification`'s\n * list are notified and are passed a reference to the `Notification` in\n * the order in which they were registered.
\n *\n * @param {Notification} notification the `Notification` to notify `Observers` of.\n */\n notifyObservers(notification) {\n if (this.observerMap.has(notification.name)) {\n // Copy observers from reference array to working array,\n // since the reference array may change during the notification loop\n let observers = this.observerMap.get(notification.name).slice();\n\n // Notify Observers from the working array\n for(let i = 0; i < observers.length; i++) {\n observers[i].notifyObserver(notification);\n }\n }\n }\n\n /**\n * Remove the observer for a given notifyContext from an observer list for a given Notification name.
\n *\n * @param {string} notificationName which observer list to remove from\n * @param {Object} notifyContext remove the observer with this object as its notifyContext\n */\n removeObserver(notificationName, notifyContext) {\n // the observer list for the notification under inspection\n let observers = this.observerMap.get(notificationName);\n\n // find the observer for the notifyContext\n for (let i = 0; i < observers.length; i++) {\n if (observers[i].compareNotifyContext(notifyContext) === true) {\n // there can only be one Observer for a given notifyContext\n // in any given Observer list, so remove it and break\n observers.splice(i, 1);\n break;\n }\n }\n\n // Also, when a Notification's Observer list length falls to\n // zero, delete the notification key from the observer map\n if (observers.length === 0) {\n this.observerMap.delete(notificationName);\n }\n }\n\n /**\n * Register a `Mediator` instance with the `View`.\n *\n * Registers the `Mediator` so that it can be retrieved by name,\n * and further interrogates the `Mediator` for its\n * `Notification` interests.
\n *\n * If the `Mediator` returns any `Notification`\n * names to be notified about, an `Observer` is created encapsulating\n * the `Mediator` instance's `handleNotification` method\n * and registering it as an `Observer` for all `Notifications` the\n * `Mediator` is interested in.
\n *\n * @param {Mediator} mediator a reference to the `Mediator` instance\n */\n registerMediator(mediator) {\n // do not allow re-registration (you must to removeMediator fist)\n if (this.mediatorMap.has(mediator.mediatorName) !== false) return;\n\n mediator.initializeNotifier(this.multitonKey);\n\n // Register the Mediator for retrieval by name\n this.mediatorMap.set(mediator.mediatorName, mediator);\n\n // Get Notification interests, if any.\n let interests = mediator.listNotificationInterests();\n\n // Register Mediator as an observer for each notification of interests\n if (interests.length > 0) {\n // Create Observer referencing this mediator's handleNotification method\n let observer = new Observer(mediator.handleNotification.bind(mediator), mediator); // check bind\n\n // Register Mediator as Observer for its list of Notification interests\n for (let i = 0; i < interests.length; i++) {\n this.registerObserver(interests[i], observer);\n }\n }\n\n // alert the mediator that it has been registered\n mediator.onRegister();\n }\n\n /**\n * Retrieve a `Mediator` from the `View`.\n *\n * @param {string} mediatorName the name of the `Mediator` instance to retrieve.\n * @returns {Mediator} the `Mediator` instance previously registered with the given `mediatorName`.\n */\n retrieveMediator(mediatorName) {\n return this.mediatorMap.get(mediatorName) || null;\n }\n\n /**\n * Remove a `Mediator` from the `View`.\n *\n * @param {string} mediatorName name of the `Mediator` instance to be removed.\n * @returns {Mediator} the `Mediator` that was removed from the `View`\n */\n removeMediator(mediatorName) {\n // Retrieve the named mediator\n let mediator = this.mediatorMap.get(mediatorName);\n\n if (mediator) {\n // for every notification this mediator is interested in...\n let interests = mediator.listNotificationInterests();\n for (let i = 0; i < interests.length; i++) {\n // remove the observer linking the mediator\n // to the notification interest\n this.removeObserver(interests[i], mediator);\n }\n\n // remove the mediator from the map\n this.mediatorMap.delete(mediatorName);\n\n // alert the mediator that it has been removed\n mediator.onRemove();\n }\n\n return mediator;\n }\n\n /**\n * Check if a Mediator is registered or not\n *\n * @param {string} mediatorName\n * @returns {boolean} whether a Mediator is registered with the given `mediatorName`.\n */\n hasMediator(mediatorName) {\n return this.mediatorMap.has(mediatorName);\n }\n\n /**\n * Remove a View instance\n *\n * @static\n * @param key multitonKey of View instance to remove\n */\n static removeView(key) {\n this.instanceMap.delete(key);\n }\n\n /**\n * Message Constants\n *\n * @static\n * @type {string}\n */\n static get MULTITON_MSG() { return \"View instance for this Multiton key already constructed!\" };\n\n}\nexport { View }\n","/*\n * Controller.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\nimport {View} from \"./View.js\"\nimport {Observer} from \"../patterns/observer/Observer.js\";\n\n/**\n * A Multiton `Controller` implementation.\n *\n * In PureMVC, the `Controller` class follows the\n * 'Command and Controller' strategy, and assumes these\n * responsibilities:
\n *\n * \n * - Remembering which `Command`s\n * are intended to handle which `Notifications`.
\n * - Registering itself as an `Observer` with\n * the `View` for each `Notification`\n * that it has a `Command` mapping for.
\n * - Creating a new instance of the proper `Command`\n * to handle a given `Notification` when notified by the `View`.
\n * - Calling the `Command`'s `execute`\n * method, passing in the `Notification`.
\n *
\n *\n * Your application must register `Commands` with the\n * Controller.
\n *\n * The simplest way is to subclass `Facade`,\n * and use its `initializeController` method to add your\n * registrations.
\n *\n * @see View View\n * @see Observer Observer\n * @see Notification Notification\n * @see SimpleCommand SimpleCommand\n * @see MacroCommand MacroCommand\n *\n * @class Controller\n */\nclass Controller {\n\n /**\n * Constructor.\n *\n * This `Controller` implementation is a Multiton,\n * so you should not call the constructor\n * directly, but instead call the static Factory method,\n * passing the unique key for this instance\n * `Controller.getInstance( multitonKey )`
\n *\n * @constructor\n * @param {string} key\n *\n * @throws {Error} Error if instance for this Multiton key has already been constructed\n */\n constructor(key) {\n if (Controller.instanceMap[key] != null) throw new Error(Controller.MULTITON_MSG);\n /** @protected\n * @type {string} */\n this.multitonKey = key;\n Controller.instanceMap.set(this.multitonKey, this);\n /** @protected\n * @type {Map} */\n this.commandMap = new Map();\n this.initializeController();\n }\n\n /**\n * Initialize the Multiton `Controller` instance.\n *\n * Called automatically by the constructor.
\n *\n * Note that if you are using a subclass of `View`\n * in your application, you should also subclass `Controller`\n * and override the `initializeController` method in the\n * following way:
\n *\n * `\n *\t\t// ensure that the Controller is talking to my View implementation\n *\t\tinitializeController( )\n *\t\t{\n *\t\t\tthis.view = MyView.getInstance(this.multitonKey, (key) => new MyView(key));\n *\t\t}\n * `
\n *\n */\n initializeController() {\n /** @protected\n * @type {View} **/\n this.view = View.getInstance(this.multitonKey, (key) => new View(key));\n }\n\n /**\n * `Controller` Multiton Factory method.\n *\n * @static\n * @param {string} key\n * @param {function(string):Controller} factory\n * @returns {Controller} the Multiton instance of `Controller`\n */\n static getInstance(key, factory) {\n if (Controller.instanceMap == null)\n /** @static\n @type {Map} */\n Controller.instanceMap = new Map();\n if (Controller.instanceMap.get(key) == null) Controller.instanceMap.set(key, factory(key));\n return Controller.instanceMap.get(key);\n }\n\n /**\n * If a `Command` has previously been registered\n * to handle the given `Notification`, then it is executed.
\n *\n * @param {Notification} notification a `Notification`\n */\n executeCommand(notification) {\n let factory = this.commandMap.get(notification.name);\n if (factory == null) return;\n\n let commandInstance = factory();\n commandInstance.initializeNotifier(this.multitonKey);\n commandInstance.execute(notification);\n }\n\n /**\n * Register a particular `Command` class as the handler\n * for a particular `Notification`.
\n *\n * If an `Command` has already been registered to\n * handle `Notification`s with this name, it is no longer\n * used, the new `Command` is used instead.
\n *\n * The Observer for the new Command is only created if this the\n * first time a Command has been registered for this Notification name.
\n *\n * @param notificationName the name of the `Notification`\n * @param {function():SimpleCommand} factory\n */\n registerCommand(notificationName, factory) {\n if (this.commandMap.get(notificationName) == null) {\n this.view.registerObserver(notificationName, new Observer(this.executeCommand, this));\n }\n this.commandMap.set(notificationName, factory);\n }\n\n /**\n * Check if a Command is registered for a given Notification\n *\n * @param {string} notificationName\n * @return {boolean} whether a Command is currently registered for the given `notificationName`.\n */\n hasCommand(notificationName) {\n return this.commandMap.has(notificationName);\n }\n\n /**\n * Remove a previously registered `Command` to `Notification` mapping.\n *\n * @param {string} notificationName the name of the `Notification` to remove the `Command` mapping for\n */\n removeCommand(notificationName) {\n // if the Command is registered...\n if(this.hasCommand(notificationName)) {\n // remove the observer\n this.view.removeObserver(notificationName, this);\n\n // remove the command\n this.commandMap.delete(notificationName)\n }\n }\n\n /**\n * Remove a Controller instance\n *\n * @static\n * @param {string} key of Controller instance to remove\n */\n static removeController(key) {\n Controller.instanceMap.delete(key);\n }\n\n /**\n * Message Constants\n *\n * @static\n * @type {string}\n */\n static get MULTITON_MSG() { return \"Controller instance for this Multiton key already constructed!\" };\n}\nexport { Controller }\n","/*\n * Model.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\n/**\n * A Multiton `Model` implementation.\n *\n * In PureMVC, the `Model` class provides\n * access to model objects (Proxies) by named lookup.\n *\n *
The `Model` assumes these responsibilities:
\n *\n * \n * - Maintain a cache of `Proxy` instances.
\n * - Provide methods for registering, retrieving, and removing\n * `Proxy` instances.
\n *
\n *\n * Your application must register `Proxy` instances\n * with the `Model`. Typically, you use an\n * `Command` to create and register `Proxy`\n * instances once the `Facade` has initialized the Core\n * actors.
\n *\n * @see Proxy Proxy\n *\n * @class Model\n */\nclass Model {\n\n /**\n * Constructor.\n *\n * This `Model` implementation is a Multiton,\n * so you should not call the constructor\n * directly, but instead call the static Multiton\n * Factory method `Model.getInstance( multitonKey )`\n *\n * @constructor\n * @param {string} key\n *\n * @throws {Error} Error if instance for this Multiton key instance has already been constructed\n */\n constructor(key) {\n if (Model.instanceMap.get(key) != null) throw new Error(Model.MULTITON_MSG);\n /** @protected\n * @type {string} */\n this.multitonKey = key;\n Model.instanceMap.set(this.multitonKey, this);\n /** @protected\n * @type {Map} */\n this.proxyMap = new Map();\n this.initializeModel();\n }\n\n /**\n * Initialize the `Model` instance.\n *\n * Called automatically by the constructor, this\n * is your opportunity to initialize the Multiton\n * instance in your subclass without overriding the\n * constructor.
\n *\n */\n initializeModel() {\n\n }\n\n /**\n * `Model` Multiton Factory method.\n *\n * @static\n * @param {string} key\n * @param {function(string):Model} factory\n * @returns {Model} the instance for this Multiton key\n */\n static getInstance(key, factory) {\n if (Model.instanceMap == null)\n /** @static\n @type {Map} */\n Model.instanceMap = new Map();\n if (Model.instanceMap.get(key) == null) Model.instanceMap.set(key, factory(key));\n return Model.instanceMap.get(key);\n }\n\n /**\n * Register a `Proxy` with the `Model`.\n *\n * @param {Proxy} proxy a `Proxy` to be held by the `Model`.\n */\n registerProxy(proxy) {\n proxy.initializeNotifier(this.multitonKey);\n this.proxyMap.set(proxy.proxyName, proxy);\n proxy.onRegister();\n }\n\n /**\n * Retrieve a `Proxy` from the `Model`.\n *\n * @param {string} proxyName\n * @returns {Proxy} the `Proxy` instance previously registered with the given `proxyName`.\n */\n retrieveProxy(proxyName) {\n return this.proxyMap.get(proxyName) || null;\n }\n\n /**\n * Check if a Proxy is registered\n *\n * @param {string} proxyName\n * @returns {boolean} whether a Proxy is currently registered with the given `proxyName`.\n */\n hasProxy(proxyName) {\n return this.proxyMap.has(proxyName);\n }\n\n /**\n * Remove a `Proxy` from the `Model`.\n *\n * @param {string} proxyName name of the `Proxy` instance to be removed.\n * @returns {Proxy} the `Proxy` that was removed from the `Model`\n */\n removeProxy(proxyName) {\n let proxy = this.proxyMap.get(proxyName);\n if (proxy != null) {\n this.proxyMap.delete(proxyName);\n proxy.onRemove();\n }\n return proxy;\n }\n\n /**\n * Remove a Model instance\n *\n * @static\n * @param key\n */\n static removeModel(key) {\n Model.instanceMap.delete(key);\n }\n\n /**\n * @static\n * @type {string}\n */\n static get MULTITON_MSG() { return \"Model instance for this Multiton key already constructed!\" };\n}\nexport { Model }\n","/*\n * Notification.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\n/**\n * A base `Notification` implementation.\n *\n * PureMVC does not rely upon underlying event models such\n * as the one provided with Flash, and ActionScript 3 does\n * not have an inherent event model.
\n *\n * The Observer Pattern as implemented within PureMVC exists\n * to support event-driven communication between the\n * application and the actors of the MVC triad.
\n *\n * Notifications are not meant to be a replacement for Events\n * in Flex/Flash/Apollo. Generally, `Mediator` implementors\n * place event listeners on their view components, which they\n * then handle in the usual way. This may lead to the broadcast of `Notification`s to\n * trigger `Command`s or to communicate with other `Mediators`. `Proxy` and `Command`\n * instances communicate with each other and `Mediator`s\n * by broadcasting `Notification`s.
\n *\n * A key difference between Flash `Event`s and PureMVC\n * `Notification`s is that `Event`s follow the\n * 'Chain of Responsibility' pattern, 'bubbling' up the display hierarchy\n * until some parent component handles the `Event`, while\n * PureMVC `Notification`s follow a 'Publish/Subscribe'\n * pattern. PureMVC classes need not be related to each other in a\n * parent/child relationship in order to communicate with one another\n * using `Notification`s.
\n *\n * @class Notification\n */\nclass Notification {\n\n /**\n * Constructor.\n *\n * @constructor\n * @param {string} name - The name of the notification.\n * @param {Object|null} [body=null] - The body of the notification, defaults to `null`.\n * @param {string} [type=\"\"] - The type of the notification, defaults to an empty string.\n */\n constructor(name, body = null, type = \"\") {\n this._name = name;\n this._body = body;\n this._type = type;\n }\n\n /**\n * Get the name of the `Notification` instance.\n *\n * @returns {string}\n */\n get name() {\n return this._name;\n }\n\n /**\n * Get the body of the `Notification` instance.\n *\n * @returns {Object | null}\n */\n get body() {\n return this._body;\n }\n\n /**\n * Set the body of the `Notification` instance.\n *\n * @param {Object|null} body\n */\n set body(body) {\n this._body = body;\n }\n\n /**\n * Get the type of the `Notification` instance.\n *\n * @returns {string}\n */\n get type() {\n return this._type;\n }\n\n /**\n * Set the type of the `Notification` instance.\n *\n * @param {string} type\n */\n set type(type) {\n this._type = type;\n }\n\n /**\n * Get the string representation of the `Notification` instance.\n *\n * @returns {string}\n */\n toString() {\n let str= \"Notification Name: \" + this.name;\n str+= \"\\nBody:\" + ((this.body == null ) ? \"null\" : this.body.toString());\n str+= \"\\nType:\" + ((this.type == null ) ? \"null\" : this.type);\n return str;\n }\n\n}\nexport { Notification }\n","/*\n * Facade.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\nimport {Controller} from \"../../core/Controller.js\";\nimport {Model} from \"../../core/Model.js\";\nimport {View} from \"../../core/View.js\";\nimport {Notification} from \"../observer/Notification.js\";\n\n/**\n * A base Multiton `Facade` implementation.\n *\n * @see Model Model\n * @see View View\n * @see Controller Controller\n *\n * @class Facade\n */\nclass Facade {\n\n /**\n * Constructor.\n *\n * This `Facade` implementation is a Multiton,\n * so you should not call the constructor\n * directly, but instead call the static Factory method,\n * passing the unique key for this instance\n * `Facade.getInstance( multitonKey )`
\n *\n * @constructor\n * @param {string} key\n *\n * @throws {Error} Error if instance for this Multiton key has already been constructed\n */\n constructor(key) {\n if (Facade.instanceMap[key] != null) throw new Error(Facade.MULTITON_MSG);\n this.initializeNotifier(key);\n Facade.instanceMap.set(this.multitonKey, this);\n this.initializeFacade();\n }\n\n /**\n * Initialize the Multiton `Facade` instance.\n *\n * Called automatically by the constructor. Override in your\n * subclass to do any subclass specific initializations. Be\n * sure to call `super.initializeFacade()`, though.
\n */\n initializeFacade() {\n this.initializeModel();\n this.initializeController();\n this.initializeView();\n }\n\n /**\n * Facade Multiton Factory method\n *\n * @static\n * @param {string} key\n * @param {function(string):Facade} factory\n * @returns {Facade} the Multiton instance of the Facade\n */\n static getInstance(key, factory) {\n if (Facade.instanceMap == null)\n /** @static\n * @type {Map} */\n Facade.instanceMap = new Map();\n if (Facade.instanceMap.get(key) == null) Facade.instanceMap.set(key, factory(key));\n return Facade.instanceMap.get(key);\n }\n\n /**\n * Initialize the `Model`.\n *\n * Called by the `initializeFacade` method.\n * Override this method in your subclass of `Facade`\n * if one or both of the following are true:
\n *\n * \n * - You wish to initialize a different `Model`.
\n * - You have `Proxy`s to register with the Model that do not\n * retrieve a reference to the Facade at construction time.`
\n *
\n *\n * If you don't want to initialize a different `Model`,\n * call `super.initializeModel()` at the beginning of your\n * method, then register `Proxy`s.\n *\n * Note: This method is rarely overridden; in practice you are more\n * likely to use a `Command` to create and register `Proxy`s\n * with the `Model`, since `Proxy`s with mutable data will likely\n * need to send `Notification`s and thus will likely want to fetch a reference to\n * the `Facade` during their construction.
\n */\n initializeModel() {\n if (this.model != null) return;\n this.model = Model.getInstance(this.multitonKey, key => new Model(key));\n }\n\n /**\n * Initialize the `Controller`.\n *\n * Called by the `initializeFacade` method.\n * Override this method in your subclass of `Facade`\n * if one or both of the following are true:
\n *\n * \n * - You wish to initialize a different `Controller`.
\n * - You have `Commands` to register with the `Controller` at startup.`.
\n *
\n *\n * If you don't want to initialize a different `Controller`,\n * call `super.initializeController()` at the beginning of your\n * method, then register `Command`s.
\n */\n initializeController() {\n if (this.controller != null) return;\n this.controller = Controller.getInstance(this.multitonKey, key => new Controller(key));\n }\n\n /**\n * Initialize the `View`.\n *\n * Called by the `initializeFacade` method.\n * Override this method in your subclass of `Facade`\n * if one or both of the following are true:
\n *\n * \n * - You wish to initialize a different `View`.
\n * - You have `Observers` to register with the `View`
\n *
\n *\n * If you don't want to initialize a different `View`,\n * call `super.initializeView()` at the beginning of your\n * method, then register `Mediator` instances.
\n *\n * Note: This method is rarely overridden; in practice you are more\n * likely to use a `Command` to create and register `Mediator`s\n * with the `View`, since `Mediator` instances will need to send\n * `Notification`s and thus will likely want to fetch a reference\n * to the `Facade` during their construction.
\n */\n initializeView() {\n if (this.view != null) return;\n this.view = View.getInstance(this.multitonKey, key => new View(key));\n }\n\n /**\n * Register a `Command` with the `Controller` by Notification name.\n *\n * @param {string} notificationName the name of the `Notification` to associate the `Command` with\n * @param {function():SimpleCommand} factory a reference to the factory of the `Command`\n */\n registerCommand(notificationName, factory) {\n this.controller.registerCommand(notificationName, factory);\n }\n\n /**\n * Check if a Command is registered for a given Notification\n *\n * @param {string} notificationName\n * @returns {boolean} whether a Command is currently registered for the given `notificationName`.\n */\n hasCommand(notificationName) {\n return this.controller.hasCommand(notificationName);\n }\n\n /**\n * Remove a previously registered `Command` to `Notification` mapping from the Controller.\n *\n * @param {string} notificationName the name of the `Notification` to remove the `Command` mapping for\n */\n removeCommand(notificationName) {\n this.controller.removeCommand(notificationName);\n }\n\n /**\n * Register a `Proxy` with the `Model` by name.\n *\n * @param {Proxy} proxy the `Proxy` instance to be registered with the `Model`.\n */\n registerProxy(proxy) {\n this.model.registerProxy(proxy);\n }\n\n /**\n * Remove a `Proxy` from the `Model` by name.\n *\n * @param {string} proxyName the `Proxy` to remove from the `Model`.\n * @returns {Proxy} the `Proxy` that was removed from the `Model`\n */\n removeProxy(proxyName) {\n return this.model.removeProxy(proxyName);\n }\n\n /**\n * Check if a `Proxy` is registered\n *\n * @param {string} proxyName\n * @returns {boolean} whether a Proxy is currently registered with the given `proxyName`.\n */\n hasProxy(proxyName) {\n return this.model.hasProxy(proxyName);\n }\n\n /**\n * Retrieve a `Proxy` from the `Model` by name.\n *\n * @param {string} proxyName the name of the proxy to be retrieved.\n * @returns {Proxy} the `Proxy` instance previously registered with the given `proxyName`.\n */\n retrieveProxy(proxyName) {\n return this.model.retrieveProxy(proxyName);\n }\n\n /**\n * Register a `Mediator` with the `View`.\n *\n * @param {Mediator} mediator a reference to the `Mediator`\n */\n registerMediator(mediator) {\n this.view.registerMediator(mediator);\n }\n\n /**\n * Remove a `Mediator` from the `View`.\n *\n * @param {string} mediatorName name of the `Mediator` to be removed.\n * @returns {Mediator} the `Mediator` that was removed from the `View`\n */\n removeMediator(mediatorName) {\n return this.view.removeMediator(mediatorName);\n }\n\n /**\n * Check if a `Mediator` is registered or not\n *\n * @param {string} mediatorName\n * @returns {boolean} whether a Mediator is registered with the given `mediatorName`.\n */\n hasMediator(mediatorName) {\n return this.view.hasMediator(mediatorName);\n }\n\n /**\n * Retrieve a `Mediator` from the `View`.\n *\n * @param {string} mediatorName\n * @returns {Mediator} the `Mediator` previously registered with the given `mediatorName`.\n */\n retrieveMediator(mediatorName) {\n return this.view.retrieveMediator(mediatorName);\n }\n\n /**\n * Create and send an `Notification`.\n *\n * Keeps us from having to construct new notification\n * instances in our implementation code.
\n *\n * @param {string} notificationName the name of the notification to send\n * @param {Object} [body] body the body of the notification (optional)\n * @param {string} [type] type the type of the notification (optional)\n */\n sendNotification(notificationName, body = null, type = \"\") {\n this.notifyObservers(new Notification(notificationName, body, type));\n }\n\n /**\n * Notify `Observer`s.\n *\n * This method is left public mostly for backward\n * compatibility, and to allow you to send custom\n * notification classes using the facade.
\n *\n * Usually you should just call `sendNotification`\n * and pass the parameters, never having to\n * construct the notification yourself.
\n *\n * @param {Notification} notification the `Notification` to have the `View` notify `Observers` of.\n */\n notifyObservers(notification) {\n this.view.notifyObservers(notification);\n }\n\n /**\n * Set the Multiton key for this facade instance.\n *\n * Not called directly, but instead from the\n * constructor when getInstance is invoked.\n * It is necessary to be public in order to\n * implement Notifier.
\n */\n initializeNotifier(key) {\n this.multitonKey = key;\n }\n\n /**\n * Check if a Core is registered or not\n *\n * @static\n * @param {string} key the multiton key for the Core in question\n * @returns {boolean} whether a Core is registered with the given `key`.\n */\n static hasCore(key) {\n return this.instanceMap.has(key);\n }\n\n /**\n * Remove a Core.\n *\n * Remove the Model, View, Controller and Facade\n * instances for the given key.
\n *\n * @static\n * @param {string} key multitonKey of the Core to remove\n */\n static removeCore(key) {\n if (Facade.instanceMap.get(key) == null) return;\n Model.removeModel(key);\n View.removeView(key);\n Controller.removeController(key);\n this.instanceMap.delete(key);\n }\n\n /**\n * Message Constants\n *\n * @static\n * @returns {string}\n */\n static get MULTITON_MSG() {return \"Facade instance for this Multiton key already constructed!\"};\n}\nexport { Facade }\n","/*\n * Notifier.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\nimport {Facade} from \"../facade/Facade.js\";\n\n/**\n * A Base `Notifier` implementation.\n *\n * `MacroCommand, Command, Mediator` and `Proxy`\n * all have a need to send `Notifications`.
\n *\n *
The `Notifier` interface provides a common method called\n * `sendNotification` that relieves implementation code of\n * the necessity to actually construct `Notifications`.
\n *\n * The `Notifier` class, which all the above-mentioned classes\n * extend, provides an initialized reference to the `Facade`\n * Multiton, which is required for the convenience method\n * for sending `Notifications`, but also eases implementation as these\n * classes have frequent `Facade` interactions and usually require\n * access to the facade anyway.
\n *\n * NOTE: In the MultiCore version of the framework, there is one caveat to\n * notifiers, they cannot send notifications or reach the facade until they\n * have a valid multitonKey.
\n *\n * The multitonKey is set:\n * * on a Command when it is executed by the Controller\n * * on a Mediator is registered with the View\n * * on a Proxy is registered with the Model.\n *\n * @see Proxy Proxy\n * @see Facade Facade\n * @see Mediator Mediator\n * @see MacroCommand MacroCommand\n * @see SimpleCommand SimpleCommand\n *\n * @class Notifier\n */\nclass Notifier {\n\n constructor() {}\n\n /**\n * Create and send an `Notification`.\n *\n * Keeps us from having to construct new Notification\n * instances in our implementation code.
\n *\n * @param {string} notificationName\n * @param {Object} [body] body\n * @param {string} [type] type\n */\n sendNotification (notificationName, body = null, type = \"\") {\n if (this.facade != null) {\n this.facade.sendNotification(notificationName, body, type);\n }\n }\n\n /**\n * Initialize this Notifier instance.\n *\n * This is how a Notifier gets its multitonKey.\n * Calls to sendNotification or to access the\n * facade will fail until after this method\n * has been called.
\n *\n * Mediators, Commands or Proxies may override\n * this method in order to send notifications\n * or access the Multiton Facade instance as\n * soon as possible. They CANNOT access the facade\n * in their constructors, since this method will not\n * yet have been called.
\n *\n * @param {string} key the multitonKey for this Notifier to use\n */\n initializeNotifier(key) {\n this.multitonKey = key;\n }\n\n /**\n * Return the Multiton Facade instance\n *\n * @typedef {Facade} Facade\n *\n * @throws {Error}\n */\n get facade() {\n if (this.multitonKey == null) throw new Error(Notifier.MULTITON_MSG);\n return Facade.getInstance(this.multitonKey, key => new Facade(key));\n }\n\n /**\n * Message Constants\n *\n * @static\n * @returns {string}\n */\n static get MULTITON_MSG() { return \"multitonKey for this Notifier not yet initialized!\" }\n}\nexport { Notifier }\n","/*\n * SimpleCommand.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\nimport {Notifier} from \"../observer/Notifier.js\";\n\n/**\n * A base `Command` implementation.\n *\n * Your subclass should override the `execute`\n * method where your business logic will handle the `Notification`.
\n *\n * @see Controller Controller\n * @see Notification Notification\n * @see MacroCommand MacroCommand\n *\n * @class SimpleCommand\n */\nclass SimpleCommand extends Notifier {\n\n constructor() {\n super();\n }\n\n /**\n * Fulfill the use-case initiated by the given `Notification`.\n *\n * In the Command Pattern, an application use-case typically\n * begins with some user action, which results in a `Notification` being broadcast, which\n * is handled by business logic in the `execute` method of an\n * `Command`.
\n *\n * @param {Notification} notification\n */\n execute(notification) {\n\n }\n\n}\nexport { SimpleCommand }\n","/*\n * MacroCommand.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\nimport {SimpleCommand} from \"./SimpleCommand.js\";\n\n/**\n * A base `Command` implementation that executes other `Command`s.\n *\n * A `MacroCommand` maintains a list of\n * `Command` Class references called SubCommands.
\n *\n * When `execute` is called, the `MacroCommand`\n * instantiates and calls `execute` on each of its SubCommands turn.\n * Each SubCommand will be passed a reference to the original\n * `Notification` that was passed to the `MacroCommand`'s\n * `execute` method.
\n *\n * Unlike `SimpleCommand`, your subclass\n * should not override `execute`, but instead, should\n * override the `initializeMacroCommand` method,\n * calling `addSubCommand` once for each SubCommand\n * to be executed.
\n *\n * @see Controller Controller\n * @see Notification Notification\n * @see SimpleCommand SimpleCommand\n *\n * @class MacroCommand\n */\nclass MacroCommand extends SimpleCommand {\n\n /**\n * Constructor.\n *\n * You should not need to define a constructor,\n * instead, override the `initializeMacroCommand`\n * method.
\n *\n * If your subclass does define a constructor, be\n * sure to call `super()`.
\n *\n * @constructor\n */\n constructor() {\n super();\n /** @protected\n * @type {Array.} */\n this.subCommands = [];\n this.initializeMacroCommand();\n }\n\n /**\n * Initialize the `MacroCommand`.\n *\n * In your subclass, override this method to\n * initialize the `MacroCommand`'s SubCommand\n * list with `Command` class references like\n * this:
\n *\n * `\n *\t\t// Initialize MyMacroCommand\n *\t\tinitializeMacroCommand() {\n *\t\t\tthis.addSubCommand(() => new app.FirstCommand());\n *\t\t\tthis.addSubCommand(() => new app.SecondCommand());\n *\t\t\tthis.addSubCommand(() => new app.ThirdCommand());\n *\t\t}\n * `
\n *\n * Note that SubCommands may be any `Command` implementor,\n * `MacroCommand`s or `SimpleCommands` are both acceptable.\n */\n initializeMacroCommand() {\n\n }\n\n /**\n * Add a SubCommand.\n *\n *
The SubCommands will be called in First In/First Out (FIFO)\n * order.
\n *\n * @param {function():SimpleCommand} factory\n */\n addSubCommand(factory) {\n this.subCommands.push(factory);\n }\n\n /**\n * Execute this `MacroCommand`'s SubCommands.\n *\n * The SubCommands will be called in First In/First Out (FIFO)\n * order.
\n *\n * @param {Notification} notification\n */\n execute(notification) {\n while(this.subCommands.length > 0) {\n let factory = this.subCommands.shift();\n let commandInstance = factory();\n commandInstance.initializeNotifier(this.multitonKey);\n commandInstance.execute(notification);\n }\n }\n\n}\nexport { MacroCommand }\n","/*\n * Mediator.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\nimport {Notifier} from \"../observer/Notifier.js\";\n\n/**\n * A base `Mediator` implementation.\n *\n * @see View View\n *\n * @class Mediator\n */\nclass Mediator extends Notifier {\n\n /**\n * Constructor.\n *\n * @constructor\n * @param {string | null} [mediatorName=null]\n * @param {Object | null} [viewComponent=null]\n */\n constructor(mediatorName = null, viewComponent = null) {\n super();\n this._mediatorName = mediatorName || Mediator.NAME;\n this._viewComponent = viewComponent;\n }\n\n /**\n * Called by the View when the Mediator is registered\n */\n onRegister() {\n\n }\n\n /**\n * Called by the View when the Mediator is removed\n */\n onRemove() {\n\n }\n\n /**\n * List the `Notification` names this\n * `Mediator` is interested in being notified of.\n *\n * @returns {string[]}\n */\n listNotificationInterests() {\n return [];\n }\n\n /**\n * Handle `Notification`s.\n *\n * \n * Typically this will be handled in a switch statement,\n * with one 'case' entry per `Notification`\n * the `Mediator` is interested in.\n *\n * @param {Notification} notification\n */\n handleNotification(notification) {\n\n }\n\n /**\n * the mediator name\n *\n * @returns {string}\n */\n get mediatorName() {\n return this._mediatorName;\n }\n\n /**\n * Get the `Mediator`'s view component.\n *\n *
\n * Additionally, an implicit getter will usually\n * be defined in the subclass that casts the view\n * object to a type, like this:
\n *\n * @returns {Object | null}\n */\n get viewComponent() {\n return this._viewComponent;\n }\n\n /**\n * Set the `Mediator`'s view component.\n *\n * @param {Object} viewComponent\n */\n set viewComponent(viewComponent) {\n this._viewComponent = viewComponent;\n }\n\n /**\n * The name of the `Mediator`.\n *\n * Typically, a `Mediator` will be written to serve\n * one specific control or group controls and so,\n * will not have a need to be dynamically named.
\n *\n * @static\n * @returns {string}\n */\n static get NAME() { return \"Mediator\" }\n}\nexport { Mediator }\n","/*\n * Proxy.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\nimport {Notifier} from \"../observer/Notifier.js\";\n\n/**\n * A base `Proxy` implementation.\n *\n * In PureMVC, `Proxy` classes are used to manage parts of the\n * application's data model.
\n *\n * A `Proxy` might simply manage a reference to a local data object,\n * in which case interacting with it might involve setting and\n * getting of its data in synchronous fashion.
\n *\n * `Proxy` classes are also used to encapsulate the application's\n * interaction with remote services to save or retrieve data, in which case,\n * we adopt an asynchronous idiom; setting data (or calling a method) on the\n * `Proxy` and listening for a `Notification` to be sent\n * when the `Proxy` has retrieved the data from the service.
\n *\n * @see Model Model\n *\n * @class Proxy\n */\nclass Proxy extends Notifier {\n /**\n * Constructor\n *\n * @constructor\n * @param {string | null} [proxyName=null]\n * @param {Object | null} [data=null]\n */\n constructor(proxyName = null, data = null) {\n super();\n /** @protected\n * @type {string} */\n this._proxyName = proxyName || Proxy.NAME;\n /** @protected\n * @type {Object | null} */\n this._data = data;\n }\n\n /**\n * Called by the Model when the Proxy is registered\n */\n onRegister() {}\n\n /**\n * Called by the Model when the Proxy is removed\n */\n onRemove() {}\n\n /**\n * Get the proxy name\n *\n * @returns {string}\n */\n get proxyName() {\n return this._proxyName;\n }\n\n /**\n * Get the data object\n *\n * @returns {Object | null}\n */\n get data () {\n return this._data;\n }\n\n /**\n * Set the data object\n *\n * @param {Object} data\n */\n set data(data) {\n this._data = data;\n }\n\n /**\n *\n * @static\n * @returns {string}\n */\n static get NAME() { return \"Proxy\" }\n}\nexport { Proxy }\n"],"names":["Observer","constructor","notify","context","this","_notifyMethod","_notifyContext","notifyObserver","notification","call","compareNotifyContext","notifyContext","notifyMethod","View","key","instanceMap","get","Error","MULTITON_MSG","multitonKey","set","mediatorMap","Map","observerMap","initializeView","getInstance","factory","registerObserver","notificationName","observer","push","Array","notifyObservers","has","name","observers","slice","i","length","removeObserver","splice","delete","registerMediator","mediator","mediatorName","initializeNotifier","interests","listNotificationInterests","handleNotification","bind","onRegister","retrieveMediator","removeMediator","onRemove","hasMediator","removeView","Controller","commandMap","initializeController","view","executeCommand","commandInstance","execute","registerCommand","hasCommand","removeCommand","removeController","Model","proxyMap","initializeModel","registerProxy","proxy","proxyName","retrieveProxy","hasProxy","removeProxy","removeModel","Notification","body","type","_name","_body","_type","toString","str","Facade","initializeFacade","model","controller","sendNotification","hasCore","removeCore","Notifier","facade","SimpleCommand","super","MacroCommand","subCommands","initializeMacroCommand","addSubCommand","shift","Mediator","viewComponent","_mediatorName","NAME","_viewComponent","Proxy","data","_proxyName","_data"],"mappings":"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"}
\ No newline at end of file
diff --git a/bin/esm/puremvc.min.js b/bin/esm/puremvc.min.js
deleted file mode 100644
index e7cd717..0000000
--- a/bin/esm/puremvc.min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-class t{constructor(t,e){this._notifyMethod=t,this._notifyContext=e}notifyObserver(t){this._notifyMethod.call(this._notifyContext,t)}compareNotifyContext(t){return this._notifyContext===t}get notifyMethod(){return this._notifyMethod}set notifyMethod(t){this._notifyMethod=t}get notifyContext(){return this._notifyContext}set notifyContext(t){this._notifyContext=t}}class e{constructor(t){if(null!=e.instanceMap.get(t))throw new Error(e.MULTITON_MSG);this.multitonKey=t,e.instanceMap.set(this.multitonKey,this),this.mediatorMap=new Map,this.observerMap=new Map,this.initializeView()}initializeView(){}static getInstance(t,i){return null==e.instanceMap&&(e.instanceMap=new Map),null==e.instanceMap.get(t)&&e.instanceMap.set(t,i(t)),e.instanceMap.get(t)}registerObserver(t,e){if(null!=this.observerMap.get(t)){this.observerMap.get(t).push(e)}else this.observerMap.set(t,new Array(e))}notifyObservers(t){if(this.observerMap.has(t.name)){let e=this.observerMap.get(t.name).slice();for(let i=0;i0){let n=new t(e.handleNotification.bind(e),e);for(let t=0;tnew e(t)))}static getInstance(t,e){return null==i.instanceMap&&(i.instanceMap=new Map),null==i.instanceMap.get(t)&&i.instanceMap.set(t,e(t)),i.instanceMap.get(t)}executeCommand(t){let e=this.commandMap.get(t.name);if(null==e)return;let i=e();i.initializeNotifier(this.multitonKey),i.execute(t)}registerCommand(e,i){null==this.commandMap.get(e)&&this.view.registerObserver(e,new t(this.executeCommand,this)),this.commandMap.set(e,i)}hasCommand(t){return this.commandMap.has(t)}removeCommand(t){this.hasCommand(t)&&(this.view.removeObserver(t,this),this.commandMap.delete(t))}static removeController(t){i.instanceMap.delete(t)}static get MULTITON_MSG(){return"Controller instance for this Multiton key already constructed!"}}class n{constructor(t){if(null!=n.instanceMap.get(t))throw new Error(n.MULTITON_MSG);this.multitonKey=t,n.instanceMap.set(this.multitonKey,this),this.proxyMap=new Map,this.initializeModel()}initializeModel(){}static getInstance(t,e){return null==n.instanceMap&&(n.instanceMap=new Map),null==n.instanceMap.get(t)&&n.instanceMap.set(t,e(t)),n.instanceMap.get(t)}registerProxy(t){t.initializeNotifier(this.multitonKey),this.proxyMap.set(t.proxyName,t),t.onRegister()}retrieveProxy(t){return this.proxyMap.get(t)||null}hasProxy(t){return this.proxyMap.has(t)}removeProxy(t){let e=this.proxyMap.get(t);return null!=e&&(this.proxyMap.delete(t),e.onRemove()),e}static removeModel(t){n.instanceMap.delete(t)}static get MULTITON_MSG(){return"Model instance for this Multiton key already constructed!"}}class s{constructor(t,e=null,i=""){this._name=t,this._body=e,this._type=i}get name(){return this._name}get body(){return this._body}set body(t){this._body=t}get type(){return this._type}set type(t){this._type=t}toString(){let t="Notification Name: "+this.name;return t+="\nBody:"+(null==this.body?"null":this.body.toString()),t+="\nType:"+(null==this.type?"null":this.type),t}}class r{constructor(t){if(null!=r.instanceMap[t])throw new Error(r.MULTITON_MSG);this.initializeNotifier(t),r.instanceMap.set(this.multitonKey,this),this.initializeFacade()}initializeFacade(){this.initializeModel(),this.initializeController(),this.initializeView()}static getInstance(t,e){return null==r.instanceMap&&(r.instanceMap=new Map),null==r.instanceMap.get(t)&&r.instanceMap.set(t,e(t)),r.instanceMap.get(t)}initializeModel(){null==this.model&&(this.model=n.getInstance(this.multitonKey,(t=>new n(t))))}initializeController(){null==this.controller&&(this.controller=i.getInstance(this.multitonKey,(t=>new i(t))))}initializeView(){null==this.view&&(this.view=e.getInstance(this.multitonKey,(t=>new e(t))))}registerCommand(t,e){this.controller.registerCommand(t,e)}hasCommand(t){return this.controller.hasCommand(t)}removeCommand(t){this.controller.removeCommand(t)}registerProxy(t){this.model.registerProxy(t)}removeProxy(t){return this.model.removeProxy(t)}hasProxy(t){return this.model.hasProxy(t)}retrieveProxy(t){return this.model.retrieveProxy(t)}registerMediator(t){this.view.registerMediator(t)}removeMediator(t){return this.view.removeMediator(t)}hasMediator(t){return this.view.hasMediator(t)}retrieveMediator(t){return this.view.retrieveMediator(t)}sendNotification(t,e=null,i=""){this.notifyObservers(new s(t,e,i))}notifyObservers(t){this.view.notifyObservers(t)}initializeNotifier(t){this.multitonKey=t}static hasCore(t){return this.instanceMap.has(t)}static removeCore(t){null!=r.instanceMap.get(t)&&(n.removeModel(t),e.removeView(t),i.removeController(t),this.instanceMap.delete(t))}static get MULTITON_MSG(){return"Facade instance for this Multiton key already constructed!"}}class o{constructor(){}sendNotification(t,e=null,i=""){null!=this.facade&&this.facade.sendNotification(t,e,i)}initializeNotifier(t){this.multitonKey=t}get facade(){if(null==this.multitonKey)throw new Error(o.MULTITON_MSG);return r.getInstance(this.multitonKey,(t=>new r(t)))}static get MULTITON_MSG(){return"multitonKey for this Notifier not yet initialized!"}}class a extends o{constructor(){super()}execute(t){}}class l extends a{constructor(){super(),this.subCommands=[],this.initializeMacroCommand()}initializeMacroCommand(){}addSubCommand(t){this.subCommands.push(t)}execute(t){for(;this.subCommands.length>0;){let e=this.subCommands.shift()();e.initializeNotifier(this.multitonKey),e.execute(t)}}}class h extends o{constructor(t,e=null){super(),this._mediatorName=t||h.NAME,this._viewComponent=e}onRegister(){}onRemove(){}listNotificationInterests(){return[]}handleNotification(t){}get mediatorName(){return this._mediatorName}get viewComponent(){return this._viewComponent}set viewComponent(t){this._viewComponent=t}static get NAME(){return"Mediator"}}class c extends o{constructor(t,e=null){super(),this._proxyName=t||c.NAME,this._data=e}onRegister(){}onRemove(){}get proxyName(){return this._proxyName}get data(){return this._data}set data(t){this._data=t}static get NAME(){return"Proxy"}}export{i as Controller,r as Facade,l as MacroCommand,h as Mediator,n as Model,s as Notification,o as Notifier,t as Observer,c as Proxy,a as SimpleCommand,e as View};
-//# sourceMappingURL=puremvc.min.js.map
diff --git a/bin/esm/puremvc.min.js.map b/bin/esm/puremvc.min.js.map
deleted file mode 100644
index 4a92559..0000000
--- a/bin/esm/puremvc.min.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"puremvc.min.js","sources":["../../src/patterns/observer/Observer.js","../../src/core/View.js","../../src/core/Controller.js","../../src/core/Model.js","../../src/patterns/observer/Notification.js","../../src/patterns/facade/Facade.js","../../src/patterns/observer/Notifier.js","../../src/patterns/command/SimpleCommand.js","../../src/patterns/command/MacroCommand.js","../../src/patterns/mediator/Mediator.js","../../src/patterns/proxy/Proxy.js"],"sourcesContent":["/*\n * Observer.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\n/**\n * A base `Observer` implementation.\n *\n * An `Observer` is an object that encapsulates information\n * about an interested object with a method that should\n * be called when a particular `Notification` is broadcast.
\n *\n * In PureMVC, the `Observer` class assumes these responsibilities:
\n *\n * \n * - Encapsulate the notification (callback) method of the interested object.
\n * - Encapsulate the notification context (this) of the interested object.
\n * - Provide methods for setting the notification method and context.
\n * - Provide a method for notifying the interested object.
\n *
\n *\n * @class Observer\n */\nclass Observer {\n\n /**\n * Constructor.\n *\n * The notification method on the interested object should take\n * one parameter of type `Notification`
\n *\n * @param {function(Notification):void} notifyMethod\n * @param {Object} notifyContext\n */\n constructor(notifyMethod, notifyContext) {\n this._notifyMethod = notifyMethod;\n this._notifyContext = notifyContext;\n }\n\n /**\n * Notify the interested object.\n *\n * @param {Notification} notification\n */\n notifyObserver(notification) {\n this._notifyMethod.call(this._notifyContext, notification);\n }\n\n /**\n * Compare an object to the notification context.\n *\n * @param {Object} notifyContext\n * @returns {boolean}\n */\n compareNotifyContext(notifyContext) {\n return this._notifyContext === notifyContext;\n }\n\n /**\n * Get the notification method.\n *\n * @returns {function(Notification):void}\n */\n get notifyMethod() {\n return this._notifyMethod\n }\n\n /**\n * Set the notification method.\n *\n * The notification method should take one parameter of type `Notification`.
\n *\n * @param {function(Notification): void} notifyMethod - The function to be called when a notification is received.\n */\n set notifyMethod(notifyMethod) {\n this._notifyMethod = notifyMethod;\n }\n\n /**\n * Get the notifyContext\n *\n * @returns {Object}\n */\n get notifyContext() {\n return this._notifyContext;\n }\n\n /**\n * Set the notification context.\n *\n * @param {Object} notifyContext\n */\n set notifyContext(notifyContext) {\n this._notifyContext = notifyContext;\n }\n\n}\nexport { Observer }\n","/*\n * View.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\nimport {Observer} from \"../patterns/observer/Observer.js\";\n\n/**\n * A Multiton `View` implementation.\n *\n * In PureMVC, the `View` class assumes these responsibilities:
\n *\n * \n * - Maintain a cache of `Mediator` instances.
\n * - Provide methods for registering, retrieving, and removing `Mediators`.
\n * - Notifying `Mediators` when they are registered or removed.
\n * - Managing the observer lists for each `Notification` in the application.
\n * - Providing a method for attaching `Observers` to a `Notification`'s observer list.
\n * - Providing a method for broadcasting a `Notification`.
\n * - Notifying the `Observers` of a given `Notification` when it broadcast.
\n *
\n *\n * @see Mediator Mediator\n * @see Observer Observer\n * @see Notification Notification\n *\n * @class View\n */\nclass View {\n\n /**\n * Constructor.\n *\n * This `View` implementation is a Multiton,\n * so you should not call the constructor\n * directly, but instead call the static Multiton\n * Factory method `View.getInstance( multitonKey )`\n *\n * @constructor\n * @param {string} key\n *\n * @throws {Error} Error if instance for this Multiton key has already been constructed\n */\n constructor(key) {\n if (View.instanceMap.get(key) != null) throw new Error(View.MULTITON_MSG);\n /** @protected\n * @type {string} */\n this.multitonKey = key;\n View.instanceMap.set(this.multitonKey, this);\n /** @protected\n * @type {Map} */\n this.mediatorMap = new Map();\n /** @protected\n * @type {Map.>} */\n this.observerMap = new Map();\n this.initializeView();\n }\n\n /**\n * Initialize the Multiton View instance.
\n *\n * Called automatically by the constructor, this\n * is your opportunity to initialize the Multiton\n * instance in your subclass without overriding the\n * constructor.
\n */\n initializeView() {\n\n }\n\n /**\n * View Multiton factory method.\n *\n * @static\n * @param {string} key\n * @param {function(string):View} factory\n * @returns {View} the Multiton instance of `View`\n */\n static getInstance(key, factory) {\n if (View.instanceMap == null)\n /** @static\n * @type {Map} */\n View.instanceMap = new Map();\n if (View.instanceMap.get(key) == null) View.instanceMap.set(key, factory(key));\n return View.instanceMap.get(key);\n }\n\n /**\n * Register an `Observer` to be notified\n * of `Notifications` with a given name.
\n *\n * @param {string} notificationName the name of the `Notifications` to notify this `Observer` of\n * @param {Observer} observer the `Observer` to register\n */\n registerObserver(notificationName, observer) {\n if (this.observerMap.get(notificationName) != null) {\n let observers = this.observerMap.get(notificationName);\n observers.push(observer);\n } else {\n this.observerMap.set(notificationName, new Array(observer));\n }\n }\n\n /**\n * Notify the `Observers` for a particular `Notification`.
\n *\n * All previously attached `Observers` for this `Notification`'s\n * list are notified and are passed a reference to the `Notification` in\n * the order in which they were registered.
\n *\n * @param {Notification} notification the `Notification` to notify `Observers` of.\n */\n notifyObservers(notification) {\n if (this.observerMap.has(notification.name)) {\n // Copy observers from reference array to working array,\n // since the reference array may change during the notification loop\n let observers = this.observerMap.get(notification.name).slice();\n\n // Notify Observers from the working array\n for(let i = 0; i < observers.length; i++) {\n observers[i].notifyObserver(notification);\n }\n }\n }\n\n /**\n * Remove the observer for a given notifyContext from an observer list for a given Notification name.
\n *\n * @param {string} notificationName which observer list to remove from\n * @param {Object} notifyContext remove the observer with this object as its notifyContext\n */\n removeObserver(notificationName, notifyContext) {\n // the observer list for the notification under inspection\n let observers = this.observerMap.get(notificationName);\n\n // find the observer for the notifyContext\n for (let i = 0; i < observers.length; i++) {\n if (observers[i].compareNotifyContext(notifyContext) === true) {\n // there can only be one Observer for a given notifyContext\n // in any given Observer list, so remove it and break\n observers.splice(i, 1);\n break;\n }\n }\n\n // Also, when a Notification's Observer list length falls to\n // zero, delete the notification key from the observer map\n if (observers.length === 0) {\n this.observerMap.delete(notificationName);\n }\n }\n\n /**\n * Register a `Mediator` instance with the `View`.\n *\n * Registers the `Mediator` so that it can be retrieved by name,\n * and further interrogates the `Mediator` for its\n * `Notification` interests.
\n *\n * If the `Mediator` returns any `Notification`\n * names to be notified about, an `Observer` is created encapsulating\n * the `Mediator` instance's `handleNotification` method\n * and registering it as an `Observer` for all `Notifications` the\n * `Mediator` is interested in.
\n *\n * @param {Mediator} mediator a reference to the `Mediator` instance\n */\n registerMediator(mediator) {\n // do not allow re-registration (you must to removeMediator fist)\n if (this.mediatorMap.has(mediator.mediatorName) !== false) return;\n\n mediator.initializeNotifier(this.multitonKey);\n\n // Register the Mediator for retrieval by name\n this.mediatorMap.set(mediator.mediatorName, mediator);\n\n // Get Notification interests, if any.\n let interests = mediator.listNotificationInterests();\n\n // Register Mediator as an observer for each notification of interests\n if (interests.length > 0) {\n // Create Observer referencing this mediator's handleNotification method\n let observer = new Observer(mediator.handleNotification.bind(mediator), mediator); // check bind\n\n // Register Mediator as Observer for its list of Notification interests\n for (let i = 0; i < interests.length; i++) {\n this.registerObserver(interests[i], observer);\n }\n }\n\n // alert the mediator that it has been registered\n mediator.onRegister();\n }\n\n /**\n * Retrieve a `Mediator` from the `View`.\n *\n * @param {string} mediatorName the name of the `Mediator` instance to retrieve.\n * @returns {Mediator} the `Mediator` instance previously registered with the given `mediatorName`.\n */\n retrieveMediator(mediatorName) {\n return this.mediatorMap.get(mediatorName) || null;\n }\n\n /**\n * Remove a `Mediator` from the `View`.\n *\n * @param {string} mediatorName name of the `Mediator` instance to be removed.\n * @returns {Mediator} the `Mediator` that was removed from the `View`\n */\n removeMediator(mediatorName) {\n // Retrieve the named mediator\n let mediator = this.mediatorMap.get(mediatorName);\n\n if (mediator) {\n // for every notification this mediator is interested in...\n let interests = mediator.listNotificationInterests();\n for (let i = 0; i < interests.length; i++) {\n // remove the observer linking the mediator\n // to the notification interest\n this.removeObserver(interests[i], mediator);\n }\n\n // remove the mediator from the map\n this.mediatorMap.delete(mediatorName);\n\n // alert the mediator that it has been removed\n mediator.onRemove();\n }\n\n return mediator;\n }\n\n /**\n * Check if a Mediator is registered or not\n *\n * @param {string} mediatorName\n * @returns {boolean} whether a Mediator is registered with the given `mediatorName`.\n */\n hasMediator(mediatorName) {\n return this.mediatorMap.has(mediatorName);\n }\n\n /**\n * Remove a View instance\n *\n * @static\n * @param key multitonKey of View instance to remove\n */\n static removeView(key) {\n this.instanceMap.delete(key);\n }\n\n /**\n * Message Constants\n *\n * @static\n * @type {string}\n */\n static get MULTITON_MSG() { return \"View instance for this Multiton key already constructed!\" };\n\n}\nexport { View }\n","/*\n * Controller.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\nimport {View} from \"./View.js\"\nimport {Observer} from \"../patterns/observer/Observer.js\";\n\n/**\n * A Multiton `Controller` implementation.\n *\n * In PureMVC, the `Controller` class follows the\n * 'Command and Controller' strategy, and assumes these\n * responsibilities:
\n *\n * \n * - Remembering which `Command`s\n * are intended to handle which `Notifications`.
\n * - Registering itself as an `Observer` with\n * the `View` for each `Notification`\n * that it has a `Command` mapping for.
\n * - Creating a new instance of the proper `Command`\n * to handle a given `Notification` when notified by the `View`.
\n * - Calling the `Command`'s `execute`\n * method, passing in the `Notification`.
\n *
\n *\n * Your application must register `Commands` with the\n * Controller.
\n *\n * The simplest way is to subclass `Facade`,\n * and use its `initializeController` method to add your\n * registrations.
\n *\n * @see View View\n * @see Observer Observer\n * @see Notification Notification\n * @see SimpleCommand SimpleCommand\n * @see MacroCommand MacroCommand\n *\n * @class Controller\n */\nclass Controller {\n\n /**\n * Constructor.\n *\n * This `Controller` implementation is a Multiton,\n * so you should not call the constructor\n * directly, but instead call the static Factory method,\n * passing the unique key for this instance\n * `Controller.getInstance( multitonKey )`
\n *\n * @throws {Error} Error if instance for this Multiton key has already been constructed\n *\n * @constructor\n * @param {string} key\n */\n constructor(key) {\n if (Controller.instanceMap[key] != null) throw new Error(Controller.MULTITON_MSG);\n /** @protected\n * @type {string} */\n this.multitonKey = key;\n Controller.instanceMap.set(this.multitonKey, this);\n /** @protected\n * @type {Map} */\n this.commandMap = new Map();\n this.initializeController();\n }\n\n /**\n * Initialize the Multiton `Controller` instance.\n *\n * Called automatically by the constructor.
\n *\n * Note that if you are using a subclass of `View`\n * in your application, you should also subclass `Controller`\n * and override the `initializeController` method in the\n * following way:
\n *\n * `\n *\t\t// ensure that the Controller is talking to my View implementation\n *\t\tinitializeController( )\n *\t\t{\n *\t\t\tthis.view = MyView.getInstance(this.multitonKey, (key) => new MyView(key));\n *\t\t}\n * `
\n *\n */\n initializeController() {\n /** @protected\n * @type {View} **/\n this.view = View.getInstance(this.multitonKey, (key) => new View(key));\n }\n\n /**\n * `Controller` Multiton Factory method.\n *\n * @static\n * @param {string} key\n * @param {function(string):Controller} factory\n * @returns {Controller} the Multiton instance of `Controller`\n */\n static getInstance(key, factory) {\n if (Controller.instanceMap == null)\n /** @static\n @type {Map} */\n Controller.instanceMap = new Map();\n if (Controller.instanceMap.get(key) == null) Controller.instanceMap.set(key, factory(key));\n return Controller.instanceMap.get(key);\n }\n\n /**\n * If a `Command` has previously been registered\n * to handle the given `Notification`, then it is executed.
\n *\n * @param {Notification} notification a `Notification`\n */\n executeCommand(notification) {\n let factory = this.commandMap.get(notification.name);\n if (factory == null) return;\n\n let commandInstance = factory();\n commandInstance.initializeNotifier(this.multitonKey);\n commandInstance.execute(notification);\n }\n\n /**\n * Register a particular `Command` class as the handler\n * for a particular `Notification`.
\n *\n * If an `Command` has already been registered to\n * handle `Notification`s with this name, it is no longer\n * used, the new `Command` is used instead.
\n *\n * The Observer for the new Command is only created if this the\n * first time a Command has been registered for this Notification name.
\n *\n * @param notificationName the name of the `Notification`\n * @param {function():SimpleCommand} factory\n */\n registerCommand(notificationName, factory) {\n if (this.commandMap.get(notificationName) == null) {\n this.view.registerObserver(notificationName, new Observer(this.executeCommand, this));\n }\n this.commandMap.set(notificationName, factory);\n }\n\n /**\n * Check if a Command is registered for a given Notification\n *\n * @param {string} notificationName\n * @return {boolean} whether a Command is currently registered for the given `notificationName`.\n */\n hasCommand(notificationName) {\n return this.commandMap.has(notificationName);\n }\n\n /**\n * Remove a previously registered `Command` to `Notification` mapping.\n *\n * @param {string} notificationName the name of the `Notification` to remove the `Command` mapping for\n */\n removeCommand(notificationName) {\n // if the Command is registered...\n if(this.hasCommand(notificationName)) {\n // remove the observer\n this.view.removeObserver(notificationName, this);\n\n // remove the command\n this.commandMap.delete(notificationName)\n }\n }\n\n /**\n * Remove a Controller instance\n *\n * @static\n * @param {string} key of Controller instance to remove\n */\n static removeController(key) {\n Controller.instanceMap.delete(key);\n }\n\n /**\n * Message Constants\n *\n * @static\n * @type {string}\n */\n static get MULTITON_MSG() { return \"Controller instance for this Multiton key already constructed!\" };\n}\nexport { Controller }\n","/*\n * Model.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\n/**\n * A Multiton `Model` implementation.\n *\n * In PureMVC, the `Model` class provides\n * access to model objects (Proxies) by named lookup.\n *\n *
The `Model` assumes these responsibilities:
\n *\n * \n * - Maintain a cache of `Proxy` instances.
\n * - Provide methods for registering, retrieving, and removing\n * `Proxy` instances.
\n *
\n *\n * Your application must register `Proxy` instances\n * with the `Model`. Typically, you use an\n * `Command` to create and register `Proxy`\n * instances once the `Facade` has initialized the Core\n * actors.
\n *\n * @see Proxy Proxy\n *\n * @class Model\n */\n\nclass Model {\n\n /**\n * Constructor.\n *\n * This `Model` implementation is a Multiton,\n * so you should not call the constructor\n * directly, but instead call the static Multiton\n * Factory method `Model.getInstance( multitonKey )`\n *\n * @constructor\n * @param {string} key\n *\n * @throws {Error} Error if instance for this Multiton key instance has already been constructed\n */\n constructor(key) {\n if (Model.instanceMap.get(key) != null) throw new Error(Model.MULTITON_MSG);\n /** @protected\n * @type {string} */\n this.multitonKey = key;\n Model.instanceMap.set(this.multitonKey, this);\n /** @protected\n * @type {Map} */\n this.proxyMap = new Map();\n this.initializeModel();\n }\n\n /**\n * Initialize the `Model` instance.\n *\n * Called automatically by the constructor, this\n * is your opportunity to initialize the Multiton\n * instance in your subclass without overriding the\n * constructor.
\n *\n */\n initializeModel() {\n\n }\n\n /**\n * `Model` Multiton Factory method.\n *\n * @static\n * @param {string} key\n * @param {function(string):Model} factory\n * @returns {Model} the instance for this Multiton key\n */\n static getInstance(key, factory) {\n if (Model.instanceMap == null)\n /** @static\n @type {Map} */\n Model.instanceMap = new Map();\n if (Model.instanceMap.get(key) == null) Model.instanceMap.set(key, factory(key));\n return Model.instanceMap.get(key);\n }\n\n /**\n * Register a `Proxy` with the `Model`.\n *\n * @param {Proxy} proxy a `Proxy` to be held by the `Model`.\n */\n registerProxy(proxy) {\n proxy.initializeNotifier(this.multitonKey);\n this.proxyMap.set(proxy.proxyName, proxy);\n proxy.onRegister();\n }\n\n /**\n * Retrieve a `Proxy` from the `Model`.\n *\n * @param {string} proxyName\n * @returns {Proxy} the `Proxy` instance previously registered with the given `proxyName`.\n */\n retrieveProxy(proxyName) {\n return this.proxyMap.get(proxyName) || null;\n }\n\n /**\n * Check if a Proxy is registered\n *\n * @param {string} proxyName\n * @returns {boolean} whether a Proxy is currently registered with the given `proxyName`.\n */\n hasProxy(proxyName) {\n return this.proxyMap.has(proxyName);\n }\n\n /**\n * Remove a `Proxy` from the `Model`.\n *\n * @param {string} proxyName name of the `Proxy` instance to be removed.\n * @returns {Proxy} the `Proxy` that was removed from the `Model`\n */\n removeProxy(proxyName) {\n let proxy = this.proxyMap.get(proxyName);\n if (proxy != null) {\n this.proxyMap.delete(proxyName);\n proxy.onRemove();\n }\n return proxy;\n }\n\n /**\n * Remove a Model instance\n *\n * @static\n * @param key\n */\n static removeModel(key) {\n Model.instanceMap.delete(key);\n }\n\n /**\n * @static\n * @type {string}\n */\n static get MULTITON_MSG() { return \"Model instance for this Multiton key already constructed!\" };\n}\nexport { Model }","/*\n * Notification.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\n/**\n *\n * A base `Notification` implementation.\n *\n * PureMVC does not rely upon underlying event models such\n * as the one provided with Flash, and ActionScript 3 does\n * not have an inherent event model.
\n *\n * The Observer Pattern as implemented within PureMVC exists\n * to support event-driven communication between the\n * application and the actors of the MVC triad.
\n *\n * Notifications are not meant to be a replacement for Events\n * in Flex/Flash/Apollo. Generally, `Mediator` implementors\n * place event listeners on their view components, which they\n * then handle in the usual way. This may lead to the broadcast of `Notification`s to\n * trigger `Command`s or to communicate with other `Mediators`. `Proxy` and `Command`\n * instances communicate with each other and `Mediator`s\n * by broadcasting `Notification`s.
\n *\n * A key difference between Flash `Event`s and PureMVC\n * `Notification`s is that `Event`s follow the\n * 'Chain of Responsibility' pattern, 'bubbling' up the display hierarchy\n * until some parent component handles the `Event`, while\n * PureMVC `Notification`s follow a 'Publish/Subscribe'\n * pattern. PureMVC classes need not be related to each other in a\n * parent/child relationship in order to communicate with one another\n * using `Notification`s.
\n *\n * @class Notification\n */\nclass Notification {\n\n /**\n * Constructor.\n *\n * @constructor\n * @param {string} name - The name of the notification.\n * @param {Object|null} [body=null] - The body of the notification, defaults to `null`.\n * @param {string} [type=\"\"] - The type of the notification, defaults to an empty string.\n */\n constructor(name, body = null, type = \"\") {\n this._name = name;\n this._body = body;\n this._type = type;\n }\n\n /**\n * Get the name of the `Notification` instance.\n *\n * @returns {string}\n */\n get name() {\n return this._name;\n }\n\n /**\n * Get the body of the `Notification` instance.\n *\n * @returns {Object}\n */\n get body() {\n return this._body;\n }\n\n /**\n * Set the body of the `Notification` instance.\n *\n * @param {Object|null} body\n */\n set body(body) {\n this._body = body;\n }\n\n /**\n * Get the type of the `Notification` instance.\n *\n * @returns {string}\n */\n get type() {\n return this._type;\n }\n\n /**\n * Set the type of the `Notification` instance.\n *\n * @param {string} type\n */\n set type(type) {\n this._type = type;\n }\n\n /**\n * Get the string representation of the `Notification` instance.\n *\n * @returns {string}\n */\n toString() {\n let str= \"Notification Name: \" + this.name;\n str+= \"\\nBody:\" + ((this.body == null ) ? \"null\" : this.body.toString());\n str+= \"\\nType:\" + ((this.type == null ) ? \"null\" : this.type);\n return str;\n }\n\n}\nexport { Notification }\n","/*\n * Facade.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\nimport {Controller} from \"../../core/Controller.js\";\nimport {Model} from \"../../core/Model.js\";\nimport {View} from \"../../core/View.js\";\nimport {Notification} from \"../observer/Notification.js\";\n\n/**\n * A base Multiton `Facade` implementation.\n *\n * @see Model Model\n * @see View View\n * @see Controller Controller\n *\n * @class Facade\n */\nclass Facade {\n\n /**\n * Constructor.\n *\n * This `Facade` implementation is a Multiton,\n * so you should not call the constructor\n * directly, but instead call the static Factory method,\n * passing the unique key for this instance\n * `Facade.getInstance( multitonKey )`
\n *\n * @constructor\n * @param {string} key\n * @throws {Error} Error if instance for this Multiton key has already been constructed\n */\n constructor(key) {\n if (Facade.instanceMap[key] != null) throw new Error(Facade.MULTITON_MSG);\n this.initializeNotifier(key);\n Facade.instanceMap.set(this.multitonKey, this);\n this.initializeFacade();\n }\n\n /**\n * Initialize the Multiton `Facade` instance.\n *\n * Called automatically by the constructor. Override in your\n * subclass to do any subclass specific initializations. Be\n * sure to call `super.initializeFacade()`, though.
\n */\n initializeFacade() {\n this.initializeModel();\n this.initializeController();\n this.initializeView();\n }\n\n /**\n * Facade Multiton Factory method\n *\n * @static\n * @param {string} key\n * @param {function(string):Facade} factory\n * @returns {Facade} the Multiton instance of the Facade\n */\n static getInstance(key, factory) {\n if (Facade.instanceMap == null)\n /** @static\n * @type {Map} */\n Facade.instanceMap = new Map();\n if (Facade.instanceMap.get(key) == null) Facade.instanceMap.set(key, factory(key));\n return Facade.instanceMap.get(key);\n }\n\n /**\n * Initialize the `Model`.\n *\n * Called by the `initializeFacade` method.\n * Override this method in your subclass of `Facade`\n * if one or both of the following are true:
\n *\n * \n * - You wish to initialize a different `Model`.
\n * - You have `Proxy`s to register with the Model that do not\n * retrieve a reference to the Facade at construction time.`
\n *
\n *\n * If you don't want to initialize a different `Model`,\n * call `super.initializeModel()` at the beginning of your\n * method, then register `Proxy`s.\n *\n * Note: This method is rarely overridden; in practice you are more\n * likely to use a `Command` to create and register `Proxy`s\n * with the `Model`, since `Proxy`s with mutable data will likely\n * need to send `Notification`s and thus will likely want to fetch a reference to\n * the `Facade` during their construction.
\n */\n initializeModel() {\n if (this.model != null) return;\n this.model = Model.getInstance(this.multitonKey, key => new Model(key));\n }\n\n /**\n * Initialize the `Controller`.\n *\n * Called by the `initializeFacade` method.\n * Override this method in your subclass of `Facade`\n * if one or both of the following are true:
\n *\n * \n * - You wish to initialize a different `Controller`.
\n * - You have `Commands` to register with the `Controller` at startup.`.
\n *
\n *\n * If you don't want to initialize a different `Controller`,\n * call `super.initializeController()` at the beginning of your\n * method, then register `Command`s.
\n */\n initializeController() {\n if (this.controller != null) return;\n this.controller = Controller.getInstance(this.multitonKey, key => new Controller(key));\n }\n\n /**\n * Initialize the `View`.\n *\n * Called by the `initializeFacade` method.\n * Override this method in your subclass of `Facade`\n * if one or both of the following are true:
\n *\n * \n * - You wish to initialize a different `View`.
\n * - You have `Observers` to register with the `View`
\n *
\n *\n * If you don't want to initialize a different `View`,\n * call `super.initializeView()` at the beginning of your\n * method, then register `Mediator` instances.
\n *\n * Note: This method is rarely overridden; in practice you are more\n * likely to use a `Command` to create and register `Mediator`s\n * with the `View`, since `Mediator` instances will need to send\n * `Notification`s and thus will likely want to fetch a reference\n * to the `Facade` during their construction.
\n */\n initializeView() {\n if (this.view != null) return;\n this.view = View.getInstance(this.multitonKey, key => new View(key));\n }\n\n /**\n * Register a `Command` with the `Controller` by Notification name.\n *\n * @param {string} notificationName the name of the `Notification` to associate the `Command` with\n * @param {function():SimpleCommand} factory a reference to the factory of the `Command`\n */\n registerCommand(notificationName, factory) {\n this.controller.registerCommand(notificationName, factory);\n }\n\n /**\n * Check if a Command is registered for a given Notification\n *\n * @param {string} notificationName\n * @returns {boolean} whether a Command is currently registered for the given `notificationName`.\n */\n hasCommand(notificationName) {\n return this.controller.hasCommand(notificationName);\n }\n\n /**\n * Remove a previously registered `Command` to `Notification` mapping from the Controller.\n *\n * @param {string} notificationName the name of the `Notification` to remove the `Command` mapping for\n */\n removeCommand(notificationName) {\n this.controller.removeCommand(notificationName);\n }\n\n /**\n * Register a `Proxy` with the `Model` by name.\n *\n * @param {Proxy} proxy the `Proxy` instance to be registered with the `Model`.\n */\n registerProxy(proxy) {\n this.model.registerProxy(proxy);\n }\n\n /**\n * Remove a `Proxy` from the `Model` by name.\n *\n * @param {string} proxyName the `Proxy` to remove from the `Model`.\n * @returns {Proxy} the `Proxy` that was removed from the `Model`\n */\n removeProxy(proxyName) {\n return this.model.removeProxy(proxyName);\n }\n\n /**\n * Check if a Proxy is registered\n *\n * @param {string} proxyName\n * @returns {boolean} whether a Proxy is currently registered with the given `proxyName`.\n */\n hasProxy(proxyName) {\n return this.model.hasProxy(proxyName);\n }\n\n /**\n * Retrieve a `Proxy` from the `Model` by name.\n *\n * @param {string} proxyName the name of the proxy to be retrieved.\n * @returns {Proxy} the `Proxy` instance previously registered with the given `proxyName`.\n */\n retrieveProxy(proxyName) {\n return this.model.retrieveProxy(proxyName);\n }\n\n /**\n * Register a `Mediator` with the `View`.\n *\n * @param {Mediator} mediator a reference to the `Mediator`\n */\n registerMediator(mediator) {\n this.view.registerMediator(mediator);\n }\n\n /**\n * Remove a `Mediator` from the `View`.\n *\n * @param {string} mediatorName name of the `Mediator` to be removed.\n * @returns {Mediator} the `Mediator` that was removed from the `View`\n */\n removeMediator(mediatorName) {\n return this.view.removeMediator(mediatorName);\n }\n\n /**\n * Check if a Mediator is registered or not\n *\n * @param {string} mediatorName\n * @returns {boolean} whether a Mediator is registered with the given `mediatorName`.\n */\n hasMediator(mediatorName) {\n return this.view.hasMediator(mediatorName);\n }\n\n /**\n * Retrieve a `Mediator` from the `View`.\n *\n * @param {string} mediatorName\n * @returns {Mediator} the `Mediator` previously registered with the given `mediatorName`.\n */\n retrieveMediator(mediatorName) {\n return this.view.retrieveMediator(mediatorName);\n }\n\n /**\n * Create and send an `Notification`.\n *\n * Keeps us from having to construct new notification\n * instances in our implementation code.
\n *\n * @param {string} notificationName the name of the notification to send\n * @param {Object} [body] body the body of the notification (optional)\n * @param {string} [type] type the type of the notification (optional)\n */\n sendNotification(notificationName, body = null, type = \"\") {\n this.notifyObservers(new Notification(notificationName, body, type));\n }\n\n /**\n * Notify `Observer`s.\n *\n * This method is left public mostly for backward\n * compatibility, and to allow you to send custom\n * notification classes using the facade.
\n *\n * Usually you should just call sendNotification\n * and pass the parameters, never having to\n * construct the notification yourself.
\n *\n * @param {Notification} notification the `Notification` to have the `View` notify `Observers` of.\n */\n notifyObservers(notification) {\n this.view.notifyObservers(notification);\n }\n\n /**\n * Set the Multiton key for this facade instance.\n *\n * Not called directly, but instead from the\n * constructor when getInstance is invoked.\n * It is necessary to be public in order to\n * implement Notifier.
\n */\n initializeNotifier(key) {\n this.multitonKey = key;\n }\n\n /**\n * Check if a Core is registered or not\n *\n * @static\n * @param {string} key the multiton key for the Core in question\n * @returns {boolean} whether a Core is registered with the given `key`.\n */\n static hasCore(key) {\n return this.instanceMap.has(key);\n }\n\n /**\n * Remove a Core.\n *\n * Remove the Model, View, Controller and Facade\n * instances for the given key.
\n *\n * @static\n * @param {string} key multitonKey of the Core to remove\n */\n static removeCore(key) {\n if (Facade.instanceMap.get(key) == null) return;\n Model.removeModel(key);\n View.removeView(key);\n Controller.removeController(key);\n this.instanceMap.delete(key);\n }\n\n /**\n * Message Constants\n *\n * @static\n * @returns {string}\n */\n static get MULTITON_MSG() {return \"Facade instance for this Multiton key already constructed!\"};\n}\nexport { Facade }\n","/*\n * Notifier.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\nimport {Facade} from \"../facade/Facade.js\";\n\n/**\n * A Base `Notifier` implementation.\n *\n * `MacroCommand, Command, Mediator` and `Proxy`\n * all have a need to send `Notifications`.
\n *\n *
The `Notifier` interface provides a common method called\n * `sendNotification` that relieves implementation code of\n * the necessity to actually construct `Notifications`.
\n *\n * The `Notifier` class, which all the above-mentioned classes\n * extend, provides an initialized reference to the `Facade`\n * Multiton, which is required for the convenience method\n * for sending `Notifications`, but also eases implementation as these\n * classes have frequent `Facade` interactions and usually require\n * access to the facade anyway.
\n *\n * NOTE: In the MultiCore version of the framework, there is one caveat to\n * notifiers, they cannot send notifications or reach the facade until they\n * have a valid multitonKey.
\n *\n * The multitonKey is set:\n * * on a Command when it is executed by the Controller\n * * on a Mediator is registered with the View\n * * on a Proxy is registered with the Model.\n *\n * @see Proxy Proxy\n * @see Facade Facade\n * @see Mediator Mediator\n * @see MacroCommand MacroCommand\n * @see SimpleCommand SimpleCommand\n *\n * @class Notifier\n */\nclass Notifier {\n\n constructor() {}\n\n /**\n * Create and send an `Notification`.\n *\n * Keeps us from having to construct new Notification\n * instances in our implementation code.
\n *\n * @param {string} notificationName\n * @param {Object} [body] body\n * @param {string} [type] type\n */\n sendNotification (notificationName, body = null, type = \"\") {\n if (this.facade != null) {\n this.facade.sendNotification(notificationName, body, type);\n }\n }\n\n /**\n * Initialize this Notifier instance.\n *\n * This is how a Notifier gets its multitonKey.\n * Calls to sendNotification or to access the\n * facade will fail until after this method\n * has been called.
\n *\n * Mediators, Commands or Proxies may override\n * this method in order to send notifications\n * or access the Multiton Facade instance as\n * soon as possible. They CANNOT access the facade\n * in their constructors, since this method will not\n * yet have been called.
\n *\n * @param {string} key the multitonKey for this Notifier to use\n */\n initializeNotifier(key) {\n this.multitonKey = key;\n }\n\n /**\n * Return the Multiton Facade instance\n *\n * @typedef {Facade} Facade\n *\n * @throws {Error}\n */\n get facade() {\n if (this.multitonKey == null) throw new Error(Notifier.MULTITON_MSG);\n return Facade.getInstance(this.multitonKey, key => new Facade(key));\n }\n\n /**\n * Message Constants\n *\n * @static\n * @returns {string}\n */\n static get MULTITON_MSG() { return \"multitonKey for this Notifier not yet initialized!\" }\n}\nexport { Notifier }\n","/*\n * SimpleCommand.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\nimport {Notifier} from \"../observer/Notifier.js\";\n\n/**\n * A base `Command` implementation.\n *\n * Your subclass should override the `execute`\n * method where your business logic will handle the `Notification`.
\n *\n * @see Controller Controller\n * @see Notification Notification\n * @see MacroCommand MacroCommand\n *\n * @class SimpleCommand\n */\nclass SimpleCommand extends Notifier {\n\n constructor() {\n super();\n }\n\n /**\n * Fulfill the use-case initiated by the given `Notification`.\n *\n * In the Command Pattern, an application use-case typically\n * begins with some user action, which results in a `Notification` being broadcast, which\n * is handled by business logic in the `execute` method of an\n * `Command`.
\n *\n * @param {Notification} notification\n */\n execute(notification) {\n\n }\n\n}\nexport { SimpleCommand }\n","/*\n * MacroCommand.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\nimport {SimpleCommand} from \"./SimpleCommand.js\";\n\n/**\n * A base `Command` implementation that executes other `Command`s.\n *\n * A `MacroCommand` maintains a list of\n * `Command` Class references called SubCommands.
\n *\n * When `execute` is called, the `MacroCommand`\n * instantiates and calls `execute` on each of its SubCommands turn.\n * Each SubCommand will be passed a reference to the original\n * `Notification` that was passed to the `MacroCommand`'s\n * `execute` method.
\n *\n * Unlike `SimpleCommand`, your subclass\n * should not override `execute`, but instead, should\n * override the `initializeMacroCommand` method,\n * calling `addSubCommand` once for each SubCommand\n * to be executed.
\n *\n * @see Controller Controller\n * @see Notification Notification\n * @see SimpleCommand SimpleCommand\n *\n * @class MacroCommand\n */\nclass MacroCommand extends SimpleCommand {\n\n /**\n * Constructor.\n *\n * You should not need to define a constructor,\n * instead, override the `initializeMacroCommand`\n * method.
\n *\n * If your subclass does define a constructor, be\n * sure to call `super()`.
\n *\n * @constructor\n */\n constructor() {\n super();\n /** @protected\n * @type {Array.} */\n this.subCommands = [];\n this.initializeMacroCommand();\n }\n\n /**\n * Initialize the `MacroCommand`.\n *\n * In your subclass, override this method to\n * initialize the `MacroCommand`'s SubCommand\n * list with `Command` class references like\n * this:
\n *\n * `\n *\t\t// Initialize MyMacroCommand\n *\t\tinitializeMacroCommand() {\n *\t\t\tthis.addSubCommand(() => new app.FirstCommand());\n *\t\t\tthis.addSubCommand(() => new app.SecondCommand());\n *\t\t\tthis.addSubCommand(() => new app.ThirdCommand());\n *\t\t}\n * `
\n *\n * Note that SubCommands may be any `Command` implementor,\n * `MacroCommand`s or `SimpleCommands` are both acceptable.\n */\n initializeMacroCommand() {\n\n }\n\n /**\n * Add a SubCommand.\n *\n *
The SubCommands will be called in First In/First Out (FIFO)\n * order.
\n *\n * @param {function():SimpleCommand} factory\n */\n addSubCommand(factory) {\n this.subCommands.push(factory);\n }\n\n /**\n * Execute this `MacroCommand`'s SubCommands.\n *\n * The SubCommands will be called in First In/First Out (FIFO)\n * order.
\n *\n * @param {Notification} notification\n */\n execute(notification) {\n while(this.subCommands.length > 0) {\n let factory = this.subCommands.shift();\n let commandInstance = factory();\n commandInstance.initializeNotifier(this.multitonKey);\n commandInstance.execute(notification);\n }\n }\n\n}\nexport { MacroCommand }\n","/*\n * Mediator.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\nimport {Notifier} from \"../observer/Notifier.js\";\n\n/**\n * A base `Mediator` implementation.\n *\n * @see View View\n *\n * @class Mediator\n */\nclass Mediator extends Notifier {\n\n /**\n * Constructor.\n *\n * @constructor\n * @param {string} mediatorName\n * @param {Object} [viewComponent] viewComponent\n */\n constructor(mediatorName, viewComponent = null) {\n super();\n this._mediatorName = mediatorName || Mediator.NAME;\n this._viewComponent = viewComponent;\n }\n\n /**\n * Called by the View when the Mediator is registered\n */\n onRegister() {\n\n }\n\n /**\n * Called by the View when the Mediator is removed\n */\n onRemove() {\n\n }\n\n /**\n * List the `Notification` names this\n * `Mediator` is interested in being notified of.\n *\n * @returns {string[]}\n */\n listNotificationInterests() {\n return [];\n }\n\n /**\n * Handle `Notification`s.\n *\n * \n * Typically this will be handled in a switch statement,\n * with one 'case' entry per `Notification`\n * the `Mediator` is interested in.\n *\n * @param {Notification} notification\n */\n handleNotification(notification) {\n\n }\n\n /**\n * the mediator name\n *\n * @returns {string}\n */\n get mediatorName() {\n return this._mediatorName;\n }\n\n /**\n * Get the `Mediator`'s view component.\n *\n *
\n * Additionally, an implicit getter will usually\n * be defined in the subclass that casts the view\n * object to a type, like this:
\n *\n * @returns {Object}\n */\n get viewComponent() {\n return this._viewComponent;\n }\n\n /**\n * Set the `Mediator`'s view component.\n *\n * @param {Object} viewComponent\n */\n set viewComponent(viewComponent) {\n this._viewComponent = viewComponent;\n }\n\n /**\n * The name of the `Mediator`.\n *\n * Typically, a `Mediator` will be written to serve\n * one specific control or group controls and so,\n * will not have a need to be dynamically named.
\n *\n * @static\n * @returns {string}\n */\n static get NAME() { return \"Mediator\" }\n}\nexport { Mediator }\n","/*\n * Proxy.js\n * PureMVC JavaScript Multicore\n *\n * Copyright(c) 2023 Saad Shams \n * Your reuse is governed by the BSD License\n*/\n\nimport {Notifier} from \"../observer/Notifier.js\";\n\n/**\n * A base `Proxy` implementation.\n *\n * In PureMVC, `Proxy` classes are used to manage parts of the\n * application's data model.
\n *\n * A `Proxy` might simply manage a reference to a local data object,\n * in which case interacting with it might involve setting and\n * getting of its data in synchronous fashion.
\n *\n * `Proxy` classes are also used to encapsulate the application's\n * interaction with remote services to save or retrieve data, in which case,\n * we adopt an asynchronous idiom; setting data (or calling a method) on the\n * `Proxy` and listening for a `Notification` to be sent\n * when the `Proxy` has retrieved the data from the service.
\n *\n * @see Model Model\n *\n * @class Proxy\n */\nclass Proxy extends Notifier {\n /**\n * Constructor\n *\n * @constructor\n * @param {string} proxyName\n * @param {Object} [data]\n */\n constructor(proxyName, data = null) {\n super();\n /** @protected\n * @type {string} */\n this._proxyName = proxyName || Proxy.NAME;\n /** @protected\n * @type {Object} */\n this._data = data;\n }\n\n /**\n * Called by the Model when the Proxy is registered\n */\n onRegister() {}\n\n /**\n * Called by the Model when the Proxy is removed\n */\n onRemove() {}\n\n /**\n * Get the proxy name\n *\n * @returns {string}\n */\n get proxyName() {\n return this._proxyName;\n }\n\n /**\n * Get the data object\n *\n * @returns {Object}\n */\n get data () {\n return this._data;\n }\n\n /**\n * Set the data object\n *\n * @param {Object} data\n */\n set data(data) {\n this._data = data;\n }\n\n /**\n *\n * @static\n * @returns {string}\n */\n static get NAME() { return \"Proxy\" }\n}\nexport { Proxy }\n"],"names":["Observer","constructor","notifyMethod","notifyContext","this","_notifyMethod","_notifyContext","notifyObserver","notification","call","compareNotifyContext","View","key","instanceMap","get","Error","MULTITON_MSG","multitonKey","set","mediatorMap","Map","observerMap","initializeView","getInstance","factory","registerObserver","notificationName","observer","push","Array","notifyObservers","has","name","observers","slice","i","length","removeObserver","splice","delete","registerMediator","mediator","mediatorName","initializeNotifier","interests","listNotificationInterests","handleNotification","bind","onRegister","retrieveMediator","removeMediator","onRemove","hasMediator","removeView","Controller","commandMap","initializeController","view","executeCommand","commandInstance","execute","registerCommand","hasCommand","removeCommand","removeController","Model","proxyMap","initializeModel","registerProxy","proxy","proxyName","retrieveProxy","hasProxy","removeProxy","removeModel","Notification","body","type","_name","_body","_type","toString","str","Facade","initializeFacade","model","controller","sendNotification","hasCore","removeCore","Notifier","facade","SimpleCommand","super","MacroCommand","subCommands","initializeMacroCommand","addSubCommand","shift","Mediator","viewComponent","_mediatorName","NAME","_viewComponent","Proxy","data","_proxyName","_data"],"mappings":"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"}
\ No newline at end of file
diff --git a/build/rollup.conf.mjs b/build/rollup.conf.mjs
index 653bf5b..eb8d7dd 100644
--- a/build/rollup.conf.mjs
+++ b/build/rollup.conf.mjs
@@ -5,23 +5,23 @@ export default [
input: "src/index.js",
output: [
{
- file: "bin/esm/puremvc.js",
+ file: "bin/esm/index.js",
format: "esm",
sourcemap: false
},
{
- file: "bin/esm/puremvc.min.js",
+ file: "bin/esm/index.min.js",
format: "esm",
plugins: [terser()],
sourcemap: true
},
{
- file: "bin/cjs/puremvc.cjs",
+ file: "bin/cjs/index.cjs",
format: "cjs",
sourcemap: false
},
{
- file: "bin/cjs/puremvc.min.cjs",
+ file: "bin/cjs/index.min.cjs",
format: "cjs",
plugins: [terser()],
sourcemap: true
diff --git a/package-lock.json b/package-lock.json
index dad0d8f..6f1cfcc 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,672 +1,36 @@
{
"name": "@puremvc/puremvc-js-multicore-framework",
- "version": "2.0.3",
+ "version": "2.0.7",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@puremvc/puremvc-js-multicore-framework",
- "version": "2.0.3",
+ "version": "2.0.7",
"license": "BSD-3-Clause",
"bin": {
- "puremvc-js-multicore-framework": "bin/puremvc.js"
+ "puremvc-js-multicore-framework": "bin/esm/puremvc.js"
},
"devDependencies": {
"@rollup/plugin-terser": "^0.4.4",
- "abab": "^2.0.6",
- "acorn": "^8.11.2",
- "acorn-babel": "^0.11.1-38",
- "acorn-globals": "^7.0.1",
- "acorn-walk": "^8.3.1",
- "agent-base": "^7.1.0",
- "ajv": "^6.12.6",
- "ajv-errors": "^1.0.1",
- "ajv-keywords": "^3.5.2",
- "amdefine": "^1.0.1",
- "ansi-align": "^3.0.1",
- "ansi-colors": "^4.1.1",
- "ansi-regex": "^2.1.1",
- "ansi-styles": "^2.2.1",
- "ansi-to-html": "^0.7.2",
- "anymatch": "^3.1.3",
- "aproba": "^1.2.0",
- "archiver": "^5.3.2",
- "archiver-utils": "^2.1.0",
- "argparse": "^1.0.10",
- "aria-query": "^5.1.3",
- "arr-diff": "^4.0.0",
- "arr-flatten": "^1.1.0",
- "arr-union": "^3.1.0",
- "array-buffer-byte-length": "^1.0.0",
- "array-unique": "^0.3.2",
- "asn1.js": "^5.4.1",
- "assert": "^1.5.1",
- "assertion-error": "^1.1.0",
- "assign-symbols": "^1.0.0",
- "ast-types": "^0.7.8",
- "async": "^3.2.5",
- "async-each": "^1.0.6",
- "asynckit": "^0.4.0",
- "atob": "^2.1.2",
- "available-typed-arrays": "^1.0.5",
- "axe-core": "^4.8.2",
- "axios": "^1.6.2",
- "b4a": "^1.6.4",
- "babel-code-frame": "^6.26.0",
"babel-core": "^4.7.16",
- "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1",
- "babel-helper-call-delegate": "^6.24.1",
- "babel-helper-define-map": "^6.26.0",
- "babel-helper-explode-assignable-expression": "^6.24.1",
- "babel-helper-function-name": "^6.24.1",
- "babel-helper-get-function-arity": "^6.24.1",
- "babel-helper-hoist-variables": "^6.24.1",
- "babel-helper-optimise-call-expression": "^6.24.1",
- "babel-helper-regex": "^6.26.0",
- "babel-helper-remap-async-to-generator": "^6.24.1",
- "babel-helper-replace-supers": "^6.24.1",
- "babel-messages": "^6.23.0",
"babel-plugin-add-module-exports": "^1.0.4",
- "babel-plugin-check-es2015-constants": "^6.22.0",
- "babel-plugin-syntax-async-functions": "^6.13.0",
- "babel-plugin-syntax-exponentiation-operator": "^6.13.0",
- "babel-plugin-syntax-trailing-function-commas": "^6.22.0",
- "babel-plugin-transform-async-to-generator": "^6.24.1",
- "babel-plugin-transform-es2015-arrow-functions": "^6.22.0",
- "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0",
- "babel-plugin-transform-es2015-block-scoping": "^6.26.0",
- "babel-plugin-transform-es2015-classes": "^6.24.1",
- "babel-plugin-transform-es2015-computed-properties": "^6.24.1",
- "babel-plugin-transform-es2015-destructuring": "^6.23.0",
- "babel-plugin-transform-es2015-duplicate-keys": "^6.24.1",
- "babel-plugin-transform-es2015-for-of": "^6.23.0",
- "babel-plugin-transform-es2015-function-name": "^6.24.1",
- "babel-plugin-transform-es2015-literals": "^6.22.0",
- "babel-plugin-transform-es2015-modules-amd": "^6.24.1",
- "babel-plugin-transform-es2015-modules-commonjs": "^6.26.2",
- "babel-plugin-transform-es2015-modules-systemjs": "^6.24.1",
- "babel-plugin-transform-es2015-modules-umd": "^6.24.1",
- "babel-plugin-transform-es2015-object-super": "^6.24.1",
- "babel-plugin-transform-es2015-parameters": "^6.24.1",
- "babel-plugin-transform-es2015-shorthand-properties": "^6.24.1",
- "babel-plugin-transform-es2015-spread": "^6.22.0",
- "babel-plugin-transform-es2015-sticky-regex": "^6.24.1",
- "babel-plugin-transform-es2015-template-literals": "^6.22.0",
- "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0",
- "babel-plugin-transform-es2015-unicode-regex": "^6.24.1",
- "babel-plugin-transform-exponentiation-operator": "^6.24.1",
- "babel-plugin-transform-regenerator": "^6.26.0",
- "babel-plugin-transform-strict-mode": "^6.24.1",
"babel-preset-env": "^1.7.0",
- "babel-runtime": "^6.26.0",
- "babel-template": "^6.26.0",
- "babel-traverse": "^6.26.0",
- "babel-types": "^6.26.0",
- "babylon": "^6.18.0",
- "balanced-match": "^1.0.2",
- "base": "^0.11.2",
- "base64-js": "^1.5.1",
- "big-integer": "^1.6.52",
- "big.js": "^5.2.2",
- "binary": "^0.3.0",
- "binary-extensions": "^2.2.0",
- "bindings": "^1.5.0",
- "bl": "^4.1.0",
- "bluebird": "^3.7.2",
- "bn.js": "^5.2.1",
- "boxen": "^5.1.2",
- "brace-expansion": "^2.0.1",
- "braces": "^3.0.2",
- "brorand": "^1.1.0",
- "browser-stdout": "^1.3.1",
- "browserify-aes": "^1.2.0",
- "browserify-cipher": "^1.0.1",
- "browserify-des": "^1.0.2",
- "browserify-rsa": "^4.1.0",
- "browserify-sign": "^4.2.2",
- "browserify-zlib": "^0.2.0",
- "browserslist": "^3.2.8",
- "buffer": "^5.7.1",
- "buffer-crc32": "^0.2.13",
- "buffer-from": "^1.1.2",
- "buffer-indexof-polyfill": "^1.0.2",
- "buffer-xor": "^1.0.3",
- "buffers": "^0.1.1",
- "builtin-status-codes": "^3.0.0",
- "cacache": "^12.0.4",
- "cache-base": "^1.0.1",
- "call-bind": "^1.0.5",
- "camelcase": "^6.3.0",
- "caniuse-lite": "^1.0.30001570",
- "catharsis": "^0.8.11",
"chai": "^4.2.0",
- "chai-nightwatch": "^0.5.3",
- "chainsaw": "^0.1.0",
- "chalk": "^1.1.3",
- "check-error": "^1.0.3",
- "chokidar": "^3.5.3",
- "chownr": "^1.1.4",
- "chrome-trace-event": "^1.0.3",
- "chromedriver": "^127.0.2",
- "ci-info": "^3.3.0",
- "cipher-base": "^1.0.4",
- "class-utils": "^0.3.6",
- "cli-boxes": "^2.2.1",
- "cli-cursor": "^3.1.0",
- "cli-spinners": "^2.9.2",
- "cli-table3": "^0.6.3",
- "cliui": "^7.0.4",
- "clone": "^1.0.4",
- "clone-deep": "^4.0.1",
- "collection-visit": "^1.0.0",
- "color-convert": "^2.0.1",
- "color-name": "^1.1.4",
- "colorette": "^2.0.20",
- "combined-stream": "^1.0.8",
- "commander": "^2.20.3",
- "commondir": "^1.0.1",
- "commoner": "^0.10.8",
- "compare-versions": "^6.1.0",
- "component-emitter": "^1.3.1",
- "compress-commons": "^4.1.2",
- "concat-map": "^0.0.1",
- "concat-stream": "^1.6.2",
- "console-browserify": "^1.2.0",
- "constants-browserify": "^1.0.0",
- "convert-source-map": "^0.5.1",
- "copy-concurrently": "^1.0.5",
- "copy-descriptor": "^0.1.1",
- "core-js": "^0.6.1",
- "core-util-is": "^1.0.3",
- "crc-32": "^1.2.2",
- "crc32-stream": "^4.0.3",
- "create-ecdh": "^4.0.4",
- "create-hash": "^1.2.0",
- "create-hmac": "^1.1.7",
- "cross-spawn": "^7.0.3",
- "crypto-browserify": "^3.12.0",
- "cssstyle": "^3.0.0",
- "cyclist": "^1.0.2",
- "data-uri-to-buffer": "^4.0.1",
- "data-urls": "^4.0.0",
- "debug": "^2.6.9",
- "decamelize": "^6.0.0",
- "decimal.js": "^10.4.3",
- "decode-uri-component": "^0.2.2",
- "deep-eql": "^4.1.3",
- "deep-equal": "^2.2.3",
- "deep-is": "^0.1.4",
- "defaults": "^1.0.4",
- "define-data-property": "^1.1.1",
- "define-lazy-prop": "^2.0.0",
- "define-properties": "^1.2.1",
- "define-property": "^2.0.2",
- "defined": "^1.0.1",
- "delayed-stream": "^1.0.0",
- "des.js": "^1.1.0",
- "detect-indent": "^3.0.1",
- "detective": "^4.7.1",
- "devtools-protocol": "^0.0.1140464",
- "didyoumean": "^1.2.2",
- "diff": "^5.0.0",
- "diffie-hellman": "^5.0.3",
- "domain-browser": "^1.2.0",
- "domexception": "^4.0.0",
+ "chromedriver": "^127.0.0",
"dotenv": "^16.0.3",
- "duplexer2": "^0.1.4",
- "duplexify": "^3.7.1",
- "edge-paths": "^3.0.5",
- "edgedriver": "^5.6.1",
- "ejs": "^3.1.8",
- "electron-to-chromium": "^1.4.613",
- "elliptic": "^6.5.4",
- "emoji-regex": "^8.0.0",
- "emojis-list": "^3.0.0",
- "end-of-stream": "^1.4.4",
- "enhanced-resolve": "^4.5.0",
- "entities": "^2.0.3",
- "envinfo": "^7.11.0",
- "errno": "^0.1.8",
- "es-get-iterator": "^1.1.3",
- "escalade": "^3.1.1",
- "escape-string-regexp": "^1.0.5",
- "escodegen": "^2.1.0",
- "eslint-scope": "^4.0.3",
- "esprima": "^4.0.1",
- "esprima-fb": "^15001.1001.0-dev-harmony-fb",
- "esrecurse": "^4.3.0",
- "estraverse": "^1.9.3",
- "esutils": "^1.1.6",
- "eventemitter-asyncresource": "^1.0.0",
- "events": "^3.3.0",
- "evp_bytestokey": "^1.0.3",
- "expand-brackets": "^2.1.4",
- "extend-shallow": "^3.0.2",
- "extglob": "^2.0.4",
- "extract-zip": "^2.0.1",
- "fast-deep-equal": "^3.1.3",
- "fast-fifo": "^1.3.2",
- "fast-json-stable-stringify": "^2.1.0",
- "fastest-levenshtein": "^1.0.16",
- "fd-slicer": "^1.1.0",
- "fetch-blob": "^3.2.0",
- "figgy-pudding": "^3.5.2",
- "file-uri-to-path": "^1.0.0",
- "filelist": "^1.0.4",
- "fill-range": "^7.0.1",
- "find-cache-dir": "^2.1.0",
- "find-up": "^5.0.0",
- "flat": "^5.0.2",
- "flush-write-stream": "^1.1.1",
- "follow-redirects": "^1.15.3",
- "for-each": "^0.3.3",
- "for-in": "^1.0.2",
- "form-data": "^4.0.0",
- "formdata-polyfill": "^4.0.10",
- "fragment-cache": "^0.2.1",
- "from2": "^2.3.0",
- "fs-constants": "^1.0.0",
- "fs-readdir-recursive": "^0.1.2",
- "fs-write-stream-atomic": "^1.0.10",
- "fs.realpath": "^1.0.0",
- "fsevents": "^2.3.3",
- "fstream": "^1.0.12",
- "function-bind": "^1.1.2",
- "functions-have-names": "^1.2.3",
- "geckodriver": "^4.4.2",
- "get-caller-file": "^2.0.5",
- "get-func-name": "^2.0.2",
- "get-intrinsic": "^1.2.2",
- "get-stdin": "^4.0.1",
- "get-stream": "^5.2.0",
- "get-value": "^2.0.6",
- "glob": "^7.2.0",
- "glob-parent": "^5.1.2",
- "globals": "^6.4.1",
- "gopd": "^1.0.1",
- "graceful-fs": "^4.2.11",
- "has-ansi": "^2.0.0",
- "has-bigints": "^1.0.2",
- "has-flag": "^4.0.0",
- "has-property-descriptors": "^1.0.1",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3",
- "has-tostringtag": "^1.0.0",
- "has-value": "^1.0.0",
- "has-values": "^1.0.0",
- "hash-base": "^3.1.0",
- "hash.js": "^1.1.7",
- "hasown": "^2.0.0",
- "hdr-histogram-js": "^2.0.3",
- "hdr-histogram-percentiles-obj": "^3.0.0",
- "he": "^1.2.0",
- "hmac-drbg": "^1.0.1",
- "html-encoding-sniffer": "^3.0.0",
- "http-proxy-agent": "^7.0.0",
- "https-browserify": "^1.0.0",
- "https-proxy-agent": "^5.0.1",
- "iconv-lite": "^0.4.24",
- "ieee754": "^1.2.1",
- "iferr": "^0.1.5",
- "immediate": "^3.0.6",
- "import-local": "^3.1.0",
- "imurmurhash": "^0.1.4",
- "infer-owner": "^1.0.4",
- "inflight": "^1.0.6",
- "inherits": "^2.0.4",
- "internal-slot": "^1.0.6",
- "interpret": "^2.2.0",
- "invariant": "^2.2.4",
- "ip-regex": "^4.3.0",
- "is-accessor-descriptor": "^1.0.1",
- "is-arguments": "^1.1.1",
- "is-array-buffer": "^3.0.2",
- "is-bigint": "^1.0.4",
- "is-binary-path": "^2.1.0",
- "is-boolean-object": "^1.1.2",
- "is-buffer": "^1.1.6",
- "is-callable": "^1.2.7",
- "is-core-module": "^2.13.1",
- "is-data-descriptor": "^1.0.1",
- "is-date-object": "^1.0.5",
- "is-descriptor": "^1.0.3",
- "is-docker": "^2.2.1",
- "is-extendable": "^1.0.1",
- "is-extglob": "^2.1.1",
- "is-finite": "^1.1.0",
- "is-fullwidth-code-point": "^3.0.0",
- "is-glob": "^4.0.3",
- "is-integer": "^1.0.7",
- "is-interactive": "^1.0.0",
- "is-map": "^2.0.2",
- "is-number": "^7.0.0",
- "is-number-object": "^1.0.7",
- "is-plain-obj": "^2.1.0",
- "is-plain-object": "^2.0.4",
- "is-potential-custom-element-name": "^1.0.1",
- "is-regex": "^1.1.4",
- "is-set": "^2.0.2",
- "is-shared-array-buffer": "^1.0.2",
- "is-string": "^1.0.7",
- "is-symbol": "^1.0.4",
- "is-typed-array": "^1.1.12",
- "is-unicode-supported": "^0.1.0",
- "is-url": "^1.2.4",
- "is-weakmap": "^2.0.1",
- "is-weakset": "^2.0.2",
- "is-windows": "^1.0.2",
- "is-wsl": "^2.2.0",
- "is2": "^2.0.9",
- "isarray": "^2.0.5",
- "isexe": "^3.1.1",
- "isobject": "^3.0.1",
- "jake": "^10.8.7",
- "js-tokens": "^1.0.0",
- "js-yaml": "^4.1.0",
- "js2xmlparser": "^4.0.2",
+ "edgedriver": "^5.3.8",
+ "geckodriver": "^4.2.1",
"jsdoc": "3.6.5",
- "jsdom": "^21.1.2",
- "jsesc": "^0.5.0",
- "json-parse-better-errors": "^1.0.2",
- "json-schema-traverse": "^0.4.1",
- "json5": "^1.0.2",
- "jszip": "^3.10.1",
- "kind-of": "^6.0.3",
- "klaw": "^3.0.0",
- "lazystream": "^1.0.1",
- "left-pad": "^0.0.3",
- "leven": "^1.0.2",
- "lie": "^3.3.0",
- "line-numbers": "^0.2.0",
- "linkify-it": "^2.2.0",
- "listenercount": "^1.0.1",
- "loader-runner": "^2.4.0",
- "loader-utils": "^1.4.2",
- "locate-path": "^6.0.0",
- "lodash": "^3.10.1",
- "lodash._arraycopy": "^3.0.0",
- "lodash._arrayeach": "^3.0.0",
- "lodash._baseassign": "^3.2.0",
- "lodash._baseclone": "^3.3.0",
- "lodash._basecopy": "^3.0.1",
- "lodash._basefor": "^3.0.3",
- "lodash._bindcallback": "^3.0.1",
- "lodash._getnative": "^3.9.1",
- "lodash._isiterateecall": "^3.0.9",
- "lodash.clone": "^3.0.3",
- "lodash.defaults": "^4.2.0",
- "lodash.defaultsdeep": "^4.6.1",
- "lodash.difference": "^4.5.0",
- "lodash.escape": "^4.0.1",
- "lodash.flatten": "^4.4.0",
- "lodash.isarguments": "^3.1.0",
- "lodash.isarray": "^3.0.4",
- "lodash.isplainobject": "^4.0.6",
- "lodash.keys": "^3.1.2",
- "lodash.merge": "^4.6.2",
- "lodash.pick": "^4.4.0",
- "lodash.union": "^4.6.0",
- "log-symbols": "^4.1.0",
- "loglevel": "^1.8.1",
- "loglevel-plugin-prefix": "^0.8.4",
- "loose-envify": "^1.4.0",
- "loupe": "^2.3.7",
- "lru-cache": "^6.0.0",
- "make-dir": "^2.1.0",
- "map-cache": "^0.2.2",
- "map-visit": "^1.0.0",
- "markdown-it": "^10.0.0",
- "markdown-it-anchor": "^5.3.0",
- "marked": "^0.8.2",
- "md5.js": "^1.3.5",
- "mdurl": "^1.0.1",
- "memory-fs": "^0.4.1",
- "micromatch": "^3.1.10",
- "miller-rabin": "^4.0.1",
- "mime-db": "^1.52.0",
- "mime-types": "^2.1.35",
- "mimic-fn": "^2.1.0",
"minami": "^1.2.3",
- "minimalistic-assert": "^1.0.1",
- "minimalistic-crypto-utils": "^1.0.1",
- "minimatch": "^5.0.1",
- "minimist": "^1.2.8",
- "mississippi": "^3.0.0",
- "mixin-deep": "^1.3.2",
- "mkdirp": "^1.0.4",
- "mkdirp-classic": "^0.5.3",
"mocha": "10.1.0",
- "move-concurrently": "^1.0.1",
- "ms": "^2.0.0",
- "nan": "^2.18.0",
- "nanoid": "^3.3.3",
- "nanomatch": "^1.2.13",
- "neo-async": "^2.6.2",
- "nice-napi": "^1.0.2",
"nightwatch": "^3.3.2",
- "nightwatch-axe-verbose": "^2.2.2",
- "node-addon-api": "^3.2.1",
- "node-domexception": "^1.0.0",
- "node-fetch": "^3.3.2",
- "node-gyp-build": "^4.7.1",
- "node-libs-browser": "^2.2.1",
- "normalize-path": "^3.0.0",
- "nwsapi": "^2.2.7",
- "object-assign": "^4.1.1",
- "object-copy": "^0.1.0",
- "object-inspect": "^1.13.1",
- "object-is": "^1.1.5",
- "object-keys": "^1.1.1",
- "object-visit": "^1.0.1",
- "object.assign": "^4.1.5",
- "object.pick": "^1.3.0",
- "once": "^1.4.0",
- "onetime": "^5.1.2",
- "open": "^8.4.2",
- "ora": "^5.4.1",
- "os-browserify": "^0.3.0",
- "output-file-sync": "^1.1.2",
- "p-limit": "^3.1.0",
- "p-locate": "^5.0.0",
- "p-try": "^2.2.0",
- "pako": "^1.0.11",
- "parallel-transform": "^1.2.0",
- "parse-asn1": "^5.1.6",
- "parse5": "^7.1.2",
- "pascalcase": "^0.1.1",
- "path-browserify": "^0.0.1",
- "path-dirname": "^1.0.2",
- "path-exists": "^4.0.0",
- "path-is-absolute": "^1.0.1",
- "path-key": "^3.1.1",
- "path-parse": "^1.0.7",
- "pathval": "^1.1.1",
- "pbkdf2": "^3.1.2",
- "pend": "^1.2.0",
- "picomatch": "^2.3.1",
- "pify": "^4.0.1",
- "piscina": "^3.2.0",
- "pkg-dir": "^3.0.0",
- "posix-character-classes": "^0.1.1",
- "private": "^0.1.8",
- "process": "^0.11.10",
- "process-nextick-args": "^2.0.1",
- "promise-inflight": "^1.0.1",
- "proxy-from-env": "^1.1.0",
- "prr": "^1.0.1",
- "psl": "^1.9.0",
- "public-encrypt": "^4.0.3",
- "pump": "^3.0.0",
- "pumpify": "^1.5.1",
- "punycode": "^2.3.1",
- "q": "^1.5.1",
- "qs": "^6.11.2",
- "querystring-es3": "^0.2.1",
- "querystringify": "^2.2.0",
- "queue-tick": "^1.0.1",
- "randombytes": "^2.1.0",
- "randomfill": "^1.0.4",
- "readable-stream": "^3.6.2",
- "readdir-glob": "^1.1.3",
- "readdirp": "^3.6.0",
- "recast": "^0.11.23",
- "rechoir": "^0.7.1",
- "regenerate": "^1.4.2",
- "regenerator-babel": "^0.8.13-2",
- "regenerator-runtime": "^0.11.1",
- "regenerator-transform": "^0.10.1",
- "regex-not": "^1.0.2",
- "regexp.prototype.flags": "^1.5.1",
- "regexpu": "^1.3.0",
- "regexpu-core": "^2.0.0",
- "regjsgen": "^0.2.0",
- "regjsparser": "^0.1.5",
- "remove-trailing-separator": "^1.1.0",
- "repeat-element": "^1.1.4",
- "repeat-string": "^1.6.1",
- "repeating": "^1.1.3",
- "require-directory": "^2.1.1",
- "requires-port": "^1.0.0",
- "requizzle": "^0.2.4",
- "resolve": "^1.22.8",
- "resolve-cwd": "^3.0.0",
- "resolve-from": "^5.0.0",
- "resolve-url": "^0.2.1",
- "restore-cursor": "^3.1.0",
- "ret": "^0.1.15",
- "rimraf": "^3.0.2",
- "ripemd160": "^2.0.2",
- "rollup": "^4.6.1",
- "rrweb-cssom": "^0.6.0",
- "run-queue": "^1.0.3",
- "safe-buffer": "^5.2.1",
- "safe-regex": "^1.1.0",
- "safer-buffer": "^2.1.2",
- "saxes": "^6.0.0",
- "schema-utils": "^1.0.0",
- "selenium-webdriver": "^4.14.0",
- "semver": "^5.7.2",
- "serialize-javascript": "^6.0.1",
- "set-function-length": "^1.1.1",
- "set-function-name": "^2.0.1",
- "set-value": "^2.0.1",
- "setimmediate": "^1.0.5",
- "sha.js": "^2.4.11",
- "shallow-clone": "^3.0.1",
- "shebang-command": "^2.0.0",
- "shebang-regex": "^1.0.0",
- "side-channel": "^1.0.4",
- "signal-exit": "^3.0.7",
- "slash": "^1.0.0",
- "smob": "^1.4.1",
- "snapdragon": "^0.8.2",
- "snapdragon-node": "^2.1.1",
- "snapdragon-util": "^3.0.1",
- "source-list-map": "^2.0.1",
- "source-map": "^0.4.4",
- "source-map-resolve": "^0.5.3",
- "source-map-support": "^0.2.10",
- "source-map-url": "^0.4.1",
- "split-string": "^3.1.0",
- "sprintf-js": "^1.0.3",
- "ssri": "^6.0.2",
- "stacktrace-parser": "^0.1.10",
- "static-extend": "^0.1.2",
- "stop-iteration-iterator": "^1.0.0",
- "stream-browserify": "^2.0.2",
- "stream-each": "^1.2.3",
- "stream-http": "^2.8.3",
- "stream-shift": "^1.0.3",
- "streamx": "^2.15.6",
- "string_decoder": "^1.3.0",
- "string-width": "^4.2.3",
- "strip-ansi": "^3.0.1",
- "strip-json-comments": "^3.1.1",
- "supports-color": "^2.0.0",
- "supports-preserve-symlinks-flag": "^1.0.0",
- "symbol-tree": "^3.2.4",
- "taffydb": "^2.6.2",
- "tapable": "^1.1.3",
- "tar-fs": "^3.0.4",
- "tar-stream": "^2.2.0",
- "tcp-port-used": "^1.0.2",
- "terser": "^5.26.0",
- "terser-webpack-plugin": "^1.4.5",
- "through": "^2.3.8",
- "through2": "^2.0.5",
- "timers-browserify": "^2.0.12",
- "tmp": "^0.2.1",
- "to-arraybuffer": "^1.0.1",
- "to-fast-properties": "^1.0.3",
- "to-object-path": "^0.3.0",
- "to-regex": "^3.0.2",
- "to-regex-range": "^5.0.1",
- "tough-cookie": "^4.1.3",
- "tr46": "^4.1.1",
- "traverse": "^0.3.9",
- "trim-right": "^1.0.1",
- "tty-browserify": "^0.0.0",
- "type-detect": "^4.0.8",
- "type-fest": "^0.20.2",
- "typedarray": "^0.0.6",
- "uc.micro": "^1.0.6",
- "underscore": "^1.10.2",
- "undici-types": "^5.26.5",
- "union-value": "^1.0.1",
- "unique-filename": "^1.1.1",
- "unique-slug": "^2.0.2",
- "universalify": "^0.2.0",
- "unset-value": "^1.0.0",
- "untildify": "^4.0.0",
- "unzipper": "^0.10.14",
- "upath": "^1.2.0",
- "uri-js": "^4.4.1",
- "urix": "^0.1.0",
- "url": "^0.11.3",
- "url-parse": "^1.5.10",
- "use": "^3.1.1",
- "util": "^0.11.1",
- "util-deprecate": "^1.0.2",
- "uuid": "^8.3.2",
- "vm-browserify": "^1.1.2",
- "w3c-xmlserializer": "^4.0.0",
- "watchpack": "^1.7.5",
- "watchpack-chokidar2": "^2.0.1",
- "wcwidth": "^1.0.1",
- "web-streams-polyfill": "^3.2.1",
- "webidl-conversions": "^7.0.0",
- "webpack": "^4.47.0",
- "webpack-cli": "^4.10.0",
- "webpack-merge": "^5.10.0",
- "webpack-sources": "^1.4.3",
- "whatwg-encoding": "^2.0.0",
- "whatwg-mimetype": "^3.0.0",
- "whatwg-url": "^12.0.1",
- "which": "^4.0.0",
- "which-boxed-primitive": "^1.0.2",
- "which-collection": "^1.0.1",
- "which-typed-array": "^1.1.13",
- "widest-line": "^3.1.0",
- "wildcard": "^2.0.1",
- "worker-farm": "^1.7.0",
- "workerpool": "^6.2.1",
- "wrap-ansi": "^7.0.0",
- "wrappy": "^1.0.2",
- "ws": "^8.15.1",
- "xml-name-validator": "^4.0.0",
- "xmlchars": "^2.2.0",
- "xmlcreate": "^2.0.4",
- "xtend": "^4.0.2",
- "y18n": "^5.0.8",
- "yallist": "^4.0.0",
- "yargs": "^16.2.0",
- "yargs-parser": "^20.2.4",
- "yargs-unparser": "^2.0.0",
- "yauzl": "^2.10.0",
- "yocto-queue": "^0.1.0",
- "zip-stream": "^4.1.1"
+ "rollup": "^4.6.1"
}
},
+ "../src": {
+ "extraneous": true
+ },
"node_modules/@assemblyscript/loader": {
"version": "0.10.1",
"resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz",
@@ -695,15 +59,6 @@
"node": ">=0.1.90"
}
},
- "node_modules/@discoveryjs/json-ext": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
- "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==",
- "dev": true,
- "engines": {
- "node": ">=10.0.0"
- }
- },
"node_modules/@jridgewell/gen-mapping": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
@@ -1141,357 +496,100 @@
"url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
- "node_modules/@webassemblyjs/ast": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz",
- "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==",
+ "node_modules/@zip.js/zip.js": {
+ "version": "2.7.48",
+ "resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.7.48.tgz",
+ "integrity": "sha512-J7cliimZ2snAbr0IhLx2U8BwfA1pKucahKzTpFtYq4hEgKxwvFJcIjCIVNPwQpfVab7iVP+AKmoH1gidBlyhiQ==",
"dev": true,
- "dependencies": {
- "@webassemblyjs/helper-module-context": "1.9.0",
- "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
- "@webassemblyjs/wast-parser": "1.9.0"
+ "engines": {
+ "bun": ">=0.7.0",
+ "deno": ">=1.0.0",
+ "node": ">=16.5.0"
}
},
- "node_modules/@webassemblyjs/floating-point-hex-parser": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz",
- "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==",
- "dev": true
- },
- "node_modules/@webassemblyjs/helper-api-error": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz",
- "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==",
- "dev": true
- },
- "node_modules/@webassemblyjs/helper-buffer": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz",
- "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==",
+ "node_modules/abab": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
+ "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==",
+ "deprecated": "Use your platform's native atob() and btoa() methods instead",
"dev": true
},
- "node_modules/@webassemblyjs/helper-code-frame": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz",
- "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==",
+ "node_modules/acorn": {
+ "version": "8.11.2",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz",
+ "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==",
"dev": true,
- "dependencies": {
- "@webassemblyjs/wast-printer": "1.9.0"
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
}
},
- "node_modules/@webassemblyjs/helper-fsm": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz",
- "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==",
+ "node_modules/acorn-babel": {
+ "version": "0.11.1-38",
+ "resolved": "https://registry.npmjs.org/acorn-babel/-/acorn-babel-0.11.1-38.tgz",
+ "integrity": "sha512-lsXiveYSiYLMo9flCOZRtfW/txWHGLvrqvpQ/aVIHmwxSFXagy94crhyAmSJ1qttKmSuPU9SmmIFJqdbr3nS0Q==",
"dev": true
},
- "node_modules/@webassemblyjs/helper-module-context": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz",
- "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==",
+ "node_modules/acorn-globals": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz",
+ "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==",
"dev": true,
"dependencies": {
- "@webassemblyjs/ast": "1.9.0"
+ "acorn": "^8.1.0",
+ "acorn-walk": "^8.0.2"
}
},
- "node_modules/@webassemblyjs/helper-wasm-bytecode": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz",
- "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==",
- "dev": true
- },
- "node_modules/@webassemblyjs/helper-wasm-section": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz",
- "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==",
+ "node_modules/acorn-walk": {
+ "version": "8.3.1",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.1.tgz",
+ "integrity": "sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==",
"dev": true,
- "dependencies": {
- "@webassemblyjs/ast": "1.9.0",
- "@webassemblyjs/helper-buffer": "1.9.0",
- "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
- "@webassemblyjs/wasm-gen": "1.9.0"
+ "engines": {
+ "node": ">=0.4.0"
}
},
- "node_modules/@webassemblyjs/ieee754": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz",
- "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==",
+ "node_modules/agent-base": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
+ "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
"dev": true,
"dependencies": {
- "@xtuc/ieee754": "^1.2.0"
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
}
},
- "node_modules/@webassemblyjs/leb128": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz",
- "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==",
+ "node_modules/agent-base/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dev": true,
"dependencies": {
- "@xtuc/long": "4.2.2"
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
}
},
- "node_modules/@webassemblyjs/utf8": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz",
- "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==",
+ "node_modules/agent-base/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
- "node_modules/@webassemblyjs/wasm-edit": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz",
- "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==",
- "dev": true,
- "dependencies": {
- "@webassemblyjs/ast": "1.9.0",
- "@webassemblyjs/helper-buffer": "1.9.0",
- "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
- "@webassemblyjs/helper-wasm-section": "1.9.0",
- "@webassemblyjs/wasm-gen": "1.9.0",
- "@webassemblyjs/wasm-opt": "1.9.0",
- "@webassemblyjs/wasm-parser": "1.9.0",
- "@webassemblyjs/wast-printer": "1.9.0"
- }
- },
- "node_modules/@webassemblyjs/wasm-gen": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz",
- "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==",
- "dev": true,
- "dependencies": {
- "@webassemblyjs/ast": "1.9.0",
- "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
- "@webassemblyjs/ieee754": "1.9.0",
- "@webassemblyjs/leb128": "1.9.0",
- "@webassemblyjs/utf8": "1.9.0"
- }
- },
- "node_modules/@webassemblyjs/wasm-opt": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz",
- "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==",
- "dev": true,
- "dependencies": {
- "@webassemblyjs/ast": "1.9.0",
- "@webassemblyjs/helper-buffer": "1.9.0",
- "@webassemblyjs/wasm-gen": "1.9.0",
- "@webassemblyjs/wasm-parser": "1.9.0"
- }
- },
- "node_modules/@webassemblyjs/wasm-parser": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz",
- "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==",
- "dev": true,
- "dependencies": {
- "@webassemblyjs/ast": "1.9.0",
- "@webassemblyjs/helper-api-error": "1.9.0",
- "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
- "@webassemblyjs/ieee754": "1.9.0",
- "@webassemblyjs/leb128": "1.9.0",
- "@webassemblyjs/utf8": "1.9.0"
- }
- },
- "node_modules/@webassemblyjs/wast-parser": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz",
- "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==",
- "dev": true,
- "dependencies": {
- "@webassemblyjs/ast": "1.9.0",
- "@webassemblyjs/floating-point-hex-parser": "1.9.0",
- "@webassemblyjs/helper-api-error": "1.9.0",
- "@webassemblyjs/helper-code-frame": "1.9.0",
- "@webassemblyjs/helper-fsm": "1.9.0",
- "@xtuc/long": "4.2.2"
- }
- },
- "node_modules/@webassemblyjs/wast-printer": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz",
- "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==",
- "dev": true,
- "dependencies": {
- "@webassemblyjs/ast": "1.9.0",
- "@webassemblyjs/wast-parser": "1.9.0",
- "@xtuc/long": "4.2.2"
- }
- },
- "node_modules/@webpack-cli/configtest": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz",
- "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==",
- "dev": true,
- "peerDependencies": {
- "webpack": "4.x.x || 5.x.x",
- "webpack-cli": "4.x.x"
- }
- },
- "node_modules/@webpack-cli/info": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz",
- "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==",
- "dev": true,
- "dependencies": {
- "envinfo": "^7.7.3"
- },
- "peerDependencies": {
- "webpack-cli": "4.x.x"
- }
- },
- "node_modules/@webpack-cli/serve": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz",
- "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==",
- "dev": true,
- "peerDependencies": {
- "webpack-cli": "4.x.x"
- },
- "peerDependenciesMeta": {
- "webpack-dev-server": {
- "optional": true
- }
- }
- },
- "node_modules/@xtuc/ieee754": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
- "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
- "dev": true
- },
- "node_modules/@xtuc/long": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
- "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
- "dev": true
- },
- "node_modules/@zip.js/zip.js": {
- "version": "2.7.48",
- "resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.7.48.tgz",
- "integrity": "sha512-J7cliimZ2snAbr0IhLx2U8BwfA1pKucahKzTpFtYq4hEgKxwvFJcIjCIVNPwQpfVab7iVP+AKmoH1gidBlyhiQ==",
- "dev": true,
- "engines": {
- "bun": ">=0.7.0",
- "deno": ">=1.0.0",
- "node": ">=16.5.0"
- }
- },
- "node_modules/abab": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
- "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==",
- "deprecated": "Use your platform's native atob() and btoa() methods instead",
- "dev": true
- },
- "node_modules/acorn": {
- "version": "8.11.2",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz",
- "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==",
- "dev": true,
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/acorn-babel": {
- "version": "0.11.1-38",
- "resolved": "https://registry.npmjs.org/acorn-babel/-/acorn-babel-0.11.1-38.tgz",
- "integrity": "sha512-lsXiveYSiYLMo9flCOZRtfW/txWHGLvrqvpQ/aVIHmwxSFXagy94crhyAmSJ1qttKmSuPU9SmmIFJqdbr3nS0Q==",
- "dev": true
- },
- "node_modules/acorn-globals": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz",
- "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==",
- "dev": true,
- "dependencies": {
- "acorn": "^8.1.0",
- "acorn-walk": "^8.0.2"
- }
- },
- "node_modules/acorn-walk": {
- "version": "8.3.1",
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.1.tgz",
- "integrity": "sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==",
- "dev": true,
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/agent-base": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
- "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
- "dev": true,
- "dependencies": {
- "debug": "^4.3.4"
- },
- "engines": {
- "node": ">= 14"
- }
- },
- "node_modules/agent-base/node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/agent-base/node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- },
- "node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/ajv-errors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz",
- "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==",
- "dev": true,
- "peerDependencies": {
- "ajv": ">=5.0.0"
- }
- },
- "node_modules/ajv-keywords": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
- "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
- "dev": true,
- "peerDependencies": {
- "ajv": "^6.9.1"
- }
- },
- "node_modules/amdefine": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
- "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==",
+ "node_modules/amdefine": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
+ "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==",
"dev": true,
"engines": {
"node": ">=0.4.2"
@@ -1570,12 +668,6 @@
"node": ">= 8"
}
},
- "node_modules/aproba": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
- "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
- "dev": true
- },
"node_modules/archiver": {
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.2.tgz",
@@ -1669,33 +761,6 @@
"deep-equal": "^2.0.5"
}
},
- "node_modules/arr-diff": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
- "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/arr-flatten": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
- "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/arr-union": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
- "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/array-buffer-byte-length": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz",
@@ -1709,58 +774,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/array-unique": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
- "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/asn1.js": {
- "version": "5.4.1",
- "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz",
- "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==",
- "dev": true,
- "dependencies": {
- "bn.js": "^4.0.0",
- "inherits": "^2.0.1",
- "minimalistic-assert": "^1.0.0",
- "safer-buffer": "^2.1.0"
- }
- },
- "node_modules/asn1.js/node_modules/bn.js": {
- "version": "4.12.0",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
- "dev": true
- },
- "node_modules/assert": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.1.tgz",
- "integrity": "sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==",
- "dev": true,
- "dependencies": {
- "object.assign": "^4.1.4",
- "util": "^0.10.4"
- }
- },
- "node_modules/assert/node_modules/inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
- "dev": true
- },
- "node_modules/assert/node_modules/util": {
- "version": "0.10.4",
- "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
- "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
- "dev": true,
- "dependencies": {
- "inherits": "2.0.3"
- }
- },
"node_modules/assertion-error": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
@@ -1770,15 +783,6 @@
"node": "*"
}
},
- "node_modules/assign-symbols": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
- "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/ast-types": {
"version": "0.7.8",
"resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.7.8.tgz",
@@ -1794,36 +798,12 @@
"integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==",
"dev": true
},
- "node_modules/async-each": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.6.tgz",
- "integrity": "sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ]
- },
"node_modules/asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
"dev": true
},
- "node_modules/atob": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
- "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
- "dev": true,
- "bin": {
- "atob": "bin/atob.js"
- },
- "engines": {
- "node": ">= 4.5.0"
- }
- },
"node_modules/available-typed-arrays": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
@@ -1846,9 +826,9 @@
}
},
"node_modules/axios": {
- "version": "1.7.3",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.3.tgz",
- "integrity": "sha512-Ar7ND9pU99eJ9GpoGQKhKf58GpUOgnzuaB7ueNQ5BMi0p+LZ5oaEnfF999fAArcTIBwXTCHAmGcHOZJaWPq9Nw==",
+ "version": "1.7.5",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.5.tgz",
+ "integrity": "sha512-fZu86yCo+svH3uqJ/yTdQ0QHpQu5oL+/QE+QPSv6BZSkDAoky9vytxp7u5qk83OJFS3kEBcesWni9WTZAv3tSw==",
"dev": true,
"dependencies": {
"follow-redirects": "^1.15.6",
@@ -2582,36 +1562,6 @@
"streamx": "^2.18.0"
}
},
- "node_modules/base": {
- "version": "0.11.2",
- "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
- "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
- "dev": true,
- "dependencies": {
- "cache-base": "^1.0.1",
- "class-utils": "^0.3.5",
- "component-emitter": "^1.2.1",
- "define-property": "^1.0.0",
- "isobject": "^3.0.1",
- "mixin-deep": "^1.2.0",
- "pascalcase": "^0.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/base/node_modules/define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/base64-js": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
@@ -2641,59 +1591,19 @@
"node": ">=10.0.0"
}
},
- "node_modules/big-integer": {
- "version": "1.6.52",
- "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz",
- "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==",
+ "node_modules/binary-extensions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
"dev": true,
"engines": {
- "node": ">=0.6"
+ "node": ">=8"
}
},
- "node_modules/big.js": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
- "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/binary": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz",
- "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==",
- "dev": true,
- "dependencies": {
- "buffers": "~0.1.1",
- "chainsaw": "~0.1.0"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/bindings": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
- "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
- "dev": true,
- "dependencies": {
- "file-uri-to-path": "1.0.0"
- }
- },
- "node_modules/bl": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
- "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
+ "node_modules/bl": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
+ "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
"dev": true,
"dependencies": {
"buffer": "^5.5.0",
@@ -2707,12 +1617,6 @@
"integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
"dev": true
},
- "node_modules/bn.js": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz",
- "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==",
- "dev": true
- },
"node_modules/boxen": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz",
@@ -2799,94 +1703,12 @@
"node": ">=8"
}
},
- "node_modules/brorand": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
- "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==",
- "dev": true
- },
"node_modules/browser-stdout": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
"integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
"dev": true
},
- "node_modules/browserify-aes": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
- "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
- "dev": true,
- "dependencies": {
- "buffer-xor": "^1.0.3",
- "cipher-base": "^1.0.0",
- "create-hash": "^1.1.0",
- "evp_bytestokey": "^1.0.3",
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
- }
- },
- "node_modules/browserify-cipher": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
- "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
- "dev": true,
- "dependencies": {
- "browserify-aes": "^1.0.4",
- "browserify-des": "^1.0.0",
- "evp_bytestokey": "^1.0.0"
- }
- },
- "node_modules/browserify-des": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
- "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
- "dev": true,
- "dependencies": {
- "cipher-base": "^1.0.1",
- "des.js": "^1.0.0",
- "inherits": "^2.0.1",
- "safe-buffer": "^5.1.2"
- }
- },
- "node_modules/browserify-rsa": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz",
- "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==",
- "dev": true,
- "dependencies": {
- "bn.js": "^5.0.0",
- "randombytes": "^2.0.1"
- }
- },
- "node_modules/browserify-sign": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz",
- "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==",
- "dev": true,
- "dependencies": {
- "bn.js": "^5.2.1",
- "browserify-rsa": "^4.1.0",
- "create-hash": "^1.2.0",
- "create-hmac": "^1.1.7",
- "elliptic": "^6.5.4",
- "inherits": "^2.0.4",
- "parse-asn1": "^5.1.6",
- "readable-stream": "^3.6.2",
- "safe-buffer": "^5.2.1"
- },
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/browserify-zlib": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
- "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
- "dev": true,
- "dependencies": {
- "pako": "~1.0.5"
- }
- },
"node_modules/browserslist": {
"version": "3.2.8",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz",
@@ -2939,124 +1761,6 @@
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
"dev": true
},
- "node_modules/buffer-indexof-polyfill": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz",
- "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==",
- "dev": true,
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/buffer-xor": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
- "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==",
- "dev": true
- },
- "node_modules/buffers": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz",
- "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==",
- "dev": true,
- "engines": {
- "node": ">=0.2.0"
- }
- },
- "node_modules/builtin-status-codes": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
- "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==",
- "dev": true
- },
- "node_modules/cacache": {
- "version": "12.0.4",
- "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz",
- "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==",
- "dev": true,
- "dependencies": {
- "bluebird": "^3.5.5",
- "chownr": "^1.1.1",
- "figgy-pudding": "^3.5.1",
- "glob": "^7.1.4",
- "graceful-fs": "^4.1.15",
- "infer-owner": "^1.0.3",
- "lru-cache": "^5.1.1",
- "mississippi": "^3.0.0",
- "mkdirp": "^0.5.1",
- "move-concurrently": "^1.0.1",
- "promise-inflight": "^1.0.1",
- "rimraf": "^2.6.3",
- "ssri": "^6.0.1",
- "unique-filename": "^1.1.1",
- "y18n": "^4.0.0"
- }
- },
- "node_modules/cacache/node_modules/lru-cache": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dev": true,
- "dependencies": {
- "yallist": "^3.0.2"
- }
- },
- "node_modules/cacache/node_modules/mkdirp": {
- "version": "0.5.6",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
- "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
- "dev": true,
- "dependencies": {
- "minimist": "^1.2.6"
- },
- "bin": {
- "mkdirp": "bin/cmd.js"
- }
- },
- "node_modules/cacache/node_modules/rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- }
- },
- "node_modules/cacache/node_modules/y18n": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
- "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
- "dev": true
- },
- "node_modules/cacache/node_modules/yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true
- },
- "node_modules/cache-base": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
- "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
- "dev": true,
- "dependencies": {
- "collection-visit": "^1.0.0",
- "component-emitter": "^1.2.1",
- "get-value": "^2.0.6",
- "has-value": "^1.0.0",
- "isobject": "^3.0.1",
- "set-value": "^2.0.0",
- "to-object-path": "^0.3.0",
- "union-value": "^1.0.0",
- "unset-value": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/call-bind": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
@@ -3151,18 +1855,6 @@
"node": ">= 12.0.0"
}
},
- "node_modules/chainsaw": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz",
- "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==",
- "dev": true,
- "dependencies": {
- "traverse": ">=0.3.0 <0.4"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/chalk": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
@@ -3218,30 +1910,15 @@
"fsevents": "~2.3.2"
}
},
- "node_modules/chownr": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
- "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
- "dev": true
- },
- "node_modules/chrome-trace-event": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
- "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
- "dev": true,
- "engines": {
- "node": ">=6.0"
- }
- },
"node_modules/chromedriver": {
- "version": "127.0.2",
- "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-127.0.2.tgz",
- "integrity": "sha512-mYfJ/8FqzsdFOs2rPiAI4y0suFnv78cRnzZK0MHdSfSIDeRPbqZz0rNX4lrXt14hXc9vqXa+a8cMxlrhWtXKSQ==",
+ "version": "127.0.3",
+ "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-127.0.3.tgz",
+ "integrity": "sha512-trUHkFt0n7jGzNOgkO1srOJfz50kKyAGJ016PyV0hrtyKNIGnOC9r3Jlssz19UoEjSzI/1g2shEiIFtDbBYVaw==",
"dev": true,
"hasInstallScript": true,
"dependencies": {
"@testim/chrome-version": "^1.1.4",
- "axios": "^1.6.7",
+ "axios": "^1.7.4",
"compare-versions": "^6.1.0",
"extract-zip": "^2.0.1",
"proxy-agent": "^6.4.0",
@@ -3261,56 +1938,6 @@
"integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==",
"dev": true
},
- "node_modules/cipher-base": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
- "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
- "dev": true,
- "dependencies": {
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
- }
- },
- "node_modules/class-utils": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
- "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
- "dev": true,
- "dependencies": {
- "arr-union": "^3.1.0",
- "define-property": "^0.2.5",
- "isobject": "^3.0.0",
- "static-extend": "^0.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/is-descriptor": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz",
- "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==",
- "dev": true,
- "dependencies": {
- "is-accessor-descriptor": "^1.0.1",
- "is-data-descriptor": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
"node_modules/cli-boxes": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz",
@@ -3403,33 +2030,6 @@
"node": ">=0.8"
}
},
- "node_modules/clone-deep": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
- "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
- "dev": true,
- "dependencies": {
- "is-plain-object": "^2.0.4",
- "kind-of": "^6.0.2",
- "shallow-clone": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/collection-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
- "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==",
- "dev": true,
- "dependencies": {
- "map-visit": "^1.0.0",
- "object-visit": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
@@ -3448,12 +2048,6 @@
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "node_modules/colorette": {
- "version": "2.0.20",
- "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
- "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
- "dev": true
- },
"node_modules/combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
@@ -3472,12 +2066,6 @@
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"dev": true
},
- "node_modules/commondir": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
- "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
- "dev": true
- },
"node_modules/commoner": {
"version": "0.10.8",
"resolved": "https://registry.npmjs.org/commoner/-/commoner-0.10.8.tgz",
@@ -3557,15 +2145,6 @@
"integrity": "sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg==",
"dev": true
},
- "node_modules/component-emitter": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz",
- "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/compress-commons": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.2.tgz",
@@ -3587,145 +2166,35 @@
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
"dev": true
},
- "node_modules/concat-stream": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
- "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
- "dev": true,
- "engines": [
- "node >= 0.8"
- ],
- "dependencies": {
- "buffer-from": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^2.2.2",
- "typedarray": "^0.0.6"
- }
- },
- "node_modules/concat-stream/node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "node_modules/convert-source-map": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.5.1.tgz",
+ "integrity": "sha512-Iy5Wc88cL36uxzlUog0yy4LHumGb5NAyGxgXn2ec9YAcN5qka4wcOK7I5PRLBOarS8nmZd9WfvnLItF70QLtfQ==",
"dev": true
},
- "node_modules/concat-stream/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
+ "node_modules/core-js": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-0.6.1.tgz",
+ "integrity": "sha512-ANdRS9QdyvvVCqMD7gvDhgI5T+/t5FELQB1ZLN94oCDXTJLwt4Q1o6Nbc1wnVrhl6QPyJ5mv0k8hMCdAFLNbLg==",
+ "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.",
+ "dev": true
},
- "node_modules/concat-stream/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "node_modules/core-util-is": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
"dev": true
},
- "node_modules/concat-stream/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "node_modules/crc-32": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz",
+ "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==",
"dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/console-browserify": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz",
- "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==",
- "dev": true
- },
- "node_modules/constants-browserify": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
- "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==",
- "dev": true
- },
- "node_modules/convert-source-map": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.5.1.tgz",
- "integrity": "sha512-Iy5Wc88cL36uxzlUog0yy4LHumGb5NAyGxgXn2ec9YAcN5qka4wcOK7I5PRLBOarS8nmZd9WfvnLItF70QLtfQ==",
- "dev": true
- },
- "node_modules/copy-concurrently": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
- "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
- "dev": true,
- "dependencies": {
- "aproba": "^1.1.1",
- "fs-write-stream-atomic": "^1.0.8",
- "iferr": "^0.1.5",
- "mkdirp": "^0.5.1",
- "rimraf": "^2.5.4",
- "run-queue": "^1.0.0"
- }
- },
- "node_modules/copy-concurrently/node_modules/mkdirp": {
- "version": "0.5.6",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
- "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
- "dev": true,
- "dependencies": {
- "minimist": "^1.2.6"
- },
- "bin": {
- "mkdirp": "bin/cmd.js"
- }
- },
- "node_modules/copy-concurrently/node_modules/rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- }
- },
- "node_modules/copy-descriptor": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
- "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/core-js": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-0.6.1.tgz",
- "integrity": "sha512-ANdRS9QdyvvVCqMD7gvDhgI5T+/t5FELQB1ZLN94oCDXTJLwt4Q1o6Nbc1wnVrhl6QPyJ5mv0k8hMCdAFLNbLg==",
- "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.",
- "dev": true
- },
- "node_modules/core-util-is": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
- "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
- "dev": true
- },
- "node_modules/crc-32": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz",
- "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==",
- "dev": true,
- "bin": {
- "crc32": "bin/crc32.njs"
- },
- "engines": {
- "node": ">=0.8"
+ "bin": {
+ "crc32": "bin/crc32.njs"
+ },
+ "engines": {
+ "node": ">=0.8"
}
},
"node_modules/crc32-stream": {
@@ -3741,106 +2210,6 @@
"node": ">= 10"
}
},
- "node_modules/create-ecdh": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz",
- "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==",
- "dev": true,
- "dependencies": {
- "bn.js": "^4.1.0",
- "elliptic": "^6.5.3"
- }
- },
- "node_modules/create-ecdh/node_modules/bn.js": {
- "version": "4.12.0",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
- "dev": true
- },
- "node_modules/create-hash": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
- "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
- "dev": true,
- "dependencies": {
- "cipher-base": "^1.0.1",
- "inherits": "^2.0.1",
- "md5.js": "^1.3.4",
- "ripemd160": "^2.0.1",
- "sha.js": "^2.4.0"
- }
- },
- "node_modules/create-hmac": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
- "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
- "dev": true,
- "dependencies": {
- "cipher-base": "^1.0.3",
- "create-hash": "^1.1.0",
- "inherits": "^2.0.1",
- "ripemd160": "^2.0.0",
- "safe-buffer": "^5.0.1",
- "sha.js": "^2.4.8"
- }
- },
- "node_modules/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,
- "dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/cross-spawn/node_modules/isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "dev": true
- },
- "node_modules/cross-spawn/node_modules/which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "node-which": "bin/node-which"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/crypto-browserify": {
- "version": "3.12.0",
- "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
- "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
- "dev": true,
- "dependencies": {
- "browserify-cipher": "^1.0.0",
- "browserify-sign": "^4.0.0",
- "create-ecdh": "^4.0.0",
- "create-hash": "^1.1.0",
- "create-hmac": "^1.1.0",
- "diffie-hellman": "^5.0.0",
- "inherits": "^2.0.1",
- "pbkdf2": "^3.0.3",
- "public-encrypt": "^4.0.0",
- "randombytes": "^2.0.0",
- "randomfill": "^1.0.3"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/cssstyle": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-3.0.0.tgz",
@@ -3853,12 +2222,6 @@
"node": ">=14"
}
},
- "node_modules/cyclist": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.2.tgz",
- "integrity": "sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA==",
- "dev": true
- },
"node_modules/data-uri-to-buffer": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz",
@@ -3909,15 +2272,6 @@
"integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==",
"dev": true
},
- "node_modules/decode-uri-component": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
- "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10"
- }
- },
"node_modules/deep-eql": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz",
@@ -4020,19 +2374,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/define-property": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
- "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^1.0.2",
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/defined": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz",
@@ -4077,16 +2418,6 @@
"node": ">=0.4.0"
}
},
- "node_modules/des.js": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz",
- "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==",
- "dev": true,
- "dependencies": {
- "inherits": "^2.0.1",
- "minimalistic-assert": "^1.0.0"
- }
- },
"node_modules/detect-indent": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-3.0.1.tgz",
@@ -4147,33 +2478,6 @@
"node": ">=0.3.1"
}
},
- "node_modules/diffie-hellman": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
- "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
- "dev": true,
- "dependencies": {
- "bn.js": "^4.1.0",
- "miller-rabin": "^4.0.0",
- "randombytes": "^2.0.0"
- }
- },
- "node_modules/diffie-hellman/node_modules/bn.js": {
- "version": "4.12.0",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
- "dev": true
- },
- "node_modules/domain-browser": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
- "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
- "dev": true,
- "engines": {
- "node": ">=0.4",
- "npm": ">=1.2"
- }
- },
"node_modules/domexception": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz",
@@ -4199,99 +2503,6 @@
"url": "https://github.com/motdotla/dotenv?sponsor=1"
}
},
- "node_modules/duplexer2": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
- "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==",
- "dev": true,
- "dependencies": {
- "readable-stream": "^2.0.2"
- }
- },
- "node_modules/duplexer2/node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "dev": true
- },
- "node_modules/duplexer2/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/duplexer2/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/duplexer2/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/duplexify": {
- "version": "3.7.1",
- "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
- "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
- "dev": true,
- "dependencies": {
- "end-of-stream": "^1.0.0",
- "inherits": "^2.0.1",
- "readable-stream": "^2.0.0",
- "stream-shift": "^1.0.0"
- }
- },
- "node_modules/duplexify/node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "dev": true
- },
- "node_modules/duplexify/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/duplexify/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/duplexify/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
"node_modules/edge-paths": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/edge-paths/-/edge-paths-3.0.5.tgz",
@@ -4369,42 +2580,12 @@
"integrity": "sha512-r4x5+FowKG6q+/Wj0W9nidx7QO31BJwmR2uEo+Qh3YLGQ8SbBAFuDFpTxzly/I2gsbrFwBuIjrMp423L3O5U3w==",
"dev": true
},
- "node_modules/elliptic": {
- "version": "6.5.4",
- "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz",
- "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
- "dev": true,
- "dependencies": {
- "bn.js": "^4.11.9",
- "brorand": "^1.1.0",
- "hash.js": "^1.0.0",
- "hmac-drbg": "^1.0.1",
- "inherits": "^2.0.4",
- "minimalistic-assert": "^1.0.1",
- "minimalistic-crypto-utils": "^1.0.1"
- }
- },
- "node_modules/elliptic/node_modules/bn.js": {
- "version": "4.12.0",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
- "dev": true
- },
"node_modules/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
},
- "node_modules/emojis-list": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
- "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
- "dev": true,
- "engines": {
- "node": ">= 4"
- }
- },
"node_modules/end-of-stream": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
@@ -4414,103 +2595,28 @@
"once": "^1.4.0"
}
},
- "node_modules/enhanced-resolve": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz",
- "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.1.2",
- "memory-fs": "^0.5.0",
- "tapable": "^1.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/enhanced-resolve/node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "node_modules/entities": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz",
+ "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==",
"dev": true
},
- "node_modules/enhanced-resolve/node_modules/memory-fs": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz",
- "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==",
+ "node_modules/envinfo": {
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.0.tgz",
+ "integrity": "sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg==",
"dev": true,
- "dependencies": {
- "errno": "^0.1.3",
- "readable-stream": "^2.0.1"
+ "bin": {
+ "envinfo": "dist/cli.js"
},
"engines": {
- "node": ">=4.3.0 <5.0.0 || >=5.10"
+ "node": ">=4"
}
},
- "node_modules/enhanced-resolve/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/enhanced-resolve/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/enhanced-resolve/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/entities": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz",
- "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==",
- "dev": true
- },
- "node_modules/envinfo": {
- "version": "7.11.0",
- "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.0.tgz",
- "integrity": "sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg==",
- "dev": true,
- "bin": {
- "envinfo": "dist/cli.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/errno": {
- "version": "0.1.8",
- "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
- "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
- "dev": true,
- "dependencies": {
- "prr": "~1.0.1"
- },
- "bin": {
- "errno": "cli.js"
- }
- },
- "node_modules/es-get-iterator": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz",
- "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==",
+ "node_modules/es-get-iterator": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz",
+ "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==",
"dev": true,
"dependencies": {
"call-bind": "^1.0.2",
@@ -4594,28 +2700,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/eslint-scope": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
- "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
- "dev": true,
- "dependencies": {
- "esrecurse": "^4.1.0",
- "estraverse": "^4.1.1"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/eslint-scope/node_modules/estraverse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
"node_modules/esprima": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
@@ -4642,27 +2726,6 @@
"node": ">=0.4.0"
}
},
- "node_modules/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,
- "dependencies": {
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/esrecurse/node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
"node_modules/estraverse": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz",
@@ -4687,154 +2750,6 @@
"integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==",
"dev": true
},
- "node_modules/events": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
- "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
- "dev": true,
- "engines": {
- "node": ">=0.8.x"
- }
- },
- "node_modules/evp_bytestokey": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
- "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
- "dev": true,
- "dependencies": {
- "md5.js": "^1.3.4",
- "safe-buffer": "^5.1.1"
- }
- },
- "node_modules/expand-brackets": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
- "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==",
- "dev": true,
- "dependencies": {
- "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"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/is-descriptor": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz",
- "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==",
- "dev": true,
- "dependencies": {
- "is-accessor-descriptor": "^1.0.1",
- "is-data-descriptor": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/expand-brackets/node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/extend-shallow": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
- "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
- "dev": true,
- "dependencies": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/extglob": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
- "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
- "dev": true,
- "dependencies": {
- "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"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/extglob/node_modules/define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/extglob/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/extglob/node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/extract-zip": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
@@ -4878,24 +2793,12 @@
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
- "node_modules/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
- },
"node_modules/fast-fifo": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
"integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==",
"dev": true
},
- "node_modules/fast-json-stable-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "dev": true
- },
"node_modules/fast-xml-parser": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz",
@@ -4918,15 +2821,6 @@
"fxparser": "src/cli/cli.js"
}
},
- "node_modules/fastest-levenshtein": {
- "version": "1.0.16",
- "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
- "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==",
- "dev": true,
- "engines": {
- "node": ">= 4.9.1"
- }
- },
"node_modules/fd-slicer": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
@@ -4959,19 +2853,6 @@
"node": "^12.20 || >= 14.13"
}
},
- "node_modules/figgy-pudding": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz",
- "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==",
- "deprecated": "This module is no longer supported.",
- "dev": true
- },
- "node_modules/file-uri-to-path": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
- "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
- "dev": true
- },
"node_modules/filelist": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
@@ -4993,20 +2874,6 @@
"node": ">=8"
}
},
- "node_modules/find-cache-dir": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
- "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
- "dev": true,
- "dependencies": {
- "commondir": "^1.0.1",
- "make-dir": "^2.0.0",
- "pkg-dir": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/find-up": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
@@ -5032,52 +2899,6 @@
"flat": "cli.js"
}
},
- "node_modules/flush-write-stream": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
- "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",
- "dev": true,
- "dependencies": {
- "inherits": "^2.0.3",
- "readable-stream": "^2.3.6"
- }
- },
- "node_modules/flush-write-stream/node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "dev": true
- },
- "node_modules/flush-write-stream/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/flush-write-stream/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/flush-write-stream/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
"node_modules/follow-redirects": {
"version": "1.15.6",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
@@ -5107,15 +2928,6 @@
"is-callable": "^1.1.3"
}
},
- "node_modules/for-in": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
- "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/form-data": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
@@ -5142,91 +2954,33 @@
"node": ">=12.20.0"
}
},
- "node_modules/fragment-cache": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
- "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==",
+ "node_modules/fs-constants": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
+ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
+ "dev": true
+ },
+ "node_modules/fs-extra": {
+ "version": "11.2.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
+ "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
"dev": true,
"dependencies": {
- "map-cache": "^0.2.2"
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=14.14"
}
},
- "node_modules/from2": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
- "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==",
+ "node_modules/fs-extra/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
"dev": true,
- "dependencies": {
- "inherits": "^2.0.1",
- "readable-stream": "^2.0.0"
- }
- },
- "node_modules/from2/node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "dev": true
- },
- "node_modules/from2/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/from2/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/from2/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/fs-constants": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
- "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
- "dev": true
- },
- "node_modules/fs-extra": {
- "version": "11.2.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
- "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=14.14"
- }
- },
- "node_modules/fs-extra/node_modules/universalify": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
- "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
- "dev": true,
- "engines": {
- "node": ">= 10.0.0"
+ "engines": {
+ "node": ">= 10.0.0"
}
},
"node_modules/fs-readdir-recursive": {
@@ -5235,54 +2989,6 @@
"integrity": "sha512-//yfxmYAazrsyb/rgeYDNFXFTuPYTGYirp5QHFSH8h/LaNUoP5bQAa2ikstdK1PR/bFd1CIlQLpUq6/u6UVfSw==",
"dev": true
},
- "node_modules/fs-write-stream-atomic": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
- "integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.1.2",
- "iferr": "^0.1.5",
- "imurmurhash": "^0.1.4",
- "readable-stream": "1 || 2"
- }
- },
- "node_modules/fs-write-stream-atomic/node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "dev": true
- },
- "node_modules/fs-write-stream-atomic/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/fs-write-stream-atomic/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/fs-write-stream-atomic/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
"node_modules/fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
@@ -5295,6 +3001,7 @@
"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
"dev": true,
"hasInstallScript": true,
+ "optional": true,
"os": [
"darwin"
],
@@ -5302,45 +3009,6 @@
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
- "node_modules/fstream": {
- "version": "1.0.12",
- "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
- "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.1.2",
- "inherits": "~2.0.0",
- "mkdirp": ">=0.5 0",
- "rimraf": "2"
- },
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/fstream/node_modules/mkdirp": {
- "version": "0.5.6",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
- "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
- "dev": true,
- "dependencies": {
- "minimist": "^1.2.6"
- },
- "bin": {
- "mkdirp": "bin/cmd.js"
- }
- },
- "node_modules/fstream/node_modules/rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- }
- },
"node_modules/function-bind": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
@@ -5522,15 +3190,6 @@
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
- "node_modules/get-value": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
- "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/glob": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
@@ -5693,93 +3352,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/has-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
- "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==",
- "dev": true,
- "dependencies": {
- "get-value": "^2.0.6",
- "has-values": "^1.0.0",
- "isobject": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/has-values": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
- "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==",
- "dev": true,
- "dependencies": {
- "is-number": "^3.0.0",
- "kind-of": "^4.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/has-values/node_modules/is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/has-values/node_modules/is-number/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/has-values/node_modules/kind-of": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
- "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/hash-base": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz",
- "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==",
- "dev": true,
- "dependencies": {
- "inherits": "^2.0.4",
- "readable-stream": "^3.6.0",
- "safe-buffer": "^5.2.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/hash.js": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
- "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
- "dev": true,
- "dependencies": {
- "inherits": "^2.0.3",
- "minimalistic-assert": "^1.0.1"
- }
- },
"node_modules/hasown": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
@@ -5818,17 +3390,6 @@
"he": "bin/he"
}
},
- "node_modules/hmac-drbg": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
- "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==",
- "dev": true,
- "dependencies": {
- "hash.js": "^1.0.3",
- "minimalistic-assert": "^1.0.0",
- "minimalistic-crypto-utils": "^1.0.1"
- }
- },
"node_modules/html-encoding-sniffer": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz",
@@ -5877,12 +3438,6 @@
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
- "node_modules/https-browserify": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
- "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==",
- "dev": true
- },
"node_modules/https-proxy-agent": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
@@ -5963,175 +3518,62 @@
}
]
},
- "node_modules/iferr": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
- "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==",
- "dev": true
- },
"node_modules/immediate": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
"integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==",
"dev": true
},
- "node_modules/import-local": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
- "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==",
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
"dev": true,
"dependencies": {
- "pkg-dir": "^4.2.0",
- "resolve-cwd": "^3.0.0"
- },
- "bin": {
- "import-local-fixture": "fixtures/cli.js"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "once": "^1.3.0",
+ "wrappy": "1"
}
},
- "node_modules/import-local/node_modules/find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dev": true,
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
},
- "node_modules/import-local/node_modules/locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "node_modules/internal-slot": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz",
+ "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==",
"dev": true,
"dependencies": {
- "p-locate": "^4.1.0"
+ "get-intrinsic": "^1.2.2",
+ "hasown": "^2.0.0",
+ "side-channel": "^1.0.4"
},
"engines": {
- "node": ">=8"
+ "node": ">= 0.4"
}
},
- "node_modules/import-local/node_modules/p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "node_modules/invariant": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
+ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
"dev": true,
"dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "loose-envify": "^1.0.0"
}
},
- "node_modules/import-local/node_modules/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==",
+ "node_modules/ip-address": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz",
+ "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==",
"dev": true,
"dependencies": {
- "p-limit": "^2.2.0"
+ "jsbn": "1.1.0",
+ "sprintf-js": "^1.1.3"
},
"engines": {
- "node": ">=8"
- }
- },
- "node_modules/import-local/node_modules/pkg-dir": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
- "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
- "dev": true,
- "dependencies": {
- "find-up": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/imurmurhash": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
- "dev": true,
- "engines": {
- "node": ">=0.8.19"
- }
- },
- "node_modules/infer-owner": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
- "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==",
- "dev": true
- },
- "node_modules/inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
- "dev": true,
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "node_modules/internal-slot": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz",
- "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==",
- "dev": true,
- "dependencies": {
- "get-intrinsic": "^1.2.2",
- "hasown": "^2.0.0",
- "side-channel": "^1.0.4"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/interpret": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz",
- "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==",
- "dev": true,
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/invariant": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
- "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
- "dev": true,
- "dependencies": {
- "loose-envify": "^1.0.0"
- }
- },
- "node_modules/ip-address": {
- "version": "9.0.5",
- "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz",
- "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==",
- "dev": true,
- "dependencies": {
- "jsbn": "1.1.0",
- "sprintf-js": "^1.1.3"
- },
- "engines": {
- "node": ">= 12"
+ "node": ">= 12"
}
},
"node_modules/ip-address/node_modules/sprintf-js": {
@@ -6149,18 +3591,6 @@
"node": ">=8"
}
},
- "node_modules/is-accessor-descriptor": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz",
- "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==",
- "dev": true,
- "dependencies": {
- "hasown": "^2.0.0"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
"node_modules/is-arguments": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
@@ -6231,12 +3661,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
"node_modules/is-callable": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
@@ -6249,30 +3673,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-core-module": {
- "version": "2.13.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
- "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
- "dev": true,
- "dependencies": {
- "hasown": "^2.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-data-descriptor": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz",
- "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==",
- "dev": true,
- "dependencies": {
- "hasown": "^2.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
"node_modules/is-date-object": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
@@ -6288,19 +3688,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-descriptor": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz",
- "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==",
- "dev": true,
- "dependencies": {
- "is-accessor-descriptor": "^1.0.1",
- "is-data-descriptor": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
"node_modules/is-docker": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
@@ -6316,18 +3703,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dev": true,
- "dependencies": {
- "is-plain-object": "^2.0.4"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@@ -6430,18 +3805,6 @@
"node": ">=8"
}
},
- "node_modules/is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "dependencies": {
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/is-potential-custom-element-name": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
@@ -6570,15 +3933,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-windows": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
- "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/is-wsl": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
@@ -6620,15 +3974,6 @@
"node": ">=16"
}
},
- "node_modules/isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/jake": {
"version": "10.8.7",
"resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz",
@@ -6891,30 +4236,6 @@
"jsesc": "bin/jsesc"
}
},
- "node_modules/json-parse-better-errors": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
- "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
- "dev": true
- },
- "node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
- "node_modules/json5": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
- "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
- "dev": true,
- "dependencies": {
- "minimist": "^1.2.0"
- },
- "bin": {
- "json5": "lib/cli.js"
- }
- },
"node_modules/jsonfile": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
@@ -6984,15 +4305,6 @@
"safe-buffer": "~5.1.0"
}
},
- "node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/klaw": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz",
@@ -7097,35 +4409,6 @@
"uc.micro": "^1.0.1"
}
},
- "node_modules/listenercount": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz",
- "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==",
- "dev": true
- },
- "node_modules/loader-runner": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz",
- "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==",
- "dev": true,
- "engines": {
- "node": ">=4.3.0 <5.0.0 || >=5.10"
- }
- },
- "node_modules/loader-utils": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz",
- "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==",
- "dev": true,
- "dependencies": {
- "big.js": "^5.2.2",
- "emojis-list": "^3.0.0",
- "json5": "^1.0.1"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
"node_modules/locate-path": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
@@ -7418,40 +4701,6 @@
"node": ">=10"
}
},
- "node_modules/make-dir": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
- "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
- "dev": true,
- "dependencies": {
- "pify": "^4.0.1",
- "semver": "^5.6.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/map-cache": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
- "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/map-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
- "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==",
- "dev": true,
- "dependencies": {
- "object-visit": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/markdown-it": {
"version": "10.0.0",
"resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz",
@@ -7489,276 +4738,58 @@
"node": ">= 8.16.2"
}
},
- "node_modules/md5.js": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
- "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
- "dev": true,
- "dependencies": {
- "hash-base": "^3.0.0",
- "inherits": "^2.0.1",
- "safe-buffer": "^5.1.2"
- }
- },
"node_modules/mdurl": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
"integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==",
"dev": true
},
- "node_modules/memory-fs": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
- "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==",
- "dev": true,
- "dependencies": {
- "errno": "^0.1.3",
- "readable-stream": "^2.0.1"
- }
- },
- "node_modules/memory-fs/node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "dev": true
- },
- "node_modules/memory-fs/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
"dev": true,
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
+ "engines": {
+ "node": ">= 0.6"
}
},
- "node_modules/memory-fs/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/memory-fs/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"dev": true,
"dependencies": {
- "safe-buffer": "~5.1.0"
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
}
},
- "node_modules/micromatch": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
- "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
"dev": true,
- "dependencies": {
- "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"
- },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=6"
}
},
- "node_modules/micromatch/node_modules/braces": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "node_modules/minami": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/minami/-/minami-1.2.3.tgz",
+ "integrity": "sha512-3f2QqqbUC1usVux0FkQMFYB73yd9JIxmHSn1dWQacizL6hOUaNu6mA3KxZ9SfiCc4qgcgq+5XP59+hP7URa1Dw==",
+ "dev": true
+ },
+ "node_modules/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,
"dependencies": {
- "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"
+ "brace-expansion": "^2.0.1"
},
"engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/micromatch/node_modules/braces/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/micromatch/node_modules/fill-range": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
- "dev": true,
- "dependencies": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/micromatch/node_modules/fill-range/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/micromatch/node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/micromatch/node_modules/is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/micromatch/node_modules/is-number/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/micromatch/node_modules/to-regex-range": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
- "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
- "dev": true,
- "dependencies": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/miller-rabin": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
- "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
- "dev": true,
- "dependencies": {
- "bn.js": "^4.0.0",
- "brorand": "^1.0.1"
- },
- "bin": {
- "miller-rabin": "bin/miller-rabin"
- }
- },
- "node_modules/miller-rabin/node_modules/bn.js": {
- "version": "4.12.0",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
- "dev": true
- },
- "node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "dev": true,
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "dev": true,
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mimic-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/minami": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/minami/-/minami-1.2.3.tgz",
- "integrity": "sha512-3f2QqqbUC1usVux0FkQMFYB73yd9JIxmHSn1dWQacizL6hOUaNu6mA3KxZ9SfiCc4qgcgq+5XP59+hP7URa1Dw==",
- "dev": true
- },
- "node_modules/minimalistic-assert": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
- "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
- "dev": true
- },
- "node_modules/minimalistic-crypto-utils": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
- "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==",
- "dev": true
- },
- "node_modules/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,
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=10"
+ "node": ">=10"
}
},
"node_modules/minimist": {
@@ -7770,40 +4801,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/mississippi": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz",
- "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==",
- "dev": true,
- "dependencies": {
- "concat-stream": "^1.5.0",
- "duplexify": "^3.4.2",
- "end-of-stream": "^1.1.0",
- "flush-write-stream": "^1.0.0",
- "from2": "^2.1.0",
- "parallel-transform": "^1.1.0",
- "pump": "^3.0.0",
- "pumpify": "^1.3.3",
- "stream-each": "^1.1.0",
- "through2": "^2.0.0"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/mixin-deep": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
- "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
- "dev": true,
- "dependencies": {
- "for-in": "^1.0.2",
- "is-extendable": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/mkdirp": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
@@ -7816,12 +4813,6 @@
"node": ">=10"
}
},
- "node_modules/mkdirp-classic": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
- "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
- "dev": true
- },
"node_modules/mocha": {
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/mocha/-/mocha-10.1.0.tgz",
@@ -7927,56 +4918,12 @@
"url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
- "node_modules/move-concurrently": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
- "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==",
- "dev": true,
- "dependencies": {
- "aproba": "^1.1.1",
- "copy-concurrently": "^1.0.0",
- "fs-write-stream-atomic": "^1.0.8",
- "mkdirp": "^0.5.1",
- "rimraf": "^2.5.4",
- "run-queue": "^1.0.3"
- }
- },
- "node_modules/move-concurrently/node_modules/mkdirp": {
- "version": "0.5.6",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
- "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
- "dev": true,
- "dependencies": {
- "minimist": "^1.2.6"
- },
- "bin": {
- "mkdirp": "bin/cmd.js"
- }
- },
- "node_modules/move-concurrently/node_modules/rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- }
- },
"node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
"dev": true
},
- "node_modules/nan": {
- "version": "2.18.0",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz",
- "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==",
- "dev": true
- },
"node_modules/nanoid": {
"version": "3.3.3",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz",
@@ -7989,34 +4936,6 @@
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
- "node_modules/nanomatch": {
- "version": "1.2.13",
- "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
- "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
- "dev": true,
- "dependencies": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "fragment-cache": "^0.2.1",
- "is-windows": "^1.0.2",
- "kind-of": "^6.0.2",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/neo-async": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
- "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
- "dev": true
- },
"node_modules/netmask": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz",
@@ -8032,6 +4951,7 @@
"integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==",
"dev": true,
"hasInstallScript": true,
+ "optional": true,
"os": [
"!win32"
],
@@ -8404,7 +5324,8 @@
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz",
"integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==",
- "dev": true
+ "dev": true,
+ "optional": true
},
"node_modules/node-domexception": {
"version": "1.0.0",
@@ -8448,96 +5369,13 @@
"resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.7.1.tgz",
"integrity": "sha512-wTSrZ+8lsRRa3I3H8Xr65dLWSgCvY2l4AOnaeKdPA9TB/WYMPaTcrzf3rXvFoVvjKNVnu0CcWSx54qq9GKRUYg==",
"dev": true,
+ "optional": true,
"bin": {
"node-gyp-build": "bin.js",
"node-gyp-build-optional": "optional.js",
"node-gyp-build-test": "build-test.js"
}
},
- "node_modules/node-libs-browser": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz",
- "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==",
- "dev": true,
- "dependencies": {
- "assert": "^1.1.1",
- "browserify-zlib": "^0.2.0",
- "buffer": "^4.3.0",
- "console-browserify": "^1.1.0",
- "constants-browserify": "^1.0.0",
- "crypto-browserify": "^3.11.0",
- "domain-browser": "^1.1.1",
- "events": "^3.0.0",
- "https-browserify": "^1.0.0",
- "os-browserify": "^0.3.0",
- "path-browserify": "0.0.1",
- "process": "^0.11.10",
- "punycode": "^1.2.4",
- "querystring-es3": "^0.2.0",
- "readable-stream": "^2.3.3",
- "stream-browserify": "^2.0.1",
- "stream-http": "^2.7.2",
- "string_decoder": "^1.0.0",
- "timers-browserify": "^2.0.4",
- "tty-browserify": "0.0.0",
- "url": "^0.11.0",
- "util": "^0.11.0",
- "vm-browserify": "^1.0.1"
- }
- },
- "node_modules/node-libs-browser/node_modules/buffer": {
- "version": "4.9.2",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz",
- "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==",
- "dev": true,
- "dependencies": {
- "base64-js": "^1.0.2",
- "ieee754": "^1.1.4",
- "isarray": "^1.0.0"
- }
- },
- "node_modules/node-libs-browser/node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "dev": true
- },
- "node_modules/node-libs-browser/node_modules/punycode": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
- "dev": true
- },
- "node_modules/node-libs-browser/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/node-libs-browser/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/node-libs-browser/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
"node_modules/normalize-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
@@ -8562,57 +5400,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/object-copy": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
- "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==",
- "dev": true,
- "dependencies": {
- "copy-descriptor": "^0.1.0",
- "define-property": "^0.2.5",
- "kind-of": "^3.0.3"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/is-descriptor": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz",
- "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==",
- "dev": true,
- "dependencies": {
- "is-accessor-descriptor": "^1.0.1",
- "is-data-descriptor": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/object-copy/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/object-inspect": {
"version": "1.13.1",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
@@ -8647,18 +5434,6 @@
"node": ">= 0.4"
}
},
- "node_modules/object-visit": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
- "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==",
- "dev": true,
- "dependencies": {
- "isobject": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/object.assign": {
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",
@@ -8677,22 +5452,10 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/object.pick": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
- "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==",
- "dev": true,
- "dependencies": {
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
"dev": true,
"dependencies": {
"wrappy": "1"
@@ -8817,12 +5580,6 @@
"node": ">=8"
}
},
- "node_modules/os-browserify": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
- "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==",
- "dev": true
- },
"node_modules/output-file-sync": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz",
@@ -8876,15 +5633,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/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,
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/pac-proxy-agent": {
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.2.tgz",
@@ -8959,66 +5707,6 @@
"integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
"dev": true
},
- "node_modules/parallel-transform": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz",
- "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==",
- "dev": true,
- "dependencies": {
- "cyclist": "^1.0.1",
- "inherits": "^2.0.3",
- "readable-stream": "^2.1.5"
- }
- },
- "node_modules/parallel-transform/node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "dev": true
- },
- "node_modules/parallel-transform/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/parallel-transform/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/parallel-transform/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/parse-asn1": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz",
- "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==",
- "dev": true,
- "dependencies": {
- "asn1.js": "^5.2.0",
- "browserify-aes": "^1.0.0",
- "evp_bytestokey": "^1.0.0",
- "pbkdf2": "^3.0.3",
- "safe-buffer": "^5.1.1"
- }
- },
"node_modules/parse5": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
@@ -9043,27 +5731,6 @@
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
- "node_modules/pascalcase": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
- "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/path-browserify": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz",
- "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==",
- "dev": true
- },
- "node_modules/path-dirname": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
- "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==",
- "dev": true
- },
"node_modules/path-exists": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
@@ -9082,21 +5749,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/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,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "dev": true
- },
"node_modules/pathval": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz",
@@ -9106,22 +5758,6 @@
"node": "*"
}
},
- "node_modules/pbkdf2": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz",
- "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==",
- "dev": true,
- "dependencies": {
- "create-hash": "^1.1.2",
- "create-hmac": "^1.1.4",
- "ripemd160": "^2.0.1",
- "safe-buffer": "^5.0.1",
- "sha.js": "^2.4.8"
- },
- "engines": {
- "node": ">=0.12"
- }
- },
"node_modules/pend": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
@@ -9140,15 +5776,6 @@
"url": "https://github.com/sponsors/jonschlinkert"
}
},
- "node_modules/pify": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
- "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/piscina": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/piscina/-/piscina-3.2.0.tgz",
@@ -9163,88 +5790,6 @@
"nice-napi": "^1.0.2"
}
},
- "node_modules/pkg-dir": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
- "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
- "dev": true,
- "dependencies": {
- "find-up": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/pkg-dir/node_modules/find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "dev": true,
- "dependencies": {
- "locate-path": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/pkg-dir/node_modules/locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
- "dev": true,
- "dependencies": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/pkg-dir/node_modules/p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dev": true,
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/pkg-dir/node_modules/p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
- "dev": true,
- "dependencies": {
- "p-limit": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/pkg-dir/node_modules/path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/posix-character-classes": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
- "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/private": {
"version": "0.1.8",
"resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
@@ -9254,27 +5799,12 @@
"node": ">= 0.6"
}
},
- "node_modules/process": {
- "version": "0.11.10",
- "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
- "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
- "dev": true,
- "engines": {
- "node": ">= 0.6.0"
- }
- },
"node_modules/process-nextick-args": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
"dev": true
},
- "node_modules/promise-inflight": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
- "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==",
- "dev": true
- },
"node_modules/proxy-agent": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz",
@@ -9345,38 +5875,12 @@
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
"dev": true
},
- "node_modules/prr": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
- "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
- "dev": true
- },
"node_modules/psl": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
"integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==",
"dev": true
},
- "node_modules/public-encrypt": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
- "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
- "dev": true,
- "dependencies": {
- "bn.js": "^4.1.0",
- "browserify-rsa": "^4.0.0",
- "create-hash": "^1.1.0",
- "parse-asn1": "^5.0.0",
- "randombytes": "^2.0.1",
- "safe-buffer": "^5.1.2"
- }
- },
- "node_modules/public-encrypt/node_modules/bn.js": {
- "version": "4.12.0",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
- "dev": true
- },
"node_modules/pump": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
@@ -9387,27 +5891,6 @@
"once": "^1.3.1"
}
},
- "node_modules/pumpify": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
- "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
- "dev": true,
- "dependencies": {
- "duplexify": "^3.6.0",
- "inherits": "^2.0.3",
- "pump": "^2.0.0"
- }
- },
- "node_modules/pumpify/node_modules/pump": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
- "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
- "dev": true,
- "dependencies": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- },
"node_modules/punycode": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
@@ -9427,30 +5910,6 @@
"teleport": ">=0.2.0"
}
},
- "node_modules/qs": {
- "version": "6.11.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz",
- "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==",
- "dev": true,
- "dependencies": {
- "side-channel": "^1.0.4"
- },
- "engines": {
- "node": ">=0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/querystring-es3": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
- "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==",
- "dev": true,
- "engines": {
- "node": ">=0.4.x"
- }
- },
"node_modules/querystringify": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
@@ -9472,16 +5931,6 @@
"safe-buffer": "^5.1.0"
}
},
- "node_modules/randomfill": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
- "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
- "dev": true,
- "dependencies": {
- "randombytes": "^2.0.5",
- "safe-buffer": "^5.1.0"
- }
- },
"node_modules/readable-stream": {
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
@@ -9575,18 +6024,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/rechoir": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz",
- "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==",
- "dev": true,
- "dependencies": {
- "resolve": "^1.9.0"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
"node_modules/regenerate": {
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
@@ -9628,19 +6065,6 @@
"private": "^0.1.6"
}
},
- "node_modules/regex-not": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
- "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
- "dev": true,
- "dependencies": {
- "extend-shallow": "^3.0.2",
- "safe-regex": "^1.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/regexp.prototype.flags": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz",
@@ -9749,30 +6173,6 @@
"regjsparser": "bin/parser"
}
},
- "node_modules/remove-trailing-separator": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
- "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==",
- "dev": true
- },
- "node_modules/repeat-element": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz",
- "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/repeat-string": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
- "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
- "dev": true,
- "engines": {
- "node": ">=0.10"
- }
- },
"node_modules/repeating": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz",
@@ -9818,51 +6218,6 @@
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
"dev": true
},
- "node_modules/resolve": {
- "version": "1.22.8",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
- "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
- "dev": true,
- "dependencies": {
- "is-core-module": "^2.13.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- },
- "bin": {
- "resolve": "bin/resolve"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/resolve-cwd": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
- "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
- "dev": true,
- "dependencies": {
- "resolve-from": "^5.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/resolve-from": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/resolve-url": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
- "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==",
- "deprecated": "https://github.com/lydell/resolve-url#deprecated",
- "dev": true
- },
"node_modules/restore-cursor": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
@@ -9876,15 +6231,6 @@
"node": ">=8"
}
},
- "node_modules/ret": {
- "version": "0.1.15",
- "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
- "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
- "dev": true,
- "engines": {
- "node": ">=0.12"
- }
- },
"node_modules/rimraf": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
@@ -9900,16 +6246,6 @@
"url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/ripemd160": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
- "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
- "dev": true,
- "dependencies": {
- "hash-base": "^3.0.0",
- "inherits": "^2.0.1"
- }
- },
"node_modules/rollup": {
"version": "4.9.0",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.0.tgz",
@@ -9945,15 +6281,6 @@
"integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==",
"dev": true
},
- "node_modules/run-queue": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
- "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==",
- "dev": true,
- "dependencies": {
- "aproba": "^1.1.1"
- }
- },
"node_modules/safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
@@ -9974,15 +6301,6 @@
}
]
},
- "node_modules/safe-regex": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
- "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==",
- "dev": true,
- "dependencies": {
- "ret": "~0.1.10"
- }
- },
"node_modules/safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
@@ -10001,20 +6319,6 @@
"node": ">=v12.22.7"
}
},
- "node_modules/schema-utils": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
- "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
- "dev": true,
- "dependencies": {
- "ajv": "^6.1.0",
- "ajv-errors": "^1.0.0",
- "ajv-keywords": "^3.1.0"
- },
- "engines": {
- "node": ">= 4"
- }
- },
"node_modules/selenium-webdriver": {
"version": "4.14.0",
"resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.14.0.tgz",
@@ -10076,94 +6380,12 @@
"node": ">= 0.4"
}
},
- "node_modules/set-value": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
- "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
- "dev": true,
- "dependencies": {
- "extend-shallow": "^2.0.1",
- "is-extendable": "^0.1.1",
- "is-plain-object": "^2.0.3",
- "split-string": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/set-value/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/set-value/node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/setimmediate": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
"integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==",
"dev": true
},
- "node_modules/sha.js": {
- "version": "2.4.11",
- "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
- "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
- "dev": true,
- "dependencies": {
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
- },
- "bin": {
- "sha.js": "bin.js"
- }
- },
- "node_modules/shallow-clone": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
- "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
- "dev": true,
- "dependencies": {
- "kind-of": "^6.0.2"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/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,
- "dependencies": {
- "shebang-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/shebang-command/node_modules/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,
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/shebang-regex": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
@@ -10218,130 +6440,6 @@
"integrity": "sha512-9LK+E7Hv5R9u4g4C3p+jjLstaLe11MDsL21UpYaCNmapvMkYhqCV4A/f/3gyH8QjMyh6l68q9xC85vihY9ahMQ==",
"dev": true
},
- "node_modules/snapdragon": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
- "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
- "dev": true,
- "dependencies": {
- "base": "^0.11.1",
- "debug": "^2.2.0",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "map-cache": "^0.2.2",
- "source-map": "^0.5.6",
- "source-map-resolve": "^0.5.0",
- "use": "^3.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon-node": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
- "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
- "dev": true,
- "dependencies": {
- "define-property": "^1.0.0",
- "isobject": "^3.0.0",
- "snapdragon-util": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon-node/node_modules/define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon-util": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
- "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.2.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon-util/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/is-descriptor": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz",
- "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==",
- "dev": true,
- "dependencies": {
- "is-accessor-descriptor": "^1.0.1",
- "is-data-descriptor": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/snapdragon/node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/socks": {
"version": "2.8.3",
"resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz",
@@ -10393,12 +6491,6 @@
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
- "node_modules/source-list-map": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
- "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
- "dev": true
- },
"node_modules/source-map": {
"version": "0.4.4",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
@@ -10411,20 +6503,6 @@
"node": ">=0.8.0"
}
},
- "node_modules/source-map-resolve": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
- "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
- "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated",
- "dev": true,
- "dependencies": {
- "atob": "^2.1.2",
- "decode-uri-component": "^0.2.0",
- "resolve-url": "^0.2.1",
- "source-map-url": "^0.4.0",
- "urix": "^0.1.0"
- }
- },
"node_modules/source-map-support": {
"version": "0.2.10",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.2.10.tgz",
@@ -10446,40 +6524,12 @@
"node": ">=0.8.0"
}
},
- "node_modules/source-map-url": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz",
- "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==",
- "deprecated": "See https://github.com/lydell/source-map-url#deprecated",
- "dev": true
- },
- "node_modules/split-string": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
- "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
- "dev": true,
- "dependencies": {
- "extend-shallow": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/sprintf-js": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
"integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
"dev": true
},
- "node_modules/ssri": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz",
- "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==",
- "dev": true,
- "dependencies": {
- "figgy-pudding": "^3.5.1"
- }
- },
"node_modules/stacktrace-parser": {
"version": "0.1.10",
"resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz",
@@ -10501,229 +6551,80 @@
"node": ">=8"
}
},
- "node_modules/static-extend": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
- "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==",
+ "node_modules/stop-iteration-iterator": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz",
+ "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==",
"dev": true,
"dependencies": {
- "define-property": "^0.2.5",
- "object-copy": "^0.1.0"
+ "internal-slot": "^1.0.4"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 0.4"
}
},
- "node_modules/static-extend/node_modules/define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "node_modules/streamx": {
+ "version": "2.18.0",
+ "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.18.0.tgz",
+ "integrity": "sha512-LLUC1TWdjVdn1weXGcSxyTR3T4+acB6tVGXT95y0nGbca4t4o/ng1wKAGTljm9VicuCVLvRlqFYXYy5GwgM7sQ==",
"dev": true,
"dependencies": {
- "is-descriptor": "^0.1.0"
+ "fast-fifo": "^1.3.2",
+ "queue-tick": "^1.0.1",
+ "text-decoder": "^1.1.0"
},
- "engines": {
- "node": ">=0.10.0"
+ "optionalDependencies": {
+ "bare-events": "^2.2.0"
}
},
- "node_modules/static-extend/node_modules/is-descriptor": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz",
- "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==",
+ "node_modules/string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
"dev": true,
"dependencies": {
- "is-accessor-descriptor": "^1.0.1",
- "is-data-descriptor": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4"
+ "safe-buffer": "~5.2.0"
}
},
- "node_modules/stop-iteration-iterator": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz",
- "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==",
+ "node_modules/string-width": {
+ "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,
"dependencies": {
- "internal-slot": "^1.0.4"
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
},
"engines": {
- "node": ">= 0.4"
+ "node": ">=8"
}
},
- "node_modules/stream-browserify": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz",
- "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==",
+ "node_modules/string-width/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true,
- "dependencies": {
- "inherits": "~2.0.1",
- "readable-stream": "^2.0.2"
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/stream-browserify/node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "dev": true
- },
- "node_modules/stream-browserify/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "node_modules/string-width/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/stream-browserify/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/stream-browserify/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/stream-each": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
- "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
- "dev": true,
- "dependencies": {
- "end-of-stream": "^1.1.0",
- "stream-shift": "^1.0.0"
- }
- },
- "node_modules/stream-http": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz",
- "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
- "dev": true,
- "dependencies": {
- "builtin-status-codes": "^3.0.0",
- "inherits": "^2.0.1",
- "readable-stream": "^2.3.6",
- "to-arraybuffer": "^1.0.0",
- "xtend": "^4.0.0"
- }
- },
- "node_modules/stream-http/node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "dev": true
- },
- "node_modules/stream-http/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/stream-http/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/stream-http/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/stream-shift": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz",
- "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==",
- "dev": true
- },
- "node_modules/streamx": {
- "version": "2.18.0",
- "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.18.0.tgz",
- "integrity": "sha512-LLUC1TWdjVdn1weXGcSxyTR3T4+acB6tVGXT95y0nGbca4t4o/ng1wKAGTljm9VicuCVLvRlqFYXYy5GwgM7sQ==",
- "dev": true,
- "dependencies": {
- "fast-fifo": "^1.3.2",
- "queue-tick": "^1.0.1",
- "text-decoder": "^1.1.0"
- },
- "optionalDependencies": {
- "bare-events": "^2.2.0"
- }
- },
- "node_modules/string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.2.0"
- }
- },
- "node_modules/string-width": {
- "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,
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/string-width/node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/string-width/node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
+ "node_modules/strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
"dev": true,
"dependencies": {
"ansi-regex": "^2.0.0"
@@ -10759,18 +6660,6 @@
"node": ">=0.8.0"
}
},
- "node_modules/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,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/symbol-tree": {
"version": "3.2.4",
"resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
@@ -10783,15 +6672,6 @@
"integrity": "sha512-y3JaeRSplks6NYQuCOj3ZFMO3j60rTwbuKCvZxsAraGYH2epusatvZ0baZYA01WsGqJBq/Dl6vOrMUJqyMj8kA==",
"dev": true
},
- "node_modules/tapable": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
- "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/tar-fs": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.6.tgz",
@@ -10884,83 +6764,6 @@
"node": ">=10"
}
},
- "node_modules/terser-webpack-plugin": {
- "version": "1.4.5",
- "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz",
- "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==",
- "dev": true,
- "dependencies": {
- "cacache": "^12.0.2",
- "find-cache-dir": "^2.1.0",
- "is-wsl": "^1.1.0",
- "schema-utils": "^1.0.0",
- "serialize-javascript": "^4.0.0",
- "source-map": "^0.6.1",
- "terser": "^4.1.2",
- "webpack-sources": "^1.4.0",
- "worker-farm": "^1.7.0"
- },
- "engines": {
- "node": ">= 6.9.0"
- },
- "peerDependencies": {
- "webpack": "^4.0.0"
- }
- },
- "node_modules/terser-webpack-plugin/node_modules/is-wsl": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
- "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/terser-webpack-plugin/node_modules/serialize-javascript": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
- "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
- "dev": true,
- "dependencies": {
- "randombytes": "^2.1.0"
- }
- },
- "node_modules/terser-webpack-plugin/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/terser-webpack-plugin/node_modules/source-map-support": {
- "version": "0.5.21",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
- "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
- "dev": true,
- "dependencies": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- },
- "node_modules/terser-webpack-plugin/node_modules/terser": {
- "version": "4.8.1",
- "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz",
- "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==",
- "dev": true,
- "dependencies": {
- "commander": "^2.20.0",
- "source-map": "~0.6.1",
- "source-map-support": "~0.5.12"
- },
- "bin": {
- "terser": "bin/terser"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
"node_modules/terser/node_modules/source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -10989,805 +6792,179 @@
"b4a": "^1.6.4"
}
},
- "node_modules/through": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
- "dev": true
- },
- "node_modules/through2": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
- "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
- "dev": true,
- "dependencies": {
- "readable-stream": "~2.3.6",
- "xtend": "~4.0.1"
- }
- },
- "node_modules/through2/node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "dev": true
- },
- "node_modules/through2/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/through2/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/through2/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/timers-browserify": {
- "version": "2.0.12",
- "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz",
- "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==",
- "dev": true,
- "dependencies": {
- "setimmediate": "^1.0.4"
- },
- "engines": {
- "node": ">=0.6.0"
- }
- },
- "node_modules/tmp": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
- "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
- "dev": true,
- "dependencies": {
- "rimraf": "^3.0.0"
- },
- "engines": {
- "node": ">=8.17.0"
- }
- },
- "node_modules/to-arraybuffer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
- "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==",
- "dev": true
- },
- "node_modules/to-fast-properties": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
- "integrity": "sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/to-object-path": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
- "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/to-object-path/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/to-regex": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
- "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
- "dev": true,
- "dependencies": {
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "regex-not": "^1.0.2",
- "safe-regex": "^1.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/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,
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
- "node_modules/tough-cookie": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz",
- "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==",
- "dev": true,
- "dependencies": {
- "psl": "^1.1.33",
- "punycode": "^2.1.1",
- "universalify": "^0.2.0",
- "url-parse": "^1.5.3"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/tr46": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz",
- "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==",
- "dev": true,
- "dependencies": {
- "punycode": "^2.3.0"
- },
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/traverse": {
- "version": "0.3.9",
- "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",
- "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/trim-right": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
- "integrity": "sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/tslib": {
- "version": "2.6.3",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
- "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
- "dev": true
- },
- "node_modules/tty-browserify": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
- "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==",
- "dev": true
- },
- "node_modules/type-detect": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
- "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/type-fest": {
- "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,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/typedarray": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
- "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
- "dev": true
- },
- "node_modules/uc.micro": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
- "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==",
- "dev": true
- },
- "node_modules/underscore": {
- "version": "1.10.2",
- "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.10.2.tgz",
- "integrity": "sha512-N4P+Q/BuyuEKFJ43B9gYuOj4TQUHXX+j2FqguVOpjkssLUUrnJofCcBccJSCoeturDoZU6GorDTHSvUDlSQbTg==",
- "dev": true
- },
- "node_modules/undici-types": {
- "version": "5.26.5",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
- "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
- "dev": true
- },
- "node_modules/union-value": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
- "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
- "dev": true,
- "dependencies": {
- "arr-union": "^3.1.0",
- "get-value": "^2.0.6",
- "is-extendable": "^0.1.1",
- "set-value": "^2.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/union-value/node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/unique-filename": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
- "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
- "dev": true,
- "dependencies": {
- "unique-slug": "^2.0.0"
- }
- },
- "node_modules/unique-slug": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
- "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
- "dev": true,
- "dependencies": {
- "imurmurhash": "^0.1.4"
- }
- },
- "node_modules/universalify": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
- "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
- "dev": true,
- "engines": {
- "node": ">= 4.0.0"
- }
- },
- "node_modules/unset-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
- "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==",
- "dev": true,
- "dependencies": {
- "has-value": "^0.3.1",
- "isobject": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/unset-value/node_modules/has-value": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
- "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==",
- "dev": true,
- "dependencies": {
- "get-value": "^2.0.3",
- "has-values": "^0.1.4",
- "isobject": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/unset-value/node_modules/has-value/node_modules/isobject": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
- "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==",
- "dev": true,
- "dependencies": {
- "isarray": "1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/unset-value/node_modules/has-values": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
- "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/unset-value/node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "dev": true
- },
- "node_modules/untildify": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz",
- "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/unzipper": {
- "version": "0.10.14",
- "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.14.tgz",
- "integrity": "sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==",
- "dev": true,
- "dependencies": {
- "big-integer": "^1.6.17",
- "binary": "~0.3.0",
- "bluebird": "~3.4.1",
- "buffer-indexof-polyfill": "~1.0.0",
- "duplexer2": "~0.1.4",
- "fstream": "^1.0.12",
- "graceful-fs": "^4.2.2",
- "listenercount": "~1.0.1",
- "readable-stream": "~2.3.6",
- "setimmediate": "~1.0.4"
- }
- },
- "node_modules/unzipper/node_modules/bluebird": {
- "version": "3.4.7",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz",
- "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==",
- "dev": true
- },
- "node_modules/unzipper/node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "dev": true
- },
- "node_modules/unzipper/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/unzipper/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/unzipper/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/upath": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
- "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
- "dev": true,
- "engines": {
- "node": ">=4",
- "yarn": "*"
- }
- },
- "node_modules/uri-js": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "dev": true,
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "node_modules/urix": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
- "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==",
- "deprecated": "Please see https://github.com/lydell/urix#deprecated",
- "dev": true
- },
- "node_modules/url": {
- "version": "0.11.3",
- "resolved": "https://registry.npmjs.org/url/-/url-0.11.3.tgz",
- "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==",
- "dev": true,
- "dependencies": {
- "punycode": "^1.4.1",
- "qs": "^6.11.2"
- }
- },
- "node_modules/url-parse": {
- "version": "1.5.10",
- "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
- "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
- "dev": true,
- "dependencies": {
- "querystringify": "^2.1.1",
- "requires-port": "^1.0.0"
- }
- },
- "node_modules/url/node_modules/punycode": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
- "dev": true
- },
- "node_modules/use": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
- "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/util": {
- "version": "0.11.1",
- "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz",
- "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==",
- "dev": true,
- "dependencies": {
- "inherits": "2.0.3"
- }
- },
- "node_modules/util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
- "dev": true
- },
- "node_modules/util/node_modules/inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
- "dev": true
- },
- "node_modules/uuid": {
- "version": "8.3.2",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
- "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
- "dev": true,
- "bin": {
- "uuid": "dist/bin/uuid"
- }
- },
- "node_modules/vm-browserify": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
- "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==",
- "dev": true
- },
- "node_modules/w3c-xmlserializer": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz",
- "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==",
- "dev": true,
- "dependencies": {
- "xml-name-validator": "^4.0.0"
- },
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/watchpack": {
- "version": "1.7.5",
- "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz",
- "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.1.2",
- "neo-async": "^2.5.0"
- },
- "optionalDependencies": {
- "chokidar": "^3.4.1",
- "watchpack-chokidar2": "^2.0.1"
- }
- },
- "node_modules/watchpack-chokidar2": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz",
- "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==",
- "dev": true,
- "dependencies": {
- "chokidar": "^2.1.8"
- }
- },
- "node_modules/watchpack-chokidar2/node_modules/anymatch": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
- "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
- "dev": true,
- "dependencies": {
- "micromatch": "^3.1.4",
- "normalize-path": "^2.1.1"
- }
- },
- "node_modules/watchpack-chokidar2/node_modules/anymatch/node_modules/normalize-path": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
- "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
- "dev": true,
- "dependencies": {
- "remove-trailing-separator": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/watchpack-chokidar2/node_modules/binary-extensions": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
- "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/watchpack-chokidar2/node_modules/braces": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
- "dev": true,
- "dependencies": {
- "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"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/watchpack-chokidar2/node_modules/chokidar": {
- "version": "2.1.8",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
- "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
- "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies",
- "dev": true,
- "dependencies": {
- "anymatch": "^2.0.0",
- "async-each": "^1.0.1",
- "braces": "^2.3.2",
- "glob-parent": "^3.1.0",
- "inherits": "^2.0.3",
- "is-binary-path": "^1.0.0",
- "is-glob": "^4.0.0",
- "normalize-path": "^3.0.0",
- "path-is-absolute": "^1.0.0",
- "readdirp": "^2.2.1",
- "upath": "^1.1.1"
- },
- "optionalDependencies": {
- "fsevents": "^1.2.7"
- }
+ "node_modules/through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
+ "dev": true
},
- "node_modules/watchpack-chokidar2/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "node_modules/tmp": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
+ "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
"dev": true,
"dependencies": {
- "is-extendable": "^0.1.0"
+ "rimraf": "^3.0.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8.17.0"
}
},
- "node_modules/watchpack-chokidar2/node_modules/fill-range": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
+ "node_modules/to-fast-properties": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
+ "integrity": "sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==",
"dev": true,
- "dependencies": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
- },
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/watchpack-chokidar2/node_modules/fsevents": {
- "version": "1.2.13",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
- "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
- "deprecated": "The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2",
+ "node_modules/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,
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
- ],
"dependencies": {
- "bindings": "^1.5.0",
- "nan": "^2.12.1"
+ "is-number": "^7.0.0"
},
"engines": {
- "node": ">= 4.0"
+ "node": ">=8.0"
}
},
- "node_modules/watchpack-chokidar2/node_modules/glob-parent": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
- "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
+ "node_modules/tough-cookie": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz",
+ "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==",
"dev": true,
"dependencies": {
- "is-glob": "^3.1.0",
- "path-dirname": "^1.0.0"
+ "psl": "^1.1.33",
+ "punycode": "^2.1.1",
+ "universalify": "^0.2.0",
+ "url-parse": "^1.5.3"
+ },
+ "engines": {
+ "node": ">=6"
}
},
- "node_modules/watchpack-chokidar2/node_modules/glob-parent/node_modules/is-glob": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
- "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
+ "node_modules/tr46": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz",
+ "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==",
"dev": true,
"dependencies": {
- "is-extglob": "^2.1.0"
+ "punycode": "^2.3.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=14"
}
},
- "node_modules/watchpack-chokidar2/node_modules/is-binary-path": {
+ "node_modules/trim-right": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
- "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==",
+ "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
+ "integrity": "sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==",
"dev": true,
- "dependencies": {
- "binary-extensions": "^1.0.0"
- },
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/watchpack-chokidar2/node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
+ "node_modules/tslib": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+ "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
+ "dev": true
+ },
+ "node_modules/type-detect": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
+ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
"dev": true,
"engines": {
- "node": ">=0.10.0"
+ "node": ">=4"
}
},
- "node_modules/watchpack-chokidar2/node_modules/is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
+ "node_modules/type-fest": {
+ "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,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/watchpack-chokidar2/node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "node_modules/uc.micro": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
+ "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==",
+ "dev": true
+ },
+ "node_modules/underscore": {
+ "version": "1.10.2",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.10.2.tgz",
+ "integrity": "sha512-N4P+Q/BuyuEKFJ43B9gYuOj4TQUHXX+j2FqguVOpjkssLUUrnJofCcBccJSCoeturDoZU6GorDTHSvUDlSQbTg==",
+ "dev": true
+ },
+ "node_modules/undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
"dev": true
},
- "node_modules/watchpack-chokidar2/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "node_modules/universalify": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
+ "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
"dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 4.0.0"
}
},
- "node_modules/watchpack-chokidar2/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "node_modules/untildify": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz",
+ "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==",
"dev": true,
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/watchpack-chokidar2/node_modules/readdirp": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
- "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+ "node_modules/url-parse": {
+ "version": "1.5.10",
+ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
+ "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
"dev": true,
"dependencies": {
- "graceful-fs": "^4.1.11",
- "micromatch": "^3.1.10",
- "readable-stream": "^2.0.2"
- },
- "engines": {
- "node": ">=0.10"
+ "querystringify": "^2.1.1",
+ "requires-port": "^1.0.0"
}
},
- "node_modules/watchpack-chokidar2/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
"dev": true
},
- "node_modules/watchpack-chokidar2/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "node_modules/uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
"dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
+ "bin": {
+ "uuid": "dist/bin/uuid"
}
},
- "node_modules/watchpack-chokidar2/node_modules/to-regex-range": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
- "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
+ "node_modules/w3c-xmlserializer": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz",
+ "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==",
"dev": true,
"dependencies": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
+ "xml-name-validator": "^4.0.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=14"
}
},
"node_modules/wcwidth": {
@@ -11817,168 +6994,6 @@
"node": ">=12"
}
},
- "node_modules/webpack": {
- "version": "4.47.0",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.47.0.tgz",
- "integrity": "sha512-td7fYwgLSrky3fI1EuU5cneU4+pbH6GgOfuKNS1tNPcfdGinGELAqsb/BP4nnvZyKSG2i/xFGU7+n2PvZA8HJQ==",
- "dev": true,
- "dependencies": {
- "@webassemblyjs/ast": "1.9.0",
- "@webassemblyjs/helper-module-context": "1.9.0",
- "@webassemblyjs/wasm-edit": "1.9.0",
- "@webassemblyjs/wasm-parser": "1.9.0",
- "acorn": "^6.4.1",
- "ajv": "^6.10.2",
- "ajv-keywords": "^3.4.1",
- "chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^4.5.0",
- "eslint-scope": "^4.0.3",
- "json-parse-better-errors": "^1.0.2",
- "loader-runner": "^2.4.0",
- "loader-utils": "^1.2.3",
- "memory-fs": "^0.4.1",
- "micromatch": "^3.1.10",
- "mkdirp": "^0.5.3",
- "neo-async": "^2.6.1",
- "node-libs-browser": "^2.2.1",
- "schema-utils": "^1.0.0",
- "tapable": "^1.1.3",
- "terser-webpack-plugin": "^1.4.3",
- "watchpack": "^1.7.4",
- "webpack-sources": "^1.4.1"
- },
- "bin": {
- "webpack": "bin/webpack.js"
- },
- "engines": {
- "node": ">=6.11.5"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- },
- "peerDependenciesMeta": {
- "webpack-cli": {
- "optional": true
- },
- "webpack-command": {
- "optional": true
- }
- }
- },
- "node_modules/webpack-cli": {
- "version": "4.10.0",
- "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz",
- "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==",
- "dev": true,
- "dependencies": {
- "@discoveryjs/json-ext": "^0.5.0",
- "@webpack-cli/configtest": "^1.2.0",
- "@webpack-cli/info": "^1.5.0",
- "@webpack-cli/serve": "^1.7.0",
- "colorette": "^2.0.14",
- "commander": "^7.0.0",
- "cross-spawn": "^7.0.3",
- "fastest-levenshtein": "^1.0.12",
- "import-local": "^3.0.2",
- "interpret": "^2.2.0",
- "rechoir": "^0.7.0",
- "webpack-merge": "^5.7.3"
- },
- "bin": {
- "webpack-cli": "bin/cli.js"
- },
- "engines": {
- "node": ">=10.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- },
- "peerDependencies": {
- "webpack": "4.x.x || 5.x.x"
- },
- "peerDependenciesMeta": {
- "@webpack-cli/generators": {
- "optional": true
- },
- "@webpack-cli/migrate": {
- "optional": true
- },
- "webpack-bundle-analyzer": {
- "optional": true
- },
- "webpack-dev-server": {
- "optional": true
- }
- }
- },
- "node_modules/webpack-cli/node_modules/commander": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
- "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
- "dev": true,
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/webpack-merge": {
- "version": "5.10.0",
- "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz",
- "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==",
- "dev": true,
- "dependencies": {
- "clone-deep": "^4.0.1",
- "flat": "^5.0.2",
- "wildcard": "^2.0.0"
- },
- "engines": {
- "node": ">=10.0.0"
- }
- },
- "node_modules/webpack-sources": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
- "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
- "dev": true,
- "dependencies": {
- "source-list-map": "^2.0.0",
- "source-map": "~0.6.1"
- }
- },
- "node_modules/webpack-sources/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/webpack/node_modules/acorn": {
- "version": "6.4.2",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz",
- "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==",
- "dev": true,
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/webpack/node_modules/mkdirp": {
- "version": "0.5.6",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
- "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
- "dev": true,
- "dependencies": {
- "minimist": "^1.2.6"
- },
- "bin": {
- "mkdirp": "bin/cmd.js"
- }
- },
"node_modules/whatwg-encoding": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz",
@@ -12102,21 +7117,6 @@
"node": ">=8"
}
},
- "node_modules/wildcard": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz",
- "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==",
- "dev": true
- },
- "node_modules/worker-farm": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz",
- "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==",
- "dev": true,
- "dependencies": {
- "errno": "~0.1.7"
- }
- },
"node_modules/workerpool": {
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz",
@@ -12224,15 +7224,6 @@
"integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==",
"dev": true
},
- "node_modules/xtend": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
- "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
- "dev": true,
- "engines": {
- "node": ">=0.4"
- }
- },
"node_modules/y18n": {
"version": "5.0.8",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
diff --git a/package.json b/package.json
index 641e8f7..3c5d9a3 100755
--- a/package.json
+++ b/package.json
@@ -1,16 +1,16 @@
{
"name": "@puremvc/puremvc-js-multicore-framework",
- "version": "2.0.7",
+ "version": "2.0.8",
+ "description": "PureMVC MultiCore Framework for JavaScript",
"type": "module",
- "main": "bin/cjs/puremvc.cjs",
- "module": "bin/esm/puremvc.js",
+ "main": "bin/cjs/index.cjs",
+ "module": "bin/esm/index.js",
"exports": {
".": {
- "require": "./bin/cjs/puremvc.cjs",
- "import": "./bin/esm/puremvc.js"
+ "require": "./bin/cjs/index.cjs",
+ "import": "./bin/esm/index.js"
}
},
- "description": "PureMVC MultiCore Framework for JavaScript",
"scripts": {
"build": "npm run clean && npm run build:lib",
"build:lib": "rollup -c build/rollup.conf.mjs",
@@ -30,6 +30,10 @@
"type": "git",
"url": "git+https://github.com/PureMVC/puremvc-js-multicore-framework.git"
},
+ "homepage": "https://puremvc.org",
+ "bugs": {
+ "url": "https://github.com/PureMVC/puremvc-js-multicore-framework/issues"
+ },
"keywords": [
"puremvc",
"mvc"
@@ -40,16 +44,18 @@
"VERSION",
"package.json"
],
+ "author": "Saad Shams, David Foley, Cliff Hall",
+ "license": "BSD-3-Clause",
"authors": [
"Saad Shams ",
"David Foley ",
"Cliff Hall "
],
- "license": "BSD-3-Clause",
- "bugs": {
- "url": "https://github.com/PureMVC/puremvc-js-multicore-framework/issues"
+ "directories": {
+ "doc": "docs",
+ "test": "test",
+ "bin": "bin"
},
- "homepage": "https://puremvc.org",
"babel": {
"presets": [
"env"
@@ -64,7 +70,7 @@
"babel-plugin-add-module-exports": "^1.0.4",
"babel-preset-env": "^1.7.0",
"chai": "^4.2.0",
- "chromedriver": "^127.0.2",
+ "chromedriver": "^127.0.0",
"dotenv": "^16.0.3",
"edgedriver": "^5.3.8",
"geckodriver": "^4.2.1",
@@ -73,13 +79,5 @@
"mocha": "10.1.0",
"nightwatch": "^3.3.2",
"rollup": "^4.6.1"
- },
- "bin": {
- "puremvc-js-multicore-framework": "bin/puremvc.js"
- },
- "directories": {
- "doc": "docs",
- "test": "test"
- },
- "author": "Saad Shams, David Foley, Cliff Hall"
+ }
}
diff --git a/src/core/Controller.js b/src/core/Controller.js
index f076258..42b945f 100644
--- a/src/core/Controller.js
+++ b/src/core/Controller.js
@@ -54,10 +54,10 @@ class Controller {
* passing the unique key for this instance
* `Controller.getInstance( multitonKey )`
*
- * @throws {Error} Error if instance for this Multiton key has already been constructed
- *
* @constructor
* @param {string} key
+ *
+ * @throws {Error} Error if instance for this Multiton key has already been constructed
*/
constructor(key) {
if (Controller.instanceMap[key] != null) throw new Error(Controller.MULTITON_MSG);
diff --git a/src/core/Model.js b/src/core/Model.js
index 0b64df7..5436d6c 100644
--- a/src/core/Model.js
+++ b/src/core/Model.js
@@ -30,7 +30,6 @@
*
* @class Model
*/
-
class Model {
/**
@@ -150,4 +149,4 @@ class Model {
*/
static get MULTITON_MSG() { return "Model instance for this Multiton key already constructed!" };
}
-export { Model }
\ No newline at end of file
+export { Model }
diff --git a/src/patterns/facade/Facade.js b/src/patterns/facade/Facade.js
index ec4716a..e9c1a57 100644
--- a/src/patterns/facade/Facade.js
+++ b/src/patterns/facade/Facade.js
@@ -33,6 +33,7 @@ class Facade {
*
* @constructor
* @param {string} key
+ *
* @throws {Error} Error if instance for this Multiton key has already been constructed
*/
constructor(key) {
@@ -197,7 +198,7 @@ class Facade {
}
/**
- * Check if a Proxy is registered
+ * Check if a `Proxy` is registered
*
* @param {string} proxyName
* @returns {boolean} whether a Proxy is currently registered with the given `proxyName`.
@@ -236,7 +237,7 @@ class Facade {
}
/**
- * Check if a Mediator is registered or not
+ * Check if a `Mediator` is registered or not
*
* @param {string} mediatorName
* @returns {boolean} whether a Mediator is registered with the given `mediatorName`.
@@ -276,7 +277,7 @@ class Facade {
* compatibility, and to allow you to send custom
* notification classes using the facade.
*
- * Usually you should just call sendNotification
+ *
Usually you should just call `sendNotification`
* and pass the parameters, never having to
* construct the notification yourself.
*
diff --git a/src/patterns/mediator/Mediator.js b/src/patterns/mediator/Mediator.js
index 9f031a2..3a64824 100644
--- a/src/patterns/mediator/Mediator.js
+++ b/src/patterns/mediator/Mediator.js
@@ -21,10 +21,10 @@ class Mediator extends Notifier {
* Constructor.
*
* @constructor
- * @param {string} mediatorName
- * @param {Object} [viewComponent] viewComponent
+ * @param {string | null} [mediatorName=null]
+ * @param {Object | null} [viewComponent=null]
*/
- constructor(mediatorName, viewComponent = null) {
+ constructor(mediatorName = null, viewComponent = null) {
super();
this._mediatorName = mediatorName || Mediator.NAME;
this._viewComponent = viewComponent;
@@ -85,7 +85,7 @@ class Mediator extends Notifier {
* be defined in the subclass that casts the view
* object to a type, like this:
*
- * @returns {Object}
+ * @returns {Object | null}
*/
get viewComponent() {
return this._viewComponent;
diff --git a/src/patterns/observer/Notification.js b/src/patterns/observer/Notification.js
index fc46bdf..3642425 100644
--- a/src/patterns/observer/Notification.js
+++ b/src/patterns/observer/Notification.js
@@ -7,7 +7,6 @@
*/
/**
- *
* A base `Notification` implementation.
*
* PureMVC does not rely upon underlying event models such
@@ -65,7 +64,7 @@ class Notification {
/**
* Get the body of the `Notification` instance.
*
- * @returns {Object}
+ * @returns {Object | null}
*/
get body() {
return this._body;
diff --git a/src/patterns/observer/Observer.js b/src/patterns/observer/Observer.js
index fe065c0..accedde 100644
--- a/src/patterns/observer/Observer.js
+++ b/src/patterns/observer/Observer.js
@@ -32,12 +32,12 @@ class Observer {
*
The notification method on the interested object should take
* one parameter of type `Notification`
*
- * @param {function(Notification):void} notifyMethod
- * @param {Object} notifyContext
+ * @param {function(Notification):void | null} [notify = null]
+ * @param {Object | null} [context = null]
*/
- constructor(notifyMethod, notifyContext) {
- this._notifyMethod = notifyMethod;
- this._notifyContext = notifyContext;
+ constructor(notify = null, context = null) {
+ this._notifyMethod = notify;
+ this._notifyContext = context;
}
/**
diff --git a/src/patterns/proxy/Proxy.js b/src/patterns/proxy/Proxy.js
index 8e9fcac..799a0f0 100755
--- a/src/patterns/proxy/Proxy.js
+++ b/src/patterns/proxy/Proxy.js
@@ -33,16 +33,16 @@ class Proxy extends Notifier {
* Constructor
*
* @constructor
- * @param {string} proxyName
- * @param {Object} [data]
+ * @param {string | null} [proxyName=null]
+ * @param {Object | null} [data=null]
*/
- constructor(proxyName, data = null) {
+ constructor(proxyName = null, data = null) {
super();
/** @protected
* @type {string} */
this._proxyName = proxyName || Proxy.NAME;
/** @protected
- * @type {Object} */
+ * @type {Object | null} */
this._data = data;
}
@@ -68,7 +68,7 @@ class Proxy extends Notifier {
/**
* Get the data object
*
- * @returns {Object}
+ * @returns {Object | null}
*/
get data () {
return this._data;
diff --git a/test/core/ControllerTest.js b/test/core/ControllerTest.js
index 99247af..2898a5c 100644
--- a/test/core/ControllerTest.js
+++ b/test/core/ControllerTest.js
@@ -1,3 +1,11 @@
+//
+// ControllerTest.js
+// PureMVC JavaScript Multicore
+//
+// Copyright(c) 2023 Saad Shams
+// Your reuse is governed by the BSD-3-Clause License
+//
+
import chai from "chai"
import {Controller, View, Notification} from "../../src/index.js";
import {ControllerTestCommand} from "./ControllerTestCommand.js";
diff --git a/test/core/ControllerTestCommand.js b/test/core/ControllerTestCommand.js
index d90cbe2..acc2cc1 100644
--- a/test/core/ControllerTestCommand.js
+++ b/test/core/ControllerTestCommand.js
@@ -1,7 +1,14 @@
+//
+// ControllerTestCommand.js
+// PureMVC JavaScript Multicore
+//
+// Copyright(c) 2023 Saad Shams
+// Your reuse is governed by the BSD-3-Clause License
+//
+
import {SimpleCommand} from "../../src/index.js";
/**
- /**
* A SimpleCommand subclass used by ControllerTest.
*
* @see ControllerTest
diff --git a/test/core/ControllerTestCommand2.js b/test/core/ControllerTestCommand2.js
index 4e5e58c..9d6912e 100644
--- a/test/core/ControllerTestCommand2.js
+++ b/test/core/ControllerTestCommand2.js
@@ -1,3 +1,11 @@
+//
+// ControllerTestCommand2.js
+// PureMVC JavaScript Multicore
+//
+// Copyright(c) 2023 Saad Shams
+// Your reuse is governed by the BSD-3-Clause License
+//
+
import {SimpleCommand} from "../../src/index.js";
/**
diff --git a/test/core/ControllerTestVO.js b/test/core/ControllerTestVO.js
index 5a4d442..fc52658 100644
--- a/test/core/ControllerTestVO.js
+++ b/test/core/ControllerTestVO.js
@@ -1,3 +1,11 @@
+//
+// ControllerTestVO.js
+// PureMVC JavaScript Multicore
+//
+// Copyright(c) 2023 Saad Shams
+// Your reuse is governed by the BSD-3-Clause License
+//
+
/**
* A utility class used by ControllerTest.
*
diff --git a/test/core/ModelTest.js b/test/core/ModelTest.js
index 22f4562..cb526ae 100644
--- a/test/core/ModelTest.js
+++ b/test/core/ModelTest.js
@@ -1,3 +1,11 @@
+//
+// ModelTest.js
+// PureMVC JavaScript Multicore
+//
+// Copyright(c) 2023 Saad Shams
+// Your reuse is governed by the BSD-3-Clause License
+//
+
import {Model, Proxy} from "../../src/index.js";
import chai from "chai"
import { ModelTestProxy } from "./ModelTestProxy.js"
diff --git a/test/core/ModelTestProxy.js b/test/core/ModelTestProxy.js
index 497085c..06ca877 100644
--- a/test/core/ModelTestProxy.js
+++ b/test/core/ModelTestProxy.js
@@ -1,3 +1,11 @@
+//
+// ModelTestProxy.js
+// PureMVC JavaScript Multicore
+//
+// Copyright(c) 2023 Saad Shams
+// Your reuse is governed by the BSD-3-Clause License
+//
+
import {Proxy} from "../../src/index.js"
/**
diff --git a/test/core/ViewTest.js b/test/core/ViewTest.js
index 5b91309..e05b63e 100644
--- a/test/core/ViewTest.js
+++ b/test/core/ViewTest.js
@@ -1,3 +1,11 @@
+//
+// ViewTest.js
+// PureMVC JavaScript Multicore
+//
+// Copyright(c) 2023 Saad Shams
+// Your reuse is governed by the BSD-3-Clause License
+//
+
import chai from "chai"
import {View, Notification, Observer, Mediator} from "../../src/index.js";
import {ViewTestMediator} from "./ViewTestMediator.js";
@@ -84,8 +92,11 @@ describe("ViewTest", () => {
chai.assert.isTrue(mediator !== undefined, "ViewTestMediator is not null");
});
+ /**
+ * Tests the hasMediator Method
+ */
it("testHasMediator", () => {
- // register a Mediator
+ // Get the Multiton View instance
let view = View.getInstance("ViewTestKey4", key => new View(key));
// Create and register the test mediator
@@ -180,6 +191,8 @@ describe("ViewTest", () => {
// Remove the Mediator
view.removeMediator(ViewTestMediator.NAME);
+
+ chai.assert.isTrue(view.retrieveMediator(ViewTestMediator.NAME) == null, "view.retrieveMediator(ViewTestMediator.NAME) == null");
});
/**
@@ -199,11 +212,11 @@ describe("ViewTest", () => {
view.registerMediator(new ViewTestMediator2(viewTest));
// test that notifications work
- view.notifyObservers(new Notification(ViewTestNote.notes.NOTE1))
- chai.assert.isTrue(viewTest.lastNotification === ViewTestNote.notes.NOTE1, "Expecting lastNotification === NOTE1");
+ view.notifyObservers(new Notification(ViewTestNote.NOTE1))
+ chai.assert.isTrue(viewTest.lastNotification === ViewTestNote.NOTE1, "Expecting lastNotification === NOTE1");
- view.notifyObservers(new Notification(ViewTestNote.notes.NOTE2));
- chai.assert.isTrue(viewTest.lastNotification === ViewTestNote.notes.NOTE2);
+ view.notifyObservers(new Notification(ViewTestNote.NOTE2));
+ chai.assert.isTrue(viewTest.lastNotification === ViewTestNote.NOTE2);
// Remove the Mediator
view.removeMediator(ViewTestMediator2.NAME);
@@ -216,13 +229,18 @@ describe("ViewTest", () => {
// on this component, and ViewTestMediator)
viewTest.lastNotification = null;
- view.notifyObservers(new Notification(ViewTestNote.notes.NOTE1))
- chai.assert.isTrue(viewTest.lastNotification !== ViewTestNote.notes.NOTE1, "Expecting lastNotification === NOTE1");
+ view.notifyObservers(new Notification(ViewTestNote.NOTE1))
+ chai.assert.isTrue(viewTest.lastNotification !== ViewTestNote.NOTE1, "Expecting lastNotification === NOTE1");
- view.notifyObservers(new Notification(ViewTestNote.notes.NOTE2))
- chai.assert.isTrue(viewTest.lastNotification !== ViewTestNote.notes.NOTE2, "Expecting lastNotification === NOTE2");
+ view.notifyObservers(new Notification(ViewTestNote.NOTE2))
+ chai.assert.isTrue(viewTest.lastNotification !== ViewTestNote.NOTE2, "Expecting lastNotification === NOTE2");
});
+ /**
+ * Tests registering a Mediator for 2 different notifications, removing the
+ * Mediator from the View, and seeing that neither notification causes the
+ * Mediator to be notified. Added for the fix deployed in version 1.7
+ */
it("testRemoveOneOfTwoMediatorsAndSubsequentNotify", () => {
let viewTest = { lastNotification: "" };
@@ -236,14 +254,14 @@ describe("ViewTest", () => {
view.registerMediator(new ViewTestMediator3(viewTest));
// test that all notifications work
- view.notifyObservers(new Notification(ViewTestNote.notes.NOTE1));
- chai.assert.isTrue(viewTest.lastNotification === ViewTestNote.notes.NOTE1, "Expecting lastNotification === NOTE1");
+ view.notifyObservers(new Notification(ViewTestNote.NOTE1));
+ chai.assert.isTrue(viewTest.lastNotification === ViewTestNote.NOTE1, "Expecting lastNotification === NOTE1");
- view.notifyObservers(new Notification(ViewTestNote.notes.NOTE2));
- chai.assert.isTrue(viewTest.lastNotification === ViewTestNote.notes.NOTE2, "Expecting lastNotification === NOTE2");
+ view.notifyObservers(new Notification(ViewTestNote.NOTE2));
+ chai.assert.isTrue(viewTest.lastNotification === ViewTestNote.NOTE2, "Expecting lastNotification === NOTE2");
- view.notifyObservers(new Notification(ViewTestNote.notes.NOTE3));
- chai.assert.isTrue(viewTest.lastNotification === ViewTestNote.notes.NOTE3, "Expecting lastNotification === NOTE3");
+ view.notifyObservers(new Notification(ViewTestNote.NOTE3));
+ chai.assert.isTrue(viewTest.lastNotification === ViewTestNote.NOTE3, "Expecting lastNotification === NOTE3");
// Remove the Mediator that responds to 1 and 2
view.removeMediator(ViewTestMediator2.NAME);
@@ -255,14 +273,14 @@ describe("ViewTest", () => {
// for notifications 1 and 2, but still work for 3
viewTest.lastNotification = null;
- view.notifyObservers(new Notification(ViewTestNote.notes.NOTE1));
- chai.assert.isTrue(viewTest.lastNotification !== ViewTestNote.notes.NOTE1, "Expecting lastNotification != NOTE1");
+ view.notifyObservers(new Notification(ViewTestNote.NOTE1));
+ chai.assert.isTrue(viewTest.lastNotification !== ViewTestNote.NOTE1, "Expecting lastNotification != NOTE1");
- view.notifyObservers(new Notification(ViewTestNote.notes.NOTE2));
- chai.assert.isTrue(viewTest.lastNotification !== ViewTestNote.notes.NOTE2, "Expecting lastNotification != NOTE2");
+ view.notifyObservers(new Notification(ViewTestNote.NOTE2));
+ chai.assert.isTrue(viewTest.lastNotification !== ViewTestNote.NOTE2, "Expecting lastNotification != NOTE2");
- view.notifyObservers(new Notification(ViewTestNote.notes.NOTE3));
- chai.assert.isTrue(viewTest.lastNotification === ViewTestNote.notes.NOTE3, "Expecting lastNotification === NOTE3");
+ view.notifyObservers(new Notification(ViewTestNote.NOTE3));
+ chai.assert.isTrue(viewTest.lastNotification === ViewTestNote.NOTE3, "Expecting lastNotification === NOTE3");
});
/**
@@ -289,7 +307,7 @@ describe("ViewTest", () => {
// test that the counter is only incremented once (mediator 5's response)
viewTest.counter = 0;
- view.notifyObservers(new Notification(ViewTestNote.notes.NOTE5));
+ view.notifyObservers(new Notification(ViewTestNote.NOTE5));
chai.assert.isTrue(viewTest.counter === 1, "Expecting counter === 1");
// Remove the Mediator
@@ -300,7 +318,7 @@ describe("ViewTest", () => {
// test that the counter is no longer incremented
viewTest.counter = 0;
- view.notifyObservers(new Notification(ViewTestNote.notes.NOTE5));
+ view.notifyObservers(new Notification(ViewTestNote.NOTE5));
chai.assert.isTrue(viewTest.counter === 0, "Expecting counter === 0");
});
@@ -339,14 +357,14 @@ describe("ViewTest", () => {
// send the notification. each of the above mediators will respond by removing
// themselves and incrementing the counter by 1. This should leave us with a
// count of 8, since 8 mediators will respond.
- view.notifyObservers(new Notification(ViewTestNote.notes.NOTE6));
+ view.notifyObservers(new Notification(ViewTestNote.NOTE6));
// verify the count is correct
chai.assert.isTrue(viewTest.counter === 8, "Expecting counter === 8");
// clear the counter
viewTest.counter = 0;
- view.notifyObservers(new Notification(ViewTestNote.notes.NOTE6));
+ view.notifyObservers(new Notification(ViewTestNote.NOTE6));
// verify the count is 0
chai.assert.isTrue(viewTest.counter === 0, "Expecting counter === 0");
});
diff --git a/test/core/ViewTestMediator.js b/test/core/ViewTestMediator.js
index 0461f60..1c8177b 100644
--- a/test/core/ViewTestMediator.js
+++ b/test/core/ViewTestMediator.js
@@ -1,3 +1,11 @@
+//
+// ViewTestMediator.js
+// PureMVC JavaScript Multicore
+//
+// Copyright(c) 2023 Saad Shams
+// Your reuse is governed by the BSD-3-Clause License
+//
+
import {Mediator} from "../../src/index.js";
/**
diff --git a/test/core/ViewTestMediator2.js b/test/core/ViewTestMediator2.js
index 1a02a59..298ee85 100644
--- a/test/core/ViewTestMediator2.js
+++ b/test/core/ViewTestMediator2.js
@@ -1,3 +1,11 @@
+//
+// ViewTestMediator2.js
+// PureMVC JavaScript Multicore
+//
+// Copyright(c) 2023 Saad Shams
+// Your reuse is governed by the BSD-3-Clause License
+//
+
import {Mediator} from "../../src/index.js";
import {ViewTestNote} from "./ViewTestNote.js";
@@ -22,7 +30,7 @@ class ViewTestMediator2 extends Mediator {
* @returns {[string]}
*/
listNotificationInterests() {
- return [ViewTestNote.notes.NOTE1, ViewTestNote.notes.NOTE2];
+ return [ViewTestNote.NOTE1, ViewTestNote.NOTE2];
}
/**
diff --git a/test/core/ViewTestMediator3.js b/test/core/ViewTestMediator3.js
index 3a0daca..16ad360 100644
--- a/test/core/ViewTestMediator3.js
+++ b/test/core/ViewTestMediator3.js
@@ -1,3 +1,11 @@
+//
+// ViewTestMediator3.js
+// PureMVC JavaScript Multicore
+//
+// Copyright(c) 2023 Saad Shams
+// Your reuse is governed by the BSD-3-Clause License
+//
+
import {Mediator} from "../../src/index.js";
import {ViewTestNote} from "./ViewTestNote.js";
@@ -18,7 +26,7 @@ class ViewTestMediator3 extends Mediator {
listNotificationInterests() {
// be sure that the mediator has some Observers created
// in order to test removeMediator
- return [ViewTestNote.notes.NOTE3];
+ return [ViewTestNote.NOTE3];
}
/**
diff --git a/test/core/ViewTestMediator4.js b/test/core/ViewTestMediator4.js
index 3d7543d..f2d8f4c 100644
--- a/test/core/ViewTestMediator4.js
+++ b/test/core/ViewTestMediator4.js
@@ -1,3 +1,11 @@
+//
+// ViewTestMediator4.js
+// PureMVC JavaScript Multicore
+//
+// Copyright(c) 2023 Saad Shams
+// Your reuse is governed by the BSD-3-Clause License
+//
+
import {Mediator} from "../../src/index.js";
/**
diff --git a/test/core/ViewTestMediator5.js b/test/core/ViewTestMediator5.js
index b643f2b..003a72d 100644
--- a/test/core/ViewTestMediator5.js
+++ b/test/core/ViewTestMediator5.js
@@ -1,3 +1,11 @@
+//
+// ViewTestMediator5.js
+// PureMVC JavaScript Multicore
+//
+// Copyright(c) 2023 Saad Shams
+// Your reuse is governed by the BSD-3-Clause License
+//
+
import {Mediator} from "../../src/index.js";
import {ViewTestNote} from "./ViewTestNote.js";
@@ -20,7 +28,7 @@ class ViewTestMediator5 extends Mediator {
* @returns {[string]}
*/
listNotificationInterests() {
- return [ViewTestNote.notes.NOTE5];
+ return [ViewTestNote.NOTE5];
}
/**
diff --git a/test/core/ViewTestMediator6.js b/test/core/ViewTestMediator6.js
index 0a545d9..2fa7318 100644
--- a/test/core/ViewTestMediator6.js
+++ b/test/core/ViewTestMediator6.js
@@ -1,3 +1,11 @@
+//
+// ViewTestMediator6.js
+// PureMVC JavaScript Multicore
+//
+// Copyright(c) 2023 Saad Shams
+// Your reuse is governed by the BSD-3-Clause License
+//
+
import {Mediator} from "../../src/index.js";
import {ViewTestNote} from "./ViewTestNote.js";
@@ -12,7 +20,7 @@ class ViewTestMediator6 extends Mediator {
}
listNotificationInterests() {
- return [ViewTestNote.notes.NOTE6];
+ return [ViewTestNote.NOTE6];
}
handleNotification(notification) {
diff --git a/test/core/ViewTestNote.js b/test/core/ViewTestNote.js
index a8b5ecc..afc8e76 100644
--- a/test/core/ViewTestNote.js
+++ b/test/core/ViewTestNote.js
@@ -1,4 +1,12 @@
-import {Notification} from "../../src/index.js";
+//
+// ViewTestNote.js
+// PureMVC JavaScript Multicore
+//
+// Copyright(c) 2023 Saad Shams
+// Your reuse is governed by the BSD-3-Clause License
+//
+
+import {Notification} from "../../src/index.js"
/**
*
@@ -6,6 +14,13 @@ import {Notification} from "../../src/index.js";
*/
class ViewTestNote extends Notification {
+ static get NOTE1() { return "Notification1" }
+ static get NOTE2() { return "Notification2" }
+ static get NOTE3() { return "Notification3" }
+ static get NOTE4() { return "Notification4" }
+ static get NOTE5() { return "Notification5" }
+ static get NOTE6() { return "Notification6" }
+
/**
*
* @param {string} name
@@ -13,22 +28,11 @@ class ViewTestNote extends Notification {
*/
constructor(name, body) {
super(name, body);
-
- /** @type {Map} */
- ViewTestNote.notes = {
- NOTE1: "Notification1",
- NOTE2: "Notification2",
- NOTE3: "Notification3",
- NOTE4: "Notification4",
- NOTE5: "Notification5",
- NOTE6: "Notification6"
- };
}
/**
*
* @param {Object} body
- * @static
* @returns {ViewTestNote}
*/
static create(body) {
diff --git a/test/patterns/command/MacroCommandTest.js b/test/patterns/command/MacroCommandTest.js
index c42c287..1340915 100644
--- a/test/patterns/command/MacroCommandTest.js
+++ b/test/patterns/command/MacroCommandTest.js
@@ -1,7 +1,16 @@
+//
+// MacroCommandTest.js
+// PureMVC JavaScript Multicore
+//
+// Copyright(c) 2023 Saad Shams
+// Your reuse is governed by the BSD-3-Clause License
+//
+
import chai from "chai"
import {Notification} from "../../../src/index.js"
import {MacroCommandTestCommand} from "./MacroCommandTestCommand.js"
import {MacroCommandTestVO} from "./MacroCommandTestVO.js"
+
/**
* Test the PureMVC SimpleCommand class.
*
diff --git a/test/patterns/command/MacroCommandTestCommand.js b/test/patterns/command/MacroCommandTestCommand.js
index 9669ed4..777ec79 100644
--- a/test/patterns/command/MacroCommandTestCommand.js
+++ b/test/patterns/command/MacroCommandTestCommand.js
@@ -1,6 +1,15 @@
+//
+// MacroCommandTestCommand.js
+// PureMVC JavaScript Multicore
+//
+// Copyright(c) 2023 Saad Shams
+// Your reuse is governed by the BSD-3-Clause License
+//
+
import {MacroCommand} from "../../../src/index.js";
import {MacroCommandTestSub1Command} from "./MacroCommandTestSub1Command.js";
import {MacroCommandTestSub2Command} from "./MacroCommandTestSub2Command.js";
+
/**
* A MacroCommand subclass used by MacroCommandTest.
*
diff --git a/test/patterns/command/MacroCommandTestSub1Command.js b/test/patterns/command/MacroCommandTestSub1Command.js
index 296611d..54f7121 100644
--- a/test/patterns/command/MacroCommandTestSub1Command.js
+++ b/test/patterns/command/MacroCommandTestSub1Command.js
@@ -1,3 +1,11 @@
+//
+// MacroCommandTestSub1Command.js
+// PureMVC JavaScript Multicore
+//
+// Copyright(c) 2023 Saad Shams
+// Your reuse is governed by the BSD-3-Clause License
+//
+
import {SimpleCommand} from "../../../src/index.js";
/**
diff --git a/test/patterns/command/MacroCommandTestSub2Command.js b/test/patterns/command/MacroCommandTestSub2Command.js
index a446761..ec301f0 100644
--- a/test/patterns/command/MacroCommandTestSub2Command.js
+++ b/test/patterns/command/MacroCommandTestSub2Command.js
@@ -1,3 +1,11 @@
+//
+// MacroCommandTestSub2Command.js
+// PureMVC JavaScript Multicore
+//
+// Copyright(c) 2023 Saad Shams
+// Your reuse is governed by the BSD-3-Clause License
+//
+
import {SimpleCommand} from "../../../src/index.js";
/**
diff --git a/test/patterns/command/MacroCommandTestVO.js b/test/patterns/command/MacroCommandTestVO.js
index a73450f..a9bea83 100644
--- a/test/patterns/command/MacroCommandTestVO.js
+++ b/test/patterns/command/MacroCommandTestVO.js
@@ -1,3 +1,11 @@
+//
+// MacroCommandTestVO.js
+// PureMVC JavaScript Multicore
+//
+// Copyright(c) 2023 Saad Shams
+// Your reuse is governed by the BSD-3-Clause License
+//
+
/**
* A utility class used by MacroCommandTest.
*
diff --git a/test/patterns/command/SimpleCommandTest.js b/test/patterns/command/SimpleCommandTest.js
index 470d90f..5ce5623 100644
--- a/test/patterns/command/SimpleCommandTest.js
+++ b/test/patterns/command/SimpleCommandTest.js
@@ -1,3 +1,11 @@
+//
+// SimpleCommandTest.js
+// PureMVC JavaScript Multicore
+//
+// Copyright(c) 2023 Saad Shams
+// Your reuse is governed by the BSD-3-Clause License
+//
+
import chai from "chai"
import {Notification} from "../../../src/index.js"
import {SimpleCommandTestCommand} from "./SimpleCommandTestCommand.js";
diff --git a/test/patterns/command/SimpleCommandTestCommand.js b/test/patterns/command/SimpleCommandTestCommand.js
index 6667c9e..83f93be 100644
--- a/test/patterns/command/SimpleCommandTestCommand.js
+++ b/test/patterns/command/SimpleCommandTestCommand.js
@@ -1,3 +1,11 @@
+//
+// SimpleCommandTestCommand.js
+// PureMVC JavaScript Multicore
+//
+// Copyright(c) 2023 Saad Shams
+// Your reuse is governed by the BSD-3-Clause License
+//
+
import {SimpleCommand} from "../../../src/index.js";
/**
diff --git a/test/patterns/command/SimpleCommandTestVO.js b/test/patterns/command/SimpleCommandTestVO.js
index 3dae0d2..4119c42 100644
--- a/test/patterns/command/SimpleCommandTestVO.js
+++ b/test/patterns/command/SimpleCommandTestVO.js
@@ -1,3 +1,11 @@
+//
+// SimpleCommandTestVO.js
+// PureMVC JavaScript Multicore
+//
+// Copyright(c) 2023 Saad Shams
+// Your reuse is governed by the BSD-3-Clause License
+//
+
/**
* A utility class used by SimpleCommandTest.
*
diff --git a/test/patterns/facade/FacadeTest.js b/test/patterns/facade/FacadeTest.js
index f806fab..a975267 100644
--- a/test/patterns/facade/FacadeTest.js
+++ b/test/patterns/facade/FacadeTest.js
@@ -1,3 +1,11 @@
+//
+// FacadeTest.js
+// PureMVC JavaScript Multicore
+//
+// Copyright(c) 2023 Saad Shams
+// Your reuse is governed by the BSD-3-Clause License
+//
+
import chai from "chai"
import {Facade, Mediator, Proxy} from "../../../src/index.js";
import {FacadeTestCommand} from "./FacadeTestCommand.js";
@@ -187,7 +195,7 @@ describe("FacadeTest", () => {
*/
it("should testHasCommand", () => {
// register the ControllerTestCommand to handle 'hasCommandTest' notes
- let facade = Facade.getInstance("FacadeTestKey10", key => new Facade(key));
+ let facade = Facade.getInstance("FacadeTestKey9", key => new Facade(key));
facade.registerCommand("facadeHasCommandTest", () => new FacadeTestCommand());
// test that hasCommand returns true for hasCommandTest notifications
@@ -205,19 +213,19 @@ describe("FacadeTest", () => {
*/
it("should testHasCoreAndRemoveCore", () => {
// assert that the Facade.hasCore method returns false first
- chai.assert.isFalse(Facade.hasCore("FacadeTestKey11"), "Expecting facade.hasCore('FacadeTestKey11') == false");
+ chai.assert.isFalse(Facade.hasCore("FacadeTestKey10"), "Expecting facade.hasCore('FacadeTestKey11') == false");
// register a Core
- Facade.getInstance("FacadeTestKey11", key => new Facade(key));
+ Facade.getInstance("FacadeTestKey10", key => new Facade(key));
// assert that the Facade.hasCore method returns true now that a Core is registered
- chai.assert.isTrue(Facade.hasCore("FacadeTestKey11"), "Expecting facade.hasCore('FacadeTestKey11') == true");
+ chai.assert.isTrue(Facade.hasCore("FacadeTestKey10"), "Expecting facade.hasCore('FacadeTestKey11') == true");
// remove the Core
- Facade.removeCore("FacadeTestKey11");
+ Facade.removeCore("FacadeTestKey10");
// assert that the Facade.hasCore method returns false now that the core has been removed.
- chai.assert.isFalse(Facade.hasCore("FacadeTestKey11"), "Expecting facade.hasCore('FacadeTestKey11') == false");
+ chai.assert.isFalse(Facade.hasCore("FacadeTestKey10"), "Expecting facade.hasCore('FacadeTestKey11') == false");
});
});
diff --git a/test/patterns/facade/FacadeTestCommand.js b/test/patterns/facade/FacadeTestCommand.js
index 0e76e6c..40f9c22 100644
--- a/test/patterns/facade/FacadeTestCommand.js
+++ b/test/patterns/facade/FacadeTestCommand.js
@@ -1,3 +1,11 @@
+//
+// FacadeTestCommand.js
+// PureMVC JavaScript Multicore
+//
+// Copyright(c) 2023 Saad Shams
+// Your reuse is governed by the BSD-3-Clause License
+//
+
import {SimpleCommand} from "../../../src/index.js";
/**
diff --git a/test/patterns/facade/FacadeTestVO.js b/test/patterns/facade/FacadeTestVO.js
index 43fb902..69ac636 100644
--- a/test/patterns/facade/FacadeTestVO.js
+++ b/test/patterns/facade/FacadeTestVO.js
@@ -1,3 +1,11 @@
+//
+// FacadeTestVO.js
+// PureMVC JavaScript Multicore
+//
+// Copyright(c) 2023 Saad Shams
+// Your reuse is governed by the BSD-3-Clause License
+//
+
/**
* A utility class used by FacadeTest.
*
diff --git a/test/patterns/mediator/MediatorTest.js b/test/patterns/mediator/MediatorTest.js
index d6e1ff1..3b33f7e 100644
--- a/test/patterns/mediator/MediatorTest.js
+++ b/test/patterns/mediator/MediatorTest.js
@@ -1,3 +1,11 @@
+//
+// MediatorTest.js
+// PureMVC JavaScript Multicore
+//
+// Copyright(c) 2023 Saad Shams
+// Your reuse is governed by the BSD-3-Clause License
+//
+
import {Mediator} from "../../../src/index.js";
import chai from "chai"
diff --git a/test/patterns/observer/NotificationTest.js b/test/patterns/observer/NotificationTest.js
index 091d0f9..d8c4849 100644
--- a/test/patterns/observer/NotificationTest.js
+++ b/test/patterns/observer/NotificationTest.js
@@ -1,3 +1,11 @@
+//
+// NotificationTest.js
+// PureMVC JavaScript Multicore
+//
+// Copyright(c) 2023 Saad Shams
+// Your reuse is governed by the BSD-3-Clause License
+//
+
import chai from "chai"
import {Notification} from "../../../src/index.js";
diff --git a/test/patterns/observer/NotifierTest.js b/test/patterns/observer/NotifierTest.js
index cb97510..87fbfa4 100644
--- a/test/patterns/observer/NotifierTest.js
+++ b/test/patterns/observer/NotifierTest.js
@@ -1,3 +1,11 @@
+//
+// NotifierTest.js
+// PureMVC JavaScript Multicore
+//
+// Copyright(c) 2023 Saad Shams
+// Your reuse is governed by the BSD-3-Clause License
+//
+
import chai from "chai"
import {Facade, Notifier} from "../../../src/index.js";
import {FacadeTestVO} from "../facade/FacadeTestVO.js";
diff --git a/test/patterns/observer/ObserverTest.js b/test/patterns/observer/ObserverTest.js
index b504a6f..89cb966 100644
--- a/test/patterns/observer/ObserverTest.js
+++ b/test/patterns/observer/ObserverTest.js
@@ -1,3 +1,11 @@
+//
+// ObserverTest.js
+// PureMVC JavaScript Multicore
+//
+// Copyright(c) 2023 Saad Shams
+// Your reuse is governed by the BSD-3-Clause License
+//
+
import chai from "chai"
import {Notification, Observer} from "../../../src/index.js";
@@ -79,9 +87,7 @@ describe("ObserverTest", () => {
it("should testCompareNotifyContext", () => {
// Create observer passing in notification method and context
let obj = {
- observerTestMethod: (notification) => {
-
- }
+ observerTestMethod: (notification) => {}
};
let observer = new Observer(obj.observerTestMethod, obj);
diff --git a/test/patterns/proxy/ProxyTest.js b/test/patterns/proxy/ProxyTest.js
index 12d814e..bf4928f 100644
--- a/test/patterns/proxy/ProxyTest.js
+++ b/test/patterns/proxy/ProxyTest.js
@@ -1,3 +1,11 @@
+//
+// ProxyTest.js
+// PureMVC JavaScript Multicore
+//
+// Copyright(c) 2023 Saad Shams
+// Your reuse is governed by the BSD-3-Clause License
+//
+
import chai from "chai"
import {Proxy} from "../../../src/index.js";
@@ -25,6 +33,9 @@ describe("ProxyTest", () => {
chai.assert.isTrue(proxy2.proxyName === Proxy.NAME, "Expecting proxy.getProxyName() == 'Proxy'");
});
+ /**
+ * Tests setting and getting the data using Proxy class accessor methods.
+ */
it("should testDataAccessors", () => {
// Create a new Proxy and use accessors to set the data
let proxy = new Proxy("colors", null);
@@ -38,6 +49,9 @@ describe("ProxyTest", () => {
chai.assert.equal(data[2], "blue", "Expecting data[2] == 'blue'");
});
+ /**
+ * Tests setting the name and body using the Notification class Constructor.
+ */
it("should testConstructor", () => {
// Create a new Proxy using the Constructor to set the name and data
let proxy = new Proxy("colors", ["red", "green", "blue"]);