{"version":3,"sources":["../src/core/env.ts","../src/core/registry/DataClassRegistry.ts","../src/core/factories/JsonApiDataFactory.ts","../src/core/registry/bootstrapStore.ts","../src/core/utils/translateResponse.ts","../src/unified/JsonApiRequest.ts"],"sourcesContent":["/**\n * The single place in this package that reads `process.env`.\n *\n * Everything else imports {@link ENV}. Centralising the reads keeps every\n * default in one place — the same contract `base.config.ts` provides on the\n * NestJS side — instead of scattering `process.env.X || \"…\"` across hooks,\n * clients and components where the fallbacks silently drift apart.\n *\n * WHY THE READS MUST STAY LITERAL: Next.js inlines `NEXT_PUBLIC_*` by textual\n * substitution at build time, replacing the exact expression\n * `process.env.NEXT_PUBLIC_FOO` with a string literal. A computed lookup\n * (`process.env[key]`) is NOT substituted and reads as `undefined` in the\n * browser bundle. Every entry below therefore spells its variable out in full,\n * and new entries must do the same.\n *\n * WHY GETTERS AND NOT PLAIN PROPERTIES: every call site this replaced read\n * `process.env` at CALL time, not at import time. A plain property would freeze\n * the value when the module is first imported, which breaks any consumer that\n * assigns the variable after boot — the package's own tests do exactly that.\n * Getters keep the read lazy while leaving the expression literal, so the build\n * time substitution still applies.\n *\n * Because that substitution happens before the code runs, no reference to\n * `process` survives into the client bundle — so this module is safe to import\n * from client components, server components, route handlers and middleware\n * alike. It deliberately carries no `\"use client\"` directive for that reason.\n *\n * Values are normalised (empty string rather than `undefined`, booleans rather\n * than string comparisons) so callers never repeat the parsing. Callers that\n * must distinguish \"unset\" from \"set to empty\" — the URL getters, which throw a\n * configuration error — check for an empty string.\n */\nexport const ENV = {\n  /** Public API base URL (NEXT_PUBLIC_API_URL). Empty when unset. */\n  get API_URL(): string {\n    return process.env.NEXT_PUBLIC_API_URL ?? \"\";\n  },\n  /** Public app base URL (NEXT_PUBLIC_ADDRESS). Empty when unset. */\n  get APP_URL(): string {\n    return process.env.NEXT_PUBLIC_ADDRESS ?? \"\";\n  },\n  /**\n   * Alternative app base URL (NEXT_PUBLIC_APP_URL), used only by\n   * `client/config.ts`'s `getAppUrl()` before it falls back to\n   * `window.location.origin`. Empty when unset.\n   */\n  get APP_URL_ALTERNATE(): string {\n    return process.env.NEXT_PUBLIC_APP_URL ?? \"\";\n  },\n  /** Web-push VAPID public key (NEXT_PUBLIC_VAPID_PUBLIC_KEY). Empty when unset. */\n  get VAPID_PUBLIC_KEY(): string {\n    return process.env.NEXT_PUBLIC_VAPID_PUBLIC_KEY ?? \"\";\n  },\n  /** Google Maps JS key (NEXT_PUBLIC_GOOGLE_MAPS_API_KEY). Empty disables autocomplete. */\n  get GOOGLE_MAPS_API_KEY(): string {\n    return process.env.NEXT_PUBLIC_GOOGLE_MAPS_API_KEY ?? \"\";\n  },\n  /**\n   * NEXT_PUBLIC_PRIVATE_INSTALLATION === \"true\", case-insensitively\n   * (default false). A private installation is a single-tenant deployment.\n   */\n  get PRIVATE_INSTALLATION(): boolean {\n    return process.env.NEXT_PUBLIC_PRIVATE_INSTALLATION?.toLowerCase() === \"true\";\n  },\n  /** NODE_ENV === \"production\" — set by the Next build, not by `.env`. */\n  get IS_PRODUCTION(): boolean {\n    return process.env.NODE_ENV === \"production\";\n  },\n  /** NODE_ENV === \"development\" — gates verbose client-side diagnostics. */\n  get IS_DEVELOPMENT(): boolean {\n    return process.env.NODE_ENV === \"development\";\n  },\n};\n","import { ApiDataInterface } from \"../interfaces/ApiDataInterface\";\nimport { ApiRequestDataTypeInterface } from \"../interfaces/ApiRequestDataTypeInterface\";\n\nexport class DataClassRegistry {\n  // Use Map with string key (module.name) for reliable lookup\n  // String keys are stable across HMR and module re-evaluations\n  // Note: WeakMap with object identity was tried but fails during Next.js navigation\n  // because module re-evaluation creates new object instances with different identity\n  private static _map = new Map<string, { new (): ApiDataInterface }>();\n\n  public static registerObjectClass(\n    key: ApiRequestDataTypeInterface,\n    classConstructor: { new (): ApiDataInterface },\n  ): void {\n    const classKey = key.name;\n    if (!this._map.has(classKey)) {\n      this._map.set(classKey, classConstructor);\n    }\n  }\n\n  public static get(classKey: ApiRequestDataTypeInterface): {\n    new (): ApiDataInterface;\n  } {\n    const response = this._map.get(classKey.name);\n    if (!response) {\n      throw new Error(\n        `Class not registered for key: ${typeof classKey === \"string\" ? classKey : classKey.name}. Ensure bootstrap() was called.`,\n      );\n    }\n\n    return response;\n  }\n\n  /**\n   * Get class constructor by JSON:API type name.\n   * Used for polymorphic rehydration where the type is determined at runtime.\n   */\n  public static getByJsonApiType(typeName: string): { new (): ApiDataInterface } | undefined {\n    return this._map.get(typeName);\n  }\n\n  /**\n   * Bootstrap the registry with all modules.\n   * This is a convenience method for apps to register all their modules at once.\n   *\n   * @param modules - An object with module definitions (like the app's Modules class)\n   */\n  public static bootstrap(modules: Record<string, ApiRequestDataTypeInterface>): void {\n    Object.values(modules).forEach((module) => {\n      if (module && module.model) {\n        this.registerObjectClass(module, module.model);\n      }\n    });\n  }\n\n  /**\n   * Clear all registered classes. Useful for testing.\n   */\n  public static clear(): void {\n    this._map.clear();\n  }\n}\n\n// Export alias for backward compatibility\nexport { DataClassRegistry as DataClass };\n","import { ApiDataInterface } from \"../interfaces/ApiDataInterface\";\nimport { ApiRequestDataTypeInterface } from \"../interfaces/ApiRequestDataTypeInterface\";\nimport { DataClassRegistry } from \"../registry/DataClassRegistry\";\n\nexport class JsonApiDataFactory {\n  public static create(classKey: ApiRequestDataTypeInterface, data: any): any {\n    const factoryClass = DataClassRegistry.get(classKey);\n\n    const instance = new factoryClass() as ApiDataInterface;\n    const result = instance.createJsonApi(data);\n    return result;\n  }\n}\n","/**\n * Centralized bootstrap store accessible from ModuleRegistry.\n * This file has NO external dependencies to avoid circular imports.\n *\n * The bootstrap store allows ModuleRegistry to call the app's bootstrapper\n * when modules are accessed before bootstrap() was called, providing\n * self-healing behavior for module evaluation order issues.\n *\n * IMPORTANT: We use globalThis to persist state across HMR/Turbopack\n * module re-evaluations in development mode. Without this, the bootstrapper\n * reference would be lost when modules are hot-reloaded, causing\n * \"Module not registered\" errors during navigation.\n */\n\ntype BootstrapperFn = () => void;\n\n// Symbol key to avoid conflicts with other globals\nconst BOOTSTRAP_KEY = Symbol.for(\"nextjs-jsonapi:bootstrapper\");\nconst BOOTSTRAP_ATTEMPTED_KEY = Symbol.for(\"nextjs-jsonapi:bootstrapAttempted\");\n\n// Use globalThis to persist across HMR reloads\nconst globalStore = globalThis as unknown as {\n  [BOOTSTRAP_KEY]?: BootstrapperFn | null;\n  [BOOTSTRAP_ATTEMPTED_KEY]?: boolean;\n};\n\n// Initialize from global if not set\nif (globalStore[BOOTSTRAP_KEY] === undefined) {\n  globalStore[BOOTSTRAP_KEY] = null;\n}\nif (globalStore[BOOTSTRAP_ATTEMPTED_KEY] === undefined) {\n  globalStore[BOOTSTRAP_ATTEMPTED_KEY] = false;\n}\n\n// Getters/setters that use the global store\nfunction getBootstrapperInternal(): BootstrapperFn | null {\n  return globalStore[BOOTSTRAP_KEY] ?? null;\n}\n\nfunction setBootstrapperInternal(fn: BootstrapperFn | null): void {\n  globalStore[BOOTSTRAP_KEY] = fn;\n}\n\nfunction getBootstrapAttempted(): boolean {\n  return globalStore[BOOTSTRAP_ATTEMPTED_KEY] ?? false;\n}\n\nfunction setBootstrapAttempted(value: boolean): void {\n  globalStore[BOOTSTRAP_ATTEMPTED_KEY] = value;\n}\n\n/**\n * Register the bootstrapper function.\n * Called by configureJsonApi() from client/config, client/JsonApiClient, or unified/JsonApiRequest.\n */\nexport function setBootstrapper(fn: BootstrapperFn): void {\n  setBootstrapperInternal(fn);\n}\n\n/**\n * Get the registered bootstrapper function.\n * Returns null if no bootstrapper has been registered.\n */\nexport function getBootstrapper(): BootstrapperFn | null {\n  return getBootstrapperInternal();\n}\n\n/**\n * Attempt to run the bootstrapper if one is registered.\n * Returns true if bootstrapper was executed, false if not available.\n * Safe to call multiple times - bootstrapper is expected to be idempotent.\n */\nexport function tryBootstrap(): boolean {\n  const bootstrapper = getBootstrapperInternal();\n  const attempted = getBootstrapAttempted();\n\n  if (attempted && !bootstrapper) {\n    // Already tried and no bootstrapper available\n    return false;\n  }\n  setBootstrapAttempted(true);\n\n  if (bootstrapper) {\n    bootstrapper();\n    return true;\n  }\n  return false;\n}\n\n/**\n * Check if a bootstrapper has been registered.\n */\nexport function hasBootstrapper(): boolean {\n  return getBootstrapperInternal() !== null;\n}\n\n/**\n * Reset the bootstrap store. Useful for testing.\n */\nexport function resetBootstrapStore(): void {\n  setBootstrapperInternal(null);\n  setBootstrapAttempted(false);\n}\n","import { ApiData } from \"../interfaces/ApiData\";\nimport { ApiDataInterface } from \"../interfaces/ApiDataInterface\";\nimport { ApiRequestDataTypeInterface } from \"../interfaces/ApiRequestDataTypeInterface\";\nimport { ApiResponseInterface } from \"../interfaces/ApiResponseInterface\";\nimport { DataClassRegistry } from \"../registry/DataClassRegistry\";\n\n/**\n * Translates raw JSON:API data into typed objects.\n * Does not require API response metadata.\n */\nexport function translateData<T extends ApiDataInterface>(params: {\n  classKey: ApiRequestDataTypeInterface;\n  data: any;\n}): T | T[] {\n  const factoryClass = DataClassRegistry.get(params.classKey);\n\n  if (!factoryClass) {\n    throw new Error(\n      `Class not registered for key: ${typeof params.classKey === \"string\" ? params.classKey : params.classKey.name}`,\n    );\n  }\n\n  const included: any = params.data.included ?? [];\n\n  if (Array.isArray(params.data.data)) {\n    const responseData: T[] = [];\n\n    for (const data of params.data.data) {\n      const object = new factoryClass();\n      object.rehydrate({ jsonApi: data, included: included, allData: params.data.data });\n      responseData.push(object as T);\n    }\n\n    return responseData as T[];\n  } else {\n    const responseData = new factoryClass();\n    responseData.rehydrate({\n      jsonApi: params.data.data,\n      included: included,\n    });\n\n    return responseData as T;\n  }\n}\n\n/**\n * Translates a full API response into a typed ApiResponseInterface.\n * Includes pagination support.\n */\nexport async function translateResponse<T extends ApiDataInterface>(params: {\n  classKey: ApiRequestDataTypeInterface;\n  apiResponse: ApiData;\n  companyId?: string;\n  language: string;\n  paginationHandler?: (endpoint: string) => Promise<ApiResponseInterface>;\n}): Promise<ApiResponseInterface> {\n  const response: ApiResponseInterface = {\n    ok: true,\n    response: 0,\n    data: [],\n    error: \"\",\n  };\n\n  const factoryClass = DataClassRegistry.get(params.classKey);\n\n  if (!factoryClass) {\n    throw new Error(\n      `Class not registered for key: ${typeof params.classKey === \"string\" ? params.classKey : params.classKey.name}`,\n    );\n  }\n\n  response.ok = params.apiResponse.ok;\n  response.response = params.apiResponse.status;\n\n  if (!params.apiResponse.ok) {\n    // `statusText` is empty over HTTP/2 (the reason phrase was removed from the protocol), so the\n    // body is the only reliable source of error text. APIs in this stack use either key.\n    response.error =\n      params.apiResponse?.data?.message ?? params.apiResponse?.data?.error ?? params.apiResponse.statusText;\n    response.raw = params.apiResponse.data;\n    return response;\n  }\n\n  if (params.apiResponse.status === 204) return response;\n\n  // A success with no body (e.g. a 200 from a handler that sends nothing —\n  // @HttpCode is inert when a controller injects @Res, so \"204\" endpoints can\n  // arrive as empty 200s) translates to an empty success, not a crash on\n  // `.included` below.\n  if (params.apiResponse.data === undefined || params.apiResponse.data === null) return response;\n\n  response.raw = params.apiResponse.data;\n\n  // Extract meta from JSON:API response\n  if (params.apiResponse.data?.meta) {\n    response.meta = params.apiResponse.data.meta;\n  }\n\n  try {\n    // Check if response is JSON:API formatted (has a 'data' property)\n    // If not, return the raw response data directly (e.g., { url: \"...\" } or { clientSecret: \"...\" })\n    if (\n      params.apiResponse.data &&\n      typeof params.apiResponse.data === \"object\" &&\n      !Array.isArray(params.apiResponse.data) &&\n      params.apiResponse.data.data === undefined\n    ) {\n      response.data = params.apiResponse.data;\n      return response;\n    }\n\n    const included: any = params.apiResponse.data.included ?? [];\n\n    if (params.apiResponse.data.links) {\n      response.self = params.apiResponse.data.links.self;\n\n      if (params.apiResponse.data.links.next && params.paginationHandler) {\n        response.next = params.apiResponse.data.links.next;\n        response.nextPage = async () => params.paginationHandler!(params.apiResponse.data.links.next);\n      }\n\n      if (params.apiResponse.data.links.prev && params.paginationHandler) {\n        response.prev = params.apiResponse.data.links.prev;\n        response.prevPage = async () => params.paginationHandler!(params.apiResponse.data.links.prev);\n      }\n    }\n\n    if (Array.isArray(params.apiResponse.data.data)) {\n      const responseData: T[] = [];\n\n      for (const data of params.apiResponse.data.data) {\n        const object = new factoryClass();\n        object.rehydrate({ jsonApi: data, included: included, allData: params.apiResponse.data.data });\n        responseData.push(object as T);\n      }\n\n      response.data = responseData;\n    } else {\n      const responseData = new factoryClass();\n      responseData.rehydrate({\n        jsonApi: params.apiResponse.data.data,\n        included: included,\n      });\n\n      response.data = responseData;\n    }\n  } catch (e) {\n    console.error(e);\n  }\n\n  return response;\n}\n","import { ENV } from \"../core/env\";\nimport { JsonApiDataFactory } from \"../core/factories/JsonApiDataFactory\";\nimport { ApiData } from \"../core/interfaces/ApiData\";\nimport { ApiRequestDataTypeInterface } from \"../core/interfaces/ApiRequestDataTypeInterface\";\nimport { ApiResponseInterface } from \"../core/interfaces/ApiResponseInterface\";\nimport { setBootstrapper } from \"../core/registry/bootstrapStore\";\nimport { translateResponse } from \"../core/utils/translateResponse\";\nimport { ModuleWithPermissions } from \"../permissions/types\";\n\n// Type definitions for dynamically imported functions (avoiding typeof import to prevent bundling)\ntype DirectFetchFn = (params: {\n  method: string;\n  url: string;\n  token?: string;\n  body?: any;\n  files?: { [key: string]: File | Blob } | File | Blob;\n  companyId?: string;\n  language: string;\n  additionalHeaders?: Record<string, string>;\n}) => Promise<ApiData>;\n\ntype ServerRequestFn = (params: {\n  method: string;\n  url: string;\n  token?: string;\n  cache?: string;\n  body?: any;\n  files?: { [key: string]: File | Blob } | File | Blob;\n  companyId?: string;\n  language: string;\n  additionalHeaders?: Record<string, string>;\n}) => Promise<ApiData>;\n\ntype GetTokenFn = () => Promise<string | undefined>;\n\n// These will be dynamically imported based on environment\nlet _directFetch: DirectFetchFn;\nlet _serverRequest: ServerRequestFn;\nlet _getClientToken: GetTokenFn;\nlet _getServerToken: GetTokenFn;\n\n// Config storage for non-React contexts\nlet _staticConfig: {\n  apiUrl: string;\n  appUrl?: string;\n  trackablePages?: ModuleWithPermissions[];\n  bootstrapper?: () => void;\n  additionalHeaders?: Record<string, string>;\n} | null = null;\n\n/**\n * Configure the JSON:API client for non-React contexts (e.g., server components).\n * For React contexts, use JsonApiProvider instead.\n */\nexport function configureJsonApi(config: {\n  apiUrl: string;\n  appUrl?: string;\n  trackablePages?: ModuleWithPermissions[];\n  bootstrapper?: () => void;\n  additionalHeaders?: Record<string, string>;\n}): void {\n  _staticConfig = config;\n  // Register and call bootstrapper to register all modules\n  if (config.bootstrapper) {\n    setBootstrapper(config.bootstrapper);\n    config.bootstrapper();\n  }\n}\n\nasync function getToken(): Promise<string | undefined> {\n  if (typeof window === \"undefined\") {\n    // Server-side\n    if (!_getServerToken) {\n      const serverModule = await import(\"../server/token\");\n      _getServerToken = serverModule.getServerToken;\n    }\n    return _getServerToken();\n  } else {\n    // Client-side\n    if (!_getClientToken) {\n      const clientModule = await import(\"../client/token\");\n      _getClientToken = clientModule.getClientToken;\n    }\n    return _getClientToken();\n  }\n}\n\nasync function makeRequest(params: {\n  method: string;\n  url: string;\n  token?: string;\n  cache?: string;\n  body?: any;\n  files?: { [key: string]: File | Blob } | File | Blob;\n  companyId?: string;\n  language: string;\n  additionalHeaders?: Record<string, string>;\n}): Promise<ApiData> {\n  if (typeof window !== \"undefined\") {\n    // Client-side: use direct fetch\n    if (!_directFetch) {\n      const clientModule = await import(\"../client/request\");\n      _directFetch = clientModule.directFetch;\n    }\n    return _directFetch({\n      method: params.method,\n      url: params.url,\n      token: params.token,\n      body: params.body,\n      files: params.files,\n      companyId: params.companyId,\n      language: params.language,\n      additionalHeaders: params.additionalHeaders,\n    });\n  } else {\n    // Server-side: use server request with caching\n    if (!_serverRequest) {\n      const serverModule = await import(\"../server/request\");\n      _serverRequest = serverModule.serverRequest;\n    }\n    return _serverRequest({\n      method: params.method,\n      url: params.url,\n      token: params.token,\n      cache: params.cache,\n      body: params.body,\n      files: params.files,\n      companyId: params.companyId,\n      language: params.language,\n      additionalHeaders: params.additionalHeaders,\n    });\n  }\n}\n\nexport function getApiUrl(): string {\n  if (_staticConfig?.apiUrl) {\n    return _staticConfig.apiUrl;\n  }\n  // Fallback to environment variable\n  const envUrl = ENV.API_URL;\n  if (!envUrl) {\n    throw new Error(\"API URL not configured. Use configureJsonApi() or set NEXT_PUBLIC_API_URL environment variable.\");\n  }\n  return envUrl;\n}\n\nexport function getAppUrl(): string {\n  if (_staticConfig?.appUrl) {\n    return _staticConfig.appUrl;\n  }\n  // Fallback to environment variable\n  const envUrl = ENV.APP_URL;\n  if (!envUrl) {\n    throw new Error(\n      \"App URL not configured. Use configureJsonApi({ appUrl }) or set NEXT_PUBLIC_ADDRESS environment variable.\",\n    );\n  }\n  return envUrl.trim().replace(/\\/+$/, \"\");\n}\n\nexport function getTrackablePages(): ModuleWithPermissions[] {\n  return _staticConfig?.trackablePages ?? [];\n}\n\nfunction runBootstrapper(): void {\n  if (_staticConfig?.bootstrapper) {\n    _staticConfig.bootstrapper();\n  }\n}\n\n/**\n * Resolve the final request URL for an endpoint.\n *\n * - `endpoint` starting with \"http\" is always passed through unchanged (existing behaviour).\n * - Otherwise, an explicit `baseUrl` (per-call override) takes precedence over the global\n *   `getApiUrl()` resolution. Omitting `baseUrl` preserves today's behaviour exactly.\n */\nexport function buildUrl(endpoint: string, baseUrl?: string): string {\n  if (endpoint.startsWith(\"http\")) return endpoint;\n  const apiUrl = baseUrl ?? getApiUrl();\n  return `${apiUrl}${endpoint}`;\n}\n\nexport async function JsonApiGet(params: {\n  classKey: ApiRequestDataTypeInterface;\n  endpoint: string;\n  companyId?: string;\n  language: string;\n  token?: string;\n  baseUrl?: string;\n}): Promise<ApiResponseInterface> {\n  runBootstrapper();\n  const token = params.token ?? (await getToken());\n\n  const apiResponse = await makeRequest({\n    method: \"GET\",\n    url: buildUrl(params.endpoint, params.baseUrl),\n    token,\n    cache: params.classKey.cache,\n    companyId: params.companyId,\n    language: params.language,\n    additionalHeaders: _staticConfig?.additionalHeaders,\n  });\n\n  return translateResponse({\n    classKey: params.classKey,\n    apiResponse,\n    companyId: params.companyId,\n    language: params.language,\n    paginationHandler: async (endpoint: string) =>\n      JsonApiGet({\n        classKey: params.classKey,\n        endpoint,\n        companyId: params.companyId,\n        language: params.language,\n        token: params.token,\n        baseUrl: params.baseUrl,\n      }),\n  });\n}\n\nexport async function JsonApiPost(params: {\n  classKey: ApiRequestDataTypeInterface;\n  endpoint: string;\n  companyId?: string;\n  body?: any;\n  overridesJsonApiCreation?: boolean;\n  files?: { [key: string]: File | Blob } | File | Blob;\n  language: string;\n  responseType?: ApiRequestDataTypeInterface;\n  token?: string;\n  baseUrl?: string;\n}): Promise<ApiResponseInterface> {\n  runBootstrapper();\n  const token = params.token ?? (await getToken());\n\n  let body = params.body;\n  if (!body) {\n    body = {};\n  } else if (params.overridesJsonApiCreation !== true) {\n    body = JsonApiDataFactory.create(params.classKey, body);\n  }\n\n  const apiResponse = await makeRequest({\n    method: \"POST\",\n    url: buildUrl(params.endpoint, params.baseUrl),\n    token,\n    body,\n    files: params.files,\n    companyId: params.companyId,\n    language: params.language,\n    additionalHeaders: _staticConfig?.additionalHeaders,\n  });\n\n  return translateResponse({\n    classKey: params.responseType ?? params.classKey,\n    apiResponse,\n    companyId: params.companyId,\n    language: params.language,\n  });\n}\n\nexport async function JsonApiPut(params: {\n  classKey: ApiRequestDataTypeInterface;\n  endpoint: string;\n  companyId?: string;\n  body?: any;\n  files?: { [key: string]: File | Blob } | File | Blob;\n  language: string;\n  responseType?: ApiRequestDataTypeInterface;\n  token?: string;\n  baseUrl?: string;\n}): Promise<ApiResponseInterface> {\n  runBootstrapper();\n  const token = params.token ?? (await getToken());\n\n  let body = params.body;\n  if (!body) {\n    body = {};\n  } else {\n    body = JsonApiDataFactory.create(params.classKey, body);\n  }\n\n  const apiResponse = await makeRequest({\n    method: \"PUT\",\n    url: buildUrl(params.endpoint, params.baseUrl),\n    token,\n    body,\n    files: params.files,\n    companyId: params.companyId,\n    language: params.language,\n    additionalHeaders: _staticConfig?.additionalHeaders,\n  });\n\n  return translateResponse({\n    classKey: params.responseType ?? params.classKey,\n    apiResponse,\n    companyId: params.companyId,\n    language: params.language,\n  });\n}\n\nexport async function JsonApiPatch(params: {\n  classKey: ApiRequestDataTypeInterface;\n  endpoint: string;\n  companyId?: string;\n  body?: any;\n  files?: { [key: string]: File | Blob } | File | Blob;\n  overridesJsonApiCreation?: boolean;\n  responseType?: ApiRequestDataTypeInterface;\n  language: string;\n  token?: string;\n  baseUrl?: string;\n}): Promise<ApiResponseInterface> {\n  runBootstrapper();\n  const token = params.token ?? (await getToken());\n\n  let body = params.body;\n  if (!body) {\n    body = {};\n  } else if (params.overridesJsonApiCreation !== true) {\n    body = JsonApiDataFactory.create(params.classKey, body);\n  }\n\n  const apiResponse = await makeRequest({\n    method: \"PATCH\",\n    url: buildUrl(params.endpoint, params.baseUrl),\n    token,\n    body,\n    files: params.files,\n    companyId: params.companyId,\n    language: params.language,\n    additionalHeaders: _staticConfig?.additionalHeaders,\n  });\n\n  return translateResponse({\n    classKey: params.responseType ?? params.classKey,\n    apiResponse,\n    companyId: params.companyId,\n    language: params.language,\n  });\n}\n\nexport async function JsonApiDelete(params: {\n  classKey: ApiRequestDataTypeInterface;\n  endpoint: string;\n  companyId?: string;\n  language: string;\n  responseType?: ApiRequestDataTypeInterface;\n  token?: string;\n  baseUrl?: string;\n}): Promise<ApiResponseInterface> {\n  runBootstrapper();\n  const token = params.token ?? (await getToken());\n\n  const apiResponse = await makeRequest({\n    method: \"DELETE\",\n    url: buildUrl(params.endpoint, params.baseUrl),\n    token,\n    companyId: params.companyId,\n    language: params.language,\n    additionalHeaders: _staticConfig?.additionalHeaders,\n  });\n\n  return translateResponse({\n    classKey: params.responseType ?? params.classKey,\n    apiResponse,\n    companyId: params.companyId,\n    language: params.language,\n  });\n}\n"],"mappings":"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","names":[]}