[2023-02-26 17:10:27.284] [info] IPCAction.GET_CONFIG [2023-02-26 17:25:21.388] [info] IPCAction.GET_CONFIG [2023-02-26 17:25:26.938] [error] Error occurred in handler for 'CHECK_INTEGRATION': { message: 'connect ECONNREFUSED 127.0.0.1:50080', name: 'Error', stack: 'Error: connect ECONNREFUSED 127.0.0.1:50080\n' + ' at AxiosError.from (C:\\Users\\MyUserName\\AppData\\Local\\Programs\\live-comment-viewer\\resources\\app.asar\\node_modules\\axios\\dist\\node\\axios.cjs:725:14)\n' + ' at RedirectableRequest.handleRequestError (C:\\Users\\MyUserName\\AppData\\Local\\Programs\\live-comment-viewer\\resources\\app.asar\\node_modules\\axios\\dist\\node\\axios.cjs:2467:25)\n' + ' at RedirectableRequest.emit (node:events:513:28)\n' + ' at eventHandlers. (C:\\Users\\MyUserName\\AppData\\Local\\Programs\\live-comment-viewer\\resources\\app.asar\\node_modules\\follow-redirects\\index.js:14:24)\n' + ' at ClientRequest.emit (node:events:513:28)\n' + ' at Socket.socketErrorListener (node:_http_client:481:9)\n' + ' at Socket.emit (node:events:513:28)\n' + ' at emitErrorNT (node:internal/streams/destroy:157:8)\n' + ' at emitErrorCloseNT (node:internal/streams/destroy:122:3)\n' + ' at process.processTicksAndRejections (node:internal/process/task_queues:83:21)', config: { transitional: { silentJSONParsing: true, forcedJSONParsing: true, clarifyTimeoutError: false }, adapter: '[function] function httpAdapter(config) {\n' + ' return new Promise(function dispatchHttpRequest(resolvePromise, rejectPromise) {\n' + ' let data = config.data;\n' + ' const responseType = config.responseType;\n' + ' const responseEncoding = config.responseEncoding;\n' + ' const method = config.method.toUpperCase();\n' + ' let isFinished;\n' + ' let isDone;\n' + ' let rejected = false;\n' + ' let req;\n' + '\n' + ' // temporary internal emitter until the AxiosRequest class will be implemented\n' + ' const emitter = new EventEmitter__default["default"]();\n' + '\n' + ' function onFinished() {\n' + ' if (isFinished) return;\n' + ' isFinished = true;\n' + '\n' + ' if (config.cancelToken) {\n' + ' config.cancelToken.unsubscribe(abort);\n' + ' }\n' + '\n' + ' if (config.signal) {\n' + " config.signal.removeEventListener('abort', abort);\n" + ' }\n' + '\n' + ' emitter.removeAllListeners();\n' + ' }\n' + '\n' + ' function done(value, isRejected) {\n' + ' if (isDone) return;\n' + '\n' + ' isDone = true;\n' + '\n' + ' if (isRejected) {\n' + ' rejected = true;\n' + ' onFinished();\n' + ' }\n' + '\n' + ' isRejected ? rejectPromise(value) : resolvePromise(value);\n' + ' }\n' + '\n' + ' const resolve = function resolve(value) {\n' + ' done(value);\n' + ' };\n' + '\n' + ' const reject = function reject(value) {\n' + ' done(value, true);\n' + ' };\n' + '\n' + ' function abort(reason) {\n' + " emitter.emit('abort', !reason || reason.type ? new CanceledError(null, config, req) : reason);\n" + ' }\n' + '\n' + " emitter.once('abort', reject);\n" + '\n' + ' if (config.cancelToken || config.signal) {\n' + ' config.cancelToken && config.cancelToken.subscribe(abort);\n' + ' if (config.signal) {\n' + " config.signal.aborted ? abort() : config.signal.addEventListener('abort', abort);\n" + ' }\n' + ' }\n' + '\n' + ' // Parse url\n' + ' const fullPath = buildFullPath(config.baseURL, config.url);\n' + ' const parsed = new URL(fullPath);\n' + ' const protocol = parsed.protocol || supportedProtocols[0];\n' + '\n' + " if (protocol === 'data:') {\n" + ' let convertedData;\n' + '\n' + " if (method !== 'GET') {\n" + ' return settle(resolve, reject, {\n' + ' status: 405,\n' + " statusText: 'method not allowed',\n" + ' headers: {},\n' + ' config\n' + ' });\n' + ' }\n' + '\n' + ' try {\n' + " convertedData = fromDataURI(config.url, responseType === 'blob', {\n" + ' Blob: config.env && config.env.Blob\n' + ' });\n' + ' } catch (err) {\n' + ' throw AxiosError.from(err, AxiosError.ERR_BAD_REQUEST, config);\n' + ' }\n' + '\n' + " if (responseType === 'text') {\n" + ' convertedData = convertedData.toString(responseEncoding);\n' + '\n' + " if (!responseEncoding || responseEncoding === 'utf8') {\n" + ' data = utils.stripBOM(convertedData);\n' + ' }\n' + " } else if (responseType === 'stream') {\n" + ' convertedData = stream__default["default"].Readable.from(convertedData);\n' + ' }\n' + '\n' + ' return settle(resolve, reject, {\n' + ' data: convertedData,\n' + ' status: 200,\n' + " statusText: 'OK',\n" + ' headers: {},\n' + ' config\n' + ' });\n' + ' }\n' + '\n' + ' if (supportedProtocols.indexOf(protocol) === -1) {\n' + ' return reject(new AxiosError(\n' + " 'Unsupported protocol ' + protocol,\n" + ' AxiosError.ERR_BAD_REQUEST,\n' + ' config\n' + ' ));\n' + ' }\n' + '\n' + ' const headers = AxiosHeaders.from(config.headers).normalize();\n' + '\n' + ' // Set User-Agent (required by some servers)\n' + ' // See https://github.com/axios/axios/issues/69\n' + ' // User-Agent is specified; handle case where no UA header is desired\n' + " // Only set header if it hasn't been set in config\n" + " headers.set('User-Agent', 'axios/' + VERSION, false);\n" + '\n' + ' const onDownloadProgress = config.onDownloadProgress;\n' + ' const onUploadProgress = config.onUploadProgress;\n' + ' const maxRate = config.maxRate;\n' + ' let maxUploadRate = undefined;\n' + ' let maxDownloadRate = undefined;\n' + '\n' + ' // support for https://www.npmjs.com/package/form-data api\n' + ' if (utils.isFormData(data) && utils.isFunction(data.getHeaders)) {\n' + ' headers.set(data.getHeaders());\n' + ' } else if (data && !utils.isStream(data)) {\n' + ' if (Buffer.isBuffer(data)) ; else if (utils.isArrayBuffer(data)) {\n' + ' data = Buffer.from(new Uint8Array(data));\n' + ' } else if (utils.isString(data)) {\n' + " data = Buffer.from(data, 'utf-8');\n" + ' } else {\n' + ' return reject(new AxiosError(\n' + " 'Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream',\n" + ' AxiosError.ERR_BAD_REQUEST,\n' + ' config\n' + ' ));\n' + ' }\n' + '\n' + ' // Add Content-Length header if data exists\n' + " headers.set('Content-Length', data.length, false);\n" + '\n' + ' if (config.maxBodyLength > -1 && data.length > config.maxBodyLength) {\n' + ' return reject(new AxiosError(\n' + " 'Request body larger than maxBodyLength limit',\n" + ' AxiosError.ERR_BAD_REQUEST,\n' + ' config\n' + ' ));\n' + ' }\n' + ' }\n' + '\n' + ' const contentLength = +headers.getContentLength();\n' + '\n' + ' if (utils.isArray(maxRate)) {\n' + ' maxUploadRate = maxRate[0];\n' + ' maxDownloadRate = maxRate[1];\n' + ' } else {\n' + ' maxUploadRate = maxDownloadRate = maxRate;\n' + ' }\n' + '\n' + ' if (data && (onUploadProgress || maxUploadRate)) {\n' + ' if (!utils.isStream(data)) {\n' + ' data = stream__default["default"].Readable.from(data, {objectMode: false});\n' + ' }\n' + '\n' + ' data = stream__default["default"].pipeline([data, new AxiosTransformStream({\n' + ' length: utils.toFiniteNumber(contentLength),\n' + ' maxRate: utils.toFiniteNumber(maxUploadRate)\n' + ' })], utils.noop);\n' + '\n' + " onUploadProgress && data.on('progress', progress => {\n" + ' onUploadProgress(Object.assign(progress, {\n' + ' upload: true\n' + ' }));\n' + ' });\n' + ' }\n' + '\n' + ' // HTTP basic authentication\n' + ' let auth = undefined;\n' + ' if (config.auth) {\n' + " const username = config.auth.username || '';\n" + " const password = config.auth.password || '';\n" + " auth = username + ':' + password;\n" + ' }\n' + '\n' + ' if (!auth && parsed.username) {\n' + ' const urlUsername = parsed.username;\n' + ' const urlPassword = parsed.password;\n' + " auth = urlUsername + ':' + urlPassword;\n" + ' }\n' + '\n' + " auth && headers.delete('authorization');\n" + '\n' + ' let path;\n' + '\n' + ' try {\n' + ' path = buildURL(\n' + ' parsed.pathname + parsed.search,\n' + ' config.params,\n' + ' config.paramsSerializer\n' + " ).replace(/^\\?/, '');\n" + ' } catch (err) {\n' + ' const customErr = new Error(err.message);\n' + ' customErr.config = config;\n' + ' customErr.url = config.url;\n' + ' customErr.exists = true;\n' + ' return reject(customErr);\n' + ' }\n' + '\n' + " headers.set('Accept-Encoding', 'gzip, deflate, br', false);\n" + '\n' + ' const options = {\n' + ' path,\n' + ' method: method,\n' + ' headers: headers.toJSON(),\n' + ' agents: { http: config.httpAgent, https: config.httpsAgent },\n' + ' auth,\n' + ' protocol,\n' + ' beforeRedirect: dispatchBeforeRedirect,\n' + ' beforeRedirects: {}\n' + ' };\n' + '\n' + ' if (config.socketPath) {\n' + ' options.socketPath = config.socketPath;\n' + ' } else {\n' + ' options.hostname = parsed.hostname;\n' + ' options.port = parsed.port;\n' + " setProxy(options, config.proxy, protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path);\n" + ' }\n' + '\n' + ' let transport;\n' + ' const isHttpsRequest = isHttps.test(options.protocol);\n' + ' options.agent = isHttpsRequest ? config.httpsAgent : config.httpAgent;\n' + ' if (config.transport) {\n' + ' transport = config.transport;\n' + ' } else if (config.maxRedirects === 0) {\n' + ' transport = isHttpsRequest ? https__default["default"] : http__default["default"];\n' + ' } else {\n' + ' if (config.maxRedirects) {\n' + ' options.maxRedirects = config.maxRedirects;\n' + ' }\n' + ' if (config.beforeRedirect) {\n' + ' options.beforeRedirects.config = config.beforeRedirect;\n' + ' }\n' + ' transport = isHttpsRequest ? httpsFollow : httpFollow;\n' + ' }\n' + '\n' + ' if (config.maxBodyLength > -1) {\n' + ' options.maxBodyLength = config.maxBodyLength;\n' + ' } else {\n' + ' // follow-redirects does not skip comparison, so it should always succeed for axios -1 unlimited\n' + ' options.maxBodyLength = Infinity;\n' + ' }\n' + '\n' + ' if (config.insecureHTTPParser) {\n' + ' options.insecureHTTPParser = config.insecureHTTPParser;\n' + ' }\n' + '\n' + ' // Create the request\n' + ' req = transport.request(options, function handleResponse(res) {\n' + ' if (req.destroyed) return;\n' + '\n' + ' const streams = [res];\n' + '\n' + ' // uncompress the response body transparently if required\n' + ' let responseStream = res;\n' + '\n' + ' // return the last request in case of redirects\n' + ' const lastRequest = res.req || req;\n' + '\n' + ' // if decompress disabled we should not decompress\n' + ' if (config.decompress !== false) {\n' + ' // if no content, but headers still say that it is encoded,\n' + ' // remove the header not confuse downstream operations\n' + " if (data && data.length === 0 && res.headers['content-encoding']) {\n" + " delete res.headers['content-encoding'];\n" + ' }\n' + '\n' + " switch (res.headers['content-encoding']) {\n" + ' /*eslint default-case:0*/\n' + " case 'gzip':\n" + " case 'compress':\n" + " case 'deflate':\n" + ' // add the unzipper to the body stream processing pipeline\n' + ' streams.push(zlib__default["default"].createUnzip());\n' + '\n' + ' // remove the content-encoding in order to not confuse downstream operations\n' + " delete res.headers['content-encoding'];\n" + ' break;\n' + " case 'br':\n" + ' if (isBrotliSupported) {\n' + ' streams.push(zlib__default["default"].createBrotliDecompress());\n' + " delete res.headers['content-encoding'];\n" + ' }\n' + ' }\n' + ' }\n' + '\n' + ' if (onDownloadProgress) {\n' + " const responseLength = +res.headers['content-length'];\n" + '\n' + ' const transformStream = new AxiosTransformStream({\n' + ' length: utils.toFiniteNumber(responseLength),\n' + ' maxRate: utils.toFiniteNumber(maxDownloadRate)\n' + ' });\n' + '\n' + " onDownloadProgress && transformStream.on('progress', progress => {\n" + ' onDownloadProgress(Object.assign(progress, {\n' + ' download: true\n' + ' }));\n' + ' });\n' + '\n' + ' streams.push(transformStream);\n' + ' }\n' + '\n' + ' responseStream = streams.length > 1 ? stream__default["default"].pipeline(streams, utils.noop) : streams[0];\n' + '\n' + ' const offListeners = stream__default["default"].finished(responseStream, () => {\n' + ' offListene'... 5411 more characters, transformRequest: [ '[function] function transformRequest(data, headers) {\n' + " const contentType = headers.getContentType() || '';\n" + " const hasJSONContentType = contentType.indexOf('application/json') > -1;\n" + ' const isObjectPayload = utils.isObject(data);\n' + '\n' + ' if (isObjectPayload && utils.isHTMLForm(data)) {\n' + ' data = new FormData(data);\n' + ' }\n' + '\n' + ' const isFormData = utils.isFormData(data);\n' + '\n' + ' if (isFormData) {\n' + ' if (!hasJSONContentType) {\n' + ' return data;\n' + ' }\n' + ' return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n' + ' }\n' + '\n' + ' if (utils.isArrayBuffer(data) ||\n' + ' utils.isBuffer(data) ||\n' + ' utils.isStream(data) ||\n' + ' utils.isFile(data) ||\n' + ' utils.isBlob(data)\n' + ' ) {\n' + ' return data;\n' + ' }\n' + ' if (utils.isArrayBufferView(data)) {\n' + ' return data.buffer;\n' + ' }\n' + ' if (utils.isURLSearchParams(data)) {\n' + " headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n" + ' return data.toString();\n' + ' }\n' + '\n' + ' let isFileList;\n' + '\n' + ' if (isObjectPayload) {\n' + " if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n" + ' return toURLEncodedForm(data, this.formSerializer).toString();\n' + ' }\n' + '\n' + " if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n" + ' const _FormData = this.env && this.env.FormData;\n' + '\n' + ' return toFormData(\n' + " isFileList ? {'files[]': data} : data,\n" + ' _FormData && new _FormData(),\n' + ' this.formSerializer\n' + ' );\n' + ' }\n' + ' }\n' + '\n' + ' if (isObjectPayload || hasJSONContentType ) {\n' + " headers.setContentType('application/json', false);\n" + ' return stringifySafely(data);\n' + ' }\n' + '\n' + ' return data;\n' + ' }' ], transformResponse: [ '[function] function transformResponse(data) {\n' + ' const transitional = this.transitional || defaults.transitional;\n' + ' const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n' + " const JSONRequested = this.responseType === 'json';\n" + '\n' + ' if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n' + ' const silentJSONParsing = transitional && transitional.silentJSONParsing;\n' + ' const strictJSONParsing = !silentJSONParsing && JSONRequested;\n' + '\n' + ' try {\n' + ' return JSON.parse(data);\n' + ' } catch (e) {\n' + ' if (strictJSONParsing) {\n' + " if (e.name === 'SyntaxError') {\n" + ' throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n' + ' }\n' + ' throw e;\n' + ' }\n' + ' }\n' + ' }\n' + '\n' + ' return data;\n' + ' }' ], timeout: 0, xsrfCookieName: 'XSRF-TOKEN', xsrfHeaderName: 'X-XSRF-TOKEN', maxContentLength: -1, maxBodyLength: -1, env: { FormData: '[function] function FormData(options) {\n' + ' if (!(this instanceof FormData)) {\n' + ' return new FormData(options);\n' + ' }\n' + '\n' + ' this._overheadLength = 0;\n' + ' this._valueLength = 0;\n' + ' this._valuesToMeasure = [];\n' + '\n' + ' CombinedStream.call(this);\n' + '\n' + ' options = options || {};\n' + ' for (var option in options) {\n' + ' this[option] = options[option];\n' + ' }\n' + '}', Blob: null }, validateStatus: '[function] function validateStatus(status) {\n' + ' return status >= 200 && status < 300;\n' + ' }', headers: { Accept: 'application/json, text/plain, */*', 'User-Agent': 'axios/1.1.3', 'Accept-Encoding': 'gzip, deflate, br' }, method: 'get', url: 'http://localhost:50080/talk?text=%E6%8E%A5%E7%B6%9A%E3%83%86%E3%82%B9%E3%83%88' }, code: 'ECONNREFUSED', status: null } [2023-02-26 17:26:32.407] [info] IPCAction.GET_CONFIG