zentao-api 0.1.0 → 0.2.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +2 -2
- package/README.md +221 -131
- package/dist/browser/zentao-api.global.js +2 -0
- package/dist/browser.d.ts +1 -0
- package/dist/browser.js +1 -0
- package/dist/client/index.d.ts +39 -0
- package/dist/client/index.js +172 -0
- package/dist/index.d.ts +8 -4
- package/dist/index.js +7 -8
- package/dist/misc/browser-global.d.ts +1 -0
- package/dist/misc/browser-global.js +8 -0
- package/dist/misc/environment.d.ts +8 -0
- package/dist/misc/environment.js +124 -0
- package/dist/misc/errors.d.ts +30 -0
- package/dist/misc/errors.js +40 -0
- package/dist/misc/global-options.d.ts +5 -0
- package/dist/misc/global-options.js +9 -0
- package/dist/modules/generated.d.ts +8 -0
- package/dist/modules/generated.js +4226 -0
- package/dist/modules/registry.d.ts +22 -0
- package/dist/modules/registry.js +142 -0
- package/dist/modules/resolve.d.ts +7 -0
- package/dist/modules/resolve.js +206 -0
- package/dist/profiles/index.d.ts +14 -0
- package/dist/profiles/index.js +205 -0
- package/dist/request/index.d.ts +7 -0
- package/dist/request/index.js +65 -0
- package/dist/types/index.d.ts +296 -0
- package/dist/types/index.js +1 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.js +26 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.js +4 -0
- package/package.json +52 -76
- package/dist/types.d.ts +0 -70
- package/dist/utils.d.ts +0 -93
- package/dist/zentao-api.cjs.development.js +0 -3619
- package/dist/zentao-api.cjs.development.js.map +0 -1
- package/dist/zentao-api.cjs.production.min.js +0 -2
- package/dist/zentao-api.cjs.production.min.js.map +0 -1
- package/dist/zentao-api.esm.js +0 -3611
- package/dist/zentao-api.esm.js.map +0 -1
- package/dist/zentao-config.d.ts +0 -93
- package/dist/zentao-request-builder.d.ts +0 -120
- package/dist/zentao.d.ts +0 -175
- package/dist/zentao12.d.ts +0 -676
- package/src/index.ts +0 -5
- package/src/types.ts +0 -88
- package/src/utils.ts +0 -216
- package/src/zentao-config.ts +0 -150
- package/src/zentao-request-builder.ts +0 -227
- package/src/zentao.ts +0 -596
- package/src/zentao12.ts +0 -1272
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"zentao-api.cjs.development.js","sources":["../src/utils.ts","../node_modules/regenerator-runtime/runtime.js","../src/zentao-config.ts","../src/zentao-request-builder.ts","../src/zentao.ts","../src/zentao12.ts"],"sourcesContent":["import querystring from 'querystring';\nimport {ZentaoRequestParamPair, ZentaoRequestParams} from './types';\n\n/**\n * 创建一个 Date 对象\n * @param {Date|number|String} [date=null] 用于创建 Date 对象的日期时间表达值,如果留空则创建当前系统时间对象\n * @return {Date} 日期时间对象\n * @function\n */\nexport const createDate = (date: Date | number | string) => {\n if (!date) {\n return new Date();\n }\n if (!(date instanceof Date)) {\n if (typeof date === 'string') {\n date = date.trim();\n if (/^\\d+$/.test(date)) {\n date = Number.parseInt(date, 10);\n }\n }\n if (typeof date === 'number' && date < 10000000000) {\n date *= 1000;\n }\n date = new Date(date);\n }\n return date;\n};\n\n/**\n * 格式化日期时间值为字符串\n * @remarks\n * 所有可用的格式化参数有:\n * - `yyyy`,例如:'2018',表示四位数字表示的年份\n * - `yy`,例如:'18',表示两位数字表示的年份\n * - `MM`,例如:'07',表示两位数字表示的月份,不足两位在起始用 0 填充\n * - `M`,例如:'10',表示一位或两位数字表示的月份\n * - `dd`,例如:'05',表示两位数字表示的日期,不足两位在起始用 0 填充\n * - `d`,例如:'5',表示一位或两位数字表示的日期\n * - `hh`,例如:'08',表示两位数字表示的小时,不足两位在起始用 0 填充\n * - `h`,例如:'8',表示一位或两位数字表示的小时\n * - `mm`,例如:'3',表示两位数字表示的分钟,不足两位在起始用 0 填充\n * - `m`,例如:'03',表示一位或两位数字表示的分钟\n * - `ss`,例如:'5',表示两位数字表示的秒数,不足两位在起始用 0 填充\n * - `s`,例如:'05',表示一位或两位数字表示的秒数\n * - `S`,例如:'236',表示毫秒数\n * - `SSS`,例如:'036',表示毫秒数,不足3位在起始用 0 填充\n * @summary 格式化日期时间值为字符串\n * @param {Date|number|string} date 要格式化的日期时间表达值\n * @param {string} [format='yyyy-MM-dd hh:ss'] 格式化字符串\n * @return {string} 日期时间格式化文本\n * @function\n */\nexport const formatDate = (\n date: Date | number | string,\n format: string = 'yyyy-MM-dd hh:mm'\n) => {\n date = createDate(date);\n\n const dateInfo: Record<string, any> = {\n 'M+': date.getMonth() + 1,\n 'd+': date.getDate(),\n 'h+': date.getHours(),\n 'H+': date.getHours() % 12,\n 'm+': date.getMinutes(),\n 's+': date.getSeconds(),\n // 'q+': Math.floor((date.getMonth() + 3) / 3),\n 'S+': date.getMilliseconds(),\n };\n if (/(y+)/i.test(format)) {\n format = format.replace(\n RegExp.$1,\n `${date.getFullYear()}`.substr(4 - RegExp.$1.length)\n );\n }\n Object.keys(dateInfo).forEach(k => {\n if (new RegExp(`(${k})`).test(format)) {\n const str = `${dateInfo[k]}`;\n format = format.replace(\n RegExp.$1,\n RegExp.$1.length === 1\n ? str\n : `00${str}`.substr(str.length + 2 - RegExp.$1.length)\n );\n }\n });\n return format;\n};\n\n/**\n * 格式化禅道地址\n * @param url 禅道地址\n * @returns 格式化后的禅道地址\n * @example\n * // 以下例子都返回 `http://demo.zentao.net/`\n * formatZentaoUrl('http://demo.zentao.net');\n * formatZentaoUrl('http://demo.zentao.net');\n * formatZentaoUrl('http://demo.zentao.net/index.php');\n * formatZentaoUrl('demo.zentao.net');\n */\nexport function formatZentaoUrl(url: string) {\n if (url.endsWith('/index.php')) {\n url = url.substr(0, url.length - 9);\n } else if (!url.endsWith('/')) {\n url = `${url}/`;\n }\n if (!url.startsWith('https://') && !url.startsWith('http://')) {\n url = `http://${url}`;\n }\n return url;\n}\n\n/**\n * 创建一个新的对象,仅保留给定的原始对象上给定的属性\n * @param object 给定的原始对象\n * @param fields 要保留属性名称列表\n * @returns 新的对象\n * @example\n * const obj = {a: 1, b: 2, c: 3, d: 4};\n * slimmingObject(obj, ['b', 'c']); // 返回 `{b: 2, c: 3}`\n */\nexport function slimmingObject(object: any, fields: string[]): any {\n if (!object || typeof object !== 'object' || object === null) {\n return object;\n }\n let newObject: Record<string, any> = {};\n for (const field of fields) {\n newObject[field] = object[field];\n }\n return newObject;\n}\n\n/**\n * 格式化请求参数定义\n * @param params 要格式化的参数定义\n * @returns 格式化后的参数列表\n * @example\n * // 下面返回:`[['foo', 'bar'], ['hello', 'world']]`\n * normalizeRequestParams([['foo', 'bar'], ['hello', 'world']]);\n *\n * // 下面返回:`[['foo', 'bar'], ['hello', 'world']]`\n * normalizeRequestParams('foo=bar&hello=world');\n *\n * // 下面返回:`[['foo', 'bar'], ['hello', 'world']]`\n * normalizeRequestParams({foo: 'bar', hello: 'world'});\n *\n * // 下面返回:`[['', 'bar'], ['', 'world']]`\n * normalizeRequestParams(['foo', 'bar']);\n *\n * // 下面返回:`[['foo', 'bar'], ['', 'world']]`\n * normalizeRequestParams([['foo', 'bar'], 'bar']);\n */\nexport function normalizeRequestParams(\n params?: ZentaoRequestParams\n): ZentaoRequestParamPair[] {\n let normalizedParams: ZentaoRequestParamPair[] = [];\n if (typeof params === 'string') {\n params = querystring.parse(params);\n }\n if (params && typeof params === 'object') {\n if (Array.isArray(params)) {\n for (const param of params) {\n normalizedParams.push(\n typeof param === 'string' ? ['', param] : param\n );\n }\n } else if (params as Record<string, any>) {\n for (const key of Object.keys(params).sort()) {\n normalizedParams.push([key, params[key]]);\n }\n }\n }\n return normalizedParams;\n}\n\n/**\n * 合并两个请求参数定义,并返回合并且格式化后的定义\n * @param params 参数定义\n * @param otherParams 要合并的其他参数定义\n * @returns 合并后的参数列表\n * @example\n * const params1 = {foo: 'bar', hello: 'world'};\n * const params2 = 'answer='42'';\n * const params3 = [['foo', 'ter'], ['say', 'hi']];\n *\n * // 以下返回 `[['foo', 'bar'], ['answer', '42']]`\n * mergeRequestParams(params1, params2);\n *\n * // 以下返回 `[['foo', ['bar', 'ter']], ['answer', '42'], ['hello', 'world'], ['say', 'hi']]`\n * mergeRequestParams(params1, params2, params3);\n */\nexport function mergeRequestParams(\n params: ZentaoRequestParams,\n ...otherParams: ZentaoRequestParams[]\n): ZentaoRequestParamPair[] {\n const normalizedParams = normalizeRequestParams(params);\n for (const otherParam of otherParams) {\n const otherNormalizedParams = normalizeRequestParams(otherParam);\n for (const param of otherNormalizedParams) {\n if (typeof param[0] === 'string' && param[0].length) {\n const existsParam = normalizedParams.find(\n x => x[0] === param[0]\n );\n if (existsParam) {\n if (Array.isArray(existsParam[1])) {\n existsParam[1].push(param[1]);\n } else {\n existsParam[1] = [existsParam[1], param[1]];\n }\n continue;\n }\n }\n normalizedParams.push(param);\n }\n }\n return normalizedParams;\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","import {ZentaoRequestType} from './types';\n\n/**\n * 禅道配置存储对象\n */\nexport default class ZentaoConfig {\n /**\n * 禅道版本,例如:\"12.4.3\"\n */\n readonly version: string;\n\n /**\n * 请求方式,包括 \"GET\" 和 \"PATH_INFO\"\n */\n readonly requestType: ZentaoRequestType;\n\n /**\n * 当请求方式为 PATH_INFO 时的参数连接字符,例如 \"-\"\n */\n readonly requestFix: string;\n\n /**\n * 当请求方式为 GET 时,模块参数名,例如 \"m\"\n */\n readonly moduleVar: string;\n\n /**\n * 当请求方式为 GET 时,方法参数名,例如 \"f\"\n */\n readonly methodVar: string;\n\n /**\n * 当请求方式为 GET 时,视图参数名,例如 \"t\"\n */\n readonly viewVar: string;\n\n /**\n * Session 变量名称,例如 \"zentaosid\"\n */\n readonly sessionVar: string;\n\n /**\n * Session 名称,例如 \"zentaosid\"\n */\n readonly sessionName: string;\n\n /**\n * Session ID,例如 \"inge21mp04h95m8lo64tpp6h4c\"\n */\n readonly sessionID: string;\n\n /**\n * Session 随机数,例如 7795\n */\n readonly random: number;\n\n /**\n * Session 过期时间,例如 1440\n */\n readonly expiredTime: number;\n\n /**\n * 服务器时间\n */\n readonly serverTime: number;\n\n /**\n * 创建时间\n */\n protected readonly _createTime: number;\n\n /**\n * Token 字符串\n */\n protected _token?: string;\n\n /**\n * 上次更新 Token 的时间\n */\n protected _tokenUpdateTime?: number;\n\n /**\n * 创建一个 ZentaoConfig 实例\n * @param config 配置对象\n * @example\n * const config = new ZentaoConfig({version: 'pro9.0.3', requestType: 'PATH_INFO', requestFix: '-', moduleVar: 'm', methodVar: 'f', viewVar: 't', sessionVar: 'zentaosid', sessionName: 'zentaosid', sessionID: '6fudr187np6d82rj23srkqt1r6', random: 5337, expiredTime: '1440', serverTime: 1615098427});\n */\n constructor(config: Record<string, any>) {\n this.version = config['version'];\n this.requestType =\n config['requestType'] === 'GET' ? 'GET' : 'PATH_INFO';\n this.requestFix = config['requestFix'] ?? '-';\n this.moduleVar = config['moduleVar'] ?? 'm';\n this.methodVar = config['methodVar'] ?? 'f';\n this.viewVar = config['viewVar'] ?? 't';\n this.sessionVar = config['sessionVar'] ?? 'zentaosid';\n this.sessionName = config['sessionName'] ?? 'zentaosid\"';\n this.sessionID = config['sessionID'];\n this.random = config['random'];\n this.serverTime = config['serverTime'];\n this.expiredTime =\n typeof config['expiredTime'] === 'string'\n ? Number.parseInt(config['expiredTime'], 10)\n : config['expiredTime'];\n this._tokenUpdateTime = config['_tokenUpdateTime'];\n this._token = config['_token'];\n this._createTime = Date.now();\n }\n\n /**\n * 获取 Token 字符串\n */\n get token(): string {\n return this._token ?? '';\n }\n\n /**\n * Token 验证字符串\n */\n get tokenAuth(): string {\n return `${this?.sessionName ?? ''}=${this?.sessionID ?? ''}`;\n }\n\n /**\n * 禅道主版本\n */\n get mainVersion(): number {\n return Number.parseInt(this.version.split('.')[0]);\n }\n\n /**\n * 将 Token 验证字符串更新为当前 Token\n */\n renewToken(): void {\n this._token = this.tokenAuth;\n this._tokenUpdateTime = Date.now();\n }\n\n /**\n * 检查当前 Token 字符串是否过期\n */\n get isTokenExpired(): boolean {\n if (!this._tokenUpdateTime) {\n return true;\n }\n return (\n Date.now() - this._tokenUpdateTime >= (this.expiredTime - 30) * 1000\n );\n }\n}\n","import {Method} from 'axios';\nimport {ZentaoApiResult, ZentaoRequestParams} from './types';\nimport {mergeRequestParams} from './utils';\nimport Zentao from './zentao';\n\n/**\n * 禅道请求构建类\n * @internal\n */\nexport default class ZentaoRequestBuilder {\n /**\n * 禅道请求实例\n */\n readonly zentao: Zentao;\n\n /**\n * 模块名\n */\n readonly moduleName: string;\n\n _methodName: string;\n _params?: ZentaoRequestParams;\n _data?: string | Record<string, any>;\n _fields?: string[];\n _resultConvertor?: (\n remoteData: any,\n result: ZentaoApiResult\n ) => ZentaoApiResult;\n _url?: string;\n _name?: string;\n\n /**\n * 创建一个禅道请求构建实例\n * @param zentao 禅道请求实例\n * @param moduleName 方法名\n * @param methodName 模块名\n * @param params 请求参数\n */\n constructor(\n zentao: Zentao,\n moduleName: string,\n methodName?: string,\n params?: ZentaoRequestParams\n ) {\n this.zentao = zentao;\n this.moduleName = moduleName;\n this._methodName = methodName ?? 'index';\n this._params = params;\n }\n\n /**\n * 获取方法名\n */\n get methodName() {\n return this._methodName;\n }\n\n /**\n * 获取请求参数\n */\n get params() {\n return this._params;\n }\n\n /**\n * 获取请求数据\n */\n get data() {\n return this._data;\n }\n\n /**\n * 获取结果属性过滤列表\n */\n get fields() {\n return this._fields;\n }\n\n /**\n * 获取请求名称\n */\n get name() {\n return this._name;\n }\n\n /**\n * 获取自定义请求地址\n */\n get url() {\n return this._url;\n }\n\n /**\n * 获取结果转换函数\n */\n get resultConvertor() {\n return this._resultConvertor;\n }\n\n /**\n * 设置方法名\n * @param name 方法名\n * @returns 禅道请求构建实例自身\n */\n method(name: string): ZentaoRequestBuilder {\n this._methodName = name;\n return this;\n }\n\n /**\n * 设置方法名,是方法 `method(name)` 的别名\n * @param name 方法名\n * @returns 禅道请求构建实例自身\n * @alias method\n */\n f(name: string): ZentaoRequestBuilder {\n return this.method(name);\n }\n\n /**\n * 设置请求参数\n * @param params 要设置的参数\n * @returns 禅道请求构建实例自身\n */\n withParams(params: ZentaoRequestParams): ZentaoRequestBuilder {\n this._params = params;\n return this;\n }\n\n /**\n * 追加请求参数\n * @param params 要追加的参数\n * @returns 禅道请求构建实例自身\n */\n appendParams(params: ZentaoRequestParams): ZentaoRequestBuilder {\n if (this._params) {\n this._params = mergeRequestParams(this._params, params);\n } else {\n this._params = params;\n }\n return this;\n }\n\n /**\n * 设置请求名称\n * @param name 名称\n * @returns 禅道请求构建实例自身\n */\n named(name: string): ZentaoRequestBuilder {\n this._name = name;\n return this;\n }\n\n /**\n * 设置结果转换函数\n * @param converter 结果转换函数\n * @returns 禅道请求构建实例自身\n */\n useConverter(\n converter: (remoteData: any, result: ZentaoApiResult) => ZentaoApiResult\n ): ZentaoRequestBuilder {\n this._resultConvertor = converter;\n return this;\n }\n\n /**\n * 过滤需要返回的属性列表\n * @param fields 设置仅返回的属性名称列表\n * @returns 禅道请求构建实例自身\n */\n filterFields(\n ...fields: Array<string | string[] | undefined>\n ): ZentaoRequestBuilder {\n this._fields = fields.flat().filter(x => x !== undefined) as string[];\n return this;\n }\n\n /**\n * 发起 GET 请求\n * @returns 请求结果\n */\n get(): Promise<ZentaoApiResult> {\n return this.zentao.request(this.moduleName, this._methodName, {\n method: 'GET',\n params: this._params,\n data: this._data,\n fields: this._fields,\n resultConvertor: this._resultConvertor,\n name: this._name,\n url: this._url,\n });\n }\n\n /**\n * 发起 POST 请求\n * @param data 要提交的数据\n * @returns 请求结果\n */\n post(data?: string | Record<string, any>): Promise<ZentaoApiResult> {\n return this.zentao.request(this.moduleName, this._methodName, {\n method: 'POST',\n params: this._params,\n data: data ?? this._data,\n fields: this._fields,\n resultConvertor: this._resultConvertor,\n name: this._name,\n url: this._url,\n });\n }\n\n /**\n * 发起 HTTP 请求,可以指定请求方式\n * @param method 请求方式,默认为 GET\n * @returns 请求结果\n */\n request(method?: Method) {\n return this.zentao.request(this.moduleName, this._methodName, {\n method,\n params: this._params,\n data: this._data,\n fields: this._fields,\n resultConvertor: this._resultConvertor,\n name: this._name,\n url: this._url,\n });\n }\n}\n","import axios, {AxiosResponse} from 'axios';\nimport Configstore from 'configstore';\nimport kleur from 'kleur';\nimport querystring from 'querystring';\nimport {\n ZentaoApiResult,\n ZentaoOptions,\n ZentaoRequestMethod,\n ZentaoRequestParamPair,\n ZentaoRequestParams,\n ZentaoRequestType,\n} from './types';\nimport {formatZentaoUrl, normalizeRequestParams, slimmingObject} from './utils';\nimport ZentaoConfig from './zentao-config';\nimport ZentaoRequestBuilder from './zentao-request-builder';\n\n/**\n * 禅道请求类\n *\n * @example\n * import { Zentao } from 'zentao-api';\n * const zentao = new Zentao({\n * url: 'https://pro.demo.zentao.net/', account: 'demo', password: '123456'\n * });\n * // TODO: 使用 zentao 调用其他 API\n */\nexport default class Zentao {\n /**\n * 当前服务器和登录账号标识字符串\n */\n private readonly _identifier: string;\n\n /**\n * 是否将 token 存储到本地,如果设置为 `false`,则每次创建新的 `Zentao` 实例都会在首次调用 API 之前重新获取 Token\n */\n private readonly _preserveToken: boolean;\n\n /**\n * 当前实例名称\n */\n private readonly _sessionName: string;\n\n /**\n * 禅道服务器地址\n */\n private readonly _url: string;\n\n /**\n * 登录账号\n */\n private readonly _account: string;\n\n /**\n * 登录密码\n */\n private readonly _password: string;\n\n /**\n * 如果设置为 `true`,则会在控制台输出详细日志\n */\n private _debug: boolean;\n\n /**\n * 禅道配置\n */\n private _config?: ZentaoConfig;\n\n /**\n * 本地存储管理对象\n */\n private _store?: Configstore;\n\n /**\n * 用户指定的请求方式\n */\n private _userRequestType?: ZentaoRequestType;\n\n /**\n * 构造一个禅道 API 请求对象\n * @param {ZentaoOptions} [options] 选项,用于指定服务器地址、账号和密码以及 API 调用相关设置\n * @example\n * import { Zentao } from 'zentao-api';\n * const zentao = new Zentao({\n * url: 'https://pro.demo.zentao.net/', // 禅道服务器地址\n * account: 'demo', // 用户账号\n * password: '123456', // 用户密码\n * accessMode: 'GET', // 请求方式\n * preserveToken: true, // 是否将 token 存储到本地,如果设置为 `false`,则每次创建新的 `Zentao` 实例都会在首次调用 API 之前重新获取 Token\n * debug: true, // 如果设置为 `true`,则会在控制台输出详细日志\n * });\n * // TODO: 使用 zentao 调用其他 API\n */\n constructor(options: ZentaoOptions) {\n this._debug = options.debug ?? false;\n\n this._url = formatZentaoUrl(options.url);\n this._account = options.account;\n this._password = options.password;\n\n // 创建账号标识\n this._identifier = `${this.account}@${this._url}`;\n\n // Zentao 实例名称\n this._sessionName = `ZENTAO-API::${options.sessionName ??\n this._identifier}`;\n\n this._userRequestType = options.accessMode;\n this._preserveToken = options.preserveToken ?? true;\n\n if (this._debug) {\n console.log(\n [\n `${kleur.yellow('▶︎')} ${kleur\n .bold()\n .blue(this._sessionName)} ${kleur.yellow('◀︎')}`,\n ` url: ${kleur.magenta(this.url)}`,\n ` account: ${kleur.magenta(this.account)}`,\n ` password: ${kleur.magenta(this.password)}`,\n ` preserveToken: ${kleur.magenta(\n `${this._preserveToken}`\n )}`,\n ` sessionName: ${kleur.magenta(this._sessionName)}`,\n ` identifier: ${kleur.magenta(this._identifier)}`,\n ` requestType: ${kleur.magenta(this.requestType)}`,\n ].join('\\n')\n );\n }\n\n // 从本地存储加载禅道配置\n if (this._preserveToken) {\n this._store = new Configstore(this._sessionName, {});\n const configFromStore = this._store.get('config');\n if (configFromStore) {\n this._config = new ZentaoConfig(configFromStore);\n\n if (this._debug) {\n console.log(\n [\n kleur.bold(\n `\\n${kleur.gray('➡︎')} ${kleur\n .bold()\n .blue(\n 'Load zentao config from local storage'\n )}`\n ),\n ` ${JSON.stringify(configFromStore)}`,\n ].join('\\n')\n );\n }\n }\n }\n }\n\n /**\n * 禅道服务器地址\n */\n get url(): string {\n return this._url;\n }\n\n /**\n * 当前实例名称\n */\n get sessionName(): string {\n return this._sessionName;\n }\n\n /**\n * 当前服务器和账号标识\n */\n get identifier(): string {\n return this._identifier;\n }\n\n /**\n * 当前用户账号\n */\n get account(): string {\n return this._account;\n }\n\n /**\n * 登录密码\n */\n get password(): string {\n return this._password;\n }\n\n /**\n * 请求方式\n */\n get requestType(): ZentaoRequestType {\n return this._userRequestType ?? this._config?.requestType ?? 'GET';\n }\n\n /**\n * 当前用于验证的 Token 字符串\n */\n get token(): string {\n return this._config?.token ?? '';\n }\n\n /**\n * 登录到禅道并更新用于请求 API 的 token,通常不需要手动调用此方法,在调用 API 时会自动判断 token 是否可用,如果不可用会自动调用此方法\n *\n * @returns 返回请求结果,当登录成功时,其中 `result` 字段为所登录的用户信息对象\n * @example\n * import { Zentao } from 'zentao-api';\n * const zentao = new Zentao({\n * url: 'https://pro.demo.zentao.net/', account: 'demo', password: '123456'\n * });\n * const result = await zentao.login();\n * const user = result.result; // 获取当前登录的用户对象\n * console.log('当前登录的用户名称为:', user.realname);\n */\n async login(): Promise<ZentaoApiResult> {\n await this.fetchConfig();\n\n const res = await this.m('user')\n .f('login')\n .useConverter((remoteData, result) => {\n if (remoteData.user) {\n result.result = remoteData.user;\n }\n return result;\n })\n .post({account: this.account, password: this.password});\n\n return res;\n }\n\n /**\n * 获取禅道服务器配置\n * @returns 禅道服务器配置\n */\n async fetchConfig(): Promise<ZentaoConfig> {\n const url = `${this._url}/?mode=getconfig`;\n try {\n const resp = await axios.get(url);\n\n const config = new ZentaoConfig(resp.data);\n this._config = config;\n\n this._log('fetchConfig', {resp});\n } catch (error) {\n this._log('fetchConfig', {url, error});\n throw error;\n }\n\n return this._config;\n }\n\n /**\n * 根据模块名创建一个禅道请求构建实例\n * @param moduleName 模块名\n * @param methodName 方法名\n * @param params 请求参数\n * @returns 禅道请求构建实例\n */\n module(\n moduleName: string,\n methodName?: string,\n params?: ZentaoRequestParams\n ): ZentaoRequestBuilder {\n return new ZentaoRequestBuilder(this, moduleName, methodName, params);\n }\n\n /**\n * 根据模块名创建一个禅道请求构建实例\n * @param moduleName 模块名\n * @param methodName 方法名\n * @param params 请求参数\n * @returns 禅道请求构建实例\n * @alias module\n */\n m(\n moduleName: string,\n methodName?: string,\n params?: ZentaoRequestParams\n ): ZentaoRequestBuilder {\n return this.module(moduleName, methodName, params);\n }\n\n /**\n * 向禅道服务器发起请求\n * @param moduleName 模块名\n * @param methodName 方法名\n * @param options 其他请求选项\n * @returns 请求结果\n */\n async request(\n moduleName: string,\n methodName: string = 'index',\n options: {\n params?: ZentaoRequestParams;\n data?: string | Record<string, any>;\n name?: string;\n method?: ZentaoRequestMethod;\n url?: string;\n resultConvertor?: (\n remoteData: any,\n result: ZentaoApiResult\n ) => ZentaoApiResult;\n fields?: string[];\n } = {}\n ): Promise<ZentaoApiResult> {\n if (\n (!this._config || this._config?.isTokenExpired) &&\n `${moduleName}/${methodName}`.toLowerCase() !== 'user/login'\n ) {\n await this.login();\n }\n\n if (!this._config) {\n throw new Error(\n `Zentao config is empty, makesure to fetch config before request from ${moduleName}-${methodName}.`\n );\n }\n\n const params = normalizeRequestParams(options.params);\n const url =\n options.url ?? this.createUrl(moduleName, methodName, params);\n const name =\n options.name ??\n `${moduleName}${methodName[0].toUpperCase()}${methodName.substr(\n 1\n )}`;\n const method = options.method ?? 'GET';\n const headers = {\n Cookie: this._config.tokenAuth,\n };\n\n let {data} = options;\n if (data && typeof data === 'object') {\n const formData: Record<string, any> = {};\n for (const key of Object.keys(data)) {\n const value = data[key];\n if (Array.isArray(value)) {\n value.forEach((item, index) => {\n formData[`${key}[${index}]`] = item;\n });\n delete data[key];\n } else {\n formData[key] = value;\n }\n }\n data = querystring.stringify(formData);\n }\n\n try {\n const resp = await axios.request({\n method,\n url,\n data,\n headers,\n });\n\n let result: ZentaoApiResult;\n const remoteData = resp.data;\n if (typeof remoteData === 'object' && remoteData !== null) {\n if (\n typeof remoteData.data === 'string' &&\n (remoteData.data[0] === '[' || remoteData.data[0] === '{')\n ) {\n remoteData.data = JSON.parse(remoteData.data);\n }\n\n const success =\n remoteData.status === 'success' ||\n remoteData.result === 'success';\n result = {\n status: success ? 1 : 0,\n msg: remoteData.message ?? (success ? 'success' : 'error'),\n result: remoteData.data ?? remoteData.result,\n };\n } else {\n result = {status: 0, msg: 'error', result: resp.data};\n }\n\n if (options.resultConvertor) {\n result = options.resultConvertor(remoteData, result);\n }\n\n if (\n options.fields &&\n typeof result.result === 'object' &&\n result.result\n ) {\n if (Array.isArray(result.result)) {\n result.result = result.result.map(x =>\n slimmingObject(x, options.fields!)\n );\n } else {\n result.result = slimmingObject(\n result.result,\n options.fields!\n );\n }\n }\n\n if (\n `${moduleName}/${methodName}` === 'user/login' &&\n result.status === 1\n ) {\n this._config?.renewToken();\n if (this._preserveToken) {\n this._store?.set('config', this._config);\n }\n }\n\n this._log(name, {url, result, params, data, resp});\n return result;\n } catch (error) {\n this._log(name, {url, error, params, data});\n throw error;\n }\n }\n\n /**\n * 生成请求地址\n * @param moduleName 模块名\n * @param methodName 方法名\n * @param params 其他参数\n * @returns 请求地址\n */\n createUrl(\n moduleName: string,\n methodName: string = 'index',\n params?: ZentaoRequestParamPair[]\n ): string {\n const config = this._config;\n if (!config) {\n throw new Error(\n 'Zentao config is empty, makesure fetch config before call others api.'\n );\n }\n\n const urlParts: string[] = [this.url];\n if (this.requestType === 'PATH_INFO') {\n urlParts.push(moduleName, config.requestFix, methodName);\n if (params) {\n for (const paramPair of params) {\n urlParts.push(config.requestFix, paramPair[1]);\n }\n }\n urlParts.push('.json');\n } else {\n urlParts.push(\n `?${config.moduleVar}=${moduleName}&${config.methodVar}=${methodName}`\n );\n if (params) {\n for (const paramPair of params) {\n urlParts.push(\n `&${paramPair[0]}=${encodeURIComponent(paramPair[1])}`\n );\n }\n }\n urlParts.push(`&${config.viewVar}=json`);\n }\n return urlParts.join('');\n }\n\n /**\n * 输出 API 请求日志\n * @param name 名称\n * @param atrributes 日志属性对象\n * @param others 其他日志内容\n */\n protected _log(\n name: string,\n atrributes: {\n url?: string;\n params?: ZentaoRequestParamPair[];\n data?: string | Record<string, any>;\n method?: string;\n resp?: AxiosResponse;\n result?: ZentaoApiResult;\n error?: any;\n },\n ...others: any[]\n ) {\n if (!this._debug) {\n return;\n }\n\n const logLines = ['\\n\\n'];\n const {resp, result} = atrributes;\n const status = resp?.status ?? '';\n const success = result ? result.status === 1 : status === 200;\n const url = (resp ? resp.config.url : atrributes.url) ?? '';\n const method = (resp ? resp.config.method : atrributes.method) ?? 'GET';\n\n logLines.push(\n kleur.bold(\n `${kleur.gray('➡︎')} ${kleur[\n success ? 'green' : 'red'\n ]().inverse(` ${name} ${success ? '✓' : '𐄂'} `)}`\n )\n );\n\n logLines.push(\n `\\n ${kleur\n .bold()\n .blue(method.toUpperCase())} ${kleur.blue().underline(url)}`\n );\n logLines.push(\n ` status: ${kleur[status === 200 ? 'green' : 'red'](\n `● ${status}`\n )} ${kleur.gray(resp?.statusText ?? '')}`\n );\n\n if (atrributes.params) {\n logLines.push(`\\n ${kleur.bold().blue('Request Parameters')}`);\n for (const pair of atrributes.params) {\n const pairValue =\n typeof pair[1] === 'string'\n ? pair[1]\n : JSON.stringify(pair[1]);\n logLines.push(` ${pair[0]}: ${kleur.magenta(pairValue)}`);\n }\n }\n\n if (resp?.config?.headers) {\n logLines.push(`\\n ${kleur.bold().blue('Request Headers')}`);\n const headers = resp.config.headers;\n for (const key of Object.keys(headers)) {\n const value =\n typeof headers[key] === 'string'\n ? headers[key]\n : JSON.stringify(headers[key]);\n logLines.push(` ${key}: ${kleur.magenta(value)}`);\n }\n }\n\n if (atrributes.data) {\n let {data} = atrributes;\n logLines.push(`\\n ${kleur.bold().blue('Request Data')}`);\n if (typeof data === 'string') {\n data = querystring.parse(data);\n }\n for (const key of Object.keys(data)) {\n const value =\n typeof data[key] === 'string'\n ? data[key]\n : JSON.stringify(data[key]);\n logLines.push(` ${key}: ${kleur.magenta(value)}`);\n }\n }\n\n if (result) {\n logLines.push(`\\n ${kleur.bold().cyan('Response Data')}`);\n logLines.push(\n ` status: ${kleur[result.status === 1 ? 'green' : 'red'](\n result.status\n )},`\n );\n if (result.msg !== undefined) {\n logLines.push(\n ` msg: ${kleur[result.status === 1 ? 'green' : 'red'](\n typeof result.msg === 'string'\n ? result.msg\n : JSON.stringify(result.msg)\n )},`\n );\n }\n if (result.result !== undefined) {\n logLines.push(\n ` result: ${kleur.magenta(\n JSON.stringify(result.result)\n )}`\n );\n }\n }\n if (resp && (!result || !success || !result.result)) {\n logLines.push(`\\n ${kleur.bold().cyan('Response Text')}`);\n logLines.push(\n ` ${\n typeof resp.data === 'string'\n ? resp.data\n : JSON.stringify(resp.data)\n }`\n );\n }\n\n if (atrributes.error) {\n logLines.push(`\\n ${kleur.bold().red('Error')}`);\n logLines.push(` ${kleur.red(atrributes.error)}`);\n }\n\n if (others && others.length) {\n logLines.push(...others);\n }\n\n console.log(logLines.join('\\n'));\n }\n}\n","import md5 from 'md5';\nimport {ZentaoApiResult} from './types';\nimport {formatDate} from './utils';\nimport Zentao from './zentao';\n\n/**\n * 禅道 API 请求类\n *\n * @example\n * ```js\n * import {ZentaoApi} from 'zentao-api';\n * const zentao = new ZentaoApi({\n * url: 'https://pro.demo.zentao.net/', account: 'demo', password: '123456'\n * });\n * // TODO: 使用 zentao 调用其他 API\n * ```\n */\nexport default class ZentaoApi extends Zentao {\n /**\n * 调用指定名称的 API\n * @param apiName API 名称\n * @param params 请求参数\n * @returns 调用结果\n * @example\n * ```js\n * import {ZentaoApi} from 'zentao-api';\n * const zentao = new ZentaoApi({\n * url: 'https://pro.demo.zentao.net/', account: 'demo', password: '123456'\n * });\n *\n * const res = await zentao.call('getProductList', {status: 'noclosed'});\n * ```\n */\n call(\n apiName: Exclude<keyof ZentaoApi, 'call' | keyof Zentao>,\n params?: Record<string, any>\n ): Promise<ZentaoApiResult> {\n const func = this[apiName] as (\n params?: Record<string, any>\n ) => Promise<ZentaoApiResult>;\n if (!func || typeof func !== 'function') {\n throw new Error(`Api method named \"${apiName}\" undefined.`);\n }\n return func.call(this, params);\n }\n\n /**\n * 获取当前已添加部门列表数据\n *\n * @param {{deptID?: number, extraFields?: string[]}} [params] 请求参数,`params.deptID` 用于指定部门ID,`params.extraFields` 指定额外要返回的字段\n * @returns 请求结果\n * @example\n * ```js\n * import { ZentaoApi } from 'zentao-api';\n * const zentao = new ZentaoApi({\n * url: 'https://pro.demo.zentao.net/', account: 'demo', password: '123456'\n * });\n * const result = await zentao.getDeptList({deptID: 1, extraFields: 'sons'});\n * if (result.status) {\n * console.log('当前部门的直属下级部门列表', result.result.sons);\n * }\n * ```\n */\n getDeptList(params?: {\n deptID?: number;\n extraFields?: string[];\n }): Promise<ZentaoApiResult> {\n return this.module('dept', 'browse')\n .withParams([['deptID', params?.deptID ?? 0]])\n .filterFields(\n 'title',\n 'deptID',\n 'parentDepts',\n 'sons',\n 'tree',\n params?.extraFields\n )\n .get();\n }\n\n /**\n * 批量添加部门\n *\n * @param params 请求参数,其中 `params.parentDeptID` 为所属上级部门ID,`params.depts` 为新增部门名称列表\n * @returns 请求结果\n * @example\n * import { ZentaoApi } from 'zentao-api';\n * const zentao = new ZentaoApi({\n * url: 'https://pro.demo.zentao.net/', account: 'demo', password: '123456'\n * });\n *\n * // 在部门 ID 为 3 的部门下添加两个子部门:开发部、测试部\n * const result = await zentao.addDept({parentDeptID: 3, depts: ['开发部', '测试部']});\n * if (result.status) {\n * console.log('部门添加成功');\n * }\n */\n async addDept(params: {\n parentDeptID?: number;\n depts: string[];\n }): Promise<ZentaoApiResult> {\n const res = await this.request('dept', 'manageChild', {\n name: 'addDept',\n method: 'POST',\n data: {parentDeptID: params.parentDeptID ?? 0, depts: params.depts},\n resultConvertor: (_remoteData, result) => {\n if (!result.status && result.result.includes('reload')) {\n result.status = 1;\n result.msg = 'success';\n result.result = null;\n }\n return result;\n },\n });\n return res;\n }\n\n /**\n * 获取用户列表,可以指定用户所属部门\n *\n * @param {{deptID?: number, orderBy?: string, recTotal?: number, recPerPage?: number, pageID?: number, extraFields?: string[]}} [params] 请求参数,`params.deptID` 用于指定部门ID(如果不指定则获取所有用户数据),`params.extraFields` 指定额外要返回的字段,其他字段指定分页信息\n * @returns 请求结果\n * @example\n * ```js\n * import { ZentaoApi } from 'zentao-api';\n * const zentao = new ZentaoApi({\n * url: 'https://pro.demo.zentao.net/', account: 'demo', password: '123456'\n * });\n * const result = await zentao.getUserList({deptID: 1});\n * if (result.status) {\n * console.log('当前部门的用户列表数据为', result.result.users);\n * }\n * ```\n */\n async getUserList(params?: {\n deptID?: number;\n orderBy?: string;\n recTotal?: number;\n recPerPage?: number;\n pageID?: number;\n extraFields?: string[];\n }): Promise<ZentaoApiResult> {\n const res = await this.request('company', 'browse', {\n name: 'getUserList',\n params: [\n ['param', params?.deptID ?? 0],\n ['type', 'bydept'],\n ['orderBy', params?.orderBy ?? 'id'],\n ['recTotal', params?.recTotal ?? 0],\n ['recPerPage', params?.recPerPage ?? 20],\n ['pageID', params?.pageID ?? 1],\n ],\n fields: ['title', 'users', ...(params?.extraFields ?? [])],\n });\n return res;\n }\n\n /**\n * 添加用户时如果需要为新用 户分配部门、职位、权限,请求该方法即可返回相关可用数据\n *\n * @param {{extraFields?: string[]}} [params] 请求参数,`params.extraFields` 指定额外要返回的字段\n * @returns 请求结果\n * @example\n * ```js\n * import { ZentaoApi } from 'zentao-api';\n * const zentao = new ZentaoApi({\n * url: 'https://pro.demo.zentao.net/', account: 'demo', password: '123456'\n * });\n * const result = await zentao.getUserCreateParams();\n * ```\n */\n async getUserCreateParams(params?: {\n extraFields?: string[];\n }): Promise<ZentaoApiResult> {\n const res = await this.request('user', 'create', {\n name: 'getUserCreateParams',\n fields: [\n 'title',\n 'depts',\n 'groupList',\n 'roleGroup',\n ...(params?.extraFields ?? []),\n ],\n });\n return res;\n }\n\n /**\n * 向系统添加一个用户\n * @param params 用户信息参数\n * @returns\n * @example\n * ```js\n * import { ZentaoApi } from 'zentao-api';\n * const zentao = new ZentaoApi({\n * url: 'https://pro.demo.zentao.net/', account: 'demo', password: '123456'\n * });\n * const result = await zentao.addUser({\n * account: 'Jack10', // 必填参数 用户名\n * password: '123456', // 必填参数 密码\n * realname: 'Jack10', // 必填参数 真实姓名\n * dept: 1, // 选填参数 所属部门【部门ID】\n * join: '2019-11-11', // 选填参数 入职日期【格式:2019-11-19】\n * role: 'dev', // 选填参数 职位【权限标识,例如:'dev','qd'】\n * group: 2, // 选填参数 权限分组【分组ID】\n * email: 'jack@gmail.com', // 选填参数 邮箱\n * commiter: 'Jack10', // 选填参数 源代码账号\n * gender: 'm', // 选填参数 性别【m:男|f:女】\n * });\n * if (result.status) {\n * console.log('用户创建成功');\n * }\n * ```\n */\n async addUser(params: {\n account: string;\n password: string;\n realname: string;\n dept?: number;\n join?: string;\n role?: string;\n group?: number;\n email?: string;\n commiter?: string;\n gender?: 'm' | 'f';\n }): Promise<ZentaoApiResult> {\n // Get the random number required for encryption.\n const paramsRes = await this.getUserCreateParams({\n extraFields: ['rand'],\n });\n const rand = paramsRes.result.rand;\n\n const password = md5(`${params.password}${rand}`);\n const data: Record<string, any> = {\n dept: params.dept ?? 0,\n account: params.account,\n password1: password,\n password2: password,\n realname: params.realname,\n join: params.join,\n role: params.role,\n group: params.group,\n email: params.email,\n commiter: params.commiter,\n passwordStrength: 1,\n verifyPassword: md5(`${md5(this.password)}${rand}`),\n };\n if (params.gender) {\n data.gender = params.gender;\n }\n const res = await this.request('user', 'create', {\n name: 'addUser',\n method: 'POST',\n data,\n resultConvertor: (_remoteData, result) => {\n if (!result.status && result.result.includes('reload')) {\n result.status = 1;\n result.msg = 'success';\n result.result = null;\n }\n return result;\n },\n });\n return res;\n }\n\n /**\n * 获取产品列表\n * @param {{productID?: number, line?: number, status?: 'noclosed'|'closed'|'involved'|'all', orderBy?: string, recTotal?: number, recPerPage?: number, pageID?: number, extraFields?: string[]}} [params] 请求参数,`params.productID` 用于指定所属产品,`params.status` 用于指定产品状态,`params.extraFields` 指定额外要返回的字段,其他字段指定分页信息\n * @returns 请求结果\n * @example\n * ```js\n * import { ZentaoApi } from 'zentao-api';\n * const zentao = new ZentaoApi({\n * url: 'https://pro.demo.zentao.net/', account: 'demo', password: '123456'\n * });\n * const result = await zentao.getProductList({status: 'noclosed'});\n * if (result.status) {\n * console.log('产品列表', result.result.products);\n * }\n * ```\n */\n async getProductList(params?: {\n productID?: number;\n line?: number;\n status?: 'noclosed' | 'closed' | 'involved' | 'all';\n orderBy?: string;\n recTotal?: number;\n recPerPage?: number;\n pageID?: number;\n extraFields?: string[];\n }): Promise<ZentaoApiResult> {\n const res = await this.request('product', 'all', {\n name: 'getProductList',\n params: [\n ['productID', params?.productID ?? 0],\n ['line', params?.line ?? 0],\n ['status', params?.status ?? 'noclosed'],\n ['orderBy', params?.orderBy ?? 'order_desc'],\n ['recTotal', params?.recTotal ?? 0],\n ['recPerPage', params?.recPerPage ?? 10],\n ['pageID', params?.pageID ?? 1],\n ],\n fields: [\n 'title',\n 'products',\n 'productStats',\n ...(params?.extraFields ?? []),\n ],\n });\n return res;\n }\n\n /**\n * 获取指定的产品信息\n * @param {{productID: number, extraFields?: string[]}} [params] 请求参数,`params.productID` 用于指定产品 ID,params.extraFields` 指定额外要返回的字段,其他字段指定分页信息\n * @returns 请求结果\n * @example\n * ```js\n * import { ZentaoApi } from 'zentao-api';\n * const zentao = new ZentaoApi({\n * url: 'https://pro.demo.zentao.net/', account: 'demo', password: '123456'\n * });\n * const result = await zentao.getProduct({productID: 1});\n * if (result.status) {\n * console.log('产品信息为', result.result.product);\n * }\n * ```\n */\n async getProduct(params: {\n productID: number;\n extraFields?: string[];\n }): Promise<ZentaoApiResult> {\n const res = await this.request('product', 'view', {\n name: 'getProduct',\n params: [['productID', params.productID]],\n fields: [\n 'title',\n 'products',\n 'product',\n 'branches',\n 'dynamics',\n ...(params?.extraFields ?? []),\n ],\n });\n return res;\n }\n\n /**\n * 获取添加产品时所需要一些数据,例如产品线数据列表、产品负责人数据列表等数据,添加产品时,可以为其绑定这些信息\n *\n * @param {{extraFields?: string[]}} [params] 请求参数,`params.extraFields` 指定额外要返回的字段\n * @returns 请求结果\n * @example\n * ```js\n * import { ZentaoApi } from 'zentao-api';\n * const zentao = new ZentaoApi({\n * url: 'https://pro.demo.zentao.net/', account: 'demo', password: '123456'\n * });\n * const result = await zentao.getProductCreateParams();\n * ```\n */\n async getProductCreateParams(params?: {\n extraFields?: string[];\n }): Promise<ZentaoApiResult> {\n const res = await this.request('product', 'create', {\n name: 'getProductCreateParams',\n fields: [\n 'title',\n 'products',\n 'lines',\n 'poUsers',\n 'qdUsers',\n 'rdUsers',\n 'groups',\n ...(params?.extraFields ?? []),\n ],\n });\n return res;\n }\n\n /**\n * 向系统添加一个产品,添加新产品时可以指定相关负责人,设置产品类型和访问权限。注意:假如参数 acl = custom ,可以额外传递参数,例如: 'whitelist' => array(1, 2) ,添加白名单为权限分组列表中 ID\n * @param params 产品信息参数\n * @returns\n * @example\n * ```js\n * import { ZentaoApi } from 'zentao-api';\n * const zentao = new ZentaoApi({\n * url: 'https://pro.demo.zentao.net/', account: 'demo', password: '123456'\n * });\n * const result = await zentao.addProduct({\n * name: '登月行动', // 必填参数 产品名称\n * code: 'to_the_moon', // 必填参数 产品代号\n * line: 0, // 选填参数 产品线ID\n * PO: 'admin', // 选填参数 产品负责人账号\n * QD: 'jim', // 选填参数 测试负责人账号\n * RD: 'lilei', // 选填参数 发布负责人账号\n * type: normal', // 选填参数 产品类型【normal正常|branch多分支|platform多平台】\n * desc: '登月行动,刻不容缓', // 选填参数 产品描述\n * acl: 'custom', // 选填参数 访问控制【open默认|private私有|custom白名单】\n * whitelist: [], // 选填参数 白名单,权限分组列表中 ID\n * });\n * if (result.status) {\n * console.log('产品创建成功');\n * }\n * ```\n */\n async addProduct(params: {\n name: string;\n code: string;\n line?: number;\n PO?: string;\n QD?: string;\n RD?: string;\n type?: 'normal' | 'branch' | 'platform';\n desc?: string;\n acl?: 'open' | 'custom' | 'private';\n whitelist?: number[];\n }): Promise<ZentaoApiResult> {\n const res = await this.request('product', 'create', {\n name: 'addProduct',\n method: 'POST',\n data: {\n name: params.name,\n code: params.code,\n line: params.line ?? 0,\n PO: params.PO,\n QD: params.QD,\n RD: params.RD,\n type: params.type ?? 'normal',\n desc: params.desc,\n acl: params.acl ?? 'open',\n whitelist: params.whitelist,\n },\n });\n return res;\n }\n\n /**\n * 获取项目列表\n * @param {{status?: 'undone'|'wait'|'doing'|'suspended'|'closed'|'all', projectID?: number, orderBy?: string, productID?: number, recTotal?: number, recPerPage?: number, pageID?: number, extraFields?: string[]}} [params] 请求参数,`params.productID` 用于指定所属产品,`params.status` 用于指定项目状态,`params.extraFields` 指定额外要返回的字段,其他字段指定分页信息\n * @returns 请求结果\n * @example\n * ```js\n * import { ZentaoApi } from 'zentao-api';\n * const zentao = new ZentaoApi({\n * url: 'https://pro.demo.zentao.net/', account: 'demo', password: '123456'\n * });\n * const result = await zentao.getProjectList({status: 'undone'});\n * if (result.status) {\n * console.log('项目列表', result.result.products);\n * }\n * ```\n */\n async getProjectList(params?: {\n status?: 'undone' | 'wait' | 'doing' | 'suspended' | 'closed' | 'all';\n projectID?: number;\n orderBy?: string;\n productID?: number;\n recTotal?: number;\n recPerPage?: number;\n pageID?: number;\n extraFields?: string[];\n }): Promise<ZentaoApiResult> {\n const res = await this.request('project', 'all', {\n name: 'getProjectList',\n params: [\n ['status', params?.status ?? 'undone'],\n ['projectID', params?.projectID ?? 0],\n ['orderBy', params?.orderBy ?? 'order_desc'],\n ['productID', params?.productID ?? 0],\n ['recTotal', params?.recTotal ?? 0],\n ['recPerPage', params?.recPerPage ?? 10],\n ['pageID', params?.pageID ?? 1],\n ],\n fields: [\n 'title',\n 'projects',\n 'projectStats',\n 'teamMembers',\n 'users',\n ...(params?.extraFields ?? []),\n ],\n });\n return res;\n }\n\n /**\n * 获取指定的项目信息\n * @param {{projectID: number, extraFields?: string[]}} [params] 请求参数,`params.projectID` 用于指定项目 ID,params.extraFields` 指定额外要返回的字段,其他字段指定分页信息\n * @returns 请求结果\n * @example\n * ```js\n * import { ZentaoApi } from 'zentao-api';\n * const zentao = new ZentaoApi({\n * url: 'https://pro.demo.zentao.net/', account: 'demo', password: '123456'\n * });\n * const result = await zentao.getProject({projectID: 1});\n * if (result.status) {\n * console.log('项目信息为', result.result.project);\n * }\n * ```\n */\n async getProject(params: {\n projectID: number;\n extraFields?: string[];\n }): Promise<ZentaoApiResult> {\n const res = await this.request('product', 'view', {\n name: 'getProduct',\n params: [['projectID', params.projectID]],\n fields: [\n 'title',\n 'products',\n 'project',\n 'teamMembers',\n 'dynamics',\n ...(params?.extraFields ?? []),\n ],\n });\n return res;\n }\n\n /**\n * 获取添加项目时所需要一些数据,例如获取正常状态产品列表信息,用于添加项目时为其绑定产品,从而用于项目与产品需求关联。还可获取权限分组列表,用于项目绑定访问控制权限\n *\n * @param {{extraFields?: string[]}} [params] 请求参数,`params.extraFields` 指定额外要返回的字段\n * @returns 请求结果\n * @example\n * ```js\n * import { ZentaoApi } from 'zentao-api';\n * const zentao = new ZentaoApi({\n * url: 'https://pro.demo.zentao.net/', account: 'demo', password: '123456'\n * });\n * const result = await zentao.getProjectCreateParams();\n * ```\n */\n async getProjectCreateParams(params?: {\n extraFields?: string[];\n }): Promise<ZentaoApiResult> {\n const res = await this.request('project', 'create', {\n name: 'getProjectCreateParams',\n fields: [\n 'title',\n 'projects',\n 'groups',\n 'allProducts',\n ...(params?.extraFields ?? []),\n ],\n });\n return res;\n }\n\n /**\n * 向系统添加一个项目,添加新项目时可以指定相关负责人,设置产品类型和访问权限\n * @param params 项目信息参数\n * @returns\n * @example\n * ```js\n * import { ZentaoApi } from 'zentao-api';\n * const zentao = new ZentaoApi({\n * url: 'https://pro.demo.zentao.net/', account: 'demo', password: '123456'\n * });\n * const result = await zentao.addProject({\n * name: '禅道项目管理开发', // 必填参数 项目名称\n * code: 'zentao', // 必填参数 项目代号\n * begin: '2020-01-01', // 必填参数 起始日期【时间格式:2019-11-20】\n * end: '2020-06-06', // 必填参数 结束日期【时间格式:2019-11-20】\n * days: '100', // 选填参数 可用工作日\n * team: '禅道开发团队', // 选填参数 团队名称\n * type: 'sprint', // 选填参数 项目类型【sprint短期项目|waterfall长期项目|ops运维项目】\n * desc: '专业的研发项目管理软件。', // 选填参数 项目描述\n * acl: 'custom', // 选填参数 访问控制【open默认设置|private私有项目|custom白名单】\n * whitelist: [1, 2], // 选填参数 白名单中的权限分组 ID\n * products: [4, 5], // 选填参数 关联产品 ID\n * plans: [5, 6] // 选填参数 关联产品 ID 所属计划 ID\n * });\n * if (result.status) {\n * console.log('项目创建成功');\n * }\n * ```\n */\n async addProject(params: {\n name: string;\n code: string;\n begin: string;\n end: string;\n days?: number;\n team?: string;\n type?: 'sprint' | 'waterfall' | 'ops';\n desc?: string;\n acl?: 'open' | 'custom' | 'private';\n whitelist?: number[];\n products?: number[];\n plans?: number[];\n }): Promise<ZentaoApiResult> {\n const res = await this.request('project', 'create', {\n name: 'addProject',\n method: 'POST',\n data: {\n name: params.name,\n code: params.code,\n begin: params.begin,\n end: params.end,\n days: params.days ?? 0,\n team: params.team,\n type: params.type ?? 'sprint',\n desc: params.desc,\n acl: params.acl ?? 'open',\n whitelist: params.whitelist,\n products: params.products ?? [0],\n plans: params.plans ?? [0],\n status: 'wait',\n },\n });\n return res;\n }\n\n /**\n * 获取项目任务列表\n * @param {{projectID: number, status?: 'unclosed'|'assignedtome'|'myinvolved'|'delayed'|'needconfirm'|'wait'|'doing'|'undone'|'finishedbyme'|'done'|'closed'|'cancel'|'all', param?: number, orderBy?: string, recTotal?: number, recPerPage?: number, pageID?: number, extraFields?: string[]}} [params] 请求参数,`params.projectID` 用于指定所属项目,`params.status` 用于指定任务状态,`params.extraFields` 指定额外要返回的字段,其他字段指定分页信息\n * @returns 请求结果\n * @example\n * ```js\n * import { ZentaoApi } from 'zentao-api';\n * const zentao = new ZentaoApi({\n * url: 'https://pro.demo.zentao.net/', account: 'demo', password: '123456'\n * });\n * const result = await zentao.getProjectList({projectID: 1, status: 'undone'});\n * if (result.status) {\n * console.log('任务列表', result.result.tasks);\n * }\n * ```\n */\n async getTaskList(params: {\n projectID: number;\n status?:\n | 'unclosed'\n | 'assignedtome'\n | 'myinvolved'\n | 'delayed'\n | 'needconfirm'\n | 'wait'\n | 'doing'\n | 'undone'\n | 'finishedbyme'\n | 'done'\n | 'closed'\n | 'cancel'\n | 'all';\n param?: number;\n orderBy?: string;\n recTotal?: number;\n recPerPage?: number;\n pageID?: number;\n extraFields?: string[];\n }): Promise<ZentaoApiResult> {\n const res = await this.request('project', 'task', {\n name: 'getTaskList',\n params: [\n ['projectID', params.projectID],\n ['status', params?.status ?? 'unclosed'],\n ['param', params?.param ?? 0],\n ['orderBy', params?.orderBy ?? ''],\n ['recTotal', params?.recTotal ?? 0],\n ['recPerPage', params?.recPerPage ?? 20],\n ['pageID', params?.pageID ?? 1],\n ],\n fields: [\n 'title',\n 'projects',\n 'project',\n 'products',\n 'tasks',\n ...(params?.extraFields ?? []),\n ],\n });\n return res;\n }\n\n /**\n * 获取指定的任务信息\n * @param {{taskID: number, extraFields?: string[]}} [params] 请求参数,`params.taskID` 用于指定任务 ID,params.extraFields` 指定额外要返回的字段,其他字段指定分页信息\n * @returns 请求结果\n * @example\n * ```js\n * import { ZentaoApi } from 'zentao-api';\n * const zentao = new ZentaoApi({\n * url: 'https://pro.demo.zentao.net/', account: 'demo', password: '123456'\n * });\n * const result = await zentao.getTask({taskID: 1});\n * if (result.status) {\n * console.log('任务信息为', result.result.products);\n * }\n * ```\n */\n async getTask(params: {\n taskID: number;\n extraFields?: string[];\n }): Promise<ZentaoApiResult> {\n const res = await this.request('task', 'view', {\n name: 'getProduct',\n params: [['taskID', params.taskID]],\n fields: [\n 'title',\n 'task',\n 'project',\n 'product',\n ...(params?.extraFields ?? []),\n ],\n });\n return res;\n }\n\n /**\n * 添加单个任务时,可以先通 过此方法,获取添加任务中所需要的相关信息\n *\n * @param {{extraFields?: string[]}} [params] 请求参数,`params.extraFields` 指定额外要返回的字段\n * @returns 请求结果\n * @example\n * ```js\n * import { ZentaoApi } from 'zentao-api';\n * const zentao = new ZentaoApi({\n * url: 'https://pro.demo.zentao.net/', account: 'demo', password: '123456'\n * });\n * const result = await zentao.getTaskCreateParams();\n * ```\n */\n async getTaskCreateParams(params?: {\n extraFields?: string[];\n }): Promise<ZentaoApiResult> {\n const res = await this.request('task', 'create', {\n name: 'getTaskCreateParams',\n fields: [\n 'title',\n 'projects',\n 'users',\n 'stories',\n 'moduleOptionMenu',\n 'project',\n ...(params?.extraFields ?? []),\n ],\n });\n return res;\n }\n\n /**\n * 向系统添加一个任务\n * @param params 任务信息参数\n * @returns\n * @example\n * ```js\n * import { ZentaoApi } from 'zentao-api';\n * const zentao = new ZentaoApi({\n * url: 'https://pro.demo.zentao.net/', account: 'demo', password: '123456'\n * });\n * const result = await zentao.addTask({\n * project: 1, // 必填参数 所属项目ID\n * type: 'ui', // 必填参数 任务类型【design设计|devel开发|test测试|study研究|discuss讨论|ui界面|affair事务|misc其他】\n * module: 0, // 选填参数 所属模块ID\n * assignedTo: 'lisa', // 选填参数 指派用户,示例:'assignedTo' => array('zhangsan')\n * color: '', // 选填参数 任务颜色【示例:#ff4e3e】\n * name: '设计界面', // 必填参数 任务名称\n * pri: 2, // 选填参数 优先级【分为 1、2、3、4级】\n * estimate: 1, // 选填参数 预计时间【小时】\n * desc: '设计界面描述', // 选填参数 任务描述\n * estStarted: '2021-01-11', // 选填参数 日程规划开始【格式:2019-11-20】\n * deadline: '2021-11-12', // 选填参数 日程规划结束【格式:2019-11-28】\n * mailto: 'lisa' // 选填参数 抄送用户,示例:'mailto' => array('lisi', 'niuqi', 'zhangsan'), 代表同时抄送给 3 个用户。\n * });\n * if (result.status) {\n * console.log('任务创建成功');\n * }\n * ```\n */\n async addTask(params: {\n project: number;\n name: string;\n type?:\n | 'design'\n | 'devel'\n | 'test'\n | 'study'\n | 'discuss'\n | 'ui'\n | 'affair'\n | 'misc';\n module?: number;\n color?: string;\n pri?: number;\n estimate?: number;\n desc?: string;\n estStarted?: string;\n deadline?: string;\n assignedTo?: string[];\n mailto?: string[];\n }): Promise<ZentaoApiResult> {\n const res = await this.request('task', 'create', {\n name: 'addTask',\n method: 'POST',\n data: {\n project: params.project,\n type: params.type ?? 'devl',\n name: params.name,\n module: params.module ?? 0,\n color: params.color,\n pri: params.pri ?? 3,\n estimate: params.estimate ?? 0,\n desc: params.desc,\n estStarted: params.estStarted,\n deadline: params.deadline,\n assignedTo: params.assignedTo ?? [''],\n mailto: params.mailto ?? [''],\n },\n });\n return res;\n }\n\n /**\n * 获取该任务的所属项目详情、任务详情、任务操作记录,同时获取用于指派完成的用户列表\n *\n * @param {{extraFields?: string[]}} [params] 请求参数,`params.extraFields` 指定额外要返回的字段\n * @returns 请求结果\n * @example\n * ```js\n * import { ZentaoApi } from 'zentao-api';\n * const zentao = new ZentaoApi({\n * url: 'https://pro.demo.zentao.net/', account: 'demo', password: '123456'\n * });\n * const result = await zentao.getTaskFinishParams({taskID: 1});\n * ```\n */\n async getTaskFinishParams(params: {\n taskID: number;\n extraFields?: string[];\n }): Promise<ZentaoApiResult> {\n const res = await this.request('task', 'finish', {\n name: 'getTaskFinishParams',\n params: [['taskID', params.taskID]],\n fields: [\n 'title',\n 'users',\n 'task',\n 'project',\n 'actions',\n ...(params?.extraFields ?? []),\n ],\n });\n return res;\n }\n\n /**\n * 完成一个任务\n * @param params 任务信息参数\n * @returns\n * @example\n * ```js\n * import { ZentaoApi } from 'zentao-api';\n * const zentao = new ZentaoApi({\n * url: 'https://pro.demo.zentao.net/', account: 'demo', password: '123456'\n * });\n * const result = await zentao.finishTask({taskID: 1, currentConsumed: 1});\n * if (result.status) {\n * console.log('任务完成');\n * }\n * ```\n */\n async finishTask(params: {\n taskID: number;\n currentConsumed: number;\n consumed?: number;\n assignedTo?: string;\n finishedDate?: string;\n comment?: string;\n }): Promise<ZentaoApiResult> {\n let consumed = params.consumed;\n if (consumed === undefined) {\n const paramsRes = await this.getTaskFinishParams({\n taskID: params.taskID,\n extraFields: ['task'],\n });\n consumed = paramsRes.result.task.consumed;\n }\n\n const res = await this.request('task', 'finish', {\n name: 'finishTask',\n method: 'POST',\n params: [['taskID', params.taskID]],\n data: {\n currentConsumed: params.currentConsumed,\n consumed,\n assignedTo: params.assignedTo,\n finishedDate:\n params.finishedDate ?? formatDate(new Date(), 'yyyy-MM-dd'),\n comment: params.comment,\n status: 'done',\n },\n });\n return res;\n }\n\n /**\n * 获取产品 Bug 列表\n * @param {{productID: number, branch?: number, browseType?: 'all'|'unclosed'|'openedbyme'|'assigntome'|'resolvedbyme'|'toclosed'|'unresolved'|'unconfirmed'|'longlifebugs'|'postponedbugs'|'overduebugs'|'needconfirm', param?: number, orderBy?: string, recTotal?: number, recPerPage?: number, pageID?: number, extraFields?: string[]}} [params] 请求参数,`params.productID` 用于指定所属产品,`params.browseType` 用于指定 bug 列表类型,`params.extraFields` 指定额外要返回的字段,其他字段指定分页信息\n * @returns 请求结果\n * @example\n * ```js\n * import { ZentaoApi } from 'zentao-api';\n * const zentao = new ZentaoApi({\n * url: 'https://pro.demo.zentao.net/', account: 'demo', password: '123456'\n * });\n * const result = await zentao.getProjectList({projectID: 1, status: 'undone'});\n * if (result.status) {\n * console.log('Bug列表', result.result.bugs);\n * }\n * ```\n */\n async getBugList(params: {\n productID: number;\n branch?: number;\n browseType?:\n | 'all'\n | 'unclosed'\n | 'openedbyme'\n | 'assigntome'\n | 'resolvedbyme'\n | 'toclosed'\n | 'unresolved'\n | 'unconfirmed'\n | 'longlifebugs'\n | 'postponedbugs'\n | 'overduebugs'\n | 'needconfirm';\n param?: number;\n orderBy?: string;\n recTotal?: number;\n recPerPage?: number;\n pageID?: number;\n extraFields?: string[];\n }): Promise<ZentaoApiResult> {\n const res = await this.request('bug', 'browse', {\n name: 'getTaskList',\n params: [\n ['productID', params.productID],\n ['branch', params?.branch ?? 0],\n ['browseType', params?.browseType ?? 'unclosed'],\n ['param', params?.param ?? 0],\n ['orderBy', params?.orderBy ?? ''],\n ['recTotal', params?.recTotal ?? 0],\n ['recPerPage', params?.recPerPage ?? 20],\n ['pageID', params?.pageID ?? 1],\n ],\n fields: [\n 'title',\n 'products',\n 'productID',\n 'productName',\n 'product',\n 'moduleName',\n 'modules',\n 'browseType',\n 'bugs',\n ...(params?.extraFields ?? []),\n ],\n });\n return res;\n }\n\n /**\n * 获取指定的 Bug 信息\n * @param {{bugID: number, extraFields?: string[]}} [params] 请求参数,`params.bugID` 用于指定Bug ID,params.extraFields` 指定额外要返回的字段,其他字段指定分页信息\n * @returns 请求结果\n * ```js\n * import { ZentaoApi } from 'zentao-api';\n * const zentao = new ZentaoApi({\n * url: 'https://pro.demo.zentao.net/', account: 'demo', password: '123456'\n * });\n * const result = await zentao.getBug({bugID: 1});\n * if (result.status) {\n * console.log('Bug 信息为', result.result.bug);\n * }\n * ```\n */\n async getBug(params: {\n bugID: number;\n extraFields?: string[];\n }): Promise<ZentaoApiResult> {\n const res = await this.request('bug', 'view', {\n name: 'getBug',\n params: [['bugID', params.bugID]],\n fields: [\n 'title',\n 'bug',\n 'productName',\n ...(params?.extraFields ?? []),\n ],\n });\n return res;\n }\n\n /**\n * 用 于为指定的产品添加 Bug 之前,获取添加 Bug 时可能需要用到的一些相关信息。\n *\n * @param {{extraFields?: string[]}} [params] 请求参数,`params.extraFields` 指定额外要返回的字段\n * @returns 请求结果\n * @example\n * ```js\n * import { ZentaoApi } from 'zentao-api';\n * const zentao = new ZentaoApi({\n * url: 'https://pro.demo.zentao.net/', account: 'demo', password: '123456'\n * });\n * const result = await zentao.getBugCreateParams();\n * ```\n */\n async getBugCreateParams(params: {\n productID: number;\n extraFields?: string[];\n }): Promise<ZentaoApiResult> {\n const res = await this.request('bug', 'create', {\n name: 'getBugCreateParams',\n params: [['productID', params.productID]],\n fields: [\n 'title',\n 'productID',\n 'productName',\n 'projects',\n 'moduleOptionMenu',\n 'users',\n 'stories',\n 'builds',\n ...(params?.extraFields ?? []),\n ],\n });\n return res;\n }\n\n /**\n * 向系统添加一个 Bug\n * @param params Bug 信息参数\n * @returns\n * @example\n * ```js\n * import { ZentaoApi } from 'zentao-api';\n * const zentao = new ZentaoApi({\n * url: 'https://pro.demo.zentao.net/', account: 'demo', password: '123456'\n * });\n * const result = await zentao.addBug({\n * product: 1, // 必填参数 所属产品ID\n * module: 2, // 选填参数 所属模块ID\n * project: 1, // 选填参数 所属项目ID\n * openedBuild: ['trunk', 3, 2], // 选填参数 影响版本ID【添加单个 Bug 可选信息结果中 builds 记录的 key 值】\n * assignedTo: 'lisi', // 选填参数 当前指派【用户账号】\n * deadline: '2019-11-21', // 选填参数 截止日期【格式示例:2019-11-11】\n * type: 'codeerror', // 选填参数 BUG类型【codeerror代码错误|config配置相关|install安装部署|security安全相关|performance性能问题|standard标准规范|automation测试脚本|designdefect设计缺陷|others其他\n * os: 'windows', // 选填参数 选填参数|操作系统【all-全部|windows-Windows|win10-Windows 10|win8-Windows 8|win7-Windows 7|vista-Windows Vista|winxp-Windows XP|win2012-Windows 2012|win2008-Windows 2008|win2003-Windows 2003|win2000-Windows 2000|android-Android|ios-IOS|wp8-WP8|wp7-WP7|symbian-Symbian|linux-Linux|freebsd-FreeBSD|osx-OS X|unix-Unix|others-其他】\n * browser: 'ie11', // 选填参数|浏览器【all-全部|ie-IE系列|ie11-IE11|ie10-IE10|ie9-IE9|ie8-IE8|ie7-IE7|ie6-IE6|chrome-Chrome|firefox-firefox系列|firefox4-firefox4|firefox3-firefox3|firefox2-firefox2|opera-opera系列|oprea11-oprea11|oprea10-opera10|opera9-opera9|safari-safari|maxthon-傲游|uc-UC|other-其他】\n * title: '添加bug测试四', // BUG标题\n * color: '#2dbdb2', // BUG颜色【示例:#2dbdb2】\n * severity: 2, // 严重程度【1~4】\n * pri: 1, // 优先级【1~4】\n * steps: '重现步骤描述', // 重现步骤\n * story: 0, // 重现步骤描述\n * task: 0, // 相关需求ID\n * mailto: ['lisi', '张三'], // 抄送\n * keywords: 'bug4' // BUG关键词\n * });\n * if (result.status) {\n * console.log('Bug 创建成功');\n * }\n * ```\n */\n async addBug(params: {\n product: number;\n title: string;\n module?: number;\n project?: number;\n openedBuild?: any[];\n assignedTo?: string;\n deadline?: string;\n type?:\n | 'codeerror'\n | 'config'\n | 'install'\n | 'security'\n | 'performance'\n | 'standard'\n | 'automation'\n | 'designdefect'\n | 'others';\n os?:\n | 'all'\n | 'windows'\n | 'win10'\n | 'win8'\n | 'win7'\n | 'vista'\n | 'winxp'\n | 'win2012'\n | 'win2008'\n | 'win2003'\n | 'win2000'\n | 'android'\n | 'ios'\n | 'wp8'\n | 'wp7'\n | 'symbian'\n | 'linux'\n | 'freebsd'\n | 'osx'\n | 'unix'\n | 'others';\n browser?:\n | 'all'\n | 'ie'\n | 'ie11'\n | 'ie10'\n | 'ie9'\n | 'ie8'\n | 'ie7'\n | 'ie6'\n | 'chrome'\n | 'firefox'\n | 'firefox4'\n | 'firefox3'\n | 'firefox2'\n | 'opera'\n | 'oprea11'\n | 'oprea10'\n | 'opera'\n | 'safari'\n | 'maxthon'\n | 'uc'\n | 'other';\n color?: string;\n severity?: number;\n pri?: number;\n steps?: string;\n story?: number;\n task?: number;\n keywords?: string;\n mailto?: string[];\n }): Promise<ZentaoApiResult> {\n const res = await this.request('bug', 'create', {\n name: 'addBug',\n method: 'POST',\n params: [['productID', params.product]],\n data: {\n product: params.product,\n title: params.title,\n module: params.module ?? 0,\n project: params.project ?? 0,\n openedBuild: params.openedBuild ?? ['trunk'],\n assignedTo: params.assignedTo,\n deadline: params.deadline,\n type: params.type ?? 'codeerror',\n os: params.os ?? 'all',\n browser: params.browser ?? 'all',\n color: params.color,\n severity: params.severity ?? 3,\n pri: params.pri ?? 3,\n steps: params.steps,\n story: params.story ?? 0,\n task: params.task ?? 0,\n keywords: params.keywords,\n mailto: params.mailto,\n },\n });\n return res;\n }\n\n /**\n * 获取当前 Bug 详细信息以及确认 Bug 解决时可能用到的信息。\n *\n * @param {{bugID: number, extraFields?: string[]}} params 请求参数,`params.extraFields` 指定额外要返回的字段\n * @returns 请求结果\n * @example\n * ```js\n * import { ZentaoApi } from 'zentao-api';\n * const zentao = new ZentaoApi({\n * url: 'https://pro.demo.zentao.net/', account: 'demo', password: '123456'\n * });\n * const result = await zentao.getBugResolveParams({bugID: 1});\n * ```\n */\n async getBugResolveParams(params: {\n bugID: number;\n extraFields?: string[];\n }): Promise<ZentaoApiResult> {\n const res = await this.request('bug', 'resolve', {\n name: 'getBugResolveParams',\n params: [['bugID', params.bugID]],\n fields: [\n 'title',\n 'products',\n 'bug',\n 'users',\n 'builds',\n 'actions',\n ...(params?.extraFields ?? []),\n ],\n });\n return res;\n }\n\n /**\n * 解决一个 Bug\n * @param params 任务信息参数\n * @returns\n * @example\n * ```js\n * import { ZentaoApi } from 'zentao-api';\n * const zentao = new ZentaoApi({\n * url: 'https://pro.demo.zentao.net/', account: 'demo', password: '123456'\n * });\n * const result = await zentao.resolveBug({bugID: 1, resolution: 'fixed'});\n * if (result.status) {\n * console.log('bug 已解决');\n * }\n * ```\n */\n async resolveBug(params: {\n bugID: number;\n resolution?:\n | 'bydesign'\n | 'duplicate'\n | 'external'\n | 'fixed'\n | 'notrepro'\n | 'postponed'\n | 'willnotfix';\n resolvedBuild?: string;\n resolvedDate?: string;\n assignedTo?: string;\n comment?: string;\n buildProject?: number;\n buildName?: string;\n createBuild?: 0 | 1;\n duplicateBug?: number;\n }): Promise<ZentaoApiResult> {\n const data: Record<string, any> = {\n resolution: params.resolution ?? 'fixed',\n resolvedBuild: params.resolvedBuild ?? 'trunk',\n resolvedDate:\n params.resolvedDate ??\n formatDate(new Date(), 'yyyy-MM-dd hh:mm:ss'),\n assignedTo: params.assignedTo,\n comment: params.comment,\n duplicateBug: params.duplicateBug,\n status: 'resolved',\n };\n if (params.createBuild) {\n data.createBuild = 1;\n data.buildProject = params.buildProject;\n data.buildName = params.buildName;\n }\n const res = await this.request('bug', 'resolve', {\n name: 'resolveBug',\n method: 'POST',\n params: [['bugID', params.bugID]],\n data,\n resultConvertor: (_remoteData, result) => {\n if (result.result.result === 'fail') {\n result.status = 0;\n result.msg = result.result.message;\n result.result = null;\n }\n return result;\n },\n });\n return res;\n }\n}\n"],"names":["createDate","date","Date","trim","test","Number","parseInt","formatDate","format","dateInfo","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","replace","RegExp","$1","getFullYear","substr","length","Object","keys","forEach","k","str","formatZentaoUrl","url","endsWith","startsWith","slimmingObject","object","fields","newObject","field","normalizeRequestParams","params","normalizedParams","querystring","parse","Array","isArray","param","push","sort","key","mergeRequestParams","otherParams","otherParam","otherNormalizedParams","existsParam","find","x","undefined","ZentaoConfig","config","version","requestType","requestFix","moduleVar","methodVar","viewVar","sessionVar","sessionName","sessionID","random","serverTime","expiredTime","_tokenUpdateTime","_token","_createTime","now","renewToken","tokenAuth","split","ZentaoRequestBuilder","zentao","moduleName","methodName","_methodName","_params","method","name","f","withParams","appendParams","named","_name","useConverter","converter","_resultConvertor","filterFields","_fields","flat","filter","get","request","data","_data","resultConvertor","_url","post","Zentao","options","_debug","debug","_account","account","_password","password","_identifier","_sessionName","_userRequestType","accessMode","_preserveToken","preserveToken","console","log","kleur","yellow","bold","blue","magenta","join","_store","Configstore","configFromStore","_config","gray","JSON","stringify","login","fetchConfig","m","remoteData","result","user","res","axios","resp","_log","error","module","isTokenExpired","toLowerCase","Error","createUrl","toUpperCase","headers","Cookie","formData","value","item","index","success","status","msg","message","map","set","urlParts","paramPair","encodeURIComponent","atrributes","logLines","inverse","underline","statusText","pair","pairValue","cyan","red","others","token","ZentaoApi","call","apiName","func","getDeptList","deptID","extraFields","addDept","parentDeptID","depts","_remoteData","includes","getUserList","orderBy","recTotal","recPerPage","pageID","getUserCreateParams","addUser","paramsRes","rand","md5","dept","password1","password2","realname","role","group","email","commiter","passwordStrength","verifyPassword","gender","getProductList","productID","line","getProduct","getProductCreateParams","addProduct","code","PO","QD","RD","type","desc","acl","whitelist","getProjectList","projectID","getProject","getProjectCreateParams","addProject","begin","end","days","team","products","plans","getTaskList","getTask","taskID","getTaskCreateParams","addTask","project","color","pri","estimate","estStarted","deadline","assignedTo","mailto","getTaskFinishParams","finishTask","consumed","task","currentConsumed","finishedDate","comment","getBugList","branch","browseType","getBug","bugID","getBugCreateParams","addBug","product","title","openedBuild","os","browser","severity","steps","story","keywords","getBugResolveParams","resolveBug","resolution","resolvedBuild","resolvedDate","duplicateBug","createBuild","buildProject","buildName"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";function t(t){return t&&"object"==typeof t&&"default"in t?t.default:t}Object.defineProperty(exports,"__esModule",{value:!0});var e=t(require("querystring")),r=t(require("axios")),n=t(require("configstore")),s=t(require("kleur")),a=t(require("md5"));function o(t,e,r,n,s,a,o){try{var u=t[a](o),i=u.value}catch(t){return void r(t)}u.done?e(i):Promise.resolve(i).then(n,s)}function u(t){return function(){var e=this,r=arguments;return new Promise((function(n,s){var a=t.apply(e,r);function u(t){o(a,n,s,u,i,"next",t)}function i(t){o(a,n,s,u,i,"throw",t)}u(void 0)}))}}function i(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}function l(t,e,r){return e&&i(t.prototype,e),r&&i(t,r),t}function c(t,e){return(c=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function d(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function p(t,e){var r;if("undefined"==typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return d(t,void 0);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?d(t,void 0):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0;return function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(r=t[Symbol.iterator]()).next.bind(r)}var h=function(t){return t?(t instanceof Date||("string"==typeof t&&(t=t.trim(),/^\d+$/.test(t)&&(t=Number.parseInt(t,10))),"number"==typeof t&&t<1e10&&(t*=1e3),t=new Date(t)),t):new Date},f=function(t,e){void 0===e&&(e="yyyy-MM-dd hh:mm");var r={"M+":(t=h(t)).getMonth()+1,"d+":t.getDate(),"h+":t.getHours(),"H+":t.getHours()%12,"m+":t.getMinutes(),"s+":t.getSeconds(),"S+":t.getMilliseconds()};return/(y+)/i.test(e)&&(e=e.replace(RegExp.$1,(""+t.getFullYear()).substr(4-RegExp.$1.length))),Object.keys(r).forEach((function(t){if(new RegExp("("+t+")").test(e)){var n=""+r[t];e=e.replace(RegExp.$1,1===RegExp.$1.length?n:("00"+n).substr(n.length+2-RegExp.$1.length))}})),e};function m(t){return t.endsWith("/index.php")?t=t.substr(0,t.length-9):t.endsWith("/")||(t+="/"),t.startsWith("https://")||t.startsWith("http://")||(t="http://"+t),t}function v(t,e){if(!t||"object"!=typeof t||null===t)return t;for(var r,n={},s=p(e);!(r=s()).done;){var a=r.value;n[a]=t[a]}return n}function g(t){var r=[];if("string"==typeof t&&(t=e.parse(t)),t&&"object"==typeof t)if(Array.isArray(t))for(var n,s=p(t);!(n=s()).done;){var a=n.value;r.push("string"==typeof a?["",a]:a)}else if(t)for(var o,u=p(Object.keys(t).sort());!(o=u()).done;){var i=o.value;r.push([i,t[i]])}return r}function y(t){for(var e=g(t),r=arguments.length,n=new Array(r>1?r-1:0),s=1;s<r;s++)n[s-1]=arguments[s];for(var a=0,o=n;a<o.length;a++)for(var u,i=o[a],l=g(i),c=function(){var t=u.value;if("string"==typeof t[0]&&t[0].length){var r=e.find((function(e){return e[0]===t[0]}));if(r)return Array.isArray(r[1])?r[1].push(t[1]):r[1]=[r[1],t[1]],"continue"}e.push(t)},d=p(l);!(u=d()).done;)c();return e}var w,b={__proto__:null,createDate:h,formatDate:f,formatZentaoUrl:m,slimmingObject:v,normalizeRequestParams:g,mergeRequestParams:y},x=(function(t){var e=function(t){var e=Object.prototype,r=e.hasOwnProperty,n="function"==typeof Symbol?Symbol:{},s=n.iterator||"@@iterator",a=n.asyncIterator||"@@asyncIterator",o=n.toStringTag||"@@toStringTag";function u(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,r){return t[e]=r}}function i(t,e,r,n){var s=Object.create((e&&e.prototype instanceof d?e:d).prototype),a=new _(n||[]);return s._invoke=function(t,e,r){var n="suspendedStart";return function(s,a){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===s)throw a;return{value:void 0,done:!0}}for(r.method=s,r.arg=a;;){var o=r.delegate;if(o){var u=b(o,r);if(u){if(u===c)continue;return u}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var i=l(t,e,r);if("normal"===i.type){if(n=r.done?"completed":"suspendedYield",i.arg===c)continue;return{value:i.arg,done:r.done}}"throw"===i.type&&(n="completed",r.method="throw",r.arg=i.arg)}}}(t,r,a),s}function l(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=i;var c={};function d(){}function p(){}function h(){}var f={};f[s]=function(){return this};var m=Object.getPrototypeOf,v=m&&m(m(T([])));v&&v!==e&&r.call(v,s)&&(f=v);var g=h.prototype=d.prototype=Object.create(f);function y(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function w(t,e){var n;this._invoke=function(s,a){function o(){return new e((function(n,o){!function n(s,a,o,u){var i=l(t[s],t,a);if("throw"!==i.type){var c=i.arg,d=c.value;return d&&"object"==typeof d&&r.call(d,"__await")?e.resolve(d.__await).then((function(t){n("next",t,o,u)}),(function(t){n("throw",t,o,u)})):e.resolve(d).then((function(t){c.value=t,o(c)}),(function(t){return n("throw",t,o,u)}))}u(i.arg)}(s,a,n,o)}))}return n=n?n.then(o,o):o()}}function b(t,e){var r=t.iterator[e.method];if(void 0===r){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=void 0,b(t,e),"throw"===e.method))return c;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return c}var n=l(r,t.iterator,e.arg);if("throw"===n.type)return e.method="throw",e.arg=n.arg,e.delegate=null,c;var s=n.arg;return s?s.done?(e[t.resultName]=s.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,c):s:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,c)}function x(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function k(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function _(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(x,this),this.reset(!0)}function T(t){if(t){var e=t[s];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,a=function e(){for(;++n<t.length;)if(r.call(t,n))return e.value=t[n],e.done=!1,e;return e.value=void 0,e.done=!0,e};return a.next=a}}return{next:P}}function P(){return{value:void 0,done:!0}}return p.prototype=g.constructor=h,h.constructor=p,p.displayName=u(h,o,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===p||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,h):(t.__proto__=h,u(t,o,"GeneratorFunction")),t.prototype=Object.create(g),t},t.awrap=function(t){return{__await:t}},y(w.prototype),w.prototype[a]=function(){return this},t.AsyncIterator=w,t.async=function(e,r,n,s,a){void 0===a&&(a=Promise);var o=new w(i(e,r,n,s),a);return t.isGeneratorFunction(r)?o:o.next().then((function(t){return t.done?t.value:o.next()}))},y(g),u(g,o,"Generator"),g[s]=function(){return this},g.toString=function(){return"[object Generator]"},t.keys=function(t){var e=[];for(var r in t)e.push(r);return e.reverse(),function r(){for(;e.length;){var n=e.pop();if(n in t)return r.value=n,r.done=!1,r}return r.done=!0,r}},t.values=T,_.prototype={constructor:_,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(k),!t)for(var e in this)"t"===e.charAt(0)&&r.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function n(r,n){return o.type="throw",o.arg=t,e.next=r,n&&(e.method="next",e.arg=void 0),!!n}for(var s=this.tryEntries.length-1;s>=0;--s){var a=this.tryEntries[s],o=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var u=r.call(a,"catchLoc"),i=r.call(a,"finallyLoc");if(u&&i){if(this.prev<a.catchLoc)return n(a.catchLoc,!0);if(this.prev<a.finallyLoc)return n(a.finallyLoc)}else if(u){if(this.prev<a.catchLoc)return n(a.catchLoc,!0)}else{if(!i)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return n(a.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var s=this.tryEntries[n];if(s.tryLoc<=this.prev&&r.call(s,"finallyLoc")&&this.prev<s.finallyLoc){var a=s;break}}a&&("break"===t||"continue"===t)&&a.tryLoc<=e&&e<=a.finallyLoc&&(a=null);var o=a?a.completion:{};return o.type=t,o.arg=e,a?(this.method="next",this.next=a.finallyLoc,c):this.complete(o)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),c},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),k(r),c}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var s=n.arg;k(r)}return s}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:T(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),c}},t}(t.exports);try{regeneratorRuntime=e}catch(t){Function("r","regeneratorRuntime = r")(e)}}(w={exports:{}}),w.exports),k=function(){function t(t){var e,r,n,s,a,o;this.version=t.version,this.requestType="GET"===t.requestType?"GET":"PATH_INFO",this.requestFix=null!=(e=t.requestFix)?e:"-",this.moduleVar=null!=(r=t.moduleVar)?r:"m",this.methodVar=null!=(n=t.methodVar)?n:"f",this.viewVar=null!=(s=t.viewVar)?s:"t",this.sessionVar=null!=(a=t.sessionVar)?a:"zentaosid",this.sessionName=null!=(o=t.sessionName)?o:'zentaosid"',this.sessionID=t.sessionID,this.random=t.random,this.serverTime=t.serverTime,this.expiredTime="string"==typeof t.expiredTime?Number.parseInt(t.expiredTime,10):t.expiredTime,this._tokenUpdateTime=t._tokenUpdateTime,this._token=t._token,this._createTime=Date.now()}return t.prototype.renewToken=function(){this._token=this.tokenAuth,this._tokenUpdateTime=Date.now()},l(t,[{key:"token",get:function(){var t;return null!=(t=this._token)?t:""}},{key:"tokenAuth",get:function(){var t,e;return(null!=(t=null==this?void 0:this.sessionName)?t:"")+"="+(null!=(e=null==this?void 0:this.sessionID)?e:"")}},{key:"mainVersion",get:function(){return Number.parseInt(this.version.split(".")[0])}},{key:"isTokenExpired",get:function(){return!this._tokenUpdateTime||Date.now()-this._tokenUpdateTime>=1e3*(this.expiredTime-30)}}]),t}(),_=function(){function t(t,e,r,n){this.zentao=t,this.moduleName=e,this._methodName=null!=r?r:"index",this._params=n}var e=t.prototype;return e.method=function(t){return this._methodName=t,this},e.f=function(t){return this.method(t)},e.withParams=function(t){return this._params=t,this},e.appendParams=function(t){return this._params=this._params?y(this._params,t):t,this},e.named=function(t){return this._name=t,this},e.useConverter=function(t){return this._resultConvertor=t,this},e.filterFields=function(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return this._fields=e.flat().filter((function(t){return void 0!==t})),this},e.get=function(){return this.zentao.request(this.moduleName,this._methodName,{method:"GET",params:this._params,data:this._data,fields:this._fields,resultConvertor:this._resultConvertor,name:this._name,url:this._url})},e.post=function(t){return this.zentao.request(this.moduleName,this._methodName,{method:"POST",params:this._params,data:null!=t?t:this._data,fields:this._fields,resultConvertor:this._resultConvertor,name:this._name,url:this._url})},e.request=function(t){return this.zentao.request(this.moduleName,this._methodName,{method:t,params:this._params,data:this._data,fields:this._fields,resultConvertor:this._resultConvertor,name:this._name,url:this._url})},l(t,[{key:"methodName",get:function(){return this._methodName}},{key:"params",get:function(){return this._params}},{key:"data",get:function(){return this._data}},{key:"fields",get:function(){return this._fields}},{key:"name",get:function(){return this._name}},{key:"url",get:function(){return this._url}},{key:"resultConvertor",get:function(){return this._resultConvertor}}]),t}(),T=function(){function t(t){var e,r,a;if(this._debug=null!=(e=t.debug)&&e,this._url=m(t.url),this._account=t.account,this._password=t.password,this._identifier=this.account+"@"+this._url,this._sessionName="ZENTAO-API::"+(null!=(r=t.sessionName)?r:this._identifier),this._userRequestType=t.accessMode,this._preserveToken=null==(a=t.preserveToken)||a,this._debug&&console.log([s.yellow("▶︎")+" "+s.bold().blue(this._sessionName)+" "+s.yellow("◀︎")," url: "+s.magenta(this.url)," account: "+s.magenta(this.account)," password: "+s.magenta(this.password)," preserveToken: "+s.magenta(""+this._preserveToken)," sessionName: "+s.magenta(this._sessionName)," identifier: "+s.magenta(this._identifier)," requestType: "+s.magenta(this.requestType)].join("\n")),this._preserveToken){this._store=new n(this._sessionName,{});var o=this._store.get("config");o&&(this._config=new k(o),this._debug&&console.log([s.bold("\n"+s.gray("➡︎")+" "+s.bold().blue("Load zentao config from local storage"))," "+JSON.stringify(o)].join("\n")))}}var a=t.prototype;return a.login=function(){var t=u(x.mark((function t(){return x.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.fetchConfig();case 2:return t.next=4,this.m("user").f("login").useConverter((function(t,e){return t.user&&(e.result=t.user),e})).post({account:this.account,password:this.password});case 4:return t.abrupt("return",t.sent);case 6:case"end":return t.stop()}}),t,this)})));return function(){return t.apply(this,arguments)}}(),a.fetchConfig=function(){var t=u(x.mark((function t(){var e,n,s;return x.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e=this._url+"/?mode=getconfig",t.prev=1,t.next=4,r.get(e);case 4:s=new k((n=t.sent).data),this._config=s,this._log("fetchConfig",{resp:n}),t.next=14;break;case 10:throw t.prev=10,t.t0=t.catch(1),this._log("fetchConfig",{url:e,error:t.t0}),t.t0;case 14:return t.abrupt("return",this._config);case 15:case"end":return t.stop()}}),t,this,[[1,10]])})));return function(){return t.apply(this,arguments)}}(),a.module=function(t,e,r){return new _(this,t,e,r)},a.m=function(t,e,r){return this.module(t,e,r)},a.request=function(){var t=u(x.mark((function t(n,s,a){var o,u,i,l,c,d,p,h,f,m,y,w,b,k,_,T,P,D;return x.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(void 0===s&&(s="index"),void 0===a&&(a={}),this._config&&(null==(o=this._config)||!o.isTokenExpired)||"user/login"===(n+"/"+s).toLowerCase()){t.next=5;break}return t.next=5,this.login();case 5:if(this._config){t.next=7;break}throw new Error("Zentao config is empty, makesure to fetch config before request from "+n+"-"+s+".");case 7:return c=g(a.params),d=null!=(u=a.url)?u:this.createUrl(n,s,c),p=null!=(i=a.name)?i:""+n+s[0].toUpperCase()+s.substr(1),h=null!=(l=a.method)?l:"GET",f={Cookie:this._config.tokenAuth},(m=a.data)&&"object"==typeof m&&function(){for(var t={},r=function(){var e=s[n],r=m[e];Array.isArray(r)?(r.forEach((function(r,n){t[e+"["+n+"]"]=r})),delete m[e]):t[e]=r},n=0,s=Object.keys(m);n<s.length;n++)r();m=e.stringify(t)}(),t.prev=14,t.next=17,r.request({method:h,url:d,data:m,headers:f});case 17:return"object"==typeof(b=(y=t.sent).data)&&null!==b?("string"!=typeof b.data||"["!==b.data[0]&&"{"!==b.data[0]||(b.data=JSON.parse(b.data)),w={status:(T="success"===b.status||"success"===b.result)?1:0,msg:null!=(k=b.message)?k:T?"success":"error",result:null!=(_=b.data)?_:b.result}):w={status:0,msg:"error",result:y.data},a.resultConvertor&&(w=a.resultConvertor(b,w)),a.fields&&"object"==typeof w.result&&w.result&&(w.result=Array.isArray(w.result)?w.result.map((function(t){return v(t,a.fields)})):v(w.result,a.fields)),n+"/"+s=="user/login"&&1===w.status&&(null==(P=this._config)||P.renewToken(),this._preserveToken&&(null==(D=this._store)||D.set("config",this._config))),this._log(p,{url:d,result:w,params:c,data:m,resp:y}),t.abrupt("return",w);case 27:throw t.prev=27,t.t0=t.catch(14),this._log(p,{url:d,error:t.t0,params:c,data:m}),t.t0;case 31:case"end":return t.stop()}}),t,this,[[14,27]])})));return function(e,r,n){return t.apply(this,arguments)}}(),a.createUrl=function(t,e,r){void 0===e&&(e="index");var n=this._config;if(!n)throw new Error("Zentao config is empty, makesure fetch config before call others api.");var s=[this.url];if("PATH_INFO"===this.requestType){if(s.push(t,n.requestFix,e),r)for(var a,o=p(r);!(a=o()).done;)s.push(n.requestFix,a.value[1]);s.push(".json")}else{if(s.push("?"+n.moduleVar+"="+t+"&"+n.methodVar+"="+e),r)for(var u,i=p(r);!(u=i()).done;){var l=u.value;s.push("&"+l[0]+"="+encodeURIComponent(l[1]))}s.push("&"+n.viewVar+"=json")}return s.join("")},a._log=function(t,r){var n,a,o,u,i;if(this._debug){var l=["\n\n"],c=r.resp,d=r.result,h=null!=(n=null==c?void 0:c.status)?n:"",f=d?1===d.status:200===h,m=null!=(a=c?c.config.url:r.url)?a:"",v=null!=(o=c?c.config.method:r.method)?o:"GET";if(l.push(s.bold(s.gray("➡︎")+" "+s[f?"green":"red"]().inverse(" "+t+" "+(f?"✓":"𐄂")+" "))),l.push("\n "+s.bold().blue(v.toUpperCase())+" "+s.blue().underline(m)),l.push(" status: "+s[200===h?"green":"red"]("● "+h)+" "+s.gray(null!=(u=null==c?void 0:c.statusText)?u:"")),r.params){l.push("\n "+s.bold().blue("Request Parameters"));for(var g,y=p(r.params);!(g=y()).done;){var w=g.value,b="string"==typeof w[1]?w[1]:JSON.stringify(w[1]);l.push(" "+w[0]+": "+s.magenta(b))}}if(null!=c&&null!=(i=c.config)&&i.headers){l.push("\n "+s.bold().blue("Request Headers"));for(var x=c.config.headers,k=0,_=Object.keys(x);k<_.length;k++){var T=_[k],P="string"==typeof x[T]?x[T]:JSON.stringify(x[T]);l.push(" "+T+": "+s.magenta(P))}}if(r.data){var D=r.data;l.push("\n "+s.bold().blue("Request Data")),"string"==typeof D&&(D=e.parse(D));for(var j=0,I=Object.keys(D);j<I.length;j++){var q=I[j],N="string"==typeof D[q]?D[q]:JSON.stringify(D[q]);l.push(" "+q+": "+s.magenta(N))}}d&&(l.push("\n "+s.bold().cyan("Response Data")),l.push(" status: "+s[1===d.status?"green":"red"](d.status)+","),void 0!==d.msg&&l.push(" msg: "+s[1===d.status?"green":"red"]("string"==typeof d.msg?d.msg:JSON.stringify(d.msg))+","),void 0!==d.result&&l.push(" result: "+s.magenta(JSON.stringify(d.result)))),!c||d&&f&&d.result||(l.push("\n "+s.bold().cyan("Response Text")),l.push(" "+("string"==typeof c.data?c.data:JSON.stringify(c.data)))),r.error&&(l.push("\n "+s.bold().red("Error")),l.push(" "+s.red(r.error)));for(var O=arguments.length,E=new Array(O>2?O-2:0),L=2;L<O;L++)E[L-2]=arguments[L];E&&E.length&&l.push.apply(l,E),console.log(l.join("\n"))}},l(t,[{key:"url",get:function(){return this._url}},{key:"sessionName",get:function(){return this._sessionName}},{key:"identifier",get:function(){return this._identifier}},{key:"account",get:function(){return this._account}},{key:"password",get:function(){return this._password}},{key:"requestType",get:function(){var t,e,r;return null!=(t=null!=(e=this._userRequestType)?e:null==(r=this._config)?void 0:r.requestType)?t:"GET"}},{key:"token",get:function(){var t,e;return null!=(t=null==(e=this._config)?void 0:e.token)?t:""}}]),t}(),P=function(t){var e,r;function n(){return t.apply(this,arguments)||this}r=t,(e=n).prototype=Object.create(r.prototype),e.prototype.constructor=e,c(e,r);var s=n.prototype;return s.call=function(t,e){var r=this[t];if(!r||"function"!=typeof r)throw new Error('Api method named "'+t+'" undefined.');return r.call(this,e)},s.getDeptList=function(t){var e;return this.module("dept","browse").withParams([["deptID",null!=(e=null==t?void 0:t.deptID)?e:0]]).filterFields("title","deptID","parentDepts","sons","tree",null==t?void 0:t.extraFields).get()},s.addDept=function(){var t=u(x.mark((function t(e){var r;return x.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.request("dept","manageChild",{name:"addDept",method:"POST",data:{parentDeptID:null!=(r=e.parentDeptID)?r:0,depts:e.depts},resultConvertor:function(t,e){return!e.status&&e.result.includes("reload")&&(e.status=1,e.msg="success",e.result=null),e}});case 2:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),s.getUserList=function(){var t=u(x.mark((function t(e){var r,n,s,a,o,u;return x.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.request("company","browse",{name:"getUserList",params:[["param",null!=(r=null==e?void 0:e.deptID)?r:0],["type","bydept"],["orderBy",null!=(n=null==e?void 0:e.orderBy)?n:"id"],["recTotal",null!=(s=null==e?void 0:e.recTotal)?s:0],["recPerPage",null!=(a=null==e?void 0:e.recPerPage)?a:20],["pageID",null!=(o=null==e?void 0:e.pageID)?o:1]],fields:["title","users"].concat(null!=(u=null==e?void 0:e.extraFields)?u:[])});case 2:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),s.getUserCreateParams=function(){var t=u(x.mark((function t(e){var r;return x.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.request("user","create",{name:"getUserCreateParams",fields:["title","depts","groupList","roleGroup"].concat(null!=(r=null==e?void 0:e.extraFields)?r:[])});case 2:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),s.addUser=function(){var t=u(x.mark((function t(e){var r,n,s,o;return x.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.getUserCreateParams({extraFields:["rand"]});case 2:return s=a(""+e.password+(n=t.sent.result.rand)),o={dept:null!=(r=e.dept)?r:0,account:e.account,password1:s,password2:s,realname:e.realname,join:e.join,role:e.role,group:e.group,email:e.email,commiter:e.commiter,passwordStrength:1,verifyPassword:a(""+a(this.password)+n)},e.gender&&(o.gender=e.gender),t.next=9,this.request("user","create",{name:"addUser",method:"POST",data:o,resultConvertor:function(t,e){return!e.status&&e.result.includes("reload")&&(e.status=1,e.msg="success",e.result=null),e}});case 9:return t.abrupt("return",t.sent);case 11:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),s.getProductList=function(){var t=u(x.mark((function t(e){var r,n,s,a,o,u,i,l;return x.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.request("product","all",{name:"getProductList",params:[["productID",null!=(r=null==e?void 0:e.productID)?r:0],["line",null!=(n=null==e?void 0:e.line)?n:0],["status",null!=(s=null==e?void 0:e.status)?s:"noclosed"],["orderBy",null!=(a=null==e?void 0:e.orderBy)?a:"order_desc"],["recTotal",null!=(o=null==e?void 0:e.recTotal)?o:0],["recPerPage",null!=(u=null==e?void 0:e.recPerPage)?u:10],["pageID",null!=(i=null==e?void 0:e.pageID)?i:1]],fields:["title","products","productStats"].concat(null!=(l=null==e?void 0:e.extraFields)?l:[])});case 2:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),s.getProduct=function(){var t=u(x.mark((function t(e){var r;return x.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.request("product","view",{name:"getProduct",params:[["productID",e.productID]],fields:["title","products","product","branches","dynamics"].concat(null!=(r=null==e?void 0:e.extraFields)?r:[])});case 2:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),s.getProductCreateParams=function(){var t=u(x.mark((function t(e){var r;return x.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.request("product","create",{name:"getProductCreateParams",fields:["title","products","lines","poUsers","qdUsers","rdUsers","groups"].concat(null!=(r=null==e?void 0:e.extraFields)?r:[])});case 2:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),s.addProduct=function(){var t=u(x.mark((function t(e){var r,n,s;return x.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.request("product","create",{name:"addProduct",method:"POST",data:{name:e.name,code:e.code,line:null!=(r=e.line)?r:0,PO:e.PO,QD:e.QD,RD:e.RD,type:null!=(n=e.type)?n:"normal",desc:e.desc,acl:null!=(s=e.acl)?s:"open",whitelist:e.whitelist}});case 2:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),s.getProjectList=function(){var t=u(x.mark((function t(e){var r,n,s,a,o,u,i,l;return x.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.request("project","all",{name:"getProjectList",params:[["status",null!=(r=null==e?void 0:e.status)?r:"undone"],["projectID",null!=(n=null==e?void 0:e.projectID)?n:0],["orderBy",null!=(s=null==e?void 0:e.orderBy)?s:"order_desc"],["productID",null!=(a=null==e?void 0:e.productID)?a:0],["recTotal",null!=(o=null==e?void 0:e.recTotal)?o:0],["recPerPage",null!=(u=null==e?void 0:e.recPerPage)?u:10],["pageID",null!=(i=null==e?void 0:e.pageID)?i:1]],fields:["title","projects","projectStats","teamMembers","users"].concat(null!=(l=null==e?void 0:e.extraFields)?l:[])});case 2:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),s.getProject=function(){var t=u(x.mark((function t(e){var r;return x.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.request("product","view",{name:"getProduct",params:[["projectID",e.projectID]],fields:["title","products","project","teamMembers","dynamics"].concat(null!=(r=null==e?void 0:e.extraFields)?r:[])});case 2:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),s.getProjectCreateParams=function(){var t=u(x.mark((function t(e){var r;return x.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.request("project","create",{name:"getProjectCreateParams",fields:["title","projects","groups","allProducts"].concat(null!=(r=null==e?void 0:e.extraFields)?r:[])});case 2:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),s.addProject=function(){var t=u(x.mark((function t(e){var r,n,s,a,o;return x.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.request("project","create",{name:"addProject",method:"POST",data:{name:e.name,code:e.code,begin:e.begin,end:e.end,days:null!=(r=e.days)?r:0,team:e.team,type:null!=(n=e.type)?n:"sprint",desc:e.desc,acl:null!=(s=e.acl)?s:"open",whitelist:e.whitelist,products:null!=(a=e.products)?a:[0],plans:null!=(o=e.plans)?o:[0],status:"wait"}});case 2:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),s.getTaskList=function(){var t=u(x.mark((function t(e){var r,n,s,a,o,u,i;return x.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.request("project","task",{name:"getTaskList",params:[["projectID",e.projectID],["status",null!=(r=null==e?void 0:e.status)?r:"unclosed"],["param",null!=(n=null==e?void 0:e.param)?n:0],["orderBy",null!=(s=null==e?void 0:e.orderBy)?s:""],["recTotal",null!=(a=null==e?void 0:e.recTotal)?a:0],["recPerPage",null!=(o=null==e?void 0:e.recPerPage)?o:20],["pageID",null!=(u=null==e?void 0:e.pageID)?u:1]],fields:["title","projects","project","products","tasks"].concat(null!=(i=null==e?void 0:e.extraFields)?i:[])});case 2:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),s.getTask=function(){var t=u(x.mark((function t(e){var r;return x.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.request("task","view",{name:"getProduct",params:[["taskID",e.taskID]],fields:["title","task","project","product"].concat(null!=(r=null==e?void 0:e.extraFields)?r:[])});case 2:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),s.getTaskCreateParams=function(){var t=u(x.mark((function t(e){var r;return x.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.request("task","create",{name:"getTaskCreateParams",fields:["title","projects","users","stories","moduleOptionMenu","project"].concat(null!=(r=null==e?void 0:e.extraFields)?r:[])});case 2:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),s.addTask=function(){var t=u(x.mark((function t(e){var r,n,s,a,o,u;return x.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.request("task","create",{name:"addTask",method:"POST",data:{project:e.project,type:null!=(r=e.type)?r:"devl",name:e.name,module:null!=(n=e.module)?n:0,color:e.color,pri:null!=(s=e.pri)?s:3,estimate:null!=(a=e.estimate)?a:0,desc:e.desc,estStarted:e.estStarted,deadline:e.deadline,assignedTo:null!=(o=e.assignedTo)?o:[""],mailto:null!=(u=e.mailto)?u:[""]}});case 2:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),s.getTaskFinishParams=function(){var t=u(x.mark((function t(e){var r;return x.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.request("task","finish",{name:"getTaskFinishParams",params:[["taskID",e.taskID]],fields:["title","users","task","project","actions"].concat(null!=(r=null==e?void 0:e.extraFields)?r:[])});case 2:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),s.finishTask=function(){var t=u(x.mark((function t(e){var r,n;return x.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(void 0!==(n=e.consumed)){t.next=6;break}return t.next=4,this.getTaskFinishParams({taskID:e.taskID,extraFields:["task"]});case 4:n=t.sent.result.task.consumed;case 6:return t.next=8,this.request("task","finish",{name:"finishTask",method:"POST",params:[["taskID",e.taskID]],data:{currentConsumed:e.currentConsumed,consumed:n,assignedTo:e.assignedTo,finishedDate:null!=(r=e.finishedDate)?r:f(new Date,"yyyy-MM-dd"),comment:e.comment,status:"done"}});case 8:return t.abrupt("return",t.sent);case 10:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),s.getBugList=function(){var t=u(x.mark((function t(e){var r,n,s,a,o,u,i,l;return x.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.request("bug","browse",{name:"getTaskList",params:[["productID",e.productID],["branch",null!=(r=null==e?void 0:e.branch)?r:0],["browseType",null!=(n=null==e?void 0:e.browseType)?n:"unclosed"],["param",null!=(s=null==e?void 0:e.param)?s:0],["orderBy",null!=(a=null==e?void 0:e.orderBy)?a:""],["recTotal",null!=(o=null==e?void 0:e.recTotal)?o:0],["recPerPage",null!=(u=null==e?void 0:e.recPerPage)?u:20],["pageID",null!=(i=null==e?void 0:e.pageID)?i:1]],fields:["title","products","productID","productName","product","moduleName","modules","browseType","bugs"].concat(null!=(l=null==e?void 0:e.extraFields)?l:[])});case 2:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),s.getBug=function(){var t=u(x.mark((function t(e){var r;return x.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.request("bug","view",{name:"getBug",params:[["bugID",e.bugID]],fields:["title","bug","productName"].concat(null!=(r=null==e?void 0:e.extraFields)?r:[])});case 2:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),s.getBugCreateParams=function(){var t=u(x.mark((function t(e){var r;return x.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.request("bug","create",{name:"getBugCreateParams",params:[["productID",e.productID]],fields:["title","productID","productName","projects","moduleOptionMenu","users","stories","builds"].concat(null!=(r=null==e?void 0:e.extraFields)?r:[])});case 2:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),s.addBug=function(){var t=u(x.mark((function t(e){var r,n,s,a,o,u,i,l,c,d;return x.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.request("bug","create",{name:"addBug",method:"POST",params:[["productID",e.product]],data:{product:e.product,title:e.title,module:null!=(r=e.module)?r:0,project:null!=(n=e.project)?n:0,openedBuild:null!=(s=e.openedBuild)?s:["trunk"],assignedTo:e.assignedTo,deadline:e.deadline,type:null!=(a=e.type)?a:"codeerror",os:null!=(o=e.os)?o:"all",browser:null!=(u=e.browser)?u:"all",color:e.color,severity:null!=(i=e.severity)?i:3,pri:null!=(l=e.pri)?l:3,steps:e.steps,story:null!=(c=e.story)?c:0,task:null!=(d=e.task)?d:0,keywords:e.keywords,mailto:e.mailto}});case 2:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),s.getBugResolveParams=function(){var t=u(x.mark((function t(e){var r;return x.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.request("bug","resolve",{name:"getBugResolveParams",params:[["bugID",e.bugID]],fields:["title","products","bug","users","builds","actions"].concat(null!=(r=null==e?void 0:e.extraFields)?r:[])});case 2:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),s.resolveBug=function(){var t=u(x.mark((function t(e){var r,n,s,a;return x.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a={resolution:null!=(r=e.resolution)?r:"fixed",resolvedBuild:null!=(n=e.resolvedBuild)?n:"trunk",resolvedDate:null!=(s=e.resolvedDate)?s:f(new Date,"yyyy-MM-dd hh:mm:ss"),assignedTo:e.assignedTo,comment:e.comment,duplicateBug:e.duplicateBug,status:"resolved"},e.createBuild&&(a.createBuild=1,a.buildProject=e.buildProject,a.buildName=e.buildName),t.next=4,this.request("bug","resolve",{name:"resolveBug",method:"POST",params:[["bugID",e.bugID]],data:a,resultConvertor:function(t,e){return"fail"===e.result.result&&(e.status=0,e.msg=e.result.message,e.result=null),e}});case 4:return t.abrupt("return",t.sent);case 6:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),n}(T);exports.Zentao=T,exports.Zentao12=P,exports.utils=b;
|
|
2
|
-
//# sourceMappingURL=zentao-api.cjs.production.min.js.map
|