{"version":3,"sources":["jsdelivr-header.js","/npm/@dynatrace-sdk/client-query@1.27.0/cjs/index.js"],"names":[],"mappings":"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","file":"/npm/@dynatrace-sdk/client-query@1.27.0/cjs/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.48.0.\n * Original file: /npm/@dynatrace-sdk/client-query@1.27.0/cjs/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/**\n * @license\n * Copyright 2023-2026 Dynatrace LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n  if (from && typeof from === \"object\" || typeof from === \"function\") {\n    for (let key of __getOwnPropNames(from))\n      if (!__hasOwnProp.call(to, key) && key !== except)\n        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n  }\n  return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// packages/client/query/src/index.ts\nvar index_exports = {};\n__export(index_exports, {\n  ApiClientError: () => import_shared_errors5.ApiClientError,\n  ApiGatewayError: () => import_shared_errors5.ApiGatewayError,\n  BadRequest: () => BadRequest,\n  ClientRequestError: () => import_shared_errors5.ClientRequestError,\n  Conflict: () => Conflict,\n  DQLNodeNodeType: () => DQLNodeNodeType,\n  ErrorEnvelopeError: () => ErrorEnvelopeError,\n  FieldTypeType: () => FieldTypeType,\n  GatewayTimeout: () => GatewayTimeout,\n  InsufficientPermission: () => InsufficientPermission,\n  InternalServerError: () => InternalServerError,\n  InvalidResponseError: () => import_shared_errors5.InvalidResponseError,\n  MethodNotAllowed: () => MethodNotAllowed,\n  PayloadTooLarge: () => PayloadTooLarge,\n  QueryAssistanceClient: () => QueryAssistanceClient,\n  QueryExecutionClient: () => QueryExecutionClient,\n  QueryGone: () => QueryGone,\n  QueryNotFound: () => QueryNotFound,\n  QueryState: () => QueryState,\n  ServiceUnavailable: () => ServiceUnavailable,\n  TenantNotFound: () => TenantNotFound,\n  TokenType: () => TokenType,\n  TooManyRequests: () => TooManyRequests,\n  Unauthorized: () => Unauthorized,\n  UnsupportedMediaType: () => UnsupportedMediaType,\n  isApiClientError: () => import_shared_errors5.isApiClientError,\n  isApiGatewayError: () => import_shared_errors5.isApiGatewayError,\n  isBadRequest: () => isBadRequest,\n  isClientRequestError: () => import_shared_errors5.isClientRequestError,\n  isConflict: () => isConflict,\n  isErrorEnvelopeError: () => isErrorEnvelopeError,\n  isGatewayTimeout: () => isGatewayTimeout,\n  isInsufficientPermission: () => isInsufficientPermission,\n  isInternalServerError: () => isInternalServerError,\n  isInvalidResponseError: () => import_shared_errors5.isInvalidResponseError,\n  isMethodNotAllowed: () => isMethodNotAllowed,\n  isPayloadTooLarge: () => isPayloadTooLarge,\n  isQueryGone: () => isQueryGone,\n  isQueryNotFound: () => isQueryNotFound,\n  isServiceUnavailable: () => isServiceUnavailable,\n  isTenantNotFound: () => isTenantNotFound,\n  isTooManyRequests: () => isTooManyRequests,\n  isUnauthorized: () => isUnauthorized,\n  isUnsupportedMediaType: () => isUnsupportedMediaType,\n  queryAssistanceClient: () => queryAssistanceClient,\n  queryExecutionClient: () => queryExecutionClient\n});\nmodule.exports = __toCommonJS(index_exports);\n\n// packages/client/query/src/lib/apis/query-assistance-api.ts\nvar import_http_client = require(\"@dynatrace-sdk/http-client\");\nvar import_shared_errors3 = require(\"@dynatrace-sdk/shared-errors\");\n\n// packages/client/query/src/lib/error-envelopes/api-gateway-errors-handler.ts\nvar import_shared_errors = require(\"@dynatrace-sdk/shared-errors\");\nasync function apiGatewayErrorsHandler(response) {\n  if (response.headers?.[\"dynatrace-response-source\"] === \"API Gateway\") {\n    const responseBody = await response.body(\"json\");\n    throw new import_shared_errors.ApiGatewayError(response, responseBody);\n  }\n}\n\n// packages/client/query/src/lib/error-envelopes/error-envelope-error.ts\nvar import_shared_errors2 = require(\"@dynatrace-sdk/shared-errors\");\nvar ErrorEnvelopeError = class extends import_shared_errors2.ClientRequestError {\n  isErrorEnvelopeError = true;\n};\nfunction isErrorEnvelopeError(e) {\n  return e?.isApiClientError === true && e?.isClientRequestError === true && e?.isErrorEnvelopeError === true && e instanceof Error;\n}\n\n// packages/client/query/src/lib/error-envelopes/get-error-message.ts\nfunction serializeData(data) {\n  try {\n    return JSON.stringify(data);\n  } catch (e) {\n    return String(data);\n  }\n}\nfunction getMessagesFromErrorDetails(details) {\n  const messages = [];\n  Object.entries(details).forEach(([name, data]) => {\n    if (!data) return;\n    const serializedData = serializeData(data);\n    switch (name) {\n      case \"missingScopes\":\n        messages.push(`Missing scopes: ${serializedData}`);\n        break;\n      default:\n        messages.push(`${name}: ${serializedData}`);\n    }\n  }, []);\n  return messages;\n}\nfunction getErrorMessage(errorBody, defaultMessage) {\n  const error = errorBody;\n  const msg = error?.error?.message || defaultMessage;\n  const details = error?.error?.details || {};\n  return [msg, ...getMessagesFromErrorDetails(details)].join(\". \");\n}\n\n// packages/client/query/src/lib/error-envelopes/responses/bad-request.ts\nvar BadRequest = class extends ErrorEnvelopeError {\n  isBadRequest = true;\n  name = \"BadRequest\";\n};\nfunction isBadRequest(e) {\n  return e?.isApiClientError === true && e?.isClientRequestError === true && e?.isErrorEnvelopeError === true && e?.isBadRequest === true && e instanceof Error;\n}\n\n// packages/client/query/src/lib/error-envelopes/responses/gateway-timeout.ts\nvar GatewayTimeout = class extends ErrorEnvelopeError {\n  isGatewayTimeout = true;\n  name = \"GatewayTimeout\";\n};\nfunction isGatewayTimeout(e) {\n  return e?.isApiClientError === true && e?.isClientRequestError === true && e?.isErrorEnvelopeError === true && e?.isGatewayTimeout === true && e instanceof Error;\n}\n\n// packages/client/query/src/lib/error-envelopes/responses/insufficient-permission.ts\nvar InsufficientPermission = class extends ErrorEnvelopeError {\n  isInsufficientPermission = true;\n  name = \"InsufficientPermission\";\n};\nfunction isInsufficientPermission(e) {\n  return e?.isApiClientError === true && e?.isClientRequestError === true && e?.isErrorEnvelopeError === true && e?.isInsufficientPermission === true && e instanceof Error;\n}\n\n// packages/client/query/src/lib/error-envelopes/responses/internal-server-error.ts\nvar InternalServerError = class extends ErrorEnvelopeError {\n  isInternalServerError = true;\n  name = \"InternalServerError\";\n};\nfunction isInternalServerError(e) {\n  return e?.isApiClientError === true && e?.isClientRequestError === true && e?.isErrorEnvelopeError === true && e?.isInternalServerError === true && e instanceof Error;\n}\n\n// packages/client/query/src/lib/error-envelopes/responses/method-not-allowed.ts\nvar MethodNotAllowed = class extends ErrorEnvelopeError {\n  isMethodNotAllowed = true;\n  name = \"MethodNotAllowed\";\n};\nfunction isMethodNotAllowed(e) {\n  return e?.isApiClientError === true && e?.isClientRequestError === true && e?.isErrorEnvelopeError === true && e?.isMethodNotAllowed === true && e instanceof Error;\n}\n\n// packages/client/query/src/lib/error-envelopes/responses/payload-too-large.ts\nvar PayloadTooLarge = class extends ErrorEnvelopeError {\n  isPayloadTooLarge = true;\n  name = \"PayloadTooLarge\";\n};\nfunction isPayloadTooLarge(e) {\n  return e?.isApiClientError === true && e?.isClientRequestError === true && e?.isErrorEnvelopeError === true && e?.isPayloadTooLarge === true && e instanceof Error;\n}\n\n// packages/client/query/src/lib/error-envelopes/responses/service-unavailable.ts\nvar ServiceUnavailable = class extends ErrorEnvelopeError {\n  isServiceUnavailable = true;\n  name = \"ServiceUnavailable\";\n};\nfunction isServiceUnavailable(e) {\n  return e?.isApiClientError === true && e?.isClientRequestError === true && e?.isErrorEnvelopeError === true && e?.isServiceUnavailable === true && e instanceof Error;\n}\n\n// packages/client/query/src/lib/error-envelopes/responses/tenant-not-found.ts\nvar TenantNotFound = class extends ErrorEnvelopeError {\n  isTenantNotFound = true;\n  name = \"TenantNotFound\";\n};\nfunction isTenantNotFound(e) {\n  return e?.isApiClientError === true && e?.isClientRequestError === true && e?.isErrorEnvelopeError === true && e?.isTenantNotFound === true && e instanceof Error;\n}\n\n// packages/client/query/src/lib/error-envelopes/responses/unauthorized.ts\nvar Unauthorized = class extends ErrorEnvelopeError {\n  isUnauthorized = true;\n  name = \"Unauthorized\";\n};\nfunction isUnauthorized(e) {\n  return e?.isApiClientError === true && e?.isClientRequestError === true && e?.isErrorEnvelopeError === true && e?.isUnauthorized === true && e instanceof Error;\n}\n\n// packages/client/query/src/lib/error-envelopes/responses/unsupported-media-type.ts\nvar UnsupportedMediaType = class extends ErrorEnvelopeError {\n  isUnsupportedMediaType = true;\n  name = \"UnsupportedMediaType\";\n};\nfunction isUnsupportedMediaType(e) {\n  return e?.isApiClientError === true && e?.isClientRequestError === true && e?.isErrorEnvelopeError === true && e?.isUnsupportedMediaType === true && e instanceof Error;\n}\n\n// packages/client/query/src/lib/utils/transformations.ts\nvar defaultRuleConfig = {\n  force: false,\n  datetime: false\n};\nfunction mergeKeys(key1, key2) {\n  if (!key1) return key2;\n  if (!key2) return key1;\n  return `${key1}.${key2}`;\n}\nfunction matchKey(key, rules, cache) {\n  if (cache.has(key)) {\n    return cache.get(key);\n  }\n  for (const rule of rules) {\n    const pattern = Array.isArray(rule) ? rule[0] : rule;\n    const config = Array.isArray(rule) ? rule[1] : defaultRuleConfig;\n    if (key === pattern) {\n      const result = [pattern, config];\n      cache.set(key, result);\n      return result;\n    }\n    let i = 0;\n    let j = 0;\n    const keyLen = key.length;\n    const patternLen = pattern.length;\n    let isMatch = true;\n    while (i < keyLen && j < patternLen) {\n      let keyPartEnd = key.indexOf(\".\", i);\n      let patternPartEnd = pattern.indexOf(\".\", j);\n      if (keyPartEnd === -1) keyPartEnd = keyLen;\n      if (patternPartEnd === -1) patternPartEnd = patternLen;\n      const keyPart = key.slice(i, keyPartEnd);\n      const patternPart = pattern.slice(j, patternPartEnd);\n      if (patternPart !== \"*\" && patternPart !== \"**\" && keyPart !== patternPart) {\n        isMatch = false;\n        break;\n      }\n      i = keyPartEnd + 1;\n      j = patternPartEnd + 1;\n    }\n    if (isMatch) {\n      if (j < patternLen) {\n        const remaining = pattern.slice(j);\n        if (remaining !== \"**\" && remaining !== \"*\") {\n          isMatch = false;\n        }\n      }\n      if (i < keyLen && pattern.slice(j - 1) !== \"**\") {\n        isMatch = false;\n      }\n    }\n    if (isMatch) {\n      const result = [pattern, config];\n      cache.set(key, result);\n      return result;\n    }\n  }\n  cache.set(key, null);\n  return null;\n}\nvar potentialMatchForRoot = (pattern, key) => pattern.startsWith(key) || pattern.startsWith(\"*\") || pattern.startsWith(\"**\");\nvar potentialMatch = (pattern, key) => pattern.startsWith(key) || pattern.includes(\"*\") || pattern.includes(\"**\");\nfunction partialMatch(key, keyPatterns) {\n  const keyPatternsLen = keyPatterns.length;\n  if (!key.includes(\".\")) {\n    for (let i = 0; i < keyPatternsLen; i++) {\n      const pattern = keyPatterns[i];\n      if (potentialMatchForRoot(pattern, key)) return true;\n    }\n    return false;\n  }\n  let dotIndex = -1;\n  let currentKeyEnd = 0;\n  while ((dotIndex = key.indexOf(\".\", currentKeyEnd)) !== -1) {\n    const currentKey = key.slice(0, dotIndex);\n    const isRoot = !currentKey.includes(\".\");\n    for (let i = 0; i < keyPatternsLen; i++) {\n      const pattern = keyPatterns[i];\n      if (isRoot) {\n        if (potentialMatchForRoot(pattern, currentKey)) return true;\n      } else if (potentialMatch(pattern, currentKey)) return true;\n    }\n    currentKeyEnd = dotIndex + 1;\n  }\n  for (let i = 0; i < keyPatternsLen; i++) {\n    const pattern = keyPatterns[i];\n    if (potentialMatch(pattern, key)) return true;\n  }\n  return false;\n}\nvar dateTimePattern = /^(\\d{4}-\\d{2}-\\d{2})(T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})?)?$/i;\nfunction isDateLike(value) {\n  if (typeof value === \"string\") {\n    return dateTimePattern.test(value);\n  }\n  return false;\n}\nfunction transformValue(value, rules, direction) {\n  const { force, datetime } = rules;\n  if (direction === \"to\") {\n    return force || isDateLike(value) ? new Date(value) : value;\n  }\n  if (value instanceof Date) {\n    const iso = value.toISOString();\n    return datetime ? iso : iso.split(\"T\")[0];\n  }\n  return value;\n}\nfunction walk(obj, direction, rules, rulesCache, keyPatterns, currentKey = \"\") {\n  if (rules.length <= 0) {\n    return obj;\n  }\n  if (!partialMatch(currentKey, keyPatterns)) {\n    return obj;\n  }\n  if (Array.isArray(obj)) {\n    const match = matchKey(currentKey, rules, rulesCache);\n    obj.forEach((item, idx) => {\n      if (typeof item === \"object\" && item !== null) {\n        walk(item, direction, rules, rulesCache, keyPatterns, currentKey);\n      } else if (match) {\n        obj[idx] = transformValue(obj[idx], match[1], direction);\n      }\n    });\n  }\n  if (typeof obj === \"object\" && obj !== null && !Array.isArray(obj)) {\n    for (const key of Object.keys(obj)) {\n      const mergedKey = mergeKeys(currentKey, key);\n      const match = matchKey(mergedKey, rules, rulesCache);\n      if (match) {\n        obj[key] = transformValue(obj[key], match[1], direction);\n      }\n      walk(obj[key], direction, rules, rulesCache, keyPatterns, mergedKey);\n    }\n  }\n  return obj;\n}\nfunction flattenKeyPatterns(keyPatterns) {\n  return keyPatterns.map((k) => Array.isArray(k) ? k[0] : k);\n}\nfunction transform(direction, object, rules) {\n  const flatKeyPatterns = flattenKeyPatterns(rules);\n  const rulesCache = /* @__PURE__ */ new Map();\n  return walk(object, direction, rules, rulesCache, flatKeyPatterns);\n}\nfunction transformRequest(object, rules) {\n  return transform(\"from\", object, rules);\n}\nfunction transformResponse(object, rules) {\n  return transform(\"to\", object, rules);\n}\n\n// packages/client/query/src/lib/apis/query-assistance-api.ts\nvar QueryAssistanceClient = class {\n  httpClient;\n  shouldTransformDates = true;\n  /**\n   * @param {HttpClient} httpClientImplementation - You can provide custom http client as a parameter to constructor of a QueryAssistanceClient. Custom http client should implement {HttpClient} interface.\n   * @param {ApiClientOptions} [options] - Optional configuration for SDK Client.\n   * @example\n   * const queryAssistanceClientNodeJs = new QueryAssistanceClient(yourCustomImplementation);\n   */\n  constructor(httpClientImplementation, options) {\n    this.httpClient = httpClientImplementation;\n    this.shouldTransformDates = options?.transformDates ?? true;\n  }\n  /**\n   * Get a structured list of suggestions for the query at the given position.\n   *\n   * For information about the required permissions see the [Bucket and table permissions in Grail documentation](https://docs.dynatrace.com/docs/shortlink/assign-bucket-table-permissions).\n   *\n   * ## Overview\n   *\n   * We provide a list of suggestions that may be used after the cursor position. The following queries will all provide the\n   * same results:\n   *\n   * * `query: \"f\"`\n   * * `query: \"f\", cursorPosition:1`\n   * * `query: \"fetch \", cursorPosition:1`\n   *\n   * Available fields:\n   *\n   * | Field       | Description                                                                                                                                                                             |\n   * |-------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n   * | suggestions | a list of suggestions. Each item is a separate possible suggestion, despite they might have the same outputs.                                                                           |\n   * | optional    | whether the suggestion is optional. If `true`, the query until the cursor position might work. If `false`, the query is definitely incomplete or invalid if cut at the cursor position. |\n   *\n   * Fields in the `suggestions`\n   *\n   * | Field                  | Description                                                                                                |\n   * |------------------------|------------------------------------------------------------------------------------------------------------|\n   * | suggestion             | a string representing the whole suggestion. This information could also be derived from the parts.         |\n   * | alreadyTypedCharacters | how many characters of this suggestion have already been typed (and will be overridden by the suggestion). |\n   * | parts                  | a list of semantically enriched information on what are the parts of a suggestion.                         |\n   *\n   * Fields in `parts`\n   *\n   * | Field      | Description                                               |\n   * |------------|-----------------------------------------------------------|\n   * | suggestion | a string representing the current part of the suggestion. |\n   * | type       | current types: SPACE, PIPE, COMMAND (may be extended)     |\n   *\n   * The `type` helps to treat specific parts of the suggestion different to others; either by a different visualization,\n   * a link to docs, etc.\n   *\n   * @returns {Promise<AutocompleteResponse>} A list of structured autocomplete suggestions.\n   *\n   * @example <caption>Code example</caption>\n   * import { queryAssistanceClient } from \"@dynatrace-sdk/client-query\";\n   *\n   * const data = await queryAssistanceClient.queryAutocomplete({\n   *   body: {\n   *     query:\n   *       'fetch events | filter event.type == \"davis\" AND davis.status != \"CLOSED\" | fields timestamp, davis.title, davis.underMaintenance, davis.status | sort timestamp | limit 10',\n   *   },\n   * });\n   *\n   * @throws {ErrorEnvelopeError} Bad Request - The caller submitted an invalid request (e.g., mandatory parameters missing).\n   * @throws {Unauthorized} Unauthorized. The request lacks valid authentication credentials. Happens when the authentication token is missing or invalid.\n   * @throws {InsufficientPermission} Insufficient permissions.\n   * @throws {TenantNotFound} Not Found - Returned when the tenant is inactive or not found.\n   * @throws {MethodNotAllowed} Method not allowed. The HTTP method is not supported for this endpoint.\n   * @throws {PayloadTooLarge} Payload Too Large - The request body exceeds the maximum allowed size.\n   * @throws {UnsupportedMediaType} Unsupported media type. The request content type is not supported.\n   * @throws {InternalServerError} An internal server error has occurred.\n   * @throws {ServiceUnavailable} Service Unavailable - The grail instance is either shutting down or busy.\n   * @throws {GatewayTimeout} Gateway timeout. The service did not respond in time.\n   * @throws {InvalidResponseError}\n   * @throws {ApiClientError}\n   * @throws {ClientRequestError}\n   */\n  async queryAutocomplete(config) {\n    if (!config) {\n      throw new import_shared_errors3.ApiClientError(\"API client error\", \"API client call is missing mandatory config parameter\");\n    }\n    const encodedBody = this.shouldTransformDates ? transformRequest(config.body, []) : config.body;\n    const headerParameters = {\n      ...config.dtClientContext !== void 0 && { \"dt-client-context\": String(config.dtClientContext) }\n    };\n    try {\n      const response = await this.httpClient.send({\n        url: `/platform/storage/query/v1/query:autocomplete`,\n        method: \"POST\",\n        requestBodyType: \"json\",\n        body: encodedBody,\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Accept: \"application/json\",\n          ...headerParameters\n        },\n        abortSignal: config instanceof EventTarget ? config : config.abortSignal,\n        statusValidator: (status) => {\n          return [200].includes(status);\n        }\n      });\n      const responseValue = await response.body(\"json\");\n      try {\n        return this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n      } catch (err) {\n        throw new import_shared_errors3.InvalidResponseError(\n          `QueryAssistanceClient.query:autocomplete:200`,\n          err,\n          responseValue,\n          void 0,\n          void 0,\n          response\n        );\n      }\n    } catch (e) {\n      if ((0, import_http_client.isHttpClientAbortError)(e) || (0, import_shared_errors3.isInvalidResponseError)(e)) {\n        throw e;\n      }\n      if (!(0, import_http_client.isHttpClientResponseError)(e)) {\n        throw new import_shared_errors3.ApiClientError(\"UnexpectedError\", \"Unexpected error\", e);\n      }\n      const response = e.response;\n      await apiGatewayErrorsHandler(response);\n      switch (response.status) {\n        case 400: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new ErrorEnvelopeError(\n              `400`,\n              response,\n              errorBody,\n              getErrorMessage(\n                errorBody,\n                \"Bad Request - The caller submitted an invalid request (e.g., mandatory parameters missing).\"\n              ),\n              e\n            );\n          } catch (err) {\n            if (err instanceof ErrorEnvelopeError) {\n              throw err;\n            }\n            throw new import_shared_errors3.InvalidResponseError(\n              `QueryAssistanceClient.query:autocomplete:400`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 401: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new Unauthorized(\n              `401`,\n              response,\n              errorBody,\n              getErrorMessage(\n                errorBody,\n                \"Unauthorized. The request lacks valid authentication credentials. Happens when the authentication token is missing or invalid.\"\n              ),\n              e\n            );\n          } catch (err) {\n            if (err instanceof Unauthorized) {\n              throw err;\n            }\n            throw new import_shared_errors3.InvalidResponseError(\n              `QueryAssistanceClient.query:autocomplete:401`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 403: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new InsufficientPermission(\n              `403`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Insufficient permissions.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof InsufficientPermission) {\n              throw err;\n            }\n            throw new import_shared_errors3.InvalidResponseError(\n              `QueryAssistanceClient.query:autocomplete:403`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 404: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new TenantNotFound(\n              `404`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Not Found - Returned when the tenant is inactive or not found.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof TenantNotFound) {\n              throw err;\n            }\n            throw new import_shared_errors3.InvalidResponseError(\n              `QueryAssistanceClient.query:autocomplete:404`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 405: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new MethodNotAllowed(\n              `405`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Method not allowed. The HTTP method is not supported for this endpoint.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof MethodNotAllowed) {\n              throw err;\n            }\n            throw new import_shared_errors3.InvalidResponseError(\n              `QueryAssistanceClient.query:autocomplete:405`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 413: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new PayloadTooLarge(\n              `413`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Payload Too Large - The request body exceeds the maximum allowed size.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof PayloadTooLarge) {\n              throw err;\n            }\n            throw new import_shared_errors3.InvalidResponseError(\n              `QueryAssistanceClient.query:autocomplete:413`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 415: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new UnsupportedMediaType(\n              `415`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Unsupported media type. The request content type is not supported.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof UnsupportedMediaType) {\n              throw err;\n            }\n            throw new import_shared_errors3.InvalidResponseError(\n              `QueryAssistanceClient.query:autocomplete:415`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 500: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new InternalServerError(\n              `500`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"An internal server error has occurred.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof InternalServerError) {\n              throw err;\n            }\n            throw new import_shared_errors3.InvalidResponseError(\n              `QueryAssistanceClient.query:autocomplete:500`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 503: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new ServiceUnavailable(\n              `503`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Service Unavailable - The grail instance is either shutting down or busy.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof ServiceUnavailable) {\n              throw err;\n            }\n            throw new import_shared_errors3.InvalidResponseError(\n              `QueryAssistanceClient.query:autocomplete:503`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 504: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new GatewayTimeout(\n              `504`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Gateway timeout. The service did not respond in time.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof GatewayTimeout) {\n              throw err;\n            }\n            throw new import_shared_errors3.InvalidResponseError(\n              `QueryAssistanceClient.query:autocomplete:504`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        default: {\n          try {\n            const responseValue = await response.body(\"json\");\n            throw new import_shared_errors3.ClientRequestError(\n              `${response.status}`,\n              response,\n              responseValue,\n              getErrorMessage(\n                responseValue,\n                `Unexpected api response: code=${response.status} body=\"${responseValue}\"`\n              ),\n              e\n            );\n          } catch (error) {\n            if (error instanceof import_shared_errors3.ClientRequestError) {\n              throw error;\n            }\n            const responseValue = await response.body(\"text\").catch(() => \"\");\n            throw new import_shared_errors3.InvalidResponseError(\n              `${response.status}`,\n              error,\n              responseValue,\n              \"json\",\n              \"Unexpected api response\",\n              response\n            );\n          }\n        }\n      }\n    }\n  }\n  /**\n   * Get a structured tree of the canonical form of the query.\n   *\n   * For information about the required permissions see the [Bucket and table permissions in Grail documentation](https://docs.dynatrace.com/docs/shortlink/assign-bucket-table-permissions).\n   *\n   * ## Overview\n   *\n   * Returns the parsed query as a tree, containing the structure of the canonical query. Tree-nodes can contain references to\n   * the token position where they originate from. This may help to provide hover effects, show canonical forms, mark\n   * optional items, and more.\n   *\n   * ## Details\n   *\n   * The query tree consists of nodes that contain different additional information (everything optional):\n   *\n   * ### General Fields\n   *\n   * Field | Mandatory |  Description\n   * ----------------------- | --- | ----------------------------------------------------------------------------------------\n   * tokenPosition           | no  | optional. If present, it represents the position within the query string where the node refers to.\n   * isOptional              | no  | whether this node could be left out and the result would still be the same query (semantically).\n   *\n   * #### tokenPosition\n   *\n   * contains `start` (inclusive) and `end` (inclusive), both contain `index` (0 based; fur substrings), `line`\n   * and `column` (both 1-based; for readability).\n   *\n   * * If `tokenPosition` is present, it always contains start and end with all fields\n   * * If `tokenPosition` is not present, there might still be nested nodes that do contain a position\n   * * If `start == end`, the position refers to a single character\n   * * If `start > end`, we know for sure that something was inserted.\n   *\n   * We can always check whether the canonical representation of a node matches the text in the tokenPosition to see whether\n   * something was inserted, removed, or changed.\n   *\n   * #### isOptional\n   *\n   * only present if it is true.\n   *\n   * Optional nodes can e.g. be optional braces that make a query more readable, but are not necessary. This could be used to\n   * enter *ghost braces* and *implicit functions* in the user's input field; maybe with different formatting\n   * (using the tokenPosition of sibling nodes we can also check whether the user wrote these or not).\n   *\n   * ### Advanced Token Types\n   *\n   * each node is of one of following types and may contain more fields:\n   *\n   * * Terminal Node\n   * * ContainerNode\n   * * Alternative Node\n   *\n   * #### Terminal Node\n   *\n   * can be identified by checking whether `canonicalString` is present\n   *\n   * Field | Mandatory |  Description\n   * ------------------------ | --- | ---------------------------------------------------------------------------------------\n   * type                     | yes | the type of the terminal node - do not confuse with the type of container nodes\n   * canonicalString          | yes | the canonical string representation. Concatenating the canonicalString of all nested terminal nodes provides the canonical form of the query.\n   * isMandatoryOnUserOrder   | no  | may only be present if (`type=\"BRACE_OPEN\"` or `type=\"BRACE_CLOSE\"`) and `isOptional=true`. For usage see section [Special node type: PARAMETERS](#special-node-type-parameters)\n   *\n   * ##### Current types of terminal nodes (list might grow):\n   *\n   * * SPACE\n   * * LINEBREAK\n   * * INDENT\n   * * PIPE\n   * * DOT\n   * * COLON\n   * * COMMA\n   * * BRACE_OPEN\n   * * BRACE_CLOSE\n   * * BRACKET_OPEN\n   * * BRACKET_CLOSE\n   * * PARENTHESIS_OPEN\n   * * PARENTHESIS_CLOSE\n   * * QUOTE\n   * * SLASH\n   * * BOOLEAN_TRUE\n   * * BOOLEAN_FALSE\n   * * NULL\n   * * COMMAND_NAME\n   * * PARAMETER_KEY\n   * * PARAMETER_VALUE_SCOPE\n   * * FUNCTION_NAME\n   * * OPERATOR\n   * * TRAVERSAL_OPERATOR\n   * * TRAVERSAL_RELATION_NAME\n   * * TRAVERSAL_HOP_COUNT\n   * * SIMPLE_IDENTIFIER\n   * * NUMBER\n   * * STRING\n   * * TIME_UNIT\n   * * TIMESTAMP_VALUE\n   * * METRIC_KEY\n   * * VARIABLE\n   *\n   * #### ContainerNode\n   *\n   * can be identified by checking whether `children` is present\n   *\n   * Field | Mandatory |  Description\n   * ----------------------- | --- | ----------------------------------------------------------------------------------------\n   * type                    | yes | the type of the container node - do not confuse with the type of terminal nodes\n   * children                | yes | the children for the node. might be of any type\n   *\n   * ##### Current types of container nodes (list might grow):\n   *\n   * * QUERY\n   * * EXECUTION_BLOCK\n   * * COMMAND\n   * * COMMAND_SEPARATOR\n   * * PARAMETER_WITH_KEY\n   * * GROUP\n   * * PARAMETERS - check examples further down\n   * * PARAMETER_NAMING\n   * * PARAMETER_SEPARATOR\n   * * FUNCTION\n   * * FUNCTION_PART - check examples further down\n   * * EXPRESSION\n   * * IDENTIFIER\n   * * SOURCE_ID\n   * * DURATION\n   * * TIMESTAMP\n   * * TIMEFRAME\n   * * TRAVERSAL_PATH\n   * * TRAVERSAL_STEP\n   *\n   * ##### Special node type: PARAMETERS\n   *\n   * can contain children representing the parameters. Every second child is of type PARAMETER_SEPARATOR.\n   *\n   * You may reorder the children based on their tokenPosition to get the user order. However, in this case,\n   * you need to consider `isMandatoryOnUserOrder` to determine whether the grouping braces are mandatory or not.\n   *\n   * ###### Example\n   *\n   * For the query `SORT a, {direction:\"descending\", b}`, the canonical form is:\n   *\n   * `SORT a, {b, direction:\"descending\"}`\n   *\n   * This is the order, in which the parameters are returned in the query tree.\n   * Parameters are {a} and {{b} and {direction:\"descending\"}}. In this case, the braces are optional.\n   *\n   * `SORT a, {b, direction:\"descending\"}` is equivalent to `SORT a, b, direction:\"descending\"`\n   *\n   * However, if you reorder the children by tokenPosition, the braces are not optional, because\n   *\n   * `SORT a, direction:\"descending\", b` is interpreted as `SORT {a, direction:\"descending\"}, b`\n   *\n   * So, if the children in PARAMETERS are re-ordered by tokenPosition, braces (or in general: TerminalNodes)\n   * are only optional if `isOptional && !isMandatoryOnUserOrder`.\n   *\n   * ##### Special node type: FUNCTION_PART\n   *\n   * A container node of type `FUNCTION` may contain nodes of type `FUNCTION_PART`.\n   *\n   * If those `FUNCTION_PART`s are marked as optional, this means you have to either include *all* or *none* of these\n   * optional function parts.\n   *\n   * *Example*:\n   *\n   * `filter anyMatch(a.b == 1, input:a)`\n   *\n   * The optional function parts are `anyMatch(` and `, input:a)`. If you leave out both, the command will still work:\n   * `filter a.b == 1` and return the same result. Using one of these optional function parts and removing the other will lead\n   * to an invalid query.\n   *\n   * #### Alternative Node\n   *\n   * can be identified by checking whether `alternatives` is present\n   *\n   * Field | Mandatory |  Description\n   * ----------------------- | --- | ----------------------------------------------------------------------------------------\n   * alternatives            | yes | Type: Map&lt;AlternativeType, DQLNode&gt;\n   *\n   * When displaying the query, pick one option. You may use the other options for hovering, replacing, and more.\n   *\n   * ##### Current values of AlternativeType (list might grow):\n   *\n   * * CANONICAL: This node is the one we will use for our canonical form\n   * * USER: An alternative that is also valid, but not canonical; and this version was picked by the user.\n   * * INFO: only if the canonical version is not present\n   *\n   * *Examples*:\n   *\n   * * `CANONICAL` is not present, `USER` is present: user's nodes are optional, but not canonical (usually optional nodes\n   *   are still canonical)\n   * * `CANONICAL` is present, `USER` is not present: same as if the canonical node was optional. If this happens, it is\n   *   likely that there is also an `INFO` node\n   * * `CANONICAL` is present, `USER` is present: there are different alternatives\n   * * `INFO` is present: usually if `CANONICAL` is not present (e.g. the parameter key for `FILTER a == 1`), there is an info node\n   *   for `FILTER condition:a == 1`. This `condition:` was neither written by the user nor is it canonical; but it might be\n   *   used to help the user understand what this parameter means.\n   *\n   * @returns {Promise<DQLNode>} A node containing more nodes,  a node offering different (semantically equivalent) versions of the query parts, or a terminal node that shows the canonical form.\n   *\n   * @example <caption>Code example</caption>\n   * import { queryAssistanceClient } from \"@dynatrace-sdk/client-query\";\n   *\n   * const data = await queryAssistanceClient.queryParse({\n   *   body: {\n   *     query:\n   *       'fetch events | filter event.type == \"davis\" AND davis.status != \"CLOSED\" | fields timestamp, davis.title, davis.underMaintenance, davis.status | sort timestamp | limit 10',\n   *   },\n   * });\n   *\n   * @throws {BadRequest} The supplied request is wrong. Either the query itself or other parameters are wrong.\n   * @throws {Unauthorized} Unauthorized. The request lacks valid authentication credentials. Happens when the authentication token is missing or invalid.\n   * @throws {InsufficientPermission} Insufficient permissions.\n   * @throws {MethodNotAllowed} Method not allowed. The HTTP method is not supported for this endpoint.\n   * @throws {PayloadTooLarge} Payload Too Large - The request body exceeds the maximum allowed size.\n   * @throws {UnsupportedMediaType} Unsupported media type. The request content type is not supported.\n   * @throws {InternalServerError} An internal server error has occurred.\n   * @throws {ServiceUnavailable} Service Unavailable - The grail instance is either shutting down or busy.\n   * @throws {GatewayTimeout} Gateway timeout. The service did not respond in time.\n   * @throws {InvalidResponseError}\n   * @throws {ApiClientError}\n   * @throws {ClientRequestError}\n   */\n  async queryParse(config) {\n    if (!config) {\n      throw new import_shared_errors3.ApiClientError(\"API client error\", \"API client call is missing mandatory config parameter\");\n    }\n    const encodedBody = this.shouldTransformDates ? transformRequest(config.body, []) : config.body;\n    const headerParameters = {\n      ...config.dtClientContext !== void 0 && { \"dt-client-context\": String(config.dtClientContext) }\n    };\n    try {\n      const response = await this.httpClient.send({\n        url: `/platform/storage/query/v1/query:parse`,\n        method: \"POST\",\n        requestBodyType: \"json\",\n        body: encodedBody,\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Accept: \"application/json\",\n          ...headerParameters\n        },\n        abortSignal: config instanceof EventTarget ? config : config.abortSignal,\n        statusValidator: (status) => {\n          return [200].includes(status);\n        }\n      });\n      const responseValue = await response.body(\"json\");\n      try {\n        return this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n      } catch (err) {\n        throw new import_shared_errors3.InvalidResponseError(\n          `QueryAssistanceClient.query:parse:200`,\n          err,\n          responseValue,\n          void 0,\n          void 0,\n          response\n        );\n      }\n    } catch (e) {\n      if ((0, import_http_client.isHttpClientAbortError)(e) || (0, import_shared_errors3.isInvalidResponseError)(e)) {\n        throw e;\n      }\n      if (!(0, import_http_client.isHttpClientResponseError)(e)) {\n        throw new import_shared_errors3.ApiClientError(\"UnexpectedError\", \"Unexpected error\", e);\n      }\n      const response = e.response;\n      await apiGatewayErrorsHandler(response);\n      switch (response.status) {\n        case 400: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new BadRequest(\n              `400`,\n              response,\n              errorBody,\n              getErrorMessage(\n                errorBody,\n                \"The supplied request is wrong. Either the query itself or other parameters are wrong.\"\n              ),\n              e\n            );\n          } catch (err) {\n            if (err instanceof BadRequest) {\n              throw err;\n            }\n            throw new import_shared_errors3.InvalidResponseError(\n              `QueryAssistanceClient.query:parse:400`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 401: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new Unauthorized(\n              `401`,\n              response,\n              errorBody,\n              getErrorMessage(\n                errorBody,\n                \"Unauthorized. The request lacks valid authentication credentials. Happens when the authentication token is missing or invalid.\"\n              ),\n              e\n            );\n          } catch (err) {\n            if (err instanceof Unauthorized) {\n              throw err;\n            }\n            throw new import_shared_errors3.InvalidResponseError(\n              `QueryAssistanceClient.query:parse:401`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 403: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new InsufficientPermission(\n              `403`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Insufficient permissions.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof InsufficientPermission) {\n              throw err;\n            }\n            throw new import_shared_errors3.InvalidResponseError(\n              `QueryAssistanceClient.query:parse:403`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 405: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new MethodNotAllowed(\n              `405`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Method not allowed. The HTTP method is not supported for this endpoint.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof MethodNotAllowed) {\n              throw err;\n            }\n            throw new import_shared_errors3.InvalidResponseError(\n              `QueryAssistanceClient.query:parse:405`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 413: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new PayloadTooLarge(\n              `413`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Payload Too Large - The request body exceeds the maximum allowed size.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof PayloadTooLarge) {\n              throw err;\n            }\n            throw new import_shared_errors3.InvalidResponseError(\n              `QueryAssistanceClient.query:parse:413`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 415: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new UnsupportedMediaType(\n              `415`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Unsupported media type. The request content type is not supported.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof UnsupportedMediaType) {\n              throw err;\n            }\n            throw new import_shared_errors3.InvalidResponseError(\n              `QueryAssistanceClient.query:parse:415`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 500: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new InternalServerError(\n              `500`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"An internal server error has occurred.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof InternalServerError) {\n              throw err;\n            }\n            throw new import_shared_errors3.InvalidResponseError(\n              `QueryAssistanceClient.query:parse:500`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 503: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new ServiceUnavailable(\n              `503`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Service Unavailable - The grail instance is either shutting down or busy.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof ServiceUnavailable) {\n              throw err;\n            }\n            throw new import_shared_errors3.InvalidResponseError(\n              `QueryAssistanceClient.query:parse:503`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 504: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new GatewayTimeout(\n              `504`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Gateway timeout. The service did not respond in time.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof GatewayTimeout) {\n              throw err;\n            }\n            throw new import_shared_errors3.InvalidResponseError(\n              `QueryAssistanceClient.query:parse:504`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        default: {\n          try {\n            const responseValue = await response.body(\"json\");\n            throw new import_shared_errors3.ClientRequestError(\n              `${response.status}`,\n              response,\n              responseValue,\n              getErrorMessage(\n                responseValue,\n                `Unexpected api response: code=${response.status} body=\"${responseValue}\"`\n              ),\n              e\n            );\n          } catch (error) {\n            if (error instanceof import_shared_errors3.ClientRequestError) {\n              throw error;\n            }\n            const responseValue = await response.body(\"text\").catch(() => \"\");\n            throw new import_shared_errors3.InvalidResponseError(\n              `${response.status}`,\n              error,\n              responseValue,\n              \"json\",\n              \"Unexpected api response\",\n              response\n            );\n          }\n        }\n      }\n    }\n  }\n  /**\n   * Verifies a query without executing it.\n   *\n   * For information about the required permissions see the [Bucket and table permissions in Grail documentation](https://docs.dynatrace.com/docs/shortlink/assign-bucket-table-permissions).\n   *\n   * ## Overview\n   *\n   * Verifies the supplied query string and other query parameters for lack of any errors, but without actually\n   * submitting the query for execution.\n   *\n   * @returns {Promise<VerifyResponse>} Supplied query and parameters were verified.\n   *\n   * @example <caption>Code example</caption>\n   * import { queryAssistanceClient } from \"@dynatrace-sdk/client-query\";\n   *\n   * const data = await queryAssistanceClient.queryVerify({\n   *   body: {\n   *     query:\n   *       'fetch events | filter event.type == \"davis\" AND davis.status != \"CLOSED\" | fields timestamp, davis.title, davis.underMaintenance, davis.status | sort timestamp | limit 10',\n   *   },\n   * });\n   *\n   * @throws {BadRequest} The supplied request is wrong. Either the query itself or other parameters are wrong.\n   * @throws {Unauthorized} Unauthorized. The request lacks valid authentication credentials. Happens when the authentication token is missing or invalid.\n   * @throws {InsufficientPermission} Insufficient permissions.\n   * @throws {MethodNotAllowed} Method not allowed. The HTTP method is not supported for this endpoint.\n   * @throws {PayloadTooLarge} Payload Too Large - The request body exceeds the maximum allowed size.\n   * @throws {UnsupportedMediaType} Unsupported media type. The request content type is not supported.\n   * @throws {InternalServerError} An internal server error has occurred.\n   * @throws {ServiceUnavailable} Service Unavailable - The grail instance is either shutting down or busy.\n   * @throws {GatewayTimeout} Gateway timeout. The service did not respond in time.\n   * @throws {InvalidResponseError}\n   * @throws {ApiClientError}\n   * @throws {ClientRequestError}\n   */\n  async queryVerify(config) {\n    if (!config) {\n      throw new import_shared_errors3.ApiClientError(\"API client error\", \"API client call is missing mandatory config parameter\");\n    }\n    const encodedBody = this.shouldTransformDates ? transformRequest(config.body, []) : config.body;\n    const headerParameters = {\n      ...config.dtClientContext !== void 0 && { \"dt-client-context\": String(config.dtClientContext) }\n    };\n    try {\n      const response = await this.httpClient.send({\n        url: `/platform/storage/query/v1/query:verify`,\n        method: \"POST\",\n        requestBodyType: \"json\",\n        body: encodedBody,\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Accept: \"application/json\",\n          ...headerParameters\n        },\n        abortSignal: config instanceof EventTarget ? config : config.abortSignal,\n        statusValidator: (status) => {\n          return [200].includes(status);\n        }\n      });\n      const responseValue = await response.body(\"json\");\n      try {\n        return this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n      } catch (err) {\n        throw new import_shared_errors3.InvalidResponseError(\n          `QueryAssistanceClient.query:verify:200`,\n          err,\n          responseValue,\n          void 0,\n          void 0,\n          response\n        );\n      }\n    } catch (e) {\n      if ((0, import_http_client.isHttpClientAbortError)(e) || (0, import_shared_errors3.isInvalidResponseError)(e)) {\n        throw e;\n      }\n      if (!(0, import_http_client.isHttpClientResponseError)(e)) {\n        throw new import_shared_errors3.ApiClientError(\"UnexpectedError\", \"Unexpected error\", e);\n      }\n      const response = e.response;\n      await apiGatewayErrorsHandler(response);\n      switch (response.status) {\n        case 400: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new BadRequest(\n              `400`,\n              response,\n              errorBody,\n              getErrorMessage(\n                errorBody,\n                \"The supplied request is wrong. Either the query itself or other parameters are wrong.\"\n              ),\n              e\n            );\n          } catch (err) {\n            if (err instanceof BadRequest) {\n              throw err;\n            }\n            throw new import_shared_errors3.InvalidResponseError(\n              `QueryAssistanceClient.query:verify:400`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 401: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new Unauthorized(\n              `401`,\n              response,\n              errorBody,\n              getErrorMessage(\n                errorBody,\n                \"Unauthorized. The request lacks valid authentication credentials. Happens when the authentication token is missing or invalid.\"\n              ),\n              e\n            );\n          } catch (err) {\n            if (err instanceof Unauthorized) {\n              throw err;\n            }\n            throw new import_shared_errors3.InvalidResponseError(\n              `QueryAssistanceClient.query:verify:401`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 403: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new InsufficientPermission(\n              `403`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Insufficient permissions.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof InsufficientPermission) {\n              throw err;\n            }\n            throw new import_shared_errors3.InvalidResponseError(\n              `QueryAssistanceClient.query:verify:403`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 405: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new MethodNotAllowed(\n              `405`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Method not allowed. The HTTP method is not supported for this endpoint.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof MethodNotAllowed) {\n              throw err;\n            }\n            throw new import_shared_errors3.InvalidResponseError(\n              `QueryAssistanceClient.query:verify:405`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 413: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new PayloadTooLarge(\n              `413`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Payload Too Large - The request body exceeds the maximum allowed size.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof PayloadTooLarge) {\n              throw err;\n            }\n            throw new import_shared_errors3.InvalidResponseError(\n              `QueryAssistanceClient.query:verify:413`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 415: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new UnsupportedMediaType(\n              `415`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Unsupported media type. The request content type is not supported.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof UnsupportedMediaType) {\n              throw err;\n            }\n            throw new import_shared_errors3.InvalidResponseError(\n              `QueryAssistanceClient.query:verify:415`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 500: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new InternalServerError(\n              `500`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"An internal server error has occurred.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof InternalServerError) {\n              throw err;\n            }\n            throw new import_shared_errors3.InvalidResponseError(\n              `QueryAssistanceClient.query:verify:500`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 503: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new ServiceUnavailable(\n              `503`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Service Unavailable - The grail instance is either shutting down or busy.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof ServiceUnavailable) {\n              throw err;\n            }\n            throw new import_shared_errors3.InvalidResponseError(\n              `QueryAssistanceClient.query:verify:503`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 504: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new GatewayTimeout(\n              `504`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Gateway timeout. The service did not respond in time.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof GatewayTimeout) {\n              throw err;\n            }\n            throw new import_shared_errors3.InvalidResponseError(\n              `QueryAssistanceClient.query:verify:504`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        default: {\n          try {\n            const responseValue = await response.body(\"json\");\n            throw new import_shared_errors3.ClientRequestError(\n              `${response.status}`,\n              response,\n              responseValue,\n              getErrorMessage(\n                responseValue,\n                `Unexpected api response: code=${response.status} body=\"${responseValue}\"`\n              ),\n              e\n            );\n          } catch (error) {\n            if (error instanceof import_shared_errors3.ClientRequestError) {\n              throw error;\n            }\n            const responseValue = await response.body(\"text\").catch(() => \"\");\n            throw new import_shared_errors3.InvalidResponseError(\n              `${response.status}`,\n              error,\n              responseValue,\n              \"json\",\n              \"Unexpected api response\",\n              response\n            );\n          }\n        }\n      }\n    }\n  }\n};\nvar queryAssistanceClient = /* @__PURE__ */ new QueryAssistanceClient(import_http_client.httpClient);\n\n// packages/client/query/src/lib/apis/query-execution-api.ts\nvar import_http_client2 = require(\"@dynatrace-sdk/http-client\");\nvar import_shared_errors4 = require(\"@dynatrace-sdk/shared-errors\");\n\n// packages/client/query/src/lib/error-envelopes/responses/conflict.ts\nvar Conflict = class extends ErrorEnvelopeError {\n  isConflict = true;\n  name = \"Conflict\";\n};\nfunction isConflict(e) {\n  return e?.isApiClientError === true && e?.isClientRequestError === true && e?.isErrorEnvelopeError === true && e?.isConflict === true && e instanceof Error;\n}\n\n// packages/client/query/src/lib/error-envelopes/responses/query-gone.ts\nvar QueryGone = class extends ErrorEnvelopeError {\n  isQueryGone = true;\n  name = \"QueryGone\";\n};\nfunction isQueryGone(e) {\n  return e?.isApiClientError === true && e?.isClientRequestError === true && e?.isErrorEnvelopeError === true && e?.isQueryGone === true && e instanceof Error;\n}\n\n// packages/client/query/src/lib/error-envelopes/responses/query-not-found.ts\nvar QueryNotFound = class extends ErrorEnvelopeError {\n  isQueryNotFound = true;\n  name = \"QueryNotFound\";\n};\nfunction isQueryNotFound(e) {\n  return e?.isApiClientError === true && e?.isClientRequestError === true && e?.isErrorEnvelopeError === true && e?.isQueryNotFound === true && e instanceof Error;\n}\n\n// packages/client/query/src/lib/error-envelopes/responses/too-many-requests.ts\nvar TooManyRequests = class extends ErrorEnvelopeError {\n  isTooManyRequests = true;\n  name = \"TooManyRequests\";\n};\nfunction isTooManyRequests(e) {\n  return e?.isApiClientError === true && e?.isClientRequestError === true && e?.isErrorEnvelopeError === true && e?.isTooManyRequests === true && e instanceof Error;\n}\n\n// packages/client/query/src/lib/utils/url-helpers.ts\nvar encodeQueryParam = (key, value) => {\n  const encodedKey = encodeURIComponent(key);\n  return `${encodedKey}=${encodeURIComponent(typeof value === \"number\" ? value : String(value))}`;\n};\nvar addExplodedArrayQueryParam = (query, key) => {\n  const arrayValue = query[key];\n  return arrayValue.map((value) => encodeQueryParam(key, value)).join(\"&\");\n};\nvar addNonExplodedArrayQueryParams = (query, key) => {\n  const encodedKey = encodeURIComponent(key);\n  const encodedParamsList = query[key].map((value) => encodeURIComponent(typeof value === \"number\" ? value : String(value))).join(\",\");\n  return `${encodedKey}=${encodedParamsList}`;\n};\nvar addQueryParam = (query, key) => encodeQueryParam(key, query[key]);\nvar arrayQueryParams = (query, key, explode) => {\n  return explode ? addExplodedArrayQueryParam(query, key) : addNonExplodedArrayQueryParams(query, key);\n};\nvar toQueryString = (rawQuery, flags = {}) => {\n  const query = rawQuery || {};\n  const keys = Object.keys(query).filter((key) => typeof query[key] !== \"undefined\");\n  const queryString = keys.map(\n    (key) => Array.isArray(query[key]) ? arrayQueryParams(query, key, flags.explode?.hasOwnProperty(key) ? flags.explode[key] : true) : addQueryParam(query, key)\n  ).join(\"&\");\n  return queryString ? `?${queryString}` : \"\";\n};\n\n// packages/client/query/src/lib/apis/query-execution-api.ts\nvar QueryExecutionClient = class {\n  httpClient;\n  shouldTransformDates = true;\n  /**\n   * @param {HttpClient} httpClientImplementation - You can provide custom http client as a parameter to constructor of a QueryExecutionClient. Custom http client should implement {HttpClient} interface.\n   * @param {ApiClientOptions} [options] - Optional configuration for SDK Client.\n   * @example\n   * const queryExecutionClientNodeJs = new QueryExecutionClient(yourCustomImplementation);\n   */\n  constructor(httpClientImplementation, options) {\n    this.httpClient = httpClientImplementation;\n    this.shouldTransformDates = options?.transformDates ?? true;\n  }\n  /**\n   * Cancels the query and returns the result if the query was already finished, otherwise discards it.\n   *\n   * For information about the required permissions see the [Bucket and table permissions in Grail documentation](https://docs.dynatrace.com/docs/shortlink/assign-bucket-table-permissions).\n   *\n   * ### Overview:\n   *\n   * Cancels a running Grail query and returns a list of records if the query already finished.\n   *\n   * ### The response format:\n   *\n   * If the query was already finished, a response body including the result will be returned. Otherwise the response will contain no body.\n   *\n   * The result has three main sections:\n   * * the 'records' section contains the individual records, where each record consists of a set of fields and their corresponding values.\n   * * the 'types' section describes the corresponding data types that a record field has.\n   * * the 'metadata' section contains information about the query like 'analysisTimeframe', 'timezone' or 'locale'.\n   *\n   * Every record has an implicit 'index' according to the position in the 'records' JSON array.\n   * The types section has a list of 1..N possible type 'buckets'. Each such bucket has an 'indexRange' which indicates which\n   * records will find their field types in which bucket. The index range has two values start & end and can be thought of as [startIndex, endIndex).\n   *\n   * A field part of a record with index 'i' will find its corresponding field type by first locating the bucket that satisfies:\n   *\n   * ```text\n   * startIndex <= i <= endIndex\n   * ```\n   *\n   * Once the bucket is found the 'mappings' object has an entry for all the fields that are part of that record with index 'i'.\n   *\n   *\n   * Since enforcement of a particular schema is absent at ingestion time, it is possible to have records that share the same\n   * field name but their values are of a different type. This phenomenon will hence forth be named as a **\"collision\"**.\n   * When a collision does occur, we will create a new type 'bucket' that will have a different index range where\n   * the new record field types will be placed.\n   * It is guaranteed that every field of every record will have a corresponding type.\n   * **Clients should always take the included types into account when consuming records!**\n   *\n   * @returns {Promise<QueryPollResponse | void>} The query already finished.\n   *\n   * @example <caption>Code example</caption>\n   * import { queryExecutionClient } from \"@dynatrace-sdk/client-query\";\n   *\n   * const data = await queryExecutionClient.queryCancel({\n   *   requestToken: \"...\",\n   * });\n   *\n   * @throws {BadRequest} The supplied request is wrong. Either the query itself or other parameters are wrong.\n   * @throws {Unauthorized} Unauthorized. The request lacks valid authentication credentials. Happens when the authentication token is missing or invalid.\n   * @throws {InsufficientPermission} Insufficient permissions.\n   * @throws {QueryNotFound} Not Found - The query with the given ID does not exist for this tenant.\n   * @throws {MethodNotAllowed} Method not allowed. The HTTP method is not supported for this endpoint.\n   * @throws {QueryGone} The query for the given request-token is not available anymore.\n   * @throws {UnsupportedMediaType} Unsupported media type. The request content type is not supported.\n   * @throws {TooManyRequests} Too Many Requests - There were too many queries in the queue.\n   * @throws {InternalServerError} An internal server error has occurred.\n   * @throws {ServiceUnavailable} Service Unavailable - The grail instance is either shutting down or busy.\n   * @throws {GatewayTimeout} Gateway timeout. The service did not respond in time.\n   * @throws {InvalidResponseError}\n   * @throws {ApiClientError}\n   * @throws {ClientRequestError}\n   */\n  async queryCancel(config) {\n    if (!config) {\n      throw new import_shared_errors4.ApiClientError(\"API client error\", \"API client call is missing mandatory config parameter\");\n    }\n    const query = toQueryString(\n      { \"request-token\": config.requestToken, enrich: config.enrich },\n      { explode: { \"request-token\": false } }\n    );\n    const headerParameters = {\n      ...config.dtClientContext !== void 0 && { \"dt-client-context\": String(config.dtClientContext) }\n    };\n    try {\n      const response = await this.httpClient.send({\n        url: `/platform/storage/query/v1/query:cancel${query}`,\n        method: \"POST\",\n        headers: {\n          Accept: \"application/json\",\n          ...headerParameters\n        },\n        abortSignal: config instanceof EventTarget ? config : config.abortSignal,\n        statusValidator: (status) => {\n          return [200, 202].includes(status);\n        }\n      });\n      switch (response.status) {\n        case 200: {\n          const responseValue = await response.body(\"json\");\n          try {\n            return this.shouldTransformDates ? transformResponse(responseValue, [\n              [\"result.metadata.grail.analysisTimeframe.end\", { datetime: true }],\n              [\"result.metadata.grail.analysisTimeframe.start\", { datetime: true }],\n              [\"result.records.*.end\", { datetime: true }],\n              [\"result.records.*.start\", { datetime: true }],\n              [\"result.records.**.end\", { datetime: true }],\n              [\"result.records.**.start\", { datetime: true }],\n              [\"result.records.*.end\", { datetime: true }],\n              [\"result.records.*.start\", { datetime: true }]\n            ]) : responseValue;\n          } catch (err) {\n            throw new import_shared_errors4.InvalidResponseError(\n              `QueryExecutionClient.query:cancel:${response.status}`,\n              err,\n              responseValue,\n              void 0,\n              void 0,\n              void 0\n            );\n          }\n        }\n        case 202: {\n          return;\n        }\n        default: {\n          try {\n            const responseValue = await response.body(\"json\");\n            throw new import_shared_errors4.ClientRequestError(\n              `${response.status}`,\n              response,\n              responseValue,\n              getErrorMessage(\n                responseValue,\n                `Unexpected api response: code=${response.status} body=\"${responseValue}\"`\n              )\n            );\n          } catch (error) {\n            if (error instanceof import_shared_errors4.ClientRequestError) {\n              throw error;\n            }\n            const responseValue = await response.body(\"text\").catch(() => \"\");\n            throw new import_shared_errors4.InvalidResponseError(\n              `${response.status}`,\n              error,\n              responseValue,\n              \"json\",\n              \"Unexpected api response\",\n              response\n            );\n          }\n        }\n      }\n    } catch (e) {\n      if ((0, import_http_client2.isHttpClientAbortError)(e) || (0, import_shared_errors4.isInvalidResponseError)(e) || (0, import_shared_errors4.isClientRequestError)(e)) {\n        throw e;\n      }\n      if (!(0, import_http_client2.isHttpClientResponseError)(e)) {\n        throw new import_shared_errors4.ApiClientError(\"UnexpectedError\", \"Unexpected error\", e);\n      }\n      const response = e.response;\n      await apiGatewayErrorsHandler(response);\n      switch (response.status) {\n        case 400: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new BadRequest(\n              `400`,\n              response,\n              errorBody,\n              getErrorMessage(\n                errorBody,\n                \"The supplied request is wrong. Either the query itself or other parameters are wrong.\"\n              ),\n              e\n            );\n          } catch (err) {\n            if (err instanceof BadRequest) {\n              throw err;\n            }\n            throw new import_shared_errors4.InvalidResponseError(\n              `QueryExecutionClient.query:cancel:400`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 401: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new Unauthorized(\n              `401`,\n              response,\n              errorBody,\n              getErrorMessage(\n                errorBody,\n                \"Unauthorized. The request lacks valid authentication credentials. Happens when the authentication token is missing or invalid.\"\n              ),\n              e\n            );\n          } catch (err) {\n            if (err instanceof Unauthorized) {\n              throw err;\n            }\n            throw new import_shared_errors4.InvalidResponseError(\n              `QueryExecutionClient.query:cancel:401`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 403: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new InsufficientPermission(\n              `403`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Insufficient permissions.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof InsufficientPermission) {\n              throw err;\n            }\n            throw new import_shared_errors4.InvalidResponseError(\n              `QueryExecutionClient.query:cancel:403`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 404: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new QueryNotFound(\n              `404`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Not Found - The query with the given ID does not exist for this tenant.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof QueryNotFound) {\n              throw err;\n            }\n            throw new import_shared_errors4.InvalidResponseError(\n              `QueryExecutionClient.query:cancel:404`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 405: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new MethodNotAllowed(\n              `405`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Method not allowed. The HTTP method is not supported for this endpoint.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof MethodNotAllowed) {\n              throw err;\n            }\n            throw new import_shared_errors4.InvalidResponseError(\n              `QueryExecutionClient.query:cancel:405`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 410: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new QueryGone(\n              `410`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"The query for the given request-token is not available anymore.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof QueryGone) {\n              throw err;\n            }\n            throw new import_shared_errors4.InvalidResponseError(\n              `QueryExecutionClient.query:cancel:410`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 415: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new UnsupportedMediaType(\n              `415`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Unsupported media type. The request content type is not supported.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof UnsupportedMediaType) {\n              throw err;\n            }\n            throw new import_shared_errors4.InvalidResponseError(\n              `QueryExecutionClient.query:cancel:415`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 429: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new TooManyRequests(\n              `429`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Too Many Requests - There were too many queries in the queue.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof TooManyRequests) {\n              throw err;\n            }\n            throw new import_shared_errors4.InvalidResponseError(\n              `QueryExecutionClient.query:cancel:429`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 500: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new InternalServerError(\n              `500`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"An internal server error has occurred.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof InternalServerError) {\n              throw err;\n            }\n            throw new import_shared_errors4.InvalidResponseError(\n              `QueryExecutionClient.query:cancel:500`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 503: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new ServiceUnavailable(\n              `503`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Service Unavailable - The grail instance is either shutting down or busy.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof ServiceUnavailable) {\n              throw err;\n            }\n            throw new import_shared_errors4.InvalidResponseError(\n              `QueryExecutionClient.query:cancel:503`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 504: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new GatewayTimeout(\n              `504`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Gateway timeout. The service did not respond in time.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof GatewayTimeout) {\n              throw err;\n            }\n            throw new import_shared_errors4.InvalidResponseError(\n              `QueryExecutionClient.query:cancel:504`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        default: {\n          try {\n            const responseValue = await response.body(\"json\");\n            throw new import_shared_errors4.ClientRequestError(\n              `${response.status}`,\n              response,\n              responseValue,\n              getErrorMessage(\n                responseValue,\n                `Unexpected api response: code=${response.status} body=\"${responseValue}\"`\n              ),\n              e\n            );\n          } catch (error) {\n            if (error instanceof import_shared_errors4.ClientRequestError) {\n              throw error;\n            }\n            const responseValue = await response.body(\"text\").catch(() => \"\");\n            throw new import_shared_errors4.InvalidResponseError(\n              `${response.status}`,\n              error,\n              responseValue,\n              \"json\",\n              \"Unexpected api response\",\n              response\n            );\n          }\n        }\n      }\n    }\n  }\n  /**\n   * Starts a Grail query.\n   *\n   * For information about the required permissions see the [Bucket and table permissions in Grail documentation](https://docs.dynatrace.com/docs/shortlink/assign-bucket-table-permissions).\n   *\n   * ### Overview:\n   *\n   * Executes a query and returns a list of records.\n   *\n   * For details about the query language see the [Dynatrace Query Language documentation](https://dt-url.net/bv03yk8).\n   *\n   * ### The response format:\n   *\n   * The json response will contain the state of the started query. If the query succeeded, the result will be included. Otherwise the response will contain a request token to reference the query in future polling requests.\n   *\n   * The result has two main sections:\n   * * The 'records' section contains the individual records, where each record consists of a set of fields and their corresponding values.\n   * * The 'types' section describes the corresponding data types that a record field has.\n   *\n   * Every record has an implicit 'index' according to the position in the 'records' JSON array.\n   * The types section has a list of 1..N possible type 'buckets'. Each such bucket has an 'indexRange' which indicates which\n   * records will find their field types in which bucket. The index range has two values start & end and can be thought of as [startIndex, endIndex).\n   *\n   * A field part of a record with index 'i' will find its corresponding field type by first locating the bucket that satisfies:\n   *\n   * ```text\n   * startIndex <= i <= endIndex\n   * ```\n   *\n   * Once the bucket is found the 'mappings' object has an entry for all the fields that are part of that record with index 'i'.\n   *\n   *\n   * Since enforcement of a particular schema is absent at ingestion time, it is possible to have records that share the same\n   * field name but their values are of a different type. This phenomenon will hence forth be named as a **\"collision\"**.\n   * When a collision does occur, we will create a new type 'bucket' that will have a different index range where\n   * the new record field types will be placed.\n   * It is guaranteed that every field of every record will have a corresponding type.\n   * **Clients should always take the included types into account when consuming records!**\n   *\n   * @returns {Promise<QueryStartResponse>} The final status and results of the supplied query if it finished within a supplied requestTimeoutMilliseconds. | The status of the query to start.\n   *\n   * @example <caption>Code example</caption>\n   * import { queryExecutionClient } from \"@dynatrace-sdk/client-query\";\n   *\n   * const data = await queryExecutionClient.queryExecute({\n   *   body: {\n   *     query:\n   *       'fetch events | filter event.type == \"davis\" AND davis.status != \"CLOSED\" | fields timestamp, davis.title, davis.underMaintenance, davis.status | sort timestamp | limit 10',\n   *   },\n   * });\n   *\n   * @throws {BadRequest} The supplied request is wrong. Either the query itself or other parameters are wrong.\n   * @throws {Unauthorized} Unauthorized. The request lacks valid authentication credentials. Happens when the authentication token is missing or invalid.\n   * @throws {InsufficientPermission} Insufficient permissions.\n   * @throws {TenantNotFound} Not Found - Returned when the tenant is inactive or not found.\n   * @throws {MethodNotAllowed} Method not allowed. The HTTP method is not supported for this endpoint.\n   * @throws {Conflict} Conflict - The supplied queryId already exists and is currently running.\n   * @throws {PayloadTooLarge} Payload Too Large - The request body exceeds the maximum allowed size.\n   * @throws {UnsupportedMediaType} Unsupported media type. The request content type is not supported.\n   * @throws {TooManyRequests} Too Many Requests - There were too many queries in the queue.\n   * @throws {InternalServerError} An internal server error has occurred.\n   * @throws {ServiceUnavailable} Service Unavailable - The grail instance is either shutting down or busy.\n   * @throws {GatewayTimeout} Gateway timeout. The service did not respond in time.\n   * @throws {InvalidResponseError}\n   * @throws {ApiClientError}\n   * @throws {ClientRequestError}\n   */\n  async queryExecute(config) {\n    if (!config) {\n      throw new import_shared_errors4.ApiClientError(\"API client error\", \"API client call is missing mandatory config parameter\");\n    }\n    const encodedBody = this.shouldTransformDates ? transformRequest(config.body, []) : config.body;\n    const query = toQueryString({ enrich: config.enrich });\n    const headerParameters = {\n      ...config.dtClientContext !== void 0 && { \"dt-client-context\": String(config.dtClientContext) }\n    };\n    try {\n      const response = await this.httpClient.send({\n        url: `/platform/storage/query/v1/query:execute${query}`,\n        method: \"POST\",\n        requestBodyType: \"json\",\n        body: encodedBody,\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Accept: \"application/json\",\n          ...headerParameters\n        },\n        abortSignal: config instanceof EventTarget ? config : config.abortSignal,\n        statusValidator: (status) => {\n          return [200, 202].includes(status);\n        }\n      });\n      switch (response.status) {\n        case 200: {\n          const responseValue = await response.body(\"json\");\n          try {\n            return this.shouldTransformDates ? transformResponse(responseValue, [\n              [\"result.metadata.grail.analysisTimeframe.end\", { datetime: true }],\n              [\"result.metadata.grail.analysisTimeframe.start\", { datetime: true }],\n              [\"result.records.*.end\", { datetime: true }],\n              [\"result.records.*.start\", { datetime: true }],\n              [\"result.records.**.end\", { datetime: true }],\n              [\"result.records.**.start\", { datetime: true }],\n              [\"result.records.*.end\", { datetime: true }],\n              [\"result.records.*.start\", { datetime: true }]\n            ]) : responseValue;\n          } catch (err) {\n            throw new import_shared_errors4.InvalidResponseError(\n              `QueryExecutionClient.query:execute:${response.status}`,\n              err,\n              responseValue,\n              void 0,\n              void 0,\n              void 0\n            );\n          }\n        }\n        case 202: {\n          const responseValue = await response.body(\"json\");\n          try {\n            return this.shouldTransformDates ? transformResponse(responseValue, [\n              [\"result.metadata.grail.analysisTimeframe.end\", { datetime: true }],\n              [\"result.metadata.grail.analysisTimeframe.start\", { datetime: true }],\n              [\"result.records.*.end\", { datetime: true }],\n              [\"result.records.*.start\", { datetime: true }],\n              [\"result.records.**.end\", { datetime: true }],\n              [\"result.records.**.start\", { datetime: true }],\n              [\"result.records.*.end\", { datetime: true }],\n              [\"result.records.*.start\", { datetime: true }]\n            ]) : responseValue;\n          } catch (err) {\n            throw new import_shared_errors4.InvalidResponseError(\n              `QueryExecutionClient.query:execute:${response.status}`,\n              err,\n              responseValue,\n              void 0,\n              void 0,\n              void 0\n            );\n          }\n        }\n        default: {\n          try {\n            const responseValue = await response.body(\"json\");\n            throw new import_shared_errors4.ClientRequestError(\n              `${response.status}`,\n              response,\n              responseValue,\n              getErrorMessage(\n                responseValue,\n                `Unexpected api response: code=${response.status} body=\"${responseValue}\"`\n              )\n            );\n          } catch (error) {\n            if (error instanceof import_shared_errors4.ClientRequestError) {\n              throw error;\n            }\n            const responseValue = await response.body(\"text\").catch(() => \"\");\n            throw new import_shared_errors4.InvalidResponseError(\n              `${response.status}`,\n              error,\n              responseValue,\n              \"json\",\n              \"Unexpected api response\",\n              response\n            );\n          }\n        }\n      }\n    } catch (e) {\n      if ((0, import_http_client2.isHttpClientAbortError)(e) || (0, import_shared_errors4.isInvalidResponseError)(e) || (0, import_shared_errors4.isClientRequestError)(e)) {\n        throw e;\n      }\n      if (!(0, import_http_client2.isHttpClientResponseError)(e)) {\n        throw new import_shared_errors4.ApiClientError(\"UnexpectedError\", \"Unexpected error\", e);\n      }\n      const response = e.response;\n      await apiGatewayErrorsHandler(response);\n      switch (response.status) {\n        case 400: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new BadRequest(\n              `400`,\n              response,\n              errorBody,\n              getErrorMessage(\n                errorBody,\n                \"The supplied request is wrong. Either the query itself or other parameters are wrong.\"\n              ),\n              e\n            );\n          } catch (err) {\n            if (err instanceof BadRequest) {\n              throw err;\n            }\n            throw new import_shared_errors4.InvalidResponseError(\n              `QueryExecutionClient.query:execute:400`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 401: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new Unauthorized(\n              `401`,\n              response,\n              errorBody,\n              getErrorMessage(\n                errorBody,\n                \"Unauthorized. The request lacks valid authentication credentials. Happens when the authentication token is missing or invalid.\"\n              ),\n              e\n            );\n          } catch (err) {\n            if (err instanceof Unauthorized) {\n              throw err;\n            }\n            throw new import_shared_errors4.InvalidResponseError(\n              `QueryExecutionClient.query:execute:401`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 403: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new InsufficientPermission(\n              `403`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Insufficient permissions.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof InsufficientPermission) {\n              throw err;\n            }\n            throw new import_shared_errors4.InvalidResponseError(\n              `QueryExecutionClient.query:execute:403`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 404: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new TenantNotFound(\n              `404`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Not Found - Returned when the tenant is inactive or not found.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof TenantNotFound) {\n              throw err;\n            }\n            throw new import_shared_errors4.InvalidResponseError(\n              `QueryExecutionClient.query:execute:404`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 405: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new MethodNotAllowed(\n              `405`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Method not allowed. The HTTP method is not supported for this endpoint.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof MethodNotAllowed) {\n              throw err;\n            }\n            throw new import_shared_errors4.InvalidResponseError(\n              `QueryExecutionClient.query:execute:405`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 409: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new Conflict(\n              `409`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Conflict - The supplied queryId already exists and is currently running.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof Conflict) {\n              throw err;\n            }\n            throw new import_shared_errors4.InvalidResponseError(\n              `QueryExecutionClient.query:execute:409`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 413: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new PayloadTooLarge(\n              `413`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Payload Too Large - The request body exceeds the maximum allowed size.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof PayloadTooLarge) {\n              throw err;\n            }\n            throw new import_shared_errors4.InvalidResponseError(\n              `QueryExecutionClient.query:execute:413`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 415: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new UnsupportedMediaType(\n              `415`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Unsupported media type. The request content type is not supported.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof UnsupportedMediaType) {\n              throw err;\n            }\n            throw new import_shared_errors4.InvalidResponseError(\n              `QueryExecutionClient.query:execute:415`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 429: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new TooManyRequests(\n              `429`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Too Many Requests - There were too many queries in the queue.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof TooManyRequests) {\n              throw err;\n            }\n            throw new import_shared_errors4.InvalidResponseError(\n              `QueryExecutionClient.query:execute:429`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 500: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new InternalServerError(\n              `500`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"An internal server error has occurred.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof InternalServerError) {\n              throw err;\n            }\n            throw new import_shared_errors4.InvalidResponseError(\n              `QueryExecutionClient.query:execute:500`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 503: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new ServiceUnavailable(\n              `503`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Service Unavailable - The grail instance is either shutting down or busy.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof ServiceUnavailable) {\n              throw err;\n            }\n            throw new import_shared_errors4.InvalidResponseError(\n              `QueryExecutionClient.query:execute:503`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 504: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new GatewayTimeout(\n              `504`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Gateway timeout. The service did not respond in time.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof GatewayTimeout) {\n              throw err;\n            }\n            throw new import_shared_errors4.InvalidResponseError(\n              `QueryExecutionClient.query:execute:504`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        default: {\n          try {\n            const responseValue = await response.body(\"json\");\n            throw new import_shared_errors4.ClientRequestError(\n              `${response.status}`,\n              response,\n              responseValue,\n              getErrorMessage(\n                responseValue,\n                `Unexpected api response: code=${response.status} body=\"${responseValue}\"`\n              ),\n              e\n            );\n          } catch (error) {\n            if (error instanceof import_shared_errors4.ClientRequestError) {\n              throw error;\n            }\n            const responseValue = await response.body(\"text\").catch(() => \"\");\n            throw new import_shared_errors4.InvalidResponseError(\n              `${response.status}`,\n              error,\n              responseValue,\n              \"json\",\n              \"Unexpected api response\",\n              response\n            );\n          }\n        }\n      }\n    }\n  }\n  /**\n   * Retrieves query status and final result from Grail.\n   *\n   * For information about the required permissions see the [Bucket and table permissions in Grail documentation](https://docs.dynatrace.com/docs/shortlink/assign-bucket-table-permissions).\n   *\n   * ### Overview:\n   *\n   * Polls the status of a Grail query. Returns the status of the query, including the result if the query finished.\n   *\n   * ### The response format:\n   * The json response will contain the state of the query. If the query succeeded, the result will be included.\n   *\n   * The result has two main sections:\n   * * The 'records' section contains the individual records, where each record consists of a set of fields and their corresponding values.\n   * * The 'types' section describes the corresponding data types that a record field has.\n   *\n   * Every record has an implicit 'index' according to the position in the 'records' JSON array.\n   * The types section has a list of 1..N possible type 'buckets'. Each such bucket has an 'indexRange' which indicates which\n   * records will find their field types in which bucket. The index range has two values start & end and can be thought of as [startIndex, endIndex).\n   *\n   * A field part of a record with index 'i' will find its corresponding field type by first locating the bucket that satisfies:\n   *\n   * ```text\n   * startIndex <= i <= endIndex\n   * ```\n   *\n   * Once the bucket is found the 'mappings' object has an entry for all the fields that are part of that record with index 'i'.\n   *\n   *\n   * Since enforcement of a particular schema is absent at ingestion time, it is possible to have records that share the same\n   * field name but their values are of a different type. This phenomenon will hence forth be named as a **\"collision\"**.\n   * When a collision does occur, we will create a new type 'bucket' that will have a different index range where\n   * the new record field types will be placed.\n   * It is guaranteed that every field of every record will have a corresponding type.\n   * **Clients should always take the included types into account when consuming records!**\n   *\n   * @returns {Promise<QueryPollResponse>} The current status and results of the supplied query.\n   *\n   * @example <caption>Code example</caption>\n   * import { queryExecutionClient } from \"@dynatrace-sdk/client-query\";\n   *\n   * const data = await queryExecutionClient.queryPoll({\n   *   requestToken: \"...\",\n   * });\n   *\n   * @throws {BadRequest} The supplied request is wrong. Either the query itself or other parameters are wrong.\n   * @throws {Unauthorized} Unauthorized. The request lacks valid authentication credentials. Happens when the authentication token is missing or invalid.\n   * @throws {InsufficientPermission} Insufficient permissions.\n   * @throws {QueryNotFound} Not Found - The query with the given ID does not exist for this tenant.\n   * @throws {MethodNotAllowed} Method not allowed. The HTTP method is not supported for this endpoint.\n   * @throws {QueryGone} The query for the given request-token is not available anymore.\n   * @throws {UnsupportedMediaType} Unsupported media type. The request content type is not supported.\n   * @throws {TooManyRequests} Too Many Requests - There were too many queries in the queue.\n   * @throws {InternalServerError} An internal server error has occurred.\n   * @throws {ServiceUnavailable} Service Unavailable - The grail instance is either shutting down or busy.\n   * @throws {GatewayTimeout} Gateway timeout. The service did not respond in time.\n   * @throws {InvalidResponseError}\n   * @throws {ApiClientError}\n   * @throws {ClientRequestError}\n   */\n  async queryPoll(config) {\n    if (!config) {\n      throw new import_shared_errors4.ApiClientError(\"API client error\", \"API client call is missing mandatory config parameter\");\n    }\n    const query = toQueryString(\n      {\n        \"request-token\": config.requestToken,\n        \"request-timeout-milliseconds\": config.requestTimeoutMilliseconds,\n        enrich: config.enrich\n      },\n      { explode: { \"request-token\": false, \"request-timeout-milliseconds\": false } }\n    );\n    const headerParameters = {\n      ...config.dtClientContext !== void 0 && { \"dt-client-context\": String(config.dtClientContext) }\n    };\n    try {\n      const response = await this.httpClient.send({\n        url: `/platform/storage/query/v1/query:poll${query}`,\n        method: \"GET\",\n        headers: {\n          Accept: \"application/json\",\n          ...headerParameters\n        },\n        abortSignal: config instanceof EventTarget ? config : config.abortSignal,\n        statusValidator: (status) => {\n          return [200].includes(status);\n        }\n      });\n      const responseValue = await response.body(\"json\");\n      try {\n        return this.shouldTransformDates ? transformResponse(responseValue, [\n          [\"result.metadata.grail.analysisTimeframe.end\", { datetime: true }],\n          [\"result.metadata.grail.analysisTimeframe.start\", { datetime: true }],\n          [\"result.records.*.end\", { datetime: true }],\n          [\"result.records.*.start\", { datetime: true }],\n          [\"result.records.**.end\", { datetime: true }],\n          [\"result.records.**.start\", { datetime: true }],\n          [\"result.records.*.end\", { datetime: true }],\n          [\"result.records.*.start\", { datetime: true }]\n        ]) : responseValue;\n      } catch (err) {\n        throw new import_shared_errors4.InvalidResponseError(\n          `QueryExecutionClient.query:poll:200`,\n          err,\n          responseValue,\n          void 0,\n          void 0,\n          response\n        );\n      }\n    } catch (e) {\n      if ((0, import_http_client2.isHttpClientAbortError)(e) || (0, import_shared_errors4.isInvalidResponseError)(e)) {\n        throw e;\n      }\n      if (!(0, import_http_client2.isHttpClientResponseError)(e)) {\n        throw new import_shared_errors4.ApiClientError(\"UnexpectedError\", \"Unexpected error\", e);\n      }\n      const response = e.response;\n      await apiGatewayErrorsHandler(response);\n      switch (response.status) {\n        case 400: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new BadRequest(\n              `400`,\n              response,\n              errorBody,\n              getErrorMessage(\n                errorBody,\n                \"The supplied request is wrong. Either the query itself or other parameters are wrong.\"\n              ),\n              e\n            );\n          } catch (err) {\n            if (err instanceof BadRequest) {\n              throw err;\n            }\n            throw new import_shared_errors4.InvalidResponseError(\n              `QueryExecutionClient.query:poll:400`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 401: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new Unauthorized(\n              `401`,\n              response,\n              errorBody,\n              getErrorMessage(\n                errorBody,\n                \"Unauthorized. The request lacks valid authentication credentials. Happens when the authentication token is missing or invalid.\"\n              ),\n              e\n            );\n          } catch (err) {\n            if (err instanceof Unauthorized) {\n              throw err;\n            }\n            throw new import_shared_errors4.InvalidResponseError(\n              `QueryExecutionClient.query:poll:401`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 403: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new InsufficientPermission(\n              `403`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Insufficient permissions.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof InsufficientPermission) {\n              throw err;\n            }\n            throw new import_shared_errors4.InvalidResponseError(\n              `QueryExecutionClient.query:poll:403`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 404: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new QueryNotFound(\n              `404`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Not Found - The query with the given ID does not exist for this tenant.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof QueryNotFound) {\n              throw err;\n            }\n            throw new import_shared_errors4.InvalidResponseError(\n              `QueryExecutionClient.query:poll:404`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 405: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new MethodNotAllowed(\n              `405`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Method not allowed. The HTTP method is not supported for this endpoint.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof MethodNotAllowed) {\n              throw err;\n            }\n            throw new import_shared_errors4.InvalidResponseError(\n              `QueryExecutionClient.query:poll:405`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 410: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new QueryGone(\n              `410`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"The query for the given request-token is not available anymore.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof QueryGone) {\n              throw err;\n            }\n            throw new import_shared_errors4.InvalidResponseError(\n              `QueryExecutionClient.query:poll:410`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 415: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new UnsupportedMediaType(\n              `415`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Unsupported media type. The request content type is not supported.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof UnsupportedMediaType) {\n              throw err;\n            }\n            throw new import_shared_errors4.InvalidResponseError(\n              `QueryExecutionClient.query:poll:415`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 429: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new TooManyRequests(\n              `429`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Too Many Requests - There were too many queries in the queue.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof TooManyRequests) {\n              throw err;\n            }\n            throw new import_shared_errors4.InvalidResponseError(\n              `QueryExecutionClient.query:poll:429`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 500: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new InternalServerError(\n              `500`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"An internal server error has occurred.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof InternalServerError) {\n              throw err;\n            }\n            throw new import_shared_errors4.InvalidResponseError(\n              `QueryExecutionClient.query:poll:500`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 503: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new ServiceUnavailable(\n              `503`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Service Unavailable - The grail instance is either shutting down or busy.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof ServiceUnavailable) {\n              throw err;\n            }\n            throw new import_shared_errors4.InvalidResponseError(\n              `QueryExecutionClient.query:poll:503`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        case 504: {\n          const responseValue = await response.body(\"json\");\n          try {\n            const errorBody = this.shouldTransformDates ? transformResponse(responseValue, []) : responseValue;\n            throw new GatewayTimeout(\n              `504`,\n              response,\n              errorBody,\n              getErrorMessage(errorBody, \"Gateway timeout. The service did not respond in time.\"),\n              e\n            );\n          } catch (err) {\n            if (err instanceof GatewayTimeout) {\n              throw err;\n            }\n            throw new import_shared_errors4.InvalidResponseError(\n              `QueryExecutionClient.query:poll:504`,\n              err,\n              responseValue,\n              \"ErrorEnvelope\",\n              void 0,\n              response\n            );\n          }\n        }\n        default: {\n          try {\n            const responseValue = await response.body(\"json\");\n            throw new import_shared_errors4.ClientRequestError(\n              `${response.status}`,\n              response,\n              responseValue,\n              getErrorMessage(\n                responseValue,\n                `Unexpected api response: code=${response.status} body=\"${responseValue}\"`\n              ),\n              e\n            );\n          } catch (error) {\n            if (error instanceof import_shared_errors4.ClientRequestError) {\n              throw error;\n            }\n            const responseValue = await response.body(\"text\").catch(() => \"\");\n            throw new import_shared_errors4.InvalidResponseError(\n              `${response.status}`,\n              error,\n              responseValue,\n              \"json\",\n              \"Unexpected api response\",\n              response\n            );\n          }\n        }\n      }\n    }\n  }\n};\nvar queryExecutionClient = /* @__PURE__ */ new QueryExecutionClient(import_http_client2.httpClient);\n\n// packages/client/query/src/lib/error-envelopes/index.ts\nvar import_shared_errors5 = require(\"@dynatrace-sdk/shared-errors\");\n\n// packages/client/query/src/lib/models/dql-node-node-type.ts\nvar DQLNodeNodeType = /* @__PURE__ */ ((DQLNodeNodeType2) => {\n  DQLNodeNodeType2[\"Terminal\"] = \"TERMINAL\";\n  DQLNodeNodeType2[\"Container\"] = \"CONTAINER\";\n  DQLNodeNodeType2[\"Alternative\"] = \"ALTERNATIVE\";\n  return DQLNodeNodeType2;\n})(DQLNodeNodeType || {});\n\n// packages/client/query/src/lib/models/field-type-type.ts\nvar FieldTypeType = /* @__PURE__ */ ((FieldTypeType2) => {\n  FieldTypeType2[\"Boolean\"] = \"boolean\";\n  FieldTypeType2[\"String\"] = \"string\";\n  FieldTypeType2[\"Double\"] = \"double\";\n  FieldTypeType2[\"Long\"] = \"long\";\n  FieldTypeType2[\"Timestamp\"] = \"timestamp\";\n  FieldTypeType2[\"Timeframe\"] = \"timeframe\";\n  FieldTypeType2[\"Duration\"] = \"duration\";\n  FieldTypeType2[\"Binary\"] = \"binary\";\n  FieldTypeType2[\"IpAddress\"] = \"ip_address\";\n  FieldTypeType2[\"GeoPoint\"] = \"geo_point\";\n  FieldTypeType2[\"Array\"] = \"array\";\n  FieldTypeType2[\"Record\"] = \"record\";\n  FieldTypeType2[\"Uid\"] = \"uid\";\n  FieldTypeType2[\"SmartscapeId\"] = \"smartscape_id\";\n  FieldTypeType2[\"Undefined\"] = \"undefined\";\n  return FieldTypeType2;\n})(FieldTypeType || {});\n\n// packages/client/query/src/lib/models/query-state.ts\nvar QueryState = /* @__PURE__ */ ((QueryState2) => {\n  QueryState2[\"NotStarted\"] = \"NOT_STARTED\";\n  QueryState2[\"Running\"] = \"RUNNING\";\n  QueryState2[\"Succeeded\"] = \"SUCCEEDED\";\n  QueryState2[\"ResultGone\"] = \"RESULT_GONE\";\n  QueryState2[\"Cancelled\"] = \"CANCELLED\";\n  QueryState2[\"Failed\"] = \"FAILED\";\n  return QueryState2;\n})(QueryState || {});\n\n// packages/client/query/src/lib/models/token-type.ts\nvar TokenType = /* @__PURE__ */ ((TokenType2) => {\n  TokenType2[\"Space\"] = \"SPACE\";\n  TokenType2[\"Linebreak\"] = \"LINEBREAK\";\n  TokenType2[\"Indent\"] = \"INDENT\";\n  TokenType2[\"Pipe\"] = \"PIPE\";\n  TokenType2[\"Dot\"] = \"DOT\";\n  TokenType2[\"Colon\"] = \"COLON\";\n  TokenType2[\"Comma\"] = \"COMMA\";\n  TokenType2[\"Assignment\"] = \"ASSIGNMENT\";\n  TokenType2[\"BraceOpen\"] = \"BRACE_OPEN\";\n  TokenType2[\"BraceClose\"] = \"BRACE_CLOSE\";\n  TokenType2[\"BracketOpen\"] = \"BRACKET_OPEN\";\n  TokenType2[\"BracketClose\"] = \"BRACKET_CLOSE\";\n  TokenType2[\"ParenthesisOpen\"] = \"PARENTHESIS_OPEN\";\n  TokenType2[\"ParenthesisClose\"] = \"PARENTHESIS_CLOSE\";\n  TokenType2[\"Quote\"] = \"QUOTE\";\n  TokenType2[\"SingleQuote\"] = \"SINGLE_QUOTE\";\n  TokenType2[\"Slash\"] = \"SLASH\";\n  TokenType2[\"BooleanTrue\"] = \"BOOLEAN_TRUE\";\n  TokenType2[\"BooleanFalse\"] = \"BOOLEAN_FALSE\";\n  TokenType2[\"Null\"] = \"NULL\";\n  TokenType2[\"CommandName\"] = \"COMMAND_NAME\";\n  TokenType2[\"ParameterKey\"] = \"PARAMETER_KEY\";\n  TokenType2[\"ParameterValueScope\"] = \"PARAMETER_VALUE_SCOPE\";\n  TokenType2[\"FunctionName\"] = \"FUNCTION_NAME\";\n  TokenType2[\"TimeseriesAggregation\"] = \"TIMESERIES_AGGREGATION\";\n  TokenType2[\"TimeseriesAggregationExpression\"] = \"TIMESERIES_AGGREGATION_EXPRESSION\";\n  TokenType2[\"Operator\"] = \"OPERATOR\";\n  TokenType2[\"SearchOperator\"] = \"SEARCH_OPERATOR\";\n  TokenType2[\"TraversalOperator\"] = \"TRAVERSAL_OPERATOR\";\n  TokenType2[\"TraversalRelationName\"] = \"TRAVERSAL_RELATION_NAME\";\n  TokenType2[\"TraversalHopCount\"] = \"TRAVERSAL_HOP_COUNT\";\n  TokenType2[\"SimpleIdentifier\"] = \"SIMPLE_IDENTIFIER\";\n  TokenType2[\"DataObject\"] = \"DATA_OBJECT\";\n  TokenType2[\"Number\"] = \"NUMBER\";\n  TokenType2[\"String\"] = \"STRING\";\n  TokenType2[\"TimeUnit\"] = \"TIME_UNIT\";\n  TokenType2[\"TimestampValue\"] = \"TIMESTAMP_VALUE\";\n  TokenType2[\"MetricKey\"] = \"METRIC_KEY\";\n  TokenType2[\"Variable\"] = \"VARIABLE\";\n  TokenType2[\"EndComment\"] = \"END_COMMENT\";\n  TokenType2[\"UidValue\"] = \"UID_VALUE\";\n  TokenType2[\"ParsePattern\"] = \"PARSE_PATTERN\";\n  TokenType2[\"FieldPattern\"] = \"FIELD_PATTERN\";\n  TokenType2[\"SearchPattern\"] = \"SEARCH_PATTERN\";\n  TokenType2[\"EntitySelectorPart\"] = \"ENTITY_SELECTOR_PART\";\n  TokenType2[\"SavedTableName\"] = \"SAVED_TABLE_NAME\";\n  TokenType2[\"TabularFileName\"] = \"TABULAR_FILE_NAME\";\n  TokenType2[\"ParameterModifier\"] = \"PARAMETER_MODIFIER\";\n  TokenType2[\"FieldModifier\"] = \"FIELD_MODIFIER\";\n  TokenType2[\"EntityType\"] = \"ENTITY_TYPE\";\n  TokenType2[\"EntityAttribute\"] = \"ENTITY_ATTRIBUTE\";\n  TokenType2[\"SmartscapeIdValue\"] = \"SMARTSCAPE_ID_VALUE\";\n  TokenType2[\"EnumString\"] = \"ENUM_STRING\";\n  TokenType2[\"FieldPrefix\"] = \"FIELD_PREFIX\";\n  TokenType2[\"Bucket\"] = \"BUCKET\";\n  TokenType2[\"SmartscapeNodePattern\"] = \"SMARTSCAPE_NODE_PATTERN\";\n  TokenType2[\"SmartscapeEdgePattern\"] = \"SMARTSCAPE_EDGE_PATTERN\";\n  TokenType2[\"SmartscapeNodeType\"] = \"SMARTSCAPE_NODE_TYPE\";\n  TokenType2[\"SmartscapeEdgeType\"] = \"SMARTSCAPE_EDGE_TYPE\";\n  TokenType2[\"JsonPath\"] = \"JSON_PATH\";\n  TokenType2[\"Url\"] = \"URL\";\n  TokenType2[\"Semicolon\"] = \"SEMICOLON\";\n  TokenType2[\"FieldValue\"] = \"FIELD_VALUE\";\n  TokenType2[\"Unknown\"] = \"UNKNOWN\";\n  TokenType2[\"FieldName\"] = \"FIELD_NAME\";\n  TokenType2[\"SynopsisInfo\"] = \"SYNOPSIS_INFO\";\n  return TokenType2;\n})(TokenType || {});\n"]}