@nhost/nhost-js 0.3.13 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/helpers/bind.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/utils.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/helpers/buildURL.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/core/InterceptorManager.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/helpers/normalizeHeaderName.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/core/enhanceError.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/core/createError.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/core/settle.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/helpers/cookies.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/helpers/isAbsoluteURL.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/helpers/combineURLs.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/core/buildFullPath.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/helpers/parseHeaders.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/helpers/isURLSameOrigin.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/cancel/Cancel.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/adapters/xhr.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/defaults.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/core/transformData.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/cancel/isCancel.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/core/dispatchRequest.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/core/mergeConfig.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/env/data.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/helpers/validator.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/core/Axios.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/cancel/CancelToken.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/helpers/spread.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/helpers/isAxiosError.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/axios.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/index.js", "../../../node_modules/.pnpm/strict-uri-encode@2.0.0/node_modules/strict-uri-encode/index.js", "../../../node_modules/.pnpm/decode-uri-component@0.2.0/node_modules/decode-uri-component/index.js", "../../../node_modules/.pnpm/split-on-first@1.1.0/node_modules/split-on-first/index.js", "../../../node_modules/.pnpm/filter-obj@1.1.0/node_modules/filter-obj/index.js", "../../../node_modules/.pnpm/query-string@7.1.1/node_modules/query-string/index.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/helpers/bind.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/utils.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/helpers/buildURL.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/core/InterceptorManager.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/helpers/normalizeHeaderName.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/core/enhanceError.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/core/createError.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/core/settle.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/helpers/cookies.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/helpers/isAbsoluteURL.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/helpers/combineURLs.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/core/buildFullPath.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/helpers/parseHeaders.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/helpers/isURLSameOrigin.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/adapters/xhr.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/defaults.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/core/transformData.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/cancel/isCancel.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/core/dispatchRequest.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/core/mergeConfig.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/helpers/validator.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/core/Axios.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/cancel/Cancel.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/cancel/CancelToken.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/helpers/spread.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/helpers/isAxiosError.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/axios.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/index.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/helpers/bind.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/utils.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/helpers/buildURL.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/core/InterceptorManager.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/helpers/normalizeHeaderName.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/core/enhanceError.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/core/createError.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/core/settle.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/helpers/cookies.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/helpers/isAbsoluteURL.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/helpers/combineURLs.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/core/buildFullPath.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/helpers/parseHeaders.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/helpers/isURLSameOrigin.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/cancel/Cancel.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/adapters/xhr.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/defaults.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/core/transformData.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/cancel/isCancel.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/core/dispatchRequest.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/core/mergeConfig.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/env/data.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/helpers/validator.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/core/Axios.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/cancel/CancelToken.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/helpers/spread.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/helpers/isAxiosError.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/axios.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/index.js", "../../hasura-auth-js/src/hasura-auth-api.ts", "../../hasura-auth-js/src/hasura-auth-client.ts", "../../hasura-auth-js/src/utils/constants.ts", "../../hasura-auth-js/src/utils/helpers.ts", "../../hasura-storage-js/src/hasura-storage-api.ts", "../../hasura-storage-js/src/hasura-storage-client.ts", "../src/clients/functions.ts", "../src/clients/graphql.ts", "../src/core/nhost-client.ts", "../src/index.ts"],
4
- "sourcesContent": ["'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n", "'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return Array.isArray(val);\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return toString.call(val) === '[object FormData]';\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return toString.call(val) === '[object URLSearchParams]';\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n", "'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n", "'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n };\n return error;\n};\n", "'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n", "'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n", "'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};\n", "'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n", "'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n", "'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n", "'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || defaults.transitional;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new Cancel('canceled') : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n", "'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n", "'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n", "'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n", "'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new Cancel('canceled');\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n", "'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n", "module.exports = {\n \"version\": \"0.25.0\"\n};", "'use strict';\n\nvar VERSION = require('../env/data').version;\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')));\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n", "'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n if (!config.url) {\n throw new Error('Provided config url is not valid');\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n if (!config.url) {\n throw new Error('Provided config url is not valid');\n }\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n", "'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n", "'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n", "'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n", "module.exports = require('./lib/axios');", "'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n", "'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp(token, 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn decodeURIComponent(components.join(''));\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher);\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher);\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n", "'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n", "'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n", "'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), ':list='].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), ':list=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSep = options.arrayFormat === 'bracket-separator' ?\n\t\t\t\t'[]=' :\n\t\t\t\t'=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSep, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tcase 'bracket-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[\\])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null ?\n\t\t\t\t\t[] :\n\t\t\t\t\tvalue.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], arrayValue);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${options[encodeFragmentIdentifier] ? encode(object.fragmentIdentifier, options) : object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\n", "'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n", "'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n", "'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n", "'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n", "'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n", "'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n", "'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n", "'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n", "'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n", "'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n", "'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n", "'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n", "'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n", "'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n", "'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n", "'use strict';\n\nvar pkg = require('./../../package.json');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\nvar currentVerArr = pkg.version.split('.');\n\n/**\n * Compare package versions\n * @param {string} version\n * @param {string?} thanVersion\n * @returns {boolean}\n */\nfunction isOlderVersion(version, thanVersion) {\n var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;\n var destVer = version.split('.');\n for (var i = 0; i < 3; i++) {\n if (pkgVersionArr[i] > destVer[i]) {\n return true;\n } else if (pkgVersionArr[i] < destVer[i]) {\n return false;\n }\n }\n return false;\n}\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator\n * @param {string?} version\n * @param {string} message\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n var isDeprecated = version && isOlderVersion(version);\n\n function formatMessage(opt, desc) {\n return '[Axios v' + pkg.version + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed in ' + version));\n }\n\n if (isDeprecated && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n isOlderVersion: isOlderVersion,\n assertOptions: assertOptions,\n validators: validators\n};\n", "'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n", "'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n", "'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n", "'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n", "'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n", "'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n", "module.exports = require('./lib/axios');", "'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n", "'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n", "'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n", "'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n };\n return error;\n};\n", "'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n", "'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n", "'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n", "'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n", "'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n", "'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n", "'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || defaults.transitional;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new Cancel('canceled') : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n", "'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n", "'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n", "'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n", "'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new Cancel('canceled');\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n", "'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n", "module.exports = {\n \"version\": \"0.23.0\"\n};", "'use strict';\n\nvar VERSION = require('../env/data').version;\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')));\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n", "'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n", "'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n", "'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n", "'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n", "'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n", "module.exports = require('./lib/axios');", "import axios, { AxiosError, AxiosInstance } from 'axios'\n\nimport {\n ApiChangeEmailResponse,\n ApiChangePasswordResponse,\n ApiDeanonymizeResponse,\n ApiError,\n ApiRefreshTokenResponse,\n ApiResetPasswordResponse,\n ApiSendVerificationEmailResponse,\n ApiSignInData,\n ApiSignInResponse,\n ApiSignOutResponse,\n ChangeEmailParams,\n ChangePasswordParams,\n DeanonymizeParams,\n ResetPasswordParams,\n SendVerificationEmailParams,\n Session,\n SignInEmailPasswordParams,\n SignInPasswordlessEmailParams,\n SignInPasswordlessSmsOtpParams,\n SignInPasswordlessSmsParams,\n SignUpEmailPasswordParams\n} from './utils/types'\n\nconst SERVER_ERROR_CODE = 500\nexport class HasuraAuthApi {\n private url: string\n private httpClient: AxiosInstance\n private accessToken: string | undefined\n\n constructor({ url = '' }) {\n this.url = url\n\n this.httpClient = axios.create({ baseURL: this.url })\n\n // convert axios error to custom ApiError\n this.httpClient.interceptors.response.use(\n (response) => response,\n (error: AxiosError<{ message: string }>) =>\n Promise.reject({\n message: error.response?.data?.message ?? error.message ?? JSON.stringify(error),\n status: error.response?.status ?? SERVER_ERROR_CODE\n })\n )\n }\n\n /**\n * Use `signUpWithEmailAndPassword` to sign up a new user using email and password.\n */\n async signUpEmailPassword(params: SignUpEmailPasswordParams): Promise<ApiSignInResponse> {\n try {\n const res = await this.httpClient.post<ApiSignInData>('/signup/email-password', params)\n return { data: res.data, error: null }\n } catch (error) {\n return { data: null, error: error as ApiError }\n }\n }\n\n async signInEmailPassword(params: SignInEmailPasswordParams): Promise<ApiSignInResponse> {\n try {\n const res = await this.httpClient.post<ApiSignInData>('/signin/email-password', params)\n return { data: res.data, error: null }\n } catch (error) {\n return { data: null, error: error as ApiError }\n }\n }\n\n async signInPasswordlessEmail(params: SignInPasswordlessEmailParams): Promise<ApiSignInResponse> {\n try {\n const res = await this.httpClient.post<ApiSignInData>('/signin/passwordless/email', params)\n return { data: res.data, error: null }\n } catch (error) {\n return { data: null, error: error as ApiError }\n }\n }\n\n async signInPasswordlessSms(params: SignInPasswordlessSmsParams): Promise<ApiSignInResponse> {\n try {\n const res = await this.httpClient.post<ApiSignInData>('/signin/passwordless/sms', params)\n return { data: res.data, error: null }\n } catch (error) {\n return { data: null, error: error as ApiError }\n }\n }\n\n async signInPasswordlessSmsOtp(\n params: SignInPasswordlessSmsOtpParams\n ): Promise<ApiSignInResponse> {\n try {\n const res = await this.httpClient.post<ApiSignInData>('/signin/passwordless/sms/otp', params)\n return { data: res.data, error: null }\n } catch (error) {\n return { data: null, error: error as ApiError }\n }\n }\n\n async signOut(params: { refreshToken: string; all?: boolean }): Promise<ApiSignOutResponse> {\n try {\n await this.httpClient.post('/signout', params)\n\n return { error: null }\n } catch (error) {\n return { error: error as ApiError }\n }\n }\n\n async refreshToken(params: { refreshToken: string }): Promise<ApiRefreshTokenResponse> {\n try {\n const res = await this.httpClient.post<Session>('/token', params)\n\n return { error: null, session: res.data }\n } catch (error) {\n return { error: error as ApiError, session: null }\n }\n }\n\n async resetPassword(params: ResetPasswordParams): Promise<ApiResetPasswordResponse> {\n try {\n await this.httpClient.post('/user/password/reset', params)\n\n return { error: null }\n } catch (error) {\n return { error: error as ApiError }\n }\n }\n\n async changePassword(params: ChangePasswordParams): Promise<ApiChangePasswordResponse> {\n try {\n await this.httpClient.post('/user/password', params, {\n headers: {\n ...this.generateAuthHeaders()\n }\n })\n\n return { error: null }\n } catch (error) {\n return { error: error as ApiError }\n }\n }\n\n async sendVerificationEmail(\n params: SendVerificationEmailParams\n ): Promise<ApiSendVerificationEmailResponse> {\n try {\n await this.httpClient.post('/user/email/send-verification-email', params)\n\n return { error: null }\n } catch (error) {\n return { error: error as ApiError }\n }\n }\n\n async changeEmail(params: ChangeEmailParams): Promise<ApiChangeEmailResponse> {\n try {\n await this.httpClient.post('/user/email/change', params, {\n headers: {\n ...this.generateAuthHeaders()\n }\n })\n\n return { error: null }\n } catch (error) {\n return { error: error as ApiError }\n }\n }\n\n async deanonymize(params: DeanonymizeParams): Promise<ApiDeanonymizeResponse> {\n try {\n await this.httpClient.post('/user/deanonymize', params)\n\n return { error: null }\n } catch (error) {\n return { error: error as ApiError }\n }\n }\n\n // deanonymize\n\n async verifyEmail(params: { email: string; ticket: string }): Promise<ApiSignInResponse> {\n try {\n const res = await this.httpClient.post<ApiSignInData>('/user/email/verify', params)\n\n return { data: res.data, error: null }\n } catch (error) {\n return { data: null, error: error as ApiError }\n }\n }\n\n setAccessToken(accessToken: string | undefined) {\n this.accessToken = accessToken\n }\n\n private generateAuthHeaders() {\n if (!this.accessToken) {\n return null\n }\n\n return {\n Authorization: `Bearer ${this.accessToken}`\n }\n }\n}\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable no-magic-numbers */\n/* eslint-disable @typescript-eslint/no-unsafe-argument */\n/* eslint-disable @typescript-eslint/prefer-nullish-coalescing */\n/* eslint-disable @typescript-eslint/no-misused-promises */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable no-case-declarations */\n/* eslint-disable consistent-return */\n/* eslint-disable @typescript-eslint/no-confusing-void-expression */\n/* eslint-disable @typescript-eslint/no-empty-function */\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable @typescript-eslint/no-floating-promises */\n/* eslint-disable new-cap */\n/* eslint-disable @typescript-eslint/no-unused-expressions */\n/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/ban-types */\nimport queryString from 'query-string'\n\nimport { NHOST_REFRESH_TOKEN } from './utils/constants'\nimport { inMemoryLocalStorage, isBrowser } from './utils/helpers'\nimport {\n ApiChangeEmailResponse,\n ApiChangePasswordResponse,\n ApiDeanonymizeResponse,\n ApiError,\n ApiResetPasswordResponse,\n ApiSendVerificationEmailResponse,\n ApiSignInResponse,\n ApiSignOutResponse,\n AuthChangedFunction,\n AuthChangeEvent,\n ChangeEmailParams,\n ChangePasswordParams,\n ClientStorage,\n ClientStorageType,\n DeanonymizeParams,\n OnTokenChangedFunction,\n ResetPasswordParams,\n SendVerificationEmailParams,\n Session,\n SignInParams,\n SignUpParams,\n SignUpResponse\n} from './utils/types'\nimport { HasuraAuthApi } from './hasura-auth-api'\n\nexport class HasuraAuthClient {\n private api: HasuraAuthApi\n\n private onTokenChangedFunctions: Function[]\n private onAuthChangedFunctions: AuthChangedFunction[]\n\n private refreshInterval: any\n private refreshIntervalTime: number | undefined\n\n private clientStorage: ClientStorage\n private clientStorageType: string\n\n private url: string\n private autoRefreshToken: boolean\n\n private session: Session | null\n\n private initAuthLoading: boolean\n private refreshSleepCheckInterval: any\n private refreshIntervalSleepCheckLastSample: number\n private sampleRate: number\n\n constructor({\n url,\n autoRefreshToken = true,\n autoLogin = true,\n refreshIntervalTime,\n clientStorage,\n clientStorageType = 'web'\n }: {\n url: string\n autoRefreshToken?: boolean\n autoLogin?: boolean\n refreshIntervalTime?: number\n clientStorage?: ClientStorage\n clientStorageType?: ClientStorageType\n }) {\n this.refreshIntervalTime = refreshIntervalTime\n\n if (!clientStorage) {\n this.clientStorage = isBrowser() ? localStorage : new inMemoryLocalStorage()\n } else {\n this.clientStorage = clientStorage\n }\n\n this.clientStorageType = clientStorageType\n\n this.onTokenChangedFunctions = []\n this.onAuthChangedFunctions = []\n this.refreshInterval\n\n this.refreshSleepCheckInterval = 0\n this.refreshIntervalSleepCheckLastSample = Date.now()\n this.sampleRate = 2000 // check every 2 seconds\n\n this.url = url\n\n this.autoRefreshToken = autoRefreshToken\n\n this.initAuthLoading = true\n\n this.session = null\n\n this.api = new HasuraAuthApi({ url: this.url })\n\n // get refresh token from query param (from external OAuth provider callback)\n let refreshToken: string | null = null\n let autoLoginFromQueryParameters = false\n\n // try to auto login using hashtag query parameters\n // ex if the user came from a magic link\n if (autoLogin && isBrowser() && window.location) {\n // try {\n const urlParams = queryString.parse(window.location.toString().split('#')[1])\n\n if ('refreshToken' in urlParams) {\n // We must keep this hash becaus it might cause error during double\n // render in dev mode for react\n // https://reactjs.org/docs/strict-mode.html\n // this.clearHashFromUrl();\n refreshToken = urlParams.refreshToken as string\n }\n\n if ('otp' in urlParams && 'email' in urlParams) {\n // We must keep this hash becaus it might cause error during double\n // render in dev mode for react\n // https://reactjs.org/docs/strict-mode.html\n // this.clearHashFromUrl();\n const { otp, email } = urlParams\n // sign in with OTP\n this.signIn({\n otp: otp as string,\n email: email as string\n })\n autoLoginFromQueryParameters = true\n }\n }\n\n // if empty string, then set it to null\n // refreshToken = refreshToken ? refreshToken : null;\n if (!autoLoginFromQueryParameters && autoLogin) {\n this._autoLogin(refreshToken)\n } else if (refreshToken) {\n this._setItem(NHOST_REFRESH_TOKEN, refreshToken)\n }\n }\n\n /**\n * Use `signUp` to sign up users using email an password.\n *\n * If you want to sign up a user using magic link or a social provider, use\n * the `signIn` function instead.\n *\n * @example\n * auth.signIn({email, password}); // email password\n *\n * @docs https://docs.nhost.io/TODO\n */\n async signUp(params: SignUpParams): Promise<SignUpResponse> {\n const { email, password } = params\n\n // email and password\n if (email && password) {\n // sign up with email and password\n const { data, error } = await this.api.signUpEmailPassword(params)\n\n if (error) {\n return { session: null, error }\n }\n\n if (!data) {\n return {\n session: null,\n error: { message: 'An error occurred on sign up.', status: 500 }\n }\n }\n\n const { session } = data\n\n if (session) {\n await this._setSession(session)\n }\n\n return { session, error: null }\n }\n\n return {\n session: null,\n error: { message: 'Incorrect parameters', status: 500 }\n }\n }\n\n /**\n * Use `signIn` to sign in users using email and password, passwordless\n * (email or sms) or an external provider.\n * `signIn` can be used in various ways depending on the parameters.\n *\n * @example\n * signIn({ email, password }); // Sign in with email and password\n * signIn({ provider }); // Sign in with an external provider (ex Google or Facebook)\n * signIn({ email }); // [step 1/2] Passwordless sign in with Email (Magic Link)\n * signIn({ email, otp }); // [step 2/2] Finish passwordless sign in with email (OTP)\n * signIn({ phoneNumber }); // [step 1/2] Passwordless sign in with SMS\n * signIn({ phoneNumber, otp }); // [step 2/2] Finish passwordless sign in with SMS (OTP)\n *\n * @docs https://docs.nhost.io/TODO\n */\n async signIn(params: SignInParams): Promise<{\n session: Session | null\n mfa: {\n ticket: string\n } | null\n error: ApiError | null\n providerUrl?: string\n provider?: string\n }> {\n if ('provider' in params) {\n const { provider, options } = params\n\n let providerUrl = `${this.url}/signin/provider/${provider}`\n\n // add options to URL\n if (options) {\n providerUrl += `?`\n\n if (options.locale) {\n providerUrl += `locale=${encodeURIComponent(options.locale)}&`\n }\n if (options.allowedRoles) {\n providerUrl += `allowedRoles=${encodeURIComponent(options.allowedRoles.join(','))}&`\n }\n if (options.defaultRole) {\n providerUrl += `defaultRole=${encodeURIComponent(options.defaultRole)}&`\n }\n if (options.displayName) {\n providerUrl += `displayName=${encodeURIComponent(options.displayName)}&`\n }\n if (options.redirectTo) {\n providerUrl += `redirectTo=${encodeURIComponent(options.redirectTo)}&`\n }\n if (options.metadata) {\n providerUrl += `metadata=${encodeURIComponent(JSON.stringify(options.metadata))}&`\n }\n\n // remove last '&' in providerUrl\n providerUrl = providerUrl.slice(0, -1)\n }\n\n if (isBrowser()) {\n window.location.href = providerUrl\n }\n return { providerUrl, provider, session: null, mfa: null, error: null }\n }\n\n // email password\n if ('email' in params && 'password' in params) {\n const { data, error } = await this.api.signInEmailPassword(params)\n\n if (error) {\n return { session: null, mfa: null, error }\n }\n\n if (!data) {\n return {\n session: null,\n mfa: null,\n error: { message: 'Incorrect Data', status: 500 }\n }\n }\n\n const { session, mfa } = data\n\n if (session) {\n await this._setSession(session)\n }\n\n return { session, mfa, error: null }\n }\n\n // passwordless Email (magic link)\n if ('email' in params && !('otp' in params)) {\n const { error } = await this.api.signInPasswordlessEmail(params)\n\n if (error) {\n return { session: null, mfa: null, error }\n }\n\n return { session: null, mfa: null, error: null }\n }\n\n // passwordless SMS\n if ('phoneNumber' in params && !('otp' in params)) {\n const { error } = await this.api.signInPasswordlessSms(params)\n\n if (error) {\n return { session: null, mfa: null, error }\n }\n\n return { session: null, mfa: null, error: null }\n }\n\n // sign in using OTP\n if ('otp' in params) {\n const { data, error } = await this.api.signInPasswordlessSmsOtp(params)\n\n if (error) {\n return { session: null, mfa: null, error }\n }\n if (!data) {\n return {\n session: null,\n mfa: null,\n error: { message: 'Incorrect data', status: 500 }\n }\n }\n const { session, mfa } = data\n if (session) {\n await this._setSession(session)\n }\n return { session, mfa, error: null }\n }\n\n return {\n session: null,\n mfa: null,\n error: { message: 'Incorrect parameters', status: 500 }\n }\n }\n\n /**\n * Use `signOut` to sign out a user\n *\n * @example\n * signOut();\n *\n * @docs https://docs.nhost.io/TODO\n */\n async signOut(params?: { all?: boolean }): Promise<ApiSignOutResponse> {\n const refreshToken = await this._getItem(NHOST_REFRESH_TOKEN)\n\n this._clearSession()\n\n const { error } = await this.api.signOut({\n refreshToken,\n all: params?.all\n })\n return { error }\n }\n\n /**\n * Use `verifyEmail` to verify a user's email using a ticket.\n *\n * @example\n * auth.verifyEmail({email, tricket})\n *\n * @docs https://docs.nhost.io/TODO\n */\n async verifyEmail(params: { email: string; ticket: string }): Promise<ApiSignInResponse> {\n return await this.api.verifyEmail(params)\n }\n\n /**\n * Use `resetPassword` to reset a user's password.\n *\n * @example\n * auth.resetPassword({email})\n *\n * @docs https://docs.nhost.io/TODO\n */\n async resetPassword(params: ResetPasswordParams): Promise<ApiResetPasswordResponse> {\n const { error } = await this.api.resetPassword(params)\n\n return { error }\n }\n\n /**\n * Use `changePassword` to change a user's password.\n *\n * @example\n * auth.changePassword({ newPassword })\n *\n * @docs https://docs.nhost.io/TODO\n */\n async changePassword(params: ChangePasswordParams): Promise<ApiChangePasswordResponse> {\n const { error } = await this.api.changePassword(params)\n\n return { error }\n }\n\n /**\n * Use `sendVerificationEmail` to send a verification email\n * to the specified email.\n *\n * @example\n * auth.sendVerificationEmail({email})\n *\n * @docs https://docs.nhost.io/TODO\n */\n async sendVerificationEmail(\n params: SendVerificationEmailParams\n ): Promise<ApiSendVerificationEmailResponse> {\n const { error } = await this.api.sendVerificationEmail(params)\n\n return { error }\n }\n\n /**\n * Use `changeEmail` to change a user's email\n *\n * @example\n * auth.changeEmail({newEmail})\n *\n * @docs https://docs.nhost.io/TODO\n */\n async changeEmail(params: ChangeEmailParams): Promise<ApiChangeEmailResponse> {\n const { error } = await this.api.changeEmail(params)\n\n return { error }\n }\n\n /**\n * Use `deanonymize` to deanonymize a user\n *\n * @example\n * auth.deanonymize({signInMethod: 'email-password', email})\n *\n * @docs https://docs.nhost.io/TODO\n */\n async deanonymize(params: DeanonymizeParams): Promise<ApiDeanonymizeResponse> {\n const { error } = await this.api.deanonymize(params)\n\n return { error }\n }\n\n /**\n * Use `onTokenChanged` to add a custom function that will trigger whenever\n * the access and refresh token is changed.\n *\n * @example\n * auth.onTokenChanged(() => console.log('access token changed'););\n *\n * @docs https://docs.nhost.io/TODO\n */\n onTokenChanged(fn: OnTokenChangedFunction): Function {\n this.onTokenChangedFunctions.push(fn)\n\n // get internal index of this function\n const index = this.onTokenChangedFunctions.length - 1\n\n const unsubscribe = () => {\n try {\n // replace onTokenChanged with empty function\n this.onTokenChangedFunctions[index] = () => {}\n } catch {\n console.warn(\n 'Unable to unsubscribe onTokenChanged function. Maybe the functions is already unsubscribed?'\n )\n }\n }\n\n return unsubscribe\n }\n\n /**\n * Use `onAuthStateChanged` to add a custom function that will trigger\n * whenever the state of the user changed. Ex from signed in to signed out or\n * vice versa.\n *\n * @example\n * auth.onAuthStateChanged((event, session) => {\n * console.log(`auth state changed. State is not ${event} with session: ${session}`)\n * });\n *\n * @docs https://docs.nhost.io/TODO\n */\n onAuthStateChanged(fn: AuthChangedFunction): Function {\n this.onAuthChangedFunctions.push(fn)\n\n // get internal index for this functions\n const index = this.onAuthChangedFunctions.length - 1\n\n const unsubscribe = () => {\n try {\n // replace onAuthStateChanged with empty function\n this.onAuthChangedFunctions[index] = () => {}\n } catch {\n console.warn('Unable to unsubscribe onAuthStateChanged function. Maybe you already did?')\n }\n }\n\n return unsubscribe\n }\n\n /**\n * Use `isAuthenticated` to check if the user is authenticated or not.\n *\n * Note that `isAuthenticated` can return `false` before the auth status has\n * been resolved. Use `getAuthenticationStatus` to get both loading and auth status.\n *\n *\n * @example\n *\n * const = auth.isAuthenticated();\n *\n * if (authenticated) {\n * console.log('User is authenticated');\n * }\n *\n * @docs https://docs.nhost.io/TODO\n */\n isAuthenticated(): boolean {\n return this.session !== null\n }\n\n /**\n * Use `isAuthenticatedAsync` to wait and check if the user is authenticated or not.\n *\n * @example\n *\n * const isAuthenticated = awiat auth.isAuthenticatedAsync();\n *\n * if (isAuthenticated) {\n * console.log('User is authenticated');\n * }\n *\n * @docs https://docs.nhost.io/TODO\n */\n async isAuthenticatedAsync(): Promise<boolean> {\n return new Promise((resolve) => {\n // if init auth loading is already completed, we can return the value of `isAuthenticated`.\n if (!this.initAuthLoading) {\n resolve(this.isAuthenticated())\n }\n // if no, let's subscribe and wait for an auth state change event and\n // resolve the promise when we receive the event\n else {\n const unsubscribe = this.onAuthStateChanged((event, _session) => {\n resolve(event === 'SIGNED_IN')\n unsubscribe()\n })\n }\n })\n }\n\n /**\n * Use `getAuthenticationStatus` to get the authentication status of the user.\n *\n * if `isLoading` is true, the auth request is in transit and the SDK does not\n * yet know if the user will be logged in or not.\n *\n *\n * @example\n *\n * const { isAuthenticated, isLoading } = auth.getAuthenticationStatus();\n *\n * if (isLoading) {\n * console.log('Loading...')\n * }\n *\n * if (isAuthenticated) {\n * console.log('User is authenticated');\n * }\n *\n * @docs https://docs.nhost.io/TODO\n */\n getAuthenticationStatus(): {\n isAuthenticated: boolean\n isLoading: boolean\n } {\n if (this.initAuthLoading) return { isAuthenticated: false, isLoading: true }\n\n return { isAuthenticated: this.session !== null, isLoading: false }\n }\n\n /**\n * @deprecated Use `getAccessToken()` instead.\n */\n\n getJWTToken(): string | undefined {\n return this.getAccessToken()\n }\n\n /**\n *\n * Use `getAccessToken` to get the logged in user's access token.\n *\n * @example\n *\n * const accessToken = auth.getAccessToken();\n *\n * @docs https://docs.nhost.io/TODO\n */\n getAccessToken(): string | undefined {\n if (!this.session) {\n return undefined\n }\n\n return this.session.accessToken\n }\n\n /**\n *\n * Use `refreshSession()` to refresh the current session or refresh the\n * session with an provided `refreshToken`.\n *\n * @example\n *\n * refreshToken();\n * refreshToken(refreshToken);\n *\n * @docs https://docs.nhost.io/TODO\n */\n async refreshSession(refreshToken?: string): Promise<void> {\n const refreshTokenToUse = refreshToken || (await this._getItem(NHOST_REFRESH_TOKEN))\n\n if (!refreshTokenToUse) {\n console.warn('no refresh token found. No way of refreshing session')\n }\n\n return this._refreshTokens(refreshTokenToUse)\n }\n\n /**\n *\n * Use `getSession()` to get the current session.\n *\n * @example\n *\n * const session = getSession();\n *\n * @docs https://docs.nhost.io/TODO\n */\n getSession() {\n return this.session\n }\n\n /**\n *\n * Use `getUser()` to get the current user.\n *\n * @example\n *\n * const user = getUser();\n *\n * @docs https://docs.nhost.io/TODO\n */\n getUser() {\n return this.session ? this.session.user : null\n }\n\n private async _setItem(key: string, value: string): Promise<void> {\n if (typeof value !== 'string') {\n console.error(`value is not of type \"string\"`)\n return\n }\n\n switch (this.clientStorageType) {\n case 'web':\n if (typeof this.clientStorage.setItem !== 'function') {\n console.error(`this.clientStorage.setItem is not a function`)\n break\n }\n this.clientStorage.setItem(key, value)\n break\n case 'custom':\n case 'react-native':\n if (typeof this.clientStorage.setItem !== 'function') {\n console.error(`this.clientStorage.setItem is not a function`)\n break\n }\n await this.clientStorage.setItem(key, value)\n break\n case 'capacitor':\n if (typeof this.clientStorage.set !== 'function') {\n console.error(`this.clientStorage.set is not a function`)\n break\n }\n await this.clientStorage.set({ key, value })\n break\n case 'expo-secure-storage':\n if (typeof this.clientStorage.setItemAsync !== 'function') {\n console.error(`this.clientStorage.setItemAsync is not a function`)\n break\n }\n this.clientStorage.setItemAsync(key, value)\n break\n default:\n break\n }\n }\n\n private async _getItem(key: string): Promise<string> {\n switch (this.clientStorageType) {\n case 'web':\n if (typeof this.clientStorage.getItem !== 'function') {\n console.error(`this.clientStorage.getItem is not a function`)\n break\n }\n return this.clientStorage.getItem(key) as string\n case 'custom':\n case 'react-native':\n if (typeof this.clientStorage.getItem !== 'function') {\n console.error(`this.clientStorage.getItem is not a function`)\n break\n }\n return (await this.clientStorage.getItem(key)) as string\n case 'capacitor':\n if (typeof this.clientStorage.get !== 'function') {\n console.error(`this.clientStorage.get is not a function`)\n break\n }\n const res = await this.clientStorage.get({ key })\n return res.value as string\n case 'expo-secure-storage':\n if (typeof this.clientStorage.getItemAsync !== 'function') {\n console.error(`this.clientStorage.getItemAsync is not a function`)\n break\n }\n return this.clientStorage.getItemAsync(key) as string\n default:\n return ''\n }\n return ''\n }\n\n private async _removeItem(key: string): Promise<void> {\n switch (this.clientStorageType) {\n case 'web':\n if (typeof this.clientStorage.removeItem !== 'function') {\n console.error(`this.clientStorage.removeItem is not a function`)\n break\n }\n return void this.clientStorage.removeItem(key)\n case 'custom':\n case 'react-native':\n if (typeof this.clientStorage.removeItem !== 'function') {\n console.error(`this.clientStorage.removeItem is not a function`)\n break\n }\n return void this.clientStorage.removeItem(key)\n case 'capacitor':\n if (typeof this.clientStorage.remove !== 'function') {\n console.error(`this.clientStorage.remove is not a function`)\n break\n }\n await this.clientStorage.remove({ key })\n break\n case 'expo-secure-storage':\n if (typeof this.clientStorage.deleteItemAsync !== 'function') {\n console.error(`this.clientStorage.deleteItemAsync is not a function`)\n break\n }\n this.clientStorage.deleteItemAsync(key)\n break\n default:\n break\n }\n }\n\n // private _generateHeaders(): Headers | null {\n // if (!this.session) {\n // return {};\n // }\n\n // return {\n // Authorization: `Bearer ${this.session.accessToken}`,\n // };\n // }\n\n private _autoLogin(refreshToken: string | null): void {\n // Not sure about this...\n if (!isBrowser()) {\n return\n }\n\n // maybe better to use setTimout hack in _refreshTokens because of SSR / Next.js\n // if (!refreshToken) {\n // this._clearSession();\n // return;\n // }\n\n this._refreshTokens(refreshToken)\n }\n\n private async _refreshTokens(paramRefreshToken: string | null): Promise<void> {\n const refreshToken = paramRefreshToken || (await this._getItem(NHOST_REFRESH_TOKEN))\n\n if (!refreshToken) {\n // place at end of call-stack to let frontend get `null` first (to match SSR)\n setTimeout(async () => {\n await this._clearSession()\n }, 0)\n return\n }\n\n try {\n // set lock to avoid two refresh token request being sent at the same time with the same token.\n // If so, the last request will fail because the first request used the refresh token\n\n const { session, error } = await this.api.refreshToken({ refreshToken })\n\n if (error && error.status === 401) {\n await this._clearSession()\n return\n }\n\n if (!session) throw new Error('Invalid session data')\n\n await this._setSession(session)\n this.tokenChanged()\n } catch {\n // throw new Error(error);\n }\n }\n\n private tokenChanged(): void {\n for (const tokenChangedFunction of this.onTokenChangedFunctions) {\n tokenChangedFunction(this.session)\n }\n }\n\n private authStateChanged({\n event,\n session\n }: {\n event: AuthChangeEvent\n session: Session | null\n }): void {\n if (event === 'SIGNED_IN' && session) {\n this.api.setAccessToken(session.accessToken)\n } else {\n this.api.setAccessToken(undefined)\n }\n\n for (const authChangedFunction of this.onAuthChangedFunctions) {\n authChangedFunction(event, session)\n }\n }\n\n private async _clearSession(): Promise<void> {\n // get previous state before clearing the session\n const { isLoading, isAuthenticated } = this.getAuthenticationStatus()\n\n // clear current session no mather what the previous auth state was\n this.session = null\n this.initAuthLoading = false\n\n await this._removeItem(NHOST_REFRESH_TOKEN)\n\n // if the user was previously authenticated, clear all intervals and send a\n // state change call to subscribers\n if (isLoading || isAuthenticated) {\n clearInterval(this.refreshInterval)\n clearInterval(this.refreshSleepCheckInterval)\n\n this.authStateChanged({ event: 'SIGNED_OUT', session: null })\n }\n }\n\n private async _setSession(session: Session) {\n const { isAuthenticated } = this.getAuthenticationStatus()\n\n this.session = session\n\n await this._setItem(NHOST_REFRESH_TOKEN, session.refreshToken)\n\n if (this.autoRefreshToken && !isAuthenticated) {\n // start refresh token interval after logging in\n const JWTExpiresIn = session.accessTokenExpiresIn\n\n const refreshIntervalTime = this.refreshIntervalTime\n ? this.refreshIntervalTime\n : Math.max(1, JWTExpiresIn - 1) // 1 min before jwt expires\n\n this.refreshInterval = setInterval(async () => {\n const refreshToken = await this._getItem(NHOST_REFRESH_TOKEN)\n await this._refreshTokens(refreshToken)\n }, refreshIntervalTime * 1000)\n\n // refresh token after computer has been sleeping\n // https://stackoverflow.com/questions/14112708/start-calling-js-function-when-pc-wakeup-from-sleep-mode\n this.refreshIntervalSleepCheckLastSample = Date.now()\n this.refreshSleepCheckInterval = setInterval(async () => {\n if (Date.now() - this.refreshIntervalSleepCheckLastSample >= this.sampleRate * 2) {\n const refreshToken = await this._getItem(NHOST_REFRESH_TOKEN)\n await this._refreshTokens(refreshToken)\n }\n this.refreshIntervalSleepCheckLastSample = Date.now()\n }, this.sampleRate)\n this.authStateChanged({ event: 'SIGNED_IN', session: this.session })\n }\n\n this.initAuthLoading = false\n }\n\n // private clearHashFromUrl() {\n // window.history.replaceState(\n // {},\n // document.title,\n // window.location.href.split('#')[0]\n // );\n // }\n}\n", "export const NHOST_REFRESH_TOKEN = 'nhostRefreshToken'\n", "export const isBrowser = () => typeof window !== 'undefined'\n\nexport class inMemoryLocalStorage {\n private memory: Record<string, string | null>\n\n constructor() {\n this.memory = {}\n }\n\n setItem(key: string, value: string | null): void {\n this.memory[key] = value\n }\n getItem(key: string): string | null {\n return this.memory[key]\n }\n removeItem(key: string): void {\n delete this.memory[key]\n }\n}\n", "/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport axios, { AxiosInstance } from 'axios'\n\nimport {\n ApiDeleteParams,\n ApiDeleteResponse,\n ApiGetPresignedUrlParams,\n ApiGetPresignedUrlResponse,\n ApiUploadParams,\n ApiUploadResponse,\n UploadHeaders\n} from './utils/types'\n\nexport class HasuraStorageApi {\n private url: string\n private httpClient: AxiosInstance\n private accessToken?: string\n private adminSecret?: string\n\n constructor({ url }: { url: string }) {\n this.url = url\n\n this.httpClient = axios.create({\n baseURL: this.url\n })\n }\n\n async upload(params: ApiUploadParams): Promise<ApiUploadResponse> {\n try {\n const res = await this.httpClient.post('/files', params.file, {\n headers: {\n ...this.generateUploadHeaders(params),\n ...this.generateAuthHeaders()\n }\n })\n\n return { fileMetadata: res.data, error: null }\n } catch (error) {\n return { fileMetadata: null, error: error as Error }\n }\n }\n\n async getPresignedUrl(params: ApiGetPresignedUrlParams): Promise<ApiGetPresignedUrlResponse> {\n try {\n const { fileId } = params\n const res = await this.httpClient.get(`/files/${fileId}/presignedurl`, {\n headers: {\n ...this.generateAuthHeaders()\n }\n })\n return { presignedUrl: res.data, error: null }\n } catch (error) {\n return { presignedUrl: null, error: error as Error }\n }\n }\n\n async delete(params: ApiDeleteParams): Promise<ApiDeleteResponse> {\n try {\n const { fileId } = params\n await this.httpClient.delete(`/files/${fileId}`, {\n headers: {\n ...this.generateAuthHeaders()\n }\n })\n return { error: null }\n } catch (error) {\n return { error: error as Error }\n }\n }\n\n /**\n * Set the access token to use for authentication.\n *\n * @param accessToken Access token\n * @returns Hasura Storage API instance\n */\n setAccessToken(accessToken?: string): HasuraStorageApi {\n this.accessToken = accessToken\n\n return this\n }\n\n /**\n * Set the admin secret to use for authentication.\n *\n * @param adminSecret Hasura admin secret\n * @returns Hasura Storage API instance\n */\n setAdminSecret(adminSecret?: string): HasuraStorageApi {\n this.adminSecret = adminSecret\n\n return this\n }\n\n private generateUploadHeaders(params: ApiUploadParams): UploadHeaders {\n const { bucketId, name, id } = params\n const uploadheaders: UploadHeaders = {}\n\n if (bucketId) {\n uploadheaders['x-nhost-bucket-id'] = bucketId\n }\n if (id) {\n uploadheaders['x-nhost-file-id'] = id\n }\n if (name) {\n uploadheaders['x-nhost-file-name'] = name\n }\n\n return uploadheaders\n }\n\n private generateAuthHeaders() {\n if (!this.adminSecret && !this.accessToken) {\n return null\n }\n\n if (this.adminSecret) {\n return {\n 'x-hasura-admin-secret': this.adminSecret\n }\n }\n\n return {\n Authorization: `Bearer ${this.accessToken}`\n }\n }\n}\n", "import {\n StorageDeleteParams,\n StorageDeleteResponse,\n StorageGetPresignedUrlParams,\n StorageGetPresignedUrlResponse,\n StorageGetUrlParams,\n StorageUploadParams,\n StorageUploadResponse\n} from './utils/types'\nimport { HasuraStorageApi } from './hasura-storage-api'\n\nexport class HasuraStorageClient {\n private url: string\n private api: HasuraStorageApi\n\n constructor({ url }: { url: string }) {\n this.url = url\n this.api = new HasuraStorageApi({ url })\n }\n\n /**\n *\n * Use `.upload` to upload a file.\n *\n * @example\n *\n * storage.upload({ file })\n *\n */\n async upload(params: StorageUploadParams): Promise<StorageUploadResponse> {\n const file = new FormData()\n file.append('file', params.file)\n\n const { fileMetadata, error } = await this.api.upload({\n ...params,\n file\n })\n if (error) {\n return { fileMetadata: null, error }\n }\n\n if (!fileMetadata) {\n return { fileMetadata: null, error: new Error('Invalid file returned') }\n }\n\n return { fileMetadata, error: null }\n }\n\n /**\n *\n * @deprecated use `.getPublicUrl` instead\n *\n */\n getUrl(params: StorageGetUrlParams): string {\n return this.getPublicUrl(params)\n }\n\n /**\n *\n * Use `.getPublicUrl` to direct file URL to a file.\n *\n * @example\n *\n * storage.getPublicUrl({ fileId: 'uuid' })\n *\n */\n getPublicUrl(params: StorageGetUrlParams): string {\n const { fileId } = params\n return `${this.url}/files/${fileId}`\n }\n\n /**\n *\n * Use `.getPresignedUrl` to get a presigned URL to a file.\n *\n * @example\n *\n * storage.getPresignedUrl({ fileId: 'uuid' })\n *\n *\n */\n async getPresignedUrl(\n params: StorageGetPresignedUrlParams\n ): Promise<StorageGetPresignedUrlResponse> {\n const { presignedUrl, error } = await this.api.getPresignedUrl(params)\n if (error) {\n return { presignedUrl: null, error }\n }\n\n if (!presignedUrl) {\n return { presignedUrl: null, error: new Error('Invalid file id') }\n }\n\n return { presignedUrl, error: null }\n }\n\n /**\n *\n * Use `.delete` to delete a file.\n *\n * @example\n *\n * storage.delete({ fileId: 'uuid' })\n *\n *\n */\n async delete(params: StorageDeleteParams): Promise<StorageDeleteResponse> {\n const { error } = await this.api.delete(params)\n if (error) {\n return { error }\n }\n\n return { error: null }\n }\n\n /**\n * Set the access token to use for authentication.\n *\n * @param accessToken Access token\n * @returns Hasura Storage Client instance\n */\n setAccessToken(accessToken?: string): HasuraStorageClient {\n this.api.setAccessToken(accessToken)\n\n return this\n }\n\n /**\n * Set the admin secret to use for authentication.\n *\n * @param adminSecret Hasura admin secret\n * @returns Hasura Storage Client instance\n */\n setAdminSecret(adminSecret?: string): HasuraStorageClient {\n this.api.setAdminSecret(adminSecret)\n\n return this\n }\n}\n", "import axios, { AxiosInstance, AxiosRequestConfig } from 'axios'\n\nimport { FunctionCallResponse } from '../types'\nexport interface NhostFunctionsConstructorParams {\n url: string\n}\n\nexport class NhostFunctionsClient {\n private instance: AxiosInstance\n private accessToken: string | null\n\n constructor(params: NhostFunctionsConstructorParams) {\n const { url } = params\n\n this.accessToken = null\n this.instance = axios.create({\n baseURL: url\n })\n }\n\n async call(url: string, data: any, config?: AxiosRequestConfig): Promise<FunctionCallResponse> {\n const headers = {\n ...this.generateAccessTokenHeaders(),\n ...config?.headers\n }\n\n let res\n try {\n res = await this.instance.post(url, data, { ...config, headers })\n } catch (error) {\n if (error instanceof Error) {\n return { res: null, error }\n }\n }\n\n if (!res) {\n return {\n res: null,\n error: new Error('Unable to make post request to funtion')\n }\n }\n\n return { res, error: null }\n }\n\n setAccessToken(accessToken: string | undefined) {\n if (!accessToken) {\n this.accessToken = null\n return\n }\n\n this.accessToken = accessToken\n }\n\n private generateAccessTokenHeaders(): { Authorization: string } | undefined {\n if (!this.accessToken) {\n return\n }\n\n // eslint-disable-next-line consistent-return\n return {\n Authorization: `Bearer ${this.accessToken}`\n }\n }\n}\n", "import axios, { AxiosInstance, AxiosRequestConfig } from 'axios'\n\nimport { GraphqlRequestResponse, GraphqlResponse } from '../types'\n\nexport interface NhostGraphqlConstructorParams {\n url: string\n}\n\nexport class NhostGraphqlClient {\n private url: string\n private instance: AxiosInstance\n private accessToken: string | null\n\n constructor(params: NhostGraphqlConstructorParams) {\n const { url } = params\n\n this.url = url\n this.accessToken = null\n this.instance = axios.create({\n baseURL: url\n })\n }\n\n async request(\n document: string,\n variables?: any,\n config?: AxiosRequestConfig\n ): Promise<GraphqlRequestResponse> {\n // add auth headers if any\n const headers = {\n ...config?.headers,\n ...this.generateAccessTokenHeaders()\n }\n\n const operationName = ''\n\n let responseData\n try {\n const res = await this.instance.post(\n '',\n {\n operationName: operationName || undefined,\n query: document,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n variables\n },\n { ...config, headers }\n )\n\n responseData = res.data\n } catch (error) {\n if (error instanceof Error) {\n return { data: null, error }\n }\n console.error(error)\n return {\n data: null,\n error: new Error('Unable to get do GraphQL request')\n }\n }\n\n if (typeof responseData !== 'object' || Array.isArray(responseData) || responseData === null) {\n return {\n data: null,\n error: new Error('incorrect response data from GraphQL server')\n }\n }\n\n responseData = responseData as GraphqlResponse\n\n if (responseData.errors) {\n return {\n data: null,\n error: responseData.errors\n }\n }\n\n return { data: responseData.data, error: null }\n }\n\n getUrl(): string {\n return this.url\n }\n\n setAccessToken(accessToken: string | undefined) {\n if (!accessToken) {\n this.accessToken = null\n return\n }\n\n this.accessToken = accessToken\n }\n\n private generateAccessTokenHeaders() {\n if (!this.accessToken) {\n return\n }\n\n // eslint-disable-next-line consistent-return\n return {\n Authorization: `Bearer ${this.accessToken}`\n }\n }\n}\n", "import { ClientStorage, ClientStorageType, HasuraAuthClient } from '@nhost/hasura-auth-js'\nimport { HasuraStorageClient } from '@nhost/hasura-storage-js'\n\nimport { NhostFunctionsClient } from '../clients/functions'\nimport { NhostGraphqlClient } from '../clients/graphql'\n\nexport interface NhostClientConstructorParams {\n backendUrl: string\n refreshIntervalTime?: number\n clientStorage?: ClientStorage\n clientStorageType?: ClientStorageType\n autoRefreshToken?: boolean\n autoLogin?: boolean\n}\n\nexport class NhostClient {\n auth: HasuraAuthClient\n storage: HasuraStorageClient\n functions: NhostFunctionsClient\n graphql: NhostGraphqlClient\n\n /**\n * Nhost Client\n *\n * @example\n * const nhost = new NhostClient({ url });\n *\n * @docs https://docs.nhost.io/TODO\n */\n constructor(params: NhostClientConstructorParams) {\n if (!params.backendUrl) throw new Error('Please specify a `backendUrl`. Docs: [todo]!')\n\n const {\n backendUrl,\n refreshIntervalTime,\n clientStorage,\n clientStorageType,\n autoRefreshToken,\n autoLogin\n } = params\n\n this.auth = new HasuraAuthClient({\n url: `${backendUrl}/v1/auth`,\n refreshIntervalTime,\n clientStorage,\n clientStorageType,\n autoRefreshToken,\n autoLogin\n })\n\n this.storage = new HasuraStorageClient({\n url: `${backendUrl}/v1/storage`\n })\n\n this.functions = new NhostFunctionsClient({\n url: `${backendUrl}/v1/functions`\n })\n\n this.graphql = new NhostGraphqlClient({\n url: `${backendUrl}/v1/graphql`\n })\n\n // set current token if token is already accessable\n this.storage.setAccessToken(this.auth.getAccessToken())\n this.functions.setAccessToken(this.auth.getAccessToken())\n this.graphql.setAccessToken(this.auth.getAccessToken())\n\n // update access token for clients\n this.auth.onAuthStateChanged((_event, session) => {\n this.storage.setAccessToken(session?.accessToken)\n this.functions.setAccessToken(session?.accessToken)\n this.graphql.setAccessToken(session?.accessToken)\n })\n\n // update access token for clients\n this.auth.onTokenChanged((session) => {\n this.storage.setAccessToken(session?.accessToken)\n this.functions.setAccessToken(session?.accessToken)\n this.graphql.setAccessToken(session?.accessToken)\n })\n }\n}\n", "import { NhostClient, NhostClientConstructorParams } from './core'\n\nconst createClient = (config: NhostClientConstructorParams) => new NhostClient(config)\n\nexport * from './core'\nexport { createClient }\n"],
5
- "mappings": "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",
3
+ "sources": ["../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/helpers/bind.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/utils.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/helpers/buildURL.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/core/InterceptorManager.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/helpers/normalizeHeaderName.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/core/enhanceError.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/core/createError.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/core/settle.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/helpers/cookies.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/helpers/isAbsoluteURL.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/helpers/combineURLs.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/core/buildFullPath.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/helpers/parseHeaders.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/helpers/isURLSameOrigin.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/cancel/Cancel.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/adapters/xhr.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/defaults.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/core/transformData.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/cancel/isCancel.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/core/dispatchRequest.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/core/mergeConfig.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/env/data.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/helpers/validator.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/core/Axios.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/cancel/CancelToken.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/helpers/spread.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/helpers/isAxiosError.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/lib/axios.js", "../../../node_modules/.pnpm/axios@0.25.0/node_modules/axios/index.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/helpers/bind.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/utils.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/helpers/buildURL.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/core/InterceptorManager.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/helpers/normalizeHeaderName.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/core/enhanceError.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/core/createError.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/core/settle.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/helpers/cookies.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/helpers/isAbsoluteURL.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/helpers/combineURLs.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/core/buildFullPath.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/helpers/parseHeaders.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/helpers/isURLSameOrigin.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/adapters/xhr.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/defaults.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/core/transformData.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/cancel/isCancel.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/core/dispatchRequest.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/core/mergeConfig.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/helpers/validator.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/core/Axios.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/cancel/Cancel.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/cancel/CancelToken.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/helpers/spread.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/helpers/isAxiosError.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/lib/axios.js", "../../../node_modules/.pnpm/axios@0.21.4/node_modules/axios/index.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/helpers/bind.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/utils.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/helpers/buildURL.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/core/InterceptorManager.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/helpers/normalizeHeaderName.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/core/enhanceError.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/core/createError.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/core/settle.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/helpers/cookies.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/helpers/isAbsoluteURL.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/helpers/combineURLs.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/core/buildFullPath.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/helpers/parseHeaders.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/helpers/isURLSameOrigin.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/cancel/Cancel.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/adapters/xhr.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/defaults.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/core/transformData.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/cancel/isCancel.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/core/dispatchRequest.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/core/mergeConfig.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/env/data.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/helpers/validator.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/core/Axios.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/cancel/CancelToken.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/helpers/spread.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/helpers/isAxiosError.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/lib/axios.js", "../../../node_modules/.pnpm/axios@0.23.0/node_modules/axios/index.js", "../../../node_modules/.pnpm/xstate@4.30.6/node_modules/xstate/es/_virtual/_tslib.js", "../../../node_modules/.pnpm/xstate@4.30.6/node_modules/xstate/es/types.js", "../../../node_modules/.pnpm/xstate@4.30.6/node_modules/xstate/es/actionTypes.js", "../../../node_modules/.pnpm/xstate@4.30.6/node_modules/xstate/es/constants.js", "../../../node_modules/.pnpm/xstate@4.30.6/node_modules/xstate/es/environment.js", "../../../node_modules/.pnpm/xstate@4.30.6/node_modules/xstate/es/utils.js", "../../../node_modules/.pnpm/xstate@4.30.6/node_modules/xstate/es/actions.js", "../../../node_modules/.pnpm/xstate@4.30.6/node_modules/xstate/es/serviceScope.js", "../../../node_modules/.pnpm/xstate@4.30.6/node_modules/xstate/es/Actor.js", "../../../node_modules/.pnpm/xstate@4.30.6/node_modules/xstate/es/stateUtils.js", "../../../node_modules/.pnpm/xstate@4.30.6/node_modules/xstate/es/State.js", "../../../node_modules/.pnpm/xstate@4.30.6/node_modules/xstate/es/scheduler.js", "../../../node_modules/.pnpm/xstate@4.30.6/node_modules/xstate/es/registry.js", "../../../node_modules/.pnpm/xstate@4.30.6/node_modules/xstate/es/devTools.js", "../../../node_modules/.pnpm/xstate@4.30.6/node_modules/xstate/es/behaviors.js", "../../../node_modules/.pnpm/xstate@4.30.6/node_modules/xstate/es/interpreter.js", "../../../node_modules/.pnpm/xstate@4.30.6/node_modules/xstate/es/invokeUtils.js", "../../../node_modules/.pnpm/xstate@4.30.6/node_modules/xstate/es/StateNode.js", "../../../node_modules/.pnpm/xstate@4.30.6/node_modules/xstate/es/Machine.js", "../../../node_modules/.pnpm/xstate@4.30.6/node_modules/xstate/es/index.js", "../../../node_modules/.pnpm/broadcast-channel@4.10.0/node_modules/broadcast-channel/dist/esbrowser/util.js", "../../../node_modules/.pnpm/broadcast-channel@4.10.0/node_modules/broadcast-channel/dist/esbrowser/methods/native.js", "../../../node_modules/.pnpm/oblivious-set@1.0.0/node_modules/oblivious-set/src/index.ts", "../../../node_modules/.pnpm/broadcast-channel@4.10.0/node_modules/broadcast-channel/dist/esbrowser/options.js", "../../../node_modules/.pnpm/broadcast-channel@4.10.0/node_modules/broadcast-channel/dist/esbrowser/methods/indexed-db.js", "../../../node_modules/.pnpm/broadcast-channel@4.10.0/node_modules/broadcast-channel/dist/esbrowser/methods/localstorage.js", "../../../node_modules/.pnpm/broadcast-channel@4.10.0/node_modules/broadcast-channel/dist/esbrowser/methods/simulate.js", "../../../node_modules/.pnpm/broadcast-channel@4.10.0/node_modules/broadcast-channel/dist/esbrowser/method-chooser.js", "../../../node_modules/.pnpm/broadcast-channel@4.10.0/node_modules/broadcast-channel/dist/esbrowser/broadcast-channel.js", "../../core/src/constants.ts", "../../core/src/errors.ts", "../../core/src/hasura-auth.ts", "../../core/src/utils.ts", "../../core/src/validators.ts", "../../core/src/machines/context.ts", "../../core/src/machines/change-email.ts", "../../core/src/machines/change-password.ts", "../../core/src/machines/reset-password.ts", "../../core/src/machines/send-verification-email.ts", "../../core/src/machines/index.ts", "../../../node_modules/.pnpm/js-cookie@3.0.1/node_modules/js-cookie/dist/js.cookie.mjs", "../../core/src/storage.ts", "../../core/src/client.ts", "../../hasura-auth-js/src/utils/helpers.ts", "../../hasura-auth-js/src/hasura-auth-client.ts", "../../hasura-storage-js/src/hasura-storage-api.ts", "../../hasura-storage-js/src/hasura-storage-client.ts", "../src/clients/functions.ts", "../src/clients/graphql.ts", "../src/core/nhost-client.ts", "../src/index.ts"],
4
+ "sourcesContent": ["'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n", "'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return Array.isArray(val);\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return toString.call(val) === '[object FormData]';\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return toString.call(val) === '[object URLSearchParams]';\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n", "'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n", "'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n };\n return error;\n};\n", "'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n", "'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n", "'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};\n", "'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n", "'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n", "'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n", "'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || defaults.transitional;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new Cancel('canceled') : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n", "'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n", "'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n", "'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n", "'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new Cancel('canceled');\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n", "'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n", "module.exports = {\n \"version\": \"0.25.0\"\n};", "'use strict';\n\nvar VERSION = require('../env/data').version;\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')));\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n", "'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n if (!config.url) {\n throw new Error('Provided config url is not valid');\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n if (!config.url) {\n throw new Error('Provided config url is not valid');\n }\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n", "'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n", "'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n", "'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n", "module.exports = require('./lib/axios');", "'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n", "'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n", "'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n", "'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n", "'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n", "'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n", "'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n", "'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n", "'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n", "'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n", "'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n", "'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n", "'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n", "'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n", "'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n", "'use strict';\n\nvar pkg = require('./../../package.json');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\nvar currentVerArr = pkg.version.split('.');\n\n/**\n * Compare package versions\n * @param {string} version\n * @param {string?} thanVersion\n * @returns {boolean}\n */\nfunction isOlderVersion(version, thanVersion) {\n var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;\n var destVer = version.split('.');\n for (var i = 0; i < 3; i++) {\n if (pkgVersionArr[i] > destVer[i]) {\n return true;\n } else if (pkgVersionArr[i] < destVer[i]) {\n return false;\n }\n }\n return false;\n}\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator\n * @param {string?} version\n * @param {string} message\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n var isDeprecated = version && isOlderVersion(version);\n\n function formatMessage(opt, desc) {\n return '[Axios v' + pkg.version + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed in ' + version));\n }\n\n if (isDeprecated && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n isOlderVersion: isOlderVersion,\n assertOptions: assertOptions,\n validators: validators\n};\n", "'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n", "'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n", "'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n", "'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n", "'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n", "'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n", "module.exports = require('./lib/axios');", "'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n", "'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n", "'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n", "'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n };\n return error;\n};\n", "'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n", "'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n", "'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n", "'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n", "'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n", "'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n", "'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || defaults.transitional;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new Cancel('canceled') : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n", "'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n", "'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n", "'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n", "'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new Cancel('canceled');\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n", "'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n", "module.exports = {\n \"version\": \"0.23.0\"\n};", "'use strict';\n\nvar VERSION = require('../env/data').version;\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')));\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n", "'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n", "'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n", "'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n", "'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n", "'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n", "module.exports = require('./lib/axios');", "/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\n\nexport { __assign, __read, __rest, __spreadArray, __values };\n", "var ActionTypes;\n\n(function (ActionTypes) {\n ActionTypes[\"Start\"] = \"xstate.start\";\n ActionTypes[\"Stop\"] = \"xstate.stop\";\n ActionTypes[\"Raise\"] = \"xstate.raise\";\n ActionTypes[\"Send\"] = \"xstate.send\";\n ActionTypes[\"Cancel\"] = \"xstate.cancel\";\n ActionTypes[\"NullEvent\"] = \"\";\n ActionTypes[\"Assign\"] = \"xstate.assign\";\n ActionTypes[\"After\"] = \"xstate.after\";\n ActionTypes[\"DoneState\"] = \"done.state\";\n ActionTypes[\"DoneInvoke\"] = \"done.invoke\";\n ActionTypes[\"Log\"] = \"xstate.log\";\n ActionTypes[\"Init\"] = \"xstate.init\";\n ActionTypes[\"Invoke\"] = \"xstate.invoke\";\n ActionTypes[\"ErrorExecution\"] = \"error.execution\";\n ActionTypes[\"ErrorCommunication\"] = \"error.communication\";\n ActionTypes[\"ErrorPlatform\"] = \"error.platform\";\n ActionTypes[\"ErrorCustom\"] = \"xstate.error\";\n ActionTypes[\"Update\"] = \"xstate.update\";\n ActionTypes[\"Pure\"] = \"xstate.pure\";\n ActionTypes[\"Choose\"] = \"xstate.choose\";\n})(ActionTypes || (ActionTypes = {}));\n\nvar SpecialTargets;\n\n(function (SpecialTargets) {\n SpecialTargets[\"Parent\"] = \"#_parent\";\n SpecialTargets[\"Internal\"] = \"#_internal\";\n})(SpecialTargets || (SpecialTargets = {}));\n\nexport { ActionTypes, SpecialTargets };\n", "import { ActionTypes } from './types.js';\n\nvar start = ActionTypes.Start;\nvar stop = ActionTypes.Stop;\nvar raise = ActionTypes.Raise;\nvar send = ActionTypes.Send;\nvar cancel = ActionTypes.Cancel;\nvar nullEvent = ActionTypes.NullEvent;\nvar assign = ActionTypes.Assign;\nvar after = ActionTypes.After;\nvar doneState = ActionTypes.DoneState;\nvar log = ActionTypes.Log;\nvar init = ActionTypes.Init;\nvar invoke = ActionTypes.Invoke;\nvar errorExecution = ActionTypes.ErrorExecution;\nvar errorPlatform = ActionTypes.ErrorPlatform;\nvar error = ActionTypes.ErrorCustom;\nvar update = ActionTypes.Update;\nvar choose = ActionTypes.Choose;\nvar pure = ActionTypes.Pure;\n\nexport { after, assign, cancel, choose, doneState, error, errorExecution, errorPlatform, init, invoke, log, nullEvent, pure, raise, send, start, stop, update };\n", "var STATE_DELIMITER = '.';\nvar EMPTY_ACTIVITY_MAP = {};\nvar DEFAULT_GUARD_TYPE = 'xstate.guard';\nvar TARGETLESS_KEY = '';\n\nexport { DEFAULT_GUARD_TYPE, EMPTY_ACTIVITY_MAP, STATE_DELIMITER, TARGETLESS_KEY };\n", "var IS_PRODUCTION = process.env.NODE_ENV === 'production';\n\nexport { IS_PRODUCTION };\n", "import { __values, __spreadArray, __read, __assign } from './_virtual/_tslib.js';\nimport { DEFAULT_GUARD_TYPE, TARGETLESS_KEY, STATE_DELIMITER } from './constants.js';\nimport { IS_PRODUCTION } from './environment.js';\n\nvar _a;\nfunction keys(value) {\n return Object.keys(value);\n}\nfunction matchesState(parentStateId, childStateId, delimiter) {\n if (delimiter === void 0) {\n delimiter = STATE_DELIMITER;\n }\n\n var parentStateValue = toStateValue(parentStateId, delimiter);\n var childStateValue = toStateValue(childStateId, delimiter);\n\n if (isString(childStateValue)) {\n if (isString(parentStateValue)) {\n return childStateValue === parentStateValue;\n } // Parent more specific than child\n\n\n return false;\n }\n\n if (isString(parentStateValue)) {\n return parentStateValue in childStateValue;\n }\n\n return Object.keys(parentStateValue).every(function (key) {\n if (!(key in childStateValue)) {\n return false;\n }\n\n return matchesState(parentStateValue[key], childStateValue[key]);\n });\n}\nfunction getEventType(event) {\n try {\n return isString(event) || typeof event === 'number' ? \"\".concat(event) : event.type;\n } catch (e) {\n throw new Error('Events must be strings or objects with a string event.type property.');\n }\n}\nfunction getActionType(action) {\n try {\n return isString(action) || typeof action === 'number' ? \"\".concat(action) : isFunction(action) ? action.name : action.type;\n } catch (e) {\n throw new Error('Actions must be strings or objects with a string action.type property.');\n }\n}\nfunction toStatePath(stateId, delimiter) {\n try {\n if (isArray(stateId)) {\n return stateId;\n }\n\n return stateId.toString().split(delimiter);\n } catch (e) {\n throw new Error(\"'\".concat(stateId, \"' is not a valid state path.\"));\n }\n}\nfunction isStateLike(state) {\n return typeof state === 'object' && 'value' in state && 'context' in state && 'event' in state && '_event' in state;\n}\nfunction toStateValue(stateValue, delimiter) {\n if (isStateLike(stateValue)) {\n return stateValue.value;\n }\n\n if (isArray(stateValue)) {\n return pathToStateValue(stateValue);\n }\n\n if (typeof stateValue !== 'string') {\n return stateValue;\n }\n\n var statePath = toStatePath(stateValue, delimiter);\n return pathToStateValue(statePath);\n}\nfunction pathToStateValue(statePath) {\n if (statePath.length === 1) {\n return statePath[0];\n }\n\n var value = {};\n var marker = value;\n\n for (var i = 0; i < statePath.length - 1; i++) {\n if (i === statePath.length - 2) {\n marker[statePath[i]] = statePath[i + 1];\n } else {\n marker[statePath[i]] = {};\n marker = marker[statePath[i]];\n }\n }\n\n return value;\n}\nfunction mapValues(collection, iteratee) {\n var result = {};\n var collectionKeys = Object.keys(collection);\n\n for (var i = 0; i < collectionKeys.length; i++) {\n var key = collectionKeys[i];\n result[key] = iteratee(collection[key], key, collection, i);\n }\n\n return result;\n}\nfunction mapFilterValues(collection, iteratee, predicate) {\n var e_1, _a;\n\n var result = {};\n\n try {\n for (var _b = __values(Object.keys(collection)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var key = _c.value;\n var item = collection[key];\n\n if (!predicate(item)) {\n continue;\n }\n\n result[key] = iteratee(item, key, collection);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n\n return result;\n}\n/**\r\n * Retrieves a value at the given path.\r\n * @param props The deep path to the prop of the desired value\r\n */\n\nvar path = function (props) {\n return function (object) {\n var e_2, _a;\n\n var result = object;\n\n try {\n for (var props_1 = __values(props), props_1_1 = props_1.next(); !props_1_1.done; props_1_1 = props_1.next()) {\n var prop = props_1_1.value;\n result = result[prop];\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (props_1_1 && !props_1_1.done && (_a = props_1.return)) _a.call(props_1);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n\n return result;\n };\n};\n/**\r\n * Retrieves a value at the given path via the nested accessor prop.\r\n * @param props The deep path to the prop of the desired value\r\n */\n\nfunction nestedPath(props, accessorProp) {\n return function (object) {\n var e_3, _a;\n\n var result = object;\n\n try {\n for (var props_2 = __values(props), props_2_1 = props_2.next(); !props_2_1.done; props_2_1 = props_2.next()) {\n var prop = props_2_1.value;\n result = result[accessorProp][prop];\n }\n } catch (e_3_1) {\n e_3 = {\n error: e_3_1\n };\n } finally {\n try {\n if (props_2_1 && !props_2_1.done && (_a = props_2.return)) _a.call(props_2);\n } finally {\n if (e_3) throw e_3.error;\n }\n }\n\n return result;\n };\n}\nfunction toStatePaths(stateValue) {\n if (!stateValue) {\n return [[]];\n }\n\n if (isString(stateValue)) {\n return [[stateValue]];\n }\n\n var result = flatten(Object.keys(stateValue).map(function (key) {\n var subStateValue = stateValue[key];\n\n if (typeof subStateValue !== 'string' && (!subStateValue || !Object.keys(subStateValue).length)) {\n return [[key]];\n }\n\n return toStatePaths(stateValue[key]).map(function (subPath) {\n return [key].concat(subPath);\n });\n }));\n return result;\n}\nfunction pathsToStateValue(paths) {\n var e_4, _a;\n\n var result = {};\n\n if (paths && paths.length === 1 && paths[0].length === 1) {\n return paths[0][0];\n }\n\n try {\n for (var paths_1 = __values(paths), paths_1_1 = paths_1.next(); !paths_1_1.done; paths_1_1 = paths_1.next()) {\n var currentPath = paths_1_1.value;\n var marker = result; // tslint:disable-next-line:prefer-for-of\n\n for (var i = 0; i < currentPath.length; i++) {\n var subPath = currentPath[i];\n\n if (i === currentPath.length - 2) {\n marker[subPath] = currentPath[i + 1];\n break;\n }\n\n marker[subPath] = marker[subPath] || {};\n marker = marker[subPath];\n }\n }\n } catch (e_4_1) {\n e_4 = {\n error: e_4_1\n };\n } finally {\n try {\n if (paths_1_1 && !paths_1_1.done && (_a = paths_1.return)) _a.call(paths_1);\n } finally {\n if (e_4) throw e_4.error;\n }\n }\n\n return result;\n}\nfunction flatten(array) {\n var _a;\n\n return (_a = []).concat.apply(_a, __spreadArray([], __read(array), false));\n}\nfunction toArrayStrict(value) {\n if (isArray(value)) {\n return value;\n }\n\n return [value];\n}\nfunction toArray(value) {\n if (value === undefined) {\n return [];\n }\n\n return toArrayStrict(value);\n}\nfunction mapContext(mapper, context, _event) {\n var e_5, _a;\n\n if (isFunction(mapper)) {\n return mapper(context, _event.data);\n }\n\n var result = {};\n\n try {\n for (var _b = __values(Object.keys(mapper)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var key = _c.value;\n var subMapper = mapper[key];\n\n if (isFunction(subMapper)) {\n result[key] = subMapper(context, _event.data);\n } else {\n result[key] = subMapper;\n }\n }\n } catch (e_5_1) {\n e_5 = {\n error: e_5_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_5) throw e_5.error;\n }\n }\n\n return result;\n}\nfunction isBuiltInEvent(eventType) {\n return /^(done|error)\\./.test(eventType);\n}\nfunction isPromiseLike(value) {\n if (value instanceof Promise) {\n return true;\n } // Check if shape matches the Promise/A+ specification for a \"thenable\".\n\n\n if (value !== null && (isFunction(value) || typeof value === 'object') && isFunction(value.then)) {\n return true;\n }\n\n return false;\n}\nfunction isBehavior(value) {\n return value !== null && typeof value === 'object' && 'transition' in value && typeof value.transition === 'function';\n}\nfunction partition(items, predicate) {\n var e_6, _a;\n\n var _b = __read([[], []], 2),\n truthy = _b[0],\n falsy = _b[1];\n\n try {\n for (var items_1 = __values(items), items_1_1 = items_1.next(); !items_1_1.done; items_1_1 = items_1.next()) {\n var item = items_1_1.value;\n\n if (predicate(item)) {\n truthy.push(item);\n } else {\n falsy.push(item);\n }\n }\n } catch (e_6_1) {\n e_6 = {\n error: e_6_1\n };\n } finally {\n try {\n if (items_1_1 && !items_1_1.done && (_a = items_1.return)) _a.call(items_1);\n } finally {\n if (e_6) throw e_6.error;\n }\n }\n\n return [truthy, falsy];\n}\nfunction updateHistoryStates(hist, stateValue) {\n return mapValues(hist.states, function (subHist, key) {\n if (!subHist) {\n return undefined;\n }\n\n var subStateValue = (isString(stateValue) ? undefined : stateValue[key]) || (subHist ? subHist.current : undefined);\n\n if (!subStateValue) {\n return undefined;\n }\n\n return {\n current: subStateValue,\n states: updateHistoryStates(subHist, subStateValue)\n };\n });\n}\nfunction updateHistoryValue(hist, stateValue) {\n return {\n current: stateValue,\n states: updateHistoryStates(hist, stateValue)\n };\n}\nfunction updateContext(context, _event, assignActions, state) {\n if (!IS_PRODUCTION) {\n warn(!!context, 'Attempting to update undefined context');\n }\n\n var updatedContext = context ? assignActions.reduce(function (acc, assignAction) {\n var e_7, _a;\n\n var assignment = assignAction.assignment;\n var meta = {\n state: state,\n action: assignAction,\n _event: _event\n };\n var partialUpdate = {};\n\n if (isFunction(assignment)) {\n partialUpdate = assignment(acc, _event.data, meta);\n } else {\n try {\n for (var _b = __values(Object.keys(assignment)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var key = _c.value;\n var propAssignment = assignment[key];\n partialUpdate[key] = isFunction(propAssignment) ? propAssignment(acc, _event.data, meta) : propAssignment;\n }\n } catch (e_7_1) {\n e_7 = {\n error: e_7_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_7) throw e_7.error;\n }\n }\n }\n\n return Object.assign({}, acc, partialUpdate);\n }, context) : context;\n return updatedContext;\n} // tslint:disable-next-line:no-empty\n\nvar warn = function () {};\n\nif (!IS_PRODUCTION) {\n warn = function (condition, message) {\n var error = condition instanceof Error ? condition : undefined;\n\n if (!error && condition) {\n return;\n }\n\n if (console !== undefined) {\n var args = [\"Warning: \".concat(message)];\n\n if (error) {\n args.push(error);\n } // tslint:disable-next-line:no-console\n\n\n console.warn.apply(console, args);\n }\n };\n}\nfunction isArray(value) {\n return Array.isArray(value);\n} // tslint:disable-next-line:ban-types\n\nfunction isFunction(value) {\n return typeof value === 'function';\n}\nfunction isString(value) {\n return typeof value === 'string';\n}\nfunction toGuard(condition, guardMap) {\n if (!condition) {\n return undefined;\n }\n\n if (isString(condition)) {\n return {\n type: DEFAULT_GUARD_TYPE,\n name: condition,\n predicate: guardMap ? guardMap[condition] : undefined\n };\n }\n\n if (isFunction(condition)) {\n return {\n type: DEFAULT_GUARD_TYPE,\n name: condition.name,\n predicate: condition\n };\n }\n\n return condition;\n}\nfunction isObservable(value) {\n try {\n return 'subscribe' in value && isFunction(value.subscribe);\n } catch (e) {\n return false;\n }\n}\nvar symbolObservable = /*#__PURE__*/function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n}(); // TODO: to be removed in v5, left it out just to minimize the scope of the change and maintain compatibility with older versions of integration paackages\n\nvar interopSymbols = (_a = {}, _a[symbolObservable] = function () {\n return this;\n}, _a[Symbol.observable] = function () {\n return this;\n}, _a);\nfunction isMachine(value) {\n return !!value && '__xstatenode' in value;\n}\nfunction isActor(value) {\n return !!value && typeof value.send === 'function';\n}\nvar uniqueId = /*#__PURE__*/function () {\n var currentId = 0;\n return function () {\n currentId++;\n return currentId.toString(16);\n };\n}();\nfunction toEventObject(event, payload // id?: TEvent['type']\n) {\n if (isString(event) || typeof event === 'number') {\n return __assign({\n type: event\n }, payload);\n }\n\n return event;\n}\nfunction toSCXMLEvent(event, scxmlEvent) {\n if (!isString(event) && '$$type' in event && event.$$type === 'scxml') {\n return event;\n }\n\n var eventObject = toEventObject(event);\n return __assign({\n name: eventObject.type,\n data: eventObject,\n $$type: 'scxml',\n type: 'external'\n }, scxmlEvent);\n}\nfunction toTransitionConfigArray(event, configLike) {\n var transitions = toArrayStrict(configLike).map(function (transitionLike) {\n if (typeof transitionLike === 'undefined' || typeof transitionLike === 'string' || isMachine(transitionLike)) {\n return {\n target: transitionLike,\n event: event\n };\n }\n\n return __assign(__assign({}, transitionLike), {\n event: event\n });\n });\n return transitions;\n}\nfunction normalizeTarget(target) {\n if (target === undefined || target === TARGETLESS_KEY) {\n return undefined;\n }\n\n return toArray(target);\n}\nfunction reportUnhandledExceptionOnInvocation(originalError, currentError, id) {\n if (!IS_PRODUCTION) {\n var originalStackTrace = originalError.stack ? \" Stacktrace was '\".concat(originalError.stack, \"'\") : '';\n\n if (originalError === currentError) {\n // tslint:disable-next-line:no-console\n console.error(\"Missing onError handler for invocation '\".concat(id, \"', error was '\").concat(originalError, \"'.\").concat(originalStackTrace));\n } else {\n var stackTrace = currentError.stack ? \" Stacktrace was '\".concat(currentError.stack, \"'\") : ''; // tslint:disable-next-line:no-console\n\n console.error(\"Missing onError handler and/or unhandled exception/promise rejection for invocation '\".concat(id, \"'. \") + \"Original error: '\".concat(originalError, \"'. \").concat(originalStackTrace, \" Current error is '\").concat(currentError, \"'.\").concat(stackTrace));\n }\n }\n}\nfunction evaluateGuard(machine, guard, context, _event, state) {\n var guards = machine.options.guards;\n var guardMeta = {\n state: state,\n cond: guard,\n _event: _event\n }; // TODO: do not hardcode!\n\n if (guard.type === DEFAULT_GUARD_TYPE) {\n return ((guards === null || guards === void 0 ? void 0 : guards[guard.name]) || guard.predicate)(context, _event.data, guardMeta);\n }\n\n var condFn = guards === null || guards === void 0 ? void 0 : guards[guard.type];\n\n if (!condFn) {\n throw new Error(\"Guard '\".concat(guard.type, \"' is not implemented on machine '\").concat(machine.id, \"'.\"));\n }\n\n return condFn(context, _event.data, guardMeta);\n}\nfunction toInvokeSource(src) {\n if (typeof src === 'string') {\n return {\n type: src\n };\n }\n\n return src;\n}\nfunction toObserver(nextHandler, errorHandler, completionHandler) {\n if (typeof nextHandler === 'object') {\n return nextHandler;\n }\n\n var noop = function () {\n return void 0;\n };\n\n return {\n next: nextHandler,\n error: errorHandler || noop,\n complete: completionHandler || noop\n };\n}\nfunction createInvokeId(stateNodeId, index) {\n return \"\".concat(stateNodeId, \":invocation[\").concat(index, \"]\");\n}\n\nexport { createInvokeId, evaluateGuard, flatten, getActionType, getEventType, interopSymbols, isActor, isArray, isBehavior, isBuiltInEvent, isFunction, isMachine, isObservable, isPromiseLike, isStateLike, isString, keys, mapContext, mapFilterValues, mapValues, matchesState, nestedPath, normalizeTarget, partition, path, pathToStateValue, pathsToStateValue, reportUnhandledExceptionOnInvocation, symbolObservable, toArray, toArrayStrict, toEventObject, toGuard, toInvokeSource, toObserver, toSCXMLEvent, toStatePath, toStatePaths, toStateValue, toTransitionConfigArray, uniqueId, updateContext, updateHistoryStates, updateHistoryValue, warn };\n", "import { __assign, __read, __spreadArray } from './_virtual/_tslib.js';\nimport { SpecialTargets, ActionTypes } from './types.js';\nimport { init, send as send$1, raise as raise$1, update, log as log$1, cancel as cancel$1, assign as assign$1, error as error$1, stop as stop$1, pure as pure$1, choose as choose$1 } from './actionTypes.js';\nimport * as actionTypes from './actionTypes.js';\nexport { actionTypes };\nimport { toSCXMLEvent, isString, isFunction, toEventObject, getEventType, partition, updateContext, flatten, toArray, toGuard, evaluateGuard, warn, isArray } from './utils.js';\nimport { IS_PRODUCTION } from './environment.js';\n\nvar initEvent = /*#__PURE__*/toSCXMLEvent({\n type: init\n});\nfunction getActionFunction(actionType, actionFunctionMap) {\n return actionFunctionMap ? actionFunctionMap[actionType] || undefined : undefined;\n}\nfunction toActionObject(action, actionFunctionMap) {\n var actionObject;\n\n if (isString(action) || typeof action === 'number') {\n var exec = getActionFunction(action, actionFunctionMap);\n\n if (isFunction(exec)) {\n actionObject = {\n type: action,\n exec: exec\n };\n } else if (exec) {\n actionObject = exec;\n } else {\n actionObject = {\n type: action,\n exec: undefined\n };\n }\n } else if (isFunction(action)) {\n actionObject = {\n // Convert action to string if unnamed\n type: action.name || action.toString(),\n exec: action\n };\n } else {\n var exec = getActionFunction(action.type, actionFunctionMap);\n\n if (isFunction(exec)) {\n actionObject = __assign(__assign({}, action), {\n exec: exec\n });\n } else if (exec) {\n var actionType = exec.type || action.type;\n actionObject = __assign(__assign(__assign({}, exec), action), {\n type: actionType\n });\n } else {\n actionObject = action;\n }\n }\n\n return actionObject;\n}\nvar toActionObjects = function (action, actionFunctionMap) {\n if (!action) {\n return [];\n }\n\n var actions = isArray(action) ? action : [action];\n return actions.map(function (subAction) {\n return toActionObject(subAction, actionFunctionMap);\n });\n};\nfunction toActivityDefinition(action) {\n var actionObject = toActionObject(action);\n return __assign(__assign({\n id: isString(action) ? action : actionObject.id\n }, actionObject), {\n type: actionObject.type\n });\n}\n/**\r\n * Raises an event. This places the event in the internal event queue, so that\r\n * the event is immediately consumed by the machine in the current step.\r\n *\r\n * @param eventType The event to raise.\r\n */\n\nfunction raise(event) {\n if (!isString(event)) {\n return send(event, {\n to: SpecialTargets.Internal\n });\n }\n\n return {\n type: raise$1,\n event: event\n };\n}\nfunction resolveRaise(action) {\n return {\n type: raise$1,\n _event: toSCXMLEvent(action.event)\n };\n}\n/**\r\n * Sends an event. This returns an action that will be read by an interpreter to\r\n * send the event in the next step, after the current step is finished executing.\r\n *\r\n * @param event The event to send.\r\n * @param options Options to pass into the send event:\r\n * - `id` - The unique send event identifier (used with `cancel()`).\r\n * - `delay` - The number of milliseconds to delay the sending of the event.\r\n * - `to` - The target of this event (by default, the machine the event was sent from).\r\n */\n\nfunction send(event, options) {\n return {\n to: options ? options.to : undefined,\n type: send$1,\n event: isFunction(event) ? event : toEventObject(event),\n delay: options ? options.delay : undefined,\n id: options && options.id !== undefined ? options.id : isFunction(event) ? event.name : getEventType(event)\n };\n}\nfunction resolveSend(action, ctx, _event, delaysMap) {\n var meta = {\n _event: _event\n }; // TODO: helper function for resolving Expr\n\n var resolvedEvent = toSCXMLEvent(isFunction(action.event) ? action.event(ctx, _event.data, meta) : action.event);\n var resolvedDelay;\n\n if (isString(action.delay)) {\n var configDelay = delaysMap && delaysMap[action.delay];\n resolvedDelay = isFunction(configDelay) ? configDelay(ctx, _event.data, meta) : configDelay;\n } else {\n resolvedDelay = isFunction(action.delay) ? action.delay(ctx, _event.data, meta) : action.delay;\n }\n\n var resolvedTarget = isFunction(action.to) ? action.to(ctx, _event.data, meta) : action.to;\n return __assign(__assign({}, action), {\n to: resolvedTarget,\n _event: resolvedEvent,\n event: resolvedEvent.data,\n delay: resolvedDelay\n });\n}\n/**\r\n * Sends an event to this machine's parent.\r\n *\r\n * @param event The event to send to the parent machine.\r\n * @param options Options to pass into the send event.\r\n */\n\nfunction sendParent(event, options) {\n return send(event, __assign(__assign({}, options), {\n to: SpecialTargets.Parent\n }));\n}\n/**\r\n * Sends an event to an actor.\r\n *\r\n * @param actor The `ActorRef` to send the event to.\r\n * @param event The event to send, or an expression that evaluates to the event to send\r\n * @param options Send action options\r\n * @returns An XState send action object\r\n */\n\nfunction sendTo(actor, event, options) {\n return send(event, __assign(__assign({}, options), {\n to: actor\n }));\n}\n/**\r\n * Sends an update event to this machine's parent.\r\n */\n\nfunction sendUpdate() {\n return sendParent(update);\n}\n/**\r\n * Sends an event back to the sender of the original event.\r\n *\r\n * @param event The event to send back to the sender\r\n * @param options Options to pass into the send event\r\n */\n\nfunction respond(event, options) {\n return send(event, __assign(__assign({}, options), {\n to: function (_, __, _a) {\n var _event = _a._event;\n return _event.origin; // TODO: handle when _event.origin is undefined\n }\n }));\n}\n\nvar defaultLogExpr = function (context, event) {\n return {\n context: context,\n event: event\n };\n};\n/**\r\n *\r\n * @param expr The expression function to evaluate which will be logged.\r\n * Takes in 2 arguments:\r\n * - `ctx` - the current state context\r\n * - `event` - the event that caused this action to be executed.\r\n * @param label The label to give to the logged expression.\r\n */\n\n\nfunction log(expr, label) {\n if (expr === void 0) {\n expr = defaultLogExpr;\n }\n\n return {\n type: log$1,\n label: label,\n expr: expr\n };\n}\nvar resolveLog = function (action, ctx, _event) {\n return __assign(__assign({}, action), {\n value: isString(action.expr) ? action.expr : action.expr(ctx, _event.data, {\n _event: _event\n })\n });\n};\n/**\r\n * Cancels an in-flight `send(...)` action. A canceled sent action will not\r\n * be executed, nor will its event be sent, unless it has already been sent\r\n * (e.g., if `cancel(...)` is called after the `send(...)` action's `delay`).\r\n *\r\n * @param sendId The `id` of the `send(...)` action to cancel.\r\n */\n\nvar cancel = function (sendId) {\n return {\n type: cancel$1,\n sendId: sendId\n };\n};\n/**\r\n * Starts an activity.\r\n *\r\n * @param activity The activity to start.\r\n */\n\nfunction start(activity) {\n var activityDef = toActivityDefinition(activity);\n return {\n type: ActionTypes.Start,\n activity: activityDef,\n exec: undefined\n };\n}\n/**\r\n * Stops an activity.\r\n *\r\n * @param actorRef The activity to stop.\r\n */\n\nfunction stop(actorRef) {\n var activity = isFunction(actorRef) ? actorRef : toActivityDefinition(actorRef);\n return {\n type: ActionTypes.Stop,\n activity: activity,\n exec: undefined\n };\n}\nfunction resolveStop(action, context, _event) {\n var actorRefOrString = isFunction(action.activity) ? action.activity(context, _event.data) : action.activity;\n var resolvedActorRef = typeof actorRefOrString === 'string' ? {\n id: actorRefOrString\n } : actorRefOrString;\n var actionObject = {\n type: ActionTypes.Stop,\n activity: resolvedActorRef\n };\n return actionObject;\n}\n/**\r\n * Updates the current context of the machine.\r\n *\r\n * @param assignment An object that represents the partial context to update.\r\n */\n\nvar assign = function (assignment) {\n return {\n type: assign$1,\n assignment: assignment\n };\n};\nfunction isActionObject(action) {\n return typeof action === 'object' && 'type' in action;\n}\n/**\r\n * Returns an event type that represents an implicit event that\r\n * is sent after the specified `delay`.\r\n *\r\n * @param delayRef The delay in milliseconds\r\n * @param id The state node ID where this event is handled\r\n */\n\nfunction after(delayRef, id) {\n var idSuffix = id ? \"#\".concat(id) : '';\n return \"\".concat(ActionTypes.After, \"(\").concat(delayRef, \")\").concat(idSuffix);\n}\n/**\r\n * Returns an event that represents that a final state node\r\n * has been reached in the parent state node.\r\n *\r\n * @param id The final state node's parent state node `id`\r\n * @param data The data to pass into the event\r\n */\n\nfunction done(id, data) {\n var type = \"\".concat(ActionTypes.DoneState, \".\").concat(id);\n var eventObject = {\n type: type,\n data: data\n };\n\n eventObject.toString = function () {\n return type;\n };\n\n return eventObject;\n}\n/**\r\n * Returns an event that represents that an invoked service has terminated.\r\n *\r\n * An invoked service is terminated when it has reached a top-level final state node,\r\n * but not when it is canceled.\r\n *\r\n * @param id The final state node ID\r\n * @param data The data to pass into the event\r\n */\n\nfunction doneInvoke(id, data) {\n var type = \"\".concat(ActionTypes.DoneInvoke, \".\").concat(id);\n var eventObject = {\n type: type,\n data: data\n };\n\n eventObject.toString = function () {\n return type;\n };\n\n return eventObject;\n}\nfunction error(id, data) {\n var type = \"\".concat(ActionTypes.ErrorPlatform, \".\").concat(id);\n var eventObject = {\n type: type,\n data: data\n };\n\n eventObject.toString = function () {\n return type;\n };\n\n return eventObject;\n}\nfunction pure(getActions) {\n return {\n type: ActionTypes.Pure,\n get: getActions\n };\n}\n/**\r\n * Forwards (sends) an event to a specified service.\r\n *\r\n * @param target The target service to forward the event to.\r\n * @param options Options to pass into the send action creator.\r\n */\n\nfunction forwardTo(target, options) {\n return send(function (_, event) {\n return event;\n }, __assign(__assign({}, options), {\n to: target\n }));\n}\n/**\r\n * Escalates an error by sending it as an event to this machine's parent.\r\n *\r\n * @param errorData The error data to send, or the expression function that\r\n * takes in the `context`, `event`, and `meta`, and returns the error data to send.\r\n * @param options Options to pass into the send action creator.\r\n */\n\nfunction escalate(errorData, options) {\n return sendParent(function (context, event, meta) {\n return {\n type: error$1,\n data: isFunction(errorData) ? errorData(context, event, meta) : errorData\n };\n }, __assign(__assign({}, options), {\n to: SpecialTargets.Parent\n }));\n}\nfunction choose(conds) {\n return {\n type: ActionTypes.Choose,\n conds: conds\n };\n}\nfunction resolveActions(machine, currentState, currentContext, _event, actions, preserveActionOrder) {\n if (preserveActionOrder === void 0) {\n preserveActionOrder = false;\n }\n\n var _a = __read(preserveActionOrder ? [[], actions] : partition(actions, function (action) {\n return action.type === assign$1;\n }), 2),\n assignActions = _a[0],\n otherActions = _a[1];\n\n var updatedContext = assignActions.length ? updateContext(currentContext, _event, assignActions, currentState) : currentContext;\n var preservedContexts = preserveActionOrder ? [currentContext] : undefined;\n var resolvedActions = flatten(otherActions.map(function (actionObject) {\n var _a;\n\n switch (actionObject.type) {\n case raise$1:\n return resolveRaise(actionObject);\n\n case send$1:\n var sendAction = resolveSend(actionObject, updatedContext, _event, machine.options.delays); // TODO: fix ActionTypes.Init\n\n if (!IS_PRODUCTION) {\n // warn after resolving as we can create better contextual message here\n warn(!isString(actionObject.delay) || typeof sendAction.delay === 'number', // tslint:disable-next-line:max-line-length\n \"No delay reference for delay expression '\".concat(actionObject.delay, \"' was found on machine '\").concat(machine.id, \"'\"));\n }\n\n return sendAction;\n\n case log$1:\n return resolveLog(actionObject, updatedContext, _event);\n\n case choose$1:\n {\n var chooseAction = actionObject;\n var matchedActions = (_a = chooseAction.conds.find(function (condition) {\n var guard = toGuard(condition.cond, machine.options.guards);\n return !guard || evaluateGuard(machine, guard, updatedContext, _event, currentState);\n })) === null || _a === void 0 ? void 0 : _a.actions;\n\n if (!matchedActions) {\n return [];\n }\n\n var _b = __read(resolveActions(machine, currentState, updatedContext, _event, toActionObjects(toArray(matchedActions), machine.options.actions), preserveActionOrder), 2),\n resolvedActionsFromChoose = _b[0],\n resolvedContextFromChoose = _b[1];\n\n updatedContext = resolvedContextFromChoose;\n preservedContexts === null || preservedContexts === void 0 ? void 0 : preservedContexts.push(updatedContext);\n return resolvedActionsFromChoose;\n }\n\n case pure$1:\n {\n var matchedActions = actionObject.get(updatedContext, _event.data);\n\n if (!matchedActions) {\n return [];\n }\n\n var _c = __read(resolveActions(machine, currentState, updatedContext, _event, toActionObjects(toArray(matchedActions), machine.options.actions), preserveActionOrder), 2),\n resolvedActionsFromPure = _c[0],\n resolvedContext = _c[1];\n\n updatedContext = resolvedContext;\n preservedContexts === null || preservedContexts === void 0 ? void 0 : preservedContexts.push(updatedContext);\n return resolvedActionsFromPure;\n }\n\n case stop$1:\n {\n return resolveStop(actionObject, updatedContext, _event);\n }\n\n case assign$1:\n {\n updatedContext = updateContext(updatedContext, _event, [actionObject], currentState);\n preservedContexts === null || preservedContexts === void 0 ? void 0 : preservedContexts.push(updatedContext);\n break;\n }\n\n default:\n var resolvedActionObject = toActionObject(actionObject, machine.options.actions);\n var exec_1 = resolvedActionObject.exec;\n\n if (exec_1 && preservedContexts) {\n var contextIndex_1 = preservedContexts.length - 1;\n resolvedActionObject = __assign(__assign({}, resolvedActionObject), {\n exec: function (_ctx) {\n var args = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n\n exec_1.apply(void 0, __spreadArray([preservedContexts[contextIndex_1]], __read(args), false));\n }\n });\n }\n\n return resolvedActionObject;\n }\n }).filter(function (a) {\n return !!a;\n }));\n return [resolvedActions, updatedContext];\n}\n\nexport { after, assign, cancel, choose, done, doneInvoke, error, escalate, forwardTo, getActionFunction, initEvent, isActionObject, log, pure, raise, resolveActions, resolveLog, resolveRaise, resolveSend, resolveStop, respond, send, sendParent, sendTo, sendUpdate, start, stop, toActionObject, toActionObjects, toActivityDefinition };\n", "/**\r\n * Maintains a stack of the current service in scope.\r\n * This is used to provide the correct service to spawn().\r\n */\nvar serviceStack = [];\nvar provide = function (service, fn) {\n serviceStack.push(service);\n var result = fn(service);\n serviceStack.pop();\n return result;\n};\nvar consume = function (fn) {\n return fn(serviceStack[serviceStack.length - 1]);\n};\n\nexport { consume, provide };\n", "import { __assign } from './_virtual/_tslib.js';\nimport { symbolObservable, toInvokeSource, mapContext, isMachine } from './utils.js';\nimport { provide } from './serviceScope.js';\n\nfunction createNullActor(id) {\n var _a;\n\n return _a = {\n id: id,\n send: function () {\n return void 0;\n },\n subscribe: function () {\n return {\n unsubscribe: function () {\n return void 0;\n }\n };\n },\n getSnapshot: function () {\n return undefined;\n },\n toJSON: function () {\n return {\n id: id\n };\n }\n }, _a[symbolObservable] = function () {\n return this;\n }, _a;\n}\n/**\r\n * Creates a deferred actor that is able to be invoked given the provided\r\n * invocation information in its `.meta` value.\r\n *\r\n * @param invokeDefinition The meta information needed to invoke the actor.\r\n */\n\nfunction createInvocableActor(invokeDefinition, machine, context, _event) {\n var _a;\n\n var invokeSrc = toInvokeSource(invokeDefinition.src);\n var serviceCreator = (_a = machine === null || machine === void 0 ? void 0 : machine.options.services) === null || _a === void 0 ? void 0 : _a[invokeSrc.type];\n var resolvedData = invokeDefinition.data ? mapContext(invokeDefinition.data, context, _event) : undefined;\n var tempActor = serviceCreator ? createDeferredActor(serviceCreator, invokeDefinition.id, resolvedData) : createNullActor(invokeDefinition.id); // @ts-ignore\n\n tempActor.meta = invokeDefinition;\n return tempActor;\n}\nfunction createDeferredActor(entity, id, data) {\n var tempActor = createNullActor(id); // @ts-ignore\n\n tempActor.deferred = true;\n\n if (isMachine(entity)) {\n // \"mute\" the existing service scope so potential spawned actors within the `.initialState` stay deferred here\n var initialState_1 = tempActor.state = provide(undefined, function () {\n return (data ? entity.withContext(data) : entity).initialState;\n });\n\n tempActor.getSnapshot = function () {\n return initialState_1;\n };\n }\n\n return tempActor;\n}\nfunction isActor(item) {\n try {\n return typeof item.send === 'function';\n } catch (e) {\n return false;\n }\n}\nfunction isSpawnedActor(item) {\n return isActor(item) && 'id' in item;\n} // TODO: refactor the return type, this could be written in a better way but it's best to avoid unneccessary breaking changes now\n\nfunction toActorRef(actorRefLike) {\n var _a;\n\n return __assign((_a = {\n subscribe: function () {\n return {\n unsubscribe: function () {\n return void 0;\n }\n };\n },\n id: 'anonymous',\n getSnapshot: function () {\n return undefined;\n }\n }, _a[symbolObservable] = function () {\n return this;\n }, _a), actorRefLike);\n}\n\nexport { createDeferredActor, createInvocableActor, createNullActor, isActor, isSpawnedActor, toActorRef };\n", "import { __values, __spreadArray, __read } from './_virtual/_tslib.js';\nimport { flatten } from './utils.js';\n\nvar isLeafNode = function (stateNode) {\n return stateNode.type === 'atomic' || stateNode.type === 'final';\n};\nfunction getChildren(stateNode) {\n return Object.keys(stateNode.states).map(function (key) {\n return stateNode.states[key];\n });\n}\nfunction getAllStateNodes(stateNode) {\n var stateNodes = [stateNode];\n\n if (isLeafNode(stateNode)) {\n return stateNodes;\n }\n\n return stateNodes.concat(flatten(getChildren(stateNode).map(getAllStateNodes)));\n}\nfunction getConfiguration(prevStateNodes, stateNodes) {\n var e_1, _a, e_2, _b, e_3, _c, e_4, _d;\n\n var prevConfiguration = new Set(prevStateNodes);\n var prevAdjList = getAdjList(prevConfiguration);\n var configuration = new Set(stateNodes);\n\n try {\n // add all ancestors\n for (var configuration_1 = __values(configuration), configuration_1_1 = configuration_1.next(); !configuration_1_1.done; configuration_1_1 = configuration_1.next()) {\n var s = configuration_1_1.value;\n var m = s.parent;\n\n while (m && !configuration.has(m)) {\n configuration.add(m);\n m = m.parent;\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (configuration_1_1 && !configuration_1_1.done && (_a = configuration_1.return)) _a.call(configuration_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n\n var adjList = getAdjList(configuration);\n\n try {\n // add descendants\n for (var configuration_2 = __values(configuration), configuration_2_1 = configuration_2.next(); !configuration_2_1.done; configuration_2_1 = configuration_2.next()) {\n var s = configuration_2_1.value; // if previously active, add existing child nodes\n\n if (s.type === 'compound' && (!adjList.get(s) || !adjList.get(s).length)) {\n if (prevAdjList.get(s)) {\n prevAdjList.get(s).forEach(function (sn) {\n return configuration.add(sn);\n });\n } else {\n s.initialStateNodes.forEach(function (sn) {\n return configuration.add(sn);\n });\n }\n } else {\n if (s.type === 'parallel') {\n try {\n for (var _e = (e_3 = void 0, __values(getChildren(s))), _f = _e.next(); !_f.done; _f = _e.next()) {\n var child = _f.value;\n\n if (child.type === 'history') {\n continue;\n }\n\n if (!configuration.has(child)) {\n configuration.add(child);\n\n if (prevAdjList.get(child)) {\n prevAdjList.get(child).forEach(function (sn) {\n return configuration.add(sn);\n });\n } else {\n child.initialStateNodes.forEach(function (sn) {\n return configuration.add(sn);\n });\n }\n }\n }\n } catch (e_3_1) {\n e_3 = {\n error: e_3_1\n };\n } finally {\n try {\n if (_f && !_f.done && (_c = _e.return)) _c.call(_e);\n } finally {\n if (e_3) throw e_3.error;\n }\n }\n }\n }\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (configuration_2_1 && !configuration_2_1.done && (_b = configuration_2.return)) _b.call(configuration_2);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n\n try {\n // add all ancestors\n for (var configuration_3 = __values(configuration), configuration_3_1 = configuration_3.next(); !configuration_3_1.done; configuration_3_1 = configuration_3.next()) {\n var s = configuration_3_1.value;\n var m = s.parent;\n\n while (m && !configuration.has(m)) {\n configuration.add(m);\n m = m.parent;\n }\n }\n } catch (e_4_1) {\n e_4 = {\n error: e_4_1\n };\n } finally {\n try {\n if (configuration_3_1 && !configuration_3_1.done && (_d = configuration_3.return)) _d.call(configuration_3);\n } finally {\n if (e_4) throw e_4.error;\n }\n }\n\n return configuration;\n}\n\nfunction getValueFromAdj(baseNode, adjList) {\n var childStateNodes = adjList.get(baseNode);\n\n if (!childStateNodes) {\n return {}; // todo: fix?\n }\n\n if (baseNode.type === 'compound') {\n var childStateNode = childStateNodes[0];\n\n if (childStateNode) {\n if (isLeafNode(childStateNode)) {\n return childStateNode.key;\n }\n } else {\n return {};\n }\n }\n\n var stateValue = {};\n childStateNodes.forEach(function (csn) {\n stateValue[csn.key] = getValueFromAdj(csn, adjList);\n });\n return stateValue;\n}\n\nfunction getAdjList(configuration) {\n var e_5, _a;\n\n var adjList = new Map();\n\n try {\n for (var configuration_4 = __values(configuration), configuration_4_1 = configuration_4.next(); !configuration_4_1.done; configuration_4_1 = configuration_4.next()) {\n var s = configuration_4_1.value;\n\n if (!adjList.has(s)) {\n adjList.set(s, []);\n }\n\n if (s.parent) {\n if (!adjList.has(s.parent)) {\n adjList.set(s.parent, []);\n }\n\n adjList.get(s.parent).push(s);\n }\n }\n } catch (e_5_1) {\n e_5 = {\n error: e_5_1\n };\n } finally {\n try {\n if (configuration_4_1 && !configuration_4_1.done && (_a = configuration_4.return)) _a.call(configuration_4);\n } finally {\n if (e_5) throw e_5.error;\n }\n }\n\n return adjList;\n}\nfunction getValue(rootNode, configuration) {\n var config = getConfiguration([rootNode], configuration);\n return getValueFromAdj(rootNode, getAdjList(config));\n}\nfunction has(iterable, item) {\n if (Array.isArray(iterable)) {\n return iterable.some(function (member) {\n return member === item;\n });\n }\n\n if (iterable instanceof Set) {\n return iterable.has(item);\n }\n\n return false; // TODO: fix\n}\nfunction nextEvents(configuration) {\n return __spreadArray([], __read(new Set(flatten(__spreadArray([], __read(configuration.map(function (sn) {\n return sn.ownEvents;\n })), false)))), false);\n}\nfunction isInFinalState(configuration, stateNode) {\n if (stateNode.type === 'compound') {\n return getChildren(stateNode).some(function (s) {\n return s.type === 'final' && has(configuration, s);\n });\n }\n\n if (stateNode.type === 'parallel') {\n return getChildren(stateNode).every(function (sn) {\n return isInFinalState(configuration, sn);\n });\n }\n\n return false;\n}\nfunction getMeta(configuration) {\n if (configuration === void 0) {\n configuration = [];\n }\n\n return configuration.reduce(function (acc, stateNode) {\n if (stateNode.meta !== undefined) {\n acc[stateNode.id] = stateNode.meta;\n }\n\n return acc;\n }, {});\n}\nfunction getTagsFromConfiguration(configuration) {\n return new Set(flatten(configuration.map(function (sn) {\n return sn.tags;\n })));\n}\n\nexport { getAdjList, getAllStateNodes, getChildren, getConfiguration, getMeta, getTagsFromConfiguration, getValue, has, isInFinalState, isLeafNode, nextEvents };\n", "import { __assign, __spreadArray, __read, __rest } from './_virtual/_tslib.js';\nimport { EMPTY_ACTIVITY_MAP } from './constants.js';\nimport { isString, matchesState, warn } from './utils.js';\nimport { getMeta, nextEvents } from './stateUtils.js';\nimport { initEvent } from './actions.js';\nimport { IS_PRODUCTION } from './environment.js';\n\nfunction stateValuesEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (a === undefined || b === undefined) {\n return false;\n }\n\n if (isString(a) || isString(b)) {\n return a === b;\n }\n\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n return aKeys.length === bKeys.length && aKeys.every(function (key) {\n return stateValuesEqual(a[key], b[key]);\n });\n}\nfunction isStateConfig(state) {\n if (typeof state !== 'object' || state === null) {\n return false;\n }\n\n return 'value' in state && '_event' in state;\n}\n/**\r\n * @deprecated Use `isStateConfig(object)` or `state instanceof State` instead.\r\n */\n\nvar isState = isStateConfig;\nfunction bindActionToState(action, state) {\n var exec = action.exec;\n\n var boundAction = __assign(__assign({}, action), {\n exec: exec !== undefined ? function () {\n return exec(state.context, state.event, {\n action: action,\n state: state,\n _event: state._event\n });\n } : undefined\n });\n\n return boundAction;\n}\n\nvar State =\n/*#__PURE__*/\n\n/** @class */\nfunction () {\n /**\r\n * Creates a new State instance.\r\n * @param value The state value\r\n * @param context The extended state\r\n * @param historyValue The tree representing historical values of the state nodes\r\n * @param history The previous state\r\n * @param actions An array of action objects to execute as side-effects\r\n * @param activities A mapping of activities and whether they are started (`true`) or stopped (`false`).\r\n * @param meta\r\n * @param events Internal event queue. Should be empty with run-to-completion semantics.\r\n * @param configuration\r\n */\n function State(config) {\n var _this = this;\n\n var _a;\n\n this.actions = [];\n this.activities = EMPTY_ACTIVITY_MAP;\n this.meta = {};\n this.events = [];\n this.value = config.value;\n this.context = config.context;\n this._event = config._event;\n this._sessionid = config._sessionid;\n this.event = this._event.data;\n this.historyValue = config.historyValue;\n this.history = config.history;\n this.actions = config.actions || [];\n this.activities = config.activities || EMPTY_ACTIVITY_MAP;\n this.meta = getMeta(config.configuration);\n this.events = config.events || [];\n this.matches = this.matches.bind(this);\n this.toStrings = this.toStrings.bind(this);\n this.configuration = config.configuration;\n this.transitions = config.transitions;\n this.children = config.children;\n this.done = !!config.done;\n this.tags = (_a = Array.isArray(config.tags) ? new Set(config.tags) : config.tags) !== null && _a !== void 0 ? _a : new Set();\n this.machine = config.machine;\n Object.defineProperty(this, 'nextEvents', {\n get: function () {\n return nextEvents(_this.configuration);\n }\n });\n }\n /**\r\n * Creates a new State instance for the given `stateValue` and `context`.\r\n * @param stateValue\r\n * @param context\r\n */\n\n\n State.from = function (stateValue, context) {\n if (stateValue instanceof State) {\n if (stateValue.context !== context) {\n return new State({\n value: stateValue.value,\n context: context,\n _event: stateValue._event,\n _sessionid: null,\n historyValue: stateValue.historyValue,\n history: stateValue.history,\n actions: [],\n activities: stateValue.activities,\n meta: {},\n events: [],\n configuration: [],\n transitions: [],\n children: {}\n });\n }\n\n return stateValue;\n }\n\n var _event = initEvent;\n return new State({\n value: stateValue,\n context: context,\n _event: _event,\n _sessionid: null,\n historyValue: undefined,\n history: undefined,\n actions: [],\n activities: undefined,\n meta: undefined,\n events: [],\n configuration: [],\n transitions: [],\n children: {}\n });\n };\n /**\r\n * Creates a new State instance for the given `config`.\r\n * @param config The state config\r\n */\n\n\n State.create = function (config) {\n return new State(config);\n };\n /**\r\n * Creates a new `State` instance for the given `stateValue` and `context` with no actions (side-effects).\r\n * @param stateValue\r\n * @param context\r\n */\n\n\n State.inert = function (stateValue, context) {\n if (stateValue instanceof State) {\n if (!stateValue.actions.length) {\n return stateValue;\n }\n\n var _event = initEvent;\n return new State({\n value: stateValue.value,\n context: context,\n _event: _event,\n _sessionid: null,\n historyValue: stateValue.historyValue,\n history: stateValue.history,\n activities: stateValue.activities,\n configuration: stateValue.configuration,\n transitions: [],\n children: {}\n });\n }\n\n return State.from(stateValue, context);\n };\n /**\r\n * Returns an array of all the string leaf state node paths.\r\n * @param stateValue\r\n * @param delimiter The character(s) that separate each subpath in the string state node path.\r\n */\n\n\n State.prototype.toStrings = function (stateValue, delimiter) {\n var _this = this;\n\n if (stateValue === void 0) {\n stateValue = this.value;\n }\n\n if (delimiter === void 0) {\n delimiter = '.';\n }\n\n if (isString(stateValue)) {\n return [stateValue];\n }\n\n var valueKeys = Object.keys(stateValue);\n return valueKeys.concat.apply(valueKeys, __spreadArray([], __read(valueKeys.map(function (key) {\n return _this.toStrings(stateValue[key], delimiter).map(function (s) {\n return key + delimiter + s;\n });\n })), false));\n };\n\n State.prototype.toJSON = function () {\n var _a = this;\n _a.configuration;\n _a.transitions;\n var tags = _a.tags;\n _a.machine;\n var jsonValues = __rest(_a, [\"configuration\", \"transitions\", \"tags\", \"machine\"]);\n\n return __assign(__assign({}, jsonValues), {\n tags: Array.from(tags)\n });\n };\n\n State.prototype.matches = function (parentStateValue) {\n return matchesState(parentStateValue, this.value);\n };\n /**\r\n * Whether the current state configuration has a state node with the specified `tag`.\r\n * @param tag\r\n */\n\n\n State.prototype.hasTag = function (tag) {\n return this.tags.has(tag);\n };\n /**\r\n * Determines whether sending the `event` will cause a non-forbidden transition\r\n * to be selected, even if the transitions have no actions nor\r\n * change the state value.\r\n *\r\n * @param event The event to test\r\n * @returns Whether the event will cause a transition\r\n */\n\n\n State.prototype.can = function (event) {\n var _a;\n\n if (IS_PRODUCTION) {\n warn(!!this.machine, \"state.can(...) used outside of a machine-created State object; this will always return false.\");\n }\n\n var transitionData = (_a = this.machine) === null || _a === void 0 ? void 0 : _a.getTransitionData(this, event);\n return !!(transitionData === null || transitionData === void 0 ? void 0 : transitionData.transitions.length) && // Check that at least one transition is not forbidden\n transitionData.transitions.some(function (t) {\n return t.target !== undefined || t.actions.length;\n });\n };\n\n return State;\n}();\n\nexport { State, bindActionToState, isState, isStateConfig, stateValuesEqual };\n", "import { __assign } from './_virtual/_tslib.js';\n\nvar defaultOptions = {\n deferEvents: false\n};\n\nvar Scheduler =\n/*#__PURE__*/\n\n/** @class */\nfunction () {\n function Scheduler(options) {\n this.processingEvent = false;\n this.queue = [];\n this.initialized = false;\n this.options = __assign(__assign({}, defaultOptions), options);\n }\n\n Scheduler.prototype.initialize = function (callback) {\n this.initialized = true;\n\n if (callback) {\n if (!this.options.deferEvents) {\n this.schedule(callback);\n return;\n }\n\n this.process(callback);\n }\n\n this.flushEvents();\n };\n\n Scheduler.prototype.schedule = function (task) {\n if (!this.initialized || this.processingEvent) {\n this.queue.push(task);\n return;\n }\n\n if (this.queue.length !== 0) {\n throw new Error('Event queue should be empty when it is not processing events');\n }\n\n this.process(task);\n this.flushEvents();\n };\n\n Scheduler.prototype.clear = function () {\n this.queue = [];\n };\n\n Scheduler.prototype.flushEvents = function () {\n var nextCallback = this.queue.shift();\n\n while (nextCallback) {\n this.process(nextCallback);\n nextCallback = this.queue.shift();\n }\n };\n\n Scheduler.prototype.process = function (callback) {\n this.processingEvent = true;\n\n try {\n callback();\n } catch (e) {\n // there is no use to keep the future events\n // as the situation is not anymore the same\n this.clear();\n throw e;\n } finally {\n this.processingEvent = false;\n }\n };\n\n return Scheduler;\n}();\n\nexport { Scheduler };\n", "var children = /*#__PURE__*/new Map();\nvar sessionIdIndex = 0;\nvar registry = {\n bookId: function () {\n return \"x:\".concat(sessionIdIndex++);\n },\n register: function (id, actor) {\n children.set(id, actor);\n return id;\n },\n get: function (id) {\n return children.get(id);\n },\n free: function (id) {\n children.delete(id);\n }\n};\n\nexport { registry };\n", "import { IS_PRODUCTION } from './environment.js';\n\nfunction getGlobal() {\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n\n if (typeof self !== 'undefined') {\n return self;\n }\n\n if (typeof window !== 'undefined') {\n return window;\n }\n\n if (typeof global !== 'undefined') {\n return global;\n }\n\n if (!IS_PRODUCTION) {\n console.warn('XState could not find a global object in this environment. Please let the maintainers know and raise an issue here: https://github.com/statelyai/xstate/issues');\n }\n}\n\nfunction getDevTools() {\n var global = getGlobal();\n\n if (global && '__xstate__' in global) {\n return global.__xstate__;\n }\n\n return undefined;\n}\n\nfunction registerService(service) {\n if (!getGlobal()) {\n return;\n }\n\n var devTools = getDevTools();\n\n if (devTools) {\n devTools.register(service);\n }\n}\n\nexport { getGlobal, registerService };\n", "import { error, doneInvoke } from './actions.js';\nimport { toActorRef } from './Actor.js';\nimport { toObserver } from './utils.js';\n\n/**\r\n * Returns an actor behavior from a reducer and its initial state.\r\n *\r\n * @param transition The pure reducer that returns the next state given the current state and event.\r\n * @param initialState The initial state of the reducer.\r\n * @returns An actor behavior\r\n */\n\nfunction fromReducer(transition, initialState) {\n return {\n transition: transition,\n initialState: initialState\n };\n}\nfunction fromPromise(promiseFn) {\n var initialState = {\n error: undefined,\n data: undefined,\n status: 'pending'\n };\n return {\n transition: function (state, event, _a) {\n var parent = _a.parent,\n id = _a.id,\n observers = _a.observers;\n\n switch (event.type) {\n case 'fulfill':\n parent === null || parent === void 0 ? void 0 : parent.send(doneInvoke(id, event.data));\n return {\n error: undefined,\n data: event.data,\n status: 'fulfilled'\n };\n\n case 'reject':\n parent === null || parent === void 0 ? void 0 : parent.send(error(id, event.error));\n observers.forEach(function (observer) {\n observer.error(event.error);\n });\n return {\n error: event.error,\n data: undefined,\n status: 'rejected'\n };\n\n default:\n return state;\n }\n },\n initialState: initialState,\n start: function (_a) {\n var self = _a.self;\n promiseFn().then(function (data) {\n self.send({\n type: 'fulfill',\n data: data\n });\n }, function (reason) {\n self.send({\n type: 'reject',\n error: reason\n });\n });\n return initialState;\n }\n };\n}\nfunction spawnBehavior(behavior, options) {\n if (options === void 0) {\n options = {};\n }\n\n var state = behavior.initialState;\n var observers = new Set();\n var mailbox = [];\n var flushing = false;\n\n var flush = function () {\n if (flushing) {\n return;\n }\n\n flushing = true;\n\n while (mailbox.length > 0) {\n var event_1 = mailbox.shift();\n state = behavior.transition(state, event_1, actorCtx);\n observers.forEach(function (observer) {\n return observer.next(state);\n });\n }\n\n flushing = false;\n };\n\n var actor = toActorRef({\n id: options.id,\n send: function (event) {\n mailbox.push(event);\n flush();\n },\n getSnapshot: function () {\n return state;\n },\n subscribe: function (next, handleError, complete) {\n var observer = toObserver(next, handleError, complete);\n observers.add(observer);\n observer.next(state);\n return {\n unsubscribe: function () {\n observers.delete(observer);\n }\n };\n }\n });\n var actorCtx = {\n parent: options.parent,\n self: actor,\n id: options.id || 'anonymous',\n observers: observers\n };\n state = behavior.start ? behavior.start(actorCtx) : state;\n return actor;\n}\n\nexport { fromPromise, fromReducer, spawnBehavior };\n", "import { __values, __spreadArray, __read, __assign } from './_virtual/_tslib.js';\nimport { ActionTypes, SpecialTargets } from './types.js';\nimport { isStateConfig, State, bindActionToState } from './State.js';\nimport { errorPlatform, log, stop, start, cancel, send, update, error as error$1 } from './actionTypes.js';\nimport { doneInvoke, initEvent, getActionFunction, error } from './actions.js';\nimport { IS_PRODUCTION } from './environment.js';\nimport { warn, mapContext, isFunction, toSCXMLEvent, toInvokeSource, isMachine, isPromiseLike, isObservable, isBehavior, reportUnhandledExceptionOnInvocation, symbolObservable, isArray, toEventObject, isString, isActor, uniqueId, toObserver } from './utils.js';\nimport { Scheduler } from './scheduler.js';\nimport { isSpawnedActor, createDeferredActor } from './Actor.js';\nimport { isInFinalState } from './stateUtils.js';\nimport { registry } from './registry.js';\nimport { getGlobal, registerService } from './devTools.js';\nimport { provide, consume } from './serviceScope.js';\nimport { spawnBehavior } from './behaviors.js';\n\nvar DEFAULT_SPAWN_OPTIONS = {\n sync: false,\n autoForward: false\n};\nvar InterpreterStatus;\n\n(function (InterpreterStatus) {\n InterpreterStatus[InterpreterStatus[\"NotStarted\"] = 0] = \"NotStarted\";\n InterpreterStatus[InterpreterStatus[\"Running\"] = 1] = \"Running\";\n InterpreterStatus[InterpreterStatus[\"Stopped\"] = 2] = \"Stopped\";\n})(InterpreterStatus || (InterpreterStatus = {}));\n\nvar Interpreter =\n/*#__PURE__*/\n\n/** @class */\nfunction () {\n /**\r\n * Creates a new Interpreter instance (i.e., service) for the given machine with the provided options, if any.\r\n *\r\n * @param machine The machine to be interpreted\r\n * @param options Interpreter options\r\n */\n function Interpreter(machine, options) {\n var _this = this;\n\n if (options === void 0) {\n options = Interpreter.defaultOptions;\n }\n\n this.machine = machine;\n this.scheduler = new Scheduler();\n this.delayedEventsMap = {};\n this.listeners = new Set();\n this.contextListeners = new Set();\n this.stopListeners = new Set();\n this.doneListeners = new Set();\n this.eventListeners = new Set();\n this.sendListeners = new Set();\n /**\r\n * Whether the service is started.\r\n */\n\n this.initialized = false;\n this.status = InterpreterStatus.NotStarted;\n this.children = new Map();\n this.forwardTo = new Set();\n /**\r\n * Alias for Interpreter.prototype.start\r\n */\n\n this.init = this.start;\n /**\r\n * Sends an event to the running interpreter to trigger a transition.\r\n *\r\n * An array of events (batched) can be sent as well, which will send all\r\n * batched events to the running interpreter. The listeners will be\r\n * notified only **once** when all events are processed.\r\n *\r\n * @param event The event(s) to send\r\n */\n\n this.send = function (event, payload) {\n if (isArray(event)) {\n _this.batch(event);\n\n return _this.state;\n }\n\n var _event = toSCXMLEvent(toEventObject(event, payload));\n\n if (_this.status === InterpreterStatus.Stopped) {\n // do nothing\n if (!IS_PRODUCTION) {\n warn(false, \"Event \\\"\".concat(_event.name, \"\\\" was sent to stopped service \\\"\").concat(_this.machine.id, \"\\\". This service has already reached its final state, and will not transition.\\nEvent: \").concat(JSON.stringify(_event.data)));\n }\n\n return _this.state;\n }\n\n if (_this.status !== InterpreterStatus.Running && !_this.options.deferEvents) {\n throw new Error(\"Event \\\"\".concat(_event.name, \"\\\" was sent to uninitialized service \\\"\").concat(_this.machine.id // tslint:disable-next-line:max-line-length\n , \"\\\". Make sure .start() is called for this service, or set { deferEvents: true } in the service options.\\nEvent: \").concat(JSON.stringify(_event.data)));\n }\n\n _this.scheduler.schedule(function () {\n // Forward copy of event to child actors\n _this.forward(_event);\n\n var nextState = _this.nextState(_event);\n\n _this.update(nextState, _event);\n });\n\n return _this._state; // TODO: deprecate (should return void)\n // tslint:disable-next-line:semicolon\n };\n\n this.sendTo = function (event, to) {\n var isParent = _this.parent && (to === SpecialTargets.Parent || _this.parent.id === to);\n var target = isParent ? _this.parent : isString(to) ? _this.children.get(to) || registry.get(to) : isActor(to) ? to : undefined;\n\n if (!target) {\n if (!isParent) {\n throw new Error(\"Unable to send event to child '\".concat(to, \"' from service '\").concat(_this.id, \"'.\"));\n } // tslint:disable-next-line:no-console\n\n\n if (!IS_PRODUCTION) {\n warn(false, \"Service '\".concat(_this.id, \"' has no parent: unable to send event \").concat(event.type));\n }\n\n return;\n }\n\n if ('machine' in target) {\n // Send SCXML events to machines\n target.send(__assign(__assign({}, event), {\n name: event.name === error$1 ? \"\".concat(error(_this.id)) : event.name,\n origin: _this.sessionId\n }));\n } else {\n // Send normal events to other targets\n target.send(event.data);\n }\n };\n\n var resolvedOptions = __assign(__assign({}, Interpreter.defaultOptions), options);\n\n var clock = resolvedOptions.clock,\n logger = resolvedOptions.logger,\n parent = resolvedOptions.parent,\n id = resolvedOptions.id;\n var resolvedId = id !== undefined ? id : machine.id;\n this.id = resolvedId;\n this.logger = logger;\n this.clock = clock;\n this.parent = parent;\n this.options = resolvedOptions;\n this.scheduler = new Scheduler({\n deferEvents: this.options.deferEvents\n });\n this.sessionId = registry.bookId();\n }\n\n Object.defineProperty(Interpreter.prototype, \"initialState\", {\n get: function () {\n var _this = this;\n\n if (this._initialState) {\n return this._initialState;\n }\n\n return provide(this, function () {\n _this._initialState = _this.machine.initialState;\n return _this._initialState;\n });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Interpreter.prototype, \"state\", {\n get: function () {\n if (!IS_PRODUCTION) {\n warn(this.status !== InterpreterStatus.NotStarted, \"Attempted to read state from uninitialized service '\".concat(this.id, \"'. Make sure the service is started first.\"));\n }\n\n return this._state;\n },\n enumerable: false,\n configurable: true\n });\n /**\r\n * Executes the actions of the given state, with that state's `context` and `event`.\r\n *\r\n * @param state The state whose actions will be executed\r\n * @param actionsConfig The action implementations to use\r\n */\n\n Interpreter.prototype.execute = function (state, actionsConfig) {\n var e_1, _a;\n\n try {\n for (var _b = __values(state.actions), _c = _b.next(); !_c.done; _c = _b.next()) {\n var action = _c.value;\n this.exec(action, state, actionsConfig);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n };\n\n Interpreter.prototype.update = function (state, _event) {\n var e_2, _a, e_3, _b, e_4, _c, e_5, _d;\n\n var _this = this; // Attach session ID to state\n\n\n state._sessionid = this.sessionId; // Update state\n\n this._state = state; // Execute actions\n\n if (this.options.execute) {\n this.execute(this.state);\n } // Update children\n\n\n this.children.forEach(function (child) {\n _this.state.children[child.id] = child;\n }); // Dev tools\n\n if (this.devTools) {\n this.devTools.send(_event.data, state);\n } // Execute listeners\n\n\n if (state.event) {\n try {\n for (var _e = __values(this.eventListeners), _f = _e.next(); !_f.done; _f = _e.next()) {\n var listener = _f.value;\n listener(state.event);\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (_f && !_f.done && (_a = _e.return)) _a.call(_e);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n }\n\n try {\n for (var _g = __values(this.listeners), _h = _g.next(); !_h.done; _h = _g.next()) {\n var listener = _h.value;\n listener(state, state.event);\n }\n } catch (e_3_1) {\n e_3 = {\n error: e_3_1\n };\n } finally {\n try {\n if (_h && !_h.done && (_b = _g.return)) _b.call(_g);\n } finally {\n if (e_3) throw e_3.error;\n }\n }\n\n try {\n for (var _j = __values(this.contextListeners), _k = _j.next(); !_k.done; _k = _j.next()) {\n var contextListener = _k.value;\n contextListener(this.state.context, this.state.history ? this.state.history.context : undefined);\n }\n } catch (e_4_1) {\n e_4 = {\n error: e_4_1\n };\n } finally {\n try {\n if (_k && !_k.done && (_c = _j.return)) _c.call(_j);\n } finally {\n if (e_4) throw e_4.error;\n }\n }\n\n var isDone = isInFinalState(state.configuration || [], this.machine);\n\n if (this.state.configuration && isDone) {\n // get final child state node\n var finalChildStateNode = state.configuration.find(function (sn) {\n return sn.type === 'final' && sn.parent === _this.machine;\n });\n var doneData = finalChildStateNode && finalChildStateNode.doneData ? mapContext(finalChildStateNode.doneData, state.context, _event) : undefined;\n\n try {\n for (var _l = __values(this.doneListeners), _m = _l.next(); !_m.done; _m = _l.next()) {\n var listener = _m.value;\n listener(doneInvoke(this.id, doneData));\n }\n } catch (e_5_1) {\n e_5 = {\n error: e_5_1\n };\n } finally {\n try {\n if (_m && !_m.done && (_d = _l.return)) _d.call(_l);\n } finally {\n if (e_5) throw e_5.error;\n }\n }\n\n this.stop();\n }\n };\n /*\r\n * Adds a listener that is notified whenever a state transition happens. The listener is called with\r\n * the next state and the event object that caused the state transition.\r\n *\r\n * @param listener The state listener\r\n */\n\n\n Interpreter.prototype.onTransition = function (listener) {\n this.listeners.add(listener); // Send current state to listener\n\n if (this.status === InterpreterStatus.Running) {\n listener(this.state, this.state.event);\n }\n\n return this;\n };\n\n Interpreter.prototype.subscribe = function (nextListenerOrObserver, _, // TODO: error listener\n completeListener) {\n var _this = this;\n\n if (!nextListenerOrObserver) {\n return {\n unsubscribe: function () {\n return void 0;\n }\n };\n }\n\n var listener;\n var resolvedCompleteListener = completeListener;\n\n if (typeof nextListenerOrObserver === 'function') {\n listener = nextListenerOrObserver;\n } else {\n listener = nextListenerOrObserver.next.bind(nextListenerOrObserver);\n resolvedCompleteListener = nextListenerOrObserver.complete.bind(nextListenerOrObserver);\n }\n\n this.listeners.add(listener); // Send current state to listener\n\n if (this.status === InterpreterStatus.Running) {\n listener(this.state);\n }\n\n if (resolvedCompleteListener) {\n this.onDone(resolvedCompleteListener);\n }\n\n return {\n unsubscribe: function () {\n listener && _this.listeners.delete(listener);\n resolvedCompleteListener && _this.doneListeners.delete(resolvedCompleteListener);\n }\n };\n };\n /**\r\n * Adds an event listener that is notified whenever an event is sent to the running interpreter.\r\n * @param listener The event listener\r\n */\n\n\n Interpreter.prototype.onEvent = function (listener) {\n this.eventListeners.add(listener);\n return this;\n };\n /**\r\n * Adds an event listener that is notified whenever a `send` event occurs.\r\n * @param listener The event listener\r\n */\n\n\n Interpreter.prototype.onSend = function (listener) {\n this.sendListeners.add(listener);\n return this;\n };\n /**\r\n * Adds a context listener that is notified whenever the state context changes.\r\n * @param listener The context listener\r\n */\n\n\n Interpreter.prototype.onChange = function (listener) {\n this.contextListeners.add(listener);\n return this;\n };\n /**\r\n * Adds a listener that is notified when the machine is stopped.\r\n * @param listener The listener\r\n */\n\n\n Interpreter.prototype.onStop = function (listener) {\n this.stopListeners.add(listener);\n return this;\n };\n /**\r\n * Adds a state listener that is notified when the statechart has reached its final state.\r\n * @param listener The state listener\r\n */\n\n\n Interpreter.prototype.onDone = function (listener) {\n this.doneListeners.add(listener);\n return this;\n };\n /**\r\n * Removes a listener.\r\n * @param listener The listener to remove\r\n */\n\n\n Interpreter.prototype.off = function (listener) {\n this.listeners.delete(listener);\n this.eventListeners.delete(listener);\n this.sendListeners.delete(listener);\n this.stopListeners.delete(listener);\n this.doneListeners.delete(listener);\n this.contextListeners.delete(listener);\n return this;\n };\n /**\r\n * Starts the interpreter from the given state, or the initial state.\r\n * @param initialState The state to start the statechart from\r\n */\n\n\n Interpreter.prototype.start = function (initialState) {\n var _this = this;\n\n if (this.status === InterpreterStatus.Running) {\n // Do not restart the service if it is already started\n return this;\n } // yes, it's a hack but we need the related cache to be populated for some things to work (like delayed transitions)\n // this is usually called by `machine.getInitialState` but if we rehydrate from a state we might bypass this call\n // we also don't want to call this method here as it resolves the full initial state which might involve calling assign actions\n // and that could potentially lead to some unwanted side-effects (even such as creating some rogue actors)\n\n\n this.machine._init();\n\n registry.register(this.sessionId, this);\n this.initialized = true;\n this.status = InterpreterStatus.Running;\n var resolvedState = initialState === undefined ? this.initialState : provide(this, function () {\n return isStateConfig(initialState) ? _this.machine.resolveState(initialState) : _this.machine.resolveState(State.from(initialState, _this.machine.context));\n });\n\n if (this.options.devTools) {\n this.attachDev();\n }\n\n this.scheduler.initialize(function () {\n _this.update(resolvedState, initEvent);\n });\n return this;\n };\n /**\r\n * Stops the interpreter and unsubscribe all listeners.\r\n *\r\n * This will also notify the `onStop` listeners.\r\n */\n\n\n Interpreter.prototype.stop = function () {\n var e_6, _a, e_7, _b, e_8, _c, e_9, _d, e_10, _e;\n\n var _this = this;\n\n try {\n for (var _f = __values(this.listeners), _g = _f.next(); !_g.done; _g = _f.next()) {\n var listener = _g.value;\n this.listeners.delete(listener);\n }\n } catch (e_6_1) {\n e_6 = {\n error: e_6_1\n };\n } finally {\n try {\n if (_g && !_g.done && (_a = _f.return)) _a.call(_f);\n } finally {\n if (e_6) throw e_6.error;\n }\n }\n\n try {\n for (var _h = __values(this.stopListeners), _j = _h.next(); !_j.done; _j = _h.next()) {\n var listener = _j.value; // call listener, then remove\n\n listener();\n this.stopListeners.delete(listener);\n }\n } catch (e_7_1) {\n e_7 = {\n error: e_7_1\n };\n } finally {\n try {\n if (_j && !_j.done && (_b = _h.return)) _b.call(_h);\n } finally {\n if (e_7) throw e_7.error;\n }\n }\n\n try {\n for (var _k = __values(this.contextListeners), _l = _k.next(); !_l.done; _l = _k.next()) {\n var listener = _l.value;\n this.contextListeners.delete(listener);\n }\n } catch (e_8_1) {\n e_8 = {\n error: e_8_1\n };\n } finally {\n try {\n if (_l && !_l.done && (_c = _k.return)) _c.call(_k);\n } finally {\n if (e_8) throw e_8.error;\n }\n }\n\n try {\n for (var _m = __values(this.doneListeners), _o = _m.next(); !_o.done; _o = _m.next()) {\n var listener = _o.value;\n this.doneListeners.delete(listener);\n }\n } catch (e_9_1) {\n e_9 = {\n error: e_9_1\n };\n } finally {\n try {\n if (_o && !_o.done && (_d = _m.return)) _d.call(_m);\n } finally {\n if (e_9) throw e_9.error;\n }\n }\n\n if (!this.initialized) {\n // Interpreter already stopped; do nothing\n return this;\n }\n\n __spreadArray([], __read(this.state.configuration), false).sort(function (a, b) {\n return b.order - a.order;\n }).forEach(function (stateNode) {\n var e_11, _a;\n\n try {\n for (var _b = __values(stateNode.definition.exit), _c = _b.next(); !_c.done; _c = _b.next()) {\n var action = _c.value;\n\n _this.exec(action, _this.state);\n }\n } catch (e_11_1) {\n e_11 = {\n error: e_11_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_11) throw e_11.error;\n }\n }\n }); // Stop all children\n\n\n this.children.forEach(function (child) {\n if (isFunction(child.stop)) {\n child.stop();\n }\n });\n\n try {\n // Cancel all delayed events\n for (var _p = __values(Object.keys(this.delayedEventsMap)), _q = _p.next(); !_q.done; _q = _p.next()) {\n var key = _q.value;\n this.clock.clearTimeout(this.delayedEventsMap[key]);\n }\n } catch (e_10_1) {\n e_10 = {\n error: e_10_1\n };\n } finally {\n try {\n if (_q && !_q.done && (_e = _p.return)) _e.call(_p);\n } finally {\n if (e_10) throw e_10.error;\n }\n }\n\n this.scheduler.clear();\n this.initialized = false;\n this.status = InterpreterStatus.Stopped;\n registry.free(this.sessionId);\n return this;\n };\n\n Interpreter.prototype.batch = function (events) {\n var _this = this;\n\n if (this.status === InterpreterStatus.NotStarted && this.options.deferEvents) {\n // tslint:disable-next-line:no-console\n if (!IS_PRODUCTION) {\n warn(false, \"\".concat(events.length, \" event(s) were sent to uninitialized service \\\"\").concat(this.machine.id, \"\\\" and are deferred. Make sure .start() is called for this service.\\nEvent: \").concat(JSON.stringify(event)));\n }\n } else if (this.status !== InterpreterStatus.Running) {\n throw new Error( // tslint:disable-next-line:max-line-length\n \"\".concat(events.length, \" event(s) were sent to uninitialized service \\\"\").concat(this.machine.id, \"\\\". Make sure .start() is called for this service, or set { deferEvents: true } in the service options.\"));\n }\n\n this.scheduler.schedule(function () {\n var e_12, _a;\n\n var nextState = _this.state;\n var batchChanged = false;\n var batchedActions = [];\n\n var _loop_1 = function (event_1) {\n var _event = toSCXMLEvent(event_1);\n\n _this.forward(_event);\n\n nextState = provide(_this, function () {\n return _this.machine.transition(nextState, _event);\n });\n batchedActions.push.apply(batchedActions, __spreadArray([], __read(nextState.actions.map(function (a) {\n return bindActionToState(a, nextState);\n })), false));\n batchChanged = batchChanged || !!nextState.changed;\n };\n\n try {\n for (var events_1 = __values(events), events_1_1 = events_1.next(); !events_1_1.done; events_1_1 = events_1.next()) {\n var event_1 = events_1_1.value;\n\n _loop_1(event_1);\n }\n } catch (e_12_1) {\n e_12 = {\n error: e_12_1\n };\n } finally {\n try {\n if (events_1_1 && !events_1_1.done && (_a = events_1.return)) _a.call(events_1);\n } finally {\n if (e_12) throw e_12.error;\n }\n }\n\n nextState.changed = batchChanged;\n nextState.actions = batchedActions;\n\n _this.update(nextState, toSCXMLEvent(events[events.length - 1]));\n });\n };\n /**\r\n * Returns a send function bound to this interpreter instance.\r\n *\r\n * @param event The event to be sent by the sender.\r\n */\n\n\n Interpreter.prototype.sender = function (event) {\n return this.send.bind(this, event);\n };\n /**\r\n * Returns the next state given the interpreter's current state and the event.\r\n *\r\n * This is a pure method that does _not_ update the interpreter's state.\r\n *\r\n * @param event The event to determine the next state\r\n */\n\n\n Interpreter.prototype.nextState = function (event) {\n var _this = this;\n\n var _event = toSCXMLEvent(event);\n\n if (_event.name.indexOf(errorPlatform) === 0 && !this.state.nextEvents.some(function (nextEvent) {\n return nextEvent.indexOf(errorPlatform) === 0;\n })) {\n throw _event.data.data;\n }\n\n var nextState = provide(this, function () {\n return _this.machine.transition(_this.state, _event);\n });\n return nextState;\n };\n\n Interpreter.prototype.forward = function (event) {\n var e_13, _a;\n\n try {\n for (var _b = __values(this.forwardTo), _c = _b.next(); !_c.done; _c = _b.next()) {\n var id = _c.value;\n var child = this.children.get(id);\n\n if (!child) {\n throw new Error(\"Unable to forward event '\".concat(event, \"' from interpreter '\").concat(this.id, \"' to nonexistant child '\").concat(id, \"'.\"));\n }\n\n child.send(event);\n }\n } catch (e_13_1) {\n e_13 = {\n error: e_13_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_13) throw e_13.error;\n }\n }\n };\n\n Interpreter.prototype.defer = function (sendAction) {\n var _this = this;\n\n this.delayedEventsMap[sendAction.id] = this.clock.setTimeout(function () {\n if (sendAction.to) {\n _this.sendTo(sendAction._event, sendAction.to);\n } else {\n _this.send(sendAction._event);\n }\n }, sendAction.delay);\n };\n\n Interpreter.prototype.cancel = function (sendId) {\n this.clock.clearTimeout(this.delayedEventsMap[sendId]);\n delete this.delayedEventsMap[sendId];\n };\n\n Interpreter.prototype.exec = function (action, state, actionFunctionMap) {\n if (actionFunctionMap === void 0) {\n actionFunctionMap = this.machine.options.actions;\n }\n\n var context = state.context,\n _event = state._event;\n var actionOrExec = action.exec || getActionFunction(action.type, actionFunctionMap);\n var exec = isFunction(actionOrExec) ? actionOrExec : actionOrExec ? actionOrExec.exec : action.exec;\n\n if (exec) {\n try {\n return exec(context, _event.data, {\n action: action,\n state: this.state,\n _event: _event\n });\n } catch (err) {\n if (this.parent) {\n this.parent.send({\n type: 'xstate.error',\n data: err\n });\n }\n\n throw err;\n }\n }\n\n switch (action.type) {\n case send:\n var sendAction = action;\n\n if (typeof sendAction.delay === 'number') {\n this.defer(sendAction);\n return;\n } else {\n if (sendAction.to) {\n this.sendTo(sendAction._event, sendAction.to);\n } else {\n this.send(sendAction._event);\n }\n }\n\n break;\n\n case cancel:\n this.cancel(action.sendId);\n break;\n\n case start:\n {\n if (this.status !== InterpreterStatus.Running) {\n return;\n }\n\n var activity = action.activity; // If the activity will be stopped right after it's started\n // (such as in transient states)\n // don't bother starting the activity.\n\n if (!this.state.activities[activity.id || activity.type]) {\n break;\n } // Invoked services\n\n\n if (activity.type === ActionTypes.Invoke) {\n var invokeSource = toInvokeSource(activity.src);\n var serviceCreator = this.machine.options.services ? this.machine.options.services[invokeSource.type] : undefined;\n var id = activity.id,\n data = activity.data;\n\n if (!IS_PRODUCTION) {\n warn(!('forward' in activity), // tslint:disable-next-line:max-line-length\n \"`forward` property is deprecated (found in invocation of '\".concat(activity.src, \"' in in machine '\").concat(this.machine.id, \"'). \") + \"Please use `autoForward` instead.\");\n }\n\n var autoForward = 'autoForward' in activity ? activity.autoForward : !!activity.forward;\n\n if (!serviceCreator) {\n // tslint:disable-next-line:no-console\n if (!IS_PRODUCTION) {\n warn(false, \"No service found for invocation '\".concat(activity.src, \"' in machine '\").concat(this.machine.id, \"'.\"));\n }\n\n return;\n }\n\n var resolvedData = data ? mapContext(data, context, _event) : undefined;\n\n if (typeof serviceCreator === 'string') {\n // TODO: warn\n return;\n }\n\n var source = isFunction(serviceCreator) ? serviceCreator(context, _event.data, {\n data: resolvedData,\n src: invokeSource,\n meta: activity.meta\n }) : serviceCreator;\n\n if (!source) {\n // TODO: warn?\n return;\n }\n\n var options = void 0;\n\n if (isMachine(source)) {\n source = resolvedData ? source.withContext(resolvedData) : source;\n options = {\n autoForward: autoForward\n };\n }\n\n this.spawn(source, id, options);\n } else {\n this.spawnActivity(activity);\n }\n\n break;\n }\n\n case stop:\n {\n this.stopChild(action.activity.id);\n break;\n }\n\n case log:\n var label = action.label,\n value = action.value;\n\n if (label) {\n this.logger(label, value);\n } else {\n this.logger(value);\n }\n\n break;\n\n default:\n if (!IS_PRODUCTION) {\n warn(false, \"No implementation found for action type '\".concat(action.type, \"'\"));\n }\n\n break;\n }\n\n return undefined;\n };\n\n Interpreter.prototype.removeChild = function (childId) {\n var _a;\n\n this.children.delete(childId);\n this.forwardTo.delete(childId); // this.state might not exist at the time this is called,\n // such as when a child is added then removed while initializing the state\n\n (_a = this.state) === null || _a === void 0 ? true : delete _a.children[childId];\n };\n\n Interpreter.prototype.stopChild = function (childId) {\n var child = this.children.get(childId);\n\n if (!child) {\n return;\n }\n\n this.removeChild(childId);\n\n if (isFunction(child.stop)) {\n child.stop();\n }\n };\n\n Interpreter.prototype.spawn = function (entity, name, options) {\n if (isPromiseLike(entity)) {\n return this.spawnPromise(Promise.resolve(entity), name);\n } else if (isFunction(entity)) {\n return this.spawnCallback(entity, name);\n } else if (isSpawnedActor(entity)) {\n return this.spawnActor(entity, name);\n } else if (isObservable(entity)) {\n return this.spawnObservable(entity, name);\n } else if (isMachine(entity)) {\n return this.spawnMachine(entity, __assign(__assign({}, options), {\n id: name\n }));\n } else if (isBehavior(entity)) {\n return this.spawnBehavior(entity, name);\n } else {\n throw new Error(\"Unable to spawn entity \\\"\".concat(name, \"\\\" of type \\\"\").concat(typeof entity, \"\\\".\"));\n }\n };\n\n Interpreter.prototype.spawnMachine = function (machine, options) {\n var _this = this;\n\n if (options === void 0) {\n options = {};\n }\n\n var childService = new Interpreter(machine, __assign(__assign({}, this.options), {\n parent: this,\n id: options.id || machine.id\n }));\n\n var resolvedOptions = __assign(__assign({}, DEFAULT_SPAWN_OPTIONS), options);\n\n if (resolvedOptions.sync) {\n childService.onTransition(function (state) {\n _this.send(update, {\n state: state,\n id: childService.id\n });\n });\n }\n\n var actor = childService;\n this.children.set(childService.id, actor);\n\n if (resolvedOptions.autoForward) {\n this.forwardTo.add(childService.id);\n }\n\n childService.onDone(function (doneEvent) {\n _this.removeChild(childService.id);\n\n _this.send(toSCXMLEvent(doneEvent, {\n origin: childService.id\n }));\n }).start();\n return actor;\n };\n\n Interpreter.prototype.spawnBehavior = function (behavior, id) {\n var actorRef = spawnBehavior(behavior, {\n id: id,\n parent: this\n });\n this.children.set(id, actorRef);\n return actorRef;\n };\n\n Interpreter.prototype.spawnPromise = function (promise, id) {\n var _a;\n\n var _this = this;\n\n var canceled = false;\n var resolvedData;\n promise.then(function (response) {\n if (!canceled) {\n resolvedData = response;\n\n _this.removeChild(id);\n\n _this.send(toSCXMLEvent(doneInvoke(id, response), {\n origin: id\n }));\n }\n }, function (errorData) {\n if (!canceled) {\n _this.removeChild(id);\n\n var errorEvent = error(id, errorData);\n\n try {\n // Send \"error.platform.id\" to this (parent).\n _this.send(toSCXMLEvent(errorEvent, {\n origin: id\n }));\n } catch (error) {\n reportUnhandledExceptionOnInvocation(errorData, error, id);\n\n if (_this.devTools) {\n _this.devTools.send(errorEvent, _this.state);\n }\n\n if (_this.machine.strict) {\n // it would be better to always stop the state machine if unhandled\n // exception/promise rejection happens but because we don't want to\n // break existing code so enforce it on strict mode only especially so\n // because documentation says that onError is optional\n _this.stop();\n }\n }\n }\n });\n var actor = (_a = {\n id: id,\n send: function () {\n return void 0;\n },\n subscribe: function (next, handleError, complete) {\n var observer = toObserver(next, handleError, complete);\n var unsubscribed = false;\n promise.then(function (response) {\n if (unsubscribed) {\n return;\n }\n\n observer.next(response);\n\n if (unsubscribed) {\n return;\n }\n\n observer.complete();\n }, function (err) {\n if (unsubscribed) {\n return;\n }\n\n observer.error(err);\n });\n return {\n unsubscribe: function () {\n return unsubscribed = true;\n }\n };\n },\n stop: function () {\n canceled = true;\n },\n toJSON: function () {\n return {\n id: id\n };\n },\n getSnapshot: function () {\n return resolvedData;\n }\n }, _a[symbolObservable] = function () {\n return this;\n }, _a);\n this.children.set(id, actor);\n return actor;\n };\n\n Interpreter.prototype.spawnCallback = function (callback, id) {\n var _a;\n\n var _this = this;\n\n var canceled = false;\n var receivers = new Set();\n var listeners = new Set();\n var emitted;\n\n var receive = function (e) {\n emitted = e;\n listeners.forEach(function (listener) {\n return listener(e);\n });\n\n if (canceled) {\n return;\n }\n\n _this.send(toSCXMLEvent(e, {\n origin: id\n }));\n };\n\n var callbackStop;\n\n try {\n callbackStop = callback(receive, function (newListener) {\n receivers.add(newListener);\n });\n } catch (err) {\n this.send(error(id, err));\n }\n\n if (isPromiseLike(callbackStop)) {\n // it turned out to be an async function, can't reliably check this before calling `callback`\n // because transpiled async functions are not recognizable\n return this.spawnPromise(callbackStop, id);\n }\n\n var actor = (_a = {\n id: id,\n send: function (event) {\n return receivers.forEach(function (receiver) {\n return receiver(event);\n });\n },\n subscribe: function (next) {\n var observer = toObserver(next);\n listeners.add(observer.next);\n return {\n unsubscribe: function () {\n listeners.delete(observer.next);\n }\n };\n },\n stop: function () {\n canceled = true;\n\n if (isFunction(callbackStop)) {\n callbackStop();\n }\n },\n toJSON: function () {\n return {\n id: id\n };\n },\n getSnapshot: function () {\n return emitted;\n }\n }, _a[symbolObservable] = function () {\n return this;\n }, _a);\n this.children.set(id, actor);\n return actor;\n };\n\n Interpreter.prototype.spawnObservable = function (source, id) {\n var _a;\n\n var _this = this;\n\n var emitted;\n var subscription = source.subscribe(function (value) {\n emitted = value;\n\n _this.send(toSCXMLEvent(value, {\n origin: id\n }));\n }, function (err) {\n _this.removeChild(id);\n\n _this.send(toSCXMLEvent(error(id, err), {\n origin: id\n }));\n }, function () {\n _this.removeChild(id);\n\n _this.send(toSCXMLEvent(doneInvoke(id), {\n origin: id\n }));\n });\n var actor = (_a = {\n id: id,\n send: function () {\n return void 0;\n },\n subscribe: function (next, handleError, complete) {\n return source.subscribe(next, handleError, complete);\n },\n stop: function () {\n return subscription.unsubscribe();\n },\n getSnapshot: function () {\n return emitted;\n },\n toJSON: function () {\n return {\n id: id\n };\n }\n }, _a[symbolObservable] = function () {\n return this;\n }, _a);\n this.children.set(id, actor);\n return actor;\n };\n\n Interpreter.prototype.spawnActor = function (actor, name) {\n this.children.set(name, actor);\n return actor;\n };\n\n Interpreter.prototype.spawnActivity = function (activity) {\n var implementation = this.machine.options && this.machine.options.activities ? this.machine.options.activities[activity.type] : undefined;\n\n if (!implementation) {\n if (!IS_PRODUCTION) {\n warn(false, \"No implementation found for activity '\".concat(activity.type, \"'\"));\n } // tslint:disable-next-line:no-console\n\n\n return;\n } // Start implementation\n\n\n var dispose = implementation(this.state.context, activity);\n this.spawnEffect(activity.id, dispose);\n };\n\n Interpreter.prototype.spawnEffect = function (id, dispose) {\n var _a;\n\n this.children.set(id, (_a = {\n id: id,\n send: function () {\n return void 0;\n },\n subscribe: function () {\n return {\n unsubscribe: function () {\n return void 0;\n }\n };\n },\n stop: dispose || undefined,\n getSnapshot: function () {\n return undefined;\n },\n toJSON: function () {\n return {\n id: id\n };\n }\n }, _a[symbolObservable] = function () {\n return this;\n }, _a));\n };\n\n Interpreter.prototype.attachDev = function () {\n var global = getGlobal();\n\n if (this.options.devTools && global) {\n if (global.__REDUX_DEVTOOLS_EXTENSION__) {\n var devToolsOptions = typeof this.options.devTools === 'object' ? this.options.devTools : undefined;\n this.devTools = global.__REDUX_DEVTOOLS_EXTENSION__.connect(__assign(__assign({\n name: this.id,\n autoPause: true,\n stateSanitizer: function (state) {\n return {\n value: state.value,\n context: state.context,\n actions: state.actions\n };\n }\n }, devToolsOptions), {\n features: __assign({\n jump: false,\n skip: false\n }, devToolsOptions ? devToolsOptions.features : undefined)\n }), this.machine);\n this.devTools.init(this.state);\n } // add XState-specific dev tooling hook\n\n\n registerService(this);\n }\n };\n\n Interpreter.prototype.toJSON = function () {\n return {\n id: this.id\n };\n };\n\n Interpreter.prototype[symbolObservable] = function () {\n return this;\n };\n\n Interpreter.prototype.getSnapshot = function () {\n if (this.status === InterpreterStatus.NotStarted) {\n return this.initialState;\n }\n\n return this._state;\n };\n /**\r\n * The default interpreter options:\r\n *\r\n * - `clock` uses the global `setTimeout` and `clearTimeout` functions\r\n * - `logger` uses the global `console.log()` method\r\n */\n\n\n Interpreter.defaultOptions = {\n execute: true,\n deferEvents: true,\n clock: {\n setTimeout: function (fn, ms) {\n return setTimeout(fn, ms);\n },\n clearTimeout: function (id) {\n return clearTimeout(id);\n }\n },\n logger: /*#__PURE__*/console.log.bind(console),\n devTools: false\n };\n Interpreter.interpret = interpret;\n return Interpreter;\n}();\n\nvar resolveSpawnOptions = function (nameOrOptions) {\n if (isString(nameOrOptions)) {\n return __assign(__assign({}, DEFAULT_SPAWN_OPTIONS), {\n name: nameOrOptions\n });\n }\n\n return __assign(__assign(__assign({}, DEFAULT_SPAWN_OPTIONS), {\n name: uniqueId()\n }), nameOrOptions);\n};\n\nfunction spawn(entity, nameOrOptions) {\n var resolvedOptions = resolveSpawnOptions(nameOrOptions);\n return consume(function (service) {\n if (!IS_PRODUCTION) {\n var isLazyEntity = isMachine(entity) || isFunction(entity);\n warn(!!service || isLazyEntity, \"Attempted to spawn an Actor (ID: \\\"\".concat(isMachine(entity) ? entity.id : 'undefined', \"\\\") outside of a service. This will have no effect.\"));\n }\n\n if (service) {\n return service.spawn(entity, resolvedOptions.name, resolvedOptions);\n } else {\n return createDeferredActor(entity, resolvedOptions.name);\n }\n });\n}\n/**\r\n * Creates a new Interpreter instance for the given machine with the provided options, if any.\r\n *\r\n * @param machine The machine to interpret\r\n * @param options Interpreter options\r\n */\n\nfunction interpret(machine, options) {\n var interpreter = new Interpreter(machine, options);\n return interpreter;\n}\n\nexport { Interpreter, InterpreterStatus, interpret, spawn };\n", "import { __assign, __rest } from './_virtual/_tslib.js';\nimport './types.js';\nimport { invoke } from './actionTypes.js';\nimport './utils.js';\nimport './environment.js';\n\nfunction toInvokeSource(src) {\n if (typeof src === 'string') {\n var simpleSrc = {\n type: src\n };\n\n simpleSrc.toString = function () {\n return src;\n }; // v4 compat - TODO: remove in v5\n\n\n return simpleSrc;\n }\n\n return src;\n}\nfunction toInvokeDefinition(invokeConfig) {\n return __assign(__assign({\n type: invoke\n }, invokeConfig), {\n toJSON: function () {\n invokeConfig.onDone;\n invokeConfig.onError;\n var invokeDef = __rest(invokeConfig, [\"onDone\", \"onError\"]);\n\n return __assign(__assign({}, invokeDef), {\n type: invoke,\n src: toInvokeSource(invokeConfig.src)\n });\n }\n });\n}\n\nexport { toInvokeDefinition, toInvokeSource };\n", "import { __assign, __spreadArray, __read, __values, __rest } from './_virtual/_tslib.js';\nimport { isFunction, mapValues, isArray, flatten, toArray, toStateValue, isString, getEventType, toSCXMLEvent, matchesState, path, evaluateGuard, mapContext, pathToStateValue, isBuiltInEvent, partition, updateHistoryValue, toStatePath, mapFilterValues, warn, toStatePaths, nestedPath, normalizeTarget, toGuard, toTransitionConfigArray, isMachine, createInvokeId } from './utils.js';\nimport { SpecialTargets } from './types.js';\nimport { State, stateValuesEqual } from './State.js';\nimport { start as start$1, stop as stop$1, raise as raise$1, send, invoke, update, nullEvent } from './actionTypes.js';\nimport { done, start, raise, stop, toActionObjects, resolveActions, doneInvoke, error, toActionObject, toActivityDefinition, after, send as send$1, cancel, initEvent } from './actions.js';\nimport { IS_PRODUCTION } from './environment.js';\nimport { STATE_DELIMITER } from './constants.js';\nimport { getAllStateNodes, getConfiguration, isInFinalState, getTagsFromConfiguration, has, getChildren, getValue, isLeafNode } from './stateUtils.js';\nimport { createInvocableActor } from './Actor.js';\nimport { toInvokeDefinition } from './invokeUtils.js';\n\nvar NULL_EVENT = '';\nvar STATE_IDENTIFIER = '#';\nvar WILDCARD = '*';\nvar EMPTY_OBJECT = {};\n\nvar isStateId = function (str) {\n return str[0] === STATE_IDENTIFIER;\n};\n\nvar createDefaultOptions = function () {\n return {\n actions: {},\n guards: {},\n services: {},\n activities: {},\n delays: {}\n };\n};\n\nvar validateArrayifiedTransitions = function (stateNode, event, transitions) {\n var hasNonLastUnguardedTarget = transitions.slice(0, -1).some(function (transition) {\n return !('cond' in transition) && !('in' in transition) && (isString(transition.target) || isMachine(transition.target));\n });\n var eventText = event === NULL_EVENT ? 'the transient event' : \"event '\".concat(event, \"'\");\n warn(!hasNonLastUnguardedTarget, \"One or more transitions for \".concat(eventText, \" on state '\").concat(stateNode.id, \"' are unreachable. \") + \"Make sure that the default transition is the last one defined.\");\n};\n\nvar StateNode =\n/*#__PURE__*/\n\n/** @class */\nfunction () {\n function StateNode(\n /**\r\n * The raw config used to create the machine.\r\n */\n config, options,\n /**\r\n * The initial extended state\r\n */\n _context, // TODO: this is unsafe, but we're removing it in v5 anyway\n _stateInfo) {\n var _this = this;\n\n if (_context === void 0) {\n _context = 'context' in config ? config.context : undefined;\n }\n\n var _a;\n\n this.config = config;\n this._context = _context;\n /**\r\n * The order this state node appears. Corresponds to the implicit SCXML document order.\r\n */\n\n this.order = -1;\n this.__xstatenode = true;\n this.__cache = {\n events: undefined,\n relativeValue: new Map(),\n initialStateValue: undefined,\n initialState: undefined,\n on: undefined,\n transitions: undefined,\n candidates: {},\n delayedTransitions: undefined\n };\n this.idMap = {};\n this.tags = [];\n this.options = Object.assign(createDefaultOptions(), options);\n this.parent = _stateInfo === null || _stateInfo === void 0 ? void 0 : _stateInfo.parent;\n this.key = this.config.key || (_stateInfo === null || _stateInfo === void 0 ? void 0 : _stateInfo.key) || this.config.id || '(machine)';\n this.machine = this.parent ? this.parent.machine : this;\n this.path = this.parent ? this.parent.path.concat(this.key) : [];\n this.delimiter = this.config.delimiter || (this.parent ? this.parent.delimiter : STATE_DELIMITER);\n this.id = this.config.id || __spreadArray([this.machine.key], __read(this.path), false).join(this.delimiter);\n this.version = this.parent ? this.parent.version : this.config.version;\n this.type = this.config.type || (this.config.parallel ? 'parallel' : this.config.states && Object.keys(this.config.states).length ? 'compound' : this.config.history ? 'history' : 'atomic');\n this.schema = this.parent ? this.machine.schema : (_a = this.config.schema) !== null && _a !== void 0 ? _a : {};\n this.description = this.config.description;\n\n if (!IS_PRODUCTION) {\n warn(!('parallel' in this.config), \"The \\\"parallel\\\" property is deprecated and will be removed in version 4.1. \".concat(this.config.parallel ? \"Replace with `type: 'parallel'`\" : \"Use `type: '\".concat(this.type, \"'`\"), \" in the config for state node '\").concat(this.id, \"' instead.\"));\n }\n\n this.initial = this.config.initial;\n this.states = this.config.states ? mapValues(this.config.states, function (stateConfig, key) {\n var _a;\n\n var stateNode = new StateNode(stateConfig, {}, undefined, {\n parent: _this,\n key: key\n });\n Object.assign(_this.idMap, __assign((_a = {}, _a[stateNode.id] = stateNode, _a), stateNode.idMap));\n return stateNode;\n }) : EMPTY_OBJECT; // Document order\n\n var order = 0;\n\n function dfs(stateNode) {\n var e_1, _a;\n\n stateNode.order = order++;\n\n try {\n for (var _b = __values(getChildren(stateNode)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var child = _c.value;\n dfs(child);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n }\n\n dfs(this); // History config\n\n this.history = this.config.history === true ? 'shallow' : this.config.history || false;\n this._transient = !!this.config.always || (!this.config.on ? false : Array.isArray(this.config.on) ? this.config.on.some(function (_a) {\n var event = _a.event;\n return event === NULL_EVENT;\n }) : NULL_EVENT in this.config.on);\n this.strict = !!this.config.strict; // TODO: deprecate (entry)\n\n this.onEntry = toArray(this.config.entry || this.config.onEntry).map(function (action) {\n return toActionObject(action);\n }); // TODO: deprecate (exit)\n\n this.onExit = toArray(this.config.exit || this.config.onExit).map(function (action) {\n return toActionObject(action);\n });\n this.meta = this.config.meta;\n this.doneData = this.type === 'final' ? this.config.data : undefined;\n this.invoke = toArray(this.config.invoke).map(function (invokeConfig, i) {\n var _a, _b;\n\n if (isMachine(invokeConfig)) {\n var invokeId = createInvokeId(_this.id, i);\n _this.machine.options.services = __assign((_a = {}, _a[invokeId] = invokeConfig, _a), _this.machine.options.services);\n return toInvokeDefinition({\n src: invokeId,\n id: invokeId\n });\n } else if (isString(invokeConfig.src)) {\n var invokeId = invokeConfig.id || createInvokeId(_this.id, i);\n return toInvokeDefinition(__assign(__assign({}, invokeConfig), {\n id: invokeId,\n src: invokeConfig.src\n }));\n } else if (isMachine(invokeConfig.src) || isFunction(invokeConfig.src)) {\n var invokeId = invokeConfig.id || createInvokeId(_this.id, i);\n _this.machine.options.services = __assign((_b = {}, _b[invokeId] = invokeConfig.src, _b), _this.machine.options.services);\n return toInvokeDefinition(__assign(__assign({\n id: invokeId\n }, invokeConfig), {\n src: invokeId\n }));\n } else {\n var invokeSource = invokeConfig.src;\n return toInvokeDefinition(__assign(__assign({\n id: createInvokeId(_this.id, i)\n }, invokeConfig), {\n src: invokeSource\n }));\n }\n });\n this.activities = toArray(this.config.activities).concat(this.invoke).map(function (activity) {\n return toActivityDefinition(activity);\n });\n this.transition = this.transition.bind(this);\n this.tags = toArray(this.config.tags); // TODO: this is the real fix for initialization once\n // state node getters are deprecated\n // if (!this.parent) {\n // this._init();\n // }\n }\n\n StateNode.prototype._init = function () {\n if (this.__cache.transitions) {\n return;\n }\n\n getAllStateNodes(this).forEach(function (stateNode) {\n return stateNode.on;\n });\n };\n /**\r\n * Clones this state machine with custom options and context.\r\n *\r\n * @param options Options (actions, guards, activities, services) to recursively merge with the existing options.\r\n * @param context Custom context (will override predefined context)\r\n */\n\n\n StateNode.prototype.withConfig = function (options, context) {\n var _a = this.options,\n actions = _a.actions,\n activities = _a.activities,\n guards = _a.guards,\n services = _a.services,\n delays = _a.delays;\n return new StateNode(this.config, {\n actions: __assign(__assign({}, actions), options.actions),\n activities: __assign(__assign({}, activities), options.activities),\n guards: __assign(__assign({}, guards), options.guards),\n services: __assign(__assign({}, services), options.services),\n delays: __assign(__assign({}, delays), options.delays)\n }, context !== null && context !== void 0 ? context : this.context);\n };\n /**\r\n * Clones this state machine with custom context.\r\n *\r\n * @param context Custom context (will override predefined context, not recursive)\r\n */\n\n\n StateNode.prototype.withContext = function (context) {\n return new StateNode(this.config, this.options, context);\n };\n\n Object.defineProperty(StateNode.prototype, \"context\", {\n get: function () {\n return isFunction(this._context) ? this._context() : this._context;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(StateNode.prototype, \"definition\", {\n /**\r\n * The well-structured state node definition.\r\n */\n get: function () {\n return {\n id: this.id,\n key: this.key,\n version: this.version,\n context: this.context,\n type: this.type,\n initial: this.initial,\n history: this.history,\n states: mapValues(this.states, function (state) {\n return state.definition;\n }),\n on: this.on,\n transitions: this.transitions,\n entry: this.onEntry,\n exit: this.onExit,\n activities: this.activities || [],\n meta: this.meta,\n order: this.order || -1,\n data: this.doneData,\n invoke: this.invoke,\n description: this.description,\n tags: this.tags\n };\n },\n enumerable: false,\n configurable: true\n });\n\n StateNode.prototype.toJSON = function () {\n return this.definition;\n };\n\n Object.defineProperty(StateNode.prototype, \"on\", {\n /**\r\n * The mapping of events to transitions.\r\n */\n get: function () {\n if (this.__cache.on) {\n return this.__cache.on;\n }\n\n var transitions = this.transitions;\n return this.__cache.on = transitions.reduce(function (map, transition) {\n map[transition.eventType] = map[transition.eventType] || [];\n map[transition.eventType].push(transition);\n return map;\n }, {});\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(StateNode.prototype, \"after\", {\n get: function () {\n return this.__cache.delayedTransitions || (this.__cache.delayedTransitions = this.getDelayedTransitions(), this.__cache.delayedTransitions);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(StateNode.prototype, \"transitions\", {\n /**\r\n * All the transitions that can be taken from this state node.\r\n */\n get: function () {\n return this.__cache.transitions || (this.__cache.transitions = this.formatTransitions(), this.__cache.transitions);\n },\n enumerable: false,\n configurable: true\n });\n\n StateNode.prototype.getCandidates = function (eventName) {\n if (this.__cache.candidates[eventName]) {\n return this.__cache.candidates[eventName];\n }\n\n var transient = eventName === NULL_EVENT;\n var candidates = this.transitions.filter(function (transition) {\n var sameEventType = transition.eventType === eventName; // null events should only match against eventless transitions\n\n return transient ? sameEventType : sameEventType || transition.eventType === WILDCARD;\n });\n this.__cache.candidates[eventName] = candidates;\n return candidates;\n };\n /**\r\n * All delayed transitions from the config.\r\n */\n\n\n StateNode.prototype.getDelayedTransitions = function () {\n var _this = this;\n\n var afterConfig = this.config.after;\n\n if (!afterConfig) {\n return [];\n }\n\n var mutateEntryExit = function (delay, i) {\n var delayRef = isFunction(delay) ? \"\".concat(_this.id, \":delay[\").concat(i, \"]\") : delay;\n var eventType = after(delayRef, _this.id);\n\n _this.onEntry.push(send$1(eventType, {\n delay: delay\n }));\n\n _this.onExit.push(cancel(eventType));\n\n return eventType;\n };\n\n var delayedTransitions = isArray(afterConfig) ? afterConfig.map(function (transition, i) {\n var eventType = mutateEntryExit(transition.delay, i);\n return __assign(__assign({}, transition), {\n event: eventType\n });\n }) : flatten(Object.keys(afterConfig).map(function (delay, i) {\n var configTransition = afterConfig[delay];\n var resolvedTransition = isString(configTransition) ? {\n target: configTransition\n } : configTransition;\n var resolvedDelay = !isNaN(+delay) ? +delay : delay;\n var eventType = mutateEntryExit(resolvedDelay, i);\n return toArray(resolvedTransition).map(function (transition) {\n return __assign(__assign({}, transition), {\n event: eventType,\n delay: resolvedDelay\n });\n });\n }));\n return delayedTransitions.map(function (delayedTransition) {\n var delay = delayedTransition.delay;\n return __assign(__assign({}, _this.formatTransition(delayedTransition)), {\n delay: delay\n });\n });\n };\n /**\r\n * Returns the state nodes represented by the current state value.\r\n *\r\n * @param state The state value or State instance\r\n */\n\n\n StateNode.prototype.getStateNodes = function (state) {\n var _a;\n\n var _this = this;\n\n if (!state) {\n return [];\n }\n\n var stateValue = state instanceof State ? state.value : toStateValue(state, this.delimiter);\n\n if (isString(stateValue)) {\n var initialStateValue = this.getStateNode(stateValue).initial;\n return initialStateValue !== undefined ? this.getStateNodes((_a = {}, _a[stateValue] = initialStateValue, _a)) : [this, this.states[stateValue]];\n }\n\n var subStateKeys = Object.keys(stateValue);\n var subStateNodes = [this];\n subStateNodes.push.apply(subStateNodes, __spreadArray([], __read(flatten(subStateKeys.map(function (subStateKey) {\n return _this.getStateNode(subStateKey).getStateNodes(stateValue[subStateKey]);\n }))), false));\n return subStateNodes;\n };\n /**\r\n * Returns `true` if this state node explicitly handles the given event.\r\n *\r\n * @param event The event in question\r\n */\n\n\n StateNode.prototype.handles = function (event) {\n var eventType = getEventType(event);\n return this.events.includes(eventType);\n };\n /**\r\n * Resolves the given `state` to a new `State` instance relative to this machine.\r\n *\r\n * This ensures that `.events` and `.nextEvents` represent the correct values.\r\n *\r\n * @param state The state to resolve\r\n */\n\n\n StateNode.prototype.resolveState = function (state) {\n var stateFromConfig = state instanceof State ? state : State.create(state);\n var configuration = Array.from(getConfiguration([], this.getStateNodes(stateFromConfig.value)));\n return new State(__assign(__assign({}, stateFromConfig), {\n value: this.resolve(stateFromConfig.value),\n configuration: configuration,\n done: isInFinalState(configuration, this),\n tags: getTagsFromConfiguration(configuration),\n machine: this.machine\n }));\n };\n\n StateNode.prototype.transitionLeafNode = function (stateValue, state, _event) {\n var stateNode = this.getStateNode(stateValue);\n var next = stateNode.next(state, _event);\n\n if (!next || !next.transitions.length) {\n return this.next(state, _event);\n }\n\n return next;\n };\n\n StateNode.prototype.transitionCompoundNode = function (stateValue, state, _event) {\n var subStateKeys = Object.keys(stateValue);\n var stateNode = this.getStateNode(subStateKeys[0]);\n\n var next = stateNode._transition(stateValue[subStateKeys[0]], state, _event);\n\n if (!next || !next.transitions.length) {\n return this.next(state, _event);\n }\n\n return next;\n };\n\n StateNode.prototype.transitionParallelNode = function (stateValue, state, _event) {\n var e_2, _a;\n\n var transitionMap = {};\n\n try {\n for (var _b = __values(Object.keys(stateValue)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var subStateKey = _c.value;\n var subStateValue = stateValue[subStateKey];\n\n if (!subStateValue) {\n continue;\n }\n\n var subStateNode = this.getStateNode(subStateKey);\n\n var next = subStateNode._transition(subStateValue, state, _event);\n\n if (next) {\n transitionMap[subStateKey] = next;\n }\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n\n var stateTransitions = Object.keys(transitionMap).map(function (key) {\n return transitionMap[key];\n });\n var enabledTransitions = flatten(stateTransitions.map(function (st) {\n return st.transitions;\n }));\n var willTransition = stateTransitions.some(function (st) {\n return st.transitions.length > 0;\n });\n\n if (!willTransition) {\n return this.next(state, _event);\n }\n\n var entryNodes = flatten(stateTransitions.map(function (t) {\n return t.entrySet;\n }));\n var configuration = flatten(Object.keys(transitionMap).map(function (key) {\n return transitionMap[key].configuration;\n }));\n return {\n transitions: enabledTransitions,\n entrySet: entryNodes,\n exitSet: flatten(stateTransitions.map(function (t) {\n return t.exitSet;\n })),\n configuration: configuration,\n source: state,\n actions: flatten(Object.keys(transitionMap).map(function (key) {\n return transitionMap[key].actions;\n }))\n };\n };\n\n StateNode.prototype._transition = function (stateValue, state, _event) {\n // leaf node\n if (isString(stateValue)) {\n return this.transitionLeafNode(stateValue, state, _event);\n } // hierarchical node\n\n\n if (Object.keys(stateValue).length === 1) {\n return this.transitionCompoundNode(stateValue, state, _event);\n } // orthogonal node\n\n\n return this.transitionParallelNode(stateValue, state, _event);\n };\n\n StateNode.prototype.getTransitionData = function (state, event) {\n return this._transition(state.value, state, toSCXMLEvent(event));\n };\n\n StateNode.prototype.next = function (state, _event) {\n var e_3, _a;\n\n var _this = this;\n\n var eventName = _event.name;\n var actions = [];\n var nextStateNodes = [];\n var selectedTransition;\n\n try {\n for (var _b = __values(this.getCandidates(eventName)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var candidate = _c.value;\n var cond = candidate.cond,\n stateIn = candidate.in;\n var resolvedContext = state.context;\n var isInState = stateIn ? isString(stateIn) && isStateId(stateIn) ? // Check if in state by ID\n state.matches(toStateValue(this.getStateNodeById(stateIn).path, this.delimiter)) : // Check if in state by relative grandparent\n matchesState(toStateValue(stateIn, this.delimiter), path(this.path.slice(0, -2))(state.value)) : true;\n var guardPassed = false;\n\n try {\n guardPassed = !cond || evaluateGuard(this.machine, cond, resolvedContext, _event, state);\n } catch (err) {\n throw new Error(\"Unable to evaluate guard '\".concat(cond.name || cond.type, \"' in transition for event '\").concat(eventName, \"' in state node '\").concat(this.id, \"':\\n\").concat(err.message));\n }\n\n if (guardPassed && isInState) {\n if (candidate.target !== undefined) {\n nextStateNodes = candidate.target;\n }\n\n actions.push.apply(actions, __spreadArray([], __read(candidate.actions), false));\n selectedTransition = candidate;\n break;\n }\n }\n } catch (e_3_1) {\n e_3 = {\n error: e_3_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_3) throw e_3.error;\n }\n }\n\n if (!selectedTransition) {\n return undefined;\n }\n\n if (!nextStateNodes.length) {\n return {\n transitions: [selectedTransition],\n entrySet: [],\n exitSet: [],\n configuration: state.value ? [this] : [],\n source: state,\n actions: actions\n };\n }\n\n var allNextStateNodes = flatten(nextStateNodes.map(function (stateNode) {\n return _this.getRelativeStateNodes(stateNode, state.historyValue);\n }));\n var isInternal = !!selectedTransition.internal;\n var reentryNodes = isInternal ? [] : flatten(allNextStateNodes.map(function (n) {\n return _this.nodesFromChild(n);\n }));\n return {\n transitions: [selectedTransition],\n entrySet: reentryNodes,\n exitSet: isInternal ? [] : [this],\n configuration: allNextStateNodes,\n source: state,\n actions: actions\n };\n };\n\n StateNode.prototype.nodesFromChild = function (childStateNode) {\n if (childStateNode.escapes(this)) {\n return [];\n }\n\n var nodes = [];\n var marker = childStateNode;\n\n while (marker && marker !== this) {\n nodes.push(marker);\n marker = marker.parent;\n }\n\n nodes.push(this); // inclusive\n\n return nodes;\n };\n /**\r\n * Whether the given state node \"escapes\" this state node. If the `stateNode` is equal to or the parent of\r\n * this state node, it does not escape.\r\n */\n\n\n StateNode.prototype.escapes = function (stateNode) {\n if (this === stateNode) {\n return false;\n }\n\n var parent = this.parent;\n\n while (parent) {\n if (parent === stateNode) {\n return false;\n }\n\n parent = parent.parent;\n }\n\n return true;\n };\n\n StateNode.prototype.getActions = function (transition, currentContext, _event, prevState) {\n var e_4, _a, e_5, _b;\n\n var prevConfig = getConfiguration([], prevState ? this.getStateNodes(prevState.value) : [this]);\n var resolvedConfig = transition.configuration.length ? getConfiguration(prevConfig, transition.configuration) : prevConfig;\n\n try {\n for (var resolvedConfig_1 = __values(resolvedConfig), resolvedConfig_1_1 = resolvedConfig_1.next(); !resolvedConfig_1_1.done; resolvedConfig_1_1 = resolvedConfig_1.next()) {\n var sn = resolvedConfig_1_1.value;\n\n if (!has(prevConfig, sn)) {\n transition.entrySet.push(sn);\n }\n }\n } catch (e_4_1) {\n e_4 = {\n error: e_4_1\n };\n } finally {\n try {\n if (resolvedConfig_1_1 && !resolvedConfig_1_1.done && (_a = resolvedConfig_1.return)) _a.call(resolvedConfig_1);\n } finally {\n if (e_4) throw e_4.error;\n }\n }\n\n try {\n for (var prevConfig_1 = __values(prevConfig), prevConfig_1_1 = prevConfig_1.next(); !prevConfig_1_1.done; prevConfig_1_1 = prevConfig_1.next()) {\n var sn = prevConfig_1_1.value;\n\n if (!has(resolvedConfig, sn) || has(transition.exitSet, sn.parent)) {\n transition.exitSet.push(sn);\n }\n }\n } catch (e_5_1) {\n e_5 = {\n error: e_5_1\n };\n } finally {\n try {\n if (prevConfig_1_1 && !prevConfig_1_1.done && (_b = prevConfig_1.return)) _b.call(prevConfig_1);\n } finally {\n if (e_5) throw e_5.error;\n }\n }\n\n var doneEvents = flatten(transition.entrySet.map(function (sn) {\n var events = [];\n\n if (sn.type !== 'final') {\n return events;\n }\n\n var parent = sn.parent;\n\n if (!parent.parent) {\n return events;\n }\n\n events.push(done(sn.id, sn.doneData), // TODO: deprecate - final states should not emit done events for their own state.\n done(parent.id, sn.doneData ? mapContext(sn.doneData, currentContext, _event) : undefined));\n var grandparent = parent.parent;\n\n if (grandparent.type === 'parallel') {\n if (getChildren(grandparent).every(function (parentNode) {\n return isInFinalState(transition.configuration, parentNode);\n })) {\n events.push(done(grandparent.id));\n }\n }\n\n return events;\n }));\n transition.exitSet.sort(function (a, b) {\n return b.order - a.order;\n });\n transition.entrySet.sort(function (a, b) {\n return a.order - b.order;\n });\n var entryStates = new Set(transition.entrySet);\n var exitStates = new Set(transition.exitSet);\n\n var _c = __read([flatten(Array.from(entryStates).map(function (stateNode) {\n return __spreadArray(__spreadArray([], __read(stateNode.activities.map(function (activity) {\n return start(activity);\n })), false), __read(stateNode.onEntry), false);\n })).concat(doneEvents.map(raise)), flatten(Array.from(exitStates).map(function (stateNode) {\n return __spreadArray(__spreadArray([], __read(stateNode.onExit), false), __read(stateNode.activities.map(function (activity) {\n return stop(activity);\n })), false);\n }))], 2),\n entryActions = _c[0],\n exitActions = _c[1];\n\n var actions = toActionObjects(exitActions.concat(transition.actions).concat(entryActions), this.machine.options.actions);\n return actions;\n };\n /**\r\n * Determines the next state given the current `state` and sent `event`.\r\n *\r\n * @param state The current State instance or state value\r\n * @param event The event that was sent at the current state\r\n * @param context The current context (extended state) of the current state\r\n */\n\n\n StateNode.prototype.transition = function (state, event, context) {\n if (state === void 0) {\n state = this.initialState;\n }\n\n var _event = toSCXMLEvent(event);\n\n var currentState;\n\n if (state instanceof State) {\n currentState = context === undefined ? state : this.resolveState(State.from(state, context));\n } else {\n var resolvedStateValue = isString(state) ? this.resolve(pathToStateValue(this.getResolvedPath(state))) : this.resolve(state);\n var resolvedContext = context !== null && context !== void 0 ? context : this.machine.context;\n currentState = this.resolveState(State.from(resolvedStateValue, resolvedContext));\n }\n\n if (!IS_PRODUCTION && _event.name === WILDCARD) {\n throw new Error(\"An event cannot have the wildcard type ('\".concat(WILDCARD, \"')\"));\n }\n\n if (this.strict) {\n if (!this.events.includes(_event.name) && !isBuiltInEvent(_event.name)) {\n throw new Error(\"Machine '\".concat(this.id, \"' does not accept event '\").concat(_event.name, \"'\"));\n }\n }\n\n var stateTransition = this._transition(currentState.value, currentState, _event) || {\n transitions: [],\n configuration: [],\n entrySet: [],\n exitSet: [],\n source: currentState,\n actions: []\n };\n var prevConfig = getConfiguration([], this.getStateNodes(currentState.value));\n var resolvedConfig = stateTransition.configuration.length ? getConfiguration(prevConfig, stateTransition.configuration) : prevConfig;\n stateTransition.configuration = __spreadArray([], __read(resolvedConfig), false);\n return this.resolveTransition(stateTransition, currentState, currentState.context, _event);\n };\n\n StateNode.prototype.resolveRaisedTransition = function (state, _event, originalEvent) {\n var _a;\n\n var currentActions = state.actions;\n state = this.transition(state, _event); // Save original event to state\n // TODO: this should be the raised event! Delete in V5 (breaking)\n\n state._event = originalEvent;\n state.event = originalEvent.data;\n\n (_a = state.actions).unshift.apply(_a, __spreadArray([], __read(currentActions), false));\n\n return state;\n };\n\n StateNode.prototype.resolveTransition = function (stateTransition, currentState, context, _event) {\n var e_6, _a;\n\n var _this = this;\n\n if (_event === void 0) {\n _event = initEvent;\n }\n\n var configuration = stateTransition.configuration; // Transition will \"apply\" if:\n // - this is the initial state (there is no current state)\n // - OR there are transitions\n\n var willTransition = !currentState || stateTransition.transitions.length > 0;\n var resolvedStateValue = willTransition ? getValue(this.machine, configuration) : undefined;\n var historyValue = currentState ? currentState.historyValue ? currentState.historyValue : stateTransition.source ? this.machine.historyValue(currentState.value) : undefined : undefined;\n var actions = this.getActions(stateTransition, context, _event, currentState);\n var activities = currentState ? __assign({}, currentState.activities) : {};\n\n try {\n for (var actions_1 = __values(actions), actions_1_1 = actions_1.next(); !actions_1_1.done; actions_1_1 = actions_1.next()) {\n var action = actions_1_1.value;\n\n if (action.type === start$1) {\n activities[action.activity.id || action.activity.type] = action;\n } else if (action.type === stop$1) {\n activities[action.activity.id || action.activity.type] = false;\n }\n }\n } catch (e_6_1) {\n e_6 = {\n error: e_6_1\n };\n } finally {\n try {\n if (actions_1_1 && !actions_1_1.done && (_a = actions_1.return)) _a.call(actions_1);\n } finally {\n if (e_6) throw e_6.error;\n }\n }\n\n var _b = __read(resolveActions(this, currentState, context, _event, actions, this.machine.config.preserveActionOrder), 2),\n resolvedActions = _b[0],\n updatedContext = _b[1];\n\n var _c = __read(partition(resolvedActions, function (action) {\n return action.type === raise$1 || action.type === send && action.to === SpecialTargets.Internal;\n }), 2),\n raisedEvents = _c[0],\n nonRaisedActions = _c[1];\n\n var invokeActions = resolvedActions.filter(function (action) {\n var _a;\n\n return action.type === start$1 && ((_a = action.activity) === null || _a === void 0 ? void 0 : _a.type) === invoke;\n });\n var children = invokeActions.reduce(function (acc, action) {\n acc[action.activity.id] = createInvocableActor(action.activity, _this.machine, updatedContext, _event);\n return acc;\n }, currentState ? __assign({}, currentState.children) : {});\n var resolvedConfiguration = willTransition ? stateTransition.configuration : currentState ? currentState.configuration : [];\n var isDone = isInFinalState(resolvedConfiguration, this);\n var nextState = new State({\n value: resolvedStateValue || currentState.value,\n context: updatedContext,\n _event: _event,\n // Persist _sessionid between states\n _sessionid: currentState ? currentState._sessionid : null,\n historyValue: resolvedStateValue ? historyValue ? updateHistoryValue(historyValue, resolvedStateValue) : undefined : currentState ? currentState.historyValue : undefined,\n history: !resolvedStateValue || stateTransition.source ? currentState : undefined,\n actions: resolvedStateValue ? nonRaisedActions : [],\n activities: resolvedStateValue ? activities : currentState ? currentState.activities : {},\n events: [],\n configuration: resolvedConfiguration,\n transitions: stateTransition.transitions,\n children: children,\n done: isDone,\n tags: currentState === null || currentState === void 0 ? void 0 : currentState.tags,\n machine: this\n });\n var didUpdateContext = context !== updatedContext;\n nextState.changed = _event.name === update || didUpdateContext; // Dispose of penultimate histories to prevent memory leaks\n\n var history = nextState.history;\n\n if (history) {\n delete history.history;\n } // There are transient transitions if the machine is not in a final state\n // and if some of the state nodes have transient (\"always\") transitions.\n\n\n var isTransient = !isDone && (this._transient || configuration.some(function (stateNode) {\n return stateNode._transient;\n })); // If there are no enabled transitions, check if there are transient transitions.\n // If there are transient transitions, continue checking for more transitions\n // because an transient transition should be triggered even if there are no\n // enabled transitions.\n //\n // If we're already working on an transient transition (by checking\n // if the event is a NULL_EVENT), then stop to prevent an infinite loop.\n //\n // Otherwise, if there are no enabled nor transient transitions, we are done.\n\n if (!willTransition && (!isTransient || _event.name === NULL_EVENT)) {\n return nextState;\n }\n\n var maybeNextState = nextState;\n\n if (!isDone) {\n if (isTransient) {\n maybeNextState = this.resolveRaisedTransition(maybeNextState, {\n type: nullEvent\n }, _event);\n }\n\n while (raisedEvents.length) {\n var raisedEvent = raisedEvents.shift();\n maybeNextState = this.resolveRaisedTransition(maybeNextState, raisedEvent._event, _event);\n }\n } // Detect if state changed\n\n\n var changed = maybeNextState.changed || (history ? !!maybeNextState.actions.length || didUpdateContext || typeof history.value !== typeof maybeNextState.value || !stateValuesEqual(maybeNextState.value, history.value) : undefined);\n maybeNextState.changed = changed; // Preserve original history after raised events\n\n maybeNextState.history = history;\n maybeNextState.tags = getTagsFromConfiguration(maybeNextState.configuration);\n return maybeNextState;\n };\n /**\r\n * Returns the child state node from its relative `stateKey`, or throws.\r\n */\n\n\n StateNode.prototype.getStateNode = function (stateKey) {\n if (isStateId(stateKey)) {\n return this.machine.getStateNodeById(stateKey);\n }\n\n if (!this.states) {\n throw new Error(\"Unable to retrieve child state '\".concat(stateKey, \"' from '\").concat(this.id, \"'; no child states exist.\"));\n }\n\n var result = this.states[stateKey];\n\n if (!result) {\n throw new Error(\"Child state '\".concat(stateKey, \"' does not exist on '\").concat(this.id, \"'\"));\n }\n\n return result;\n };\n /**\r\n * Returns the state node with the given `stateId`, or throws.\r\n *\r\n * @param stateId The state ID. The prefix \"#\" is removed.\r\n */\n\n\n StateNode.prototype.getStateNodeById = function (stateId) {\n var resolvedStateId = isStateId(stateId) ? stateId.slice(STATE_IDENTIFIER.length) : stateId;\n\n if (resolvedStateId === this.id) {\n return this;\n }\n\n var stateNode = this.machine.idMap[resolvedStateId];\n\n if (!stateNode) {\n throw new Error(\"Child state node '#\".concat(resolvedStateId, \"' does not exist on machine '\").concat(this.id, \"'\"));\n }\n\n return stateNode;\n };\n /**\r\n * Returns the relative state node from the given `statePath`, or throws.\r\n *\r\n * @param statePath The string or string array relative path to the state node.\r\n */\n\n\n StateNode.prototype.getStateNodeByPath = function (statePath) {\n if (typeof statePath === 'string' && isStateId(statePath)) {\n try {\n return this.getStateNodeById(statePath.slice(1));\n } catch (e) {// try individual paths\n // throw e;\n }\n }\n\n var arrayStatePath = toStatePath(statePath, this.delimiter).slice();\n var currentStateNode = this;\n\n while (arrayStatePath.length) {\n var key = arrayStatePath.shift();\n\n if (!key.length) {\n break;\n }\n\n currentStateNode = currentStateNode.getStateNode(key);\n }\n\n return currentStateNode;\n };\n /**\r\n * Resolves a partial state value with its full representation in this machine.\r\n *\r\n * @param stateValue The partial state value to resolve.\r\n */\n\n\n StateNode.prototype.resolve = function (stateValue) {\n var _a;\n\n var _this = this;\n\n if (!stateValue) {\n return this.initialStateValue || EMPTY_OBJECT; // TODO: type-specific properties\n }\n\n switch (this.type) {\n case 'parallel':\n return mapValues(this.initialStateValue, function (subStateValue, subStateKey) {\n return subStateValue ? _this.getStateNode(subStateKey).resolve(stateValue[subStateKey] || subStateValue) : EMPTY_OBJECT;\n });\n\n case 'compound':\n if (isString(stateValue)) {\n var subStateNode = this.getStateNode(stateValue);\n\n if (subStateNode.type === 'parallel' || subStateNode.type === 'compound') {\n return _a = {}, _a[stateValue] = subStateNode.initialStateValue, _a;\n }\n\n return stateValue;\n }\n\n if (!Object.keys(stateValue).length) {\n return this.initialStateValue || {};\n }\n\n return mapValues(stateValue, function (subStateValue, subStateKey) {\n return subStateValue ? _this.getStateNode(subStateKey).resolve(subStateValue) : EMPTY_OBJECT;\n });\n\n default:\n return stateValue || EMPTY_OBJECT;\n }\n };\n\n StateNode.prototype.getResolvedPath = function (stateIdentifier) {\n if (isStateId(stateIdentifier)) {\n var stateNode = this.machine.idMap[stateIdentifier.slice(STATE_IDENTIFIER.length)];\n\n if (!stateNode) {\n throw new Error(\"Unable to find state node '\".concat(stateIdentifier, \"'\"));\n }\n\n return stateNode.path;\n }\n\n return toStatePath(stateIdentifier, this.delimiter);\n };\n\n Object.defineProperty(StateNode.prototype, \"initialStateValue\", {\n get: function () {\n var _a;\n\n if (this.__cache.initialStateValue) {\n return this.__cache.initialStateValue;\n }\n\n var initialStateValue;\n\n if (this.type === 'parallel') {\n initialStateValue = mapFilterValues(this.states, function (state) {\n return state.initialStateValue || EMPTY_OBJECT;\n }, function (stateNode) {\n return !(stateNode.type === 'history');\n });\n } else if (this.initial !== undefined) {\n if (!this.states[this.initial]) {\n throw new Error(\"Initial state '\".concat(this.initial, \"' not found on '\").concat(this.key, \"'\"));\n }\n\n initialStateValue = isLeafNode(this.states[this.initial]) ? this.initial : (_a = {}, _a[this.initial] = this.states[this.initial].initialStateValue, _a);\n } else {\n // The finite state value of a machine without child states is just an empty object\n initialStateValue = {};\n }\n\n this.__cache.initialStateValue = initialStateValue;\n return this.__cache.initialStateValue;\n },\n enumerable: false,\n configurable: true\n });\n\n StateNode.prototype.getInitialState = function (stateValue, context) {\n this._init(); // TODO: this should be in the constructor (see note in constructor)\n\n\n var configuration = this.getStateNodes(stateValue);\n return this.resolveTransition({\n configuration: configuration,\n entrySet: configuration,\n exitSet: [],\n transitions: [],\n source: undefined,\n actions: []\n }, undefined, context !== null && context !== void 0 ? context : this.machine.context, undefined);\n };\n\n Object.defineProperty(StateNode.prototype, \"initialState\", {\n /**\r\n * The initial State instance, which includes all actions to be executed from\r\n * entering the initial state.\r\n */\n get: function () {\n var initialStateValue = this.initialStateValue;\n\n if (!initialStateValue) {\n throw new Error(\"Cannot retrieve initial state from simple state '\".concat(this.id, \"'.\"));\n }\n\n return this.getInitialState(initialStateValue);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(StateNode.prototype, \"target\", {\n /**\r\n * The target state value of the history state node, if it exists. This represents the\r\n * default state value to transition to if no history value exists yet.\r\n */\n get: function () {\n var target;\n\n if (this.type === 'history') {\n var historyConfig = this.config;\n\n if (isString(historyConfig.target)) {\n target = isStateId(historyConfig.target) ? pathToStateValue(this.machine.getStateNodeById(historyConfig.target).path.slice(this.path.length - 1)) : historyConfig.target;\n } else {\n target = historyConfig.target;\n }\n }\n\n return target;\n },\n enumerable: false,\n configurable: true\n });\n /**\r\n * Returns the leaf nodes from a state path relative to this state node.\r\n *\r\n * @param relativeStateId The relative state path to retrieve the state nodes\r\n * @param history The previous state to retrieve history\r\n * @param resolve Whether state nodes should resolve to initial child state nodes\r\n */\n\n StateNode.prototype.getRelativeStateNodes = function (relativeStateId, historyValue, resolve) {\n if (resolve === void 0) {\n resolve = true;\n }\n\n return resolve ? relativeStateId.type === 'history' ? relativeStateId.resolveHistory(historyValue) : relativeStateId.initialStateNodes : [relativeStateId];\n };\n\n Object.defineProperty(StateNode.prototype, \"initialStateNodes\", {\n get: function () {\n var _this = this;\n\n if (isLeafNode(this)) {\n return [this];\n } // Case when state node is compound but no initial state is defined\n\n\n if (this.type === 'compound' && !this.initial) {\n if (!IS_PRODUCTION) {\n warn(false, \"Compound state node '\".concat(this.id, \"' has no initial state.\"));\n }\n\n return [this];\n }\n\n var initialStateNodePaths = toStatePaths(this.initialStateValue);\n return flatten(initialStateNodePaths.map(function (initialPath) {\n return _this.getFromRelativePath(initialPath);\n }));\n },\n enumerable: false,\n configurable: true\n });\n /**\r\n * Retrieves state nodes from a relative path to this state node.\r\n *\r\n * @param relativePath The relative path from this state node\r\n * @param historyValue\r\n */\n\n StateNode.prototype.getFromRelativePath = function (relativePath) {\n if (!relativePath.length) {\n return [this];\n }\n\n var _a = __read(relativePath),\n stateKey = _a[0],\n childStatePath = _a.slice(1);\n\n if (!this.states) {\n throw new Error(\"Cannot retrieve subPath '\".concat(stateKey, \"' from node with no states\"));\n }\n\n var childStateNode = this.getStateNode(stateKey);\n\n if (childStateNode.type === 'history') {\n return childStateNode.resolveHistory();\n }\n\n if (!this.states[stateKey]) {\n throw new Error(\"Child state '\".concat(stateKey, \"' does not exist on '\").concat(this.id, \"'\"));\n }\n\n return this.states[stateKey].getFromRelativePath(childStatePath);\n };\n\n StateNode.prototype.historyValue = function (relativeStateValue) {\n if (!Object.keys(this.states).length) {\n return undefined;\n }\n\n return {\n current: relativeStateValue || this.initialStateValue,\n states: mapFilterValues(this.states, function (stateNode, key) {\n if (!relativeStateValue) {\n return stateNode.historyValue();\n }\n\n var subStateValue = isString(relativeStateValue) ? undefined : relativeStateValue[key];\n return stateNode.historyValue(subStateValue || stateNode.initialStateValue);\n }, function (stateNode) {\n return !stateNode.history;\n })\n };\n };\n /**\r\n * Resolves to the historical value(s) of the parent state node,\r\n * represented by state nodes.\r\n *\r\n * @param historyValue\r\n */\n\n\n StateNode.prototype.resolveHistory = function (historyValue) {\n var _this = this;\n\n if (this.type !== 'history') {\n return [this];\n }\n\n var parent = this.parent;\n\n if (!historyValue) {\n var historyTarget = this.target;\n return historyTarget ? flatten(toStatePaths(historyTarget).map(function (relativeChildPath) {\n return parent.getFromRelativePath(relativeChildPath);\n })) : parent.initialStateNodes;\n }\n\n var subHistoryValue = nestedPath(parent.path, 'states')(historyValue).current;\n\n if (isString(subHistoryValue)) {\n return [parent.getStateNode(subHistoryValue)];\n }\n\n return flatten(toStatePaths(subHistoryValue).map(function (subStatePath) {\n return _this.history === 'deep' ? parent.getFromRelativePath(subStatePath) : [parent.states[subStatePath[0]]];\n }));\n };\n\n Object.defineProperty(StateNode.prototype, \"stateIds\", {\n /**\r\n * All the state node IDs of this state node and its descendant state nodes.\r\n */\n get: function () {\n var _this = this;\n\n var childStateIds = flatten(Object.keys(this.states).map(function (stateKey) {\n return _this.states[stateKey].stateIds;\n }));\n return [this.id].concat(childStateIds);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(StateNode.prototype, \"events\", {\n /**\r\n * All the event types accepted by this state node and its descendants.\r\n */\n get: function () {\n var e_7, _a, e_8, _b;\n\n if (this.__cache.events) {\n return this.__cache.events;\n }\n\n var states = this.states;\n var events = new Set(this.ownEvents);\n\n if (states) {\n try {\n for (var _c = __values(Object.keys(states)), _d = _c.next(); !_d.done; _d = _c.next()) {\n var stateId = _d.value;\n var state = states[stateId];\n\n if (state.states) {\n try {\n for (var _e = (e_8 = void 0, __values(state.events)), _f = _e.next(); !_f.done; _f = _e.next()) {\n var event_1 = _f.value;\n events.add(\"\".concat(event_1));\n }\n } catch (e_8_1) {\n e_8 = {\n error: e_8_1\n };\n } finally {\n try {\n if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\n } finally {\n if (e_8) throw e_8.error;\n }\n }\n }\n }\n } catch (e_7_1) {\n e_7 = {\n error: e_7_1\n };\n } finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n } finally {\n if (e_7) throw e_7.error;\n }\n }\n }\n\n return this.__cache.events = Array.from(events);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(StateNode.prototype, \"ownEvents\", {\n /**\r\n * All the events that have transitions directly from this state node.\r\n *\r\n * Excludes any inert events.\r\n */\n get: function () {\n var events = new Set(this.transitions.filter(function (transition) {\n return !(!transition.target && !transition.actions.length && transition.internal);\n }).map(function (transition) {\n return transition.eventType;\n }));\n return Array.from(events);\n },\n enumerable: false,\n configurable: true\n });\n\n StateNode.prototype.resolveTarget = function (_target) {\n var _this = this;\n\n if (_target === undefined) {\n // an undefined target signals that the state node should not transition from that state when receiving that event\n return undefined;\n }\n\n return _target.map(function (target) {\n if (!isString(target)) {\n return target;\n }\n\n var isInternalTarget = target[0] === _this.delimiter; // If internal target is defined on machine,\n // do not include machine key on target\n\n if (isInternalTarget && !_this.parent) {\n return _this.getStateNodeByPath(target.slice(1));\n }\n\n var resolvedTarget = isInternalTarget ? _this.key + target : target;\n\n if (_this.parent) {\n try {\n var targetStateNode = _this.parent.getStateNodeByPath(resolvedTarget);\n\n return targetStateNode;\n } catch (err) {\n throw new Error(\"Invalid transition definition for state node '\".concat(_this.id, \"':\\n\").concat(err.message));\n }\n } else {\n return _this.getStateNodeByPath(resolvedTarget);\n }\n });\n };\n\n StateNode.prototype.formatTransition = function (transitionConfig) {\n var _this = this;\n\n var normalizedTarget = normalizeTarget(transitionConfig.target);\n var internal = 'internal' in transitionConfig ? transitionConfig.internal : normalizedTarget ? normalizedTarget.some(function (_target) {\n return isString(_target) && _target[0] === _this.delimiter;\n }) : true;\n var guards = this.machine.options.guards;\n var target = this.resolveTarget(normalizedTarget);\n\n var transition = __assign(__assign({}, transitionConfig), {\n actions: toActionObjects(toArray(transitionConfig.actions)),\n cond: toGuard(transitionConfig.cond, guards),\n target: target,\n source: this,\n internal: internal,\n eventType: transitionConfig.event,\n toJSON: function () {\n return __assign(__assign({}, transition), {\n target: transition.target ? transition.target.map(function (t) {\n return \"#\".concat(t.id);\n }) : undefined,\n source: \"#\".concat(_this.id)\n });\n }\n });\n\n return transition;\n };\n\n StateNode.prototype.formatTransitions = function () {\n var e_9, _a;\n\n var _this = this;\n\n var onConfig;\n\n if (!this.config.on) {\n onConfig = [];\n } else if (Array.isArray(this.config.on)) {\n onConfig = this.config.on;\n } else {\n var _b = this.config.on,\n _c = WILDCARD,\n _d = _b[_c],\n wildcardConfigs = _d === void 0 ? [] : _d,\n strictTransitionConfigs_1 = __rest(_b, [typeof _c === \"symbol\" ? _c : _c + \"\"]);\n\n onConfig = flatten(Object.keys(strictTransitionConfigs_1).map(function (key) {\n if (!IS_PRODUCTION && key === NULL_EVENT) {\n warn(false, \"Empty string transition configs (e.g., `{ on: { '': ... }}`) for transient transitions are deprecated. Specify the transition in the `{ always: ... }` property instead. \" + \"Please check the `on` configuration for \\\"#\".concat(_this.id, \"\\\".\"));\n }\n\n var transitionConfigArray = toTransitionConfigArray(key, strictTransitionConfigs_1[key]);\n\n if (!IS_PRODUCTION) {\n validateArrayifiedTransitions(_this, key, transitionConfigArray);\n }\n\n return transitionConfigArray;\n }).concat(toTransitionConfigArray(WILDCARD, wildcardConfigs)));\n }\n\n var eventlessConfig = this.config.always ? toTransitionConfigArray('', this.config.always) : [];\n var doneConfig = this.config.onDone ? toTransitionConfigArray(String(done(this.id)), this.config.onDone) : [];\n\n if (!IS_PRODUCTION) {\n warn(!(this.config.onDone && !this.parent), \"Root nodes cannot have an \\\".onDone\\\" transition. Please check the config of \\\"\".concat(this.id, \"\\\".\"));\n }\n\n var invokeConfig = flatten(this.invoke.map(function (invokeDef) {\n var settleTransitions = [];\n\n if (invokeDef.onDone) {\n settleTransitions.push.apply(settleTransitions, __spreadArray([], __read(toTransitionConfigArray(String(doneInvoke(invokeDef.id)), invokeDef.onDone)), false));\n }\n\n if (invokeDef.onError) {\n settleTransitions.push.apply(settleTransitions, __spreadArray([], __read(toTransitionConfigArray(String(error(invokeDef.id)), invokeDef.onError)), false));\n }\n\n return settleTransitions;\n }));\n var delayedTransitions = this.after;\n var formattedTransitions = flatten(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], __read(doneConfig), false), __read(invokeConfig), false), __read(onConfig), false), __read(eventlessConfig), false).map(function (transitionConfig) {\n return toArray(transitionConfig).map(function (transition) {\n return _this.formatTransition(transition);\n });\n }));\n\n try {\n for (var delayedTransitions_1 = __values(delayedTransitions), delayedTransitions_1_1 = delayedTransitions_1.next(); !delayedTransitions_1_1.done; delayedTransitions_1_1 = delayedTransitions_1.next()) {\n var delayedTransition = delayedTransitions_1_1.value;\n formattedTransitions.push(delayedTransition);\n }\n } catch (e_9_1) {\n e_9 = {\n error: e_9_1\n };\n } finally {\n try {\n if (delayedTransitions_1_1 && !delayedTransitions_1_1.done && (_a = delayedTransitions_1.return)) _a.call(delayedTransitions_1);\n } finally {\n if (e_9) throw e_9.error;\n }\n }\n\n return formattedTransitions;\n };\n\n return StateNode;\n}();\n\nexport { StateNode };\n", "import { StateNode } from './StateNode.js';\n\nfunction Machine(config, options, initialContext) {\n if (initialContext === void 0) {\n initialContext = config.context;\n }\n\n return new StateNode(config, options, initialContext);\n}\nfunction createMachine(config, options) {\n return new StateNode(config, options);\n}\n\nexport { Machine, createMachine };\n", "import { assign as assign$1, send as send$1, sendParent as sendParent$1, sendUpdate as sendUpdate$1, forwardTo as forwardTo$1, doneInvoke as doneInvoke$1 } from './actions.js';\nimport * as actions from './actions.js';\nexport { actions };\nexport { toActorRef } from './Actor.js';\nexport { Interpreter, InterpreterStatus, interpret, spawn } from './interpreter.js';\nexport { Machine, createMachine } from './Machine.js';\nexport { mapState } from './mapState.js';\nexport { matchState } from './match.js';\nexport { createSchema, t } from './schema.js';\nexport { State } from './State.js';\nexport { StateNode } from './StateNode.js';\nexport { spawnBehavior } from './behaviors.js';\nexport { ActionTypes, SpecialTargets } from './types.js';\nexport { matchesState, toEventObject, toObserver, toSCXMLEvent } from './utils.js';\n\nvar assign = assign$1,\n send = send$1,\n sendParent = sendParent$1,\n sendUpdate = sendUpdate$1,\n forwardTo = forwardTo$1,\n doneInvoke = doneInvoke$1;\n\nexport { assign, doneInvoke, forwardTo, send, sendParent, sendUpdate };\n", "/**\n * returns true if the given object is a promise\n */\nexport function isPromise(obj) {\n if (obj && typeof obj.then === 'function') {\n return true;\n } else {\n return false;\n }\n}\nexport var PROMISE_RESOLVED_FALSE = Promise.resolve(false);\nexport var PROMISE_RESOLVED_TRUE = Promise.resolve(true);\nexport var PROMISE_RESOLVED_VOID = Promise.resolve();\nexport function sleep(time, resolveWith) {\n if (!time) time = 0;\n return new Promise(function (res) {\n return setTimeout(function () {\n return res(resolveWith);\n }, time);\n });\n}\nexport function randomInt(min, max) {\n return Math.floor(Math.random() * (max - min + 1) + min);\n}\n/**\n * https://stackoverflow.com/a/8084248\n */\n\nexport function randomToken() {\n return Math.random().toString(36).substring(2);\n}\nvar lastMs = 0;\nvar additional = 0;\n/**\n * returns the current time in micro-seconds,\n * WARNING: This is a pseudo-function\n * Performance.now is not reliable in webworkers, so we just make sure to never return the same time.\n * This is enough in browsers, and this function will not be used in nodejs.\n * The main reason for this hack is to ensure that BroadcastChannel behaves equal to production when it is used in fast-running unit tests.\n */\n\nexport function microSeconds() {\n var ms = new Date().getTime();\n\n if (ms === lastMs) {\n additional++;\n return ms * 1000 + additional;\n } else {\n lastMs = ms;\n additional = 0;\n return ms * 1000;\n }\n}\n/**\n * copied from the 'detect-node' npm module\n * We cannot use the module directly because it causes problems with rollup\n * @link https://github.com/iliakan/detect-node/blob/master/index.js\n */\n\nexport var isNode = Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';", "import { microSeconds as micro, isNode, PROMISE_RESOLVED_VOID } from '../util';\nexport var microSeconds = micro;\nexport var type = 'native';\nexport function create(channelName) {\n var state = {\n messagesCallback: null,\n bc: new BroadcastChannel(channelName),\n subFns: [] // subscriberFunctions\n\n };\n\n state.bc.onmessage = function (msg) {\n if (state.messagesCallback) {\n state.messagesCallback(msg.data);\n }\n };\n\n return state;\n}\nexport function close(channelState) {\n channelState.bc.close();\n channelState.subFns = [];\n}\nexport function postMessage(channelState, messageJson) {\n try {\n channelState.bc.postMessage(messageJson, false);\n return PROMISE_RESOLVED_VOID;\n } catch (err) {\n return Promise.reject(err);\n }\n}\nexport function onMessage(channelState, fn) {\n channelState.messagesCallback = fn;\n}\nexport function canBeUsed() {\n /**\n * in the electron-renderer, isNode will be true even if we are in browser-context\n * so we also check if window is undefined\n */\n if (isNode && typeof window === 'undefined') return false;\n\n if (typeof BroadcastChannel === 'function') {\n if (BroadcastChannel._pubkey) {\n throw new Error('BroadcastChannel: Do not overwrite window.BroadcastChannel with this module, this is not a polyfill');\n }\n\n return true;\n } else return false;\n}\nexport function averageResponseTime() {\n return 150;\n}\nexport default {\n create: create,\n close: close,\n onMessage: onMessage,\n postMessage: postMessage,\n canBeUsed: canBeUsed,\n type: type,\n averageResponseTime: averageResponseTime,\n microSeconds: microSeconds\n};", null, "export function fillOptionsWithDefaults() {\n var originalOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var options = JSON.parse(JSON.stringify(originalOptions)); // main\n\n if (typeof options.webWorkerSupport === 'undefined') options.webWorkerSupport = true; // indexed-db\n\n if (!options.idb) options.idb = {}; // after this time the messages get deleted\n\n if (!options.idb.ttl) options.idb.ttl = 1000 * 45;\n if (!options.idb.fallbackInterval) options.idb.fallbackInterval = 150; // handles abrupt db onclose events.\n\n if (originalOptions.idb && typeof originalOptions.idb.onclose === 'function') options.idb.onclose = originalOptions.idb.onclose; // localstorage\n\n if (!options.localstorage) options.localstorage = {};\n if (!options.localstorage.removeTimeout) options.localstorage.removeTimeout = 1000 * 60; // custom methods\n\n if (originalOptions.methods) options.methods = originalOptions.methods; // node\n\n if (!options.node) options.node = {};\n if (!options.node.ttl) options.node.ttl = 1000 * 60 * 2; // 2 minutes;\n\n /**\n * On linux use 'ulimit -Hn' to get the limit of open files.\n * On ubuntu this was 4096 for me, so we use half of that as maxParallelWrites default.\n */\n\n if (!options.node.maxParallelWrites) options.node.maxParallelWrites = 2048;\n if (typeof options.node.useFastPath === 'undefined') options.node.useFastPath = true;\n return options;\n}", "/**\n * this method uses indexeddb to store the messages\n * There is currently no observerAPI for idb\n * @link https://github.com/w3c/IndexedDB/issues/51\n */\nimport { sleep, randomInt, randomToken, microSeconds as micro, isNode, PROMISE_RESOLVED_VOID } from '../util.js';\nexport var microSeconds = micro;\nimport { ObliviousSet } from 'oblivious-set';\nimport { fillOptionsWithDefaults } from '../options';\nvar DB_PREFIX = 'pubkey.broadcast-channel-0-';\nvar OBJECT_STORE_ID = 'messages';\nexport var type = 'idb';\nexport function getIdb() {\n if (typeof indexedDB !== 'undefined') return indexedDB;\n\n if (typeof window !== 'undefined') {\n if (typeof window.mozIndexedDB !== 'undefined') return window.mozIndexedDB;\n if (typeof window.webkitIndexedDB !== 'undefined') return window.webkitIndexedDB;\n if (typeof window.msIndexedDB !== 'undefined') return window.msIndexedDB;\n }\n\n return false;\n}\nexport function createDatabase(channelName) {\n var IndexedDB = getIdb(); // create table\n\n var dbName = DB_PREFIX + channelName;\n var openRequest = IndexedDB.open(dbName, 1);\n\n openRequest.onupgradeneeded = function (ev) {\n var db = ev.target.result;\n db.createObjectStore(OBJECT_STORE_ID, {\n keyPath: 'id',\n autoIncrement: true\n });\n };\n\n var dbPromise = new Promise(function (res, rej) {\n openRequest.onerror = function (ev) {\n return rej(ev);\n };\n\n openRequest.onsuccess = function () {\n res(openRequest.result);\n };\n });\n return dbPromise;\n}\n/**\n * writes the new message to the database\n * so other readers can find it\n */\n\nexport function writeMessage(db, readerUuid, messageJson) {\n var time = new Date().getTime();\n var writeObject = {\n uuid: readerUuid,\n time: time,\n data: messageJson\n };\n var transaction = db.transaction([OBJECT_STORE_ID], 'readwrite');\n return new Promise(function (res, rej) {\n transaction.oncomplete = function () {\n return res();\n };\n\n transaction.onerror = function (ev) {\n return rej(ev);\n };\n\n var objectStore = transaction.objectStore(OBJECT_STORE_ID);\n objectStore.add(writeObject);\n });\n}\nexport function getAllMessages(db) {\n var objectStore = db.transaction(OBJECT_STORE_ID).objectStore(OBJECT_STORE_ID);\n var ret = [];\n return new Promise(function (res) {\n objectStore.openCursor().onsuccess = function (ev) {\n var cursor = ev.target.result;\n\n if (cursor) {\n ret.push(cursor.value); //alert(\"Name for SSN \" + cursor.key + \" is \" + cursor.value.name);\n\n cursor[\"continue\"]();\n } else {\n res(ret);\n }\n };\n });\n}\nexport function getMessagesHigherThan(db, lastCursorId) {\n var objectStore = db.transaction(OBJECT_STORE_ID).objectStore(OBJECT_STORE_ID);\n var ret = [];\n\n function openCursor() {\n // Occasionally Safari will fail on IDBKeyRange.bound, this\n // catches that error, having it open the cursor to the first\n // item. When it gets data it will advance to the desired key.\n try {\n var keyRangeValue = IDBKeyRange.bound(lastCursorId + 1, Infinity);\n return objectStore.openCursor(keyRangeValue);\n } catch (e) {\n return objectStore.openCursor();\n }\n }\n\n return new Promise(function (res) {\n openCursor().onsuccess = function (ev) {\n var cursor = ev.target.result;\n\n if (cursor) {\n if (cursor.value.id < lastCursorId + 1) {\n cursor[\"continue\"](lastCursorId + 1);\n } else {\n ret.push(cursor.value);\n cursor[\"continue\"]();\n }\n } else {\n res(ret);\n }\n };\n });\n}\nexport function removeMessageById(db, id) {\n var request = db.transaction([OBJECT_STORE_ID], 'readwrite').objectStore(OBJECT_STORE_ID)[\"delete\"](id);\n return new Promise(function (res) {\n request.onsuccess = function () {\n return res();\n };\n });\n}\nexport function getOldMessages(db, ttl) {\n var olderThen = new Date().getTime() - ttl;\n var objectStore = db.transaction(OBJECT_STORE_ID).objectStore(OBJECT_STORE_ID);\n var ret = [];\n return new Promise(function (res) {\n objectStore.openCursor().onsuccess = function (ev) {\n var cursor = ev.target.result;\n\n if (cursor) {\n var msgObk = cursor.value;\n\n if (msgObk.time < olderThen) {\n ret.push(msgObk); //alert(\"Name for SSN \" + cursor.key + \" is \" + cursor.value.name);\n\n cursor[\"continue\"]();\n } else {\n // no more old messages,\n res(ret);\n return;\n }\n } else {\n res(ret);\n }\n };\n });\n}\nexport function cleanOldMessages(db, ttl) {\n return getOldMessages(db, ttl).then(function (tooOld) {\n return Promise.all(tooOld.map(function (msgObj) {\n return removeMessageById(db, msgObj.id);\n }));\n });\n}\nexport function create(channelName, options) {\n options = fillOptionsWithDefaults(options);\n return createDatabase(channelName).then(function (db) {\n var state = {\n closed: false,\n lastCursorId: 0,\n channelName: channelName,\n options: options,\n uuid: randomToken(),\n\n /**\n * emittedMessagesIds\n * contains all messages that have been emitted before\n * @type {ObliviousSet}\n */\n eMIs: new ObliviousSet(options.idb.ttl * 2),\n // ensures we do not read messages in parrallel\n writeBlockPromise: PROMISE_RESOLVED_VOID,\n messagesCallback: null,\n readQueuePromises: [],\n db: db\n };\n /**\n * Handle abrupt closes that do not originate from db.close().\n * This could happen, for example, if the underlying storage is\n * removed or if the user clears the database in the browser's\n * history preferences.\n */\n\n db.onclose = function () {\n state.closed = true;\n if (options.idb.onclose) options.idb.onclose();\n };\n /**\n * if service-workers are used,\n * we have no 'storage'-event if they post a message,\n * therefore we also have to set an interval\n */\n\n\n _readLoop(state);\n\n return state;\n });\n}\n\nfunction _readLoop(state) {\n if (state.closed) return;\n readNewMessages(state).then(function () {\n return sleep(state.options.idb.fallbackInterval);\n }).then(function () {\n return _readLoop(state);\n });\n}\n\nfunction _filterMessage(msgObj, state) {\n if (msgObj.uuid === state.uuid) return false; // send by own\n\n if (state.eMIs.has(msgObj.id)) return false; // already emitted\n\n if (msgObj.data.time < state.messagesCallbackTime) return false; // older then onMessageCallback\n\n return true;\n}\n/**\n * reads all new messages from the database and emits them\n */\n\n\nfunction readNewMessages(state) {\n // channel already closed\n if (state.closed) return PROMISE_RESOLVED_VOID; // if no one is listening, we do not need to scan for new messages\n\n if (!state.messagesCallback) return PROMISE_RESOLVED_VOID;\n return getMessagesHigherThan(state.db, state.lastCursorId).then(function (newerMessages) {\n var useMessages = newerMessages\n /**\n * there is a bug in iOS where the msgObj can be undefined some times\n * so we filter them out\n * @link https://github.com/pubkey/broadcast-channel/issues/19\n */\n .filter(function (msgObj) {\n return !!msgObj;\n }).map(function (msgObj) {\n if (msgObj.id > state.lastCursorId) {\n state.lastCursorId = msgObj.id;\n }\n\n return msgObj;\n }).filter(function (msgObj) {\n return _filterMessage(msgObj, state);\n }).sort(function (msgObjA, msgObjB) {\n return msgObjA.time - msgObjB.time;\n }); // sort by time\n\n useMessages.forEach(function (msgObj) {\n if (state.messagesCallback) {\n state.eMIs.add(msgObj.id);\n state.messagesCallback(msgObj.data);\n }\n });\n return PROMISE_RESOLVED_VOID;\n });\n}\n\nexport function close(channelState) {\n channelState.closed = true;\n channelState.db.close();\n}\nexport function postMessage(channelState, messageJson) {\n channelState.writeBlockPromise = channelState.writeBlockPromise.then(function () {\n return writeMessage(channelState.db, channelState.uuid, messageJson);\n }).then(function () {\n if (randomInt(0, 10) === 0) {\n /* await (do not await) */\n cleanOldMessages(channelState.db, channelState.options.idb.ttl);\n }\n });\n return channelState.writeBlockPromise;\n}\nexport function onMessage(channelState, fn, time) {\n channelState.messagesCallbackTime = time;\n channelState.messagesCallback = fn;\n readNewMessages(channelState);\n}\nexport function canBeUsed() {\n if (isNode) return false;\n var idb = getIdb();\n if (!idb) return false;\n return true;\n}\nexport function averageResponseTime(options) {\n return options.idb.fallbackInterval * 2;\n}\nexport default {\n create: create,\n close: close,\n onMessage: onMessage,\n postMessage: postMessage,\n canBeUsed: canBeUsed,\n type: type,\n averageResponseTime: averageResponseTime,\n microSeconds: microSeconds\n};", "/**\n * A localStorage-only method which uses localstorage and its 'storage'-event\n * This does not work inside of webworkers because they have no access to locastorage\n * This is basically implemented to support IE9 or your grandmothers toaster.\n * @link https://caniuse.com/#feat=namevalue-storage\n * @link https://caniuse.com/#feat=indexeddb\n */\nimport { ObliviousSet } from 'oblivious-set';\nimport { fillOptionsWithDefaults } from '../options';\nimport { sleep, randomToken, microSeconds as micro, isNode } from '../util';\nexport var microSeconds = micro;\nvar KEY_PREFIX = 'pubkey.broadcastChannel-';\nexport var type = 'localstorage';\n/**\n * copied from crosstab\n * @link https://github.com/tejacques/crosstab/blob/master/src/crosstab.js#L32\n */\n\nexport function getLocalStorage() {\n var localStorage;\n if (typeof window === 'undefined') return null;\n\n try {\n localStorage = window.localStorage;\n localStorage = window['ie8-eventlistener/storage'] || window.localStorage;\n } catch (e) {// New versions of Firefox throw a Security exception\n // if cookies are disabled. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1028153\n }\n\n return localStorage;\n}\nexport function storageKey(channelName) {\n return KEY_PREFIX + channelName;\n}\n/**\n* writes the new message to the storage\n* and fires the storage-event so other readers can find it\n*/\n\nexport function postMessage(channelState, messageJson) {\n return new Promise(function (res) {\n sleep().then(function () {\n var key = storageKey(channelState.channelName);\n var writeObj = {\n token: randomToken(),\n time: new Date().getTime(),\n data: messageJson,\n uuid: channelState.uuid\n };\n var value = JSON.stringify(writeObj);\n getLocalStorage().setItem(key, value);\n /**\n * StorageEvent does not fire the 'storage' event\n * in the window that changes the state of the local storage.\n * So we fire it manually\n */\n\n var ev = document.createEvent('Event');\n ev.initEvent('storage', true, true);\n ev.key = key;\n ev.newValue = value;\n window.dispatchEvent(ev);\n res();\n });\n });\n}\nexport function addStorageEventListener(channelName, fn) {\n var key = storageKey(channelName);\n\n var listener = function listener(ev) {\n if (ev.key === key) {\n fn(JSON.parse(ev.newValue));\n }\n };\n\n window.addEventListener('storage', listener);\n return listener;\n}\nexport function removeStorageEventListener(listener) {\n window.removeEventListener('storage', listener);\n}\nexport function create(channelName, options) {\n options = fillOptionsWithDefaults(options);\n\n if (!canBeUsed()) {\n throw new Error('BroadcastChannel: localstorage cannot be used');\n }\n\n var uuid = randomToken();\n /**\n * eMIs\n * contains all messages that have been emitted before\n * @type {ObliviousSet}\n */\n\n var eMIs = new ObliviousSet(options.localstorage.removeTimeout);\n var state = {\n channelName: channelName,\n uuid: uuid,\n eMIs: eMIs // emittedMessagesIds\n\n };\n state.listener = addStorageEventListener(channelName, function (msgObj) {\n if (!state.messagesCallback) return; // no listener\n\n if (msgObj.uuid === uuid) return; // own message\n\n if (!msgObj.token || eMIs.has(msgObj.token)) return; // already emitted\n\n if (msgObj.data.time && msgObj.data.time < state.messagesCallbackTime) return; // too old\n\n eMIs.add(msgObj.token);\n state.messagesCallback(msgObj.data);\n });\n return state;\n}\nexport function close(channelState) {\n removeStorageEventListener(channelState.listener);\n}\nexport function onMessage(channelState, fn, time) {\n channelState.messagesCallbackTime = time;\n channelState.messagesCallback = fn;\n}\nexport function canBeUsed() {\n if (isNode) return false;\n var ls = getLocalStorage();\n if (!ls) return false;\n\n try {\n var key = '__broadcastchannel_check';\n ls.setItem(key, 'works');\n ls.removeItem(key);\n } catch (e) {\n // Safari 10 in private mode will not allow write access to local\n // storage and fail with a QuotaExceededError. See\n // https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API#Private_Browsing_Incognito_modes\n return false;\n }\n\n return true;\n}\nexport function averageResponseTime() {\n var defaultTime = 120;\n var userAgent = navigator.userAgent.toLowerCase();\n\n if (userAgent.includes('safari') && !userAgent.includes('chrome')) {\n // safari is much slower so this time is higher\n return defaultTime * 2;\n }\n\n return defaultTime;\n}\nexport default {\n create: create,\n close: close,\n onMessage: onMessage,\n postMessage: postMessage,\n canBeUsed: canBeUsed,\n type: type,\n averageResponseTime: averageResponseTime,\n microSeconds: microSeconds\n};", "import { microSeconds as micro } from '../util';\nexport var microSeconds = micro;\nexport var type = 'simulate';\nvar SIMULATE_CHANNELS = new Set();\nexport function create(channelName) {\n var state = {\n name: channelName,\n messagesCallback: null\n };\n SIMULATE_CHANNELS.add(state);\n return state;\n}\nexport function close(channelState) {\n SIMULATE_CHANNELS[\"delete\"](channelState);\n}\nexport function postMessage(channelState, messageJson) {\n return new Promise(function (res) {\n return setTimeout(function () {\n var channelArray = Array.from(SIMULATE_CHANNELS);\n channelArray.filter(function (channel) {\n return channel.name === channelState.name;\n }).filter(function (channel) {\n return channel !== channelState;\n }).filter(function (channel) {\n return !!channel.messagesCallback;\n }).forEach(function (channel) {\n return channel.messagesCallback(messageJson);\n });\n res();\n }, 5);\n });\n}\nexport function onMessage(channelState, fn) {\n channelState.messagesCallback = fn;\n}\nexport function canBeUsed() {\n return true;\n}\nexport function averageResponseTime() {\n return 5;\n}\nexport default {\n create: create,\n close: close,\n onMessage: onMessage,\n postMessage: postMessage,\n canBeUsed: canBeUsed,\n type: type,\n averageResponseTime: averageResponseTime,\n microSeconds: microSeconds\n};", "import NativeMethod from './methods/native.js';\nimport IndexeDbMethod from './methods/indexed-db.js';\nimport LocalstorageMethod from './methods/localstorage.js';\nimport SimulateMethod from './methods/simulate.js'; // the line below will be removed from es5/browser builds\n\n\nimport { isNode } from './util'; // order is important\n\nvar METHODS = [NativeMethod, // fastest\nIndexeDbMethod, LocalstorageMethod];\nexport function chooseMethod(options) {\n var chooseMethods = [].concat(options.methods, METHODS).filter(Boolean); // the line below will be removed from es5/browser builds\n\n\n\n if (options.type) {\n if (options.type === 'simulate') {\n // only use simulate-method if directly chosen\n return SimulateMethod;\n }\n\n var ret = chooseMethods.find(function (m) {\n return m.type === options.type;\n });\n if (!ret) throw new Error('method-type ' + options.type + ' not found');else return ret;\n }\n /**\n * if no webworker support is needed,\n * remove idb from the list so that localstorage is been chosen\n */\n\n\n if (!options.webWorkerSupport && !isNode) {\n chooseMethods = chooseMethods.filter(function (m) {\n return m.type !== 'idb';\n });\n }\n\n var useMethod = chooseMethods.find(function (method) {\n return method.canBeUsed();\n });\n if (!useMethod) throw new Error(\"No useable method found in \" + JSON.stringify(METHODS.map(function (m) {\n return m.type;\n })));else return useMethod;\n}", "import { isPromise, PROMISE_RESOLVED_FALSE, PROMISE_RESOLVED_VOID } from './util.js';\nimport { chooseMethod } from './method-chooser.js';\nimport { fillOptionsWithDefaults } from './options.js';\n/**\n * Contains all open channels,\n * used in tests to ensure everything is closed.\n */\n\nexport var OPEN_BROADCAST_CHANNELS = new Set();\nvar lastId = 0;\nexport var BroadcastChannel = function BroadcastChannel(name, options) {\n // identifier of the channel to debug stuff\n this.id = lastId++;\n OPEN_BROADCAST_CHANNELS.add(this);\n this.name = name;\n\n if (ENFORCED_OPTIONS) {\n options = ENFORCED_OPTIONS;\n }\n\n this.options = fillOptionsWithDefaults(options);\n this.method = chooseMethod(this.options); // isListening\n\n this._iL = false;\n /**\n * _onMessageListener\n * setting onmessage twice,\n * will overwrite the first listener\n */\n\n this._onML = null;\n /**\n * _addEventListeners\n */\n\n this._addEL = {\n message: [],\n internal: []\n };\n /**\n * Unsend message promises\n * where the sending is still in progress\n * @type {Set<Promise>}\n */\n\n this._uMP = new Set();\n /**\n * _beforeClose\n * array of promises that will be awaited\n * before the channel is closed\n */\n\n this._befC = [];\n /**\n * _preparePromise\n */\n\n this._prepP = null;\n\n _prepareChannel(this);\n}; // STATICS\n\n/**\n * used to identify if someone overwrites\n * window.BroadcastChannel with this\n * See methods/native.js\n */\n\nBroadcastChannel._pubkey = true;\n/**\n * clears the tmp-folder if is node\n * @return {Promise<boolean>} true if has run, false if not node\n */\n\nexport function clearNodeFolder(options) {\n options = fillOptionsWithDefaults(options);\n var method = chooseMethod(options);\n\n if (method.type === 'node') {\n return method.clearNodeFolder().then(function () {\n return true;\n });\n } else {\n return PROMISE_RESOLVED_FALSE;\n }\n}\n/**\n * if set, this method is enforced,\n * no mather what the options are\n */\n\nvar ENFORCED_OPTIONS;\nexport function enforceOptions(options) {\n ENFORCED_OPTIONS = options;\n} // PROTOTYPE\n\nBroadcastChannel.prototype = {\n postMessage: function postMessage(msg) {\n if (this.closed) {\n throw new Error('BroadcastChannel.postMessage(): ' + 'Cannot post message after channel has closed ' +\n /**\n * In the past when this error appeared, it was realy hard to debug.\n * So now we log the msg together with the error so it at least\n * gives some clue about where in your application this happens.\n */\n JSON.stringify(msg));\n }\n\n return _post(this, 'message', msg);\n },\n postInternal: function postInternal(msg) {\n return _post(this, 'internal', msg);\n },\n\n set onmessage(fn) {\n var time = this.method.microSeconds();\n var listenObj = {\n time: time,\n fn: fn\n };\n\n _removeListenerObject(this, 'message', this._onML);\n\n if (fn && typeof fn === 'function') {\n this._onML = listenObj;\n\n _addListenerObject(this, 'message', listenObj);\n } else {\n this._onML = null;\n }\n },\n\n addEventListener: function addEventListener(type, fn) {\n var time = this.method.microSeconds();\n var listenObj = {\n time: time,\n fn: fn\n };\n\n _addListenerObject(this, type, listenObj);\n },\n removeEventListener: function removeEventListener(type, fn) {\n var obj = this._addEL[type].find(function (obj) {\n return obj.fn === fn;\n });\n\n _removeListenerObject(this, type, obj);\n },\n close: function close() {\n var _this = this;\n\n if (this.closed) {\n return;\n }\n\n OPEN_BROADCAST_CHANNELS[\"delete\"](this);\n this.closed = true;\n var awaitPrepare = this._prepP ? this._prepP : PROMISE_RESOLVED_VOID;\n this._onML = null;\n this._addEL.message = [];\n return awaitPrepare // wait until all current sending are processed\n .then(function () {\n return Promise.all(Array.from(_this._uMP));\n }) // run before-close hooks\n .then(function () {\n return Promise.all(_this._befC.map(function (fn) {\n return fn();\n }));\n }) // close the channel\n .then(function () {\n return _this.method.close(_this._state);\n });\n },\n\n get type() {\n return this.method.type;\n },\n\n get isClosed() {\n return this.closed;\n }\n\n};\n/**\n * Post a message over the channel\n * @returns {Promise} that resolved when the message sending is done\n */\n\nfunction _post(broadcastChannel, type, msg) {\n var time = broadcastChannel.method.microSeconds();\n var msgObj = {\n time: time,\n type: type,\n data: msg\n };\n var awaitPrepare = broadcastChannel._prepP ? broadcastChannel._prepP : PROMISE_RESOLVED_VOID;\n return awaitPrepare.then(function () {\n var sendPromise = broadcastChannel.method.postMessage(broadcastChannel._state, msgObj); // add/remove to unsend messages list\n\n broadcastChannel._uMP.add(sendPromise);\n\n sendPromise[\"catch\"]().then(function () {\n return broadcastChannel._uMP[\"delete\"](sendPromise);\n });\n return sendPromise;\n });\n}\n\nfunction _prepareChannel(channel) {\n var maybePromise = channel.method.create(channel.name, channel.options);\n\n if (isPromise(maybePromise)) {\n channel._prepP = maybePromise;\n maybePromise.then(function (s) {\n // used in tests to simulate slow runtime\n\n /*if (channel.options.prepareDelay) {\n await new Promise(res => setTimeout(res, this.options.prepareDelay));\n }*/\n channel._state = s;\n });\n } else {\n channel._state = maybePromise;\n }\n}\n\nfunction _hasMessageListeners(channel) {\n if (channel._addEL.message.length > 0) return true;\n if (channel._addEL.internal.length > 0) return true;\n return false;\n}\n\nfunction _addListenerObject(channel, type, obj) {\n channel._addEL[type].push(obj);\n\n _startListening(channel);\n}\n\nfunction _removeListenerObject(channel, type, obj) {\n channel._addEL[type] = channel._addEL[type].filter(function (o) {\n return o !== obj;\n });\n\n _stopListening(channel);\n}\n\nfunction _startListening(channel) {\n if (!channel._iL && _hasMessageListeners(channel)) {\n // someone is listening, start subscribing\n var listenerFn = function listenerFn(msgObj) {\n channel._addEL[msgObj.type].forEach(function (listenerObject) {\n /**\n * Getting the current time in JavaScript has no good precision.\n * So instead of only listening to events that happend 'after' the listener\n * was added, we also listen to events that happended 100ms before it.\n * This ensures that when another process, like a WebWorker, sends events\n * we do not miss them out because their timestamp is a bit off compared to the main process.\n * Not doing this would make messages missing when we send data directly after subscribing and awaiting a response.\n * @link https://johnresig.com/blog/accuracy-of-javascript-time/\n */\n var hundredMsInMicro = 100 * 1000;\n var minMessageTime = listenerObject.time - hundredMsInMicro;\n\n if (msgObj.time >= minMessageTime) {\n listenerObject.fn(msgObj.data);\n }\n });\n };\n\n var time = channel.method.microSeconds();\n\n if (channel._prepP) {\n channel._prepP.then(function () {\n channel._iL = true;\n channel.method.onMessage(channel._state, listenerFn, time);\n });\n } else {\n channel._iL = true;\n channel.method.onMessage(channel._state, listenerFn, time);\n }\n }\n}\n\nfunction _stopListening(channel) {\n if (channel._iL && !_hasMessageListeners(channel)) {\n // noone is listening, stop subscribing\n channel._iL = false;\n var time = channel.method.microSeconds();\n channel.method.onMessage(channel._state, null, time);\n }\n}", "export const NHOST_REFRESH_TOKEN_KEY = 'nhostRefreshToken'\nexport const NHOST_JWT_EXPIRES_AT_KEY = 'nhostRefreshTokenExpiresAt'\n\nexport const MIN_PASSWORD_LENGTH = 3\n\n// * Minimum time in seconds before the JWT expiration and the first refresh attempt\nexport const TOKEN_REFRESH_MARGIN = 900\n\n// * Minimum time in seconds for a refresh regardless ot the JWT expiration\nexport const MIN_TOKEN_REFRESH_INTERVAL = 60\n\n// * Number of seconds before retrying a token refresh after an error\nexport const REFRESH_TOKEN_RETRY_INTERVAL = 10\n\n// * Maximum number of attempts to refresh a token before stopping the timer and logging out\n// TODO try when offline for a long time: maybe we could keep state as 'signedIn'\nexport const REFRESH_TOKEN_RETRY_MAX_ATTEMPTS = 30\n", "export const NETWORK_ERROR_CODE = 0\nexport const VALIDATION_ERROR_CODE = 10\n\nexport type ErrorPayload = {\n error: string\n status: number\n message: string\n}\n\nexport type ValidationErrorPayload = ErrorPayload & { status: typeof VALIDATION_ERROR_CODE }\n\nexport const INVALID_EMAIL_ERROR: ValidationErrorPayload = {\n status: VALIDATION_ERROR_CODE,\n error: 'invalid-email',\n message: 'Email is incorrectly formatted'\n}\n\nexport const INVALID_MFA_TYPE_ERROR: ValidationErrorPayload = {\n status: VALIDATION_ERROR_CODE,\n error: 'invalid-mfa-type',\n message: 'MFA type is invalid'\n}\n\nexport const INVALID_PASSWORD_ERROR: ValidationErrorPayload = {\n status: VALIDATION_ERROR_CODE,\n error: 'invalid-password',\n message: 'Password is incorrectly formatted'\n}\n\nexport const INVALID_PHONE_NUMBER_ERROR: ValidationErrorPayload = {\n status: VALIDATION_ERROR_CODE,\n error: 'invalid-phone-number',\n message: 'Phone number is incorrectly formatted'\n}\n\nexport const NO_MFA_TICKET_ERROR: ValidationErrorPayload = {\n status: VALIDATION_ERROR_CODE,\n error: 'no-mfa-ticket',\n message: 'No MFA ticket has been provided'\n}\n", "import axios, { AxiosError } from 'axios'\n\nimport { NETWORK_ERROR_CODE } from './errors'\n\nexport const nhostApiClient = (backendUrl: string) => {\n const client = axios.create({ baseURL: backendUrl })\n\n client.interceptors.response.use(\n (response) => response,\n (error: AxiosError<{ message: string; error?: string; statusCode?: number }>) =>\n Promise.reject({\n error: {\n message:\n error.response?.data?.message ??\n error.message ??\n error.request.responseText ??\n JSON.stringify(error),\n status: error.response?.status ?? error.response?.data.statusCode ?? NETWORK_ERROR_CODE,\n error: error.response?.data.error || error.request.statusText || 'network'\n }\n })\n )\n return client\n}\n", "export const encodeQueryParameters = (baseUrl: string, parameters?: Record<string, unknown>) => {\n const encodedParameters =\n parameters &&\n Object.entries(parameters)\n .map(([key, value]) => {\n const stringValue = Array.isArray(value)\n ? value.join(',')\n : typeof value === 'object'\n ? JSON.stringify(value)\n : (value as string)\n return `${key}=${encodeURIComponent(stringValue)}`\n })\n .join('&')\n if (encodedParameters) return `${baseUrl}?${encodedParameters}`\n else return baseUrl\n}\n\nexport const rewriteRedirectTo = (\n clientUrl: string,\n options?: Record<string, unknown> & { redirectTo?: string }\n) =>\n options?.redirectTo\n ? {\n ...options,\n redirectTo: options?.redirectTo?.startsWith('/')\n ? clientUrl + options.redirectTo\n : options?.redirectTo\n }\n : options\n", "import { MIN_PASSWORD_LENGTH } from './constants'\n\nexport const isValidEmail = (email?: string | null) =>\n !!email &&\n typeof email === 'string' &&\n !!String(email)\n .toLowerCase()\n .match(\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n )\n\nexport const isValidPassword = (password?: string | null) =>\n !!password && typeof password === 'string' && password.length >= MIN_PASSWORD_LENGTH\n\n// TODO improve validation\nexport const isValidPhoneNumber = (phoneNumber?: string | null) =>\n !!phoneNumber && typeof phoneNumber === 'string'\n", "import type { ErrorPayload } from '../errors'\nimport { User } from '../types'\n\nexport type AuthContext = {\n user: User | null\n mfa: {\n ticket: string\n } | null\n accessToken: {\n value: string | null\n expiresAt: Date\n }\n refreshTimer: {\n elapsed: number\n attempts: number\n }\n refreshToken: {\n value: string | null\n }\n errors: Partial<Record<'registration' | 'authentication' | 'signout', ErrorPayload>>\n}\n\nexport const INITIAL_MACHINE_CONTEXT: AuthContext = {\n user: null,\n mfa: null,\n accessToken: {\n value: null,\n expiresAt: new Date()\n },\n refreshTimer: {\n elapsed: 0,\n attempts: 0\n },\n refreshToken: {\n value: null\n },\n errors: {}\n}\n", "import { assign, createMachine, send } from 'xstate'\n\nimport { AuthClient } from '../client'\nimport { ErrorPayload, INVALID_EMAIL_ERROR } from '../errors'\nimport { nhostApiClient } from '../hasura-auth'\nimport { ChangeEmailOptions } from '../types'\nimport { rewriteRedirectTo } from '../utils'\nimport { isValidEmail } from '../validators'\n\nexport type ChangeEmailContext = {\n error: ErrorPayload | null\n}\n\nexport type ChangeEmailEvents =\n | {\n type: 'REQUEST'\n email?: string\n options?: ChangeEmailOptions\n }\n | { type: 'SUCCESS' }\n | { type: 'ERROR'; error: ErrorPayload | null }\n\nexport const createChangeEmailMachine = ({ backendUrl, clientUrl, interpreter }: AuthClient) => {\n const api = nhostApiClient(backendUrl)\n return createMachine(\n {\n schema: {\n context: {} as ChangeEmailContext,\n events: {} as ChangeEmailEvents\n },\n tsTypes: {} as import('./change-email.typegen').Typegen0,\n preserveActionOrder: true,\n id: 'changeEmail',\n initial: 'idle',\n context: { error: null },\n states: {\n idle: {\n on: {\n REQUEST: [\n {\n cond: 'invalidEmail',\n actions: 'saveInvalidEmailError',\n target: '.error'\n },\n {\n target: 'requesting'\n }\n ]\n },\n initial: 'initial',\n states: {\n initial: {},\n success: {},\n error: {}\n }\n },\n requesting: {\n invoke: {\n src: 'requestChange',\n id: 'requestChange',\n onDone: { target: 'idle.success', actions: 'reportSuccess' },\n onError: { actions: ['saveRequestError', 'reportError'], target: 'idle.error' }\n }\n }\n }\n },\n {\n actions: {\n saveInvalidEmailError: assign({ error: (_) => INVALID_EMAIL_ERROR }),\n saveRequestError: assign({\n error: (_, { data: { error } }: any) => error\n }),\n reportError: send((ctx) => ({ type: 'ERROR', error: ctx.error })),\n reportSuccess: send('SUCCESS')\n },\n guards: {\n invalidEmail: (_, { email }) => !isValidEmail(email)\n },\n services: {\n requestChange: async (_, { email, options }) => {\n const res = await api.post(\n '/user/email/change',\n {\n newEmail: email,\n options: rewriteRedirectTo(clientUrl, options)\n },\n {\n headers: {\n authorization: `Bearer ${interpreter?.state.context.accessToken.value}`\n }\n }\n )\n return res.data\n }\n }\n }\n )\n}\n", "import { assign, createMachine, send } from 'xstate'\n\nimport { AuthClient } from '../client'\nimport { ErrorPayload, INVALID_PASSWORD_ERROR } from '../errors'\nimport { nhostApiClient } from '../hasura-auth'\nimport { isValidPassword } from '../validators'\n\nexport type ChangePasswordContext = {\n error: ErrorPayload | null\n}\nexport type ChangePasswordEvents =\n | {\n type: 'REQUEST'\n password?: string\n }\n | { type: 'SUCCESS' }\n | { type: 'ERROR'; error: ErrorPayload | null }\n\nexport const createChangePasswordMachine = ({ backendUrl, interpreter }: AuthClient) => {\n const api = nhostApiClient(backendUrl)\n return createMachine(\n {\n schema: {\n context: {} as ChangePasswordContext,\n events: {} as ChangePasswordEvents\n },\n tsTypes: {} as import('./change-password.typegen').Typegen0,\n preserveActionOrder: true,\n id: 'changePassword',\n initial: 'idle',\n context: { error: null },\n states: {\n idle: {\n on: {\n REQUEST: [\n {\n cond: 'invalidPassword',\n actions: 'saveInvalidPasswordError',\n target: '.error'\n },\n {\n target: 'requesting'\n }\n ]\n },\n initial: 'initial',\n states: {\n initial: {},\n success: {},\n error: {}\n }\n },\n requesting: {\n invoke: {\n src: 'requestChange',\n id: 'requestChange',\n onDone: { target: 'idle.success', actions: 'reportSuccess' },\n onError: { actions: ['saveRequestError', 'reportError'], target: 'idle.error' }\n }\n }\n }\n },\n {\n actions: {\n saveInvalidPasswordError: assign({ error: (_) => INVALID_PASSWORD_ERROR }),\n saveRequestError: assign({\n error: (_, { data: { error } }: any) => {\n console.log(error)\n return error\n }\n }),\n reportError: send((ctx) => ({ type: 'ERROR', error: ctx.error })),\n reportSuccess: send('SUCCESS')\n },\n guards: {\n invalidPassword: (_, { password }) => !isValidPassword(password)\n },\n services: {\n requestChange: (_, { password }) =>\n api.post<string, { data: { error?: ErrorPayload } }>(\n '/user/password',\n { newPassword: password },\n {\n headers: {\n authorization: `Bearer ${interpreter?.state.context.accessToken.value}`\n }\n }\n )\n }\n }\n )\n}\n", "import { assign, createMachine, send } from 'xstate'\n\nimport { AuthClient } from '../client'\nimport { ErrorPayload } from '../errors'\nimport { nhostApiClient } from '../hasura-auth'\nimport { ResetPasswordOptions } from '../types'\nimport { rewriteRedirectTo } from '../utils'\n\nexport type ResetPasswordContext = {\n error: ErrorPayload | null\n}\nexport type ResetPasswordEvents =\n | {\n type: 'REQUEST'\n email?: string\n options?: ResetPasswordOptions\n }\n | { type: 'SUCCESS' }\n | { type: 'ERROR'; error: ErrorPayload | null }\n\nexport const createResetPasswordMachine = ({ backendUrl, clientUrl }: AuthClient) => {\n const api = nhostApiClient(backendUrl)\n return createMachine(\n {\n schema: {\n context: {} as ResetPasswordContext,\n events: {} as ResetPasswordEvents\n },\n tsTypes: {} as import('./reset-password.typegen').Typegen0,\n preserveActionOrder: true,\n id: 'changePassword',\n initial: 'idle',\n context: { error: null },\n states: {\n idle: {\n on: {\n REQUEST: 'requesting'\n },\n initial: 'initial',\n states: {\n initial: {},\n success: {},\n error: {}\n }\n },\n requesting: {\n invoke: {\n src: 'requestChange',\n id: 'requestChange',\n onDone: { target: 'idle.success', actions: 'reportSuccess' },\n onError: { actions: ['saveRequestError', 'reportError'], target: 'idle.error' }\n }\n }\n }\n },\n {\n actions: {\n saveRequestError: assign({\n error: (_, { data: { error } }: any) => {\n console.log(error)\n return error\n }\n }),\n reportError: send((ctx) => ({ type: 'ERROR', error: ctx.error })),\n reportSuccess: send('SUCCESS')\n },\n services: {\n requestChange: (_, { email, options }) =>\n api.post<string, { data: { error?: ErrorPayload } }>('/user/password/reset', {\n email,\n options: rewriteRedirectTo(clientUrl, options)\n })\n }\n }\n )\n}\n", "import { assign, createMachine, send } from 'xstate'\n\nimport { AuthClient } from '../client'\nimport { ErrorPayload, INVALID_EMAIL_ERROR } from '../errors'\nimport { nhostApiClient } from '../hasura-auth'\nimport { SendVerificationEmailOptions } from '../types'\nimport { rewriteRedirectTo } from '../utils'\nimport { isValidEmail } from '../validators'\n\nexport type SendVerificationEmailContext = {\n error: ErrorPayload | null\n}\n\nexport type SendVerificationEmailEvents =\n | {\n type: 'REQUEST'\n email?: string\n options?: SendVerificationEmailOptions\n }\n | { type: 'SUCCESS' }\n | { type: 'ERROR'; error: ErrorPayload | null }\n\nexport const createSendVerificationEmailMachine = ({\n backendUrl,\n clientUrl,\n interpreter\n}: AuthClient) => {\n const api = nhostApiClient(backendUrl)\n return createMachine(\n {\n schema: {\n context: {} as SendVerificationEmailContext,\n events: {} as SendVerificationEmailEvents\n },\n tsTypes: {} as import('./send-verification-email.typegen').Typegen0,\n preserveActionOrder: true,\n id: 'sendVerificationEmail',\n initial: 'idle',\n context: { error: null },\n states: {\n idle: {\n on: {\n REQUEST: [\n {\n cond: 'invalidEmail',\n actions: 'saveInvalidEmailError',\n target: '.error'\n },\n {\n target: 'requesting'\n }\n ]\n },\n initial: 'initial',\n states: {\n initial: {},\n success: {},\n error: {}\n }\n },\n requesting: {\n invoke: {\n src: 'request',\n id: 'request',\n onDone: { target: 'idle.success', actions: 'reportSuccess' },\n onError: { actions: ['saveRequestError', 'reportError'], target: 'idle.error' }\n }\n }\n }\n },\n {\n actions: {\n saveInvalidEmailError: assign({ error: (_) => INVALID_EMAIL_ERROR }),\n saveRequestError: assign({\n error: (_, { data: { error } }: any) => error\n }),\n reportError: send((ctx) => ({ type: 'ERROR', error: ctx.error })),\n reportSuccess: send('SUCCESS')\n },\n guards: {\n invalidEmail: (_, { email }) => !isValidEmail(email)\n },\n services: {\n request: async (_, { email, options }) => {\n const res = await api.post('/user/email/send-verification-email', {\n email,\n options: rewriteRedirectTo(clientUrl, options)\n })\n return res.data\n }\n }\n }\n )\n}\n", "import type { AxiosRequestConfig, AxiosResponse } from 'axios'\nimport { BroadcastChannel } from 'broadcast-channel'\nimport { assign, createMachine, send } from 'xstate'\n\nimport {\n NHOST_JWT_EXPIRES_AT_KEY,\n NHOST_REFRESH_TOKEN_KEY,\n TOKEN_REFRESH_MARGIN\n} from '../constants'\nimport {\n INVALID_EMAIL_ERROR,\n INVALID_PASSWORD_ERROR,\n INVALID_PHONE_NUMBER_ERROR,\n NO_MFA_TICKET_ERROR\n} from '../errors'\nimport { nhostApiClient } from '../hasura-auth'\nimport { StorageGetter, StorageSetter } from '../storage'\nimport { Mfa, NhostSession } from '../types'\nimport { rewriteRedirectTo } from '../utils'\nimport { isValidEmail, isValidPassword, isValidPhoneNumber } from '../validators'\n\nimport { AuthContext, INITIAL_MACHINE_CONTEXT } from './context'\nimport { AuthEvents } from './events'\n\nexport type { AuthContext, AuthEvents }\nexport * from './change-email'\nexport * from './change-password'\nexport * from './enable-mfa'\nexport * from './reset-password'\nexport * from './send-verification-email'\n\nexport type AuthMachineOptions = {\n backendUrl: string\n clientUrl?: string\n refreshIntervalTime?: number\n clientStorageGetter?: StorageGetter\n clientStorageSetter?: StorageSetter\n autoSignIn?: boolean\n autoRefreshToken?: boolean\n}\n\nexport type AuthMachine = ReturnType<typeof createAuthMachine>\n\n// TODO actions typings\n\nexport const createAuthMachine = ({\n backendUrl,\n clientUrl,\n clientStorageGetter,\n clientStorageSetter,\n refreshIntervalTime,\n autoRefreshToken = true,\n autoSignIn = true\n}: Required<AuthMachineOptions>) => {\n const api = nhostApiClient(backendUrl)\n const postRequest = async <T = any, R = AxiosResponse<T>, D = any>(\n url: string,\n data?: D,\n config?: AxiosRequestConfig<D>\n ): Promise<R> => {\n const result = await api.post(url, data, config)\n return result.data\n }\n return createMachine(\n {\n schema: {\n context: {} as AuthContext,\n events: {} as AuthEvents\n },\n tsTypes: {} as import('./index.typegen').Typegen0,\n context: INITIAL_MACHINE_CONTEXT,\n preserveActionOrder: true,\n id: 'nhost',\n type: 'parallel',\n states: {\n authentication: {\n initial: 'checkAutoSignIn',\n on: {\n SESSION_UPDATE: [\n {\n cond: 'hasSession',\n actions: ['saveSession', 'persist', 'resetTimer', 'reportTokenChanged'],\n target: '.signedIn'\n }\n ]\n },\n states: {\n checkAutoSignIn: {\n always: [{ cond: 'isAutoSignInDisabled', target: 'importingRefreshToken' }],\n invoke: {\n id: 'autoSignIn',\n src: 'autoSignIn',\n onDone: {\n target: 'signedIn',\n actions: ['saveSession', 'persist', 'reportTokenChanged']\n },\n onError: 'importingRefreshToken'\n }\n },\n importingRefreshToken: {\n invoke: {\n id: 'importRefreshToken',\n src: 'importRefreshToken',\n onDone: { actions: 'saveRefreshToken', target: 'starting' }\n }\n },\n starting: {\n always: [\n {\n cond: 'isSignedIn',\n target: 'signedIn'\n },\n {\n cond: 'hasRefreshTokenWithoutSession',\n target: ['authenticating.token', '#nhost.token.running']\n },\n 'signedOut'\n ]\n },\n signedOut: {\n tags: ['ready'],\n initial: 'noErrors',\n entry: 'reportSignedOut',\n states: {\n noErrors: {},\n success: {},\n needsEmailVerification: {},\n needsSmsOtp: {},\n needsMfa: {},\n failed: {\n exit: 'resetAuthenticationError',\n initial: 'server',\n states: {\n server: {},\n validation: {\n states: {\n password: {},\n email: {},\n phoneNumber: {}\n }\n }\n }\n },\n signingOut: {\n entry: 'destroyToken',\n exit: 'clearContext',\n invoke: {\n src: 'signout',\n id: 'signingOut',\n onDone: {\n target: 'success'\n },\n onError: {\n target: 'failed.server'\n // TODO save error\n }\n }\n }\n },\n on: {\n SIGNIN_PASSWORD: [\n {\n cond: 'invalidEmail',\n actions: ['saveInvalidEmail'],\n target: '.failed.validation.email'\n },\n {\n cond: 'invalidPassword',\n actions: ['saveInvalidPassword'],\n target: '.failed.validation.password'\n },\n '#nhost.authentication.authenticating.password'\n ],\n SIGNIN_PASSWORDLESS_EMAIL: [\n {\n cond: 'invalidEmail',\n actions: 'saveInvalidEmail',\n target: '.failed.validation.email'\n },\n '#nhost.authentication.authenticating.passwordlessEmail'\n ],\n SIGNIN_PASSWORDLESS_SMS: [\n {\n cond: 'invalidPhoneNumber',\n actions: 'saveInvalidPhoneNumber',\n target: '.failed.validation.phoneNumber'\n },\n '#nhost.authentication.authenticating.passwordlessSms'\n ],\n SIGNIN_PASSWORDLESS_SMS_OTP: [\n {\n cond: 'invalidPhoneNumber',\n actions: 'saveInvalidPhoneNumber',\n target: '.failed.validation.phoneNumber'\n },\n '#nhost.authentication.authenticating.passwordlessSmsOtp'\n ],\n SIGNUP_EMAIL_PASSWORD: [\n {\n cond: 'invalidEmail',\n actions: 'saveInvalidSignUpEmail',\n target: '.failed.validation.email'\n },\n {\n cond: 'invalidPassword',\n actions: 'saveInvalidSignUpPassword',\n target: '.failed.validation.password'\n },\n '#nhost.authentication.registering'\n ],\n SIGNIN_ANONYMOUS: '#nhost.authentication.authenticating.anonymous',\n SIGNIN_MFA_TOTP: [\n {\n cond: 'noMfaTicket',\n actions: ['saveNoMfaTicketError'],\n target: '.failed'\n },\n '#nhost.authentication.authenticating.mfa.totp'\n ]\n }\n },\n authenticating: {\n states: {\n passwordlessEmail: {\n invoke: {\n src: 'signInPasswordlessEmail',\n id: 'authenticatePasswordlessEmail',\n onDone: '#nhost.authentication.signedOut.needsEmailVerification',\n onError: {\n actions: 'saveAuthenticationError',\n target: '#nhost.authentication.signedOut.failed.server'\n }\n }\n },\n passwordlessSms: {\n invoke: {\n src: 'signInPasswordlessSms',\n id: 'authenticatePasswordlessSms',\n onDone: '#nhost.authentication.signedOut.needsSmsOtp',\n onError: {\n actions: 'saveAuthenticationError',\n target: '#nhost.authentication.signedOut.failed.server'\n }\n }\n },\n passwordlessSmsOtp: {\n invoke: {\n src: 'signInPasswordlessSmsOtp',\n id: 'authenticatePasswordlessSmsOtp',\n onDone: {\n actions: ['saveSession', 'persist', 'reportTokenChanged'],\n target: '#nhost.authentication.signedIn'\n },\n onError: {\n actions: 'saveAuthenticationError',\n target: '#nhost.authentication.signedOut.failed.server'\n }\n }\n },\n password: {\n invoke: {\n src: 'signInPassword',\n id: 'authenticateUserWithPassword',\n onDone: [\n {\n cond: 'hasMfaTicket',\n actions: ['saveMfaTicket'],\n target: '#nhost.authentication.signedOut.needsMfa'\n },\n {\n actions: ['saveSession', 'persist', 'reportTokenChanged'],\n target: '#nhost.authentication.signedIn'\n }\n ],\n onError: [\n {\n cond: 'unverified',\n target: '#nhost.authentication.signedOut.needsEmailVerification'\n },\n {\n actions: 'saveAuthenticationError',\n target: '#nhost.authentication.signedOut.failed.server'\n }\n ]\n }\n },\n token: {},\n anonymous: {\n invoke: {\n src: 'signInAnonymous',\n id: 'authenticateAnonymously',\n onDone: {\n actions: ['saveSession', 'persist', 'reportTokenChanged'],\n target: '#nhost.authentication.signedIn'\n },\n onError: {\n actions: 'saveAuthenticationError',\n target: '#nhost.authentication.signedOut.failed.server'\n }\n }\n },\n mfa: {\n states: {\n totp: {\n invoke: {\n src: 'signInMfaTotp',\n id: 'signInMfaTotp',\n onDone: {\n actions: ['saveSession', 'persist', 'reportTokenChanged'],\n target: '#nhost.authentication.signedIn'\n },\n onError: {\n actions: ['saveAuthenticationError'],\n target: '#nhost.authentication.signedOut.failed.server'\n }\n }\n }\n }\n }\n }\n },\n registering: {\n entry: 'resetSignUpError',\n invoke: {\n src: 'registerUser',\n id: 'registerUser',\n onDone: [\n {\n cond: 'hasSession',\n target: '#nhost.authentication.signedIn',\n actions: ['saveSession', 'persist', 'reportTokenChanged']\n },\n {\n target: '#nhost.authentication.signedOut.needsEmailVerification'\n }\n ],\n onError: [\n {\n cond: 'unverified',\n target: '#nhost.authentication.signedOut.needsEmailVerification'\n },\n {\n actions: 'saveRegisrationError',\n target: '#nhost.authentication.signedOut.failed.server'\n }\n ]\n }\n },\n\n signedIn: {\n tags: ['ready'],\n type: 'parallel',\n entry: 'reportSignedIn',\n on: {\n SIGNOUT: '#nhost.authentication.signedOut.signingOut',\n DEANONYMIZE: {\n // TODO implement\n target: '.deanonymizing'\n }\n },\n states: {\n refreshTimer: {\n id: 'timer',\n initial: 'idle',\n states: {\n disabled: { type: 'final' },\n stopped: {\n always: {\n cond: 'noToken',\n target: 'idle'\n }\n },\n idle: {\n always: [\n { cond: 'isAutoRefreshDisabled', target: 'disabled' },\n {\n cond: 'hasRefreshToken',\n target: 'running'\n }\n ]\n },\n running: {\n initial: 'pending',\n entry: 'resetTimer',\n states: {\n pending: {\n after: {\n '1000': {\n actions: 'tickRefreshTimer',\n internal: false,\n target: 'pending'\n }\n },\n always: {\n cond: 'refreshTimerShouldRefresh',\n target: 'refreshing'\n }\n },\n refreshing: {\n invoke: {\n src: 'refreshToken',\n id: 'refreshToken',\n onDone: {\n actions: ['saveSession', 'persist', 'resetTimer'],\n target: 'pending'\n },\n onError: [\n // TODO handle error\n // {\n // actions: 'retry',\n // cond: 'canRetry',\n // target: 'pending'\n // },\n // {\n // actions: ['sendError', 'resetToken'],\n // target: '#timer.stopped'\n // }\n ]\n }\n }\n }\n }\n }\n },\n deanonymizing: {\n // TODO implement\n initial: 'error',\n states: {\n error: {},\n success: {}\n }\n }\n }\n }\n }\n },\n token: {\n initial: 'idle',\n states: {\n idle: {\n on: {\n TRY_TOKEN: 'running'\n },\n initial: 'noErrors',\n states: { noErrors: {}, error: {} }\n },\n running: {\n invoke: {\n src: 'refreshToken',\n id: 'authenticateWithToken',\n onDone: {\n actions: ['saveSession', 'persist', 'reportTokenChanged'],\n target: ['#nhost.authentication.signedIn', 'idle.noErrors']\n },\n onError: [\n { cond: 'isSignedIn', target: 'idle.error' },\n {\n target: ['#nhost.authentication.signedOut', 'idle.error']\n }\n ]\n }\n }\n }\n }\n }\n },\n {\n actions: {\n reportSignedIn: send('SIGNED_IN'),\n reportSignedOut: send('SIGNED_OUT'),\n reportTokenChanged: send('TOKEN_CHANGED'),\n clearContext: assign(() => INITIAL_MACHINE_CONTEXT),\n\n saveSession: assign({\n user: (_, e: any) => e.data?.session?.user,\n accessToken: (_, e) => ({\n value: e.data?.session?.accessToken,\n expiresAt: new Date(Date.now() + e.data?.session?.accessTokenExpiresIn * 1_000)\n }),\n refreshToken: (_, e) => ({ value: e.data?.session?.refreshToken })\n }),\n saveMfaTicket: assign({\n mfa: (_, e: any) => e.data?.mfa ?? null\n }),\n\n resetTimer: assign({\n refreshTimer: (ctx, e) => {\n return {\n elapsed: 0,\n attempts: 0\n }\n }\n }),\n\n tickRefreshTimer: assign({\n refreshTimer: (ctx, e) => {\n return {\n elapsed: ctx.refreshTimer.elapsed + 1,\n attempts: ctx.refreshTimer.attempts\n }\n }\n }),\n\n // * Authenticaiton errors\n saveAuthenticationError: assign({\n errors: ({ errors }, { data: { error } }: any) => ({ ...errors, authentication: error })\n }),\n resetAuthenticationError: assign({\n errors: ({ errors: { authentication, ...errors } }) => errors\n }),\n saveInvalidEmail: assign({\n errors: ({ errors }) => ({ ...errors, authentication: INVALID_EMAIL_ERROR })\n }),\n saveInvalidPassword: assign({\n errors: ({ errors }) => ({ ...errors, authentication: INVALID_PASSWORD_ERROR })\n }),\n saveInvalidPhoneNumber: assign({\n errors: ({ errors }) => ({ ...errors, authentication: INVALID_PHONE_NUMBER_ERROR })\n }),\n saveRegisrationError: assign({\n errors: ({ errors }, { data: { error } }: any) => ({ ...errors, registration: error })\n }),\n resetSignUpError: assign({\n errors: ({ errors: { registration, ...errors } }) => errors\n }),\n saveInvalidSignUpPassword: assign({\n errors: ({ errors }) => ({ ...errors, registration: INVALID_EMAIL_ERROR })\n }),\n saveInvalidSignUpEmail: assign({\n errors: ({ errors }) => ({ ...errors, registration: INVALID_PASSWORD_ERROR })\n }),\n saveNoMfaTicketError: assign({\n errors: ({ errors }) => ({ ...errors, registration: NO_MFA_TICKET_ERROR })\n }),\n saveRefreshToken: assign({\n accessToken: (ctx, e: any) => ({ ...ctx.accessToken, expiresAt: e.data.expiresAt }),\n refreshToken: (ctx, e: any) => ({ ...ctx.refreshToken, value: e.data.refreshToken })\n }),\n // * Persist the refresh token and the jwt expiration outside of the machine\n persist: (_, { data }: any) => {\n clientStorageSetter(NHOST_REFRESH_TOKEN_KEY, data.session.refreshToken)\n if (data.session.accessTokenExpiresIn) {\n const nextRefresh = new Date(\n Date.now() + data.session.accessTokenExpiresIn * 1_000\n ).toISOString()\n clientStorageSetter(NHOST_JWT_EXPIRES_AT_KEY, nextRefresh)\n } else {\n clientStorageSetter(NHOST_JWT_EXPIRES_AT_KEY, null)\n }\n },\n destroyToken: () => {\n clientStorageSetter(NHOST_REFRESH_TOKEN_KEY, null)\n clientStorageSetter(NHOST_JWT_EXPIRES_AT_KEY, null)\n }\n },\n\n guards: {\n isSignedIn: (ctx) => !!ctx.user && !!ctx.refreshToken.value && !!ctx.accessToken.value,\n hasRefreshTokenWithoutSession: (ctx) =>\n !!ctx.refreshToken.value && !ctx.user && !ctx.accessToken.value,\n noToken: (ctx) => !ctx.refreshToken.value,\n noMfaTicket: (ctx, { ticket }) => !ticket && !ctx.mfa?.ticket,\n hasRefreshToken: (ctx) => !!ctx.refreshToken.value,\n isAutoRefreshDisabled: () => !autoRefreshToken,\n isAutoSignInDisabled: () => !autoSignIn,\n refreshTimerShouldRefresh: (ctx) =>\n ctx.refreshTimer.elapsed >\n Math.max(\n (Date.now() - ctx.accessToken.expiresAt.getTime()) / 1_000 - TOKEN_REFRESH_MARGIN,\n refreshIntervalTime\n ),\n\n // * Authentication errors\n unverified: (_, { data: { error } }: any) =>\n error.status === 401 && error.message === 'Email is not verified',\n\n // * Event guards\n hasSession: (_, e: any) => !!e.data?.session,\n hasMfaTicket: (_, e: any) => !!e.data?.mfa,\n invalidEmail: (_, { email }) => !isValidEmail(email),\n invalidPassword: (_, { password }) => !isValidPassword(password),\n invalidPhoneNumber: (_, { phoneNumber }) => !isValidPhoneNumber(phoneNumber)\n },\n\n services: {\n signInPassword: (_, { email, password }) =>\n postRequest('/signin/email-password', {\n email,\n password\n }),\n signInPasswordlessSms: (_, { phoneNumber, options }) =>\n postRequest('/signin/passwordless/sms', {\n phoneNumber,\n options: rewriteRedirectTo(clientUrl, options)\n }),\n signInPasswordlessSmsOtp: (_, { phoneNumber, otp }) =>\n postRequest('/signin/passwordless/sms/otp', {\n phoneNumber,\n otp\n }),\n\n signInPasswordlessEmail: (_, { email, options }) =>\n postRequest('/signin/passwordless/email', {\n email,\n options: rewriteRedirectTo(clientUrl, options)\n }),\n signInAnonymous: (_) => postRequest('/signin/anonymous'),\n signInMfaTotp: (context, { ticket, otp }) =>\n postRequest<\n { mfa: Mfa | null; session: NhostSession | null },\n { mfa: Mfa | null; session: NhostSession | null }\n >('/signin/mfa/totp', {\n ticket: ticket || context.mfa?.ticket,\n otp\n }),\n\n refreshToken: async (ctx, event) => {\n const refreshToken = event.type === 'TRY_TOKEN' ? event.token : ctx.refreshToken.value\n const session = await postRequest('/token', {\n refreshToken\n })\n return { session }\n },\n signout: (ctx, e) =>\n postRequest('/signout', {\n refreshToken: ctx.refreshToken.value,\n all: !!e.all\n }),\n\n registerUser: (_, { email, password, options }) =>\n postRequest('/signup/email-password', {\n email,\n password,\n options: rewriteRedirectTo(clientUrl, options)\n }),\n\n autoSignIn: async () => {\n if (typeof window === 'undefined' || !window.location)\n throw Error('window is undefined or location does not exist')\n const { hash } = window.location\n if (!hash) return\n const params = new URLSearchParams(hash.slice(1))\n const refreshToken = params.get('refreshToken')\n if (refreshToken) {\n const session = await postRequest('/token', {\n refreshToken\n })\n // * remove hash from the current url after consumming the token\n // TODO remove the hash. For the moment, it is kept to avoid regression from the current SDK.\n // * Then, only `refreshToken` will be in the hash, while `type` will be sent by hasura-auth as a query parameter\n // window.history.pushState({}, '', location.pathname)\n const channel = new BroadcastChannel('nhost')\n // TODO broadcat session instead of token\n channel.postMessage(refreshToken)\n return { session }\n }\n },\n importRefreshToken: async () => {\n const stringExpiresAt = await clientStorageGetter(NHOST_JWT_EXPIRES_AT_KEY)\n const expiresAt = stringExpiresAt ? new Date(stringExpiresAt) : null\n const refreshToken = await clientStorageGetter(NHOST_REFRESH_TOKEN_KEY)\n return { refreshToken, expiresAt }\n }\n }\n }\n )\n}\n", "/*! js-cookie v3.0.1 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (key, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n key = encodeURIComponent(key)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n key + '=' + converter.write(value, key) + stringifiedAttributes)\n }\n\n function get (key) {\n if (typeof document === 'undefined' || (arguments.length && !key)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var foundKey = decodeURIComponent(parts[0]);\n jar[foundKey] = converter.read(value, foundKey);\n\n if (key === foundKey) {\n break\n }\n } catch (e) {}\n }\n\n return key ? jar[key] : jar\n }\n\n return Object.create(\n {\n set: set,\n get: get,\n remove: function (key, attributes) {\n set(\n key,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport default api;\n", "import Cookies from 'js-cookie'\n\nexport type StorageGetter = (key: string) => string | null | Promise<string | null>\nexport type StorageSetter = (key: string, value: string | null) => void | Promise<void>\n\nconst isBrowser = typeof window !== 'undefined'\n\nconst inMemoryLocalStorage: Map<string, string | null> = new Map()\n\nexport const defaultClientStorageGetter: StorageGetter = (key) => {\n if (isBrowser && localStorage) return localStorage.getItem(key)\n else return inMemoryLocalStorage.get(key) ?? null\n}\n\nexport const defaultClientStorageSetter: StorageSetter = (key, value) => {\n if (isBrowser && localStorage) {\n if (value) {\n localStorage.setItem(key, value)\n } else {\n localStorage.removeItem(key)\n }\n } else {\n if (value) {\n inMemoryLocalStorage.set(key, value)\n } else if (inMemoryLocalStorage.has(key)) {\n inMemoryLocalStorage.delete(key)\n }\n }\n}\n\nexport const cookieStorageGetter: StorageGetter = (key) => {\n if (isBrowser) {\n return Cookies.get(key) ?? null\n } else {\n return null\n }\n}\n\nexport const cookieStorageSetter: StorageSetter = (key, value) => {\n if (isBrowser) {\n if (value) {\n Cookies.set(key, value)\n // localStorage.setItem(key, value)\n } else {\n Cookies.remove(key)\n // localStorage.removeItem(key)\n }\n }\n}\n", "import { BroadcastChannel } from 'broadcast-channel'\nimport { interpret } from 'xstate'\n\nimport { MIN_TOKEN_REFRESH_INTERVAL } from './constants'\nimport { AuthMachine, AuthMachineOptions, createAuthMachine } from './machines'\nimport { defaultClientStorageGetter, defaultClientStorageSetter } from './storage'\nimport type { AuthInterpreter } from './types'\n\nexport type NhostClientOptions = AuthMachineOptions & { start?: boolean }\n\nexport class AuthClient {\n readonly backendUrl: string\n readonly clientUrl: string\n readonly machine: AuthMachine\n #interpreter?: AuthInterpreter\n #channel?: BroadcastChannel\n #subscriptions: Set<(client: AuthClient) => void> = new Set()\n\n constructor({\n backendUrl,\n clientUrl = (typeof window !== 'undefined' && window.location?.origin) || '',\n clientStorageGetter = defaultClientStorageGetter,\n clientStorageSetter = defaultClientStorageSetter,\n refreshIntervalTime = MIN_TOKEN_REFRESH_INTERVAL,\n autoSignIn = true,\n autoRefreshToken = true,\n start = true\n }: NhostClientOptions) {\n this.backendUrl = backendUrl\n this.clientUrl = clientUrl\n\n this.machine = createAuthMachine({\n backendUrl,\n clientUrl,\n refreshIntervalTime,\n clientStorageGetter,\n clientStorageSetter,\n autoSignIn,\n autoRefreshToken\n })\n\n if (start) {\n this.interpreter = interpret(this.machine)\n this.interpreter.start()\n }\n\n if (typeof window !== 'undefined' && autoSignIn) {\n this.#channel = new BroadcastChannel<string>('nhost')\n this.#channel.addEventListener('message', (token) => {\n const existingToken = this.interpreter?.state.context.refreshToken\n if (this.interpreter && token !== existingToken) {\n this.interpreter.send({ type: 'TRY_TOKEN', token })\n }\n })\n }\n }\n\n get interpreter(): AuthInterpreter | undefined {\n return this.#interpreter\n }\n set interpreter(interpreter: AuthInterpreter | undefined) {\n this.#interpreter = interpreter\n if (interpreter) {\n this.#subscriptions.forEach((fn) => fn(this))\n }\n }\n\n onStart(fn: (interpreter: AuthClient) => void) {\n this.#subscriptions.add(fn)\n }\n}\n", "import {\n AuthContext,\n defaultClientStorageGetter,\n defaultClientStorageSetter,\n StorageGetter,\n StorageSetter\n} from '@nhost/core'\n\nimport { ClientStorage, ClientStorageType, Session } from './types'\n\nexport const isBrowser = () => typeof window !== 'undefined'\n\nexport const getSession = (context?: AuthContext): Session | null => {\n if (!context || !context.accessToken.value || !context.refreshToken.value) return null\n return {\n accessToken: context.accessToken.value,\n accessTokenExpiresIn: (context.accessToken.expiresAt.getTime() - Date.now()) / 1000,\n refreshToken: context.refreshToken.value,\n user: context.user\n }\n}\n\nconst checkStorageAccessors = (\n clientStorage: ClientStorage,\n accessors: Array<keyof ClientStorage>\n) => {\n accessors.forEach((key) => {\n if (typeof clientStorage[key] !== 'function') {\n console.error(`clientStorage.${key} is not a function`)\n }\n })\n}\n\nexport const localStorageGetter = (\n clientStorageType: ClientStorageType,\n clientStorage?: ClientStorage\n): StorageGetter => {\n if (clientStorage) {\n if (clientStorageType === 'react-native' || clientStorageType === 'custom') {\n checkStorageAccessors(clientStorage, ['getItem'])\n return (key) => clientStorage.getItem?.(key)\n } else if (clientStorageType === 'capacitor') {\n checkStorageAccessors(clientStorage, ['get'])\n return (key) => clientStorage.get?.({ key })\n } else if (clientStorageType === 'expo-secure-storage') {\n checkStorageAccessors(clientStorage, ['getItemAsync'])\n return (key) => clientStorage.getItemAsync?.(key)\n }\n }\n return defaultClientStorageGetter\n}\n\nexport const localStorageSetter = (\n clientStorageType: ClientStorageType,\n clientStorage?: ClientStorage\n): StorageSetter => {\n if (clientStorage) {\n if (clientStorageType === 'react-native' || clientStorageType === 'custom') {\n checkStorageAccessors(clientStorage, ['setItem', 'removeItem'])\n\n return (key, value) => {\n if (value) clientStorage.setItem?.(key, value)\n else clientStorage.removeItem?.(key)\n }\n } else if (clientStorageType === 'capacitor') {\n checkStorageAccessors(clientStorage, ['set', 'remove'])\n return (key, value) => {\n if (value) clientStorage.set?.({ key, value })\n else clientStorage.remove?.({ key })\n }\n } else if (clientStorageType === 'expo-secure-storage') {\n checkStorageAccessors(clientStorage, ['setItemAsync', 'deleteItemAsync'])\n return async (key, value) => {\n if (value) await clientStorage.setItemAsync?.(key, value)\n else clientStorage.deleteItemAsync?.(key)\n }\n }\n }\n\n return defaultClientStorageSetter\n}\n", "import { interpret } from 'xstate'\n\nimport {\n AuthClient,\n AuthInterpreter,\n createChangeEmailMachine,\n createChangePasswordMachine,\n createResetPasswordMachine,\n createSendVerificationEmailMachine,\n encodeQueryParameters,\n rewriteRedirectTo\n} from '@nhost/core'\n\nimport { getSession, isBrowser, localStorageGetter, localStorageSetter } from './utils/helpers'\nimport {\n ApiChangeEmailResponse,\n ApiChangePasswordResponse,\n ApiDeanonymizeResponse,\n ApiError,\n ApiResetPasswordResponse,\n ApiSendVerificationEmailResponse,\n ApiSignOutResponse,\n AuthChangedFunction,\n ChangeEmailParams,\n ChangePasswordParams,\n DeanonymizeParams,\n NhostAuthConstructorParams,\n OnTokenChangedFunction,\n ResetPasswordParams,\n SendVerificationEmailParams,\n Session,\n SignInParams,\n SignUpParams,\n SignUpResponse\n} from './utils/types'\n\nconst USER_ALREADY_SIGNED_IN: ApiError = {\n message: 'User is already signed in',\n status: 100\n}\n\nconst USER_UNAUTHENTICATED: ApiError = {\n message: 'User is not authenticated',\n status: 101\n}\n\nconst USER_NOT_ANONYMOUS: ApiError = {\n message: 'User is not anonymous',\n status: 101\n}\nconst EMAIL_NEEDS_VERIFICATION: ApiError = {\n message: 'Email needs verification',\n status: 102\n}\nexport class HasuraAuthClient {\n #client: AuthClient\n private onTokenChangedSubscriptions: Set<AuthInterpreter> = new Set()\n private onAuthStateChangedSubscriptions: Set<AuthInterpreter> = new Set()\n\n constructor({\n url,\n autoRefreshToken = true,\n autoLogin = true,\n clientStorage,\n clientStorageType = 'web',\n clientStorageGetter,\n clientStorageSetter,\n refreshIntervalTime,\n start = true,\n Client = AuthClient\n }: NhostAuthConstructorParams) {\n this.#client = new Client({\n backendUrl: url,\n autoRefreshToken,\n autoSignIn: autoLogin,\n start,\n clientStorageGetter:\n clientStorageGetter || localStorageGetter(clientStorageType, clientStorage),\n clientStorageSetter:\n clientStorageSetter || localStorageSetter(clientStorageType, clientStorage),\n refreshIntervalTime\n })\n }\n\n /**\n * Use `signUp` to sign up users using email an password.\n *\n * If you want to sign up a user using magic link or a social provider, use\n * the `signIn` function instead.\n *\n * @example\n * auth.signIn({email, password}); // email password\n *\n * @docs https://docs.nhost.io/reference/sdk/authentication#nhost-auth-signup\n */\n async signUp(params: SignUpParams): Promise<SignUpResponse> {\n const interpreter = await this.waitUntilReady()\n\n const { email, password, options } = params\n\n // * Raise an error if the user is already authenticated\n if (this.isAuthenticated()) {\n return {\n session: null,\n error: USER_ALREADY_SIGNED_IN\n }\n }\n\n return new Promise((resolve) => {\n interpreter.send({ type: 'SIGNUP_EMAIL_PASSWORD', email, password, options })\n interpreter.onTransition((state) => {\n if (state.matches({ authentication: { signedOut: 'needsEmailVerification' } }))\n return resolve({ session: null, error: null })\n else if (state.matches({ authentication: { signedOut: 'failed' } })) {\n return resolve({ session: null, error: state.context.errors.registration || null })\n } else if (state.matches({ authentication: 'signedIn' }))\n return resolve({ session: getSession(state.context), error: null })\n })\n })\n }\n\n /**\n * Use `signIn` to sign in users using email and password, passwordless\n * (email or sms) or an external provider.\n * `signIn` can be used in various ways depending on the parameters.\n *\n * @example\n * signIn({ email, password }); // Sign in with email and password\n * signIn({ provider }); // Sign in with an external provider (ex Google or Facebook)\n * signIn({ email }); // [step 1/2] Passwordless sign in with Email (Magic Link)\n * signIn({ email, otp }); // [step 2/2] Finish passwordless sign in with email (OTP)\n * signIn({ phoneNumber }); // [step 1/2] Passwordless sign in with SMS\n * signIn({ phoneNumber, otp }); // [step 2/2] Finish passwordless sign in with SMS (OTP)\n *\n * @docs https://docs.nhost.io/reference/sdk/authentication#nhost-auth-signin\n */\n async signIn(params: SignInParams): Promise<{\n session: Session | null\n mfa: {\n ticket: string\n } | null\n error: ApiError | null\n providerUrl?: string\n provider?: string\n }> {\n const interpreter = await this.waitUntilReady()\n\n // * Raise an error if the user is already authenticated\n if (this.isAuthenticated()) {\n return {\n session: null,\n mfa: null,\n error: USER_ALREADY_SIGNED_IN\n }\n }\n\n if ('provider' in params) {\n const { provider, options } = params\n const providerUrl = encodeQueryParameters(\n `${this.#client.backendUrl}/v1/auth/signin/provider/${provider}`,\n rewriteRedirectTo(this.#client.clientUrl, options)\n )\n if (isBrowser()) {\n window.location.href = providerUrl\n }\n return { providerUrl, provider, session: null, mfa: null, error: null }\n }\n\n // email password\n if ('email' in params && 'password' in params) {\n return new Promise((resolve) => {\n interpreter.send({ type: 'SIGNIN_PASSWORD', ...params })\n interpreter.onTransition((state) => {\n if (state.matches({ authentication: 'signedIn' }))\n resolve({\n session: getSession(state.context),\n mfa: null,\n error: null\n })\n else if (state.matches({ authentication: { signedOut: 'needsEmailVerification' } }))\n resolve({\n session: null,\n mfa: null,\n error: EMAIL_NEEDS_VERIFICATION\n })\n else if (state.matches({ authentication: { signedOut: 'needsMfa' } }))\n resolve({\n session: null,\n mfa: state.context.mfa,\n error: null\n })\n else if (state.matches({ authentication: { signedOut: 'failed' } }))\n resolve({\n session: null,\n mfa: null,\n error: state.context.errors.authentication || null\n })\n })\n })\n }\n\n // passwordless Email (magic link)\n if ('email' in params && !('otp' in params)) {\n return new Promise((resolve) => {\n interpreter.onTransition((state) => {\n if (state.matches({ authentication: { signedOut: 'needsEmailVerification' } }))\n resolve({\n session: null,\n mfa: null,\n error: null\n })\n else if (state.matches({ authentication: { signedOut: 'failed' } }))\n resolve({\n session: null,\n mfa: null,\n error: state.context.errors.authentication || null\n })\n })\n\n interpreter.send({ type: 'SIGNIN_PASSWORDLESS_EMAIL', ...params })\n })\n }\n\n // passwordless SMS\n if ('phoneNumber' in params && !('otp' in params)) {\n return new Promise((resolve) => {\n interpreter.onTransition((state) => {\n if (state.matches({ authentication: { signedOut: 'needsSmsOtp' } }))\n resolve({\n session: null,\n mfa: null,\n error: null\n })\n else if (state.matches({ authentication: { signedOut: 'failed' } }))\n resolve({\n session: null,\n mfa: null,\n error: state.context.errors.authentication || null\n })\n })\n interpreter.send({ type: 'SIGNIN_PASSWORDLESS_SMS', ...params })\n })\n }\n\n // sign in using SMS OTP\n if ('otp' in params) {\n return new Promise((resolve) => {\n interpreter.onTransition((state) => {\n if (state.matches({ authentication: 'signedIn' }))\n resolve({\n session: getSession(state.context),\n mfa: null,\n error: null\n })\n else if (state.matches({ authentication: { signedOut: 'failed' } }))\n resolve({\n session: null,\n mfa: null,\n error: state.context.errors.authentication || null\n })\n })\n interpreter.send({ type: 'SIGNIN_PASSWORDLESS_SMS_OTP', ...params })\n })\n }\n // TODO anonymous sign-in\n return {\n session: null,\n mfa: null,\n error: { message: 'Incorrect parameters', status: 500 }\n }\n }\n\n /**\n * Use `signOut` to sign out a user\n *\n * @example\n * signOut();\n *\n * @docs https://docs.nhost.io/reference/sdk/authentication#nhost-auth-signout\n */\n async signOut(params?: { all?: boolean }): Promise<ApiSignOutResponse> {\n const interpreter = await this.waitUntilReady()\n if (!this.isAuthenticated()) return { error: USER_UNAUTHENTICATED }\n return new Promise((resolve) => {\n interpreter.send({ type: 'SIGNOUT', all: params?.all })\n interpreter.onTransition((state) => {\n if (state.matches({ authentication: { signedOut: 'success' } })) resolve({ error: null })\n else if (state.matches({ authentication: { signedOut: 'failed' } }))\n resolve({ error: state.context.errors.signout || null })\n })\n })\n }\n\n /**\n * Use `resetPassword` to reset a user's password.\n *\n * @example\n * auth.resetPassword({email})\n *\n * @docs https://docs.nhost.io/reference/sdk/authentication#nhost-auth-resetpassword\n */\n async resetPassword({ email, options }: ResetPasswordParams): Promise<ApiResetPasswordResponse> {\n return new Promise((resolve) => {\n const service = interpret(createResetPasswordMachine(this.#client))\n service.onTransition(({ event }) => {\n if (event.type === 'ERROR') return resolve({ error: event.error })\n else if (event.type === 'SUCCESS') return resolve({ error: null })\n })\n service.start()\n service.send({ type: 'REQUEST', email, options })\n })\n }\n\n /**\n * Use `changePassword` to change a user's password.\n *\n * @example\n * auth.changePassword({ newPassword })\n *\n * @docs https://docs.nhost.io/reference/sdk/authentication#nhost-auth-changepassword\n */\n async changePassword(params: ChangePasswordParams): Promise<ApiChangePasswordResponse> {\n return new Promise((resolve) => {\n const service = interpret(createChangePasswordMachine(this.#client))\n service.onTransition(({ event }) => {\n if (event.type === 'ERROR') return resolve({ error: event.error })\n else if (event.type === 'SUCCESS') return resolve({ error: null })\n })\n service.start()\n service.send({ type: 'REQUEST', password: params.newPassword })\n })\n }\n\n /**\n * Use `sendVerificationEmail` to send a verification email\n * to the specified email.\n *\n * @example\n * auth.sendVerificationEmail({email})\n *\n * @docs https://docs.nhost.io/TODO\n */\n async sendVerificationEmail(\n params: SendVerificationEmailParams\n ): Promise<ApiSendVerificationEmailResponse> {\n return new Promise((resolve) => {\n const service = interpret(createSendVerificationEmailMachine(this.#client))\n service.onTransition(({ event }) => {\n if (event.type === 'ERROR') return resolve({ error: event.error })\n else if (event.type === 'SUCCESS') return resolve({ error: null })\n })\n service.start()\n service.send({ type: 'REQUEST', email: params.email, options: params.options })\n })\n }\n\n /**\n * Use `changeEmail` to change a user's email\n *\n * @example\n * auth.changeEmail({newEmail})\n *\n * @docs https://docs.nhost.io/reference/sdk/authentication#nhost-auth-changeemail\n */\n async changeEmail({ newEmail, options }: ChangeEmailParams): Promise<ApiChangeEmailResponse> {\n return new Promise((resolve) => {\n const service = interpret(createChangeEmailMachine(this.#client))\n service.onTransition(({ event }) => {\n if (event.type === 'ERROR') return resolve({ error: event.error })\n else if (event.type === 'SUCCESS') return resolve({ error: null })\n })\n service.start()\n service.send({ type: 'REQUEST', email: newEmail, options })\n })\n }\n\n /**\n * Use `deanonymize` to deanonymize a user\n *\n * @example\n * auth.deanonymize({signInMethod: 'email-password', email})\n *\n * @docs https://docs.nhost.io/TODO\n */\n async deanonymize(params: DeanonymizeParams): Promise<ApiDeanonymizeResponse> {\n const interpreter = await this.waitUntilReady()\n return new Promise((resolve) => {\n if (!this.isAuthenticated() || !interpreter.state.context.user?.isAnonymous)\n return { error: USER_NOT_ANONYMOUS }\n interpreter.onTransition((state) => {\n if (state.matches({ authentication: { signedIn: { deanonymizing: 'success' } } }))\n resolve({ error: null })\n else if (state.matches({ authentication: { signedIn: { deanonymizing: 'error' } } }))\n resolve({ error: state.context.errors.authentication || null })\n })\n interpreter.start()\n const { signInMethod, connection, ...options } = params\n interpreter.send({\n type: 'DEANONYMIZE',\n signInMethod,\n connection,\n options\n })\n })\n }\n\n /**\n * Use `onTokenChanged` to add a custom function that will trigger whenever\n * the access and refresh token is changed.\n *\n * @example\n * auth.onTokenChanged(() => console.log('access token changed'););\n *\n * @docs https://docs.nhost.io/TODO\n */\n onTokenChanged(fn: OnTokenChangedFunction): Function {\n if (this.#client.interpreter)\n this.onTokenChangedSubscriptions.add(\n this.#client.interpreter?.onTransition(({ event, context }) => {\n if (event.type === 'TOKEN_CHANGED') fn(getSession(context))\n })\n )\n else {\n console.log('onTokenChanged: no interpreter is set yet', fn)\n }\n return () => {\n this.onTokenChangedSubscriptions.forEach((subscription) => subscription.stop())\n }\n }\n\n /**\n * Use `onAuthStateChanged` to add a custom function that will trigger\n * whenever the state of the user changed. Ex from signed in to signed out or\n * vice versa.\n *\n * @example\n * auth.onAuthStateChanged((event, session) => {\n * console.log(`auth state changed. State is not ${event} with session: ${session}`)\n * });\n *\n * @docs https://docs.nhost.io/reference/sdk/authentication#nhost-auth-onauthstatechangedevent,-session\n */\n onAuthStateChanged(fn: AuthChangedFunction): Function {\n if (this.#client.interpreter)\n this.onAuthStateChangedSubscriptions.add(\n this.#client.interpreter?.onTransition(({ event, context }) => {\n if (event.type === 'SIGNED_IN') fn('SIGNED_IN', getSession(context))\n else if (event.type === 'SIGNED_OUT') fn('SIGNED_OUT', getSession(context))\n })\n )\n else {\n console.log('onAuthStateChanged: no interpreter is set yet', fn)\n }\n return () => {\n this.onAuthStateChangedSubscriptions.forEach((subscription) => subscription.stop())\n }\n }\n\n /**\n * Use `isAuthenticated` to check if the user is authenticated or not.\n *\n * Note that `isAuthenticated` can return `false` before the auth status has\n * been resolved. Use `getAuthenticationStatus` to get both loading and auth status.\n *\n *\n * @example\n *\n * const = auth.isAuthenticated();\n *\n * if (authenticated) {\n * console.log('User is authenticated');\n * }\n *\n * @docs https://docs.nhost.io/TODO\n */\n isAuthenticated(): boolean {\n return !!this.#client.interpreter?.state.matches({ authentication: 'signedIn' })\n }\n\n /**\n * Use `isAuthenticatedAsync` to wait and check if the user is authenticated or not.\n *\n * @example\n *\n * const isAuthenticated = awiat auth.isAuthenticatedAsync();\n *\n * if (isAuthenticated) {\n * console.log('User is authenticated');\n * }\n *\n * @docs https://docs.nhost.io/TODO\n */\n async isAuthenticatedAsync(): Promise<boolean> {\n const interpreter = await this.waitUntilReady()\n return interpreter.state.matches({ authentication: 'signedIn' })\n }\n\n /**\n * Use `getAuthenticationStatus` to get the authentication status of the user.\n *\n * if `isLoading` is true, the auth request is in transit and the SDK does not\n * yet know if the user will be logged in or not.\n *\n *\n * @example\n *\n * const { isAuthenticated, isLoading } = auth.getAuthenticationStatus();\n *\n * if (isLoading) {\n * console.log('Loading...')\n * }\n *\n * if (isAuthenticated) {\n * console.log('User is authenticated');\n * }\n *\n * @docs https://docs.nhost.io/TODO\n */\n getAuthenticationStatus(): {\n isAuthenticated: boolean\n isLoading: boolean\n } {\n if (!this.isReady()) return { isAuthenticated: false, isLoading: true }\n return { isAuthenticated: this.isAuthenticated(), isLoading: false }\n }\n\n /**\n * @deprecated Use `getAccessToken()` instead.\n */\n\n getJWTToken(): string | undefined {\n return this.getAccessToken()\n }\n\n /**\n *\n * Use `getAccessToken` to get the logged in user's access token.\n *\n * @example\n *\n * const accessToken = auth.getAccessToken();\n *\n * @docs https://docs.nhost.io/TODO\n */\n getAccessToken(): string | undefined {\n return this.#client.interpreter?.state.context.accessToken.value ?? undefined\n }\n\n /**\n *\n * Use `refreshSession()` to refresh the current session or refresh the\n * session with an provided `refreshToken`.\n *\n * @example\n *\n * refreshToken();\n * refreshToken(refreshToken);\n *\n * @docs https://docs.nhost.io/TODO\n */\n async refreshSession(refreshToken?: string): Promise<void> {\n try {\n const interpreter = await this.waitUntilReady()\n if (interpreter.state.matches({ token: 'idle' })) return\n return new Promise((resolve) => {\n const token = refreshToken || interpreter.state.context.refreshToken.value\n if (!token) return resolve()\n interpreter?.onTransition((state) => {\n if (state.matches({ token: { idle: 'error' } })) resolve()\n else if (state.event.type === 'TOKEN_CHANGED') resolve()\n })\n interpreter.send({\n type: 'TRY_TOKEN',\n token\n })\n })\n } catch {\n return\n }\n }\n\n /**\n *\n * Use `getSession()` to get the current session.\n *\n * @example\n *\n * const session = getSession();\n *\n * @docs https://docs.nhost.io/TODO\n */\n getSession() {\n return getSession(this.#client.interpreter?.state?.context)\n }\n\n /**\n *\n * Use `getUser()` to get the current user.\n *\n * @example\n *\n * const user = getUser();\n *\n * @docs https://docs.nhost.io/reference/sdk/authentication#nhost-auth-getuser\n */\n getUser() {\n return this.#client.interpreter?.state?.context?.user || null\n }\n\n /**\n * Make sure the state machine is set, and wait for it to be ready\n * @returns\n */\n private waitUntilReady(): Promise<AuthInterpreter> {\n const TIMEOUT_IN_SECONS = 15\n const interpreter = this.#client.interpreter\n if (!interpreter) {\n throw Error('Auth interpreter not set')\n }\n if (interpreter.state.hasTag('ready')) return Promise.resolve(interpreter)\n return new Promise((resolve, reject) => {\n let timer: ReturnType<typeof setTimeout> = setTimeout(\n () => reject(`The state machine is not yet ready after ${TIMEOUT_IN_SECONS} seconds.`),\n TIMEOUT_IN_SECONS * 1_000\n )\n interpreter.onTransition((state) => {\n if (state.hasTag('ready')) {\n clearTimeout(timer)\n return resolve(interpreter)\n }\n })\n })\n }\n\n private isReady() {\n return !!this.#client.interpreter?.state?.hasTag('ready')\n }\n\n get client() {\n return this.#client\n }\n}\n", "/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport axios, { AxiosInstance } from 'axios'\n\nimport {\n ApiDeleteParams,\n ApiDeleteResponse,\n ApiGetPresignedUrlParams,\n ApiGetPresignedUrlResponse,\n ApiUploadParams,\n ApiUploadResponse,\n UploadHeaders\n} from './utils/types'\n\nexport class HasuraStorageApi {\n private url: string\n private httpClient: AxiosInstance\n private accessToken?: string\n private adminSecret?: string\n\n constructor({ url }: { url: string }) {\n this.url = url\n\n this.httpClient = axios.create({\n baseURL: this.url\n })\n }\n\n async upload(params: ApiUploadParams): Promise<ApiUploadResponse> {\n try {\n const res = await this.httpClient.post('/files', params.file, {\n headers: {\n ...this.generateUploadHeaders(params),\n ...this.generateAuthHeaders()\n }\n })\n\n return { fileMetadata: res.data, error: null }\n } catch (error) {\n return { fileMetadata: null, error: error as Error }\n }\n }\n\n async getPresignedUrl(params: ApiGetPresignedUrlParams): Promise<ApiGetPresignedUrlResponse> {\n try {\n const { fileId } = params\n const res = await this.httpClient.get(`/files/${fileId}/presignedurl`, {\n headers: {\n ...this.generateAuthHeaders()\n }\n })\n return { presignedUrl: res.data, error: null }\n } catch (error) {\n return { presignedUrl: null, error: error as Error }\n }\n }\n\n async delete(params: ApiDeleteParams): Promise<ApiDeleteResponse> {\n try {\n const { fileId } = params\n await this.httpClient.delete(`/files/${fileId}`, {\n headers: {\n ...this.generateAuthHeaders()\n }\n })\n return { error: null }\n } catch (error) {\n return { error: error as Error }\n }\n }\n\n /**\n * Set the access token to use for authentication.\n *\n * @param accessToken Access token\n * @returns Hasura Storage API instance\n */\n setAccessToken(accessToken?: string): HasuraStorageApi {\n this.accessToken = accessToken\n\n return this\n }\n\n /**\n * Set the admin secret to use for authentication.\n *\n * @param adminSecret Hasura admin secret\n * @returns Hasura Storage API instance\n */\n setAdminSecret(adminSecret?: string): HasuraStorageApi {\n this.adminSecret = adminSecret\n\n return this\n }\n\n private generateUploadHeaders(params: ApiUploadParams): UploadHeaders {\n const { bucketId, name, id } = params\n const uploadheaders: UploadHeaders = {}\n\n if (bucketId) {\n uploadheaders['x-nhost-bucket-id'] = bucketId\n }\n if (id) {\n uploadheaders['x-nhost-file-id'] = id\n }\n if (name) {\n uploadheaders['x-nhost-file-name'] = name\n }\n\n return uploadheaders\n }\n\n private generateAuthHeaders() {\n if (!this.adminSecret && !this.accessToken) {\n return null\n }\n\n if (this.adminSecret) {\n return {\n 'x-hasura-admin-secret': this.adminSecret\n }\n }\n\n return {\n Authorization: `Bearer ${this.accessToken}`\n }\n }\n}\n", "import {\n StorageDeleteParams,\n StorageDeleteResponse,\n StorageGetPresignedUrlParams,\n StorageGetPresignedUrlResponse,\n StorageGetUrlParams,\n StorageUploadParams,\n StorageUploadResponse\n} from './utils/types'\nimport { HasuraStorageApi } from './hasura-storage-api'\n\nexport class HasuraStorageClient {\n private url: string\n private api: HasuraStorageApi\n\n constructor({ url }: { url: string }) {\n this.url = url\n this.api = new HasuraStorageApi({ url })\n }\n\n /**\n *\n * Use `.upload` to upload a file.\n *\n * @example\n *\n * storage.upload({ file })\n *\n */\n async upload(params: StorageUploadParams): Promise<StorageUploadResponse> {\n const file = new FormData()\n file.append('file', params.file)\n\n const { fileMetadata, error } = await this.api.upload({\n ...params,\n file\n })\n if (error) {\n return { fileMetadata: null, error }\n }\n\n if (!fileMetadata) {\n return { fileMetadata: null, error: new Error('Invalid file returned') }\n }\n\n return { fileMetadata, error: null }\n }\n\n /**\n *\n * @deprecated use `.getPublicUrl` instead\n *\n */\n getUrl(params: StorageGetUrlParams): string {\n return this.getPublicUrl(params)\n }\n\n /**\n *\n * Use `.getPublicUrl` to direct file URL to a file.\n *\n * @example\n *\n * storage.getPublicUrl({ fileId: 'uuid' })\n *\n */\n getPublicUrl(params: StorageGetUrlParams): string {\n const { fileId } = params\n return `${this.url}/files/${fileId}`\n }\n\n /**\n *\n * Use `.getPresignedUrl` to get a presigned URL to a file.\n *\n * @example\n *\n * storage.getPresignedUrl({ fileId: 'uuid' })\n *\n *\n */\n async getPresignedUrl(\n params: StorageGetPresignedUrlParams\n ): Promise<StorageGetPresignedUrlResponse> {\n const { presignedUrl, error } = await this.api.getPresignedUrl(params)\n if (error) {\n return { presignedUrl: null, error }\n }\n\n if (!presignedUrl) {\n return { presignedUrl: null, error: new Error('Invalid file id') }\n }\n\n return { presignedUrl, error: null }\n }\n\n /**\n *\n * Use `.delete` to delete a file.\n *\n * @example\n *\n * storage.delete({ fileId: 'uuid' })\n *\n *\n */\n async delete(params: StorageDeleteParams): Promise<StorageDeleteResponse> {\n const { error } = await this.api.delete(params)\n if (error) {\n return { error }\n }\n\n return { error: null }\n }\n\n /**\n * Set the access token to use for authentication.\n *\n * @param accessToken Access token\n * @returns Hasura Storage Client instance\n */\n setAccessToken(accessToken?: string): HasuraStorageClient {\n this.api.setAccessToken(accessToken)\n\n return this\n }\n\n /**\n * Set the admin secret to use for authentication.\n *\n * @param adminSecret Hasura admin secret\n * @returns Hasura Storage Client instance\n */\n setAdminSecret(adminSecret?: string): HasuraStorageClient {\n this.api.setAdminSecret(adminSecret)\n\n return this\n }\n}\n", "import axios, { AxiosInstance, AxiosRequestConfig } from 'axios'\n\nimport { FunctionCallResponse } from '../types'\nexport interface NhostFunctionsConstructorParams {\n url: string\n}\n\nexport class NhostFunctionsClient {\n private instance: AxiosInstance\n private accessToken: string | null\n\n constructor(params: NhostFunctionsConstructorParams) {\n const { url } = params\n\n this.accessToken = null\n this.instance = axios.create({\n baseURL: url\n })\n }\n\n async call(url: string, data: any, config?: AxiosRequestConfig): Promise<FunctionCallResponse> {\n const headers = {\n ...this.generateAccessTokenHeaders(),\n ...config?.headers\n }\n\n let res\n try {\n res = await this.instance.post(url, data, { ...config, headers })\n } catch (error) {\n if (error instanceof Error) {\n return { res: null, error }\n }\n }\n\n if (!res) {\n return {\n res: null,\n error: new Error('Unable to make post request to funtion')\n }\n }\n\n return { res, error: null }\n }\n\n setAccessToken(accessToken: string | undefined) {\n if (!accessToken) {\n this.accessToken = null\n return\n }\n\n this.accessToken = accessToken\n }\n\n private generateAccessTokenHeaders(): { Authorization: string } | undefined {\n if (!this.accessToken) {\n return\n }\n\n // eslint-disable-next-line consistent-return\n return {\n Authorization: `Bearer ${this.accessToken}`\n }\n }\n}\n", "import axios, { AxiosInstance, AxiosRequestConfig } from 'axios'\n\nimport { GraphqlRequestResponse, GraphqlResponse } from '../types'\n\nexport interface NhostGraphqlConstructorParams {\n url: string\n}\n\nexport class NhostGraphqlClient {\n private url: string\n private instance: AxiosInstance\n private accessToken: string | null\n\n constructor(params: NhostGraphqlConstructorParams) {\n const { url } = params\n\n this.url = url\n this.accessToken = null\n this.instance = axios.create({\n baseURL: url\n })\n }\n\n async request(\n document: string,\n variables?: any,\n config?: AxiosRequestConfig\n ): Promise<GraphqlRequestResponse> {\n // add auth headers if any\n const headers = {\n ...config?.headers,\n ...this.generateAccessTokenHeaders()\n }\n\n const operationName = ''\n\n let responseData\n try {\n const res = await this.instance.post(\n '',\n {\n operationName: operationName || undefined,\n query: document,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n variables\n },\n { ...config, headers }\n )\n\n responseData = res.data\n } catch (error) {\n if (error instanceof Error) {\n return { data: null, error }\n }\n console.error(error)\n return {\n data: null,\n error: new Error('Unable to get do GraphQL request')\n }\n }\n\n if (typeof responseData !== 'object' || Array.isArray(responseData) || responseData === null) {\n return {\n data: null,\n error: new Error('incorrect response data from GraphQL server')\n }\n }\n\n responseData = responseData as GraphqlResponse\n\n if (responseData.errors) {\n return {\n data: null,\n error: responseData.errors\n }\n }\n\n return { data: responseData.data, error: null }\n }\n\n getUrl(): string {\n return this.url\n }\n\n setAccessToken(accessToken: string | undefined) {\n if (!accessToken) {\n this.accessToken = null\n return\n }\n\n this.accessToken = accessToken\n }\n\n private generateAccessTokenHeaders() {\n if (!this.accessToken) {\n return\n }\n\n // eslint-disable-next-line consistent-return\n return {\n Authorization: `Bearer ${this.accessToken}`\n }\n }\n}\n", "import { HasuraAuthClient, NhostAuthConstructorParams } from '@nhost/hasura-auth-js'\nimport { HasuraStorageClient } from '@nhost/hasura-storage-js'\n\nimport { NhostFunctionsClient } from '../clients/functions'\nimport { NhostGraphqlClient } from '../clients/graphql'\n\nexport type NhostClientConstructorParams = Omit<NhostAuthConstructorParams, 'url'> & {\n backendUrl: string\n}\n\nexport class NhostClient {\n auth: HasuraAuthClient\n storage: HasuraStorageClient\n functions: NhostFunctionsClient\n graphql: NhostGraphqlClient\n\n /**\n * Nhost Client\n *\n * @example\n * const nhost = new NhostClient({ url });\n *\n * @docs https://docs.nhost.io/reference/sdk#installation\n */\n constructor({\n backendUrl,\n refreshIntervalTime,\n clientStorageGetter,\n clientStorageSetter,\n clientStorage,\n clientStorageType,\n autoRefreshToken,\n autoLogin,\n start = true,\n Client\n }: NhostClientConstructorParams) {\n if (!backendUrl) throw new Error('Please specify a `backendUrl`. Docs: [todo]!')\n this.auth = new HasuraAuthClient({\n url: `${backendUrl}/v1/auth`,\n refreshIntervalTime,\n clientStorageGetter,\n clientStorageSetter,\n clientStorage,\n clientStorageType,\n autoRefreshToken,\n autoLogin,\n start,\n Client\n })\n\n this.storage = new HasuraStorageClient({\n url: `${backendUrl}/v1/storage`\n })\n\n this.functions = new NhostFunctionsClient({\n url: `${backendUrl}/v1/functions`\n })\n\n this.graphql = new NhostGraphqlClient({\n url: `${backendUrl}/v1/graphql`\n })\n\n // set current token if token is already accessable\n this.storage.setAccessToken(this.auth.getAccessToken())\n this.functions.setAccessToken(this.auth.getAccessToken())\n this.graphql.setAccessToken(this.auth.getAccessToken())\n\n this.auth.client.onStart(() => {\n // update access token for clients\n this.auth.onAuthStateChanged((_event, session) => {\n this.storage.setAccessToken(session?.accessToken)\n this.functions.setAccessToken(session?.accessToken)\n this.graphql.setAccessToken(session?.accessToken)\n })\n\n // update access token for clients\n this.auth.onTokenChanged((session) => {\n this.storage.setAccessToken(session?.accessToken)\n this.functions.setAccessToken(session?.accessToken)\n this.graphql.setAccessToken(session?.accessToken)\n })\n })\n }\n}\n", "import { NhostClient, NhostClientConstructorParams } from './core'\n\nconst createClient = (config: NhostClientConstructorParams) => new NhostClient(config)\n\nexport * from './core'\nexport { createClient }\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }