@daghis/teamcity-mcp 0.1.2 → 0.2.0

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.
Files changed (48) hide show
  1. package/.commitlintrc.js +21 -0
  2. package/.commitlintrc.mjs +25 -0
  3. package/.github/dependabot.yml +38 -0
  4. package/.github/workflows/ci.yml +26 -22
  5. package/.github/workflows/codeql.yml +1 -1
  6. package/.github/workflows/commitlint.yml +3 -3
  7. package/.github/workflows/publish.yml +2 -2
  8. package/AGENTS.md +61 -0
  9. package/CHANGELOG.md +7 -0
  10. package/README.md +8 -0
  11. package/THIRD_PARTY_NOTICES.md +58 -0
  12. package/dist/index.js +303 -232
  13. package/dist/index.js.map +4 -4
  14. package/dist/src/teamcity-client/api/agent-api.d.ts +15 -15
  15. package/dist/src/teamcity-client/api/agent-pool-api.d.ts +14 -14
  16. package/dist/src/teamcity-client/api/agent-type-api.d.ts +1 -1
  17. package/dist/src/teamcity-client/api/audit-api.d.ts +2 -2
  18. package/dist/src/teamcity-client/api/avatar-api.d.ts +4 -4
  19. package/dist/src/teamcity-client/api/build-api.d.ts +57 -57
  20. package/dist/src/teamcity-client/api/build-queue-api.d.ts +14 -14
  21. package/dist/src/teamcity-client/api/build-type-api.d.ts +109 -109
  22. package/dist/src/teamcity-client/api/change-api.d.ts +10 -10
  23. package/dist/src/teamcity-client/api/cloud-instance-api.d.ts +10 -10
  24. package/dist/src/teamcity-client/api/deployment-dashboard-api.d.ts +9 -9
  25. package/dist/src/teamcity-client/api/global-server-settings-api.d.ts +2 -2
  26. package/dist/src/teamcity-client/api/group-api.d.ts +16 -16
  27. package/dist/src/teamcity-client/api/health-api.d.ts +4 -4
  28. package/dist/src/teamcity-client/api/investigation-api.d.ts +6 -6
  29. package/dist/src/teamcity-client/api/mute-api.d.ts +6 -6
  30. package/dist/src/teamcity-client/api/node-api.d.ts +6 -6
  31. package/dist/src/teamcity-client/api/problem-api.d.ts +2 -2
  32. package/dist/src/teamcity-client/api/problem-occurrence-api.d.ts +2 -2
  33. package/dist/src/teamcity-client/api/project-api.d.ts +48 -48
  34. package/dist/src/teamcity-client/api/role-api.d.ts +8 -8
  35. package/dist/src/teamcity-client/api/root-api.d.ts +4 -4
  36. package/dist/src/teamcity-client/api/server-api.d.ts +18 -18
  37. package/dist/src/teamcity-client/api/server-authentication-settings-api.d.ts +2 -2
  38. package/dist/src/teamcity-client/api/test-api.d.ts +2 -2
  39. package/dist/src/teamcity-client/api/test-occurrence-api.d.ts +2 -2
  40. package/dist/src/teamcity-client/api/user-api.d.ts +28 -28
  41. package/dist/src/teamcity-client/api/vcs-root-api.d.ts +14 -14
  42. package/dist/src/teamcity-client/api/vcs-root-instance-api.d.ts +17 -17
  43. package/dist/src/teamcity-client/api/versioned-settings-api.d.ts +15 -15
  44. package/package.json +14 -13
  45. package/scripts/build.cjs +25 -6
  46. package/scripts/generate-third-party-notices.cjs +71 -0
  47. package/src/teamcity/auth.ts +2 -2
  48. package/TODO.md +0 -80
package/dist/index.js CHANGED
@@ -11169,7 +11169,7 @@ var require_follow_redirects = __commonJS({
11169
11169
  (function detectUnsupportedEnvironment() {
11170
11170
  var looksLikeNode = typeof process !== "undefined";
11171
11171
  var looksLikeBrowser = typeof window !== "undefined" && typeof document !== "undefined";
11172
- var looksLikeV8 = isFunction2(Error.captureStackTrace);
11172
+ var looksLikeV8 = isFunction3(Error.captureStackTrace);
11173
11173
  if (!looksLikeNode && (looksLikeBrowser || !looksLikeV8)) {
11174
11174
  console.warn("The follow-redirects package should be excluded from browser builds.");
11175
11175
  }
@@ -11264,7 +11264,7 @@ var require_follow_redirects = __commonJS({
11264
11264
  if (!isString2(data) && !isBuffer2(data)) {
11265
11265
  throw new TypeError("data should be a string, Buffer or Uint8Array");
11266
11266
  }
11267
- if (isFunction2(encoding)) {
11267
+ if (isFunction3(encoding)) {
11268
11268
  callback = encoding;
11269
11269
  encoding = null;
11270
11270
  }
@@ -11284,10 +11284,10 @@ var require_follow_redirects = __commonJS({
11284
11284
  }
11285
11285
  };
11286
11286
  RedirectableRequest.prototype.end = function(data, encoding, callback) {
11287
- if (isFunction2(data)) {
11287
+ if (isFunction3(data)) {
11288
11288
  callback = data;
11289
11289
  data = encoding = null;
11290
- } else if (isFunction2(encoding)) {
11290
+ } else if (isFunction3(encoding)) {
11291
11291
  callback = encoding;
11292
11292
  encoding = null;
11293
11293
  }
@@ -11488,7 +11488,7 @@ var require_follow_redirects = __commonJS({
11488
11488
  if (redirectUrl.protocol !== currentUrlParts.protocol && redirectUrl.protocol !== "https:" || redirectUrl.host !== currentHost && !isSubdomain(redirectUrl.host, currentHost)) {
11489
11489
  removeMatchingHeaders(/^(?:(?:proxy-)?authorization|cookie)$/i, this._options.headers);
11490
11490
  }
11491
- if (isFunction2(beforeRedirect)) {
11491
+ if (isFunction3(beforeRedirect)) {
11492
11492
  var responseDetails = {
11493
11493
  headers: response.headers,
11494
11494
  statusCode
@@ -11523,7 +11523,7 @@ var require_follow_redirects = __commonJS({
11523
11523
  options = validateUrl(input);
11524
11524
  input = { protocol };
11525
11525
  }
11526
- if (isFunction2(options)) {
11526
+ if (isFunction3(options)) {
11527
11527
  callback = options;
11528
11528
  options = null;
11529
11529
  }
@@ -11603,7 +11603,7 @@ var require_follow_redirects = __commonJS({
11603
11603
  }
11604
11604
  function createErrorType(code, message, baseClass) {
11605
11605
  function CustomError(properties) {
11606
- if (isFunction2(Error.captureStackTrace)) {
11606
+ if (isFunction3(Error.captureStackTrace)) {
11607
11607
  Error.captureStackTrace(this, this.constructor);
11608
11608
  }
11609
11609
  Object.assign(this, properties || {});
@@ -11638,7 +11638,7 @@ var require_follow_redirects = __commonJS({
11638
11638
  function isString2(value) {
11639
11639
  return typeof value === "string" || value instanceof String;
11640
11640
  }
11641
- function isFunction2(value) {
11641
+ function isFunction3(value) {
11642
11642
  return typeof value === "function";
11643
11643
  }
11644
11644
  function isBuffer2(value) {
@@ -12661,7 +12661,7 @@ var _global = (() => {
12661
12661
  })();
12662
12662
  var isContextDefined = (context) => !isUndefined(context) && context !== _global;
12663
12663
  function merge() {
12664
- const { caseless } = isContextDefined(this) && this || {};
12664
+ const { caseless, skipUndefined } = isContextDefined(this) && this || {};
12665
12665
  const result = {};
12666
12666
  const assignValue = (val, key) => {
12667
12667
  const targetKey = caseless && findKey(result, key) || key;
@@ -12672,7 +12672,9 @@ function merge() {
12672
12672
  } else if (isArray(val)) {
12673
12673
  result[targetKey] = val.slice();
12674
12674
  } else {
12675
- result[targetKey] = val;
12675
+ if (!skipUndefined || !isUndefined(val)) {
12676
+ result[targetKey] = val;
12677
+ }
12676
12678
  }
12677
12679
  };
12678
12680
  for (let i = 0, l = arguments.length; i < l; i++) {
@@ -13002,9 +13004,13 @@ AxiosError.from = (error2, code, config2, request, response, customProps) => {
13002
13004
  }, (prop) => {
13003
13005
  return prop !== "isAxiosError";
13004
13006
  });
13005
- AxiosError.call(axiosError, error2.message, code, config2, request, response);
13006
- axiosError.cause = error2;
13007
- axiosError.name = error2.name;
13007
+ const msg = error2 && error2.message ? error2.message : "Error";
13008
+ const errCode = code == null && error2 ? error2.code : code;
13009
+ AxiosError.call(axiosError, msg, errCode, config2, request, response);
13010
+ if (error2 && axiosError.cause == null) {
13011
+ Object.defineProperty(axiosError, "cause", { value: error2, configurable: true });
13012
+ }
13013
+ axiosError.name = error2 && error2.name || "Error";
13008
13014
  customProps && Object.assign(axiosError, customProps);
13009
13015
  return axiosError;
13010
13016
  };
@@ -13164,7 +13170,7 @@ var AxiosURLSearchParams_default = AxiosURLSearchParams;
13164
13170
 
13165
13171
  // node_modules/axios/lib/helpers/buildURL.js
13166
13172
  function encode2(val) {
13167
- return encodeURIComponent(val).replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%20/g, "+").replace(/%5B/gi, "[").replace(/%5D/gi, "]");
13173
+ return encodeURIComponent(val).replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%20/g, "+");
13168
13174
  }
13169
13175
  function buildURL(url2, params, options) {
13170
13176
  if (!params) {
@@ -13461,7 +13467,7 @@ var defaults = {
13461
13467
  const silentJSONParsing = transitional2 && transitional2.silentJSONParsing;
13462
13468
  const strictJSONParsing = !silentJSONParsing && JSONRequested;
13463
13469
  try {
13464
- return JSON.parse(data);
13470
+ return JSON.parse(data, this.parseReviver);
13465
13471
  } catch (e) {
13466
13472
  if (strictJSONParsing) {
13467
13473
  if (e.name === "SyntaxError") {
@@ -13847,7 +13853,7 @@ var import_follow_redirects = __toESM(require_follow_redirects(), 1);
13847
13853
  var import_zlib = __toESM(require("zlib"), 1);
13848
13854
 
13849
13855
  // node_modules/axios/lib/env/data.js
13850
- var VERSION = "1.11.0";
13856
+ var VERSION = "1.12.0";
13851
13857
 
13852
13858
  // node_modules/axios/lib/helpers/parseProtocol.js
13853
13859
  function parseProtocol(url2) {
@@ -14246,6 +14252,57 @@ var progressEventDecorator = (total, throttled) => {
14246
14252
  };
14247
14253
  var asyncDecorator = (fn) => (...args) => utils_default.asap(() => fn(...args));
14248
14254
 
14255
+ // node_modules/axios/lib/helpers/estimateDataURLDecodedBytes.js
14256
+ function estimateDataURLDecodedBytes(url2) {
14257
+ if (!url2 || typeof url2 !== "string") return 0;
14258
+ if (!url2.startsWith("data:")) return 0;
14259
+ const comma = url2.indexOf(",");
14260
+ if (comma < 0) return 0;
14261
+ const meta = url2.slice(5, comma);
14262
+ const body = url2.slice(comma + 1);
14263
+ const isBase64 = /;base64/i.test(meta);
14264
+ if (isBase64) {
14265
+ let effectiveLen = body.length;
14266
+ const len = body.length;
14267
+ for (let i = 0; i < len; i++) {
14268
+ if (body.charCodeAt(i) === 37 && i + 2 < len) {
14269
+ const a = body.charCodeAt(i + 1);
14270
+ const b = body.charCodeAt(i + 2);
14271
+ const isHex = (a >= 48 && a <= 57 || a >= 65 && a <= 70 || a >= 97 && a <= 102) && (b >= 48 && b <= 57 || b >= 65 && b <= 70 || b >= 97 && b <= 102);
14272
+ if (isHex) {
14273
+ effectiveLen -= 2;
14274
+ i += 2;
14275
+ }
14276
+ }
14277
+ }
14278
+ let pad = 0;
14279
+ let idx = len - 1;
14280
+ const tailIsPct3D = (j) => j >= 2 && body.charCodeAt(j - 2) === 37 && // '%'
14281
+ body.charCodeAt(j - 1) === 51 && // '3'
14282
+ (body.charCodeAt(j) === 68 || body.charCodeAt(j) === 100);
14283
+ if (idx >= 0) {
14284
+ if (body.charCodeAt(idx) === 61) {
14285
+ pad++;
14286
+ idx--;
14287
+ } else if (tailIsPct3D(idx)) {
14288
+ pad++;
14289
+ idx -= 3;
14290
+ }
14291
+ }
14292
+ if (pad === 1 && idx >= 0) {
14293
+ if (body.charCodeAt(idx) === 61) {
14294
+ pad++;
14295
+ } else if (tailIsPct3D(idx)) {
14296
+ pad++;
14297
+ }
14298
+ }
14299
+ const groups = Math.floor(effectiveLen / 4);
14300
+ const bytes = groups * 3 - (pad || 0);
14301
+ return bytes > 0 ? bytes : 0;
14302
+ }
14303
+ return Buffer.byteLength(body, "utf8");
14304
+ }
14305
+
14249
14306
  // node_modules/axios/lib/adapters/http.js
14250
14307
  var zlibOptions = {
14251
14308
  flush: import_zlib.default.constants.Z_SYNC_FLUSH,
@@ -14388,6 +14445,17 @@ var http_default = isHttpAdapterSupported && function httpAdapter(config2) {
14388
14445
  const parsed = new URL(fullPath, platform_default.hasBrowserEnv ? platform_default.origin : void 0);
14389
14446
  const protocol = parsed.protocol || supportedProtocols[0];
14390
14447
  if (protocol === "data:") {
14448
+ if (config2.maxContentLength > -1) {
14449
+ const dataUrl = String(config2.url || fullPath || "");
14450
+ const estimated = estimateDataURLDecodedBytes(dataUrl);
14451
+ if (estimated > config2.maxContentLength) {
14452
+ return reject(new AxiosError_default(
14453
+ "maxContentLength size of " + config2.maxContentLength + " exceeded",
14454
+ AxiosError_default.ERR_BAD_RESPONSE,
14455
+ config2
14456
+ ));
14457
+ }
14458
+ }
14391
14459
  let convertedData;
14392
14460
  if (method !== "GET") {
14393
14461
  return settle(resolve, reject, {
@@ -14881,13 +14949,17 @@ var resolveConfig_default = (config2) => {
14881
14949
  "Basic " + btoa((auth.username || "") + ":" + (auth.password ? unescape(encodeURIComponent(auth.password)) : ""))
14882
14950
  );
14883
14951
  }
14884
- let contentType;
14885
14952
  if (utils_default.isFormData(data)) {
14886
14953
  if (platform_default.hasStandardBrowserEnv || platform_default.hasStandardBrowserWebWorkerEnv) {
14887
14954
  headers.setContentType(void 0);
14888
- } else if ((contentType = headers.getContentType()) !== false) {
14889
- const [type, ...tokens] = contentType ? contentType.split(";").map((token) => token.trim()).filter(Boolean) : [];
14890
- headers.setContentType([type || "multipart/form-data", ...tokens].join("; "));
14955
+ } else if (utils_default.isFunction(data.getHeaders)) {
14956
+ const formHeaders = data.getHeaders();
14957
+ const allowedHeaders = ["content-type", "content-length"];
14958
+ Object.entries(formHeaders).forEach(([key, val]) => {
14959
+ if (allowedHeaders.includes(key.toLowerCase())) {
14960
+ headers.set(key, val);
14961
+ }
14962
+ });
14891
14963
  }
14892
14964
  }
14893
14965
  if (platform_default.hasStandardBrowserEnv) {
@@ -14967,8 +15039,11 @@ var xhr_default = isXHRAdapterSupported && function(config2) {
14967
15039
  reject(new AxiosError_default("Request aborted", AxiosError_default.ECONNABORTED, config2, request));
14968
15040
  request = null;
14969
15041
  };
14970
- request.onerror = function handleError() {
14971
- reject(new AxiosError_default("Network Error", AxiosError_default.ERR_NETWORK, config2, request));
15042
+ request.onerror = function handleError(event) {
15043
+ const msg = event && event.message ? event.message : "Network Error";
15044
+ const err = new AxiosError_default(msg, AxiosError_default.ERR_NETWORK, config2, request);
15045
+ err.event = event || null;
15046
+ reject(err);
14972
15047
  request = null;
14973
15048
  };
14974
15049
  request.ontimeout = function handleTimeout() {
@@ -15143,9 +15218,17 @@ var trackStream = (stream4, chunkSize, onProgress, onFinish) => {
15143
15218
  };
15144
15219
 
15145
15220
  // node_modules/axios/lib/adapters/fetch.js
15146
- var isFetchSupported = typeof fetch === "function" && typeof Request === "function" && typeof Response === "function";
15147
- var isReadableStreamSupported = isFetchSupported && typeof ReadableStream === "function";
15148
- var encodeText = isFetchSupported && (typeof TextEncoder === "function" ? /* @__PURE__ */ ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) : async (str) => new Uint8Array(await new Response(str).arrayBuffer()));
15221
+ var DEFAULT_CHUNK_SIZE = 64 * 1024;
15222
+ var { isFunction: isFunction2 } = utils_default;
15223
+ var globalFetchAPI = (({ fetch, Request, Response }) => ({
15224
+ fetch,
15225
+ Request,
15226
+ Response
15227
+ }))(utils_default.global);
15228
+ var {
15229
+ ReadableStream: ReadableStream2,
15230
+ TextEncoder: TextEncoder2
15231
+ } = utils_default.global;
15149
15232
  var test = (fn, ...args) => {
15150
15233
  try {
15151
15234
  return !!fn(...args);
@@ -15153,164 +15236,202 @@ var test = (fn, ...args) => {
15153
15236
  return false;
15154
15237
  }
15155
15238
  };
15156
- var supportsRequestStream = isReadableStreamSupported && test(() => {
15157
- let duplexAccessed = false;
15158
- const hasContentType = new Request(platform_default.origin, {
15159
- body: new ReadableStream(),
15160
- method: "POST",
15161
- get duplex() {
15162
- duplexAccessed = true;
15163
- return "half";
15164
- }
15165
- }).headers.has("Content-Type");
15166
- return duplexAccessed && !hasContentType;
15167
- });
15168
- var DEFAULT_CHUNK_SIZE = 64 * 1024;
15169
- var supportsResponseStream = isReadableStreamSupported && test(() => utils_default.isReadableStream(new Response("").body));
15170
- var resolvers = {
15171
- stream: supportsResponseStream && ((res) => res.body)
15172
- };
15173
- isFetchSupported && ((res) => {
15174
- ["text", "arrayBuffer", "blob", "formData", "stream"].forEach((type) => {
15175
- !resolvers[type] && (resolvers[type] = utils_default.isFunction(res[type]) ? (res2) => res2[type]() : (_, config2) => {
15176
- throw new AxiosError_default(`Response type '${type}' is not supported`, AxiosError_default.ERR_NOT_SUPPORT, config2);
15177
- });
15178
- });
15179
- })(new Response());
15180
- var getBodyLength = async (body) => {
15181
- if (body == null) {
15182
- return 0;
15183
- }
15184
- if (utils_default.isBlob(body)) {
15185
- return body.size;
15239
+ var factory = (env) => {
15240
+ const { fetch, Request, Response } = Object.assign({}, globalFetchAPI, env);
15241
+ const isFetchSupported = isFunction2(fetch);
15242
+ const isRequestSupported = isFunction2(Request);
15243
+ const isResponseSupported = isFunction2(Response);
15244
+ if (!isFetchSupported) {
15245
+ return false;
15186
15246
  }
15187
- if (utils_default.isSpecCompliantForm(body)) {
15188
- const _request = new Request(platform_default.origin, {
15247
+ const isReadableStreamSupported = isFetchSupported && isFunction2(ReadableStream2);
15248
+ const encodeText = isFetchSupported && (typeof TextEncoder2 === "function" ? /* @__PURE__ */ ((encoder) => (str) => encoder.encode(str))(new TextEncoder2()) : async (str) => new Uint8Array(await new Request(str).arrayBuffer()));
15249
+ const supportsRequestStream = isRequestSupported && isReadableStreamSupported && test(() => {
15250
+ let duplexAccessed = false;
15251
+ const hasContentType = new Request(platform_default.origin, {
15252
+ body: new ReadableStream2(),
15189
15253
  method: "POST",
15190
- body
15191
- });
15192
- return (await _request.arrayBuffer()).byteLength;
15193
- }
15194
- if (utils_default.isArrayBufferView(body) || utils_default.isArrayBuffer(body)) {
15195
- return body.byteLength;
15196
- }
15197
- if (utils_default.isURLSearchParams(body)) {
15198
- body = body + "";
15199
- }
15200
- if (utils_default.isString(body)) {
15201
- return (await encodeText(body)).byteLength;
15202
- }
15203
- };
15204
- var resolveBodyLength = async (headers, body) => {
15205
- const length = utils_default.toFiniteNumber(headers.getContentLength());
15206
- return length == null ? getBodyLength(body) : length;
15207
- };
15208
- var fetch_default = isFetchSupported && (async (config2) => {
15209
- let {
15210
- url: url2,
15211
- method,
15212
- data,
15213
- signal,
15214
- cancelToken,
15215
- timeout,
15216
- onDownloadProgress,
15217
- onUploadProgress,
15218
- responseType,
15219
- headers,
15220
- withCredentials = "same-origin",
15221
- fetchOptions
15222
- } = resolveConfig_default(config2);
15223
- responseType = responseType ? (responseType + "").toLowerCase() : "text";
15224
- let composedSignal = composeSignals_default([signal, cancelToken && cancelToken.toAbortSignal()], timeout);
15225
- let request;
15226
- const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {
15227
- composedSignal.unsubscribe();
15254
+ get duplex() {
15255
+ duplexAccessed = true;
15256
+ return "half";
15257
+ }
15258
+ }).headers.has("Content-Type");
15259
+ return duplexAccessed && !hasContentType;
15228
15260
  });
15229
- let requestContentLength;
15230
- try {
15231
- if (onUploadProgress && supportsRequestStream && method !== "get" && method !== "head" && (requestContentLength = await resolveBodyLength(headers, data)) !== 0) {
15232
- let _request = new Request(url2, {
15233
- method: "POST",
15234
- body: data,
15235
- duplex: "half"
15261
+ const supportsResponseStream = isResponseSupported && isReadableStreamSupported && test(() => utils_default.isReadableStream(new Response("").body));
15262
+ const resolvers = {
15263
+ stream: supportsResponseStream && ((res) => res.body)
15264
+ };
15265
+ isFetchSupported && (() => {
15266
+ ["text", "arrayBuffer", "blob", "formData", "stream"].forEach((type) => {
15267
+ !resolvers[type] && (resolvers[type] = (res, config2) => {
15268
+ let method = res && res[type];
15269
+ if (method) {
15270
+ return method.call(res);
15271
+ }
15272
+ throw new AxiosError_default(`Response type '${type}' is not supported`, AxiosError_default.ERR_NOT_SUPPORT, config2);
15236
15273
  });
15237
- let contentTypeHeader;
15238
- if (utils_default.isFormData(data) && (contentTypeHeader = _request.headers.get("content-type"))) {
15239
- headers.setContentType(contentTypeHeader);
15240
- }
15241
- if (_request.body) {
15242
- const [onProgress, flush] = progressEventDecorator(
15243
- requestContentLength,
15244
- progressEventReducer(asyncDecorator(onUploadProgress))
15245
- );
15246
- data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);
15247
- }
15274
+ });
15275
+ })();
15276
+ const getBodyLength = async (body) => {
15277
+ if (body == null) {
15278
+ return 0;
15248
15279
  }
15249
- if (!utils_default.isString(withCredentials)) {
15250
- withCredentials = withCredentials ? "include" : "omit";
15280
+ if (utils_default.isBlob(body)) {
15281
+ return body.size;
15251
15282
  }
15252
- const isCredentialsSupported = "credentials" in Request.prototype;
15253
- request = new Request(url2, {
15254
- ...fetchOptions,
15255
- signal: composedSignal,
15256
- method: method.toUpperCase(),
15257
- headers: headers.normalize().toJSON(),
15258
- body: data,
15259
- duplex: "half",
15260
- credentials: isCredentialsSupported ? withCredentials : void 0
15261
- });
15262
- let response = await fetch(request, fetchOptions);
15263
- const isStreamResponse = supportsResponseStream && (responseType === "stream" || responseType === "response");
15264
- if (supportsResponseStream && (onDownloadProgress || isStreamResponse && unsubscribe)) {
15265
- const options = {};
15266
- ["status", "statusText", "headers"].forEach((prop) => {
15267
- options[prop] = response[prop];
15268
- });
15269
- const responseContentLength = utils_default.toFiniteNumber(response.headers.get("content-length"));
15270
- const [onProgress, flush] = onDownloadProgress && progressEventDecorator(
15271
- responseContentLength,
15272
- progressEventReducer(asyncDecorator(onDownloadProgress), true)
15273
- ) || [];
15274
- response = new Response(
15275
- trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {
15276
- flush && flush();
15277
- unsubscribe && unsubscribe();
15278
- }),
15279
- options
15280
- );
15281
- }
15282
- responseType = responseType || "text";
15283
- let responseData = await resolvers[utils_default.findKey(resolvers, responseType) || "text"](response, config2);
15284
- !isStreamResponse && unsubscribe && unsubscribe();
15285
- return await new Promise((resolve, reject) => {
15286
- settle(resolve, reject, {
15287
- data: responseData,
15288
- headers: AxiosHeaders_default.from(response.headers),
15289
- status: response.status,
15290
- statusText: response.statusText,
15291
- config: config2,
15292
- request
15283
+ if (utils_default.isSpecCompliantForm(body)) {
15284
+ const _request = new Request(platform_default.origin, {
15285
+ method: "POST",
15286
+ body
15293
15287
  });
15288
+ return (await _request.arrayBuffer()).byteLength;
15289
+ }
15290
+ if (utils_default.isArrayBufferView(body) || utils_default.isArrayBuffer(body)) {
15291
+ return body.byteLength;
15292
+ }
15293
+ if (utils_default.isURLSearchParams(body)) {
15294
+ body = body + "";
15295
+ }
15296
+ if (utils_default.isString(body)) {
15297
+ return (await encodeText(body)).byteLength;
15298
+ }
15299
+ };
15300
+ const resolveBodyLength = async (headers, body) => {
15301
+ const length = utils_default.toFiniteNumber(headers.getContentLength());
15302
+ return length == null ? getBodyLength(body) : length;
15303
+ };
15304
+ return async (config2) => {
15305
+ let {
15306
+ url: url2,
15307
+ method,
15308
+ data,
15309
+ signal,
15310
+ cancelToken,
15311
+ timeout,
15312
+ onDownloadProgress,
15313
+ onUploadProgress,
15314
+ responseType,
15315
+ headers,
15316
+ withCredentials = "same-origin",
15317
+ fetchOptions
15318
+ } = resolveConfig_default(config2);
15319
+ responseType = responseType ? (responseType + "").toLowerCase() : "text";
15320
+ let composedSignal = composeSignals_default([signal, cancelToken && cancelToken.toAbortSignal()], timeout);
15321
+ let request = null;
15322
+ const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {
15323
+ composedSignal.unsubscribe();
15294
15324
  });
15295
- } catch (err) {
15296
- unsubscribe && unsubscribe();
15297
- if (err && err.name === "TypeError" && /Load failed|fetch/i.test(err.message)) {
15298
- throw Object.assign(
15299
- new AxiosError_default("Network Error", AxiosError_default.ERR_NETWORK, config2, request),
15300
- {
15301
- cause: err.cause || err
15325
+ let requestContentLength;
15326
+ try {
15327
+ if (onUploadProgress && supportsRequestStream && method !== "get" && method !== "head" && (requestContentLength = await resolveBodyLength(headers, data)) !== 0) {
15328
+ let _request = new Request(url2, {
15329
+ method: "POST",
15330
+ body: data,
15331
+ duplex: "half"
15332
+ });
15333
+ let contentTypeHeader;
15334
+ if (utils_default.isFormData(data) && (contentTypeHeader = _request.headers.get("content-type"))) {
15335
+ headers.setContentType(contentTypeHeader);
15302
15336
  }
15303
- );
15337
+ if (_request.body) {
15338
+ const [onProgress, flush] = progressEventDecorator(
15339
+ requestContentLength,
15340
+ progressEventReducer(asyncDecorator(onUploadProgress))
15341
+ );
15342
+ data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);
15343
+ }
15344
+ }
15345
+ if (!utils_default.isString(withCredentials)) {
15346
+ withCredentials = withCredentials ? "include" : "omit";
15347
+ }
15348
+ const isCredentialsSupported = isRequestSupported && "credentials" in Request.prototype;
15349
+ const resolvedOptions = {
15350
+ ...fetchOptions,
15351
+ signal: composedSignal,
15352
+ method: method.toUpperCase(),
15353
+ headers: headers.normalize().toJSON(),
15354
+ body: data,
15355
+ duplex: "half",
15356
+ credentials: isCredentialsSupported ? withCredentials : void 0
15357
+ };
15358
+ request = isRequestSupported && new Request(url2, resolvedOptions);
15359
+ let response = await (isRequestSupported ? fetch(request, fetchOptions) : fetch(url2, resolvedOptions));
15360
+ const isStreamResponse = supportsResponseStream && (responseType === "stream" || responseType === "response");
15361
+ if (supportsResponseStream && (onDownloadProgress || isStreamResponse && unsubscribe)) {
15362
+ const options = {};
15363
+ ["status", "statusText", "headers"].forEach((prop) => {
15364
+ options[prop] = response[prop];
15365
+ });
15366
+ const responseContentLength = utils_default.toFiniteNumber(response.headers.get("content-length"));
15367
+ const [onProgress, flush] = onDownloadProgress && progressEventDecorator(
15368
+ responseContentLength,
15369
+ progressEventReducer(asyncDecorator(onDownloadProgress), true)
15370
+ ) || [];
15371
+ response = new Response(
15372
+ trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {
15373
+ flush && flush();
15374
+ unsubscribe && unsubscribe();
15375
+ }),
15376
+ options
15377
+ );
15378
+ }
15379
+ responseType = responseType || "text";
15380
+ let responseData = await resolvers[utils_default.findKey(resolvers, responseType) || "text"](response, config2);
15381
+ !isStreamResponse && unsubscribe && unsubscribe();
15382
+ return await new Promise((resolve, reject) => {
15383
+ settle(resolve, reject, {
15384
+ data: responseData,
15385
+ headers: AxiosHeaders_default.from(response.headers),
15386
+ status: response.status,
15387
+ statusText: response.statusText,
15388
+ config: config2,
15389
+ request
15390
+ });
15391
+ });
15392
+ } catch (err) {
15393
+ unsubscribe && unsubscribe();
15394
+ if (err && err.name === "TypeError" && /Load failed|fetch/i.test(err.message)) {
15395
+ throw Object.assign(
15396
+ new AxiosError_default("Network Error", AxiosError_default.ERR_NETWORK, config2, request),
15397
+ {
15398
+ cause: err.cause || err
15399
+ }
15400
+ );
15401
+ }
15402
+ throw AxiosError_default.from(err, err && err.code, config2, request);
15304
15403
  }
15305
- throw AxiosError_default.from(err, err && err.code, config2, request);
15306
- }
15307
- });
15404
+ };
15405
+ };
15406
+ var seedCache = /* @__PURE__ */ new Map();
15407
+ var getFetch = (config2) => {
15408
+ let env = utils_default.merge.call({
15409
+ skipUndefined: true
15410
+ }, globalFetchAPI, config2 ? config2.env : null);
15411
+ const { fetch, Request, Response } = env;
15412
+ const seeds = [
15413
+ Request,
15414
+ Response,
15415
+ fetch
15416
+ ];
15417
+ let len = seeds.length, i = len, seed, target, map = seedCache;
15418
+ while (i--) {
15419
+ seed = seeds[i];
15420
+ target = map.get(seed);
15421
+ target === void 0 && map.set(seed, target = i ? /* @__PURE__ */ new Map() : factory(env));
15422
+ map = target;
15423
+ }
15424
+ return target;
15425
+ };
15426
+ var adapter = getFetch();
15308
15427
 
15309
15428
  // node_modules/axios/lib/adapters/adapters.js
15310
15429
  var knownAdapters = {
15311
15430
  http: http_default,
15312
15431
  xhr: xhr_default,
15313
- fetch: fetch_default
15432
+ fetch: {
15433
+ get: getFetch
15434
+ }
15314
15435
  };
15315
15436
  utils_default.forEach(knownAdapters, (fn, value) => {
15316
15437
  if (fn) {
@@ -15322,30 +15443,30 @@ utils_default.forEach(knownAdapters, (fn, value) => {
15322
15443
  }
15323
15444
  });
15324
15445
  var renderReason = (reason) => `- ${reason}`;
15325
- var isResolvedHandle = (adapter) => utils_default.isFunction(adapter) || adapter === null || adapter === false;
15446
+ var isResolvedHandle = (adapter2) => utils_default.isFunction(adapter2) || adapter2 === null || adapter2 === false;
15326
15447
  var adapters_default = {
15327
- getAdapter: (adapters) => {
15448
+ getAdapter: (adapters, config2) => {
15328
15449
  adapters = utils_default.isArray(adapters) ? adapters : [adapters];
15329
15450
  const { length } = adapters;
15330
15451
  let nameOrAdapter;
15331
- let adapter;
15452
+ let adapter2;
15332
15453
  const rejectedReasons = {};
15333
15454
  for (let i = 0; i < length; i++) {
15334
15455
  nameOrAdapter = adapters[i];
15335
15456
  let id;
15336
- adapter = nameOrAdapter;
15457
+ adapter2 = nameOrAdapter;
15337
15458
  if (!isResolvedHandle(nameOrAdapter)) {
15338
- adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];
15339
- if (adapter === void 0) {
15459
+ adapter2 = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];
15460
+ if (adapter2 === void 0) {
15340
15461
  throw new AxiosError_default(`Unknown adapter '${id}'`);
15341
15462
  }
15342
15463
  }
15343
- if (adapter) {
15464
+ if (adapter2 && (utils_default.isFunction(adapter2) || (adapter2 = adapter2.get(config2)))) {
15344
15465
  break;
15345
15466
  }
15346
- rejectedReasons[id || "#" + i] = adapter;
15467
+ rejectedReasons[id || "#" + i] = adapter2;
15347
15468
  }
15348
- if (!adapter) {
15469
+ if (!adapter2) {
15349
15470
  const reasons = Object.entries(rejectedReasons).map(
15350
15471
  ([id, state]) => `adapter ${id} ` + (state === false ? "is not supported by the environment" : "is not available in the build")
15351
15472
  );
@@ -15355,7 +15476,7 @@ var adapters_default = {
15355
15476
  "ERR_NOT_SUPPORT"
15356
15477
  );
15357
15478
  }
15358
- return adapter;
15479
+ return adapter2;
15359
15480
  },
15360
15481
  adapters: knownAdapters
15361
15482
  };
@@ -15379,8 +15500,8 @@ function dispatchRequest(config2) {
15379
15500
  if (["post", "put", "patch"].indexOf(config2.method) !== -1) {
15380
15501
  config2.headers.setContentType("application/x-www-form-urlencoded", false);
15381
15502
  }
15382
- const adapter = adapters_default.getAdapter(config2.adapter || defaults_default.adapter);
15383
- return adapter(config2).then(function onAdapterResolution(response) {
15503
+ const adapter2 = adapters_default.getAdapter(config2.adapter || defaults_default.adapter, config2);
15504
+ return adapter2(config2).then(function onAdapterResolution(response) {
15384
15505
  throwIfCancellationRequested(config2);
15385
15506
  response.data = transformData.call(
15386
15507
  config2,
@@ -16829,60 +16950,10 @@ axiosRetry.linearDelay = linearDelay;
16829
16950
  axiosRetry.isRetryableError = isRetryableError;
16830
16951
  var esm_default = axiosRetry;
16831
16952
 
16832
- // node_modules/uuid/dist/esm/stringify.js
16833
- var byteToHex = [];
16834
- for (let i = 0; i < 256; ++i) {
16835
- byteToHex.push((i + 256).toString(16).slice(1));
16836
- }
16837
- function unsafeStringify(arr, offset = 0) {
16838
- return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();
16839
- }
16840
-
16841
- // node_modules/uuid/dist/esm/rng.js
16842
- var import_crypto2 = require("crypto");
16843
- var rnds8Pool = new Uint8Array(256);
16844
- var poolPtr = rnds8Pool.length;
16845
- function rng() {
16846
- if (poolPtr > rnds8Pool.length - 16) {
16847
- (0, import_crypto2.randomFillSync)(rnds8Pool);
16848
- poolPtr = 0;
16849
- }
16850
- return rnds8Pool.slice(poolPtr, poolPtr += 16);
16851
- }
16852
-
16853
- // node_modules/uuid/dist/esm/native.js
16854
- var import_crypto3 = require("crypto");
16855
- var native_default = { randomUUID: import_crypto3.randomUUID };
16856
-
16857
- // node_modules/uuid/dist/esm/v4.js
16858
- function v4(options, buf, offset) {
16859
- if (native_default.randomUUID && !buf && !options) {
16860
- return native_default.randomUUID();
16861
- }
16862
- options = options || {};
16863
- const rnds = options.random ?? options.rng?.() ?? rng();
16864
- if (rnds.length < 16) {
16865
- throw new Error("Random bytes length must be >= 16");
16866
- }
16867
- rnds[6] = rnds[6] & 15 | 64;
16868
- rnds[8] = rnds[8] & 63 | 128;
16869
- if (buf) {
16870
- offset = offset || 0;
16871
- if (offset < 0 || offset + 16 > buf.length) {
16872
- throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);
16873
- }
16874
- for (let i = 0; i < 16; ++i) {
16875
- buf[offset + i] = rnds[i];
16876
- }
16877
- return buf;
16878
- }
16879
- return unsafeStringify(rnds);
16880
- }
16881
- var v4_default = v4;
16882
-
16883
16953
  // src/teamcity/auth.ts
16954
+ var import_crypto2 = require("crypto");
16884
16955
  function generateRequestId() {
16885
- return v4_default();
16956
+ return (0, import_crypto2.randomUUID)();
16886
16957
  }
16887
16958
  function addRequestId(config2) {
16888
16959
  const requestId = generateRequestId();