module.exports = /******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ /***/ 7351: /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; result["default"] = mod; return result; }; Object.defineProperty(exports, "__esModule", ({ value: true })); const os = __importStar(__webpack_require__(2087)); const utils_1 = __webpack_require__(5278); /** * Commands * * Command Format: * ::name key=value,key=value::message * * Examples: * ::warning::This is the message * ::set-env name=MY_VAR::some value */ function issueCommand(command, properties, message) { const cmd = new Command(command, properties, message); process.stdout.write(cmd.toString() + os.EOL); } exports.issueCommand = issueCommand; function issue(name, message = '') { issueCommand(name, {}, message); } exports.issue = issue; const CMD_STRING = '::'; class Command { constructor(command, properties, message) { if (!command) { command = 'missing.command'; } this.command = command; this.properties = properties; this.message = message; } toString() { let cmdStr = CMD_STRING + this.command; if (this.properties && Object.keys(this.properties).length > 0) { cmdStr += ' '; let first = true; for (const key in this.properties) { if (this.properties.hasOwnProperty(key)) { const val = this.properties[key]; if (val) { if (first) { first = false; } else { cmdStr += ','; } cmdStr += `${key}=${escapeProperty(val)}`; } } } } cmdStr += `${CMD_STRING}${escapeData(this.message)}`; return cmdStr; } } function escapeData(s) { return utils_1.toCommandValue(s) .replace(/%/g, '%25') .replace(/\r/g, '%0D') .replace(/\n/g, '%0A'); } function escapeProperty(s) { return utils_1.toCommandValue(s) .replace(/%/g, '%25') .replace(/\r/g, '%0D') .replace(/\n/g, '%0A') .replace(/:/g, '%3A') .replace(/,/g, '%2C'); } //# sourceMappingURL=command.js.map /***/ }), /***/ 2186: /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; result["default"] = mod; return result; }; Object.defineProperty(exports, "__esModule", ({ value: true })); const command_1 = __webpack_require__(7351); const file_command_1 = __webpack_require__(717); const utils_1 = __webpack_require__(5278); const os = __importStar(__webpack_require__(2087)); const path = __importStar(__webpack_require__(5622)); /** * The code to exit an action */ var ExitCode; (function (ExitCode) { /** * A code indicating that the action was successful */ ExitCode[ExitCode["Success"] = 0] = "Success"; /** * A code indicating that the action was a failure */ ExitCode[ExitCode["Failure"] = 1] = "Failure"; })(ExitCode = exports.ExitCode || (exports.ExitCode = {})); //----------------------------------------------------------------------- // Variables //----------------------------------------------------------------------- /** * Sets env variable for this action and future actions in the job * @param name the name of the variable to set * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify */ // eslint-disable-next-line @typescript-eslint/no-explicit-any function exportVariable(name, val) { const convertedVal = utils_1.toCommandValue(val); process.env[name] = convertedVal; const filePath = process.env['GITHUB_ENV'] || ''; if (filePath) { const delimiter = '_GitHubActionsFileCommandDelimeter_'; const commandValue = `${name}<<${delimiter}${os.EOL}${convertedVal}${os.EOL}${delimiter}`; file_command_1.issueCommand('ENV', commandValue); } else { command_1.issueCommand('set-env', { name }, convertedVal); } } exports.exportVariable = exportVariable; /** * Registers a secret which will get masked from logs * @param secret value of the secret */ function setSecret(secret) { command_1.issueCommand('add-mask', {}, secret); } exports.setSecret = setSecret; /** * Prepends inputPath to the PATH (for this action and future actions) * @param inputPath */ function addPath(inputPath) { const filePath = process.env['GITHUB_PATH'] || ''; if (filePath) { file_command_1.issueCommand('PATH', inputPath); } else { command_1.issueCommand('add-path', {}, inputPath); } process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`; } exports.addPath = addPath; /** * Gets the value of an input. The value is also trimmed. * * @param name name of the input to get * @param options optional. See InputOptions. * @returns string */ function getInput(name, options) { const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || ''; if (options && options.required && !val) { throw new Error(`Input required and not supplied: ${name}`); } return val.trim(); } exports.getInput = getInput; /** * Sets the value of an output. * * @param name name of the output to set * @param value value to store. Non-string values will be converted to a string via JSON.stringify */ // eslint-disable-next-line @typescript-eslint/no-explicit-any function setOutput(name, value) { command_1.issueCommand('set-output', { name }, value); } exports.setOutput = setOutput; /** * Enables or disables the echoing of commands into stdout for the rest of the step. * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set. * */ function setCommandEcho(enabled) { command_1.issue('echo', enabled ? 'on' : 'off'); } exports.setCommandEcho = setCommandEcho; //----------------------------------------------------------------------- // Results //----------------------------------------------------------------------- /** * Sets the action status to failed. * When the action exits it will be with an exit code of 1 * @param message add error issue message */ function setFailed(message) { process.exitCode = ExitCode.Failure; error(message); } exports.setFailed = setFailed; //----------------------------------------------------------------------- // Logging Commands //----------------------------------------------------------------------- /** * Gets whether Actions Step Debug is on or not */ function isDebug() { return process.env['RUNNER_DEBUG'] === '1'; } exports.isDebug = isDebug; /** * Writes debug message to user log * @param message debug message */ function debug(message) { command_1.issueCommand('debug', {}, message); } exports.debug = debug; /** * Adds an error issue * @param message error issue message. Errors will be converted to string via toString() */ function error(message) { command_1.issue('error', message instanceof Error ? message.toString() : message); } exports.error = error; /** * Adds an warning issue * @param message warning issue message. Errors will be converted to string via toString() */ function warning(message) { command_1.issue('warning', message instanceof Error ? message.toString() : message); } exports.warning = warning; /** * Writes info to log with console.log. * @param message info message */ function info(message) { process.stdout.write(message + os.EOL); } exports.info = info; /** * Begin an output group. * * Output until the next `groupEnd` will be foldable in this group * * @param name The name of the output group */ function startGroup(name) { command_1.issue('group', name); } exports.startGroup = startGroup; /** * End an output group. */ function endGroup() { command_1.issue('endgroup'); } exports.endGroup = endGroup; /** * Wrap an asynchronous function call in a group. * * Returns the same type as the function itself. * * @param name The name of the group * @param fn The function to wrap in the group */ function group(name, fn) { return __awaiter(this, void 0, void 0, function* () { startGroup(name); let result; try { result = yield fn(); } finally { endGroup(); } return result; }); } exports.group = group; //----------------------------------------------------------------------- // Wrapper action state //----------------------------------------------------------------------- /** * Saves state for current action, the state can only be retrieved by this action's post job execution. * * @param name name of the state to store * @param value value to store. Non-string values will be converted to a string via JSON.stringify */ // eslint-disable-next-line @typescript-eslint/no-explicit-any function saveState(name, value) { command_1.issueCommand('save-state', { name }, value); } exports.saveState = saveState; /** * Gets the value of an state set by this action's main execution. * * @param name name of the state to get * @returns string */ function getState(name) { return process.env[`STATE_${name}`] || ''; } exports.getState = getState; //# sourceMappingURL=core.js.map /***/ }), /***/ 717: /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; // For internal use, subject to change. var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; result["default"] = mod; return result; }; Object.defineProperty(exports, "__esModule", ({ value: true })); // We use any as a valid input type /* eslint-disable @typescript-eslint/no-explicit-any */ const fs = __importStar(__webpack_require__(5747)); const os = __importStar(__webpack_require__(2087)); const utils_1 = __webpack_require__(5278); function issueCommand(command, message) { const filePath = process.env[`GITHUB_${command}`]; if (!filePath) { throw new Error(`Unable to find environment variable for file command ${command}`); } if (!fs.existsSync(filePath)) { throw new Error(`Missing file at path: ${filePath}`); } fs.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, { encoding: 'utf8' }); } exports.issueCommand = issueCommand; //# sourceMappingURL=file-command.js.map /***/ }), /***/ 5278: /***/ ((__unused_webpack_module, exports) => { "use strict"; // We use any as a valid input type /* eslint-disable @typescript-eslint/no-explicit-any */ Object.defineProperty(exports, "__esModule", ({ value: true })); /** * Sanitizes an input into a string so it can be passed into issueCommand safely * @param input input to sanitize into a string */ function toCommandValue(input) { if (input === null || input === undefined) { return ''; } else if (typeof input === 'string' || input instanceof String) { return input; } return JSON.stringify(input); } exports.toCommandValue = toCommandValue; //# sourceMappingURL=utils.js.map /***/ }), /***/ 4751: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; function __export(m) { for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } Object.defineProperty(exports, "__esModule", ({ value: true })); __export(__webpack_require__(2825)); //# sourceMappingURL=index.js.map /***/ }), /***/ 2825: /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", ({ value: true })); const fs_1 = __webpack_require__(5747); const debug_1 = __importDefault(__webpack_require__(8237)); const log = debug_1.default('@kwsites/file-exists'); function check(path, isFile, isDirectory) { log(`checking %s`, path); try { const stat = fs_1.statSync(path); if (stat.isFile() && isFile) { log(`[OK] path represents a file`); return true; } if (stat.isDirectory() && isDirectory) { log(`[OK] path represents a directory`); return true; } log(`[FAIL] path represents something other than a file or directory`); return false; } catch (e) { if (e.code === 'ENOENT') { log(`[FAIL] path is not accessible: %o`, e); return false; } log(`[FATAL] %o`, e); throw e; } } /** * Synchronous validation of a path existing either as a file or as a directory. * * @param {string} path The path to check * @param {number} type One or both of the exported numeric constants */ function exists(path, type = exports.READABLE) { return check(path, (type & exports.FILE) > 0, (type & exports.FOLDER) > 0); } exports.exists = exists; /** * Constant representing a file */ exports.FILE = 1; /** * Constant representing a folder */ exports.FOLDER = 2; /** * Constant representing either a file or a folder */ exports.READABLE = exports.FILE + exports.FOLDER; //# sourceMappingURL=index.js.map /***/ }), /***/ 9819: /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.createDeferred = exports.deferred = void 0; /** * Creates a new `DeferredPromise` * * ```typescript import {deferred} from '@kwsites/promise-deferred`; ``` */ function deferred() { let done; let fail; let status = 'pending'; const promise = new Promise((_done, _fail) => { done = _done; fail = _fail; }); return { promise, done(result) { if (status === 'pending') { status = 'resolved'; done(result); } }, fail(error) { if (status === 'pending') { status = 'rejected'; fail(error); } }, get fulfilled() { return status !== 'pending'; }, get status() { return status; }, }; } exports.deferred = deferred; /** * Alias of the exported `deferred` function, to help consumers wanting to use `deferred` as the * local variable name rather than the factory import name, without needing to rename on import. * * ```typescript import {createDeferred} from '@kwsites/promise-deferred`; ``` */ exports.createDeferred = deferred; /** * Default export allows use as: * * ```typescript import deferred from '@kwsites/promise-deferred`; ``` */ exports.default = deferred; //# sourceMappingURL=index.js.map /***/ }), /***/ 6545: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { module.exports = __webpack_require__(2618); /***/ }), /***/ 8104: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var utils = __webpack_require__(328); var settle = __webpack_require__(3211); var buildFullPath = __webpack_require__(1934); var buildURL = __webpack_require__(646); var http = __webpack_require__(8605); var https = __webpack_require__(7211); var httpFollow = __webpack_require__(7707).http; var httpsFollow = __webpack_require__(7707).https; var url = __webpack_require__(8835); var zlib = __webpack_require__(8761); var pkg = __webpack_require__(696); var createError = __webpack_require__(5226); var enhanceError = __webpack_require__(1516); var isHttps = /https:?/; /*eslint consistent-return:0*/ module.exports = function httpAdapter(config) { return new Promise(function dispatchHttpRequest(resolvePromise, rejectPromise) { var resolve = function resolve(value) { resolvePromise(value); }; var reject = function reject(value) { rejectPromise(value); }; var data = config.data; var headers = config.headers; // Set User-Agent (required by some servers) // Only set header if it hasn't been set in config // See https://github.com/axios/axios/issues/69 if (!headers['User-Agent'] && !headers['user-agent']) { headers['User-Agent'] = 'axios/' + pkg.version; } if (data && !utils.isStream(data)) { if (Buffer.isBuffer(data)) { // Nothing to do... } else if (utils.isArrayBuffer(data)) { data = Buffer.from(new Uint8Array(data)); } else if (utils.isString(data)) { data = Buffer.from(data, 'utf-8'); } else { return reject(createError( 'Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream', config )); } // Add Content-Length header if data exists headers['Content-Length'] = data.length; } // HTTP basic authentication var auth = undefined; if (config.auth) { var username = config.auth.username || ''; var password = config.auth.password || ''; auth = username + ':' + password; } // Parse url var fullPath = buildFullPath(config.baseURL, config.url); var parsed = url.parse(fullPath); var protocol = parsed.protocol || 'http:'; if (!auth && parsed.auth) { var urlAuth = parsed.auth.split(':'); var urlUsername = urlAuth[0] || ''; var urlPassword = urlAuth[1] || ''; auth = urlUsername + ':' + urlPassword; } if (auth) { delete headers.Authorization; } var isHttpsRequest = isHttps.test(protocol); var agent = isHttpsRequest ? config.httpsAgent : config.httpAgent; var options = { path: buildURL(parsed.path, config.params, config.paramsSerializer).replace(/^\?/, ''), method: config.method.toUpperCase(), headers: headers, agent: agent, agents: { http: config.httpAgent, https: config.httpsAgent }, auth: auth }; if (config.socketPath) { options.socketPath = config.socketPath; } else { options.hostname = parsed.hostname; options.port = parsed.port; } var proxy = config.proxy; if (!proxy && proxy !== false) { var proxyEnv = protocol.slice(0, -1) + '_proxy'; var proxyUrl = process.env[proxyEnv] || process.env[proxyEnv.toUpperCase()]; if (proxyUrl) { var parsedProxyUrl = url.parse(proxyUrl); var noProxyEnv = process.env.no_proxy || process.env.NO_PROXY; var shouldProxy = true; if (noProxyEnv) { var noProxy = noProxyEnv.split(',').map(function trim(s) { return s.trim(); }); shouldProxy = !noProxy.some(function proxyMatch(proxyElement) { if (!proxyElement) { return false; } if (proxyElement === '*') { return true; } if (proxyElement[0] === '.' && parsed.hostname.substr(parsed.hostname.length - proxyElement.length) === proxyElement) { return true; } return parsed.hostname === proxyElement; }); } if (shouldProxy) { proxy = { host: parsedProxyUrl.hostname, port: parsedProxyUrl.port }; if (parsedProxyUrl.auth) { var proxyUrlAuth = parsedProxyUrl.auth.split(':'); proxy.auth = { username: proxyUrlAuth[0], password: proxyUrlAuth[1] }; } } } } if (proxy) { options.hostname = proxy.host; options.host = proxy.host; options.headers.host = parsed.hostname + (parsed.port ? ':' + parsed.port : ''); options.port = proxy.port; options.path = protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path; // Basic proxy authorization if (proxy.auth) { var base64 = Buffer.from(proxy.auth.username + ':' + proxy.auth.password, 'utf8').toString('base64'); options.headers['Proxy-Authorization'] = 'Basic ' + base64; } } var transport; var isHttpsProxy = isHttpsRequest && (proxy ? isHttps.test(proxy.protocol) : true); if (config.transport) { transport = config.transport; } else if (config.maxRedirects === 0) { transport = isHttpsProxy ? https : http; } else { if (config.maxRedirects) { options.maxRedirects = config.maxRedirects; } transport = isHttpsProxy ? httpsFollow : httpFollow; } if (config.maxBodyLength > -1) { options.maxBodyLength = config.maxBodyLength; } // Create the request var req = transport.request(options, function handleResponse(res) { if (req.aborted) return; // uncompress the response body transparently if required var stream = res; // return the last request in case of redirects var lastRequest = res.req || req; // if no content, is HEAD request or decompress disabled we should not decompress if (res.statusCode !== 204 && lastRequest.method !== 'HEAD' && config.decompress !== false) { switch (res.headers['content-encoding']) { /*eslint default-case:0*/ case 'gzip': case 'compress': case 'deflate': // add the unzipper to the body stream processing pipeline stream = stream.pipe(zlib.createUnzip()); // remove the content-encoding in order to not confuse downstream operations delete res.headers['content-encoding']; break; } } var response = { status: res.statusCode, statusText: res.statusMessage, headers: res.headers, config: config, request: lastRequest }; if (config.responseType === 'stream') { response.data = stream; settle(resolve, reject, response); } else { var responseBuffer = []; stream.on('data', function handleStreamData(chunk) { responseBuffer.push(chunk); // make sure the content length is not over the maxContentLength if specified if (config.maxContentLength > -1 && Buffer.concat(responseBuffer).length > config.maxContentLength) { stream.destroy(); reject(createError('maxContentLength size of ' + config.maxContentLength + ' exceeded', config, null, lastRequest)); } }); stream.on('error', function handleStreamError(err) { if (req.aborted) return; reject(enhanceError(err, config, null, lastRequest)); }); stream.on('end', function handleStreamEnd() { var responseData = Buffer.concat(responseBuffer); if (config.responseType !== 'arraybuffer') { responseData = responseData.toString(config.responseEncoding); if (!config.responseEncoding || config.responseEncoding === 'utf8') { responseData = utils.stripBOM(responseData); } } response.data = responseData; settle(resolve, reject, response); }); } }); // Handle errors req.on('error', function handleRequestError(err) { if (req.aborted && err.code !== 'ERR_FR_TOO_MANY_REDIRECTS') return; reject(enhanceError(err, config, null, req)); }); // Handle request timeout if (config.timeout) { // Sometime, the response will be very slow, and does not respond, the connect event will be block by event loop system. // And timer callback will be fired, and abort() will be invoked before connection, then get "socket hang up" and code ECONNRESET. // At this time, if we have a large number of request, nodejs will hang up some socket on background. and the number will up and up. // And then these socket which be hang up will devoring CPU little by little. // ClientRequest.setTimeout will be fired on the specify milliseconds, and can make sure that abort() will be fired after connect. req.setTimeout(config.timeout, function handleRequestTimeout() { req.abort(); reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED', req)); }); } if (config.cancelToken) { // Handle cancellation config.cancelToken.promise.then(function onCanceled(cancel) { if (req.aborted) return; req.abort(); reject(cancel); }); } // Send the request if (utils.isStream(data)) { data.on('error', function handleStreamError(err) { reject(enhanceError(err, config, null, req)); }).pipe(req); } else { req.end(data); } }); }; /***/ }), /***/ 3454: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var utils = __webpack_require__(328); var settle = __webpack_require__(3211); var cookies = __webpack_require__(1545); var buildURL = __webpack_require__(646); var buildFullPath = __webpack_require__(1934); var parseHeaders = __webpack_require__(6455); var isURLSameOrigin = __webpack_require__(3608); var createError = __webpack_require__(5226); module.exports = function xhrAdapter(config) { return new Promise(function dispatchXhrRequest(resolve, reject) { var requestData = config.data; var requestHeaders = config.headers; if (utils.isFormData(requestData)) { delete requestHeaders['Content-Type']; // Let the browser set it } var request = new XMLHttpRequest(); // HTTP basic authentication if (config.auth) { var username = config.auth.username || ''; var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : ''; requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password); } var fullPath = buildFullPath(config.baseURL, config.url); request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true); // Set the request timeout in MS request.timeout = config.timeout; // Listen for ready state request.onreadystatechange = function handleLoad() { if (!request || request.readyState !== 4) { return; } // The request errored out and we didn't get a response, this will be // handled by onerror instead // With one exception: request that using file: protocol, most browsers // will return status as 0 even though it's a successful request if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) { return; } // Prepare the response var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null; var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response; var response = { data: responseData, status: request.status, statusText: request.statusText, headers: responseHeaders, config: config, request: request }; settle(resolve, reject, response); // Clean up request request = null; }; // Handle browser request cancellation (as opposed to a manual cancellation) request.onabort = function handleAbort() { if (!request) { return; } reject(createError('Request aborted', config, 'ECONNABORTED', request)); // Clean up request request = null; }; // Handle low level network errors request.onerror = function handleError() { // Real errors are hidden from us by the browser // onerror should only fire if it's a network error reject(createError('Network Error', config, null, request)); // Clean up request request = null; }; // Handle timeout request.ontimeout = function handleTimeout() { var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded'; if (config.timeoutErrorMessage) { timeoutErrorMessage = config.timeoutErrorMessage; } reject(createError(timeoutErrorMessage, config, 'ECONNABORTED', request)); // Clean up request request = null; }; // Add xsrf header // This is only done if running in a standard browser environment. // Specifically not if we're in a web worker, or react-native. if (utils.isStandardBrowserEnv()) { // Add xsrf header var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ? cookies.read(config.xsrfCookieName) : undefined; if (xsrfValue) { requestHeaders[config.xsrfHeaderName] = xsrfValue; } } // Add headers to the request if ('setRequestHeader' in request) { utils.forEach(requestHeaders, function setRequestHeader(val, key) { if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') { // Remove Content-Type if data is undefined delete requestHeaders[key]; } else { // Otherwise add header to the request request.setRequestHeader(key, val); } }); } // Add withCredentials to request if needed if (!utils.isUndefined(config.withCredentials)) { request.withCredentials = !!config.withCredentials; } // Add responseType to request if needed if (config.responseType) { try { request.responseType = config.responseType; } catch (e) { // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2. // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function. if (config.responseType !== 'json') { throw e; } } } // Handle progress if needed if (typeof config.onDownloadProgress === 'function') { request.addEventListener('progress', config.onDownloadProgress); } // Not all browsers support upload events if (typeof config.onUploadProgress === 'function' && request.upload) { request.upload.addEventListener('progress', config.onUploadProgress); } if (config.cancelToken) { // Handle cancellation config.cancelToken.promise.then(function onCanceled(cancel) { if (!request) { return; } request.abort(); reject(cancel); // Clean up request request = null; }); } if (!requestData) { requestData = null; } // Send the request request.send(requestData); }); }; /***/ }), /***/ 2618: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var utils = __webpack_require__(328); var bind = __webpack_require__(7065); var Axios = __webpack_require__(8178); var mergeConfig = __webpack_require__(4831); var defaults = __webpack_require__(8190); /** * Create an instance of Axios * * @param {Object} defaultConfig The default config for the instance * @return {Axios} A new instance of Axios */ function createInstance(defaultConfig) { var context = new Axios(defaultConfig); var instance = bind(Axios.prototype.request, context); // Copy axios.prototype to instance utils.extend(instance, Axios.prototype, context); // Copy context to instance utils.extend(instance, context); return instance; } // Create the default instance to be exported var axios = createInstance(defaults); // Expose Axios class to allow class inheritance axios.Axios = Axios; // Factory for creating new instances axios.create = function create(instanceConfig) { return createInstance(mergeConfig(axios.defaults, instanceConfig)); }; // Expose Cancel & CancelToken axios.Cancel = __webpack_require__(8875); axios.CancelToken = __webpack_require__(1587); axios.isCancel = __webpack_require__(4057); // Expose all/spread axios.all = function all(promises) { return Promise.all(promises); }; axios.spread = __webpack_require__(4850); module.exports = axios; // Allow use of default import syntax in TypeScript module.exports.default = axios; /***/ }), /***/ 8875: /***/ ((module) => { "use strict"; /** * A `Cancel` is an object that is thrown when an operation is canceled. * * @class * @param {string=} message The message. */ function Cancel(message) { this.message = message; } Cancel.prototype.toString = function toString() { return 'Cancel' + (this.message ? ': ' + this.message : ''); }; Cancel.prototype.__CANCEL__ = true; module.exports = Cancel; /***/ }), /***/ 1587: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var Cancel = __webpack_require__(8875); /** * A `CancelToken` is an object that can be used to request cancellation of an operation. * * @class * @param {Function} executor The executor function. */ function CancelToken(executor) { if (typeof executor !== 'function') { throw new TypeError('executor must be a function.'); } var resolvePromise; this.promise = new Promise(function promiseExecutor(resolve) { resolvePromise = resolve; }); var token = this; executor(function cancel(message) { if (token.reason) { // Cancellation has already been requested return; } token.reason = new Cancel(message); resolvePromise(token.reason); }); } /** * Throws a `Cancel` if cancellation has been requested. */ CancelToken.prototype.throwIfRequested = function throwIfRequested() { if (this.reason) { throw this.reason; } }; /** * Returns an object that contains a new `CancelToken` and a function that, when called, * cancels the `CancelToken`. */ CancelToken.source = function source() { var cancel; var token = new CancelToken(function executor(c) { cancel = c; }); return { token: token, cancel: cancel }; }; module.exports = CancelToken; /***/ }), /***/ 4057: /***/ ((module) => { "use strict"; module.exports = function isCancel(value) { return !!(value && value.__CANCEL__); }; /***/ }), /***/ 8178: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var utils = __webpack_require__(328); var buildURL = __webpack_require__(646); var InterceptorManager = __webpack_require__(3214); var dispatchRequest = __webpack_require__(5062); var mergeConfig = __webpack_require__(4831); /** * Create a new instance of Axios * * @param {Object} instanceConfig The default config for the instance */ function Axios(instanceConfig) { this.defaults = instanceConfig; this.interceptors = { request: new InterceptorManager(), response: new InterceptorManager() }; } /** * Dispatch a request * * @param {Object} config The config specific for this request (merged with this.defaults) */ Axios.prototype.request = function request(config) { /*eslint no-param-reassign:0*/ // Allow for axios('example/url'[, config]) a la fetch API if (typeof config === 'string') { config = arguments[1] || {}; config.url = arguments[0]; } else { config = config || {}; } config = mergeConfig(this.defaults, config); // Set config.method if (config.method) { config.method = config.method.toLowerCase(); } else if (this.defaults.method) { config.method = this.defaults.method.toLowerCase(); } else { config.method = 'get'; } // Hook up interceptors middleware var chain = [dispatchRequest, undefined]; var promise = Promise.resolve(config); this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { chain.unshift(interceptor.fulfilled, interceptor.rejected); }); this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { chain.push(interceptor.fulfilled, interceptor.rejected); }); while (chain.length) { promise = promise.then(chain.shift(), chain.shift()); } return promise; }; Axios.prototype.getUri = function getUri(config) { config = mergeConfig(this.defaults, config); return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\?/, ''); }; // Provide aliases for supported request methods utils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { /*eslint func-names:0*/ Axios.prototype[method] = function(url, config) { return this.request(mergeConfig(config || {}, { method: method, url: url, data: (config || {}).data })); }; }); utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { /*eslint func-names:0*/ Axios.prototype[method] = function(url, data, config) { return this.request(mergeConfig(config || {}, { method: method, url: url, data: data })); }; }); module.exports = Axios; /***/ }), /***/ 3214: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var utils = __webpack_require__(328); function InterceptorManager() { this.handlers = []; } /** * Add a new interceptor to the stack * * @param {Function} fulfilled The function to handle `then` for a `Promise` * @param {Function} rejected The function to handle `reject` for a `Promise` * * @return {Number} An ID used to remove interceptor later */ InterceptorManager.prototype.use = function use(fulfilled, rejected) { this.handlers.push({ fulfilled: fulfilled, rejected: rejected }); return this.handlers.length - 1; }; /** * Remove an interceptor from the stack * * @param {Number} id The ID that was returned by `use` */ InterceptorManager.prototype.eject = function eject(id) { if (this.handlers[id]) { this.handlers[id] = null; } }; /** * Iterate over all the registered interceptors * * This method is particularly useful for skipping over any * interceptors that may have become `null` calling `eject`. * * @param {Function} fn The function to call for each interceptor */ InterceptorManager.prototype.forEach = function forEach(fn) { utils.forEach(this.handlers, function forEachHandler(h) { if (h !== null) { fn(h); } }); }; module.exports = InterceptorManager; /***/ }), /***/ 1934: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var isAbsoluteURL = __webpack_require__(1301); var combineURLs = __webpack_require__(7189); /** * Creates a new URL by combining the baseURL with the requestedURL, * only when the requestedURL is not already an absolute URL. * If the requestURL is absolute, this function returns the requestedURL untouched. * * @param {string} baseURL The base URL * @param {string} requestedURL Absolute or relative URL to combine * @returns {string} The combined full path */ module.exports = function buildFullPath(baseURL, requestedURL) { if (baseURL && !isAbsoluteURL(requestedURL)) { return combineURLs(baseURL, requestedURL); } return requestedURL; }; /***/ }), /***/ 5226: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var enhanceError = __webpack_require__(1516); /** * Create an Error with the specified message, config, error code, request and response. * * @param {string} message The error message. * @param {Object} config The config. * @param {string} [code] The error code (for example, 'ECONNABORTED'). * @param {Object} [request] The request. * @param {Object} [response] The response. * @returns {Error} The created error. */ module.exports = function createError(message, config, code, request, response) { var error = new Error(message); return enhanceError(error, config, code, request, response); }; /***/ }), /***/ 5062: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var utils = __webpack_require__(328); var transformData = __webpack_require__(9812); var isCancel = __webpack_require__(4057); var defaults = __webpack_require__(8190); /** * Throws a `Cancel` if cancellation has been requested. */ function throwIfCancellationRequested(config) { if (config.cancelToken) { config.cancelToken.throwIfRequested(); } } /** * Dispatch a request to the server using the configured adapter. * * @param {object} config The config that is to be used for the request * @returns {Promise} The Promise to be fulfilled */ module.exports = function dispatchRequest(config) { throwIfCancellationRequested(config); // Ensure headers exist config.headers = config.headers || {}; // Transform request data config.data = transformData( config.data, config.headers, config.transformRequest ); // Flatten headers config.headers = utils.merge( config.headers.common || {}, config.headers[config.method] || {}, config.headers ); utils.forEach( ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], function cleanHeaderConfig(method) { delete config.headers[method]; } ); var adapter = config.adapter || defaults.adapter; return adapter(config).then(function onAdapterResolution(response) { throwIfCancellationRequested(config); // Transform response data response.data = transformData( response.data, response.headers, config.transformResponse ); return response; }, function onAdapterRejection(reason) { if (!isCancel(reason)) { throwIfCancellationRequested(config); // Transform response data if (reason && reason.response) { reason.response.data = transformData( reason.response.data, reason.response.headers, config.transformResponse ); } } return Promise.reject(reason); }); }; /***/ }), /***/ 1516: /***/ ((module) => { "use strict"; /** * Update an Error with the specified config, error code, and response. * * @param {Error} error The error to update. * @param {Object} config The config. * @param {string} [code] The error code (for example, 'ECONNABORTED'). * @param {Object} [request] The request. * @param {Object} [response] The response. * @returns {Error} The error. */ module.exports = function enhanceError(error, config, code, request, response) { error.config = config; if (code) { error.code = code; } error.request = request; error.response = response; error.isAxiosError = true; error.toJSON = function toJSON() { return { // Standard message: this.message, name: this.name, // Microsoft description: this.description, number: this.number, // Mozilla fileName: this.fileName, lineNumber: this.lineNumber, columnNumber: this.columnNumber, stack: this.stack, // Axios config: this.config, code: this.code }; }; return error; }; /***/ }), /***/ 4831: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var utils = __webpack_require__(328); /** * Config-specific merge-function which creates a new config-object * by merging two configuration objects together. * * @param {Object} config1 * @param {Object} config2 * @returns {Object} New object resulting from merging config2 to config1 */ module.exports = function mergeConfig(config1, config2) { // eslint-disable-next-line no-param-reassign config2 = config2 || {}; var config = {}; var valueFromConfig2Keys = ['url', 'method', 'data']; var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params']; var defaultToConfig2Keys = [ 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer', 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName', 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress', 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent', 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding' ]; var directMergeKeys = ['validateStatus']; function getMergedValue(target, source) { if (utils.isPlainObject(target) && utils.isPlainObject(source)) { return utils.merge(target, source); } else if (utils.isPlainObject(source)) { return utils.merge({}, source); } else if (utils.isArray(source)) { return source.slice(); } return source; } function mergeDeepProperties(prop) { if (!utils.isUndefined(config2[prop])) { config[prop] = getMergedValue(config1[prop], config2[prop]); } else if (!utils.isUndefined(config1[prop])) { config[prop] = getMergedValue(undefined, config1[prop]); } } utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) { if (!utils.isUndefined(config2[prop])) { config[prop] = getMergedValue(undefined, config2[prop]); } }); utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties); utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) { if (!utils.isUndefined(config2[prop])) { config[prop] = getMergedValue(undefined, config2[prop]); } else if (!utils.isUndefined(config1[prop])) { config[prop] = getMergedValue(undefined, config1[prop]); } }); utils.forEach(directMergeKeys, function merge(prop) { if (prop in config2) { config[prop] = getMergedValue(config1[prop], config2[prop]); } else if (prop in config1) { config[prop] = getMergedValue(undefined, config1[prop]); } }); var axiosKeys = valueFromConfig2Keys .concat(mergeDeepPropertiesKeys) .concat(defaultToConfig2Keys) .concat(directMergeKeys); var otherKeys = Object .keys(config1) .concat(Object.keys(config2)) .filter(function filterAxiosKeys(key) { return axiosKeys.indexOf(key) === -1; }); utils.forEach(otherKeys, mergeDeepProperties); return config; }; /***/ }), /***/ 3211: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var createError = __webpack_require__(5226); /** * Resolve or reject a Promise based on response status. * * @param {Function} resolve A function that resolves the promise. * @param {Function} reject A function that rejects the promise. * @param {object} response The response. */ module.exports = function settle(resolve, reject, response) { var validateStatus = response.config.validateStatus; if (!response.status || !validateStatus || validateStatus(response.status)) { resolve(response); } else { reject(createError( 'Request failed with status code ' + response.status, response.config, null, response.request, response )); } }; /***/ }), /***/ 9812: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var utils = __webpack_require__(328); /** * Transform the data for a request or a response * * @param {Object|String} data The data to be transformed * @param {Array} headers The headers for the request or response * @param {Array|Function} fns A single function or Array of functions * @returns {*} The resulting transformed data */ module.exports = function transformData(data, headers, fns) { /*eslint no-param-reassign:0*/ utils.forEach(fns, function transform(fn) { data = fn(data, headers); }); return data; }; /***/ }), /***/ 8190: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var utils = __webpack_require__(328); var normalizeHeaderName = __webpack_require__(6240); var DEFAULT_CONTENT_TYPE = { 'Content-Type': 'application/x-www-form-urlencoded' }; function setContentTypeIfUnset(headers, value) { if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) { headers['Content-Type'] = value; } } function getDefaultAdapter() { var adapter; if (typeof XMLHttpRequest !== 'undefined') { // For browsers use XHR adapter adapter = __webpack_require__(3454); } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') { // For node use HTTP adapter adapter = __webpack_require__(8104); } return adapter; } var defaults = { adapter: getDefaultAdapter(), transformRequest: [function transformRequest(data, headers) { normalizeHeaderName(headers, 'Accept'); normalizeHeaderName(headers, 'Content-Type'); if (utils.isFormData(data) || utils.isArrayBuffer(data) || utils.isBuffer(data) || utils.isStream(data) || utils.isFile(data) || utils.isBlob(data) ) { return data; } if (utils.isArrayBufferView(data)) { return data.buffer; } if (utils.isURLSearchParams(data)) { setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8'); return data.toString(); } if (utils.isObject(data)) { setContentTypeIfUnset(headers, 'application/json;charset=utf-8'); return JSON.stringify(data); } return data; }], transformResponse: [function transformResponse(data) { /*eslint no-param-reassign:0*/ if (typeof data === 'string') { try { data = JSON.parse(data); } catch (e) { /* Ignore */ } } return data; }], /** * A timeout in milliseconds to abort a request. If set to 0 (default) a * timeout is not created. */ timeout: 0, xsrfCookieName: 'XSRF-TOKEN', xsrfHeaderName: 'X-XSRF-TOKEN', maxContentLength: -1, maxBodyLength: -1, validateStatus: function validateStatus(status) { return status >= 200 && status < 300; } }; defaults.headers = { common: { 'Accept': 'application/json, text/plain, */*' } }; utils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) { defaults.headers[method] = {}; }); utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE); }); module.exports = defaults; /***/ }), /***/ 7065: /***/ ((module) => { "use strict"; module.exports = function bind(fn, thisArg) { return function wrap() { var args = new Array(arguments.length); for (var i = 0; i < args.length; i++) { args[i] = arguments[i]; } return fn.apply(thisArg, args); }; }; /***/ }), /***/ 646: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var utils = __webpack_require__(328); function encode(val) { return encodeURIComponent(val). replace(/%3A/gi, ':'). replace(/%24/g, '$'). replace(/%2C/gi, ','). replace(/%20/g, '+'). replace(/%5B/gi, '['). replace(/%5D/gi, ']'); } /** * Build a URL by appending params to the end * * @param {string} url The base of the url (e.g., http://www.google.com) * @param {object} [params] The params to be appended * @returns {string} The formatted url */ module.exports = function buildURL(url, params, paramsSerializer) { /*eslint no-param-reassign:0*/ if (!params) { return url; } var serializedParams; if (paramsSerializer) { serializedParams = paramsSerializer(params); } else if (utils.isURLSearchParams(params)) { serializedParams = params.toString(); } else { var parts = []; utils.forEach(params, function serialize(val, key) { if (val === null || typeof val === 'undefined') { return; } if (utils.isArray(val)) { key = key + '[]'; } else { val = [val]; } utils.forEach(val, function parseValue(v) { if (utils.isDate(v)) { v = v.toISOString(); } else if (utils.isObject(v)) { v = JSON.stringify(v); } parts.push(encode(key) + '=' + encode(v)); }); }); serializedParams = parts.join('&'); } if (serializedParams) { var hashmarkIndex = url.indexOf('#'); if (hashmarkIndex !== -1) { url = url.slice(0, hashmarkIndex); } url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; } return url; }; /***/ }), /***/ 7189: /***/ ((module) => { "use strict"; /** * Creates a new URL by combining the specified URLs * * @param {string} baseURL The base URL * @param {string} relativeURL The relative URL * @returns {string} The combined URL */ module.exports = function combineURLs(baseURL, relativeURL) { return relativeURL ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '') : baseURL; }; /***/ }), /***/ 1545: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var utils = __webpack_require__(328); module.exports = ( utils.isStandardBrowserEnv() ? // Standard browser envs support document.cookie (function standardBrowserEnv() { return { write: function write(name, value, expires, path, domain, secure) { var cookie = []; cookie.push(name + '=' + encodeURIComponent(value)); if (utils.isNumber(expires)) { cookie.push('expires=' + new Date(expires).toGMTString()); } if (utils.isString(path)) { cookie.push('path=' + path); } if (utils.isString(domain)) { cookie.push('domain=' + domain); } if (secure === true) { cookie.push('secure'); } document.cookie = cookie.join('; '); }, read: function read(name) { var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); return (match ? decodeURIComponent(match[3]) : null); }, remove: function remove(name) { this.write(name, '', Date.now() - 86400000); } }; })() : // Non standard browser env (web workers, react-native) lack needed support. (function nonStandardBrowserEnv() { return { write: function write() {}, read: function read() { return null; }, remove: function remove() {} }; })() ); /***/ }), /***/ 1301: /***/ ((module) => { "use strict"; /** * Determines whether the specified URL is absolute * * @param {string} url The URL to test * @returns {boolean} True if the specified URL is absolute, otherwise false */ module.exports = function isAbsoluteURL(url) { // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed // by any combination of letters, digits, plus, period, or hyphen. return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url); }; /***/ }), /***/ 3608: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var utils = __webpack_require__(328); module.exports = ( utils.isStandardBrowserEnv() ? // Standard browser envs have full support of the APIs needed to test // whether the request URL is of the same origin as current location. (function standardBrowserEnv() { var msie = /(msie|trident)/i.test(navigator.userAgent); var urlParsingNode = document.createElement('a'); var originURL; /** * Parse a URL to discover it's components * * @param {String} url The URL to be parsed * @returns {Object} */ function resolveURL(url) { var href = url; if (msie) { // IE needs attribute set twice to normalize properties urlParsingNode.setAttribute('href', href); href = urlParsingNode.href; } urlParsingNode.setAttribute('href', href); // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils return { href: urlParsingNode.href, protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', host: urlParsingNode.host, search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', hostname: urlParsingNode.hostname, port: urlParsingNode.port, pathname: (urlParsingNode.pathname.charAt(0) === '/') ? urlParsingNode.pathname : '/' + urlParsingNode.pathname }; } originURL = resolveURL(window.location.href); /** * Determine if a URL shares the same origin as the current location * * @param {String} requestURL The URL to test * @returns {boolean} True if URL shares the same origin, otherwise false */ return function isURLSameOrigin(requestURL) { var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL; return (parsed.protocol === originURL.protocol && parsed.host === originURL.host); }; })() : // Non standard browser envs (web workers, react-native) lack needed support. (function nonStandardBrowserEnv() { return function isURLSameOrigin() { return true; }; })() ); /***/ }), /***/ 6240: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var utils = __webpack_require__(328); module.exports = function normalizeHeaderName(headers, normalizedName) { utils.forEach(headers, function processHeader(value, name) { if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) { headers[normalizedName] = value; delete headers[name]; } }); }; /***/ }), /***/ 6455: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var utils = __webpack_require__(328); // Headers whose duplicates are ignored by node // c.f. https://nodejs.org/api/http.html#http_message_headers var ignoreDuplicateOf = [ 'age', 'authorization', 'content-length', 'content-type', 'etag', 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', 'last-modified', 'location', 'max-forwards', 'proxy-authorization', 'referer', 'retry-after', 'user-agent' ]; /** * Parse headers into an object * * ``` * Date: Wed, 27 Aug 2014 08:58:49 GMT * Content-Type: application/json * Connection: keep-alive * Transfer-Encoding: chunked * ``` * * @param {String} headers Headers needing to be parsed * @returns {Object} Headers parsed into an object */ module.exports = function parseHeaders(headers) { var parsed = {}; var key; var val; var i; if (!headers) { return parsed; } utils.forEach(headers.split('\n'), function parser(line) { i = line.indexOf(':'); key = utils.trim(line.substr(0, i)).toLowerCase(); val = utils.trim(line.substr(i + 1)); if (key) { if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) { return; } if (key === 'set-cookie') { parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]); } else { parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; } } }); return parsed; }; /***/ }), /***/ 4850: /***/ ((module) => { "use strict"; /** * Syntactic sugar for invoking a function and expanding an array for arguments. * * Common use case would be to use `Function.prototype.apply`. * * ```js * function f(x, y, z) {} * var args = [1, 2, 3]; * f.apply(null, args); * ``` * * With `spread` this example can be re-written. * * ```js * spread(function(x, y, z) {})([1, 2, 3]); * ``` * * @param {Function} callback * @returns {Function} */ module.exports = function spread(callback) { return function wrap(arr) { return callback.apply(null, arr); }; }; /***/ }), /***/ 328: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var bind = __webpack_require__(7065); /*global toString:true*/ // utils is a library of generic helper functions non-specific to axios var toString = Object.prototype.toString; /** * Determine if a value is an Array * * @param {Object} val The value to test * @returns {boolean} True if value is an Array, otherwise false */ function isArray(val) { return toString.call(val) === '[object Array]'; } /** * Determine if a value is undefined * * @param {Object} val The value to test * @returns {boolean} True if the value is undefined, otherwise false */ function isUndefined(val) { return typeof val === 'undefined'; } /** * Determine if a value is a Buffer * * @param {Object} val The value to test * @returns {boolean} True if value is a Buffer, otherwise false */ function isBuffer(val) { return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val); } /** * Determine if a value is an ArrayBuffer * * @param {Object} val The value to test * @returns {boolean} True if value is an ArrayBuffer, otherwise false */ function isArrayBuffer(val) { return toString.call(val) === '[object ArrayBuffer]'; } /** * Determine if a value is a FormData * * @param {Object} val The value to test * @returns {boolean} True if value is an FormData, otherwise false */ function isFormData(val) { return (typeof FormData !== 'undefined') && (val instanceof FormData); } /** * Determine if a value is a view on an ArrayBuffer * * @param {Object} val The value to test * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false */ function isArrayBufferView(val) { var result; if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) { result = ArrayBuffer.isView(val); } else { result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer); } return result; } /** * Determine if a value is a String * * @param {Object} val The value to test * @returns {boolean} True if value is a String, otherwise false */ function isString(val) { return typeof val === 'string'; } /** * Determine if a value is a Number * * @param {Object} val The value to test * @returns {boolean} True if value is a Number, otherwise false */ function isNumber(val) { return typeof val === 'number'; } /** * Determine if a value is an Object * * @param {Object} val The value to test * @returns {boolean} True if value is an Object, otherwise false */ function isObject(val) { return val !== null && typeof val === 'object'; } /** * Determine if a value is a plain Object * * @param {Object} val The value to test * @return {boolean} True if value is a plain Object, otherwise false */ function isPlainObject(val) { if (toString.call(val) !== '[object Object]') { return false; } var prototype = Object.getPrototypeOf(val); return prototype === null || prototype === Object.prototype; } /** * Determine if a value is a Date * * @param {Object} val The value to test * @returns {boolean} True if value is a Date, otherwise false */ function isDate(val) { return toString.call(val) === '[object Date]'; } /** * Determine if a value is a File * * @param {Object} val The value to test * @returns {boolean} True if value is a File, otherwise false */ function isFile(val) { return toString.call(val) === '[object File]'; } /** * Determine if a value is a Blob * * @param {Object} val The value to test * @returns {boolean} True if value is a Blob, otherwise false */ function isBlob(val) { return toString.call(val) === '[object Blob]'; } /** * Determine if a value is a Function * * @param {Object} val The value to test * @returns {boolean} True if value is a Function, otherwise false */ function isFunction(val) { return toString.call(val) === '[object Function]'; } /** * Determine if a value is a Stream * * @param {Object} val The value to test * @returns {boolean} True if value is a Stream, otherwise false */ function isStream(val) { return isObject(val) && isFunction(val.pipe); } /** * Determine if a value is a URLSearchParams object * * @param {Object} val The value to test * @returns {boolean} True if value is a URLSearchParams object, otherwise false */ function isURLSearchParams(val) { return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams; } /** * Trim excess whitespace off the beginning and end of a string * * @param {String} str The String to trim * @returns {String} The String freed of excess whitespace */ function trim(str) { return str.replace(/^\s*/, '').replace(/\s*$/, ''); } /** * Determine if we're running in a standard browser environment * * This allows axios to run in a web worker, and react-native. * Both environments support XMLHttpRequest, but not fully standard globals. * * web workers: * typeof window -> undefined * typeof document -> undefined * * react-native: * navigator.product -> 'ReactNative' * nativescript * navigator.product -> 'NativeScript' or 'NS' */ function isStandardBrowserEnv() { if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' || navigator.product === 'NativeScript' || navigator.product === 'NS')) { return false; } return ( typeof window !== 'undefined' && typeof document !== 'undefined' ); } /** * Iterate over an Array or an Object invoking a function for each item. * * If `obj` is an Array callback will be called passing * the value, index, and complete array for each item. * * If 'obj' is an Object callback will be called passing * the value, key, and complete object for each property. * * @param {Object|Array} obj The object to iterate * @param {Function} fn The callback to invoke for each item */ function forEach(obj, fn) { // Don't bother if no value provided if (obj === null || typeof obj === 'undefined') { return; } // Force an array if not already something iterable if (typeof obj !== 'object') { /*eslint no-param-reassign:0*/ obj = [obj]; } if (isArray(obj)) { // Iterate over array values for (var i = 0, l = obj.length; i < l; i++) { fn.call(null, obj[i], i, obj); } } else { // Iterate over object keys for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { fn.call(null, obj[key], key, obj); } } } } /** * Accepts varargs expecting each argument to be an object, then * immutably merges the properties of each object and returns result. * * When multiple objects contain the same key the later object in * the arguments list will take precedence. * * Example: * * ```js * var result = merge({foo: 123}, {foo: 456}); * console.log(result.foo); // outputs 456 * ``` * * @param {Object} obj1 Object to merge * @returns {Object} Result of all merge properties */ function merge(/* obj1, obj2, obj3, ... */) { var result = {}; function assignValue(val, key) { if (isPlainObject(result[key]) && isPlainObject(val)) { result[key] = merge(result[key], val); } else if (isPlainObject(val)) { result[key] = merge({}, val); } else if (isArray(val)) { result[key] = val.slice(); } else { result[key] = val; } } for (var i = 0, l = arguments.length; i < l; i++) { forEach(arguments[i], assignValue); } return result; } /** * Extends object a by mutably adding to it the properties of object b. * * @param {Object} a The object to be extended * @param {Object} b The object to copy properties from * @param {Object} thisArg The object to bind function to * @return {Object} The resulting value of object a */ function extend(a, b, thisArg) { forEach(b, function assignValue(val, key) { if (thisArg && typeof val === 'function') { a[key] = bind(val, thisArg); } else { a[key] = val; } }); return a; } /** * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) * * @param {string} content with BOM * @return {string} content value without BOM */ function stripBOM(content) { if (content.charCodeAt(0) === 0xFEFF) { content = content.slice(1); } return content; } module.exports = { isArray: isArray, isArrayBuffer: isArrayBuffer, isBuffer: isBuffer, isFormData: isFormData, isArrayBufferView: isArrayBufferView, isString: isString, isNumber: isNumber, isObject: isObject, isPlainObject: isPlainObject, isUndefined: isUndefined, isDate: isDate, isFile: isFile, isBlob: isBlob, isFunction: isFunction, isStream: isStream, isURLSearchParams: isURLSearchParams, isStandardBrowserEnv: isStandardBrowserEnv, forEach: forEach, merge: merge, extend: extend, trim: trim, stripBOM: stripBOM }; /***/ }), /***/ 8222: /***/ ((module, exports, __webpack_require__) => { /* eslint-env browser */ /** * This is the web browser implementation of `debug()`. */ exports.log = log; exports.formatArgs = formatArgs; exports.save = save; exports.load = load; exports.useColors = useColors; exports.storage = localstorage(); /** * Colors. */ exports.colors = [ '#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33' ]; /** * Currently only WebKit-based Web Inspectors, Firefox >= v31, * and the Firebug extension (any Firefox version) are known * to support "%c" CSS customizations. * * TODO: add a `localStorage` variable to explicitly enable/disable colors */ // eslint-disable-next-line complexity function useColors() { // NB: In an Electron preload script, document will be defined but not fully // initialized. Since we know we're in Chrome, we'll just detect this case // explicitly if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) { return true; } // Internet Explorer and Edge do not support colors. if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { return false; } // Is webkit? http://stackoverflow.com/a/16459606/376773 // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || // Is firebug? http://stackoverflow.com/a/398120/376773 (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || // Is firefox >= v31? // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || // Double check webkit in userAgent just in case we are in a worker (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); } /** * Colorize log arguments if enabled. * * @api public */ function formatArgs(args) { args[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' ') + '+' + module.exports.humanize(this.diff); if (!this.useColors) { return; } const c = 'color: ' + this.color; args.splice(1, 0, c, 'color: inherit'); // The final "%c" is somewhat tricky, because there could be other // arguments passed either before or after the %c, so we need to // figure out the correct index to insert the CSS into let index = 0; let lastC = 0; args[0].replace(/%[a-zA-Z%]/g, match => { if (match === '%%') { return; } index++; if (match === '%c') { // We only are interested in the *last* %c // (the user may have provided their own) lastC = index; } }); args.splice(lastC, 0, c); } /** * Invokes `console.log()` when available. * No-op when `console.log` is not a "function". * * @api public */ function log(...args) { // This hackery is required for IE8/9, where // the `console.log` function doesn't have 'apply' return typeof console === 'object' && console.log && console.log(...args); } /** * Save `namespaces`. * * @param {String} namespaces * @api private */ function save(namespaces) { try { if (namespaces) { exports.storage.setItem('debug', namespaces); } else { exports.storage.removeItem('debug'); } } catch (error) { // Swallow // XXX (@Qix-) should we be logging these? } } /** * Load `namespaces`. * * @return {String} returns the previously persisted debug modes * @api private */ function load() { let r; try { r = exports.storage.getItem('debug'); } catch (error) { // Swallow // XXX (@Qix-) should we be logging these? } // If debug isn't set in LS, and we're in Electron, try to load $DEBUG if (!r && typeof process !== 'undefined' && 'env' in process) { r = process.env.DEBUG; } return r; } /** * Localstorage attempts to return the localstorage. * * This is necessary because safari throws * when a user disables cookies/localstorage * and you attempt to access it. * * @return {LocalStorage} * @api private */ function localstorage() { try { // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context // The Browser also has localStorage in the global context. return localStorage; } catch (error) { // Swallow // XXX (@Qix-) should we be logging these? } } module.exports = __webpack_require__(6243)(exports); const {formatters} = module.exports; /** * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. */ formatters.j = function (v) { try { return JSON.stringify(v); } catch (error) { return '[UnexpectedJSONParseError]: ' + error.message; } }; /***/ }), /***/ 6243: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /** * This is the common logic for both the Node.js and web browser * implementations of `debug()`. */ function setup(env) { createDebug.debug = createDebug; createDebug.default = createDebug; createDebug.coerce = coerce; createDebug.disable = disable; createDebug.enable = enable; createDebug.enabled = enabled; createDebug.humanize = __webpack_require__(900); Object.keys(env).forEach(key => { createDebug[key] = env[key]; }); /** * Active `debug` instances. */ createDebug.instances = []; /** * The currently active debug mode names, and names to skip. */ createDebug.names = []; createDebug.skips = []; /** * Map of special "%n" handling functions, for the debug "format" argument. * * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". */ createDebug.formatters = {}; /** * Selects a color for a debug namespace * @param {String} namespace The namespace string for the for the debug instance to be colored * @return {Number|String} An ANSI color code for the given namespace * @api private */ function selectColor(namespace) { let hash = 0; for (let i = 0; i < namespace.length; i++) { hash = ((hash << 5) - hash) + namespace.charCodeAt(i); hash |= 0; // Convert to 32bit integer } return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; } createDebug.selectColor = selectColor; /** * Create a debugger with the given `namespace`. * * @param {String} namespace * @return {Function} * @api public */ function createDebug(namespace) { let prevTime; function debug(...args) { // Disabled? if (!debug.enabled) { return; } const self = debug; // Set `diff` timestamp const curr = Number(new Date()); const ms = curr - (prevTime || curr); self.diff = ms; self.prev = prevTime; self.curr = curr; prevTime = curr; args[0] = createDebug.coerce(args[0]); if (typeof args[0] !== 'string') { // Anything else let's inspect with %O args.unshift('%O'); } // Apply any `formatters` transformations let index = 0; args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { // If we encounter an escaped % then don't increase the array index if (match === '%%') { return match; } index++; const formatter = createDebug.formatters[format]; if (typeof formatter === 'function') { const val = args[index]; match = formatter.call(self, val); // Now we need to remove `args[index]` since it's inlined in the `format` args.splice(index, 1); index--; } return match; }); // Apply env-specific formatting (colors, etc.) createDebug.formatArgs.call(self, args); const logFn = self.log || createDebug.log; logFn.apply(self, args); } debug.namespace = namespace; debug.enabled = createDebug.enabled(namespace); debug.useColors = createDebug.useColors(); debug.color = selectColor(namespace); debug.destroy = destroy; debug.extend = extend; // Debug.formatArgs = formatArgs; // debug.rawLog = rawLog; // env-specific initialization logic for debug instances if (typeof createDebug.init === 'function') { createDebug.init(debug); } createDebug.instances.push(debug); return debug; } function destroy() { const index = createDebug.instances.indexOf(this); if (index !== -1) { createDebug.instances.splice(index, 1); return true; } return false; } function extend(namespace, delimiter) { const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace); newDebug.log = this.log; return newDebug; } /** * Enables a debug mode by namespaces. This can include modes * separated by a colon and wildcards. * * @param {String} namespaces * @api public */ function enable(namespaces) { createDebug.save(namespaces); createDebug.names = []; createDebug.skips = []; let i; const split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); const len = split.length; for (i = 0; i < len; i++) { if (!split[i]) { // ignore empty strings continue; } namespaces = split[i].replace(/\*/g, '.*?'); if (namespaces[0] === '-') { createDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); } else { createDebug.names.push(new RegExp('^' + namespaces + '$')); } } for (i = 0; i < createDebug.instances.length; i++) { const instance = createDebug.instances[i]; instance.enabled = createDebug.enabled(instance.namespace); } } /** * Disable debug output. * * @return {String} namespaces * @api public */ function disable() { const namespaces = [ ...createDebug.names.map(toNamespace), ...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace) ].join(','); createDebug.enable(''); return namespaces; } /** * Returns true if the given mode name is enabled, false otherwise. * * @param {String} name * @return {Boolean} * @api public */ function enabled(name) { if (name[name.length - 1] === '*') { return true; } let i; let len; for (i = 0, len = createDebug.skips.length; i < len; i++) { if (createDebug.skips[i].test(name)) { return false; } } for (i = 0, len = createDebug.names.length; i < len; i++) { if (createDebug.names[i].test(name)) { return true; } } return false; } /** * Convert regexp to namespace * * @param {RegExp} regxep * @return {String} namespace * @api private */ function toNamespace(regexp) { return regexp.toString() .substring(2, regexp.toString().length - 2) .replace(/\.\*\?$/, '*'); } /** * Coerce `val`. * * @param {Mixed} val * @return {Mixed} * @api private */ function coerce(val) { if (val instanceof Error) { return val.stack || val.message; } return val; } createDebug.enable(createDebug.load()); return createDebug; } module.exports = setup; /***/ }), /***/ 8237: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /** * Detect Electron renderer / nwjs process, which is node, but we should * treat as a browser. */ if (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) { module.exports = __webpack_require__(8222); } else { module.exports = __webpack_require__(5332); } /***/ }), /***/ 5332: /***/ ((module, exports, __webpack_require__) => { /** * Module dependencies. */ const tty = __webpack_require__(3867); const util = __webpack_require__(1669); /** * This is the Node.js implementation of `debug()`. */ exports.init = init; exports.log = log; exports.formatArgs = formatArgs; exports.save = save; exports.load = load; exports.useColors = useColors; /** * Colors. */ exports.colors = [6, 2, 3, 4, 5, 1]; try { // Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json) // eslint-disable-next-line import/no-extraneous-dependencies const supportsColor = __webpack_require__(9318); if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) { exports.colors = [ 20, 21, 26, 27, 32, 33, 38, 39, 40, 41, 42, 43, 44, 45, 56, 57, 62, 63, 68, 69, 74, 75, 76, 77, 78, 79, 80, 81, 92, 93, 98, 99, 112, 113, 128, 129, 134, 135, 148, 149, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 178, 179, 184, 185, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 214, 215, 220, 221 ]; } } catch (error) { // Swallow - we only care if `supports-color` is available; it doesn't have to be. } /** * Build up the default `inspectOpts` object from the environment variables. * * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js */ exports.inspectOpts = Object.keys(process.env).filter(key => { return /^debug_/i.test(key); }).reduce((obj, key) => { // Camel-case const prop = key .substring(6) .toLowerCase() .replace(/_([a-z])/g, (_, k) => { return k.toUpperCase(); }); // Coerce string value into JS value let val = process.env[key]; if (/^(yes|on|true|enabled)$/i.test(val)) { val = true; } else if (/^(no|off|false|disabled)$/i.test(val)) { val = false; } else if (val === 'null') { val = null; } else { val = Number(val); } obj[prop] = val; return obj; }, {}); /** * Is stdout a TTY? Colored output is enabled when `true`. */ function useColors() { return 'colors' in exports.inspectOpts ? Boolean(exports.inspectOpts.colors) : tty.isatty(process.stderr.fd); } /** * Adds ANSI color escape codes if enabled. * * @api public */ function formatArgs(args) { const {namespace: name, useColors} = this; if (useColors) { const c = this.color; const colorCode = '\u001B[3' + (c < 8 ? c : '8;5;' + c); const prefix = ` ${colorCode};1m${name} \u001B[0m`; args[0] = prefix + args[0].split('\n').join('\n' + prefix); args.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\u001B[0m'); } else { args[0] = getDate() + name + ' ' + args[0]; } } function getDate() { if (exports.inspectOpts.hideDate) { return ''; } return new Date().toISOString() + ' '; } /** * Invokes `util.format()` with the specified arguments and writes to stderr. */ function log(...args) { return process.stderr.write(util.format(...args) + '\n'); } /** * Save `namespaces`. * * @param {String} namespaces * @api private */ function save(namespaces) { if (namespaces) { process.env.DEBUG = namespaces; } else { // If you set a process.env field to null or undefined, it gets cast to the // string 'null' or 'undefined'. Just delete instead. delete process.env.DEBUG; } } /** * Load `namespaces`. * * @return {String} returns the previously persisted debug modes * @api private */ function load() { return process.env.DEBUG; } /** * Init logic for `debug` instances. * * Create a new `inspectOpts` object in case `useColors` is set * differently for a particular `debug` instance. */ function init(debug) { debug.inspectOpts = {}; const keys = Object.keys(exports.inspectOpts); for (let i = 0; i < keys.length; i++) { debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; } } module.exports = __webpack_require__(6243)(exports); const {formatters} = module.exports; /** * Map %o to `util.inspect()`, all on a single line. */ formatters.o = function (v) { this.inspectOpts.colors = this.useColors; return util.inspect(v, this.inspectOpts) .replace(/\s*\n\s*/g, ' '); }; /** * Map %O to `util.inspect()`, allowing multiple lines if needed. */ formatters.O = function (v) { this.inspectOpts.colors = this.useColors; return util.inspect(v, this.inspectOpts); }; /***/ }), /***/ 1133: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var debug; try { /* eslint global-require: off */ debug = __webpack_require__(8237)("follow-redirects"); } catch (error) { debug = function () { /* */ }; } module.exports = debug; /***/ }), /***/ 7707: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var url = __webpack_require__(8835); var URL = url.URL; var http = __webpack_require__(8605); var https = __webpack_require__(7211); var Writable = __webpack_require__(2413).Writable; var assert = __webpack_require__(2357); var debug = __webpack_require__(1133); // Create handlers that pass events from native requests var eventHandlers = Object.create(null); ["abort", "aborted", "connect", "error", "socket", "timeout"].forEach(function (event) { eventHandlers[event] = function (arg1, arg2, arg3) { this._redirectable.emit(event, arg1, arg2, arg3); }; }); // Error types with codes var RedirectionError = createErrorType( "ERR_FR_REDIRECTION_FAILURE", "" ); var TooManyRedirectsError = createErrorType( "ERR_FR_TOO_MANY_REDIRECTS", "Maximum number of redirects exceeded" ); var MaxBodyLengthExceededError = createErrorType( "ERR_FR_MAX_BODY_LENGTH_EXCEEDED", "Request body larger than maxBodyLength limit" ); var WriteAfterEndError = createErrorType( "ERR_STREAM_WRITE_AFTER_END", "write after end" ); // An HTTP(S) request that can be redirected function RedirectableRequest(options, responseCallback) { // Initialize the request Writable.call(this); this._sanitizeOptions(options); this._options = options; this._ended = false; this._ending = false; this._redirectCount = 0; this._redirects = []; this._requestBodyLength = 0; this._requestBodyBuffers = []; // Attach a callback if passed if (responseCallback) { this.on("response", responseCallback); } // React to responses of native requests var self = this; this._onNativeResponse = function (response) { self._processResponse(response); }; // Perform the first request this._performRequest(); } RedirectableRequest.prototype = Object.create(Writable.prototype); // Writes buffered data to the current native request RedirectableRequest.prototype.write = function (data, encoding, callback) { // Writing is not allowed if end has been called if (this._ending) { throw new WriteAfterEndError(); } // Validate input and shift parameters if necessary if (!(typeof data === "string" || typeof data === "object" && ("length" in data))) { throw new TypeError("data should be a string, Buffer or Uint8Array"); } if (typeof encoding === "function") { callback = encoding; encoding = null; } // Ignore empty buffers, since writing them doesn't invoke the callback // https://github.com/nodejs/node/issues/22066 if (data.length === 0) { if (callback) { callback(); } return; } // Only write when we don't exceed the maximum body length if (this._requestBodyLength + data.length <= this._options.maxBodyLength) { this._requestBodyLength += data.length; this._requestBodyBuffers.push({ data: data, encoding: encoding }); this._currentRequest.write(data, encoding, callback); } // Error when we exceed the maximum body length else { this.emit("error", new MaxBodyLengthExceededError()); this.abort(); } }; // Ends the current native request RedirectableRequest.prototype.end = function (data, encoding, callback) { // Shift parameters if necessary if (typeof data === "function") { callback = data; data = encoding = null; } else if (typeof encoding === "function") { callback = encoding; encoding = null; } // Write data if needed and end if (!data) { this._ended = this._ending = true; this._currentRequest.end(null, null, callback); } else { var self = this; var currentRequest = this._currentRequest; this.write(data, encoding, function () { self._ended = true; currentRequest.end(null, null, callback); }); this._ending = true; } }; // Sets a header value on the current native request RedirectableRequest.prototype.setHeader = function (name, value) { this._options.headers[name] = value; this._currentRequest.setHeader(name, value); }; // Clears a header value on the current native request RedirectableRequest.prototype.removeHeader = function (name) { delete this._options.headers[name]; this._currentRequest.removeHeader(name); }; // Global timeout for all underlying requests RedirectableRequest.prototype.setTimeout = function (msecs, callback) { if (callback) { this.once("timeout", callback); } if (this.socket) { startTimer(this, msecs); } else { var self = this; this._currentRequest.once("socket", function () { startTimer(self, msecs); }); } this.once("response", clearTimer); this.once("error", clearTimer); return this; }; function startTimer(request, msecs) { clearTimeout(request._timeout); request._timeout = setTimeout(function () { request.emit("timeout"); }, msecs); } function clearTimer() { clearTimeout(this._timeout); } // Proxy all other public ClientRequest methods [ "abort", "flushHeaders", "getHeader", "setNoDelay", "setSocketKeepAlive", ].forEach(function (method) { RedirectableRequest.prototype[method] = function (a, b) { return this._currentRequest[method](a, b); }; }); // Proxy all public ClientRequest properties ["aborted", "connection", "socket"].forEach(function (property) { Object.defineProperty(RedirectableRequest.prototype, property, { get: function () { return this._currentRequest[property]; }, }); }); RedirectableRequest.prototype._sanitizeOptions = function (options) { // Ensure headers are always present if (!options.headers) { options.headers = {}; } // Since http.request treats host as an alias of hostname, // but the url module interprets host as hostname plus port, // eliminate the host property to avoid confusion. if (options.host) { // Use hostname if set, because it has precedence if (!options.hostname) { options.hostname = options.host; } delete options.host; } // Complete the URL object when necessary if (!options.pathname && options.path) { var searchPos = options.path.indexOf("?"); if (searchPos < 0) { options.pathname = options.path; } else { options.pathname = options.path.substring(0, searchPos); options.search = options.path.substring(searchPos); } } }; // Executes the next native request (initial or redirect) RedirectableRequest.prototype._performRequest = function () { // Load the native protocol var protocol = this._options.protocol; var nativeProtocol = this._options.nativeProtocols[protocol]; if (!nativeProtocol) { this.emit("error", new TypeError("Unsupported protocol " + protocol)); return; } // If specified, use the agent corresponding to the protocol // (HTTP and HTTPS use different types of agents) if (this._options.agents) { var scheme = protocol.substr(0, protocol.length - 1); this._options.agent = this._options.agents[scheme]; } // Create the native request var request = this._currentRequest = nativeProtocol.request(this._options, this._onNativeResponse); this._currentUrl = url.format(this._options); // Set up event handlers request._redirectable = this; for (var event in eventHandlers) { /* istanbul ignore else */ if (event) { request.on(event, eventHandlers[event]); } } // End a redirected request // (The first request must be ended explicitly with RedirectableRequest#end) if (this._isRedirect) { // Write the request entity and end. var i = 0; var self = this; var buffers = this._requestBodyBuffers; (function writeNext(error) { // Only write if this request has not been redirected yet /* istanbul ignore else */ if (request === self._currentRequest) { // Report any write errors /* istanbul ignore if */ if (error) { self.emit("error", error); } // Write the next buffer if there are still left else if (i < buffers.length) { var buffer = buffers[i++]; /* istanbul ignore else */ if (!request.finished) { request.write(buffer.data, buffer.encoding, writeNext); } } // End the request if `end` has been called on us else if (self._ended) { request.end(); } } }()); } }; // Processes a response from the current native request RedirectableRequest.prototype._processResponse = function (response) { // Store the redirected response var statusCode = response.statusCode; if (this._options.trackRedirects) { this._redirects.push({ url: this._currentUrl, headers: response.headers, statusCode: statusCode, }); } // RFC7231§6.4: The 3xx (Redirection) class of status code indicates // that further action needs to be taken by the user agent in order to // fulfill the request. If a Location header field is provided, // the user agent MAY automatically redirect its request to the URI // referenced by the Location field value, // even if the specific status code is not understood. var location = response.headers.location; if (location && this._options.followRedirects !== false && statusCode >= 300 && statusCode < 400) { // Abort the current request this._currentRequest.removeAllListeners(); this._currentRequest.on("error", noop); this._currentRequest.abort(); // Discard the remainder of the response to avoid waiting for data response.destroy(); // RFC7231§6.4: A client SHOULD detect and intervene // in cyclical redirections (i.e., "infinite" redirection loops). if (++this._redirectCount > this._options.maxRedirects) { this.emit("error", new TooManyRedirectsError()); return; } // RFC7231§6.4: Automatic redirection needs to done with // care for methods not known to be safe, […] // RFC7231§6.4.2–3: For historical reasons, a user agent MAY change // the request method from POST to GET for the subsequent request. if ((statusCode === 301 || statusCode === 302) && this._options.method === "POST" || // RFC7231§6.4.4: The 303 (See Other) status code indicates that // the server is redirecting the user agent to a different resource […] // A user agent can perform a retrieval request targeting that URI // (a GET or HEAD request if using HTTP) […] (statusCode === 303) && !/^(?:GET|HEAD)$/.test(this._options.method)) { this._options.method = "GET"; // Drop a possible entity and headers related to it this._requestBodyBuffers = []; removeMatchingHeaders(/^content-/i, this._options.headers); } // Drop the Host header, as the redirect might lead to a different host var previousHostName = removeMatchingHeaders(/^host$/i, this._options.headers) || url.parse(this._currentUrl).hostname; // Create the redirected request var redirectUrl = url.resolve(this._currentUrl, location); debug("redirecting to", redirectUrl); this._isRedirect = true; var redirectUrlParts = url.parse(redirectUrl); Object.assign(this._options, redirectUrlParts); // Drop the Authorization header if redirecting to another host if (redirectUrlParts.hostname !== previousHostName) { removeMatchingHeaders(/^authorization$/i, this._options.headers); } // Evaluate the beforeRedirect callback if (typeof this._options.beforeRedirect === "function") { var responseDetails = { headers: response.headers }; try { this._options.beforeRedirect.call(null, this._options, responseDetails); } catch (err) { this.emit("error", err); return; } this._sanitizeOptions(this._options); } // Perform the redirected request try { this._performRequest(); } catch (cause) { var error = new RedirectionError("Redirected request failed: " + cause.message); error.cause = cause; this.emit("error", error); } } else { // The response is not a redirect; return it as-is response.responseUrl = this._currentUrl; response.redirects = this._redirects; this.emit("response", response); // Clean up this._requestBodyBuffers = []; } }; // Wraps the key/value object of protocols with redirect functionality function wrap(protocols) { // Default settings var exports = { maxRedirects: 21, maxBodyLength: 10 * 1024 * 1024, }; // Wrap each protocol var nativeProtocols = {}; Object.keys(protocols).forEach(function (scheme) { var protocol = scheme + ":"; var nativeProtocol = nativeProtocols[protocol] = protocols[scheme]; var wrappedProtocol = exports[scheme] = Object.create(nativeProtocol); // Executes a request, following redirects wrappedProtocol.request = function (input, options, callback) { // Parse parameters if (typeof input === "string") { var urlStr = input; try { input = urlToOptions(new URL(urlStr)); } catch (err) { /* istanbul ignore next */ input = url.parse(urlStr); } } else if (URL && (input instanceof URL)) { input = urlToOptions(input); } else { callback = options; options = input; input = { protocol: protocol }; } if (typeof options === "function") { callback = options; options = null; } // Set defaults options = Object.assign({ maxRedirects: exports.maxRedirects, maxBodyLength: exports.maxBodyLength, }, input, options); options.nativeProtocols = nativeProtocols; assert.equal(options.protocol, protocol, "protocol mismatch"); debug("options", options); return new RedirectableRequest(options, callback); }; // Executes a GET request, following redirects wrappedProtocol.get = function (input, options, callback) { var request = wrappedProtocol.request(input, options, callback); request.end(); return request; }; }); return exports; } /* istanbul ignore next */ function noop() { /* empty */ } // from https://github.com/nodejs/node/blob/master/lib/internal/url.js function urlToOptions(urlObject) { var options = { protocol: urlObject.protocol, hostname: urlObject.hostname.startsWith("[") ? /* istanbul ignore next */ urlObject.hostname.slice(1, -1) : urlObject.hostname, hash: urlObject.hash, search: urlObject.search, pathname: urlObject.pathname, path: urlObject.pathname + urlObject.search, href: urlObject.href, }; if (urlObject.port !== "") { options.port = Number(urlObject.port); } return options; } function removeMatchingHeaders(regex, headers) { var lastValue; for (var header in headers) { if (regex.test(header)) { lastValue = headers[header]; delete headers[header]; } } return lastValue; } function createErrorType(code, defaultMessage) { function CustomError(message) { Error.captureStackTrace(this, this.constructor); this.message = message || defaultMessage; } CustomError.prototype = new Error(); CustomError.prototype.constructor = CustomError; CustomError.prototype.name = "Error [" + code + "]"; CustomError.prototype.code = code; return CustomError; } // Exports module.exports = wrap({ http: http, https: https }); module.exports.wrap = wrap; /***/ }), /***/ 1621: /***/ ((module) => { "use strict"; module.exports = (flag, argv) => { argv = argv || process.argv; const prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--'); const pos = argv.indexOf(prefix + flag); const terminatorPos = argv.indexOf('--'); return pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos); }; /***/ }), /***/ 900: /***/ ((module) => { /** * Helpers. */ var s = 1000; var m = s * 60; var h = m * 60; var d = h * 24; var w = d * 7; var y = d * 365.25; /** * Parse or format the given `val`. * * Options: * * - `long` verbose formatting [false] * * @param {String|Number} val * @param {Object} [options] * @throws {Error} throw an error if val is not a non-empty string or a number * @return {String|Number} * @api public */ module.exports = function(val, options) { options = options || {}; var type = typeof val; if (type === 'string' && val.length > 0) { return parse(val); } else if (type === 'number' && isFinite(val)) { return options.long ? fmtLong(val) : fmtShort(val); } throw new Error( 'val is not a non-empty string or a valid number. val=' + JSON.stringify(val) ); }; /** * Parse the given `str` and return milliseconds. * * @param {String} str * @return {Number} * @api private */ function parse(str) { str = String(str); if (str.length > 100) { return; } var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( str ); if (!match) { return; } var n = parseFloat(match[1]); var type = (match[2] || 'ms').toLowerCase(); switch (type) { case 'years': case 'year': case 'yrs': case 'yr': case 'y': return n * y; case 'weeks': case 'week': case 'w': return n * w; case 'days': case 'day': case 'd': return n * d; case 'hours': case 'hour': case 'hrs': case 'hr': case 'h': return n * h; case 'minutes': case 'minute': case 'mins': case 'min': case 'm': return n * m; case 'seconds': case 'second': case 'secs': case 'sec': case 's': return n * s; case 'milliseconds': case 'millisecond': case 'msecs': case 'msec': case 'ms': return n; default: return undefined; } } /** * Short format for `ms`. * * @param {Number} ms * @return {String} * @api private */ function fmtShort(ms) { var msAbs = Math.abs(ms); if (msAbs >= d) { return Math.round(ms / d) + 'd'; } if (msAbs >= h) { return Math.round(ms / h) + 'h'; } if (msAbs >= m) { return Math.round(ms / m) + 'm'; } if (msAbs >= s) { return Math.round(ms / s) + 's'; } return ms + 'ms'; } /** * Long format for `ms`. * * @param {Number} ms * @return {String} * @api private */ function fmtLong(ms) { var msAbs = Math.abs(ms); if (msAbs >= d) { return plural(ms, msAbs, d, 'day'); } if (msAbs >= h) { return plural(ms, msAbs, h, 'hour'); } if (msAbs >= m) { return plural(ms, msAbs, m, 'minute'); } if (msAbs >= s) { return plural(ms, msAbs, s, 'second'); } return ms + ' ms'; } /** * Pluralization helper. */ function plural(ms, msAbs, n, name) { var isPlural = msAbs >= n * 1.5; return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : ''); } /***/ }), /***/ 254: /***/ ((module, exports, __webpack_require__) => { /* eslint-env browser */ /** * This is the web browser implementation of `debug()`. */ exports.formatArgs = formatArgs; exports.save = save; exports.load = load; exports.useColors = useColors; exports.storage = localstorage(); exports.destroy = (() => { let warned = false; return () => { if (!warned) { warned = true; console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); } }; })(); /** * Colors. */ exports.colors = [ '#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33' ]; /** * Currently only WebKit-based Web Inspectors, Firefox >= v31, * and the Firebug extension (any Firefox version) are known * to support "%c" CSS customizations. * * TODO: add a `localStorage` variable to explicitly enable/disable colors */ // eslint-disable-next-line complexity function useColors() { // NB: In an Electron preload script, document will be defined but not fully // initialized. Since we know we're in Chrome, we'll just detect this case // explicitly if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) { return true; } // Internet Explorer and Edge do not support colors. if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { return false; } // Is webkit? http://stackoverflow.com/a/16459606/376773 // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || // Is firebug? http://stackoverflow.com/a/398120/376773 (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || // Is firefox >= v31? // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || // Double check webkit in userAgent just in case we are in a worker (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); } /** * Colorize log arguments if enabled. * * @api public */ function formatArgs(args) { args[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' ') + '+' + module.exports.humanize(this.diff); if (!this.useColors) { return; } const c = 'color: ' + this.color; args.splice(1, 0, c, 'color: inherit'); // The final "%c" is somewhat tricky, because there could be other // arguments passed either before or after the %c, so we need to // figure out the correct index to insert the CSS into let index = 0; let lastC = 0; args[0].replace(/%[a-zA-Z%]/g, match => { if (match === '%%') { return; } index++; if (match === '%c') { // We only are interested in the *last* %c // (the user may have provided their own) lastC = index; } }); args.splice(lastC, 0, c); } /** * Invokes `console.debug()` when available. * No-op when `console.debug` is not a "function". * If `console.debug` is not available, falls back * to `console.log`. * * @api public */ exports.log = console.debug || console.log || (() => {}); /** * Save `namespaces`. * * @param {String} namespaces * @api private */ function save(namespaces) { try { if (namespaces) { exports.storage.setItem('debug', namespaces); } else { exports.storage.removeItem('debug'); } } catch (error) { // Swallow // XXX (@Qix-) should we be logging these? } } /** * Load `namespaces`. * * @return {String} returns the previously persisted debug modes * @api private */ function load() { let r; try { r = exports.storage.getItem('debug'); } catch (error) { // Swallow // XXX (@Qix-) should we be logging these? } // If debug isn't set in LS, and we're in Electron, try to load $DEBUG if (!r && typeof process !== 'undefined' && 'env' in process) { r = process.env.DEBUG; } return r; } /** * Localstorage attempts to return the localstorage. * * This is necessary because safari throws * when a user disables cookies/localstorage * and you attempt to access it. * * @return {LocalStorage} * @api private */ function localstorage() { try { // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context // The Browser also has localStorage in the global context. return localStorage; } catch (error) { // Swallow // XXX (@Qix-) should we be logging these? } } module.exports = __webpack_require__(8867)(exports); const {formatters} = module.exports; /** * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. */ formatters.j = function (v) { try { return JSON.stringify(v); } catch (error) { return '[UnexpectedJSONParseError]: ' + error.message; } }; /***/ }), /***/ 8867: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /** * This is the common logic for both the Node.js and web browser * implementations of `debug()`. */ function setup(env) { createDebug.debug = createDebug; createDebug.default = createDebug; createDebug.coerce = coerce; createDebug.disable = disable; createDebug.enable = enable; createDebug.enabled = enabled; createDebug.humanize = __webpack_require__(900); createDebug.destroy = destroy; Object.keys(env).forEach(key => { createDebug[key] = env[key]; }); /** * The currently active debug mode names, and names to skip. */ createDebug.names = []; createDebug.skips = []; /** * Map of special "%n" handling functions, for the debug "format" argument. * * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". */ createDebug.formatters = {}; /** * Selects a color for a debug namespace * @param {String} namespace The namespace string for the for the debug instance to be colored * @return {Number|String} An ANSI color code for the given namespace * @api private */ function selectColor(namespace) { let hash = 0; for (let i = 0; i < namespace.length; i++) { hash = ((hash << 5) - hash) + namespace.charCodeAt(i); hash |= 0; // Convert to 32bit integer } return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; } createDebug.selectColor = selectColor; /** * Create a debugger with the given `namespace`. * * @param {String} namespace * @return {Function} * @api public */ function createDebug(namespace) { let prevTime; let enableOverride = null; function debug(...args) { // Disabled? if (!debug.enabled) { return; } const self = debug; // Set `diff` timestamp const curr = Number(new Date()); const ms = curr - (prevTime || curr); self.diff = ms; self.prev = prevTime; self.curr = curr; prevTime = curr; args[0] = createDebug.coerce(args[0]); if (typeof args[0] !== 'string') { // Anything else let's inspect with %O args.unshift('%O'); } // Apply any `formatters` transformations let index = 0; args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { // If we encounter an escaped % then don't increase the array index if (match === '%%') { return '%'; } index++; const formatter = createDebug.formatters[format]; if (typeof formatter === 'function') { const val = args[index]; match = formatter.call(self, val); // Now we need to remove `args[index]` since it's inlined in the `format` args.splice(index, 1); index--; } return match; }); // Apply env-specific formatting (colors, etc.) createDebug.formatArgs.call(self, args); const logFn = self.log || createDebug.log; logFn.apply(self, args); } debug.namespace = namespace; debug.useColors = createDebug.useColors(); debug.color = createDebug.selectColor(namespace); debug.extend = extend; debug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release. Object.defineProperty(debug, 'enabled', { enumerable: true, configurable: false, get: () => enableOverride === null ? createDebug.enabled(namespace) : enableOverride, set: v => { enableOverride = v; } }); // Env-specific initialization logic for debug instances if (typeof createDebug.init === 'function') { createDebug.init(debug); } return debug; } function extend(namespace, delimiter) { const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace); newDebug.log = this.log; return newDebug; } /** * Enables a debug mode by namespaces. This can include modes * separated by a colon and wildcards. * * @param {String} namespaces * @api public */ function enable(namespaces) { createDebug.save(namespaces); createDebug.names = []; createDebug.skips = []; let i; const split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); const len = split.length; for (i = 0; i < len; i++) { if (!split[i]) { // ignore empty strings continue; } namespaces = split[i].replace(/\*/g, '.*?'); if (namespaces[0] === '-') { createDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); } else { createDebug.names.push(new RegExp('^' + namespaces + '$')); } } } /** * Disable debug output. * * @return {String} namespaces * @api public */ function disable() { const namespaces = [ ...createDebug.names.map(toNamespace), ...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace) ].join(','); createDebug.enable(''); return namespaces; } /** * Returns true if the given mode name is enabled, false otherwise. * * @param {String} name * @return {Boolean} * @api public */ function enabled(name) { if (name[name.length - 1] === '*') { return true; } let i; let len; for (i = 0, len = createDebug.skips.length; i < len; i++) { if (createDebug.skips[i].test(name)) { return false; } } for (i = 0, len = createDebug.names.length; i < len; i++) { if (createDebug.names[i].test(name)) { return true; } } return false; } /** * Convert regexp to namespace * * @param {RegExp} regxep * @return {String} namespace * @api private */ function toNamespace(regexp) { return regexp.toString() .substring(2, regexp.toString().length - 2) .replace(/\.\*\?$/, '*'); } /** * Coerce `val`. * * @param {Mixed} val * @return {Mixed} * @api private */ function coerce(val) { if (val instanceof Error) { return val.stack || val.message; } return val; } /** * XXX DO NOT USE. This is a temporary stub function. * XXX It WILL be removed in the next major release. */ function destroy() { console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); } createDebug.enable(createDebug.load()); return createDebug; } module.exports = setup; /***/ }), /***/ 2179: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /** * Detect Electron renderer / nwjs process, which is node, but we should * treat as a browser. */ if (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) { module.exports = __webpack_require__(254); } else { module.exports = __webpack_require__(675); } /***/ }), /***/ 675: /***/ ((module, exports, __webpack_require__) => { /** * Module dependencies. */ const tty = __webpack_require__(3867); const util = __webpack_require__(1669); /** * This is the Node.js implementation of `debug()`. */ exports.init = init; exports.log = log; exports.formatArgs = formatArgs; exports.save = save; exports.load = load; exports.useColors = useColors; exports.destroy = util.deprecate( () => {}, 'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.' ); /** * Colors. */ exports.colors = [6, 2, 3, 4, 5, 1]; try { // Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json) // eslint-disable-next-line import/no-extraneous-dependencies const supportsColor = __webpack_require__(9318); if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) { exports.colors = [ 20, 21, 26, 27, 32, 33, 38, 39, 40, 41, 42, 43, 44, 45, 56, 57, 62, 63, 68, 69, 74, 75, 76, 77, 78, 79, 80, 81, 92, 93, 98, 99, 112, 113, 128, 129, 134, 135, 148, 149, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 178, 179, 184, 185, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 214, 215, 220, 221 ]; } } catch (error) { // Swallow - we only care if `supports-color` is available; it doesn't have to be. } /** * Build up the default `inspectOpts` object from the environment variables. * * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js */ exports.inspectOpts = Object.keys(process.env).filter(key => { return /^debug_/i.test(key); }).reduce((obj, key) => { // Camel-case const prop = key .substring(6) .toLowerCase() .replace(/_([a-z])/g, (_, k) => { return k.toUpperCase(); }); // Coerce string value into JS value let val = process.env[key]; if (/^(yes|on|true|enabled)$/i.test(val)) { val = true; } else if (/^(no|off|false|disabled)$/i.test(val)) { val = false; } else if (val === 'null') { val = null; } else { val = Number(val); } obj[prop] = val; return obj; }, {}); /** * Is stdout a TTY? Colored output is enabled when `true`. */ function useColors() { return 'colors' in exports.inspectOpts ? Boolean(exports.inspectOpts.colors) : tty.isatty(process.stderr.fd); } /** * Adds ANSI color escape codes if enabled. * * @api public */ function formatArgs(args) { const {namespace: name, useColors} = this; if (useColors) { const c = this.color; const colorCode = '\u001B[3' + (c < 8 ? c : '8;5;' + c); const prefix = ` ${colorCode};1m${name} \u001B[0m`; args[0] = prefix + args[0].split('\n').join('\n' + prefix); args.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\u001B[0m'); } else { args[0] = getDate() + name + ' ' + args[0]; } } function getDate() { if (exports.inspectOpts.hideDate) { return ''; } return new Date().toISOString() + ' '; } /** * Invokes `util.format()` with the specified arguments and writes to stderr. */ function log(...args) { return process.stderr.write(util.format(...args) + '\n'); } /** * Save `namespaces`. * * @param {String} namespaces * @api private */ function save(namespaces) { if (namespaces) { process.env.DEBUG = namespaces; } else { // If you set a process.env field to null or undefined, it gets cast to the // string 'null' or 'undefined'. Just delete instead. delete process.env.DEBUG; } } /** * Load `namespaces`. * * @return {String} returns the previously persisted debug modes * @api private */ function load() { return process.env.DEBUG; } /** * Init logic for `debug` instances. * * Create a new `inspectOpts` object in case `useColors` is set * differently for a particular `debug` instance. */ function init(debug) { debug.inspectOpts = {}; const keys = Object.keys(exports.inspectOpts); for (let i = 0; i < keys.length; i++) { debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; } } module.exports = __webpack_require__(8867)(exports); const {formatters} = module.exports; /** * Map %o to `util.inspect()`, all on a single line. */ formatters.o = function (v) { this.inspectOpts.colors = this.useColors; return util.inspect(v, this.inspectOpts) .split('\n') .map(str => str.trim()) .join(' '); }; /** * Map %O to `util.inspect()`, allowing multiple lines if needed. */ formatters.O = function (v) { this.inspectOpts.colors = this.useColors; return util.inspect(v, this.inspectOpts); }; /***/ }), /***/ 1949: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { const Git = __webpack_require__(4966); const {GitConstructError} = __webpack_require__(4732); const {createInstanceConfig, folderExists} = __webpack_require__(847); const api = Object.create(null); for (let imported = __webpack_require__(4732), keys = Object.keys(imported), i = 0; i < keys.length; i++) { const name = keys[i]; if (/^[A-Z]/.test(name)) { api[name] = imported[name]; } } /** * Adds the necessary properties to the supplied object to enable it for use as * the default export of a module. * * Eg: `module.exports = esModuleFactory({ something () {} })` */ module.exports.esModuleFactory = function esModuleFactory (defaultExport) { return Object.defineProperties(defaultExport, { __esModule: {value: true}, default: {value: defaultExport}, }); } module.exports.gitExportFactory = function gitExportFactory (factory, extra) { return Object.assign(function () { return factory.apply(null, arguments); }, api, extra || {}, ); }; module.exports.gitInstanceFactory = function gitInstanceFactory (baseDir, options) { const config = createInstanceConfig( baseDir && (typeof baseDir === 'string' ? {baseDir} : baseDir), options ); if (!folderExists(config.baseDir)) { throw new GitConstructError(config, `Cannot use simple-git on a directory that does not exist`); } return new Git(config); }; /***/ }), /***/ 4966: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { const responses = __webpack_require__(5301); const {GitExecutor} = __webpack_require__(4701); const {Scheduler} = __webpack_require__(3421); const {GitLogger} = __webpack_require__(7178); const {adhocExecTask, configurationErrorTask} = __webpack_require__(2815); const {NOOP, appendTaskOptions, asArray, filterArray, filterPrimitives, filterString, filterType, folderExists, getTrailingOptions, trailingFunctionArgument, trailingOptionsArgument} = __webpack_require__(847); const {branchTask, branchLocalTask, deleteBranchesTask, deleteBranchTask} = __webpack_require__(17); const {taskCallback} = __webpack_require__(8850); const {checkIsRepoTask} = __webpack_require__(221); const {cloneTask, cloneMirrorTask} = __webpack_require__(3173); const {addConfigTask, listConfigTask} = __webpack_require__(7597); const {cleanWithOptionsTask, isCleanOptionsArray} = __webpack_require__(4386); const {initTask} = __webpack_require__(6016); const {hashObjectTask} = __webpack_require__(8199); const {mergeTask} = __webpack_require__(8829); const {moveTask} = __webpack_require__(6520); const {pullTask} = __webpack_require__(4636); const {pushTagsTask, pushTask} = __webpack_require__(1435); const {addRemoteTask, getRemotesTask, listRemotesTask, remoteTask, removeRemoteTask} = __webpack_require__(9866); const {getResetMode, resetTask} = __webpack_require__(2377); const {statusTask} = __webpack_require__(9197); const {addSubModuleTask, initSubModuleTask, subModuleTask, updateSubModuleTask} = __webpack_require__(8772); const {addAnnotatedTagTask, addTagTask, tagListTask} = __webpack_require__(8540); const {straightThroughStringTask} = __webpack_require__(2815); const {parseCheckIgnore} = __webpack_require__(9926); const ChainedExecutor = Symbol('ChainedExecutor'); /** * Git handling for node. All public functions can be chained and all `then` handlers are optional. * * @param {SimpleGitOptions} options Configuration settings for this instance * * @constructor */ function Git (options) { this._executor = new GitExecutor( options.binary, options.baseDir, new Scheduler(options.maxConcurrentProcesses) ); this._logger = new GitLogger(); } /** * The executor that runs each of the added commands * @type {GitExecutor} * @private */ Git.prototype._executor = null; /** * Logging utility for printing out info or error messages to the user * @type {GitLogger} * @private */ Git.prototype._logger = null; /** * Sets the path to a custom git binary, should either be `git` when there is an installation of git available on * the system path, or a fully qualified path to the executable. * * @param {string} command * @returns {Git} */ Git.prototype.customBinary = function (command) { this._executor.binary = command; return this; }; /** * Sets an environment variable for the spawned child process, either supply both a name and value as strings or * a single object to entirely replace the current environment variables. * * @param {string|Object} name * @param {string} [value] * @returns {Git} */ Git.prototype.env = function (name, value) { if (arguments.length === 1 && typeof name === 'object') { this._executor.env = name; } else { (this._executor.env = this._executor.env || {})[name] = value; } return this; }; /** * Sets the working directory of the subsequent commands. */ Git.prototype.cwd = function (workingDirectory, then) { const task = (typeof workingDirectory !== 'string') ? configurationErrorTask('Git.cwd: workingDirectory must be supplied as a string') : adhocExecTask(() => { if (!folderExists(workingDirectory)) { throw new Error(`Git.cwd: cannot change to non-directory "${ workingDirectory }"`); } return (this._executor.cwd = workingDirectory); }); return this._runTask(task, trailingFunctionArgument(arguments) || NOOP); }; /** * Sets a handler function to be called whenever a new child process is created, the handler function will be called * with the name of the command being run and the stdout & stderr streams used by the ChildProcess. * * @example * require('simple-git') * .outputHandler(function (command, stdout, stderr) { * stdout.pipe(process.stdout); * }) * .checkout('https://github.com/user/repo.git'); * * @see https://nodejs.org/api/child_process.html#child_process_class_childprocess * @see https://nodejs.org/api/stream.html#stream_class_stream_readable * @param {Function} outputHandler * @returns {Git} */ Git.prototype.outputHandler = function (outputHandler) { this._executor.outputHandler = outputHandler; return this; }; /** * Initialize a git repo * * @param {Boolean} [bare=false] * @param {Function} [then] */ Git.prototype.init = function (bare, then) { return this._runTask( initTask(bare === true, this._executor.cwd, getTrailingOptions(arguments)), trailingFunctionArgument(arguments), ); }; /** * Check the status of the local repo */ Git.prototype.status = function () { return this._runTask( statusTask(getTrailingOptions(arguments)), trailingFunctionArgument(arguments), ); }; /** * List the stash(s) of the local repo * * @param {Object|Array} [options] * @param {Function} [then] */ Git.prototype.stashList = function (options, then) { var handler = trailingFunctionArgument(arguments); var opt = (handler === then ? options : null) || {}; var splitter = opt.splitter || requireResponseHandler('ListLogSummary').SPLITTER; var command = ["stash", "list", "--pretty=format:" + requireResponseHandler('ListLogSummary').START_BOUNDARY + "%H %ai %s%d %aN %ae".replace(/\s+/g, splitter) + requireResponseHandler('ListLogSummary').COMMIT_BOUNDARY ]; if (Array.isArray(opt)) { command = command.concat(opt); } return this._run(command, handler, {parser: Git.responseParser('ListLogSummary', splitter)}); }; /** * Stash the local repo * * @param {Object|Array} [options] * @param {Function} [then] */ Git.prototype.stash = function (options, then) { return this._run( ['stash'].concat(getTrailingOptions(arguments)), trailingFunctionArgument(arguments) ); }; function createCloneTask (api, task, repoPath, localPath) { if (typeof repoPath !== 'string') { return configurationErrorTask(`git.${ api }() requires a string 'repoPath'`); } return task(repoPath, filterType(localPath, filterString), getTrailingOptions(arguments)); } /** * Clone a git repo */ Git.prototype.clone = function () { return this._runTask( createCloneTask('clone', cloneTask, ...arguments), trailingFunctionArgument(arguments), ); }; /** * Mirror a git repo */ Git.prototype.mirror = function () { return this._runTask( createCloneTask('mirror', cloneMirrorTask, ...arguments), trailingFunctionArgument(arguments), ); }; /** * Moves one or more files to a new destination. * * @see https://git-scm.com/docs/git-mv * * @param {string|string[]} from * @param {string} to */ Git.prototype.mv = function (from, to) { return this._runTask(moveTask(from, to), trailingFunctionArgument(arguments)); }; /** * Internally uses pull and tags to get the list of tags then checks out the latest tag. * * @param {Function} [then] */ Git.prototype.checkoutLatestTag = function (then) { var git = this; return this.pull(function () { git.tags(function (err, tags) { git.checkout(tags.latest, then); }); }); }; /** * Adds one or more files to source control */ Git.prototype.add = function (files) { return this._run( ['add'].concat(files), trailingFunctionArgument(arguments), ); }; /** * Commits changes in the current working directory - when specific file paths are supplied, only changes on those * files will be committed. * * @param {string|string[]} message * @param {string|string[]} [files] * @param {Object} [options] * @param {Function} [then] */ Git.prototype.commit = function (message, files, options, then) { var command = ['commit']; asArray(message).forEach(function (message) { command.push('-m', message); }); asArray(typeof files === "string" || Array.isArray(files) ? files : []).forEach(cmd => command.push(cmd)); command.push(...getTrailingOptions(arguments, 0, true)); return this._run( command, trailingFunctionArgument(arguments), { parser: Git.responseParser('CommitSummary'), }, ); }; /** * Pull the updated contents of the current repo * * @param {string} [remote] When supplied must also include the branch * @param {string} [branch] When supplied must also include the remote * @param {Object} [options] Optionally include set of options to merge into the command * @param {Function} [then] */ Git.prototype.pull = function (remote, branch, options, then) { return this._runTask( pullTask(filterType(remote, filterString), filterType(branch, filterString), getTrailingOptions(arguments)), trailingFunctionArgument(arguments), ); }; /** * Fetch the updated contents of the current repo. * * @example * .fetch('upstream', 'master') // fetches from master on remote named upstream * .fetch(function () {}) // runs fetch against default remote and branch and calls function * * @param {string} [remote] * @param {string} [branch] * @param {Function} [then] */ Git.prototype.fetch = function (remote, branch, then) { const command = ["fetch"].concat(getTrailingOptions(arguments)); if (typeof remote === 'string' && typeof branch === 'string') { command.push(remote, branch); } return this._run( command, trailingFunctionArgument(arguments), { concatStdErr: true, parser: Git.responseParser('FetchSummary'), } ); }; /** * Disables/enables the use of the console for printing warnings and errors, by default messages are not shown in * a production environment. * * @param {boolean} silence * @returns {Git} */ Git.prototype.silent = function (silence) { this._logger.silent(!!silence); return this; }; /** * List all tags. When using git 2.7.0 or above, include an options object with `"--sort": "property-name"` to * sort the tags by that property instead of using the default semantic versioning sort. * * Note, supplying this option when it is not supported by your Git version will cause the operation to fail. * * @param {Object} [options] * @param {Function} [then] */ Git.prototype.tags = function (options, then) { return this._runTask( tagListTask(getTrailingOptions(arguments)), trailingFunctionArgument(arguments), ); }; /** * Rebases the current working copy. Options can be supplied either as an array of string parameters * to be sent to the `git rebase` command, or a standard options object. * * @param {Object|String[]} [options] * @param {Function} [then] * @returns {Git} */ Git.prototype.rebase = function (options, then) { return this._run( ['rebase'].concat(getTrailingOptions(arguments)), trailingFunctionArgument(arguments) ); }; /** * Reset a repo * * @param {string|string[]} [mode=soft] Either an array of arguments supported by the 'git reset' command, or the * string value 'soft' or 'hard' to set the reset mode. * @param {Function} [then] */ Git.prototype.reset = function (mode, then) { return this._runTask( resetTask(getResetMode(mode), getTrailingOptions(arguments)), trailingFunctionArgument(arguments), ); }; /** * Revert one or more commits in the local working copy * * @param {string} commit The commit to revert. Can be any hash, offset (eg: `HEAD~2`) or range (eg: `master~5..master~2`) * @param {Object} [options] Optional options object * @param {Function} [then] */ Git.prototype.revert = function (commit, options, then) { const next = trailingFunctionArgument(arguments); if (typeof commit !== 'string') { return this._runTask( configurationErrorTask('Commit must be a string'), next, ); } return this._run([ 'revert', ...getTrailingOptions(arguments, 0, true), commit ], next); }; /** * Add a lightweight tag to the head of the current branch * * @param {string} name * @param {Function} [then] */ Git.prototype.addTag = function (name, then) { const task = (typeof name === 'string') ? addTagTask(name) : configurationErrorTask('Git.addTag requires a tag name'); return this._runTask(task, trailingFunctionArgument(arguments)); }; /** * Add an annotated tag to the head of the current branch * * @param {string} tagName * @param {string} tagMessage * @param {Function} [then] */ Git.prototype.addAnnotatedTag = function (tagName, tagMessage, then) { return this._runTask( addAnnotatedTagTask(tagName, tagMessage), trailingFunctionArgument(arguments), ); }; /** * Check out a tag or revision, any number of additional arguments can be passed to the `git checkout` command * by supplying either a string or array of strings as the `what` parameter. * * @param {string|string[]} what One or more commands to pass to `git checkout` * @param {Function} [then] */ Git.prototype.checkout = function (what, then) { const commands = ['checkout', ...getTrailingOptions(arguments, true)]; return this._runTask( straightThroughStringTask(commands), trailingFunctionArgument(arguments), ); }; /** * Check out a remote branch * * @param {string} branchName name of branch * @param {string} startPoint (e.g origin/development) * @param {Function} [then] */ Git.prototype.checkoutBranch = function (branchName, startPoint, then) { return this.checkout(['-b', branchName, startPoint], trailingFunctionArgument(arguments)); }; /** * Check out a local branch */ Git.prototype.checkoutLocalBranch = function (branchName, then) { return this.checkout(['-b', branchName], trailingFunctionArgument(arguments)); }; /** * Delete a local branch */ Git.prototype.deleteLocalBranch = function (branchName, forceDelete, then) { return this._runTask( deleteBranchTask(branchName, typeof forceDelete === "boolean" ? forceDelete : false), trailingFunctionArgument(arguments), ); }; /** * Delete one or more local branches */ Git.prototype.deleteLocalBranches = function (branchNames, forceDelete, then) { return this._runTask( deleteBranchesTask(branchNames, typeof forceDelete === "boolean" ? forceDelete : false), trailingFunctionArgument(arguments), ); }; /** * List all branches * * @param {Object | string[]} [options] * @param {Function} [then] */ Git.prototype.branch = function (options, then) { return this._runTask( branchTask(getTrailingOptions(arguments)), trailingFunctionArgument(arguments), ); }; /** * Return list of local branches * * @param {Function} [then] */ Git.prototype.branchLocal = function (then) { return this._runTask( branchLocalTask(), trailingFunctionArgument(arguments), ); }; /** * Add config to local git instance * * @param {string} key configuration key (e.g user.name) * @param {string} value for the given key (e.g your name) * @param {boolean} [append=false] optionally append the key/value pair (equivalent of passing `--add` option). * @param {Function} [then] */ Git.prototype.addConfig = function (key, value, append, then) { return this._runTask( addConfigTask(key, value, typeof append === "boolean" ? append : false), trailingFunctionArgument(arguments), ); }; Git.prototype.listConfig = function () { return this._runTask(listConfigTask(), trailingFunctionArgument(arguments)); }; /** * Executes any command against the git binary. */ Git.prototype.raw = function (commands) { const createRestCommands = !Array.isArray(commands); const command = [].slice.call(createRestCommands ? arguments : commands, 0); for (let i = 0; i < command.length && createRestCommands; i++) { if (!filterPrimitives(command[i])) { command.splice(i, command.length - i); break; } } command.push( ...getTrailingOptions(arguments, 0, true), ); var next = trailingFunctionArgument(arguments); if (!command.length) { return this._runTask( configurationErrorTask('Raw: must supply one or more command to execute'), next, ); } return this._run(command, next); }; Git.prototype.submoduleAdd = function (repo, path, then) { return this._runTask( addSubModuleTask(repo, path), trailingFunctionArgument(arguments), ); }; Git.prototype.submoduleUpdate = function (args, then) { return this._runTask( updateSubModuleTask(getTrailingOptions(arguments, true)), trailingFunctionArgument(arguments), ); }; Git.prototype.submoduleInit = function (args, then) { return this._runTask( initSubModuleTask(getTrailingOptions(arguments, true)), trailingFunctionArgument(arguments), ); }; Git.prototype.subModule = function (options, then) { return this._runTask( subModuleTask(getTrailingOptions(arguments)), trailingFunctionArgument(arguments), ); }; Git.prototype.listRemote = function () { return this._runTask( listRemotesTask(getTrailingOptions(arguments)), trailingFunctionArgument(arguments), ); }; /** * Adds a remote to the list of remotes. */ Git.prototype.addRemote = function (remoteName, remoteRepo, then) { return this._runTask( addRemoteTask(remoteName, remoteRepo, getTrailingOptions(arguments)), trailingFunctionArgument(arguments), ); }; /** * Removes an entry by name from the list of remotes. */ Git.prototype.removeRemote = function (remoteName, then) { return this._runTask( removeRemoteTask(remoteName), trailingFunctionArgument(arguments), ); }; /** * Gets the currently available remotes, setting the optional verbose argument to true includes additional * detail on the remotes themselves. */ Git.prototype.getRemotes = function (verbose, then) { return this._runTask( getRemotesTask(verbose === true), trailingFunctionArgument(arguments), ); }; /** * Compute object ID from a file */ Git.prototype.hashObject = function (path, write) { return this._runTask( hashObjectTask(path, write === true), trailingFunctionArgument(arguments), ); }; /** * Call any `git remote` function with arguments passed as an array of strings. * * @param {string[]} options * @param {Function} [then] */ Git.prototype.remote = function (options, then) { return this._runTask( remoteTask(getTrailingOptions(arguments)), trailingFunctionArgument(arguments), ); }; /** * Merges from one branch to another, equivalent to running `git merge ${from} $[to}`, the `options` argument can * either be an array of additional parameters to pass to the command or null / omitted to be ignored. * * @param {string} from * @param {string} to * @param {string[]} [options] * @param {Function} [then] */ Git.prototype.mergeFromTo = function (from, to) { if (!(filterString(from) && filterString(to))) { return this._runTask(configurationErrorTask( `Git.mergeFromTo requires that the 'from' and 'to' arguments are supplied as strings` )); } return this._runTask( mergeTask([from, to, ...getTrailingOptions(arguments)]), trailingFunctionArgument(arguments, false), ); }; /** * Runs a merge, `options` can be either an array of arguments * supported by the [`git merge`](https://git-scm.com/docs/git-merge) * or an options object. * * Conflicts during the merge result in an error response, * the response type whether it was an error or success will be a MergeSummary instance. * When successful, the MergeSummary has all detail from a the PullSummary * * @param {Object | string[]} [options] * @param {Function} [then] * @returns {*} * * @see ./responses/MergeSummary.js * @see ./responses/PullSummary.js */ Git.prototype.merge = function () { return this._runTask( mergeTask(getTrailingOptions(arguments)), trailingFunctionArgument(arguments), ); }; /** * Call any `git tag` function with arguments passed as an array of strings. * * @param {string[]} options * @param {Function} [then] */ Git.prototype.tag = function (options, then) { const command = getTrailingOptions(arguments); if (command[0] !== 'tag') { command.unshift('tag'); } return this._run(command, trailingFunctionArgument(arguments)); }; /** * Updates repository server info * * @param {Function} [then] */ Git.prototype.updateServerInfo = function (then) { return this._run(["update-server-info"], trailingFunctionArgument(arguments)); }; /** * Pushes the current committed changes to a remote, optionally specify the names of the remote and branch to use * when pushing. Supply multiple options as an array of strings in the first argument - see examples below. * * @param {string|string[]} [remote] * @param {string} [branch] * @param {Function} [then] */ Git.prototype.push = function (remote, branch, then) { const task = pushTask( {remote: filterType(remote, filterString), branch: filterType(branch, filterString)}, getTrailingOptions(arguments), ); return this._runTask(task, trailingFunctionArgument(arguments)); }; /** * Pushes the current tag changes to a remote which can be either a URL or named remote. When not specified uses the * default configured remote spec. * * @param {string} [remote] * @param {Function} [then] */ Git.prototype.pushTags = function (remote, then) { const task = pushTagsTask({remote: filterType(remote, filterString)}, getTrailingOptions(arguments)); return this._runTask(task, trailingFunctionArgument(arguments)); }; /** * Removes the named files from source control. * * @param {string|string[]} files * @param {Function} [then] */ Git.prototype.rm = function (files, then) { return this._rm(files, '-f', then); }; /** * Removes the named files from source control but keeps them on disk rather than deleting them entirely. To * completely remove the files, use `rm`. * * @param {string|string[]} files * @param {Function} [then] */ Git.prototype.rmKeepLocal = function (files, then) { return this._rm(files, '--cached', then); }; /** * Returns a list of objects in a tree based on commit hash. Passing in an object hash returns the object's content, * size, and type. * * Passing "-p" will instruct cat-file to determine the object type, and display its formatted contents. * * @param {string[]} [options] * @param {Function} [then] */ Git.prototype.catFile = function (options, then) { return this._catFile('utf-8', arguments); }; /** * Equivalent to `catFile` but will return the native `Buffer` of content from the git command's stdout. * * @param {string[]} options * @param then */ Git.prototype.binaryCatFile = function (options, then) { return this._catFile('buffer', arguments); }; Git.prototype._catFile = function (format, args) { var handler = trailingFunctionArgument(args); var command = ['cat-file']; var options = args[0]; if (typeof options === 'string') { return this._runTask( configurationErrorTask('Git#catFile: options must be supplied as an array of strings'), handler, ); } if (Array.isArray(options)) { command.push.apply(command, options); } return this._run(command, handler, { format: format }); }; /** * Return repository changes. */ Git.prototype.diff = function (options, then) { const command = ['diff', ...getTrailingOptions(arguments)]; if (typeof options === 'string') { command.splice(1, 0, options); this._logger.warn('Git#diff: supplying options as a single string is now deprecated, switch to an array of strings'); } return this._runTask( straightThroughStringTask(command), trailingFunctionArgument(arguments), ); }; Git.prototype.diffSummary = function () { return this._run( ['diff', '--stat=4096', ...getTrailingOptions(arguments, true)], trailingFunctionArgument(arguments), { parser: Git.responseParser('DiffSummary'), } ); }; Git.prototype.revparse = function (options, then) { const commands = ['rev-parse', ...getTrailingOptions(arguments, true)]; return this._runTask( straightThroughStringTask(commands, true), trailingFunctionArgument(arguments), ); }; /** * Show various types of objects, for example the file at a certain commit * * @param {string[]} [options] * @param {Function} [then] */ Git.prototype.show = function (options, then) { var handler = trailingFunctionArgument(arguments) || NOOP; var command = ['show']; if (typeof options === 'string' || Array.isArray(options)) { command = command.concat(options); } return this._run(command, function (err, data) { err ? handler(err) : handler(null, data); }); }; /** */ Git.prototype.clean = function (mode, options, then) { const usingCleanOptionsArray = isCleanOptionsArray(mode); const cleanMode = usingCleanOptionsArray && mode.join('') || filterType(mode, filterString) || ''; const customArgs = getTrailingOptions([].slice.call(arguments, usingCleanOptionsArray ? 1 : 0)); return this._runTask( cleanWithOptionsTask(cleanMode, customArgs), trailingFunctionArgument(arguments), ); }; /** * Call a simple function at the next step in the chain. * @param {Function} [then] */ Git.prototype.exec = function (then) { const task = { commands: [], format: 'utf-8', parser () { if (typeof then === 'function') { then(); } } }; return this._runTask(task); }; /** * Show commit logs from `HEAD` to the first commit. * If provided between `options.from` and `options.to` tags or branch. * * Additionally you can provide options.file, which is the path to a file in your repository. Then only this file will be considered. * * To use a custom splitter in the log format, set `options.splitter` to be the string the log should be split on. * * Options can also be supplied as a standard options object for adding custom properties supported by the git log command. * For any other set of options, supply options as an array of strings to be appended to the git log command. * * @param {Object|string[]} [options] * @param {boolean} [options.strictDate=true] Determine whether to use strict ISO date format (default) or not (when set to `false`) * @param {string} [options.from] The first commit to include * @param {string} [options.to] The most recent commit to include * @param {string} [options.file] A single file to include in the result * @param {boolean} [options.multiLine] Optionally include multi-line commit messages * * @param {Function} [then] */ Git.prototype.log = function (options, then) { var handler = trailingFunctionArgument(arguments); var opt = trailingOptionsArgument(arguments) || {}; var splitter = opt.splitter || requireResponseHandler('ListLogSummary').SPLITTER; var format = opt.format || { hash: '%H', date: opt.strictDate === false ? '%ai' : '%aI', message: '%s', refs: '%D', body: opt.multiLine ? '%B' : '%b', author_name: '%aN', author_email: '%ae' }; var rangeOperator = (opt.symmetric !== false) ? '...' : '..'; var fields = Object.keys(format); var formatstr = fields.map(function (k) { return format[k]; }).join(splitter); var suffix = []; var command = ["log", "--pretty=format:" + requireResponseHandler('ListLogSummary').START_BOUNDARY + formatstr + requireResponseHandler('ListLogSummary').COMMIT_BOUNDARY ]; if (filterArray(options)) { command = command.concat(options); opt = {}; } else if (typeof arguments[0] === "string" || typeof arguments[1] === "string") { this._logger.warn('Git#log: supplying to or from as strings is now deprecated, switch to an options configuration object'); opt = { from: arguments[0], to: arguments[1] }; } if (opt.n || opt['max-count']) { command.push("--max-count=" + (opt.n || opt['max-count'])); } if (opt.from && opt.to) { command.push(opt.from + rangeOperator + opt.to); } if (opt.file) { suffix.push("--follow", options.file); } 'splitter n max-count file from to --pretty format symmetric multiLine strictDate'.split(' ').forEach(function (key) { delete opt[key]; }); appendTaskOptions(opt, command); return this._run( command.concat(suffix), handler, { parser: Git.responseParser('ListLogSummary', [splitter, fields]) } ); }; /** * Clears the queue of pending commands and returns the wrapper instance for chaining. * * @returns {Git} */ Git.prototype.clearQueue = function () { // TODO: // this._executor.clear(); return this; }; /** * Check if a pathname or pathnames are excluded by .gitignore * * @param {string|string[]} pathnames * @param {Function} [then] */ Git.prototype.checkIgnore = function (pathnames, then) { var handler = trailingFunctionArgument(arguments); var command = ["check-ignore"]; if (handler !== pathnames) { command = command.concat(pathnames); } return this._run(command, function (err, data) { handler && handler(err, !err && parseCheckIgnore(data)); }); }; Git.prototype.checkIsRepo = function (checkType, then) { return this._runTask( checkIsRepoTask(filterType(checkType, filterString)), trailingFunctionArgument(arguments), ); }; Git.prototype._rm = function (_files, options, then) { var files = [].concat(_files); var args = ['rm', options]; args.push.apply(args, files); return this._run(args, trailingFunctionArgument(arguments)); }; /** * Schedules the supplied command to be run, the command should not include the name of the git binary and should * be an array of strings passed as the arguments to the git binary. * * @param {string[]} command * @param {Function} then * @param {Object} [opt] * @param {boolean} [opt.concatStdErr=false] Optionally concatenate stderr output into the stdout * @param {boolean} [opt.format="utf-8"] The format to use when reading the content of stdout * @param {Function} [opt.onError] Optional error handler for this command - can be used to allow non-clean exits * without killing the remaining stack of commands * @param {Function} [opt.parser] Optional parser function * @param {number} [opt.onError.exitCode] * @param {string} [opt.onError.stdErr] * * @returns {Git} */ Git.prototype._run = function (command, then, opt) { const task = Object.assign({ concatStdErr: false, onError: undefined, format: 'utf-8', parser (data) { return data; } }, opt || {}, { commands: command, }); return this._runTask(task, then); }; Git.prototype._runTask = function (task, then) { const executor = this[ChainedExecutor] || this._executor.chain(); const promise = executor.push(task); taskCallback( task, promise, then); return Object.create(this, { then: {value: promise.then.bind(promise)}, catch: {value: promise.catch.bind(promise)}, [ChainedExecutor]: {value: executor}, }); }; /** * Handles an exception in the processing of a command. */ Git.fail = function (git, error, handler) { git._logger.error(error); git.clearQueue(); if (typeof handler === 'function') { handler.call(git, error, null); } }; /** * Creates a parser for a task * * @param {string} type * @param {any[]} [args] */ Git.responseParser = function (type, args) { const handler = requireResponseHandler(type); return function (data) { return handler.parse.apply(handler, [data].concat(args === undefined ? [] : args)); }; }; /** * Marks the git instance as having had a fatal exception by clearing the pending queue of tasks and * logging to the console. * * @param git * @param error * @param callback */ Git.exception = function (git, error, callback) { const err = error instanceof Error ? error : new Error(error); if (typeof callback === 'function') { callback(err); } throw err; }; module.exports = Git; /** * Requires and returns a response handler based on its named type * @param {string} type */ function requireResponseHandler (type) { return responses[type]; } /***/ }), /***/ 1477: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { const {gitP} = __webpack_require__(941); const {esModuleFactory, gitInstanceFactory, gitExportFactory} = __webpack_require__(1949); module.exports = esModuleFactory( gitExportFactory(gitInstanceFactory, {gitP}) ); /***/ }), /***/ 4732: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); var clean_1 = __webpack_require__(4386); exports.CleanOptions = clean_1.CleanOptions; var check_is_repo_1 = __webpack_require__(221); exports.CheckRepoActions = check_is_repo_1.CheckRepoActions; var reset_1 = __webpack_require__(2377); exports.ResetMode = reset_1.ResetMode; var git_construct_error_1 = __webpack_require__(1876); exports.GitConstructError = git_construct_error_1.GitConstructError; var git_error_1 = __webpack_require__(5757); exports.GitError = git_error_1.GitError; var git_response_error_1 = __webpack_require__(5131); exports.GitResponseError = git_response_error_1.GitResponseError; var task_configuration_error_1 = __webpack_require__(740); exports.TaskConfigurationError = task_configuration_error_1.TaskConfigurationError; //# sourceMappingURL=api.js.map /***/ }), /***/ 1876: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const git_error_1 = __webpack_require__(5757); /** * The `GitConstructError` is thrown when an error occurs in the constructor * of the `simple-git` instance itself. Most commonly as a result of using * a `baseDir` option that points to a folder that either does not exist, * or cannot be read by the user the node script is running as. * * Check the `.message` property for more detail including the properties * passed to the constructor. */ class GitConstructError extends git_error_1.GitError { constructor(config, message) { super(undefined, message); this.config = config; } } exports.GitConstructError = GitConstructError; //# sourceMappingURL=git-construct-error.js.map /***/ }), /***/ 5757: /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); /** * The `GitError` is thrown when the underlying `git` process throws a * fatal exception (eg an `ENOENT` exception when attempting to use a * non-writable directory as the root for your repo), and acts as the * base class for more specific errors thrown by the parsing of the * git response or errors in the configuration of the task about to * be run. * * When an exception is thrown, pending tasks in the same instance will * not be executed. The recommended way to run a series of tasks that * can independently fail without needing to prevent future tasks from * running is to catch them individually: * * ```typescript import { gitP, SimpleGit, GitError, PullResult } from 'simple-git'; function catchTask (e: GitError) { return e. } const git = gitP(repoWorkingDir); const pulled: PullResult | GitError = await git.pull().catch(catchTask); const pushed: string | GitError = await git.pushTags().catch(catchTask); ``` */ class GitError extends Error { constructor(task, message) { super(message); this.task = task; Object.setPrototypeOf(this, new.target.prototype); } } exports.GitError = GitError; //# sourceMappingURL=git-error.js.map /***/ }), /***/ 5131: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const git_error_1 = __webpack_require__(5757); /** * The `GitResponseError` is the wrapper for a parsed response that is treated as * a fatal error, for example attempting a `merge` can leave the repo in a corrupted * state when there are conflicts so the task will reject rather than resolve. * * For example, catching the merge conflict exception: * * ```typescript import { gitP, SimpleGit, GitResponseError, MergeSummary } from 'simple-git'; const git = gitP(repoRoot); const mergeOptions: string[] = ['--no-ff', 'other-branch']; const mergeSummary: MergeSummary = await git.merge(mergeOptions) .catch((e: GitResponseError) => e.git); if (mergeSummary.failed) { // deal with the error } ``` */ class GitResponseError extends git_error_1.GitError { constructor( /** * `.git` access the parsed response that is treated as being an error */ git, message) { super(undefined, message || String(git)); this.git = git; } } exports.GitResponseError = GitResponseError; //# sourceMappingURL=git-response-error.js.map /***/ }), /***/ 740: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const git_error_1 = __webpack_require__(5757); /** * The `TaskConfigurationError` is thrown when a command was incorrectly * configured. An error of this kind means that no attempt was made to * run your command through the underlying `git` binary. * * Check the `.message` property for more detail on why your configuration * resulted in an error. */ class TaskConfigurationError extends git_error_1.GitError { constructor(message) { super(undefined, message); } } exports.TaskConfigurationError = TaskConfigurationError; //# sourceMappingURL=task-configuration-error.js.map /***/ }), /***/ 7178: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const debug_1 = __webpack_require__(2179); const utils_1 = __webpack_require__(847); debug_1.default.formatters.L = (value) => String(utils_1.filterHasLength(value) ? value.length : '-'); debug_1.default.formatters.B = (value) => { if (Buffer.isBuffer(value)) { return value.toString('utf8'); } return utils_1.objectToString(value); }; /** * The shared debug logging instance */ exports.log = debug_1.default('simple-git'); function prefixedLogger(to, prefix, forward) { if (!prefix || !String(prefix).replace(/\s*/, '')) { return !forward ? to : (message, ...args) => { to(message, ...args); forward(message, ...args); }; } return (message, ...args) => { to(`%s ${message}`, prefix, ...args); if (forward) { forward(message, ...args); } }; } function childLoggerName(name, childDebugger, { namespace: parentNamespace }) { if (typeof name === 'string') { return name; } const childNamespace = childDebugger && childDebugger.namespace || ''; if (childNamespace.startsWith(parentNamespace)) { return childNamespace.substr(parentNamespace.length + 1); } return childNamespace || parentNamespace; } function createLogger(label, verbose, initialStep, infoDebugger = exports.log) { const labelPrefix = label && `[${label}]` || ''; const spawned = []; const debugDebugger = (typeof verbose === 'string') ? infoDebugger.extend(verbose) : verbose; const key = childLoggerName(utils_1.filterType(verbose, utils_1.filterString), debugDebugger, infoDebugger); return step(initialStep); function destroy() { spawned.forEach(logger => logger.destroy()); spawned.length = 0; } function child(name) { return utils_1.append(spawned, createLogger(label, debugDebugger && debugDebugger.extend(name) || name)); } function sibling(name, initial) { return utils_1.append(spawned, createLogger(label, key.replace(/^[^:]+/, name), initial, infoDebugger)); } function step(phase) { const stepPrefix = phase && `[${phase}]` || ''; const debug = debugDebugger && prefixedLogger(debugDebugger, stepPrefix) || utils_1.NOOP; const info = prefixedLogger(infoDebugger, `${labelPrefix} ${stepPrefix}`, debug); return Object.assign(debugDebugger ? debug : info, { key, label, child, sibling, debug, info, step, destroy, }); } } exports.createLogger = createLogger; /** * The `GitLogger` is used by the main `SimpleGit` runner to handle logging * any warnings or errors. */ class GitLogger { constructor(_out = exports.log) { this._out = _out; this.error = prefixedLogger(_out, '[ERROR]'); this.warn = prefixedLogger(_out, '[WARN]'); } silent(silence = false) { if (silence !== this._out.enabled) { return; } const { namespace } = this._out; const env = (process.env.DEBUG || '').split(',').filter(s => !!s); const hasOn = env.includes(namespace); const hasOff = env.includes(`-${namespace}`); // enabling the log if (!silence) { if (hasOff) { utils_1.remove(env, `-${namespace}`); } else { env.push(namespace); } } else { if (hasOn) { utils_1.remove(env, namespace); } else { env.push(`-${namespace}`); } } debug_1.default.enable(env.join(',')); } } exports.GitLogger = GitLogger; //# sourceMappingURL=git-logger.js.map /***/ }), /***/ 6086: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const BranchDeleteSummary_1 = __webpack_require__(3755); const utils_1 = __webpack_require__(847); const deleteSuccessRegex = /(\S+)\s+\(\S+\s([^)]+)\)/; const deleteErrorRegex = /^error[^']+'([^']+)'/m; const parsers = [ new utils_1.LineParser(deleteSuccessRegex, (result, [branch, hash]) => { const deletion = BranchDeleteSummary_1.branchDeletionSuccess(branch, hash); result.all.push(deletion); result.branches[branch] = deletion; }), new utils_1.LineParser(deleteErrorRegex, (result, [branch]) => { const deletion = BranchDeleteSummary_1.branchDeletionFailure(branch); result.errors.push(deletion); result.all.push(deletion); result.branches[branch] = deletion; }), ]; exports.parseBranchDeletions = (stdOut) => { return utils_1.parseStringResponse(new BranchDeleteSummary_1.BranchDeletionBatch(), parsers, stdOut); }; function hasBranchDeletionError(data, processExitCode) { return processExitCode === utils_1.ExitCodes.ERROR && deleteErrorRegex.test(data); } exports.hasBranchDeletionError = hasBranchDeletionError; //# sourceMappingURL=parse-branch-delete.js.map /***/ }), /***/ 9264: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const BranchSummary_1 = __webpack_require__(4446); const utils_1 = __webpack_require__(847); const parsers = [ new utils_1.LineParser(/^(\*\s)?\((?:HEAD )?detached (?:from|at) (\S+)\)\s+([a-z0-9]+)\s(.*)$/, (result, [current, name, commit, label]) => { result.push(!!current, true, name, commit, label); }), new utils_1.LineParser(/^(\*\s)?(\S+)\s+([a-z0-9]+)\s(.*)$/, (result, [current, name, commit, label]) => { result.push(!!current, false, name, commit, label); }) ]; exports.parseBranchSummary = function (stdOut) { return utils_1.parseStringResponse(new BranchSummary_1.BranchSummaryResult(), parsers, stdOut); }; //# sourceMappingURL=parse-branch.js.map /***/ }), /***/ 6412: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const MergeSummary_1 = __webpack_require__(1651); const utils_1 = __webpack_require__(847); const parse_pull_1 = __webpack_require__(5658); const parsers = [ new utils_1.LineParser(/^Auto-merging\s+(.+)$/, (summary, [autoMerge]) => { summary.merges.push(autoMerge); }), new utils_1.LineParser(/^CONFLICT\s+\((.+)\): Merge conflict in (.+)$/, (summary, [reason, file]) => { summary.conflicts.push(new MergeSummary_1.MergeSummaryConflict(reason, file)); }), new utils_1.LineParser(/^CONFLICT\s+\((.+\/delete)\): (.+) deleted in (.+) and/, (summary, [reason, file, deleteRef]) => { summary.conflicts.push(new MergeSummary_1.MergeSummaryConflict(reason, file, { deleteRef })); }), new utils_1.LineParser(/^CONFLICT\s+\((.+)\):/, (summary, [reason]) => { summary.conflicts.push(new MergeSummary_1.MergeSummaryConflict(reason, null)); }), new utils_1.LineParser(/^Automatic merge failed;\s+(.+)$/, (summary, [result]) => { summary.result = result; }), ]; /** * Parse the complete response from `git.merge` */ exports.parseMergeResult = (stdOut, stdErr) => { return Object.assign(exports.parseMergeDetail(stdOut, stdErr), parse_pull_1.parsePullResult(stdOut, stdErr)); }; /** * Parse the merge specific detail (ie: not the content also available in the pull detail) from `git.mnerge` * @param stdOut */ exports.parseMergeDetail = (stdOut) => { return utils_1.parseStringResponse(new MergeSummary_1.MergeSummaryDetail(), parsers, stdOut); }; //# sourceMappingURL=parse-merge.js.map /***/ }), /***/ 7444: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const utils_1 = __webpack_require__(847); const parsers = [ new utils_1.LineParser(/^Renaming (.+) to (.+)$/, (result, [from, to]) => { result.moves.push({ from, to }); }), ]; exports.parseMoveResult = function (stdOut) { return utils_1.parseStringResponse({ moves: [] }, parsers, stdOut); }; //# sourceMappingURL=parse-move.js.map /***/ }), /***/ 5658: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const PullSummary_1 = __webpack_require__(3567); const utils_1 = __webpack_require__(847); const parse_remote_messages_1 = __webpack_require__(2661); const FILE_UPDATE_REGEX = /^\s*(.+?)\s+\|\s+\d+\s*(\+*)(-*)/; const SUMMARY_REGEX = /(\d+)\D+((\d+)\D+\(\+\))?(\D+(\d+)\D+\(-\))?/; const ACTION_REGEX = /^(create|delete) mode \d+ (.+)/; const parsers = [ new utils_1.LineParser(FILE_UPDATE_REGEX, (result, [file, insertions, deletions]) => { result.files.push(file); if (insertions) { result.insertions[file] = insertions.length; } if (deletions) { result.deletions[file] = deletions.length; } }), new utils_1.LineParser(SUMMARY_REGEX, (result, [changes, , insertions, , deletions]) => { if (insertions !== undefined || deletions !== undefined) { result.summary.changes = +changes || 0; result.summary.insertions = +insertions || 0; result.summary.deletions = +deletions || 0; return true; } return false; }), new utils_1.LineParser(ACTION_REGEX, (result, [action, file]) => { utils_1.append(result.files, file); utils_1.append((action === 'create') ? result.created : result.deleted, file); }), ]; exports.parsePullDetail = (stdOut, stdErr) => { return utils_1.parseStringResponse(new PullSummary_1.PullSummary(), parsers, `${stdOut}\n${stdErr}`); }; exports.parsePullResult = (stdOut, stdErr) => { return Object.assign(new PullSummary_1.PullSummary(), exports.parsePullDetail(stdOut, stdErr), parse_remote_messages_1.parseRemoteMessages(stdOut, stdErr)); }; //# sourceMappingURL=parse-pull.js.map /***/ }), /***/ 8530: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const utils_1 = __webpack_require__(847); const parse_remote_messages_1 = __webpack_require__(2661); function pushResultPushedItem(local, remote, status) { const deleted = status.includes('deleted'); const tag = status.includes('tag') || /^refs\/tags/.test(local); const alreadyUpdated = !status.includes('new'); return { deleted, tag, branch: !tag, new: !alreadyUpdated, alreadyUpdated, local, remote, }; } const parsers = [ new utils_1.LineParser(/^Pushing to (.+)$/, (result, [repo]) => { result.repo = repo; }), new utils_1.LineParser(/^updating local tracking ref '(.+)'/, (result, [local]) => { result.ref = Object.assign(Object.assign({}, (result.ref || {})), { local }); }), new utils_1.LineParser(/^[*-=]\s+([^:]+):(\S+)\s+\[(.+)]$/, (result, [local, remote, type]) => { result.pushed.push(pushResultPushedItem(local, remote, type)); }), new utils_1.LineParser(/^Branch '([^']+)' set up to track remote branch '([^']+)' from '([^']+)'/, (result, [local, remote, remoteName]) => { result.branch = Object.assign(Object.assign({}, (result.branch || {})), { local, remote, remoteName }); }), new utils_1.LineParser(/^([^:]+):(\S+)\s+([a-z0-9]+)\.\.([a-z0-9]+)$/, (result, [local, remote, from, to]) => { result.update = { head: { local, remote, }, hash: { from, to, }, }; }), ]; exports.parsePushResult = (stdOut, stdErr) => { const pushDetail = exports.parsePushDetail(stdOut, stdErr); const responseDetail = parse_remote_messages_1.parseRemoteMessages(stdOut, stdErr); return Object.assign(Object.assign({}, pushDetail), responseDetail); }; exports.parsePushDetail = (stdOut, stdErr) => { return utils_1.parseStringResponse({ pushed: [] }, parsers, `${stdOut}\n${stdErr}`); }; //# sourceMappingURL=parse-push.js.map /***/ }), /***/ 2661: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const utils_1 = __webpack_require__(847); const parse_remote_objects_1 = __webpack_require__(3565); const parsers = [ new utils_1.RemoteLineParser(/^remote:\s*(.+)$/, (result, [text]) => { result.remoteMessages.all.push(text.trim()); return false; }), ...parse_remote_objects_1.remoteMessagesObjectParsers, new utils_1.RemoteLineParser([/create a (?:pull|merge) request/i, /\s(https?:\/\/\S+)$/], (result, [pullRequestUrl]) => { result.remoteMessages.pullRequestUrl = pullRequestUrl; }), new utils_1.RemoteLineParser([/found (\d+) vulnerabilities.+\(([^)]+)\)/i, /\s(https?:\/\/\S+)$/], (result, [count, summary, url]) => { result.remoteMessages.vulnerabilities = { count: utils_1.asNumber(count), summary, url, }; }), ]; function parseRemoteMessages(_stdOut, stdErr) { return utils_1.parseStringResponse({ remoteMessages: new RemoteMessageSummary() }, parsers, stdErr); } exports.parseRemoteMessages = parseRemoteMessages; class RemoteMessageSummary { constructor() { this.all = []; } } exports.RemoteMessageSummary = RemoteMessageSummary; //# sourceMappingURL=parse-remote-messages.js.map /***/ }), /***/ 3565: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const utils_1 = __webpack_require__(847); function objectEnumerationResult(remoteMessages) { return (remoteMessages.objects = remoteMessages.objects || { compressing: 0, counting: 0, enumerating: 0, packReused: 0, reused: { count: 0, delta: 0 }, total: { count: 0, delta: 0 } }); } function asObjectCount(source) { const count = /^\s*(\d+)/.exec(source); const delta = /delta (\d+)/i.exec(source); return { count: utils_1.asNumber(count && count[1] || '0'), delta: utils_1.asNumber(delta && delta[1] || '0'), }; } exports.remoteMessagesObjectParsers = [ new utils_1.RemoteLineParser(/^remote:\s*(enumerating|counting|compressing) objects: (\d+),/i, (result, [action, count]) => { const key = action.toLowerCase(); const enumeration = objectEnumerationResult(result.remoteMessages); Object.assign(enumeration, { [key]: utils_1.asNumber(count) }); }), new utils_1.RemoteLineParser(/^remote:\s*(enumerating|counting|compressing) objects: \d+% \(\d+\/(\d+)\),/i, (result, [action, count]) => { const key = action.toLowerCase(); const enumeration = objectEnumerationResult(result.remoteMessages); Object.assign(enumeration, { [key]: utils_1.asNumber(count) }); }), new utils_1.RemoteLineParser(/total ([^,]+), reused ([^,]+), pack-reused (\d+)/i, (result, [total, reused, packReused]) => { const objects = objectEnumerationResult(result.remoteMessages); objects.total = asObjectCount(total); objects.reused = asObjectCount(reused); objects.packReused = utils_1.asNumber(packReused); }), ]; //# sourceMappingURL=parse-remote-objects.js.map /***/ }), /***/ 3755: /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); class BranchDeletionBatch { constructor() { this.all = []; this.branches = {}; this.errors = []; } get success() { return !this.errors.length; } } exports.BranchDeletionBatch = BranchDeletionBatch; function branchDeletionSuccess(branch, hash) { return { branch, hash, success: true, }; } exports.branchDeletionSuccess = branchDeletionSuccess; function branchDeletionFailure(branch) { return { branch, hash: null, success: false, }; } exports.branchDeletionFailure = branchDeletionFailure; function isSingleBranchDeleteFailure(test) { return test.success; } exports.isSingleBranchDeleteFailure = isSingleBranchDeleteFailure; //# sourceMappingURL=BranchDeleteSummary.js.map /***/ }), /***/ 4446: /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); class BranchSummaryResult { constructor() { this.all = []; this.branches = {}; this.current = ''; this.detached = false; } push(current, detached, name, commit, label) { if (current) { this.detached = detached; this.current = name; } this.all.push(name); this.branches[name] = { current: current, name: name, commit: commit, label: label }; } } exports.BranchSummaryResult = BranchSummaryResult; //# sourceMappingURL=BranchSummary.js.map /***/ }), /***/ 9926: /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); /** * Parser for the `check-ignore` command - returns each file as a string array */ exports.parseCheckIgnore = (text) => { return text.split(/\n/g) .map(line => line.trim()) .filter(file => !!file); }; //# sourceMappingURL=CheckIgnore.js.map /***/ }), /***/ 5689: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const utils_1 = __webpack_require__(847); class CleanResponse { constructor(dryRun) { this.dryRun = dryRun; this.paths = []; this.files = []; this.folders = []; } } exports.CleanResponse = CleanResponse; const removalRegexp = /^[a-z]+\s*/i; const dryRunRemovalRegexp = /^[a-z]+\s+[a-z]+\s*/i; const isFolderRegexp = /\/$/; function cleanSummaryParser(dryRun, text) { const summary = new CleanResponse(dryRun); const regexp = dryRun ? dryRunRemovalRegexp : removalRegexp; utils_1.toLinesWithContent(text).forEach(line => { const removed = line.replace(regexp, ''); summary.paths.push(removed); (isFolderRegexp.test(removed) ? summary.folders : summary.files).push(removed); }); return summary; } exports.cleanSummaryParser = cleanSummaryParser; //# sourceMappingURL=CleanSummary.js.map /***/ }), /***/ 7219: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const utils_1 = __webpack_require__(847); class ConfigList { constructor() { this.files = []; this.values = Object.create(null); } get all() { if (!this._all) { this._all = this.files.reduce((all, file) => { return Object.assign(all, this.values[file]); }, {}); } return this._all; } addFile(file) { if (!(file in this.values)) { const latest = utils_1.last(this.files); this.values[file] = latest ? Object.create(this.values[latest]) : {}; this.files.push(file); } return this.values[file]; } addValue(file, key, value) { const values = this.addFile(file); if (!values.hasOwnProperty(key)) { values[key] = value; } else if (Array.isArray(values[key])) { values[key].push(value); } else { values[key] = [values[key], value]; } this._all = undefined; } } exports.ConfigList = ConfigList; function configListParser(text) { const config = new ConfigList(); const lines = text.split('\0'); for (let i = 0, max = lines.length - 1; i < max;) { const file = configFilePath(lines[i++]); const [key, value] = utils_1.splitOn(lines[i++], '\n'); config.addValue(file, key, value); } return config; } exports.configListParser = configListParser; function configFilePath(filePath) { return filePath.replace(/^(file):/, ''); } //# sourceMappingURL=ConfigList.js.map /***/ }), /***/ 860: /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.fromPathRegex = /^(.+) -> (.+)$/; class FileStatusSummary { constructor(path, index, working_dir) { this.path = path; this.index = index; this.working_dir = working_dir; if ('R' === (index + working_dir)) { const detail = exports.fromPathRegex.exec(path) || [null, path, path]; this.from = detail[1] || ''; this.path = detail[2] || ''; } } } exports.FileStatusSummary = FileStatusSummary; //# sourceMappingURL=FileStatusSummary.js.map /***/ }), /***/ 9999: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const utils_1 = __webpack_require__(847); function parseGetRemotes(text) { const remotes = {}; forEach(text, ([name]) => remotes[name] = { name }); return Object.values(remotes); } exports.parseGetRemotes = parseGetRemotes; function parseGetRemotesVerbose(text) { const remotes = {}; forEach(text, ([name, url, purpose]) => { if (!remotes.hasOwnProperty(name)) { remotes[name] = { name: name, refs: { fetch: '', push: '' }, }; } if (purpose && url) { remotes[name].refs[purpose.replace(/[^a-z]/g, '')] = url; } }); return Object.values(remotes); } exports.parseGetRemotesVerbose = parseGetRemotesVerbose; function forEach(text, handler) { utils_1.forEachLineWithContent(text, (line) => handler(line.split(/\s+/))); } //# sourceMappingURL=GetRemoteSummary.js.map /***/ }), /***/ 8690: /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); class InitSummary { constructor(bare, path, existing, gitDir) { this.bare = bare; this.path = path; this.existing = existing; this.gitDir = gitDir; } } exports.InitSummary = InitSummary; const initResponseRegex = /^Init.+ repository in (.+)$/; const reInitResponseRegex = /^Rein.+ in (.+)$/; function parseInit(bare, path, text) { const response = String(text).trim(); let result; if ((result = initResponseRegex.exec(response))) { return new InitSummary(bare, path, false, result[1]); } if ((result = reInitResponseRegex.exec(response))) { return new InitSummary(bare, path, true, result[1]); } let gitDir = ''; const tokens = response.split(' '); while (tokens.length) { const token = tokens.shift(); if (token === 'in') { gitDir = tokens.join(' '); break; } } return new InitSummary(bare, path, /^re/i.test(response), gitDir); } exports.parseInit = parseInit; //# sourceMappingURL=InitSummary.js.map /***/ }), /***/ 1651: /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); class MergeSummaryConflict { constructor(reason, file = null, meta) { this.reason = reason; this.file = file; this.meta = meta; } toString() { return `${this.file}:${this.reason}`; } } exports.MergeSummaryConflict = MergeSummaryConflict; class MergeSummaryDetail { constructor() { this.conflicts = []; this.merges = []; this.result = 'success'; } get failed() { return this.conflicts.length > 0; } get reason() { return this.result; } toString() { if (this.conflicts.length) { return `CONFLICTS: ${this.conflicts.join(', ')}`; } return 'OK'; } } exports.MergeSummaryDetail = MergeSummaryDetail; //# sourceMappingURL=MergeSummary.js.map /***/ }), /***/ 3567: /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); class PullSummary { constructor() { this.remoteMessages = { all: [], }; this.created = []; this.deleted = []; this.files = []; this.deletions = {}; this.insertions = {}; this.summary = { changes: 0, deletions: 0, insertions: 0, }; } } exports.PullSummary = PullSummary; //# sourceMappingURL=PullSummary.js.map /***/ }), /***/ 6790: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const FileStatusSummary_1 = __webpack_require__(860); /** * The StatusSummary is returned as a response to getting `git().status()` */ class StatusSummary { constructor() { this.not_added = []; this.conflicted = []; this.created = []; this.deleted = []; this.modified = []; this.renamed = []; /** * All files represented as an array of objects containing the `path` and status in `index` and * in the `working_dir`. */ this.files = []; this.staged = []; /** * Number of commits ahead of the tracked branch */ this.ahead = 0; /** *Number of commits behind the tracked branch */ this.behind = 0; /** * Name of the current branch */ this.current = null; /** * Name of the branch being tracked */ this.tracking = null; } /** * Gets whether this StatusSummary represents a clean working branch. */ isClean() { return !this.files.length; } } exports.StatusSummary = StatusSummary; exports.StatusSummaryParsers = { '##': function (line, status) { const aheadReg = /ahead (\d+)/; const behindReg = /behind (\d+)/; const currentReg = /^(.+?(?=(?:\.{3}|\s|$)))/; const trackingReg = /\.{3}(\S*)/; const onEmptyBranchReg = /\son\s([\S]+)$/; let regexResult; regexResult = aheadReg.exec(line); status.ahead = regexResult && +regexResult[1] || 0; regexResult = behindReg.exec(line); status.behind = regexResult && +regexResult[1] || 0; regexResult = currentReg.exec(line); status.current = regexResult && regexResult[1]; regexResult = trackingReg.exec(line); status.tracking = regexResult && regexResult[1]; regexResult = onEmptyBranchReg.exec(line); status.current = regexResult && regexResult[1] || status.current; }, '??': function (line, status) { status.not_added.push(line); }, A: function (line, status) { status.created.push(line); }, AM: function (line, status) { status.created.push(line); }, D: function (line, status) { status.deleted.push(line); }, M: function (line, status, indexState) { status.modified.push(line); if (indexState === 'M') { status.staged.push(line); } }, R: function (line, status) { const detail = /^(.+) -> (.+)$/.exec(line) || [null, line, line]; status.renamed.push({ from: String(detail[1]), to: String(detail[2]) }); }, UU: function (line, status) { status.conflicted.push(line); } }; exports.StatusSummaryParsers.MM = exports.StatusSummaryParsers.M; /* Map all unmerged status code combinations to UU to mark as conflicted */ exports.StatusSummaryParsers.AA = exports.StatusSummaryParsers.UU; exports.StatusSummaryParsers.UD = exports.StatusSummaryParsers.UU; exports.StatusSummaryParsers.DU = exports.StatusSummaryParsers.UU; exports.StatusSummaryParsers.DD = exports.StatusSummaryParsers.UU; exports.StatusSummaryParsers.AU = exports.StatusSummaryParsers.UU; exports.StatusSummaryParsers.UA = exports.StatusSummaryParsers.UU; exports.parseStatusSummary = function (text) { let file; const lines = text.trim().split('\n'); const status = new StatusSummary(); for (let i = 0, l = lines.length; i < l; i++) { file = splitLine(lines[i]); if (!file) { continue; } if (file.handler) { file.handler(file.path, status, file.index, file.workingDir); } if (file.code !== '##') { status.files.push(new FileStatusSummary_1.FileStatusSummary(file.path, file.index, file.workingDir)); } } return status; }; function splitLine(lineStr) { let line = lineStr.trim().match(/(..?)(\s+)(.*)/); if (!line || !line[1].trim()) { line = lineStr.trim().match(/(..?)\s+(.*)/); } if (!line) { return; } let code = line[1]; if (line[2].length > 1) { code += ' '; } if (code.length === 1 && line[2].length === 1) { code = ' ' + code; } return { raw: code, code: code.trim(), index: code.charAt(0), workingDir: code.charAt(1), handler: exports.StatusSummaryParsers[code.trim()], path: line[3] }; } //# sourceMappingURL=StatusSummary.js.map /***/ }), /***/ 4539: /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); class TagList { constructor(all, latest) { this.all = all; this.latest = latest; } } exports.TagList = TagList; exports.parseTagList = function (data, customSort = false) { const tags = data .split('\n') .map(trimmed) .filter(Boolean); if (!customSort) { tags.sort(function (tagA, tagB) { const partsA = tagA.split('.'); const partsB = tagB.split('.'); if (partsA.length === 1 || partsB.length === 1) { return singleSorted(toNumber(partsA[0]), toNumber(partsB[0])); } for (let i = 0, l = Math.max(partsA.length, partsB.length); i < l; i++) { const diff = sorted(toNumber(partsA[i]), toNumber(partsB[i])); if (diff) { return diff; } } return 0; }); } const latest = customSort ? tags[0] : [...tags].reverse().find((tag) => tag.indexOf('.') >= 0); return new TagList(tags, latest); }; function singleSorted(a, b) { const aIsNum = isNaN(a); const bIsNum = isNaN(b); if (aIsNum !== bIsNum) { return aIsNum ? 1 : -1; } return aIsNum ? sorted(a, b) : 0; } function sorted(a, b) { return a === b ? 0 : a > b ? 1 : -1; } function trimmed(input) { return input.trim(); } function toNumber(input) { if (typeof input === 'string') { return parseInt(input.replace(/^\D+/g, ''), 10) || 0; } return 0; } //# sourceMappingURL=TagList.js.map /***/ }), /***/ 8543: /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", ({ value: true })); const child_process_1 = __webpack_require__(3129); const api_1 = __webpack_require__(4732); const task_1 = __webpack_require__(2815); const tasks_pending_queue_1 = __webpack_require__(6676); const utils_1 = __webpack_require__(847); class GitExecutorChain { constructor(_executor, _scheduler) { this._executor = _executor; this._scheduler = _scheduler; this._chain = Promise.resolve(); this._queue = new tasks_pending_queue_1.TasksPendingQueue(); } get binary() { return this._executor.binary; } get outputHandler() { return this._executor.outputHandler; } get cwd() { return this._executor.cwd; } get env() { return this._executor.env; } push(task) { this._queue.push(task); return this._chain = this._chain.then(() => this.attemptTask(task)); } attemptTask(task) { return __awaiter(this, void 0, void 0, function* () { const onScheduleComplete = yield this._scheduler.next(); const onQueueComplete = () => this._queue.complete(task); try { const { logger } = this._queue.attempt(task); return yield (task_1.isEmptyTask(task) ? this.attemptEmptyTask(task, logger) : this.attemptRemoteTask(task, logger)); } catch (e) { throw this.onFatalException(task, e); } finally { onQueueComplete(); onScheduleComplete(); } }); } onFatalException(task, e) { const gitError = (e instanceof api_1.GitError) ? Object.assign(e, { task }) : new api_1.GitError(task, e && String(e)); this._chain = Promise.resolve(); this._queue.fatal(gitError); return gitError; } attemptRemoteTask(task, logger) { return __awaiter(this, void 0, void 0, function* () { const raw = yield this.gitResponse(this.binary, task.commands, this.outputHandler, logger.step('SPAWN')); const outputStreams = yield this.handleTaskData(task, raw, logger.step('HANDLE')); logger(`passing response to task's parser as a %s`, task.format); if (task_1.isBufferTask(task)) { return utils_1.callTaskParser(task.parser, outputStreams); } return utils_1.callTaskParser(task.parser, outputStreams.asStrings()); }); } attemptEmptyTask(task, logger) { return __awaiter(this, void 0, void 0, function* () { logger(`empty task bypassing child process to call to task's parser`); return task.parser(); }); } handleTaskData({ onError, concatStdErr }, { exitCode, stdOut, stdErr }, logger) { return new Promise((done, fail) => { logger(`Preparing to handle process response exitCode=%d stdOut=`, exitCode); if (exitCode && stdErr.length && onError) { logger.info(`exitCode=%s handling with custom error handler`); logger(`concatenate stdErr to stdOut: %j`, concatStdErr); return onError(exitCode, Buffer.concat([...(concatStdErr ? stdOut : []), ...stdErr]).toString('utf-8'), (result) => { logger.info(`custom error handler treated as success`); logger(`custom error returned a %s`, utils_1.objectToString(result)); done(new utils_1.GitOutputStreams(Buffer.isBuffer(result) ? result : Buffer.from(String(result)), Buffer.concat(stdErr))); }, fail); } if (exitCode && stdErr.length) { logger.info(`exitCode=%s treated as error when then child process has written to stdErr`); return fail(Buffer.concat(stdErr).toString('utf-8')); } if (concatStdErr) { logger(`concatenating stdErr onto stdOut before processing`); logger(`stdErr: $O`, stdErr); stdOut.push(...stdErr); } logger.info(`retrieving task output complete`); done(new utils_1.GitOutputStreams(Buffer.concat(stdOut), Buffer.concat(stdErr))); }); } gitResponse(command, args, outputHandler, logger) { return __awaiter(this, void 0, void 0, function* () { const outputLogger = logger.sibling('output'); const spawnOptions = { cwd: this.cwd, env: this.env, windowsHide: true, }; return new Promise((done) => { const stdOut = []; const stdErr = []; let attempted = false; function attemptClose(exitCode, event = 'retry') { // closing when there is content, terminate immediately if (attempted || stdErr.length || stdOut.length) { logger.info(`exitCode=%s event=%s`, exitCode, event); done({ stdOut, stdErr, exitCode, }); attempted = true; outputLogger.destroy(); } // first attempt at closing but no content yet, wait briefly for the close/exit that may follow if (!attempted) { attempted = true; setTimeout(() => attemptClose(exitCode, 'deferred'), 50); logger('received %s event before content on stdOut/stdErr', event); } } logger.info(`%s %o`, command, args); logger('%O', spawnOptions); const spawned = child_process_1.spawn(command, args, spawnOptions); spawned.stdout.on('data', onDataReceived(stdOut, 'stdOut', logger, outputLogger.step('stdOut'))); spawned.stderr.on('data', onDataReceived(stdErr, 'stdErr', logger, outputLogger.step('stdErr'))); spawned.on('error', onErrorReceived(stdErr, logger)); spawned.on('close', (code) => attemptClose(code, 'close')); spawned.on('exit', (code) => attemptClose(code, 'exit')); if (outputHandler) { logger(`Passing child process stdOut/stdErr to custom outputHandler`); outputHandler(command, spawned.stdout, spawned.stderr, [...args]); } }); }); } } exports.GitExecutorChain = GitExecutorChain; function onErrorReceived(target, logger) { return (err) => { logger(`[ERROR] child process exception %o`, err); target.push(Buffer.from(String(err.stack), 'ascii')); }; } function onDataReceived(target, name, logger, output) { return (buffer) => { logger(`%s received %L bytes`, name, buffer); output(`%B`, buffer); target.push(buffer); }; } //# sourceMappingURL=git-executor-chain.js.map /***/ }), /***/ 4701: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const git_executor_chain_1 = __webpack_require__(8543); class GitExecutor { constructor(binary = 'git', cwd, _scheduler) { this.binary = binary; this.cwd = cwd; this._scheduler = _scheduler; this._chain = new git_executor_chain_1.GitExecutorChain(this, this._scheduler); } chain() { return new git_executor_chain_1.GitExecutorChain(this, this._scheduler); } push(task) { return this._chain.push(task); } } exports.GitExecutor = GitExecutor; //# sourceMappingURL=git-executor.js.map /***/ }), /***/ 941: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const git_response_error_1 = __webpack_require__(5131); const functionNamesBuilderApi = [ 'customBinary', 'env', 'outputHandler', 'silent', ]; const functionNamesPromiseApi = [ 'add', 'addAnnotatedTag', 'addConfig', 'addRemote', 'addTag', 'binaryCatFile', 'branch', 'branchLocal', 'catFile', 'checkIgnore', 'checkIsRepo', 'checkout', 'checkoutBranch', 'checkoutLatestTag', 'checkoutLocalBranch', 'clean', 'clone', 'commit', 'cwd', 'deleteLocalBranch', 'deleteLocalBranches', 'diff', 'diffSummary', 'exec', 'fetch', 'getRemotes', 'init', 'listConfig', 'listRemote', 'log', 'merge', 'mergeFromTo', 'mirror', 'mv', 'pull', 'push', 'pushTags', 'raw', 'rebase', 'remote', 'removeRemote', 'reset', 'revert', 'revparse', 'rm', 'rmKeepLocal', 'show', 'stash', 'stashList', 'status', 'subModule', 'submoduleAdd', 'submoduleInit', 'submoduleUpdate', 'tag', 'tags', 'updateServerInfo' ]; const { gitInstanceFactory } = __webpack_require__(1949); function gitP(...args) { let git; let chain = Promise.resolve(); try { git = gitInstanceFactory(...args); } catch (e) { chain = Promise.reject(e); } function builderReturn() { return promiseApi; } function chainReturn() { return chain; } const promiseApi = [...functionNamesBuilderApi, ...functionNamesPromiseApi].reduce((api, name) => { const isAsync = functionNamesPromiseApi.includes(name); const valid = isAsync ? asyncWrapper(name, git) : syncWrapper(name, git, api); const alternative = isAsync ? chainReturn : builderReturn; Object.defineProperty(api, name, { enumerable: false, configurable: false, value: git ? valid : alternative, }); return api; }, {}); return promiseApi; function asyncWrapper(fn, git) { return function (...args) { if (typeof args[args.length] === 'function') { throw new TypeError('Promise interface requires that handlers are not supplied inline, ' + 'trailing function not allowed in call to ' + fn); } return chain.then(function () { return new Promise(function (resolve, reject) { const callback = (err, result) => { if (err) { return reject(toError(err)); } resolve(result); }; args.push(callback); git[fn].apply(git, args); }); }); }; } function syncWrapper(fn, git, api) { return (...args) => { git[fn](...args); return api; }; } } exports.gitP = gitP; function toError(error) { if (error instanceof Error) { return error; } if (typeof error === 'string') { return new Error(error); } return new git_response_error_1.GitResponseError(error); } //# sourceMappingURL=promise-wrapped.js.map /***/ }), /***/ 3421: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const utils_1 = __webpack_require__(847); const promise_deferred_1 = __webpack_require__(9819); const git_logger_1 = __webpack_require__(7178); const logger = git_logger_1.createLogger('', 'scheduler'); const createScheduledTask = (() => { let id = 0; return () => { id++; const { promise, done } = promise_deferred_1.createDeferred(); return { promise, done, id, }; }; })(); class Scheduler { constructor(concurrency = 2) { this.concurrency = concurrency; this.pending = []; this.running = []; logger(`Constructed, concurrency=%s`, concurrency); } schedule() { if (!this.pending.length || this.running.length >= this.concurrency) { logger(`Schedule attempt ignored, pending=%s running=%s concurrency=%s`, this.pending.length, this.running.length, this.concurrency); return; } const task = utils_1.append(this.running, this.pending.shift()); logger(`Attempting id=%s`, task.id); task.done(() => { logger(`Completing id=`, task.id); utils_1.remove(this.running, task); this.schedule(); }); } next() { const { promise, id } = utils_1.append(this.pending, createScheduledTask()); logger(`Scheduling id=%s`, id); this.schedule(); return promise; } } exports.Scheduler = Scheduler; //# sourceMappingURL=scheduler.js.map /***/ }), /***/ 6676: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const git_logger_1 = __webpack_require__(7178); const api_1 = __webpack_require__(4732); class TasksPendingQueue { constructor(logLabel = 'GitExecutor') { this.logLabel = logLabel; this._queue = new Map(); } withProgress(task) { return this._queue.get(task); } createProgress(task) { const name = TasksPendingQueue.getName(task.commands[0]); const logger = git_logger_1.createLogger(this.logLabel, name); return { task, logger, name, }; } push(task) { const progress = this.createProgress(task); progress.logger('Adding task to the queue, commands = %o', task.commands); this._queue.set(task, progress); return progress; } fatal(err) { for (const [task, { logger }] of Array.from(this._queue.entries())) { if (task === err.task) { logger.info(`Failed %o`, err); logger(`Fatal exception, any as-yet un-started tasks run through this executor will not be attempted`); } else { logger.info(`A fatal exception occurred in a previous task, the queue has been purged: %o`, err.message); } this.complete(task); } if (this._queue.size !== 0) { throw new Error(`Queue size should be zero after fatal: ${this._queue.size}`); } } complete(task) { const progress = this.withProgress(task); if (progress) { progress.logger.destroy(); this._queue.delete(task); } } attempt(task) { const progress = this.withProgress(task); if (!progress) { throw new api_1.GitError(undefined, 'TasksPendingQueue: attempt called for an unknown task'); } progress.logger('Starting task'); return progress; } static getName(name = 'empty') { return `task:${name}:${++TasksPendingQueue.counter}`; } } exports.TasksPendingQueue = TasksPendingQueue; TasksPendingQueue.counter = 0; //# sourceMappingURL=tasks-pending-queue.js.map /***/ }), /***/ 8850: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const api_1 = __webpack_require__(4732); const utils_1 = __webpack_require__(847); function taskCallback(task, response, callback = utils_1.NOOP) { const onSuccess = (data) => { callback(null, data); }; const onError = (err) => { if ((err === null || err === void 0 ? void 0 : err.task) === task) { if (err instanceof api_1.GitResponseError) { return callback(addDeprecationNoticeToError(err)); } callback(err); } }; response.then(onSuccess, onError); } exports.taskCallback = taskCallback; function addDeprecationNoticeToError(err) { let log = (name) => { console.warn(`simple-git deprecation notice: accessing GitResponseError.${name} should be GitResponseError.git.${name}`); log = utils_1.NOOP; }; return Object.create(err, Object.getOwnPropertyNames(err.git).reduce(descriptorReducer, {})); function descriptorReducer(all, name) { if (name in err) { return all; } all[name] = { enumerable: false, configurable: false, get() { log(name); return err.git[name]; }, }; return all; } } //# sourceMappingURL=task-callback.js.map /***/ }), /***/ 17: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const git_response_error_1 = __webpack_require__(5131); const parse_branch_delete_1 = __webpack_require__(6086); const parse_branch_1 = __webpack_require__(9264); function containsDeleteBranchCommand(commands) { const deleteCommands = ['-d', '-D', '--delete']; return commands.some(command => deleteCommands.includes(command)); } exports.containsDeleteBranchCommand = containsDeleteBranchCommand; function branchTask(customArgs) { const isDelete = containsDeleteBranchCommand(customArgs); const commands = ['branch', ...customArgs]; if (commands.length === 1) { commands.push('-a'); } if (!commands.includes('-v')) { commands.splice(1, 0, '-v'); } return { format: 'utf-8', commands, parser(stdOut, stdErr) { if (isDelete) { return parse_branch_delete_1.parseBranchDeletions(stdOut, stdErr).all[0]; } return parse_branch_1.parseBranchSummary(stdOut, stdErr); }, }; } exports.branchTask = branchTask; function branchLocalTask() { return { format: 'utf-8', commands: ['branch', '-v'], parser(stdOut, stdErr) { return parse_branch_1.parseBranchSummary(stdOut, stdErr); }, }; } exports.branchLocalTask = branchLocalTask; function deleteBranchesTask(branches, forceDelete = false) { return { format: 'utf-8', commands: ['branch', '-v', forceDelete ? '-D' : '-d', ...branches], parser(stdOut, stdErr) { return parse_branch_delete_1.parseBranchDeletions(stdOut, stdErr); }, onError(exitCode, error, done, fail) { if (!parse_branch_delete_1.hasBranchDeletionError(error, exitCode)) { return fail(error); } done(error); }, concatStdErr: true, }; } exports.deleteBranchesTask = deleteBranchesTask; function deleteBranchTask(branch, forceDelete = false) { const task = { format: 'utf-8', commands: ['branch', '-v', forceDelete ? '-D' : '-d', branch], parser(stdOut, stdErr) { return parse_branch_delete_1.parseBranchDeletions(stdOut, stdErr).branches[branch]; }, onError(exitCode, error, _, fail) { if (!parse_branch_delete_1.hasBranchDeletionError(error, exitCode)) { return fail(error); } throw new git_response_error_1.GitResponseError(task.parser(error, ''), error); }, concatStdErr: true, }; return task; } exports.deleteBranchTask = deleteBranchTask; //# sourceMappingURL=branch.js.map /***/ }), /***/ 221: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const utils_1 = __webpack_require__(847); var CheckRepoActions; (function (CheckRepoActions) { CheckRepoActions["BARE"] = "bare"; CheckRepoActions["IN_TREE"] = "tree"; CheckRepoActions["IS_REPO_ROOT"] = "root"; })(CheckRepoActions = exports.CheckRepoActions || (exports.CheckRepoActions = {})); const onError = (exitCode, stdErr, done, fail) => { if (exitCode === utils_1.ExitCodes.UNCLEAN && isNotRepoMessage(stdErr)) { return done('false'); } fail(stdErr); }; const parser = (text) => { return text.trim() === 'true'; }; function checkIsRepoTask(action) { switch (action) { case CheckRepoActions.BARE: return checkIsBareRepoTask(); case CheckRepoActions.IS_REPO_ROOT: return checkIsRepoRootTask(); } const commands = ['rev-parse', '--is-inside-work-tree']; return { commands, format: 'utf-8', onError, parser, }; } exports.checkIsRepoTask = checkIsRepoTask; function checkIsRepoRootTask() { const commands = ['rev-parse', '--git-dir']; return { commands, format: 'utf-8', onError, parser(path) { return /^\.(git)?$/.test(path.trim()); }, }; } exports.checkIsRepoRootTask = checkIsRepoRootTask; function checkIsBareRepoTask() { const commands = ['rev-parse', '--is-bare-repository']; return { commands, format: 'utf-8', onError, parser, }; } exports.checkIsBareRepoTask = checkIsBareRepoTask; function isNotRepoMessage(message) { return /(Not a git repository|Kein Git-Repository)/i.test(message); } //# sourceMappingURL=check-is-repo.js.map /***/ }), /***/ 4386: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const CleanSummary_1 = __webpack_require__(5689); const utils_1 = __webpack_require__(847); const task_1 = __webpack_require__(2815); exports.CONFIG_ERROR_INTERACTIVE_MODE = 'Git clean interactive mode is not supported'; exports.CONFIG_ERROR_MODE_REQUIRED = 'Git clean mode parameter ("n" or "f") is required'; exports.CONFIG_ERROR_UNKNOWN_OPTION = 'Git clean unknown option found in: '; /** * All supported option switches available for use in a `git.clean` operation */ var CleanOptions; (function (CleanOptions) { CleanOptions["DRY_RUN"] = "n"; CleanOptions["FORCE"] = "f"; CleanOptions["IGNORED_INCLUDED"] = "x"; CleanOptions["IGNORED_ONLY"] = "X"; CleanOptions["EXCLUDING"] = "e"; CleanOptions["QUIET"] = "q"; CleanOptions["RECURSIVE"] = "d"; })(CleanOptions = exports.CleanOptions || (exports.CleanOptions = {})); const CleanOptionValues = new Set(['i', ...utils_1.asStringArray(Object.values(CleanOptions))]); function cleanWithOptionsTask(mode, customArgs) { const { cleanMode, options, valid } = getCleanOptions(mode); if (!cleanMode) { return task_1.configurationErrorTask(exports.CONFIG_ERROR_MODE_REQUIRED); } if (!valid.options) { return task_1.configurationErrorTask(exports.CONFIG_ERROR_UNKNOWN_OPTION + JSON.stringify(mode)); } options.push(...customArgs); if (options.some(isInteractiveMode)) { return task_1.configurationErrorTask(exports.CONFIG_ERROR_INTERACTIVE_MODE); } return cleanTask(cleanMode, options); } exports.cleanWithOptionsTask = cleanWithOptionsTask; function cleanTask(mode, customArgs) { const commands = ['clean', `-${mode}`, ...customArgs]; return { commands, format: 'utf-8', parser(text) { return CleanSummary_1.cleanSummaryParser(mode === CleanOptions.DRY_RUN, text); } }; } exports.cleanTask = cleanTask; function isCleanOptionsArray(input) { return Array.isArray(input) && input.every(test => CleanOptionValues.has(test)); } exports.isCleanOptionsArray = isCleanOptionsArray; function getCleanOptions(input) { let cleanMode; let options = []; let valid = { cleanMode: false, options: true }; input.replace(/[^a-z]i/g, '').split('').forEach(char => { if (isCleanMode(char)) { cleanMode = char; valid.cleanMode = true; } else { valid.options = valid.options && isKnownOption(options[options.length] = (`-${char}`)); } }); return { cleanMode, options, valid, }; } function isCleanMode(cleanMode) { return cleanMode === CleanOptions.FORCE || cleanMode === CleanOptions.DRY_RUN; } function isKnownOption(option) { return /^-[a-z]$/i.test(option) && CleanOptionValues.has(option.charAt(1)); } function isInteractiveMode(option) { if (/^-[^\-]/.test(option)) { return option.indexOf('i') > 0; } return option === '--interactive'; } //# sourceMappingURL=clean.js.map /***/ }), /***/ 3173: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const task_1 = __webpack_require__(2815); const utils_1 = __webpack_require__(847); function cloneTask(repo, directory, customArgs) { const commands = ['clone', ...customArgs]; if (typeof repo === 'string') { commands.push(repo); } if (typeof directory === 'string') { commands.push(directory); } return task_1.straightThroughStringTask(commands); } exports.cloneTask = cloneTask; function cloneMirrorTask(repo, directory, customArgs) { utils_1.append(customArgs, '--mirror'); return cloneTask(repo, directory, customArgs); } exports.cloneMirrorTask = cloneMirrorTask; //# sourceMappingURL=clone.js.map /***/ }), /***/ 7597: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const ConfigList_1 = __webpack_require__(7219); function addConfigTask(key, value, append = false) { const commands = ['config', '--local']; if (append) { commands.push('--add'); } commands.push(key, value); return { commands, format: 'utf-8', parser(text) { return text; } }; } exports.addConfigTask = addConfigTask; function listConfigTask() { return { commands: ['config', '--list', '--show-origin', '--null'], format: 'utf-8', parser(text) { return ConfigList_1.configListParser(text); }, }; } exports.listConfigTask = listConfigTask; //# sourceMappingURL=config.js.map /***/ }), /***/ 8199: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const task_1 = __webpack_require__(2815); /** * Task used by `git.hashObject` */ function hashObjectTask(filePath, write) { const commands = ['hash-object', filePath]; if (write) { commands.push('-w'); } return task_1.straightThroughStringTask(commands, true); } exports.hashObjectTask = hashObjectTask; //# sourceMappingURL=hash-object.js.map /***/ }), /***/ 6016: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const InitSummary_1 = __webpack_require__(8690); const bareCommand = '--bare'; function hasBareCommand(command) { return command.includes(bareCommand); } function initTask(bare = false, path, customArgs) { const commands = ['init', ...customArgs]; if (bare && !hasBareCommand(commands)) { commands.splice(1, 0, bareCommand); } return { commands, concatStdErr: false, format: 'utf-8', parser(text) { return InitSummary_1.parseInit(commands.includes('--bare'), path, text); } }; } exports.initTask = initTask; //# sourceMappingURL=init.js.map /***/ }), /***/ 8829: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const api_1 = __webpack_require__(4732); const parse_merge_1 = __webpack_require__(6412); const task_1 = __webpack_require__(2815); function mergeTask(customArgs) { if (!customArgs.length) { return task_1.configurationErrorTask('Git.merge requires at least one option'); } return { commands: ['merge', ...customArgs], format: 'utf-8', parser(stdOut, stdErr) { const merge = parse_merge_1.parseMergeResult(stdOut, stdErr); if (merge.failed) { throw new api_1.GitResponseError(merge); } return merge; } }; } exports.mergeTask = mergeTask; //# sourceMappingURL=merge.js.map /***/ }), /***/ 6520: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const parse_move_1 = __webpack_require__(7444); const utils_1 = __webpack_require__(847); function moveTask(from, to) { return { commands: ['mv', '-v', ...utils_1.asArray(from), to], format: 'utf-8', parser(stdOut, stdErr) { return parse_move_1.parseMoveResult(stdOut, stdErr); } }; } exports.moveTask = moveTask; //# sourceMappingURL=move.js.map /***/ }), /***/ 4636: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const parse_pull_1 = __webpack_require__(5658); function pullTask(remote, branch, customArgs) { const commands = ['pull', ...customArgs]; if (remote && branch) { commands.splice(1, 0, remote, branch); } return { commands, format: 'utf-8', parser(stdOut, stdErr) { return parse_pull_1.parsePullResult(stdOut, stdErr); } }; } exports.pullTask = pullTask; //# sourceMappingURL=pull.js.map /***/ }), /***/ 1435: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const parse_push_1 = __webpack_require__(8530); const utils_1 = __webpack_require__(847); function pushTagsTask(ref = {}, customArgs) { utils_1.append(customArgs, '--tags'); return pushTask(ref, customArgs); } exports.pushTagsTask = pushTagsTask; function pushTask(ref = {}, customArgs) { const commands = ['push', ...customArgs]; if (ref.branch) { commands.splice(1, 0, ref.branch); } if (ref.remote) { commands.splice(1, 0, ref.remote); } utils_1.remove(commands, '-v'); utils_1.append(commands, '--verbose'); utils_1.append(commands, '--porcelain'); return { commands, format: 'utf-8', parser: parse_push_1.parsePushResult, }; } exports.pushTask = pushTask; //# sourceMappingURL=push.js.map /***/ }), /***/ 9866: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const task_1 = __webpack_require__(2815); const GetRemoteSummary_1 = __webpack_require__(9999); function addRemoteTask(remoteName, remoteRepo, customArgs = []) { return task_1.straightThroughStringTask(['remote', 'add', ...customArgs, remoteName, remoteRepo]); } exports.addRemoteTask = addRemoteTask; function getRemotesTask(verbose) { const commands = ['remote']; if (verbose) { commands.push('-v'); } return { commands, format: 'utf-8', parser: verbose ? GetRemoteSummary_1.parseGetRemotesVerbose : GetRemoteSummary_1.parseGetRemotes, }; } exports.getRemotesTask = getRemotesTask; function listRemotesTask(customArgs = []) { const commands = [...customArgs]; if (commands[0] !== 'ls-remote') { commands.unshift('ls-remote'); } return task_1.straightThroughStringTask(commands); } exports.listRemotesTask = listRemotesTask; function remoteTask(customArgs = []) { const commands = [...customArgs]; if (commands[0] !== 'remote') { commands.unshift('remote'); } return task_1.straightThroughStringTask(commands); } exports.remoteTask = remoteTask; function removeRemoteTask(remoteName) { return task_1.straightThroughStringTask(['remote', 'remove', remoteName]); } exports.removeRemoteTask = removeRemoteTask; //# sourceMappingURL=remote.js.map /***/ }), /***/ 2377: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const task_1 = __webpack_require__(2815); var ResetMode; (function (ResetMode) { ResetMode["MIXED"] = "mixed"; ResetMode["SOFT"] = "soft"; ResetMode["HARD"] = "hard"; ResetMode["MERGE"] = "merge"; ResetMode["KEEP"] = "keep"; })(ResetMode = exports.ResetMode || (exports.ResetMode = {})); const ResetModes = Array.from(Object.values(ResetMode)); function resetTask(mode, customArgs) { const commands = ['reset']; if (isValidResetMode(mode)) { commands.push(`--${mode}`); } commands.push(...customArgs); return task_1.straightThroughStringTask(commands); } exports.resetTask = resetTask; function getResetMode(mode) { if (isValidResetMode(mode)) { return mode; } switch (typeof mode) { case 'string': case 'undefined': return ResetMode.SOFT; } return; } exports.getResetMode = getResetMode; function isValidResetMode(mode) { return ResetModes.includes(mode); } //# sourceMappingURL=reset.js.map /***/ }), /***/ 9197: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const StatusSummary_1 = __webpack_require__(6790); function statusTask(customArgs) { return { format: 'utf-8', commands: ['status', '--porcelain', '-b', '-u', ...customArgs], parser(text) { return StatusSummary_1.parseStatusSummary(text); } }; } exports.statusTask = statusTask; //# sourceMappingURL=status.js.map /***/ }), /***/ 8772: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const task_1 = __webpack_require__(2815); function addSubModuleTask(repo, path) { return subModuleTask(['add', repo, path]); } exports.addSubModuleTask = addSubModuleTask; function initSubModuleTask(customArgs) { return subModuleTask(['init', ...customArgs]); } exports.initSubModuleTask = initSubModuleTask; function subModuleTask(customArgs) { const commands = [...customArgs]; if (commands[0] !== 'submodule') { commands.unshift('submodule'); } return task_1.straightThroughStringTask(commands); } exports.subModuleTask = subModuleTask; function updateSubModuleTask(customArgs) { return subModuleTask(['update', ...customArgs]); } exports.updateSubModuleTask = updateSubModuleTask; //# sourceMappingURL=sub-module.js.map /***/ }), /***/ 8540: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const TagList_1 = __webpack_require__(4539); /** * Task used by `git.tags` */ function tagListTask(customArgs = []) { const hasCustomSort = customArgs.some((option) => /^--sort=/.test(option)); return { format: 'utf-8', commands: ['tag', '-l', ...customArgs], parser(text) { return TagList_1.parseTagList(text, hasCustomSort); }, }; } exports.tagListTask = tagListTask; /** * Task used by `git.addTag` */ function addTagTask(name) { return { format: 'utf-8', commands: ['tag', name], parser() { return { name }; } }; } exports.addTagTask = addTagTask; /** * Task used by `git.addTag` */ function addAnnotatedTagTask(name, tagMessage) { return { format: 'utf-8', commands: ['tag', '-a', '-m', tagMessage, name], parser() { return { name }; } }; } exports.addAnnotatedTagTask = addAnnotatedTagTask; //# sourceMappingURL=tag.js.map /***/ }), /***/ 2815: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const task_configuration_error_1 = __webpack_require__(740); exports.EMPTY_COMMANDS = []; function adhocExecTask(parser) { return { commands: exports.EMPTY_COMMANDS, format: 'utf-8', parser, }; } exports.adhocExecTask = adhocExecTask; function configurationErrorTask(error) { return { commands: exports.EMPTY_COMMANDS, format: 'utf-8', parser() { throw typeof error === 'string' ? new task_configuration_error_1.TaskConfigurationError(error) : error; } }; } exports.configurationErrorTask = configurationErrorTask; function straightThroughStringTask(commands, trimmed = false) { return { commands, format: 'utf-8', parser(text) { return trimmed ? String(text).trim() : text; }, }; } exports.straightThroughStringTask = straightThroughStringTask; function isBufferTask(task) { return task.format === 'buffer'; } exports.isBufferTask = isBufferTask; function isEmptyTask(task) { return !task.commands.length; } exports.isEmptyTask = isEmptyTask; //# sourceMappingURL=task.js.map /***/ }), /***/ 7366: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const util_1 = __webpack_require__(3518); function filterType(input, filter, def) { if (filter(input)) { return input; } return (arguments.length > 2) ? def : undefined; } exports.filterType = filterType; exports.filterArray = (input) => { return Array.isArray(input); }; function filterPrimitives(input, omit) { return /number|string|boolean/.test(typeof input) && (!omit || !omit.includes((typeof input))); } exports.filterPrimitives = filterPrimitives; exports.filterString = (input) => { return typeof input === 'string'; }; function filterPlainObject(input) { return !!input && util_1.objectToString(input) === '[object Object]'; } exports.filterPlainObject = filterPlainObject; function filterFunction(input) { return typeof input === 'function'; } exports.filterFunction = filterFunction; exports.filterHasLength = (input) => { if (input == null || 'number|boolean|function'.includes(typeof input)) { return false; } return Array.isArray(input) || typeof input === 'string' || typeof input.length === 'number'; }; //# sourceMappingURL=argument-filters.js.map /***/ }), /***/ 2185: /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); /** * Known process exit codes used by the task parsers to determine whether an error * was one they can automatically handle */ var ExitCodes; (function (ExitCodes) { ExitCodes[ExitCodes["SUCCESS"] = 0] = "SUCCESS"; ExitCodes[ExitCodes["ERROR"] = 1] = "ERROR"; ExitCodes[ExitCodes["UNCLEAN"] = 128] = "UNCLEAN"; })(ExitCodes = exports.ExitCodes || (exports.ExitCodes = {})); //# sourceMappingURL=exit-codes.js.map /***/ }), /***/ 6578: /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); class GitOutputStreams { constructor(stdOut, stdErr) { this.stdOut = stdOut; this.stdErr = stdErr; } asStrings() { return new GitOutputStreams(this.stdOut.toString('utf8'), this.stdErr.toString('utf8')); } } exports.GitOutputStreams = GitOutputStreams; //# sourceMappingURL=git-output-streams.js.map /***/ }), /***/ 847: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; function __export(m) { for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } Object.defineProperty(exports, "__esModule", ({ value: true })); __export(__webpack_require__(7366)); __export(__webpack_require__(2185)); __export(__webpack_require__(6578)); __export(__webpack_require__(9536)); __export(__webpack_require__(5218)); __export(__webpack_require__(3546)); __export(__webpack_require__(1351)); __export(__webpack_require__(3518)); //# sourceMappingURL=index.js.map /***/ }), /***/ 9536: /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); class LineParser { constructor(regExp, useMatches) { this.matches = []; this.parse = (line, target) => { this.resetMatches(); if (!this._regExp.every((reg, index) => this.addMatch(reg, index, line(index)))) { return false; } return this.useMatches(target, this.prepareMatches()) !== false; }; this._regExp = Array.isArray(regExp) ? regExp : [regExp]; if (useMatches) { this.useMatches = useMatches; } } // @ts-ignore useMatches(target, match) { throw new Error(`LineParser:useMatches not implemented`); } resetMatches() { this.matches.length = 0; } prepareMatches() { return this.matches; } addMatch(reg, index, line) { const matched = line && reg.exec(line); if (matched) { this.pushMatch(index, matched); } return !!matched; } pushMatch(_index, matched) { this.matches.push(...matched.slice(1)); } } exports.LineParser = LineParser; class RemoteLineParser extends LineParser { addMatch(reg, index, line) { return /^remote:\s/.test(String(line)) && super.addMatch(reg, index, line); } pushMatch(index, matched) { if (index > 0 || matched.length > 1) { super.pushMatch(index, matched); } } } exports.RemoteLineParser = RemoteLineParser; //# sourceMappingURL=line-parser.js.map /***/ }), /***/ 5218: /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const defaultOptions = { binary: 'git', maxConcurrentProcesses: 5, }; function createInstanceConfig(...options) { const baseDir = process.cwd(); const config = Object.assign(Object.assign({ baseDir }, defaultOptions), ...(options.filter(o => typeof o === 'object' && o))); config.baseDir = config.baseDir || baseDir; return config; } exports.createInstanceConfig = createInstanceConfig; //# sourceMappingURL=simple-git-options.js.map /***/ }), /***/ 3546: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const argument_filters_1 = __webpack_require__(7366); const util_1 = __webpack_require__(3518); function appendTaskOptions(options, commands = []) { if (!argument_filters_1.filterPlainObject(options)) { return commands; } return Object.keys(options).reduce((commands, key) => { const value = options[key]; if (argument_filters_1.filterPrimitives(value, ['boolean'])) { commands.push(key + '=' + value); } else { commands.push(key); } return commands; }, commands); } exports.appendTaskOptions = appendTaskOptions; function getTrailingOptions(args, initialPrimitive = 0, objectOnly = false) { const command = []; for (let i = 0, max = initialPrimitive < 0 ? args.length : initialPrimitive; i < max; i++) { if ('string|number'.includes(typeof args[i])) { command.push(String(args[i])); } } appendTaskOptions(trailingOptionsArgument(args), command); if (!objectOnly) { command.push(...trailingArrayArgument(args)); } return command; } exports.getTrailingOptions = getTrailingOptions; function trailingArrayArgument(args) { const hasTrailingCallback = typeof util_1.last(args) === 'function'; return argument_filters_1.filterType(util_1.last(args, hasTrailingCallback ? 1 : 0), argument_filters_1.filterArray, []); } /** * Given any number of arguments, returns the trailing options argument, ignoring a trailing function argument * if there is one. When not found, the return value is null. */ function trailingOptionsArgument(args) { const hasTrailingCallback = argument_filters_1.filterFunction(util_1.last(args)); return argument_filters_1.filterType(util_1.last(args, hasTrailingCallback ? 1 : 0), argument_filters_1.filterPlainObject); } exports.trailingOptionsArgument = trailingOptionsArgument; /** * Returns either the source argument when it is a `Function`, or the default * `NOOP` function constant */ function trailingFunctionArgument(args, includeNoop = true) { const callback = util_1.asFunction(util_1.last(args)); return includeNoop || util_1.isUserFunction(callback) ? callback : undefined; } exports.trailingFunctionArgument = trailingFunctionArgument; //# sourceMappingURL=task-options.js.map /***/ }), /***/ 1351: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const util_1 = __webpack_require__(3518); function callTaskParser(parser, streams) { return parser(streams.stdOut, streams.stdErr); } exports.callTaskParser = callTaskParser; function parseStringResponse(result, parsers, text) { for (let lines = util_1.toLinesWithContent(text), i = 0, max = lines.length; i < max; i++) { const line = (offset = 0) => { if ((i + offset) >= max) { return; } return lines[i + offset]; }; parsers.some(({ parse }) => parse(line, result)); } return result; } exports.parseStringResponse = parseStringResponse; //# sourceMappingURL=task-parser.js.map /***/ }), /***/ 3518: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const file_exists_1 = __webpack_require__(4751); exports.NOOP = () => { }; /** * Returns either the source argument when it is a `Function`, or the default * `NOOP` function constant */ function asFunction(source) { return typeof source === 'function' ? source : exports.NOOP; } exports.asFunction = asFunction; /** * Determines whether the supplied argument is both a function, and is not * the `NOOP` function. */ function isUserFunction(source) { return (typeof source === 'function' && source !== exports.NOOP); } exports.isUserFunction = isUserFunction; function splitOn(input, char) { const index = input.indexOf(char); if (index <= 0) { return [input, '']; } return [ input.substr(0, index), input.substr(index + 1), ]; } exports.splitOn = splitOn; function first(input, offset = 0) { return isArrayLike(input) && input.length > offset ? input[offset] : undefined; } exports.first = first; function last(input, offset = 0) { if (isArrayLike(input) && input.length > offset) { return input[input.length - 1 - offset]; } } exports.last = last; function isArrayLike(input) { return !!(input && typeof input.length === 'number'); } function toLinesWithContent(input, trimmed = true) { return input.split('\n') .reduce((output, line) => { const lineContent = trimmed ? line.trim() : line; if (lineContent) { output.push(lineContent); } return output; }, []); } exports.toLinesWithContent = toLinesWithContent; function forEachLineWithContent(input, callback) { return toLinesWithContent(input, true).map(line => callback(line)); } exports.forEachLineWithContent = forEachLineWithContent; function folderExists(path) { return file_exists_1.exists(path, file_exists_1.FOLDER); } exports.folderExists = folderExists; /** * Adds `item` into the `target` `Array` or `Set` when it is not already present. */ function append(target, item) { if (Array.isArray(target)) { if (!target.includes(item)) { target.push(item); } } else { target.add(item); } return item; } exports.append = append; function remove(target, item) { if (Array.isArray(target)) { const index = target.indexOf(item); if (index >= 0) { target.splice(index, 1); } } else { target.delete(item); } return item; } exports.remove = remove; exports.objectToString = Object.prototype.toString.call.bind(Object.prototype.toString); function asArray(source) { return Array.isArray(source) ? source : [source]; } exports.asArray = asArray; function asStringArray(source) { return asArray(source).map(String); } exports.asStringArray = asStringArray; function asNumber(source, onNaN = 0) { if (source == null) { return onNaN; } const num = parseInt(source, 10); return isNaN(num) ? onNaN : num; } exports.asNumber = asNumber; //# sourceMappingURL=util.js.map /***/ }), /***/ 921: /***/ ((module) => { module.exports = CommitSummary; function CommitSummary () { this.branch = ''; this.commit = ''; this.summary = { changes: 0, insertions: 0, deletions: 0 }; this.author = null; } var COMMIT_BRANCH_MESSAGE_REGEX = /\[([^\s]+) ([^\]]+)/; var COMMIT_AUTHOR_MESSAGE_REGEX = /\s*Author:\s(.+)/i; function setBranchFromCommit (commitSummary, commitData) { if (commitData) { commitSummary.branch = commitData[1]; commitSummary.commit = commitData[2]; } } function setSummaryFromCommit (commitSummary, commitData) { if (commitSummary.branch && commitData) { commitSummary.summary.changes = parseInt(commitData[1], 10) || 0; commitSummary.summary.insertions = parseInt(commitData[2], 10) || 0; commitSummary.summary.deletions = parseInt(commitData[3], 10) || 0; } } function setAuthorFromCommit (commitSummary, commitData) { var parts = commitData[1].split('<'); var email = parts.pop(); if (email.indexOf('@') <= 0) { return; } commitSummary.author = { email: email.substr(0, email.length - 1), name: parts.join('<').trim() }; } CommitSummary.parse = function (commit) { var lines = commit.trim().split('\n'); var commitSummary = new CommitSummary(); setBranchFromCommit(commitSummary, COMMIT_BRANCH_MESSAGE_REGEX.exec(lines.shift())); if (COMMIT_AUTHOR_MESSAGE_REGEX.test(lines[0])) { setAuthorFromCommit(commitSummary, COMMIT_AUTHOR_MESSAGE_REGEX.exec(lines.shift())); } setSummaryFromCommit(commitSummary, /(\d+)[^,]*(?:,\s*(\d+)[^,]*)?(?:,\s*(\d+))?/g.exec(lines.shift())); return commitSummary; }; /***/ }), /***/ 7286: /***/ ((module) => { module.exports = DiffSummary; /** * The DiffSummary is returned as a response to getting `git().status()` * * @constructor */ function DiffSummary () { this.files = []; this.insertions = 0; this.deletions = 0; this.changed = 0; } /** * Number of lines added * @type {number} */ DiffSummary.prototype.insertions = 0; /** * Number of lines deleted * @type {number} */ DiffSummary.prototype.deletions = 0; /** * Number of files changed * @type {number} */ DiffSummary.prototype.changed = 0; DiffSummary.parse = function (text) { var line, handler; var lines = text.trim().split('\n'); var status = new DiffSummary(); var summary = lines.pop(); if (summary) { summary.trim().split(', ').forEach(function (text) { var summary = /(\d+)\s([a-z]+)/.exec(text); if (!summary) { return; } if (/files?/.test(summary[2])) { status.changed = parseInt(summary[1], 10); } else { status[summary[2].replace(/s$/, '') + 's'] = parseInt(summary[1], 10); } }); } while (line = lines.shift()) { textFileChange(line, status.files) || binaryFileChange(line, status.files); } return status; }; function textFileChange (line, files) { line = line.trim().match(/^(.+)\s+\|\s+(\d+)(\s+[+\-]+)?$/); if (line) { var alterations = (line[3] || '').trim(); files.push({ file: line[1].trim(), changes: parseInt(line[2], 10), insertions: alterations.replace(/-/g, '').length, deletions: alterations.replace(/\+/g, '').length, binary: false }); return true; } } function binaryFileChange (line, files) { line = line.match(/^(.+) \|\s+Bin ([0-9.]+) -> ([0-9.]+) ([a-z]+)$/); if (line) { files.push({ file: line[1].trim(), before: +line[2], after: +line[3], binary: true }); return true; } } /***/ }), /***/ 5169: /***/ ((module) => { "use strict"; function FetchSummary (raw) { this.raw = raw; this.remote = null; this.branches = []; this.tags = []; } FetchSummary.parsers = [ [ /From (.+)$/, function (fetchSummary, matches) { fetchSummary.remote = matches[0]; } ], [ /\* \[new branch\]\s+(\S+)\s*\-> (.+)$/, function (fetchSummary, matches) { fetchSummary.branches.push({ name: matches[0], tracking: matches[1] }); } ], [ /\* \[new tag\]\s+(\S+)\s*\-> (.+)$/, function (fetchSummary, matches) { fetchSummary.tags.push({ name: matches[0], tracking: matches[1] }); } ] ]; FetchSummary.parse = function (data) { var fetchSummary = new FetchSummary(data); String(data) .trim() .split('\n') .forEach(function (line) { var original = line.trim(); FetchSummary.parsers.some(function (parser) { var parsed = parser[0].exec(original); if (parsed) { parser[1](fetchSummary, parsed.slice(1)); return true; } }); }); return fetchSummary; }; module.exports = FetchSummary; /***/ }), /***/ 6507: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { module.exports = ListLogSummary; var DiffSummary = __webpack_require__(7286); /** * The ListLogSummary is returned as a response to getting `git().log()` or `git().stashList()` * * @constructor */ function ListLogSummary (all) { this.all = all; this.latest = all.length && all[0] || null; this.total = all.length; } /** * Detail for each of the log lines * @type {ListLogLine[]} */ ListLogSummary.prototype.all = null; /** * Most recent entry in the log * @type {ListLogLine} */ ListLogSummary.prototype.latest = null; /** * Number of items in the log * @type {number} */ ListLogSummary.prototype.total = 0; function ListLogLine (line, fields) { for (var k = 0; k < fields.length; k++) { this[fields[k]] = line[k] || ''; } } /** * When the log was generated with a summary, the `diff` property contains as much detail * as was provided in the log (whether generated with `--stat` or `--shortstat`. * @type {DiffSummary} */ ListLogLine.prototype.diff = null; ListLogSummary.START_BOUNDARY = 'òòòòòò '; ListLogSummary.COMMIT_BOUNDARY = ' òò'; ListLogSummary.SPLITTER = ' ò '; ListLogSummary.parse = function (text, splitter, fields) { fields = fields || ['hash', 'date', 'message', 'refs', 'author_name', 'author_email']; return new ListLogSummary( text .trim() .split(ListLogSummary.START_BOUNDARY) .filter(function(item) { return !!item.trim(); }) .map(function (item) { var lineDetail = item.trim().split(ListLogSummary.COMMIT_BOUNDARY); var listLogLine = new ListLogLine(lineDetail[0].trim().split(splitter), fields); if (lineDetail.length > 1 && !!lineDetail[1].trim()) { listLogLine.diff = DiffSummary.parse(lineDetail[1]); } return listLogLine; }) ); }; /***/ }), /***/ 5301: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { module.exports = { CommitSummary: __webpack_require__(921), DiffSummary: __webpack_require__(7286), FetchSummary: __webpack_require__(5169), ListLogSummary: __webpack_require__(6507), }; /***/ }), /***/ 9318: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; const os = __webpack_require__(2087); const hasFlag = __webpack_require__(1621); const env = process.env; let forceColor; if (hasFlag('no-color') || hasFlag('no-colors') || hasFlag('color=false')) { forceColor = false; } else if (hasFlag('color') || hasFlag('colors') || hasFlag('color=true') || hasFlag('color=always')) { forceColor = true; } if ('FORCE_COLOR' in env) { forceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0; } function translateLevel(level) { if (level === 0) { return false; } return { level, hasBasic: true, has256: level >= 2, has16m: level >= 3 }; } function supportsColor(stream) { if (forceColor === false) { return 0; } if (hasFlag('color=16m') || hasFlag('color=full') || hasFlag('color=truecolor')) { return 3; } if (hasFlag('color=256')) { return 2; } if (stream && !stream.isTTY && forceColor !== true) { return 0; } const min = forceColor ? 1 : 0; if (process.platform === 'win32') { // Node.js 7.5.0 is the first version of Node.js to include a patch to // libuv that enables 256 color output on Windows. Anything earlier and it // won't work. However, here we target Node.js 8 at minimum as it is an LTS // release, and Node.js 7 is not. Windows 10 build 10586 is the first Windows // release that supports 256 colors. Windows 10 build 14931 is the first release // that supports 16m/TrueColor. const osRelease = os.release().split('.'); if ( Number(process.versions.node.split('.')[0]) >= 8 && Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586 ) { return Number(osRelease[2]) >= 14931 ? 3 : 2; } return 1; } if ('CI' in env) { if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(sign => sign in env) || env.CI_NAME === 'codeship') { return 1; } return min; } if ('TEAMCITY_VERSION' in env) { return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; } if (env.COLORTERM === 'truecolor') { return 3; } if ('TERM_PROGRAM' in env) { const version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10); switch (env.TERM_PROGRAM) { case 'iTerm.app': return version >= 3 ? 3 : 2; case 'Apple_Terminal': return 2; // No default } } if (/-256(color)?$/i.test(env.TERM)) { return 2; } if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { return 1; } if ('COLORTERM' in env) { return 1; } if (env.TERM === 'dumb') { return min; } return min; } function getSupportLevel(stream) { const level = supportsColor(stream); return translateLevel(level); } module.exports = { supportsColor: getSupportLevel, stdout: getSupportLevel(process.stdout), stderr: getSupportLevel(process.stderr) }; /***/ }), /***/ 399: /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", ({ value: true })); const core_1 = __webpack_require__(2186); const axios_1 = __importDefault(__webpack_require__(6545)); const path_1 = __importDefault(__webpack_require__(5622)); const simple_git_1 = __importDefault(__webpack_require__(1477)); const util_1 = __webpack_require__(2629); const baseDir = path_1.default.join(process.cwd(), util_1.getInput('cwd') || ''); const git = simple_git_1.default({ baseDir }); console.log(`Running in ${baseDir}`); (() => __awaiter(void 0, void 0, void 0, function* () { yield checkInputs().catch(core_1.setFailed); core_1.startGroup('Internal logs'); core_1.info('> Staging files...'); if (util_1.getInput('add')) { core_1.info('> Adding files...'); yield add(); } else core_1.info('> No files to add.'); if (util_1.getInput('remove')) { core_1.info('> Removing files...'); yield remove(); } else core_1.info('> No files to remove.'); core_1.info('> Checking for uncommitted changes in the git working tree...'); const changedFiles = (yield git.diffSummary(['--cached'])).files.length; if (changedFiles > 0) { core_1.info(`> Found ${changedFiles} changed files.`); yield git .addConfig('user.email', util_1.getInput('author_email'), undefined, util_1.log) .addConfig('user.name', util_1.getInput('author_name'), undefined, util_1.log); core_1.debug('> Current git config\n' + JSON.stringify((yield git.listConfig()).all, null, 2)); yield git.fetch(['--tags', '--force'], util_1.log); core_1.info('> Switching/creating branch...'); yield git .checkout(util_1.getInput('branch'), undefined, util_1.log) .catch(() => git.checkoutLocalBranch(util_1.getInput('branch'), util_1.log)); core_1.info('> Pulling from remote...'); yield git.fetch(undefined, util_1.log).pull(undefined, undefined, { [util_1.getInput('pull_strategy')]: null }, util_1.log); core_1.info('> Re-staging files...'); if (util_1.getInput('add')) yield add({ ignoreErrors: true }); if (util_1.getInput('remove')) yield remove({ ignoreErrors: true }); core_1.info('> Creating commit...'); yield git.commit(util_1.getInput('message'), undefined, Object.assign({ '--author': `"${util_1.getInput('author_name')} <${util_1.getInput('author_email')}>"` }, (util_1.getInput('signoff') ? { '--signoff': null } : {})), (err, data) => { if (data) util_1.setOutput('committed', 'true'); return util_1.log(err, data); }); if (util_1.getInput('tag')) { core_1.info('> Tagging commit...'); yield git.tag(util_1.getInput('tag').split(' '), (err, data) => { if (data) util_1.setOutput('tagged', 'true'); return util_1.log(err, data); }); } else core_1.info('> No tag info provided.'); if (util_1.getInput('push')) { core_1.info('> Pushing commit to repo...'); yield git.push('origin', util_1.getInput('branch'), { '--set-upstream': null }, (err, data) => { if (data) util_1.setOutput('pushed', 'true'); return util_1.log(err, data); }); if (util_1.getInput('tag')) { core_1.info('> Pushing tags to repo...'); yield git .pushTags('origin', (e, d) => util_1.log(undefined, e || d)) .catch(() => { core_1.info('> Tag push failed: deleting remote tag and re-pushing...'); return git .push(undefined, undefined, { '--delete': null, origin: null, [util_1.getInput('tag') .split(' ') .filter((w) => !w.startsWith('-'))[0]]: null }, util_1.log) .pushTags('origin', util_1.log); }); } else core_1.info('> No tags to push.'); } else core_1.info('> Not pushing anything.'); core_1.endGroup(); core_1.info('> Task completed.'); } else { core_1.endGroup(); core_1.info('> Working tree clean. Nothing to commit.'); } }))() .then(logOutputs) .catch((e) => { core_1.endGroup(); logOutputs(); core_1.setFailed(e); }); function checkInputs() { var _a, _b, _c, _d, _e, _f, _g, _h, _j; return __awaiter(this, void 0, void 0, function* () { function setInput(input, value) { if (value) return (process.env[`INPUT_${input.toUpperCase()}`] = value); else return delete process.env[`INPUT_${input.toUpperCase()}`]; } function setDefault(input, value) { if (!util_1.getInput(input)) setInput(input, value); return util_1.getInput(input); } const eventPath = process.env.GITHUB_EVENT_PATH, event = eventPath && require(eventPath), token = process.env.GITHUB_TOKEN, isPR = (_a = process.env.GITHUB_EVENT_NAME) === null || _a === void 0 ? void 0 : _a.includes('pull_request'), sha = (((_c = (_b = event === null || event === void 0 ? void 0 : event.pull_request) === null || _b === void 0 ? void 0 : _b.head) === null || _c === void 0 ? void 0 : _c.sha) || process.env.GITHUB_SHA), defaultBranch = isPR ? (_e = (_d = event === null || event === void 0 ? void 0 : event.pull_request) === null || _d === void 0 ? void 0 : _d.head) === null || _e === void 0 ? void 0 : _e.ref : (_f = process.env.GITHUB_REF) === null || _f === void 0 ? void 0 : _f.substring(11); // #region GITHUB_TOKEN if (!token) core_1.warning('The GITHUB_TOKEN env variable is missing: the action may not work as expected.'); // #endregion // #region add, remove if (!util_1.getInput('add') && !util_1.getInput('remove')) throw new Error("Both 'add' and 'remove' are empty, the action has nothing to do."); // #endregion // #region author_name, author_email let author = (_g = event === null || event === void 0 ? void 0 : event.head_commit) === null || _g === void 0 ? void 0 : _g.author; if (sha && !author) { core_1.info('> Unable to get commit from workflow event: trying with the GitHub API...'); // https://docs.github.com/en/rest/reference/repos#get-a-commit--code-samples const url = `https://api.github.com/repos/${process.env.GITHUB_REPOSITORY}/commits/${sha}`, headers = token ? { Authorization: `Bearer ${token}` } : undefined, commit = (_h = (yield axios_1.default.get(url, { headers }).catch((err) => { core_1.startGroup('Request error:'); core_1.info(`> Request URL: ${url}\b${err}`); core_1.endGroup(); return undefined; }))) === null || _h === void 0 ? void 0 : _h.data; author = (_j = commit === null || commit === void 0 ? void 0 : commit.commit) === null || _j === void 0 ? void 0 : _j.author; } if (author) { setDefault('author_name', author.name); setDefault('author_email', author.email); } if (!util_1.getInput('author_name') || !util_1.getInput('author_email')) { const reason = !eventPath ? 'event path' : isPR ? sha ? 'fetch commit' : 'find commit sha' : !(event === null || event === void 0 ? void 0 : event.head_commit) ? 'find commit' : 'find commit author'; core_1.warning(`Unable to fetch author info: couldn't ${reason}.`); setDefault('author_name', 'Add & Commit Action'); setDefault('author_email', 'actions@github.com'); } core_1.info(`> Using '${util_1.getInput('author_name')} <${util_1.getInput('author_email')}>' as author.`); // #endregion // #region message setDefault('message', `Commit from GitHub Actions (${process.env.GITHUB_WORKFLOW})`); core_1.info(`> Using "${util_1.getInput('message')}" as commit message.`); // #endregion // #region branch const branch = setDefault('branch', defaultBranch || ''); if (isPR) core_1.info(`> Running for a PR, the action will use '${branch}' as ref.`); // #endregion // #region signoff if (util_1.getInput('signoff')) { const parsed = util_1.parseBool(util_1.getInput('signoff')); if (parsed === undefined) throw new Error(`"${util_1.getInput('signoff')}" is not a valid value for the 'signoff' input: only "true" and "false" are allowed.`); if (!parsed) setInput('signoff', undefined); core_1.debug(`Current signoff option: ${util_1.getInput('signoff')} (${typeof util_1.getInput('signoff')})`); } // #endregion // #region push setDefault('push', 'true'); if (util_1.getInput('push')) { // It's just to scope the parsed constant const parsed = util_1.parseBool(util_1.getInput('push')); if (parsed === undefined) throw new Error(`"${util_1.getInput('push')}" is not a valid value for the 'push' input: only "true" and "false" are allowed.`); if (!parsed) setInput('push', undefined); core_1.debug(`Current push option: ${util_1.getInput('push')} (${typeof util_1.getInput('push')})`); } }); } function add({ logWarning = true, ignoreErrors = false } = {}) { if (util_1.getInput('add')) return git .add(util_1.getInput('add').split(' '), (e, d) => util_1.log(ignoreErrors ? null : e, d)) .catch((e) => { if (ignoreErrors) return; if (e.message.includes('fatal: pathspec') && e.message.includes('did not match any files')) logWarning && core_1.warning('Add command did not match any file.'); else throw e; }); } function remove({ logWarning = true, ignoreErrors = false } = {}) { if (util_1.getInput('remove')) return git .rm(util_1.getInput('remove').split(' '), (e, d) => util_1.log(ignoreErrors ? null : e, d)) .catch((e) => { if (ignoreErrors) return; if (e.message.includes('fatal: pathspec') && e.message.includes('did not match any files')) logWarning && core_1.warning('Remove command did not match any file.'); else throw e; }); } function logOutputs() { core_1.startGroup('Outputs'); for (const key in util_1.outputs) { core_1.info(`${key}: ${util_1.outputs[key]}`); } core_1.endGroup(); } /***/ }), /***/ 2629: /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.setOutput = exports.parseBool = exports.log = exports.getInput = exports.outputs = void 0; const core = __importStar(__webpack_require__(2186)); exports.outputs = { committed: 'false', pushed: 'false', tagged: 'false' }; function getInput(name) { return core.getInput(name); } exports.getInput = getInput; function log(err, data) { if (data) console.log(data); if (err) core.error(err); } exports.log = log; function parseBool(value) { try { const parsed = JSON.parse(value); if (typeof parsed == 'boolean') return parsed; } catch (_a) { } } exports.parseBool = parseBool; function setOutput(name, value) { core.debug(`Setting output: ${name}=${value}`); return core.setOutput(name, value); } exports.setOutput = setOutput; for (const key in exports.outputs) setOutput(key, exports.outputs[key]); /***/ }), /***/ 696: /***/ ((module) => { "use strict"; module.exports = JSON.parse("{\"_args\":[[\"axios@0.21.0\",\"/home/runner/work/add-and-commit/add-and-commit\"]],\"_from\":\"axios@0.21.0\",\"_id\":\"axios@0.21.0\",\"_inBundle\":false,\"_integrity\":\"sha512-fmkJBknJKoZwem3/IKSSLpkdNXZeBu5Q7GA/aRsr2btgrptmSCxi2oFjZHqGdK9DoTil9PIHlPIZw2EcRJXRvw==\",\"_location\":\"/axios\",\"_phantomChildren\":{},\"_requested\":{\"type\":\"version\",\"registry\":true,\"raw\":\"axios@0.21.0\",\"name\":\"axios\",\"escapedName\":\"axios\",\"rawSpec\":\"0.21.0\",\"saveSpec\":null,\"fetchSpec\":\"0.21.0\"},\"_requiredBy\":[\"/\"],\"_resolved\":\"https://registry.npmjs.org/axios/-/axios-0.21.0.tgz\",\"_spec\":\"0.21.0\",\"_where\":\"/home/runner/work/add-and-commit/add-and-commit\",\"author\":{\"name\":\"Matt Zabriskie\"},\"browser\":{\"./lib/adapters/http.js\":\"./lib/adapters/xhr.js\"},\"bugs\":{\"url\":\"https://github.com/axios/axios/issues\"},\"bundlesize\":[{\"path\":\"./dist/axios.min.js\",\"threshold\":\"5kB\"}],\"dependencies\":{\"follow-redirects\":\"^1.10.0\"},\"description\":\"Promise based HTTP client for the browser and node.js\",\"devDependencies\":{\"bundlesize\":\"^0.17.0\",\"coveralls\":\"^3.0.0\",\"es6-promise\":\"^4.2.4\",\"grunt\":\"^1.0.2\",\"grunt-banner\":\"^0.6.0\",\"grunt-cli\":\"^1.2.0\",\"grunt-contrib-clean\":\"^1.1.0\",\"grunt-contrib-watch\":\"^1.0.0\",\"grunt-eslint\":\"^20.1.0\",\"grunt-karma\":\"^2.0.0\",\"grunt-mocha-test\":\"^0.13.3\",\"grunt-ts\":\"^6.0.0-beta.19\",\"grunt-webpack\":\"^1.0.18\",\"istanbul-instrumenter-loader\":\"^1.0.0\",\"jasmine-core\":\"^2.4.1\",\"karma\":\"^1.3.0\",\"karma-chrome-launcher\":\"^2.2.0\",\"karma-coverage\":\"^1.1.1\",\"karma-firefox-launcher\":\"^1.1.0\",\"karma-jasmine\":\"^1.1.1\",\"karma-jasmine-ajax\":\"^0.1.13\",\"karma-opera-launcher\":\"^1.0.0\",\"karma-safari-launcher\":\"^1.0.0\",\"karma-sauce-launcher\":\"^1.2.0\",\"karma-sinon\":\"^1.0.5\",\"karma-sourcemap-loader\":\"^0.3.7\",\"karma-webpack\":\"^1.7.0\",\"load-grunt-tasks\":\"^3.5.2\",\"minimist\":\"^1.2.0\",\"mocha\":\"^5.2.0\",\"sinon\":\"^4.5.0\",\"typescript\":\"^2.8.1\",\"url-search-params\":\"^0.10.0\",\"webpack\":\"^1.13.1\",\"webpack-dev-server\":\"^1.14.1\"},\"homepage\":\"https://github.com/axios/axios\",\"jsdelivr\":\"dist/axios.min.js\",\"keywords\":[\"xhr\",\"http\",\"ajax\",\"promise\",\"node\"],\"license\":\"MIT\",\"main\":\"index.js\",\"name\":\"axios\",\"repository\":{\"type\":\"git\",\"url\":\"git+https://github.com/axios/axios.git\"},\"scripts\":{\"build\":\"NODE_ENV=production grunt build\",\"coveralls\":\"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js\",\"examples\":\"node ./examples/server.js\",\"fix\":\"eslint --fix lib/**/*.js\",\"postversion\":\"git push && git push --tags\",\"preversion\":\"npm test\",\"start\":\"node ./sandbox/server.js\",\"test\":\"grunt test && bundlesize\",\"version\":\"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json\"},\"typings\":\"./index.d.ts\",\"unpkg\":\"dist/axios.min.js\",\"version\":\"0.21.0\"}"); /***/ }), /***/ 2357: /***/ ((module) => { "use strict"; module.exports = require("assert");; /***/ }), /***/ 3129: /***/ ((module) => { "use strict"; module.exports = require("child_process");; /***/ }), /***/ 5747: /***/ ((module) => { "use strict"; module.exports = require("fs");; /***/ }), /***/ 8605: /***/ ((module) => { "use strict"; module.exports = require("http");; /***/ }), /***/ 7211: /***/ ((module) => { "use strict"; module.exports = require("https");; /***/ }), /***/ 2087: /***/ ((module) => { "use strict"; module.exports = require("os");; /***/ }), /***/ 5622: /***/ ((module) => { "use strict"; module.exports = require("path");; /***/ }), /***/ 2413: /***/ ((module) => { "use strict"; module.exports = require("stream");; /***/ }), /***/ 3867: /***/ ((module) => { "use strict"; module.exports = require("tty");; /***/ }), /***/ 8835: /***/ ((module) => { "use strict"; module.exports = require("url");; /***/ }), /***/ 1669: /***/ ((module) => { "use strict"; module.exports = require("util");; /***/ }), /***/ 8761: /***/ ((module) => { "use strict"; module.exports = require("zlib");; /***/ }) /******/ }); /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ if(__webpack_module_cache__[moduleId]) { /******/ return __webpack_module_cache__[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = __webpack_module_cache__[moduleId] = { /******/ // no module.id needed /******/ // no module.loaded needed /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ var threw = true; /******/ try { /******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ threw = false; /******/ } finally { /******/ if(threw) delete __webpack_module_cache__[moduleId]; /******/ } /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /************************************************************************/ /******/ /* webpack/runtime/compat */ /******/ /******/ __webpack_require__.ab = __dirname + "/";/************************************************************************/ /******/ // module exports must be returned from runtime so entry inlining is disabled /******/ // startup /******/ // Load entry module and return exports /******/ return __webpack_require__(399); /******/ })() ;