@cloudbase/cloudbase-mcp
Version:
腾讯云开发 MCP Server,通过AI提示词和MCP协议+云开发,让开发更智能、更高效,当你在Cursor/ VSCode GitHub Copilot/WinSurf/CodeBuddy/Augment Code/Claude Code等AI编程工具里写代码时,它能自动帮你生成可直接部署的前后端应用+小程序,并一键发布到腾讯云开发 CloudBase。
1,581 lines (1,433 loc) • 10 MB
JavaScript
/******/ (() => { // webpackBootstrap
/******/ var __webpack_modules__ = ({
/***/ 71:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
/**
* node-crc32-stream
*
* Copyright (c) 2014 Chris Talkington, contributors.
* Licensed under the MIT license.
* https://github.com/archiverjs/node-crc32-stream/blob/master/LICENSE-MIT
*/
module.exports = {
CRC32Stream: __webpack_require__(35485),
DeflateCRC32Stream: __webpack_require__(40951)
}
/***/ }),
/***/ 85:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var util = __webpack_require__(28354);
var PassThrough = __webpack_require__(28768);
module.exports = {
Readable: Readable,
Writable: Writable
};
util.inherits(Readable, PassThrough);
util.inherits(Writable, PassThrough);
// Patch the given method of instance so that the callback
// is executed once, before the actual method is called the
// first time.
function beforeFirstCall(instance, method, callback) {
instance[method] = function() {
delete instance[method];
callback.apply(this, arguments);
return this[method].apply(this, arguments);
};
}
function Readable(fn, options) {
if (!(this instanceof Readable))
return new Readable(fn, options);
PassThrough.call(this, options);
beforeFirstCall(this, '_read', function() {
var source = fn.call(this, options);
var emit = this.emit.bind(this, 'error');
source.on('error', emit);
source.pipe(this);
});
this.emit('readable');
}
function Writable(fn, options) {
if (!(this instanceof Writable))
return new Writable(fn, options);
PassThrough.call(this, options);
beforeFirstCall(this, '_write', function() {
var destination = fn.call(this, options);
var emit = this.emit.bind(this, 'error');
destination.on('error', emit);
this.pipe(destination);
});
this.emit('writable');
}
/***/ }),
/***/ 95:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.CloudRunService = void 0;
exports.codeToZip = codeToZip;
exports.parseObjectToDiffConfigItem = parseObjectToDiffConfigItem;
const archiver_1 = __importDefault(__webpack_require__(99133));
const fs_extra_1 = __webpack_require__(21605);
const path_1 = __importDefault(__webpack_require__(39902));
const utils_1 = __webpack_require__(62358);
/**
* 云托管服务管理类
* 提供云托管服务的初始化、下载、列表查询和删除等功能
*/
class CloudRunService {
constructor(environment) {
this.environment = environment;
this.tcbrService = new utils_1.CloudService(environment.cloudBaseContext, 'tcbr', '2022-02-17');
this.tcbService = new utils_1.CloudService(environment.cloudBaseContext, 'tcb', '2018-06-08');
}
/**
* 初始化云托管代码项目
* @param {Object} params 初始化参数
* @param {string} params.serverName 服务名称,将作为项目目录名
* @param {string} [params.template='helloworld'] 模板标识符,默认为'helloworld'
* @param {string} [params.targetPath='.'] 目标路径,默认为当前目录
* @returns {Promise<void>}
* @throws 当模板不存在、下载失败或解压失败时抛出错误
*/
async init(params) {
const { serverName, template = 'helloworld', targetPath = '.' } = params || {};
// 1. 获取模板列表
const templates = await this.getTemplates();
const templateData = templates.find(item => item.identifier === template);
if (!templateData || !templateData.zipFileStore) {
throw new Error(`未找到匹配的模板: ${template}`);
}
// 2. 下载并解压模板到目标目录
const downloadUrl = templateData.zipFileStore;
const projectDir = path_1.default.resolve(targetPath, serverName);
await (0, utils_1.downloadAndExtractRemoteZip)(downloadUrl, projectDir);
return { projectDir };
}
/**
* 下载云托管服务代码到本地目录
* @param {Object} params 下载参数
* @param {string} params.serverName 要下载的服务名称
* @param {string} params.targetPath 下载的目标路径(绝对路径或相对路径)
* @returns {Promise<void>}
* @throws 当以下情况发生时抛出错误:
* - 未找到服务版本
* - 获取下载地址失败
* - 下载或解压过程中出错
*/
async download(params) {
var _a, _b;
const envConfig = this.environment.lazyEnvironmentConfig;
const { serverName, targetPath } = params;
/**
* 获取最新版本
*/
const cloudRunServerDetailRes = await this.detail({ serverName });
const version = (_b = (_a = cloudRunServerDetailRes.OnlineVersionInfos) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.VersionName;
if (!version) {
throw new Error('未找到云托管服务版本');
}
/**
* 获取下载地址
*/
const cloudBaseBuildServiceRes = await this.tcbService.request('DescribeCloudBaseBuildService', {
EnvId: envConfig.EnvId,
ServiceName: serverName,
ServiceVersion: version
});
if (cloudBaseBuildServiceRes === null || cloudBaseBuildServiceRes === void 0 ? void 0 : cloudBaseBuildServiceRes.DownloadUrl) {
await (0, utils_1.downloadAndExtractRemoteZip)(cloudBaseBuildServiceRes === null || cloudBaseBuildServiceRes === void 0 ? void 0 : cloudBaseBuildServiceRes.DownloadUrl, path_1.default.resolve(targetPath));
}
else {
throw new Error(`云托管代码下载地址为空(请求ID: ${cloudBaseBuildServiceRes.RequestId})`);
}
}
/**
* 获取云托管服务列表
* @param {Object} [params] 查询参数
* @param {number} [params.pageSize] 每页数量
* @param {number} [params.pageNum] 页码
* @param {string} [params.serverName] 服务名称筛选
* @param {string} [params.serverType] 服务类型筛选
* @returns {Promise<ICloudrunListResponse>} 包含服务列表和总数等信息的响应对象
*/
async list(params) {
const envConfig = this.environment.lazyEnvironmentConfig;
return this.tcbrService.request('DescribeCloudRunServers', Object.assign({ EnvId: envConfig.EnvId }, {
PageSize: (params === null || params === void 0 ? void 0 : params.pageSize) || 10,
PageNum: (params === null || params === void 0 ? void 0 : params.pageNum) || 1,
ServerName: params === null || params === void 0 ? void 0 : params.serverName,
ServerType: params === null || params === void 0 ? void 0 : params.serverType
}));
}
/**
*查询云托管服务详情
* @param {Object} params 查询参数
* @param {string} params.serverName 要查询的服务名称
* @returns {Promise<ICloudrunDetailResponse>} 返回服务详情响应对象
*/
async detail(params) {
const envConfig = this.environment.lazyEnvironmentConfig;
return this.tcbrService.request('DescribeCloudRunServerDetail', {
EnvId: envConfig.EnvId,
ServerName: params.serverName
});
}
/**
* 删除指定的云托管服务
* @param {string} serverName - 要删除的服务名称,必须是在当前环境中已存在的服务
* @returns {Promise<IResponseInfo>} 返回删除操作的响应信息
*/
async delete(params) {
// 获取当前环境配置(包含EnvId)
const envConfig = this.environment.lazyEnvironmentConfig;
// 调用TCBR服务的DeleteCloudRunServer接口执行删除
return this.tcbrService.request('DeleteCloudRunServer', {
EnvId: envConfig.EnvId, // 环境ID
ServerName: params.serverName // 要删除的服务名称
});
}
/**
* 本地代码部署云托管服务
* @param {Object} params 部署参数
* @param {string} params.serverName 要部署的服务名称
* @param {string} params.targetPath 本地代码路径
* @param {Object} [params.serverConfig] 服务配置项(可选)
* @param {string[]} [params.serverConfig.OpenAccessTypes] 开放访问类型
* @param {number} [params.serverConfig.Cpu] CPU规格
* @param {number} [params.serverConfig.Mem] 内存规格
* @param {number} [params.serverConfig.MinNum] 最小实例数
* @param {number} [params.serverConfig.MaxNum] 最大实例数
* @param {Object} [params.serverConfig.PolicyDetails] 策略详情
* @param {Object} [params.serverConfig.CustomLogs] 自定义日志配置
* @param {Object} [params.serverConfig.EnvParams] 环境变量参数
* @param {number} [params.serverConfig.Port] 端口(函数型服务不允许设置)
* @param {string} [params.serverConfig.Dockerfile] Dockerfile路径
* @param {string} [params.serverConfig.BuildDir] 构建目录
* @param {boolean} [params.serverConfig.InternalAccess] 是否开启内网访问
* @param {string} [params.serverConfig.InternalDomain] 内网域名
* @param {string} [params.serverConfig.EntryPoint] 入口文件
* @param {string} [params.serverConfig.Cmd] 启动命令
* @returns {Promise<IResponseInfo>} 返回部署操作的响应信息
*/
async deploy(params) {
const { serverName, targetPath = process.cwd(), serverConfig } = params;
/**
* 参数校验和默认值设置
*/
if (!serverName) {
throw new Error('Missing required parameters: serviceName');
}
// 获取当前环境配置(包含EnvId)
const envConfig = this.environment.lazyEnvironmentConfig;
/**
* 获取部署包上传信息
*/
const { UploadUrl: uploadUrl, UploadHeaders: uploadHeaders, PackageName: packageName, PackageVersion: packageVersion } = await this.tcbService.request('DescribeCloudBaseBuildService', {
EnvId: envConfig.EnvId,
ServiceName: serverName
});
const deployInfo = {
DeployType: 'package',
PackageName: packageName,
PackageVersion: packageVersion
};
/**
* 上传部署包
*/
const zipFile = await codeToZip(targetPath, { installDependency: (serverConfig === null || serverConfig === void 0 ? void 0 : serverConfig.InstallDependency) !== undefined ? serverConfig.InstallDependency : true });
await (0, utils_1.upload)({
url: uploadUrl,
file: zipFile,
headers: (uploadHeaders || []).reduce((map, item) => {
map[item.Key] = item.Value;
return map;
}, {}) || {},
method: 'PUT'
});
/**
* 执行部署
*/
if (await this._checkFunctionExist(serverName)) {
// 更新
const serverDetail = await this.detail({ serverName });
const _serverConfig = Object.assign(Object.assign(Object.assign({}, serverConfig), { OpenAccessTypes: ['OA', 'PUBLIC', 'MINIAPP'] }), ((serverDetail === null || serverDetail === void 0 ? void 0 : serverDetail.ServerConfig.Tag) === 'function:' ? { Port: 3000 } : {}) // 函数型不能指定端口,需要固定为3000
);
if ((serverDetail === null || serverDetail === void 0 ? void 0 : serverDetail.ServerConfig.Tag) === 'function:') {
deployInfo.BuildPacks = {
LanguageVersion: '20.18',
RepoLanguage: 'Node.js'
};
}
deployInfo.ReleaseType = 'FULL';
return this._upsertFunction(false, {
name: serverName,
deployInfo,
serverConfig: _serverConfig
});
}
else {
// 创建
/**
* 判断是容器器还是函数型
*/
let type = 'function';
if (serverConfig === null || serverConfig === void 0 ? void 0 : serverConfig.Dockerfile) {
type = 'container';
}
else {
if (await (0, fs_extra_1.pathExists)(path_1.default.join(targetPath, 'Dockerfile'))) {
type = 'container';
}
}
if (type === 'function') {
deployInfo.BuildPacks = {
LanguageVersion: '20.18',
RepoLanguage: 'Node.js'
};
}
const _serverConfig = Object.assign(Object.assign(Object.assign({ OpenAccessTypes: ['OA', 'PUBLIC', 'MINIAPP'],
// Cpu: 0,
// Mem: 0,
MinNum: 0,
// MaxNum: 0,
// PolicyDetails: [],
EnvParams: JSON.stringify({}), InitialDelaySeconds: 0, CustomLogs: '', HasDockerfile: true, CreateTime: '', EnvId: envConfig.EnvId, ServerName: serverName, Port: type === 'container' ? 80 : 3000, Dockerfile: 'Dockerfile', BuildDir: '' }, serverConfig), (type === 'function' ? { Port: 3000 } : {})), { Tag: type === 'container' ? '' : 'function:' });
return this._upsertFunction(true, {
name: serverName,
deployInfo,
serverConfig: _serverConfig
});
}
}
/**
* 获取云托管服务模板列表
* @returns {Promise<ITemplate[]>} 返回模板数组
*/
async getTemplates() {
return (0, utils_1.fetchTemplates)(['tcbrFunc', 'tcbrContainer']);
}
async _checkFunctionExist(name) {
try {
await this.detail({
serverName: name
});
return true;
}
catch (e) {
if (e.code === 'ResourceNotFound' ||
// 备注:以下条件当 NotFound 处理(已与 fisheryan 确认过)
(e.code === 'InvalidParameter' && e.original.Message === 'service data illegal')) {
return false;
}
throw e;
}
}
_upsertFunction(isNew, data) {
const { name, deployInfo, serverConfig } = data;
const envConfig = this.environment.lazyEnvironmentConfig;
const Items = parseObjectToDiffConfigItem(serverConfig);
return this.tcbrService.request(isNew ? 'CreateCloudRunServer' : 'UpdateCloudRunServer', {
EnvId: envConfig.EnvId,
ServerName: name,
DeployInfo: deployInfo,
Items,
});
}
}
exports.CloudRunService = CloudRunService;
__decorate([
(0, utils_1.preLazy)()
], CloudRunService.prototype, "init", null);
__decorate([
(0, utils_1.preLazy)()
], CloudRunService.prototype, "download", null);
__decorate([
(0, utils_1.preLazy)()
], CloudRunService.prototype, "list", null);
__decorate([
(0, utils_1.preLazy)()
], CloudRunService.prototype, "detail", null);
__decorate([
(0, utils_1.preLazy)()
], CloudRunService.prototype, "delete", null);
__decorate([
(0, utils_1.preLazy)()
], CloudRunService.prototype, "deploy", null);
async function codeToZip(cwd, options) {
const archive = (0, archiver_1.default)('zip', {
zlib: { level: 1 } // 保持与之前相同的压缩级别
});
const chunks = [];
const bufferPromise = new Promise((resolve, reject) => {
archive.on('data', (chunk) => {
chunks.push(chunk);
});
archive.on('end', () => {
resolve(Buffer.concat(chunks));
});
archive.on('error', err => {
reject(err);
});
});
async function addFilesToArchive(dir, root = false, relativePath = '') {
const entries = await (0, fs_extra_1.readdir)(dir, { withFileTypes: true });
for (let entry of entries) {
const fullPath = path_1.default.join(dir, entry.name);
const entryRelativePath = path_1.default.join(relativePath, entry.name);
if (entry.isDirectory()) {
if (['logs', '.git'].includes(entry.name)) {
// 忽略 logs 等目录
continue;
}
if (options === null || options === void 0 ? void 0 : options.installDependency) {
// 忽略 node_modules 等目录
if (['node_modules'].includes(entry.name)) {
continue;
}
}
await addFilesToArchive(fullPath, false, entryRelativePath);
}
else {
if (root) {
// 可以配置忽略指定文件名的文件
if ([''].includes(entry.name)) {
continue;
}
}
// 保持与之前相同的文件添加方式,包括相对路径处理
archive.file(fullPath, { name: entryRelativePath });
}
}
}
await addFilesToArchive(path_1.default.resolve(cwd), true);
await archive.finalize();
return bufferPromise;
}
/**
* 提交参数变化映射
*/
const SUBMIT_DIFF_MAP = {
Cpu: 'CpuSpecs',
Mem: 'MemSpecs',
OpenAccessTypes: 'AccessTypes',
EnvParams: 'EnvParam',
CustomLogs: 'LogPath'
};
/**
* 将 object 参数转为 [{key:"Port", IntValue:80}] 的格式,并且剔除空字符串
*/
function parseObjectToDiffConfigItem(data) {
const kvs = Object.entries(data);
const Items = [];
kvs.forEach(([k, v]) => {
const Key = SUBMIT_DIFF_MAP[k] || k;
if ([
'CustomLogs',
'EnvParams',
'CreateTime',
'Dockerfile',
'BuildDir',
'LogType',
'LogSetId',
'LogTopicId',
'LogParseType',
'Tag',
'InternalAccess',
'InternalDomain',
'OperationMode',
'SessionAffinity'
].includes(k)) {
!!v && Items.push({ Key, Value: v });
}
else if (['MinNum', 'MaxNum', 'InitialDelaySeconds', 'Port'].includes(k)) {
Items.push({ Key, IntValue: v });
}
else if (['HasDockerfile'].includes(k)) {
Items.push({ Key, BoolValue: v });
}
else if (['Cpu', 'Mem'].includes(k)) {
Items.push({ Key, FloatValue: v });
}
else if (['OpenAccessTypes', 'EntryPoint', 'Cmd'].includes(k)) {
Items.push({ Key, ArrayValue: v });
}
else if (['PolicyDetails'].includes(k)) {
Items.push({ Key, PolicyDetails: v });
}
else if (['TimerScale'].includes(k)) {
Items.push({ Key, TimerScale: v });
}
});
return Items;
}
/***/ }),
/***/ 119:
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
//! moment.js locale configuration
//! locale : Persian [fa]
//! author : Ebrahim Byagowi : https://github.com/ebraminio
;(function (global, factory) {
true ? factory(__webpack_require__(95093)) :
0
}(this, (function (moment) { 'use strict';
//! moment.js locale configuration
var symbolMap = {
1: '۱',
2: '۲',
3: '۳',
4: '۴',
5: '۵',
6: '۶',
7: '۷',
8: '۸',
9: '۹',
0: '۰',
},
numberMap = {
'۱': '1',
'۲': '2',
'۳': '3',
'۴': '4',
'۵': '5',
'۶': '6',
'۷': '7',
'۸': '8',
'۹': '9',
'۰': '0',
};
var fa = moment.defineLocale('fa', {
months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(
'_'
),
monthsShort:
'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(
'_'
),
weekdays:
'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split(
'_'
),
weekdaysShort:
'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split(
'_'
),
weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),
weekdaysParseExact: true,
longDateFormat: {
LT: 'HH:mm',
LTS: 'HH:mm:ss',
L: 'DD/MM/YYYY',
LL: 'D MMMM YYYY',
LLL: 'D MMMM YYYY HH:mm',
LLLL: 'dddd, D MMMM YYYY HH:mm',
},
meridiemParse: /قبل از ظهر|بعد از ظهر/,
isPM: function (input) {
return /بعد از ظهر/.test(input);
},
meridiem: function (hour, minute, isLower) {
if (hour < 12) {
return 'قبل از ظهر';
} else {
return 'بعد از ظهر';
}
},
calendar: {
sameDay: '[امروز ساعت] LT',
nextDay: '[فردا ساعت] LT',
nextWeek: 'dddd [ساعت] LT',
lastDay: '[دیروز ساعت] LT',
lastWeek: 'dddd [پیش] [ساعت] LT',
sameElse: 'L',
},
relativeTime: {
future: 'در %s',
past: '%s پیش',
s: 'چند ثانیه',
ss: '%d ثانیه',
m: 'یک دقیقه',
mm: '%d دقیقه',
h: 'یک ساعت',
hh: '%d ساعت',
d: 'یک روز',
dd: '%d روز',
M: 'یک ماه',
MM: '%d ماه',
y: 'یک سال',
yy: '%d سال',
},
preparse: function (string) {
return string
.replace(/[۰-۹]/g, function (match) {
return numberMap[match];
})
.replace(/،/g, ',');
},
postformat: function (string) {
return string
.replace(/\d/g, function (match) {
return symbolMap[match];
})
.replace(/,/g, '،');
},
dayOfMonthOrdinalParse: /\d{1,2}م/,
ordinal: '%dم',
week: {
dow: 6, // Saturday is the first day of the week.
doy: 12, // The week that contains Jan 12th is the first week of the year.
},
});
return fa;
})));
/***/ }),
/***/ 149:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
const path = __webpack_require__(39902);
const fsStat = __webpack_require__(98631);
const utils = __webpack_require__(57705);
class Reader {
constructor(_settings) {
this._settings = _settings;
this._fsStatSettings = new fsStat.Settings({
followSymbolicLink: this._settings.followSymbolicLinks,
fs: this._settings.fs,
throwErrorOnBrokenSymbolicLink: this._settings.followSymbolicLinks
});
}
_getFullEntryPath(filepath) {
return path.resolve(this._settings.cwd, filepath);
}
_makeEntry(stats, pattern) {
const entry = {
name: pattern,
path: pattern,
dirent: utils.fs.createDirentFromStats(pattern, stats)
};
if (this._settings.stats) {
entry.stats = stats;
}
return entry;
}
_isFatalError(error) {
return !utils.errno.isEnoentCodeError(error) && !this._settings.suppressErrors;
}
}
exports["default"] = Reader;
/***/ }),
/***/ 199:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
const util = __webpack_require__(28354);
const zlib = __webpack_require__(74075);
const Stream = __webpack_require__(27910);
const PullStream = __webpack_require__(17437);
const NoopStream = __webpack_require__(12994);
const BufferStream = __webpack_require__(51324);
const parseExtraField = __webpack_require__(58189);
const parseDateTime = __webpack_require__(3214);
const pipeline = Stream.pipeline;
const parseBuffer = __webpack_require__(8325);
const endDirectorySignature = Buffer.alloc(4);
endDirectorySignature.writeUInt32LE(0x06054b50, 0);
function Parse(opts) {
if (!(this instanceof Parse)) {
return new Parse(opts);
}
const self = this;
self._opts = opts || { verbose: false };
PullStream.call(self, self._opts);
self.on('finish', function() {
self.emit('end');
self.emit('close');
});
self._readRecord().catch(function(e) {
if (!self.__emittedError || self.__emittedError !== e)
self.emit('error', e);
});
}
util.inherits(Parse, PullStream);
Parse.prototype._readRecord = function () {
const self = this;
return self.pull(4).then(function(data) {
if (data.length === 0)
return;
const signature = data.readUInt32LE(0);
if (signature === 0x34327243) {
return self._readCrxHeader();
}
if (signature === 0x04034b50) {
return self._readFile();
}
else if (signature === 0x02014b50) {
self.reachedCD = true;
return self._readCentralDirectoryFileHeader();
}
else if (signature === 0x06054b50) {
return self._readEndOfCentralDirectoryRecord();
}
else if (self.reachedCD) {
// _readEndOfCentralDirectoryRecord expects the EOCD
// signature to be consumed so set includeEof=true
const includeEof = true;
return self.pull(endDirectorySignature, includeEof).then(function() {
return self._readEndOfCentralDirectoryRecord();
});
}
else
self.emit('error', new Error('invalid signature: 0x' + signature.toString(16)));
}).then((function(loop) {
if(loop) {
return self._readRecord();
}
}));
};
Parse.prototype._readCrxHeader = function() {
const self = this;
return self.pull(12).then(function(data) {
self.crxHeader = parseBuffer.parse(data, [
['version', 4],
['pubKeyLength', 4],
['signatureLength', 4],
]);
return self.pull(self.crxHeader.pubKeyLength + self.crxHeader.signatureLength);
}).then(function(data) {
self.crxHeader.publicKey = data.slice(0, self.crxHeader.pubKeyLength);
self.crxHeader.signature = data.slice(self.crxHeader.pubKeyLength);
self.emit('crx-header', self.crxHeader);
return true;
});
};
Parse.prototype._readFile = function () {
const self = this;
return self.pull(26).then(function(data) {
const vars = parseBuffer.parse(data, [
['versionsNeededToExtract', 2],
['flags', 2],
['compressionMethod', 2],
['lastModifiedTime', 2],
['lastModifiedDate', 2],
['crc32', 4],
['compressedSize', 4],
['uncompressedSize', 4],
['fileNameLength', 2],
['extraFieldLength', 2],
]);
vars.lastModifiedDateTime = parseDateTime(vars.lastModifiedDate, vars.lastModifiedTime);
if (self.crxHeader) vars.crxHeader = self.crxHeader;
return self.pull(vars.fileNameLength).then(function(fileNameBuffer) {
const fileName = fileNameBuffer.toString('utf8');
const entry = Stream.PassThrough();
let __autodraining = false;
entry.autodrain = function() {
__autodraining = true;
const draining = entry.pipe(NoopStream());
draining.promise = function() {
return new Promise(function(resolve, reject) {
draining.on('finish', resolve);
draining.on('error', reject);
});
};
return draining;
};
entry.buffer = function() {
return BufferStream(entry);
};
entry.path = fileName;
entry.props = {};
entry.props.path = fileName;
entry.props.pathBuffer = fileNameBuffer;
entry.props.flags = {
"isUnicode": (vars.flags & 0x800) != 0
};
entry.type = (vars.uncompressedSize === 0 && /[/\\]$/.test(fileName)) ? 'Directory' : 'File';
if (self._opts.verbose) {
if (entry.type === 'Directory') {
console.log(' creating:', fileName);
} else if (entry.type === 'File') {
if (vars.compressionMethod === 0) {
console.log(' extracting:', fileName);
} else {
console.log(' inflating:', fileName);
}
}
}
return self.pull(vars.extraFieldLength).then(function(extraField) {
const extra = parseExtraField(extraField, vars);
entry.vars = vars;
entry.extra = extra;
if (self._opts.forceStream) {
self.push(entry);
} else {
self.emit('entry', entry);
if (self._readableState.pipesCount || (self._readableState.pipes && self._readableState.pipes.length))
self.push(entry);
}
if (self._opts.verbose)
console.log({
filename:fileName,
vars: vars,
extra: extra
});
const fileSizeKnown = !(vars.flags & 0x08) || vars.compressedSize > 0;
let eof;
entry.__autodraining = __autodraining; // expose __autodraining for test purposes
const inflater = (vars.compressionMethod && !__autodraining) ? zlib.createInflateRaw() : Stream.PassThrough();
if (fileSizeKnown) {
entry.size = vars.uncompressedSize;
eof = vars.compressedSize;
} else {
eof = Buffer.alloc(4);
eof.writeUInt32LE(0x08074b50, 0);
}
return new Promise(function(resolve, reject) {
pipeline(
self.stream(eof),
inflater,
entry,
function (err) {
if (err) {
return reject(err);
}
return fileSizeKnown ? resolve(fileSizeKnown) : self._processDataDescriptor(entry).then(resolve).catch(reject);
}
);
});
});
});
});
};
Parse.prototype._processDataDescriptor = function (entry) {
const self = this;
return self.pull(16).then(function(data) {
const vars = parseBuffer.parse(data, [
['dataDescriptorSignature', 4],
['crc32', 4],
['compressedSize', 4],
['uncompressedSize', 4],
]);
entry.size = vars.uncompressedSize;
return true;
});
};
Parse.prototype._readCentralDirectoryFileHeader = function () {
const self = this;
return self.pull(42).then(function(data) {
const vars = parseBuffer.parse(data, [
['versionMadeBy', 2],
['versionsNeededToExtract', 2],
['flags', 2],
['compressionMethod', 2],
['lastModifiedTime', 2],
['lastModifiedDate', 2],
['crc32', 4],
['compressedSize', 4],
['uncompressedSize', 4],
['fileNameLength', 2],
['extraFieldLength', 2],
['fileCommentLength', 2],
['diskNumber', 2],
['internalFileAttributes', 2],
['externalFileAttributes', 4],
['offsetToLocalFileHeader', 4],
]);
return self.pull(vars.fileNameLength).then(function(fileName) {
vars.fileName = fileName.toString('utf8');
return self.pull(vars.extraFieldLength);
})
.then(function() {
return self.pull(vars.fileCommentLength);
})
.then(function() {
return true;
});
});
};
Parse.prototype._readEndOfCentralDirectoryRecord = function() {
const self = this;
return self.pull(18).then(function(data) {
const vars = parseBuffer.parse(data, [
['diskNumber', 2],
['diskStart', 2],
['numberOfRecordsOnDisk', 2],
['numberOfRecords', 2],
['sizeOfCentralDirectory', 4],
['offsetToStartOfCentralDirectory', 4],
['commentLength', 2],
]);
return self.pull(vars.commentLength).then(function() {
self.end();
self.push(null);
});
});
};
Parse.prototype.promise = function() {
const self = this;
return new Promise(function(resolve, reject) {
self.on('finish', resolve);
self.on('error', reject);
});
};
module.exports = Parse;
/***/ }),
/***/ 247:
/***/ ((module) => {
"use strict";
module.exports = /*#__PURE__*/JSON.parse('{"$id":"query.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["name","value"],"properties":{"name":{"type":"string"},"value":{"type":"string"},"comment":{"type":"string"}}}');
/***/ }),
/***/ 259:
/***/ ((module) => {
/*
bzip2.js - a small bzip2 decompression implementation
Copyright 2011 by antimatter15 (antimatter15@gmail.com)
Based on micro-bunzip by Rob Landley (rob@landley.net).
Copyright (c) 2011 by antimatter15 (antimatter15@gmail.com).
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH
THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
function Bzip2Error(message) {
this.name = 'Bzip2Error';
this.message = message;
this.stack = (new Error()).stack;
}
Bzip2Error.prototype = new Error;
var message = {
Error: function(message) {throw new Bzip2Error(message);}
};
var bzip2 = {};
bzip2.Bzip2Error = Bzip2Error;
bzip2.crcTable =
[
0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9,
0x130476dc, 0x17c56b6b, 0x1a864db2, 0x1e475005,
0x2608edb8, 0x22c9f00f, 0x2f8ad6d6, 0x2b4bcb61,
0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd,
0x4c11db70, 0x48d0c6c7, 0x4593e01e, 0x4152fda9,
0x5f15adac, 0x5bd4b01b, 0x569796c2, 0x52568b75,
0x6a1936c8, 0x6ed82b7f, 0x639b0da6, 0x675a1011,
0x791d4014, 0x7ddc5da3, 0x709f7b7a, 0x745e66cd,
0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039,
0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5,
0xbe2b5b58, 0xbaea46ef, 0xb7a96036, 0xb3687d81,
0xad2f2d84, 0xa9ee3033, 0xa4ad16ea, 0xa06c0b5d,
0xd4326d90, 0xd0f37027, 0xddb056fe, 0xd9714b49,
0xc7361b4c, 0xc3f706fb, 0xceb42022, 0xca753d95,
0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1,
0xe13ef6f4, 0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d,
0x34867077, 0x30476dc0, 0x3d044b19, 0x39c556ae,
0x278206ab, 0x23431b1c, 0x2e003dc5, 0x2ac12072,
0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16,
0x018aeb13, 0x054bf6a4, 0x0808d07d, 0x0cc9cdca,
0x7897ab07, 0x7c56b6b0, 0x71159069, 0x75d48dde,
0x6b93dddb, 0x6f52c06c, 0x6211e6b5, 0x66d0fb02,
0x5e9f46bf, 0x5a5e5b08, 0x571d7dd1, 0x53dc6066,
0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba,
0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e,
0xbfa1b04b, 0xbb60adfc, 0xb6238b25, 0xb2e29692,
0x8aad2b2f, 0x8e6c3698, 0x832f1041, 0x87ee0df6,
0x99a95df3, 0x9d684044, 0x902b669d, 0x94ea7b2a,
0xe0b41de7, 0xe4750050, 0xe9362689, 0xedf73b3e,
0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2,
0xc6bcf05f, 0xc27dede8, 0xcf3ecb31, 0xcbffd686,
0xd5b88683, 0xd1799b34, 0xdc3abded, 0xd8fba05a,
0x690ce0ee, 0x6dcdfd59, 0x608edb80, 0x644fc637,
0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb,
0x4f040d56, 0x4bc510e1, 0x46863638, 0x42472b8f,
0x5c007b8a, 0x58c1663d, 0x558240e4, 0x51435d53,
0x251d3b9e, 0x21dc2629, 0x2c9f00f0, 0x285e1d47,
0x36194d42, 0x32d850f5, 0x3f9b762c, 0x3b5a6b9b,
0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff,
0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623,
0xf12f560e, 0xf5ee4bb9, 0xf8ad6d60, 0xfc6c70d7,
0xe22b20d2, 0xe6ea3d65, 0xeba91bbc, 0xef68060b,
0xd727bbb6, 0xd3e6a601, 0xdea580d8, 0xda649d6f,
0xc423cd6a, 0xc0e2d0dd, 0xcda1f604, 0xc960ebb3,
0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7,
0xae3afba2, 0xaafbe615, 0xa7b8c0cc, 0xa379dd7b,
0x9b3660c6, 0x9ff77d71, 0x92b45ba8, 0x9675461f,
0x8832161a, 0x8cf30bad, 0x81b02d74, 0x857130c3,
0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640,
0x4e8ee645, 0x4a4ffbf2, 0x470cdd2b, 0x43cdc09c,
0x7b827d21, 0x7f436096, 0x7200464f, 0x76c15bf8,
0x68860bfd, 0x6c47164a, 0x61043093, 0x65c52d24,
0x119b4be9, 0x155a565e, 0x18197087, 0x1cd86d30,
0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec,
0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088,
0x2497d08d, 0x2056cd3a, 0x2d15ebe3, 0x29d4f654,
0xc5a92679, 0xc1683bce, 0xcc2b1d17, 0xc8ea00a0,
0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb, 0xdbee767c,
0xe3a1cbc1, 0xe760d676, 0xea23f0af, 0xeee2ed18,
0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4,
0x89b8fd09, 0x8d79e0be, 0x803ac667, 0x84fbdbd0,
0x9abc8bd5, 0x9e7d9662, 0x933eb0bb, 0x97ffad0c,
0xafb010b1, 0xab710d06, 0xa6322bdf, 0xa2f33668,
0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4
];
bzip2.array = function(bytes) {
var bit = 0, byte = 0;
var BITMASK = [0, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF ];
return function(n) {
var result = 0;
while(n > 0) {
var left = 8 - bit;
if (n >= left) {
result <<= left;
result |= (BITMASK[left] & bytes[byte++]);
bit = 0;
n -= left;
} else {
result <<= n;
result |= ((bytes[byte] & (BITMASK[n] << (8 - n - bit))) >> (8 - n - bit));
bit += n;
n = 0;
}
}
return result;
}
}
bzip2.simple = function(srcbuffer, stream) {
var bits = bzip2.array(srcbuffer);
var size = bzip2.header(bits);
var ret = false;
var bufsize = 100000 * size;
var buf = new Int32Array(bufsize);
do {
ret = bzip2.decompress(bits, stream, buf, bufsize);
} while(!ret);
}
bzip2.header = function(bits) {
this.byteCount = new Int32Array(256);
this.symToByte = new Uint8Array(256);
this.mtfSymbol = new Int32Array(256);
this.selectors = new Uint8Array(0x8000);
if (bits(8*3) != 4348520) message.Error("No magic number found");
var i = bits(8) - 48;
if (i < 1 || i > 9) message.Error("Not a BZIP archive");
return i;
};
//takes a function for reading the block data (starting with 0x314159265359)
//a block size (0-9) (optional, defaults to 9)
//a length at which to stop decompressing and return the output
bzip2.decompress = function(bits, stream, buf, bufsize, streamCRC) {
var MAX_HUFCODE_BITS = 20;
var MAX_SYMBOLS = 258;
var SYMBOL_RUNA = 0;
var SYMBOL_RUNB = 1;
var GROUP_SIZE = 50;
var crc = 0 ^ (-1);
for(var h = '', i = 0; i < 6; i++) h += bits(8).toString(16);
if (h == "177245385090") {
var finalCRC = bits(32)|0;
if (finalCRC !== streamCRC) message.Error("Error in bzip2: crc32 do not match");
// align stream to byte
bits(null);
return null; // reset streamCRC for next call
}
if (h != "314159265359") message.Error("eek not valid bzip data");
var crcblock = bits(32)|0; // CRC code
if (bits(1)) message.Error("unsupported obsolete version");
var origPtr = bits(24);
if (origPtr > bufsize) message.Error("Initial position larger than buffer size");
var t = bits(16);
var symTotal = 0;
for (i = 0; i < 16; i++) {
if (t & (1 << (15 - i))) {
var k = bits(16);
for(j = 0; j < 16; j++) {
if (k & (1 << (15 - j))) {
this.symToByte[symTotal++] = (16 * i) + j;
}
}
}
}
var groupCount = bits(3);
if (groupCount < 2 || groupCount > 6) message.Error("another error");
var nSelectors = bits(15);
if (nSelectors == 0) message.Error("meh");
for(var i = 0; i < groupCount; i++) this.mtfSymbol[i] = i;
for(var i = 0; i < nSelectors; i++) {
for(var j = 0; bits(1); j++) if (j >= groupCount) message.Error("whoops another error");
var uc = this.mtfSymbol[j];
for(var k = j-1; k>=0; k--) {
this.mtfSymbol[k+1] = this.mtfSymbol[k];
}
this.mtfSymbol[0] = uc;
this.selectors[i] = uc;
}
var symCount = symTotal + 2;
var groups = [];
var length = new Uint8Array(MAX_SYMBOLS),
temp = new Uint16Array(MAX_HUFCODE_BITS+1);
var hufGroup;
for(var j = 0; j < groupCount; j++) {
t = bits(5); //lengths
for(var i = 0; i < symCount; i++) {
while(true){
if (t < 1 || t > MAX_HUFCODE_BITS) message.Error("I gave up a while ago on writing error messages");
if (!bits(1)) break;
if (!bits(1)) t++;
else t--;
}
length[i] = t;
}
var minLen, maxLen;
minLen = maxLen = length[0];
for(var i = 1; i < symCount; i++) {
if (length[i] > maxLen) maxLen = length[i];
else if (length[i] < minLen) minLen = length[i];
}
hufGroup = groups[j] = {};
hufGroup.permute = new Int32Array(MAX_SYMBOLS);
hufGroup.limit = new Int32Array(MAX_HUFCODE_BITS + 1);
hufGroup.base = new Int32Array(MAX_HUFCODE_BITS + 1);
hufGroup.minLen = minLen;
hufGroup.maxLen = maxLen;
var base = hufGroup.base;
var limit = hufGroup.limit;
var pp = 0;
for(var i = minLen; i <= maxLen; i++)
for(var t = 0; t < symCount; t++)
if (length[t] == i) hufGroup.permute[pp++] = t;
for(i = minLen; i <= maxLen; i++) temp[i] = limit[i] = 0;
for(i = 0; i < symCount; i++) temp[length[i]]++;
pp = t = 0;
for(i = minLen; i < maxLen; i++) {
pp += temp[i];
limit[i] = pp - 1;
pp <<= 1;
base[i+1] = pp - (t += temp[i]);
}
limit[maxLen] = pp + temp[maxLen] - 1;
base[minLen] = 0;
}
for(var i = 0; i < 256; i++) {
this.mtfSymbol[i] = i;
this.byteCount[i] = 0;
}
var runPos, count, symCount, selector;
runPos = count = symCount = selector = 0;
while(true) {
if (!(symCount--)) {
symCount = GROUP_SIZE - 1;
if (selector >= nSelectors) message.Error("meow i'm a kitty, that's an error");
hufGroup = groups[this.selectors[selector++]];
base = hufGroup.base;
limit = hufGroup.limit;
}
i = hufGroup.minLen;
j = bits(i);
while(true) {
if (i > hufGroup.maxLen) message.Error("rawr i'm a dinosaur");
if (j <= limit[i]) break;
i++;
j = (j << 1) | bits(1);
}
j -= base[i];
if (j < 0 || j >= MAX_SYMBOLS) message.Error("moo i'm a cow");
var nextSym = hufGroup.permute[j];
if (nextSym == SYMBOL_RUNA || nextSym == SYMBOL_RUNB) {
if (!runPos){
runPos = 1;
t = 0;
}
if (nextSym == SYMBOL_RUNA) t += runPos;
else t += 2 * runPos;
runPos <<= 1;
continue;
}
if (runPos) {
runPos = 0;
if (count + t > bufsize) message.Error("Boom.");
uc = this.symToByte[this.mtfSymbol[0]];
this.byteCount[uc] += t;
while(t--) buf[count++] = uc;
}
if (nextSym > symTotal) break;
if (count >= bufsize) message.Error("I can't think of anything. Error");
i = nextSym - 1;
uc = this.mtfSymbol[i];
for(var k = i-1; k>=0; k--) {
this.mtfSymbol[k+1] = this.mtfSymbol[k];
}
this.mtfSymbol[0] = uc
uc = this.symToByte[uc];
this.byteCount[uc]++;
buf[count++] = uc;
}
if (origPtr < 0 || origPtr >= count) message.Error("I'm a monkey and I'm throwing something at someone, namely you");
var j = 0;
for(var i = 0; i < 256; i++) {
k = j + this.byteCount[i];
this.byteCount[i] = j;
j = k;
}
for(var i = 0; i < count; i++) {
uc = buf[i] & 0xff;
buf[this.byteCount[uc]] |= (i << 8);
this.byteCount[uc]++;
}
var pos = 0, current = 0, run = 0;
if (count) {
pos = buf[origPtr];
current = (pos & 0xff);
pos >>= 8;
run = -1;
}
count = count;
var copies, previous, outbyte;
while(count) {
count--;
previous = current;
pos = buf[pos];
current = pos & 0xff;
pos >>= 8;
if (run++ == 3) {
copies = current;
outbyte = previous;
current = -1;
} else {
copies = 1;
outbyte = current;
}
while(copies--) {
crc = ((crc << 8) ^ this.crcTable[((crc>>24) ^ outbyte) & 0xFF])&0xFFFFFFFF; // crc32
stream(outbyte);
}
if (current != previous) run = 0;
}
crc = (crc ^ (-1)) >>> 0;
if ((crc|0) != (crcblock|0)) message.Error("Error in bzip2: crc32 do not match");
streamCRC = (crc ^ ((streamCRC << 1) | (streamCRC >>> 31))) & 0xFFFFFFFF;
return streamCRC;
}
module.exports = bzip2;
/***/ }),
/***/ 270:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
const SemVer = __webpack_require__(53908)
const Range = __webpack_require__(78311)
const minSatisfying = (versions, range, options) => {
let min = null
let minSV = null
let rangeObj = null
try {
rangeObj = new Range(range, options)
} catch (er) {
return null
}
versions.forEach((v) => {
if (rangeObj.test(v)) {
// satisfies(v, range, options)
if (!min || minSV.compare(v) === 1) {
// compare(min, v, true)
min = v
minSV = new SemVer(min, options)
}
}
})
return min
}
module.exports = minSatisfying
/***/ }),
/***/ 528:
/***/ ((module) => {
"use strict";
module.exports = (string, separator) => {
if (!(typeof string === 'string' && typeof separator === 'string')) {
throw new TypeError('Expected the arguments to be of type `string`');
}
if (separator === '') {
return [string];
}
const separatorIndex = string.indexOf(separator);
if (separatorIndex === -1) {
return [string];
}
return [
string.slice(0, separatorIndex),
string.slice(separatorIndex + separator.length)
];
};
/***/ }),
/***/ 555:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
/**
* winston.js: Top-level include defining Winston.
*
* (C) 2010 Charlie Robbins
* MIT LICENCE
*/
const logform = __webpack_require__(62711);
const { warn } = __webpack_require__(92159);
/**
* Expose version. Use `require` method for `webpack` support.
* @type {string}
*/
exports.version = __webpack_require__(6256).version;
/**
* Include transports defined by default by winston
* @type {Array}
*/
exports.transports = __webpack_require__(23475);
/**
* Expose utility methods
* @type {Object}
*/
exports.config = __webpack_require__(4575);
/**
* Hoist format-related functionality from logform.
* @type {Object}
*/
exports.addColors = logform.levels;
/**
* Hoist format-related functionality from logform.
* @type {Object}
*/
exports.format = logform.format;
/**
* Expose core Logging-related prototypes.
* @type {function}
*/
exports.createLogger = __webpack_require__(2751);
/**
* Expose core Logging-related prototypes.
* @type {function}
*/
exports.Logger = __webpack_require__(68010);
/**
* Expose core Logging-related prototypes.
* @type {Object}
*/
exports.ExceptionHandler = __webpack_require__(70504);
/**
* Expose core Logging-related prototypes.
* @type {Object}
*/
exports.RejectionHandler = __webpack_require__(42134);
/**
* Expose core Logging-related prototypes.
* @type {Container}
*/
exports.Container = __webpack_require__(47083);
/**
* Expose core Logging-related prototypes.
* @type {Object}
*/
exports.Transport = __webpack_require__(83623);
/**
* We create and expose a default `Container` to `winston.loggers` so that the
* programmer may manage multiple `winston.Logger` instances without any
* additional overhead.
* @example
* // some-file1.js
* const logger = require('winston').loggers.get('something');
*
* // some-file2.js
* const logger = require('winston').loggers.get('something');
*/
exports.loggers = new exports.Container();
/**
* We create and expose a 'defaultLogger' so that the programmer may do the
* following without the need to create an instance of winston.Logger directly:
* @example
* const winston = require('winston');
* winston.log('info', 'some message');
* winston.error('some error');
*/
const defaultLogger = exports.createLogger();
// Pass through the target methods onto `winston.
Object.keys(exports.config.npm.levels)
.concat([
'log',
'query',
'stream',
'add',
'remove',
'clear',
'profile',
'startTimer',
'handleExceptions',
'unhandleExceptions',
'handleRejections',
'unhandleRejections',
'configure',
'child'
])
.forEach(
method => (exports[method] = (...args) => defaultLogger[method](...args))
);
/**
* Define getter / setter for the default logger level which need to be exposed
* by winston.
* @type {string}
*/
Object.defineProperty(exports, "level", ({
get() {
return defaultLogger.level;
},
set(val) {
defaultLogger.level = val;
}
}));
/**
* Define getter for `exceptions` which replaces `handleExceptions` and
* `unhandleExceptions`.
* @type {Object}
*/
Object.defineProperty(exports, "exceptions", ({
get() {
return defaultLogger.exceptions;
}
}));
/**
* Define getter for `rejections` which replaces `handleRejections` and
* `unhandleRejections`.
* @type {Object}
*/
Object.defineProperty(exports, "rejections", ({
get() {
return defaultLogger.rejections;
}
}));
/**
* Define getters / setters for appropriate properties of the default logger
* which need to be exposed by winston.
* @type {Logger}
*/
['exitOnError'].forEach(prop => {
Object.defineProperty(exports, prop, {
get() {
return defaultLogger[prop];
},
set(val) {
defaultLogger[prop] = val;
}
});
});
/**
* The default transports and exc