{"version":3,"sources":["../src/apitoGraphqlNames.ts","../src/provider.ts","../src/debugProvider.ts"],"names":["field","operator","value","resource","variables","meta","query"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Apito model naming aligned with `open-core/utility/apito_naming.go`.\n * Store canonical model ids as snake_case (e.g. `food_order`); derive GraphQL names with pure string ops.\n */\n\nimport { singularize } from 'inflection';\n\nconst singularKeepAsIs = new Set([\n  'news',\n  'data',\n  'media',\n  'analytics',\n  'series',\n  'species',\n]);\n\nconst canonicalIDRe = /^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$/;\n\n/** Same boundary rule as Go `rejectRunOnLowercaseConcat` (len >= 9, all a-z). */\nfunction rejectRunOnLowercaseConcat(raw: string): void {\n  if (/[\\s_\\-]/.test(raw)) return;\n  if (/[a-z][A-Z]/.test(raw)) return;\n  if (!/^[a-z]+$/.test(raw)) return;\n  if (raw.length >= 9) {\n    throw new Error(\n      'model name needs a word boundary between words: use food_order, food-order, foodOrder, or \"food order\"'\n    );\n  }\n}\n\nfunction splitCamelPieces(piece: string): string[] {\n  const spaced = piece.replace(/([a-z0-9])([A-Z])/g, '$1 $2');\n  return spaced\n    .split(/\\s+/)\n    .filter(Boolean)\n    .map((s) => s.replace(/[^a-zA-Z0-9]/g, '').toLowerCase())\n    .filter(Boolean);\n}\n\nfunction splitIntoWordSegments(raw: string): string[] {\n  const normalized = raw.trim().replace(/-/g, '_');\n  const chunks = normalized.split(/[\\s_]+/).filter((c) => c.length > 0);\n  const segments: string[] = [];\n  for (const chunk of chunks) {\n    const lettersOnly = chunk.replace(/[^a-zA-Z0-9]/g, '');\n    const pieces =\n      lettersOnly === chunk ? splitCamelPieces(chunk) : [lettersOnly.toLowerCase()];\n    for (const p of pieces) {\n      const s = p.replace(/[^a-z0-9]/gi, '').toLowerCase();\n      if (s) segments.push(s);\n    }\n  }\n  return segments;\n}\n\nfunction singularizeSegment(seg: string): string {\n  if (singularKeepAsIs.has(seg)) return seg;\n  return singularize(seg);\n}\n\n/**\n * Normalizes admin input to canonical snake_case singular model id (matches Go `CanonicalizeModelName`).\n */\nexport function canonicalizeModelName(raw: string): string {\n  const t = raw.trim();\n  if (!t) throw new Error('model name is required');\n  rejectRunOnLowercaseConcat(t);\n  const segments = splitIntoWordSegments(t);\n  if (segments.length === 0) throw new Error('invalid model name');\n  segments[segments.length - 1] = singularizeSegment(\n    segments[segments.length - 1]!\n  );\n  const out = segments.join('_');\n  if (!canonicalIDRe.test(out)) throw new Error('invalid model name');\n  reservedCheck(out);\n  return out;\n}\n\nfunction reservedCheck(canonical: string): void {\n  switch (canonical) {\n    case 'list':\n      throw new Error(\n        'naming a Model `List` is not allowed. Apito uses List for plural resources.'\n      );\n    case 'user':\n      throw new Error(\n        'naming a Model `User` is protected. Add the Authentication module from Settings.'\n      );\n    case 'system':\n      throw new Error('naming a Model `System` is not allowed.');\n    case 'function':\n      throw new Error('naming a Model `Function` is not allowed.');\n  }\n}\n\n/** lowerCamel from canonical snake (`food_order` → `foodOrder`). */\nexport function camelFromCanonical(canonical: string): string {\n  const parts = canonical.split('_').filter(Boolean);\n  return parts\n    .map((p, i) =>\n      i === 0\n        ? p.toLowerCase()\n        : p.charAt(0).toUpperCase() + p.slice(1).toLowerCase()\n    )\n    .join('');\n}\n\n/** PascalCase without underscores (`food_order` → `FoodOrder`). */\nexport function pascalFromCanonical(canonical: string): string {\n  return canonical\n    .split('_')\n    .filter(Boolean)\n    .map((p) => p.charAt(0).toUpperCase() + p.slice(1).toLowerCase())\n    .join('');\n}\n\n/** Legacy camel id → Pascal (`foodCategory` → `FoodCategory`). */\nexport function pascalFromAnyModelId(modelId: string): string {\n  if (!modelId) return '';\n  if (modelId.includes('_')) return pascalFromCanonical(modelId);\n  const segs = splitCamelPieces(modelId);\n  return segs\n    .map((s) => s.charAt(0).toUpperCase() + s.slice(1).toLowerCase())\n    .join('');\n}\n\nexport function listGraphQLTypeName(modelId: string): string {\n  return `${pascalFromAnyModelId(apitoSingularResourceName(modelId))}List`;\n}\n\n/** Matches Go `GraphQLComposedTypeName` (e.g. `Create_Payload`, `List_Upsert_Payload`). */\nexport function apitoGraphQLComposedTypeName(modelId: string, suffix: string): string {\n  const singular = apitoSingularResourceName(modelId);\n  const suf = suffix.replace(/^_/, '').split('_').filter(Boolean);\n  const modelSegs = singular.includes('_')\n    ? singular.split('_').filter(Boolean)\n    : splitCamelPieces(singular).map((s) => s.toLowerCase());\n  const extra = suf.flatMap((chunk) =>\n    splitCamelPieces(chunk).map((x) => x.toLowerCase())\n  );\n  const all = [...modelSegs, ...extra];\n  return all\n    .map((p) => p.charAt(0).toUpperCase() + p.slice(1).toLowerCase())\n    .join('_');\n}\n\n/**\n * lowerCamel field id for GraphQL root fields — matches Go `utility.SingularResourceName`:\n * trim `List` / `ListCount`, then camel-case the remainder (`CamelFromAny`), **without**\n * English plural→singular inflection (that diverged from the engine and broke variable types).\n */\nexport function apitoSingularResourceName(name: string): string {\n  let t = name.trim();\n  if (t.endsWith('ListCount')) t = t.slice(0, -'ListCount'.length);\n  else if (t.endsWith('List')) t = t.slice(0, -'List'.length);\n  t = t.trim();\n  if (!t) return '';\n  if (t.includes('_')) {\n    return camelFromCanonical(t);\n  }\n  const segs = splitCamelPieces(t);\n  if (segs.length === 0) return t.toLowerCase();\n  return segs\n    .map((s, i) =>\n      i === 0\n        ? s.toLowerCase()\n        : s.charAt(0).toUpperCase() + s.slice(1).toLowerCase()\n    )\n    .join('');\n}\n\nexport const apitoModelName = apitoSingularResourceName;\n\nexport function apitoMultipleResourceName(name: string): string {\n  return `${apitoSingularResourceName(name)}List`;\n}\n\n/**\n * Public GraphQL field name for a **relation** on list/getOne rows (matches engine `attachConnectionFields`):\n * - **has_many** → `{singular}List` (e.g. model `food` → `foodList`), **not** `food`.\n * - **has_one** → lowerCamel singular (e.g. `customer`, `foodCategory`).\n *\n * Use this for `meta.connectionFields` **keys** so the generated selection matches the schema.\n */\nexport function apitoConnectionFieldNameForRelation(\n  relatedModelRef: string,\n  relation: 'has_one' | 'has_many'\n): string {\n  if (relation === 'has_many') {\n    return apitoMultipleResourceName(relatedModelRef);\n  }\n  return apitoSingularResourceName(relatedModelRef);\n}\n\n/**\n * Maps `meta.connectionFields` / `aliasFields` keys and targets to engine GraphQL field names.\n * Unlike {@link apitoSingularResourceName} alone, this does **not** strip a trailing `List` from\n * connection field ids such as **`foodList`** (that strip is for list *operation* names like `foodOrderList` → `foodOrder`).\n */\nexport function apitoGraphqlConnectionFieldFromMetaKey(key: string): string {\n  const k = key.trim();\n  if (!k) return k;\n  if (k.includes('_')) {\n    return apitoSingularResourceName(k);\n  }\n  if (/List$/i.test(k) && !/ListCount$/i.test(k)) {\n    return k.charAt(0).toLowerCase() + k.slice(1);\n  }\n  return apitoSingularResourceName(k);\n}\n\nexport function apitoGraphQLTypeNameForFilterArg(modelId: string): string {\n  return listGraphQLTypeName(modelId);\n}\n\nexport function apitoListGraphQLTypeName(resource: string): string {\n  return listGraphQLTypeName(resource);\n}\n\nexport function apitoListCountGraphQLTypeName(resource: string): string {\n  return apitoGraphQLComposedTypeName(resource, 'List_Count');\n}\n\nexport function apitoSingularGraphQLTypeName(resource: string): string {\n  return pascalFromAnyModelId(apitoSingularResourceName(resource));\n}\n\n/**\n * Stored model id as snake_case (matches engine `Connection.Model` / filter `definedModel.Name`).\n * Use this when building mutation `connect` / `disconnect` keys: `{storedId}_id` / `{storedId}_ids`.\n */\nexport function apitoStoredSnakeModelId(resource: string): string {\n  const singular = apitoSingularResourceName(resource);\n  if (singular.includes('_')) return singular;\n  return splitCamelPieces(singular).join('_');\n}\n\n/** `connect` / `disconnect` field for a has_one relation: `{stored_model_id}_id` (e.g. `food_category_id`). */\nexport function apitoMutationConnectHasOneIdField(relatedModelRef: string): string {\n  return `${apitoStoredSnakeModelId(relatedModelRef)}_id`;\n}\n\n/** `connect` / `disconnect` field for a has_many relation: `{stored_model_id}_ids`. */\nexport function apitoMutationConnectHasManyIdsField(\n  relatedModelRef: string\n): string {\n  return `${apitoStoredSnakeModelId(relatedModelRef)}_ids`;\n}\n\nexport function apitoConnectionFilterConditionType(resource: string): string {\n  return `${apitoStoredSnakeModelId(resource)}_Connection_Filter_Condition`.toUpperCase();\n}\n\nexport function apitoWhereRelationFilterConditionType(resource: string): string {\n  return `${apitoStoredSnakeModelId(resource)}_Where_Relation_Filter_Condition`.toUpperCase();\n}\n\n/**\n * List query `where` / sort / `_key` payload types for `*List` fields (e.g. `FOODORDERLIST_INPUT_WHERE_PAYLOAD`).\n * Do **not** use this for `*ListCount` — use {@link apitoListCountWhereInputType} / {@link apitoListCountSortInputType}.\n */\nexport function apitoWhereInputType(resource: string): string {\n  return `${listGraphQLTypeName(resource)}_Input_Where_Payload`.toUpperCase();\n}\n\nexport function apitoSortInputType(resource: string): string {\n  return `${listGraphQLTypeName(resource)}_Input_Sort_Payload`.toUpperCase();\n}\n\nexport function apitoListKeyConditionType(resource: string): string {\n  return `${listGraphQLTypeName(resource)}_Key_Condition`.toUpperCase();\n}\n\nexport function apitoListCountKeyConditionType(resource: string): string {\n  return `${apitoGraphQLComposedTypeName(resource, 'List_Count')}_Key_Condition`.toUpperCase();\n}\n\n/**\n * `*ListCount` query `where` argument type (e.g. `FOOD_ORDER_LIST_COUNT_INPUT_WHERE_PAYLOAD`).\n * This is **not** `FoodOrderList` + `_Count_*` (wrong: `FOODORDERLIST_COUNT_*`); the engine uses\n * {@link apitoGraphQLComposedTypeName} with suffix `List_Count` (underscores between word segments).\n */\nexport function apitoListCountWhereInputType(resource: string): string {\n  return `${apitoGraphQLComposedTypeName(resource, 'List_Count')}_Input_Where_Payload`.toUpperCase();\n}\n\n/** `*ListCount` query `sort` argument type (e.g. `FOOD_ORDER_LIST_COUNT_INPUT_SORT_PAYLOAD`). */\nexport function apitoListCountSortInputType(resource: string): string {\n  return `${apitoGraphQLComposedTypeName(resource, 'List_Count')}_Input_Sort_Payload`.toUpperCase();\n}\n\n/**\n * Builds nested relation field lines for list/getOne GraphQL selection sets.\n * Normalizes stored snake_case ids and legacy names to the same lowerCamel field names as the Apito engine\n * (`apitoSingularResourceName`), so `aliasFields: { foodCategory: \"food_category\" }` still resolves to `foodCategory`.\n *\n * - `connectionFields` keys are the **client/response key** when `aliasFields` is set; otherwise the key is\n *   normalized to the schema field name.\n * - `aliasFields[key]` when present is the **schema field name** (may be legacy `food_category`); it is normalized.\n * - **has_many** relations use **`{model}List`** on the parent type (e.g. `foodList`), not the singular `food`.\n *   Use {@link apitoConnectionFieldNameForRelation}(..., `'has_many'`) or {@link apitoMultipleResourceName} for keys.\n *   Keys like `foodList` are preserved (see {@link apitoGraphqlConnectionFieldFromMetaKey}).\n */\nexport function formatApitoConnectionSubselections(\n  connectionFields: Record<string, string>,\n  aliasFields: Record<string, string> = {}\n): string {\n  return Object.keys(connectionFields)\n    .map((key) => {\n      const selection = connectionFields[key];\n      const rawTarget = aliasFields[key];\n      const hasExplicitAlias =\n        rawTarget !== undefined &&\n        rawTarget !== null &&\n        String(rawTarget).trim() !== '';\n\n      const targetField = apitoGraphqlConnectionFieldFromMetaKey(\n        hasExplicitAlias ? String(rawTarget).trim() : key\n      );\n\n      if (hasExplicitAlias) {\n        const responseKey = key;\n        if (responseKey === targetField) {\n          return `${targetField} { ${selection} }`;\n        }\n        return `${responseKey}: ${targetField} { ${selection} }`;\n      }\n\n      return `${targetField} { ${selection} }`;\n    })\n    .join('\\n');\n}\n\nexport function buildApitoCreateMutation(\n  resource: string,\n  fields: string[]\n): string {\n  const id = apitoSingularResourceName(resource);\n  const pascal = pascalFromAnyModelId(id);\n  const payload = apitoGraphQLComposedTypeName(id, 'Create_Payload');\n  const rel = apitoGraphQLComposedTypeName(id, 'Relation_Connect_Payload');\n  return `                  mutation Create${pascal}($payload: ${payload}!, $connect: ${rel}) {\n                      create${pascal}(payload: $payload, connect: $connect, status: published) {\n                          id\n                          data {\n                              ${fields.join('\\n')}\n                          }\n                          meta {\n                              created_at\n                              status\n                              updated_at\n                          }\n                      }\n                  }`;\n}\n","import {\n  BaseRecord,\n  CreateManyParams,\n  CreateManyResponse,\n  CreateParams,\n  CreateResponse,\n  CustomParams,\n  GetListParams,\n  GetListResponse,\n  GetOneParams,\n  GetOneResponse,\n  HttpError,\n} from '@refinedev/core';\nimport { Client, CombinedError, cacheExchange, fetchExchange, gql } from '@urql/core';\nimport {\n  apitoConnectionFilterConditionType,\n  apitoGraphQLComposedTypeName,\n  apitoListCountKeyConditionType,\n  apitoListCountWhereInputType,\n  apitoListGraphQLTypeName,\n  apitoListKeyConditionType,\n  apitoMultipleResourceName,\n  apitoSingularGraphQLTypeName,\n  apitoModelName,\n  apitoSortInputType,\n  apitoWhereInputType,\n  apitoWhereRelationFilterConditionType,\n  buildApitoCreateMutation,\n  formatApitoConnectionSubselections,\n} from './apitoGraphqlNames';\nimport {\n  ApitoGraphQLError,\n  CustomResponse,\n  ExtendedDataProvider,\n  ResponseType,\n  SingleResponseType,\n} from './types';\n\n/** Property names that must not come from user-controlled filter input (prototype pollution). */\nconst UNSAFE_DYNAMIC_KEYS = new Set(['__proto__', 'constructor', 'prototype']);\n\nfunction isSafeDynamicKey(key: unknown): key is string {\n  return typeof key === 'string' && key.length > 0 && !UNSAFE_DYNAMIC_KEYS.has(key);\n}\n\n/*\nApito Typical Graphql Error Response:\n{\n\"data\": {\n  \"deleteTestLabel\": null\n},\n\"errors\": [\n  {\n    \"message\": \"there are 1 relations that are using this document, please delete them first\",\n    \"locations\": [\n      {\n        \"line\": 2,\n        \"column\": 3\n      }\n    ],\n    \"path\": [\n      \"deleteTestLabel\"\n    ]\n  }\n]\n}\n*/\n\n/*\nApito Typical Graphql Success Response:\n{\n\"data\": {\n  \"testLabelList\": [\n    {\n      \"data\": {\n        \"description\": {\n          \"text\": null\n        },\n        \"measure_unit\": \"mmol/l\",\n        \"name\": \"Corres. Urine Sugar\",\n        \"reference_range\": \"<7.8 mmol/l\"\n      },\n      \"id\": \"1ac785e3-a190-44a5-bc36-d858df8a3868\",\n      \"meta\": {\n        \"created_at\": \"2025-03-10T08:10:55Z\",\n        \"status\": true,\n        \"updated_at\": \"2025-03-10T08:10:55Z\"\n      }\n    },\n    {\n      \"data\": {\n        \"description\": {\n          \"text\": null\n        },\n        \"measure_unit\": \"mmol/l\",\n        \"name\": \"P Glucose (F)\",\n        \"reference_range\": \"3.6-5.6 mmol/l\"\n      },\n      \"id\": \"0c7e3a18-765c-4fed-a091-768578804fdc\",\n      \"meta\": {\n        \"created_at\": \"2025-03-10T08:10:05Z\",\n        \"status\": true,\n        \"updated_at\": \"2025-03-10T08:10:05Z\"\n      }\n    },\n    {\n      \"data\": {\n        \"description\": {\n          \"text\": null\n        },\n        \"measure_unit\": \"mmol/L\",\n        \"name\": \"T4\",\n        \"reference_range\": \"3.6-5.6 mmol/L\"\n      },\n      \"id\": \"13123014-8bb7-4850-9699-8eb4f0607305\",\n      \"meta\": {\n        \"created_at\": \"2025-02-17T13:32:56Z\",\n        \"status\": true,\n        \"updated_at\": \"2025-02-17T13:32:56Z\"\n      }\n    },\n    {\n      \"data\": {\n        \"description\": {\n          \"text\": null\n        },\n        \"measure_unit\": \"mg/dl\",\n        \"name\": \"S. Creatinine\",\n        \"reference_range\": \"0.6-1.2 mg/dl\"\n      },\n      \"id\": \"c9c9c9c9-c9c9-c9c9-c9c9-c9c9c9c9c9c9\",\n      \"meta\": {\n        \"created_at\": \"2025-02-17T13:32:56Z\",\n        \"status\": true,\n        \"updated_at\": \"2025-02-17T13:32:56Z\"\n      }\n    }\n  ],\n  \"testLabelListCount\": {\n    \"total\": 4\n  }\n}\n}\n*/\n\n/**\n * Handles GraphQL errors from Apito responses\n * @param error The error object from urql client\n * @param onTokenExpired Optional callback for handling 403 token expiration\n * @returns An HttpError object with appropriate status code and message\n */\nconst handleGraphQLError = (\n  error: CombinedError | undefined,\n  onTokenExpired?: () => void\n): HttpError => {\n  if (!error) {\n    return {\n      message: 'Unknown error occurred',\n      statusCode: 500,\n    };\n  }\n\n  // Handle network errors\n  if (error.networkError) {\n    // Check for 403 status in network error\n    const statusCode =\n      (error.networkError as any).statusCode ||\n      (error.networkError as any).status;\n    if (statusCode === 403 || statusCode === 401) {\n      console.log('Token expired (403/401), triggering logout...');\n      onTokenExpired?.();\n      return {\n        message: 'Token expired. Please login again.',\n        statusCode: 403,\n      };\n    }\n\n    return {\n      message: `Network error: ${error.networkError.message}`,\n      statusCode: statusCode || 503, // Service Unavailable\n    };\n  }\n\n  // Handle GraphQL errors\n  if (error.graphQLErrors && error.graphQLErrors.length > 0) {\n    // Check for authentication/authorization errors in GraphQL errors\n    const hasAuthError = error.graphQLErrors.some(\n      (err) =>\n        err.message.toLowerCase().includes('unauthorized') ||\n        err.message.toLowerCase().includes('forbidden') ||\n        err.message.toLowerCase().includes('token') ||\n        err.message.toLowerCase().includes('authentication') ||\n        err.message.toLowerCase().includes('authorization')\n    );\n\n    if (hasAuthError) {\n      console.log(\n        'Authentication error detected in GraphQL, triggering logout...'\n      );\n      onTokenExpired?.();\n      return {\n        message: 'Authentication failed. Please login again.',\n        statusCode: 403,\n      };\n    }\n\n    const errorMessages = error.graphQLErrors\n      .map((err) => err.message)\n      .join(', ');\n    return {\n      message: errorMessages,\n      statusCode: 400, // Bad Request for GraphQL validation errors\n    };\n  }\n\n  // Fallback error\n  return {\n    message: error.message || 'An error occurred during the GraphQL operation',\n    statusCode: 400,\n  };\n};\n\nconst apitoDataProvider = (\n  apiUrl: string,\n  token: string,\n  onTokenExpired?: () => void\n): ExtendedDataProvider => {\n  const client = new Client({\n    url: apiUrl,\n    exchanges: [cacheExchange, fetchExchange],\n    fetchOptions: () => ({\n      method: 'POST',\n      headers: {\n        'Authorization': `Bearer ${token}`,\n        'Content-Type': 'application/json',\n      },\n    }),\n    preferGetMethod: false,\n  });\n\n  return {\n    getApiUrl: () => apiUrl,\n    getApiClient: () => {\n      return new Client({\n        url: apiUrl,\n        exchanges: [cacheExchange, fetchExchange],\n        fetchOptions: () => ({\n          method: 'POST',\n          headers: {\n            'Authorization': `Bearer ${token}`,\n            'Content-Type': 'application/json',\n          },\n        }),\n        preferGetMethod: false,\n      });\n    },\n    getToken: () => token,\n    async getList<TData extends BaseRecord = BaseRecord>(\n      params: GetListParams\n    ): Promise<GetListResponse<TData>> {\n      try {\n        const { resource, filters, sorters, pagination, meta } = params;\n        const connectionFields = meta?.connectionFields || {};\n        const aliasFields = meta?.aliasFields || {};\n        const reverseLookup = meta?.reverseLookup || {};\n\n        let data: TData[] = [];\n        let total = 0;\n\n        let query = null;\n        let variables = null;\n        if (meta?.gqlQuery) {\n          query = meta.gqlQuery;\n          variables = meta.variables;\n          const queryKey = meta.queryKey || resource;\n          const response = await client\n            .query<ResponseType>(query as any, variables)\n            .toPromise();\n\n          if (response.error) {\n            return Promise.reject(\n              handleGraphQLError(response.error, onTokenExpired)\n            );\n          }\n\n          const queryResponse = response?.data?.[queryKey];\n          const responseData = (\n            Array.isArray(queryResponse)\n              ? (queryResponse as unknown as TData[])\n              : []\n          ) as TData[];\n          const responseTotal = responseData.length ?? 0;\n\n          return {\n            data: responseData,\n            total: responseTotal,\n          };\n        } else {\n          const fields = meta?.fields || ['id']; // Fallback to 'id' if fields are not provided\n          const listPascal = apitoListGraphQLTypeName(resource);\n          const pluralResource = listPascal;\n\n          // Helper function to process filters recursively\n          const processFilter = (filter: any): any => {\n            const { field, operator, value } = filter;\n\n            // Handle special case where operator is \"eq\" and value is an array\n            if (operator === 'eq' && Array.isArray(value)) {\n              // Create a nested object structure for this case (null prototype + safe keys)\n              const nestedCondition = Object.create(null) as Record<\n                string,\n                Record<string, unknown>\n              >;\n              value.forEach((condition) => {\n                const {\n                  field: subField,\n                  operator: subOperator,\n                  value: subValue,\n                } = condition;\n                if (\n                  subField &&\n                  subOperator &&\n                  subValue !== undefined &&\n                  isSafeDynamicKey(subField) &&\n                  isSafeDynamicKey(subOperator)\n                ) {\n                  if (!nestedCondition[subField]) {\n                    nestedCondition[subField] = Object.create(null) as Record<\n                      string,\n                      unknown\n                    >;\n                  }\n                  nestedCondition[subField][subOperator] = subValue;\n                }\n              });\n              if (!isSafeDynamicKey(field)) {\n                return {};\n              }\n              return { [field]: nestedCondition };\n            }\n\n            // Handle OR operation\n            if (operator === 'or' && Array.isArray(value)) {\n              const orConditions = Object.create(null) as Record<string, unknown>;\n              value.forEach((condition) => {\n                const { field, operator, value } = condition;\n                if (field && operator && value !== undefined) {\n                  // Adjust `data.name` to `name`\n                  const adjustedField = field.startsWith('data.')\n                    ? field.replace('data.', '')\n                    : field;\n                  if (isSafeDynamicKey(adjustedField) && isSafeDynamicKey(operator)) {\n                    orConditions[adjustedField] = { [operator]: value };\n                  }\n                }\n              });\n              return { OR: orConditions };\n            }\n\n            // Handle AND operation\n            if (operator === 'and' && Array.isArray(value)) {\n              const andConditions = Object.create(null) as Record<string, unknown>;\n              value.forEach((condition) => {\n                const { field, operator, value } = condition;\n                if (field && operator && value !== undefined) {\n                  // Adjust `data.name` to `name`\n                  const adjustedField = field.startsWith('data.')\n                    ? field.replace('data.', '')\n                    : field;\n                  if (isSafeDynamicKey(adjustedField) && isSafeDynamicKey(operator)) {\n                    andConditions[adjustedField] = { [operator]: value };\n                  }\n                }\n              });\n              return { AND: andConditions };\n            }\n\n            // Handle regular field filters\n            if (field === '_key') {\n              const keyOp = operator || 'eq';\n              if (!isSafeDynamicKey(keyOp)) {\n                return {};\n              }\n              return { _key: { [keyOp]: value } };\n            }\n\n            if (field && field.includes('relation.')) {\n              const relationPath = field.replace('relation.', '').split('.');\n              if (!relationPath.length || !relationPath.every(isSafeDynamicKey)) {\n                return {};\n              }\n              const relationCondition = Object.create(null) as Record<string, any>;\n\n              // Build nested object structure\n              let current: Record<string, any> = relationCondition;\n              for (let i = 0; i < relationPath.length - 1; i++) {\n                const part = relationPath[i];\n                if (!current[part]) {\n                  current[part] = Object.create(null) as Record<string, any>;\n                }\n                current = current[part];\n              }\n\n              const lastPart = relationPath[relationPath.length - 1];\n              if (\n                operator &&\n                value !== undefined &&\n                isSafeDynamicKey(lastPart) &&\n                isSafeDynamicKey(operator)\n              ) {\n                current[lastPart] = { [operator]: value };\n              }\n\n              return { relation: relationCondition };\n            }\n\n            if (operator && value !== undefined && typeof field === 'string') {\n              // Adjust `data.name` to `name`\n              const adjustedField = field.startsWith('data.')\n                ? field.replace('data.', '')\n                : field;\n              if (isSafeDynamicKey(adjustedField) && isSafeDynamicKey(operator)) {\n                return { [adjustedField]: { [operator]: value } };\n              }\n            }\n\n            return {};\n          };\n\n          // Process filters\n          let _key = null;\n          let relationWhere: Record<string, any> | null = null;\n          let where: Record<string, any> = {};\n\n          if (filters && filters.length > 0) {\n            filters.forEach((filter) => {\n              const processed = processFilter(filter);\n\n              // Extract _key if present\n              if (processed._key) {\n                _key = processed._key;\n              }\n              // Extract relation if present\n              else if (processed.relation) {\n                if (!relationWhere) {\n                  relationWhere = {};\n                }\n                Object.assign(relationWhere, processed.relation);\n              }\n              // Handle OR/AND conditions\n              else if (processed.OR) {\n                where.OR = processed.OR;\n              } else if (processed.AND) {\n                where.AND = processed.AND;\n              }\n              // Handle regular conditions\n              else {\n                Object.assign(where, processed);\n              }\n            });\n          }\n\n          const hasKey = _key !== null;\n          const hasRelationWhere = relationWhere !== null;\n\n          const queryVariables = [\n            hasKey ? `$_key: ${apitoListKeyConditionType(resource)}` : null,\n            `$connection: ${apitoConnectionFilterConditionType(resource)}`,\n            `$where: ${apitoWhereInputType(resource)}`,\n            hasRelationWhere\n              ? `$relationWhere: ${apitoWhereRelationFilterConditionType(resource)}`\n              : null,\n            hasKey ? `$_keyCount: ${apitoListCountKeyConditionType(resource)}` : null,\n            `$whereCount: ${apitoListCountWhereInputType(resource)}`,\n            hasRelationWhere\n              ? `$relationWhereCount: ${apitoWhereRelationFilterConditionType(resource)}`\n              : null,\n            `$sort: ${apitoSortInputType(resource)}`,\n            `$page: Int`,\n            `$limit: Int`,\n            `$local: LOCAL_TYPE_ENUM`,\n          ]\n            .filter(Boolean)\n            .join('\\n');\n\n          const queryArguments = [\n            hasKey ? '_key: $_key' : null,\n            'connection: $connection',\n            'where: $where',\n            hasRelationWhere ? 'relation: $relationWhere' : null,\n            'sort: $sort',\n            'page: $page',\n            'limit: $limit',\n            'local: $local',\n          ]\n            .filter(Boolean)\n            .join(', ');\n\n          const countArguments = [\n            hasKey ? '_key: $_keyCount' : null,\n            'connection: $connection',\n            'where: $whereCount',\n            hasRelationWhere ? 'relation: $relationWhereCount' : null,\n            'page: $page',\n            'limit: $limit',\n          ]\n            .filter(Boolean)\n            .join(', ');\n\n          query = gql`\n                        query Get${pluralResource}(\n                            ${queryVariables}\n                        ) {\n                            ${apitoMultipleResourceName(resource)}(${queryArguments}) {\n                                id\n                                data {\n                                    ${fields.join('\\n')}\n                                }\n                                ${formatApitoConnectionSubselections(connectionFields, aliasFields)}\n                                meta {\n                                    created_at\n                                    status\n                                    updated_at\n                                }\n                            }\n                            ${apitoMultipleResourceName(resource)}Count(${countArguments}) {\n                                total\n                            }\n                        }\n                    `;\n\n          variables = {\n            ...(hasKey && { _key: _key }),\n            connection: reverseLookup || {},\n            where: where || {},\n            ...(hasRelationWhere && { relationWhere: relationWhere }),\n            whereCount: where || {},\n            ...(hasKey && { _keyCount: _key }),\n            ...(hasRelationWhere && { relationWhereCount: relationWhere }),\n            sort: sorters?.reduce((acc: Record<string, any>, sorter: any) => {\n              const { field, order } = sorter;\n              if (field && order) {\n                acc[field] = order.toUpperCase(); // Convert to ASC/DESC\n              }\n              return acc;\n            }, {}),\n            page: pagination?.currentPage || 1,\n            limit: pagination?.pageSize || 10,\n          };\n\n          const response = await client\n            .query<ResponseType>(query as any, variables)\n            .toPromise();\n\n          if (response.error) {\n            return Promise.reject(\n              handleGraphQLError(response.error, onTokenExpired)\n            );\n          }\n\n          const listRoot = apitoMultipleResourceName(resource);\n          data = (response?.data?.[listRoot] ?? []) as unknown as TData[];\n          total =\n            'total' in (response?.data?.[`${listRoot}Count`] || {})\n              ? (response?.data?.[`${listRoot}Count`] as SingleResponseType)\n                .total\n              : 0;\n        }\n\n        return {\n          data: data,\n          total: total,\n        };\n      } catch (error) {\n        if ((error as any).statusCode !== undefined) {\n          return Promise.reject(error);\n        }\n\n        const httpError: HttpError = {\n          message: (error as Error)?.message || 'Failed to fetch list data',\n          statusCode: 500,\n        };\n        return Promise.reject(httpError);\n      }\n    },\n\n    async getOne<TData extends BaseRecord = BaseRecord>(\n      params: GetOneParams\n    ): Promise<GetOneResponse<TData>> {\n      try {\n        const { resource, id, meta } = params;\n        const fields = meta?.fields || ['id']; // Fallback to 'id' if fields are not provided\n        const connectionFields = meta?.connectionFields || {};\n        const aliasFields = meta?.aliasFields || {};\n        const singularField = apitoModelName(resource);\n        const singularPascal = apitoSingularGraphQLTypeName(resource);\n        const query = gql`\n                  query Get${singularPascal}($id: String!) {\n                      ${singularField}(_id: $id) {\n                          id\n                          data {\n                              ${fields.join('\\n')}\n                          }\n                          ${formatApitoConnectionSubselections(connectionFields, aliasFields)}\n                          meta {\n                              created_at\n                              status\n                              updated_at\n                          }\n                      }\n                  }\n              `;\n\n        const response = await client\n          .query<ResponseType>(query, { id })\n          .toPromise();\n\n        if (response.error) {\n          return Promise.reject(\n            handleGraphQLError(response.error, onTokenExpired)\n          );\n        }\n\n        const data = (response?.data?.[singularField] ?? {}) as TData;\n\n        return {\n          data: data,\n        };\n      } catch (error) {\n        if ((error as any).statusCode !== undefined) {\n          return Promise.reject(error);\n        }\n\n        const httpError: HttpError = {\n          message:\n            (error as Error)?.message ||\n            `Failed to fetch ${params.resource} with id ${params.id}`,\n          statusCode: 500,\n        };\n        return Promise.reject(httpError);\n      }\n    },\n\n    async create<TData extends BaseRecord = BaseRecord, TVariables = any>(\n      params: CreateParams<TVariables>\n    ): Promise<CreateResponse<TData>> {\n      try {\n        const { resource, variables, meta } = params;\n        let query = null;\n        let _variables = null;\n        if (meta?.gqlMutation) {\n          query = meta.gqlMutation;\n          if (variables) {\n            _variables = variables;\n          } else {\n            _variables = meta.variables;\n          }\n          const response = await client\n            .mutation<ResponseType>(query as any, _variables)\n            .toPromise();\n\n          if (response.error) {\n            return Promise.reject(handleGraphQLError(response.error));\n          }\n\n          return {\n            data:\n              (\n                response?.data?.[\n                `create${apitoSingularGraphQLTypeName(resource)}`\n                ] as SingleResponseType\n              )?.data ?? {},\n          };\n        } else {\n          try {\n            const { resource, variables, meta } = params;\n            const fields = (meta?.fields || ['id']) as string[]; // Fallback to 'id' if fields are not provided\n            const name = apitoSingularGraphQLTypeName(resource);\n\n            const query = gql(buildApitoCreateMutation(resource, fields));\n\n            const variableData = variables as Record<string, any>;\n\n            const response = await client\n              .mutation<ResponseType>(query, {\n                payload: variableData.data,\n                connect: variableData.connect,\n              })\n              .toPromise();\n\n            if (response.error) {\n              return Promise.reject(\n                handleGraphQLError(response.error, onTokenExpired)\n              );\n            }\n\n            const data = (response?.data?.[`create${name}`] ?? {}) as TData;\n            return { data: data };\n          } catch (error) {\n            if ((error as any).statusCode !== undefined) {\n              return Promise.reject(error);\n            }\n\n            const httpError: HttpError = {\n              message:\n                (error as Error)?.message ||\n                `Failed to create ${params.resource}`,\n              statusCode: 500,\n            };\n            return Promise.reject(httpError);\n          }\n        }\n      } catch (error) {\n        if ((error as any).statusCode !== undefined) {\n          return Promise.reject(error);\n        }\n\n        const httpError: HttpError = {\n          message:\n            (error as Error)?.message || `Failed to create ${params.resource}`,\n          statusCode: 500,\n        };\n        return Promise.reject(httpError);\n      }\n    },\n\n    async createMany<TData extends BaseRecord = BaseRecord, TVariables = any>(\n      params: CreateManyParams<TVariables>\n    ): Promise<CreateManyResponse<TData>> {\n      try {\n        const { resource, variables, meta } = params;\n        const fields = meta?.fields || ['id']; // Fallback to 'id' if fields are not provided\n        const listPascal = apitoListGraphQLTypeName(resource);\n        const upsertPayloadType = apitoGraphQLComposedTypeName(\n          resource,\n          'List_Upsert_Payload'\n        );\n        const listConnectType = apitoGraphQLComposedTypeName(\n          resource,\n          'Relation_Connect_Payload'\n        );\n\n        const mutation = gql`\n                  mutation Upsert${listPascal}($payloads: [${upsertPayloadType}!]!, $connect: ${listConnectType}) {\n                      upsert${listPascal}(payloads: $payloads, connect: $connect, status: published) {\n                          id\n                          data {\n                              ${fields.join('\\n')}\n                          }\n                          meta {\n                              created_at\n                              status\n                              updated_at\n                          }\n                      }\n                  }\n              `;\n\n        // Clean up the array by filtering out empty objects, null, or undefined values\n        const variableData = Array.isArray(variables)\n          ? (variables as any[]).filter(\n            (item) =>\n              item !== null &&\n              item !== undefined &&\n              (typeof item !== 'object' || Object.keys(item).length > 0)\n          )\n          : (variables as Record<string, any>);\n\n        const response = await client\n          .mutation<ResponseType>(mutation, {\n            payloads: variableData,\n            //connect: variableData.connect,\n          })\n          .toPromise();\n\n        if (response.error) {\n          return Promise.reject(\n            handleGraphQLError(response.error, onTokenExpired)\n          );\n        }\n\n        const data = (response?.data?.[`upsert${listPascal}`] ??\n          []) as unknown as TData[];\n        return { data: data };\n      } catch (error) {\n        if ((error as any).statusCode !== undefined) {\n          return Promise.reject(error);\n        }\n\n        const httpError: HttpError = {\n          message:\n            (error as Error)?.message ||\n            `Failed to create multiple ${params.resource} records`,\n          statusCode: 500,\n        };\n        return Promise.reject(httpError);\n      }\n    },\n\n    async update({ resource, id, variables, meta }) {\n      try {\n        let query = null;\n        let _variables = null;\n        if (meta?.gqlMutation) {\n          query = meta.gqlMutation;\n          if (variables) {\n            _variables = variables;\n          } else {\n            _variables = meta.variables;\n          }\n          const response = await client\n            .mutation<ResponseType>(query as any, _variables)\n            .toPromise();\n\n          if (response.error) {\n            return Promise.reject(handleGraphQLError(response.error));\n          }\n\n          return {\n            data:\n              (\n                response?.data?.[\n                `update${apitoSingularGraphQLTypeName(resource)}`\n                ] as SingleResponseType\n              )?.data ?? {},\n          };\n        } else {\n          const fields = meta?.fields || ['id']; // Fallback to 'id' if fields are not provided\n          const deltaUpdate = meta?.deltaUpdate || false;\n          const includeRelations = meta?.relation !== false;\n          const name = apitoSingularGraphQLTypeName(resource);\n          const updatePayload = apitoGraphQLComposedTypeName(resource, 'Update_Payload');\n          const relConn = apitoGraphQLComposedTypeName(\n            resource,\n            'Relation_Connect_Payload'\n          );\n          const relDis = apitoGraphQLComposedTypeName(\n            resource,\n            'Relation_Disconnect_Payload'\n          );\n          const relationVarDefs = includeRelations\n            ? `,\n                          $connect: ${relConn},\n                          $disconnect: ${relDis}`\n            : '';\n          const relationArgs = includeRelations\n            ? `, connect: $connect, disconnect: $disconnect`\n            : '';\n          query = gql`\n                      mutation Update${name}(\n                          $id: String!,\n                          $deltaUpdate: Boolean,\n                          $payload: ${updatePayload}!${relationVarDefs}\n                      ) {\n                          update${name}(_id: $id, deltaUpdate: $deltaUpdate, payload: $payload${relationArgs}, status: published) {\n                              id\n                              data {\n                                  ${fields.join('\\n')}\n                              }\n                              meta {\n                                  created_at\n                                  status\n                                  updated_at\n                              }\n                          }\n                      }\n                  `;\n          _variables = {\n            id: id,\n            deltaUpdate: deltaUpdate,\n            payload: (variables as Record<string, any>).data,\n          };\n          if (includeRelations) {\n            (_variables as Record<string, any>).connect = (\n              variables as Record<string, any>\n            ).connect;\n            (_variables as Record<string, any>).disconnect = (\n              variables as Record<string, any>\n            ).disconnect;\n          }\n          const response = await client\n            .mutation<ResponseType>(query as any, _variables)\n            .toPromise();\n\n          if (response.error) {\n            return Promise.reject(\n              handleGraphQLError(response.error, onTokenExpired)\n            );\n          }\n\n          return {\n            data:\n              (\n                response?.data?.[`update${name}`] as SingleResponseType\n              )?.data ?? {},\n          };\n        }\n      } catch (error) {\n        if ((error as any).statusCode !== undefined) {\n          return Promise.reject(error);\n        }\n\n        const httpError: HttpError = {\n          message:\n            (error as Error)?.message ||\n            `Failed to update ${resource} with id ${id}`,\n          statusCode: 500,\n        };\n        return Promise.reject(httpError);\n      }\n    },\n\n    async deleteOne({ resource, id }) {\n      try {\n        const name = apitoSingularGraphQLTypeName(resource);\n\n        const query = gql`\n                  mutation Delete${name}($ids: [String]!) {\n                      delete${name}(_ids: $ids) {\n                          response\n                      }\n                  }\n              `;\n\n        const response = await client\n          .mutation<ResponseType>(query, { ids: [id] })\n          .toPromise();\n\n        // Check for GraphQL errors in the response\n        if (response.error) {\n          return Promise.reject(\n            handleGraphQLError(response.error, onTokenExpired)\n          );\n        }\n\n        // Check for errors in the data response (Apito specific error format)\n        if (response.data?.errors && Array.isArray(response.data.errors)) {\n          const errorMessages = (response.data.errors as ApitoGraphQLError[])\n            .map((err) => err.message)\n            .join(', ');\n\n          const httpError: HttpError = {\n            message: errorMessages,\n            statusCode: 400,\n          };\n          return Promise.reject(httpError);\n        }\n\n        return {\n          data:\n            (\n              response?.data?.[`delete${name}`] as SingleResponseType\n            )?.data ?? {},\n        };\n      } catch (error) {\n        if ((error as any).statusCode !== undefined) {\n          return Promise.reject(error);\n        }\n\n        const httpError: HttpError = {\n          message:\n            (error as Error)?.message ||\n            `Failed to delete ${resource} with id ${id}`,\n          statusCode: 500,\n        };\n        return Promise.reject(httpError);\n      }\n    },\n\n    async custom<TData extends BaseRecord = BaseRecord>(\n      params: CustomParams<any, any>\n    ): Promise<CustomResponse<TData>> {\n      try {\n        const query = params?.meta?.gqlQuery;\n        const mutation = params?.meta?.gqlMutation;\n        let variables = params?.meta?.gqlVariables;\n\n        if (query && mutation) {\n          const httpError: HttpError = {\n            message:\n              'Query and mutation cannot both be provided for custom operation',\n            statusCode: 400,\n          };\n          return Promise.reject(httpError);\n        }\n\n        if (!query && !mutation) {\n          const httpError: HttpError = {\n            message: 'Query or mutation is required for custom operation',\n            statusCode: 400,\n          };\n          return Promise.reject(httpError);\n        }\n\n        const { filters } = params;\n        // Transform filters into a `where` object\n        const where = filters?.reduce(\n          (acc: Record<string, any>, filter: any) => {\n            const { field, operator, value } = filter;\n            if (operator && value !== undefined) {\n              // Adjust `data.name` to `name`\n              const adjustedField = field.startsWith('data.')\n                ? field.replace('data.', '')\n                : field;\n              acc[adjustedField] = { [operator || 'eq']: value };\n            }\n            return acc;\n          },\n          {}\n        );\n\n        if (where) {\n          variables = {\n            ...variables,\n            where: where || {},\n          };\n        }\n\n        // Convert payloads object with numeric keys to array\n        if (\n          variables?.payloads &&\n          typeof variables.payloads === 'object' &&\n          !Array.isArray(variables.payloads)\n        ) {\n          variables = {\n            ...variables,\n            payloads: Object.values(variables.payloads),\n          };\n        }\n\n        //debugger;\n\n        let response = null;\n        if (query) {\n          response = await client\n            .query<ResponseType>(query as any, variables)\n            .toPromise();\n        } else if (mutation) {\n          response = await client\n            .mutation<ResponseType>(mutation as any, variables)\n            .toPromise();\n        } else {\n          throw new Error('No query or mutation provided');\n        }\n\n        //debugger;\n\n        if (response.error) {\n          return Promise.reject(\n            handleGraphQLError(response.error, onTokenExpired)\n          );\n        }\n\n        // Check for errors in the data response (Apito specific error format)\n        if (response.data?.errors && Array.isArray(response.data.errors)) {\n          const errorMessages = (response.data.errors as ApitoGraphQLError[])\n            .map((err) => err.message)\n            .join(', ');\n\n          const httpError: HttpError = {\n            message: errorMessages,\n            statusCode: 400,\n          };\n          return Promise.reject(httpError);\n        }\n\n        //debugger;\n\n        return {\n          data: response?.data as TData,\n        };\n      } catch (error) {\n        if ((error as any).statusCode !== undefined) {\n          return Promise.reject(error);\n        }\n\n        const httpError: HttpError = {\n          message:\n            (error as Error)?.message || 'Failed to execute custom operation',\n          statusCode: 500,\n        };\n        return Promise.reject(httpError);\n      }\n    },\n  };\n};\n\nexport default apitoDataProvider;\n","import apitoDataProvider from './provider';\nimport {\n    BaseRecord,\n    GetListParams,\n    GetOneParams,\n    CreateParams,\n    CreateManyParams,\n    UpdateParams,\n    DeleteOneParams,\n    CustomParams\n} from \"@refinedev/core\";\nimport { ExtendedDataProvider } from './types';\n\n/**\n * A debug version of the Apito data provider that logs all method calls and their parameters.\n * This makes it easier to debug when the library is imported into another project.\n */\nconst debugApitoDataProvider = (\n    apiUrl: string,\n    token: string\n): ExtendedDataProvider => {\n    // Get the original provider\n    const provider = apitoDataProvider(apiUrl, token);\n\n    // Create a wrapped version with logging\n    return {\n        ...provider,\n\n        // Utility methods\n        getApiUrl: () => {\n            console.log('[Apito Debug] getApiUrl called');\n            return provider.getApiUrl();\n        },\n\n        getApiClient: () => {\n            console.log('[Apito Debug] getApiClient called');\n            return provider.getApiClient();\n        },\n\n        getToken: () => {\n            console.log('[Apito Debug] getToken called');\n            return provider.getToken();\n        },\n\n        // Data provider methods\n        getList: async <TData extends BaseRecord = BaseRecord>(params: GetListParams) => {\n            console.log('[Apito Debug] getList called with params:', JSON.stringify(params, null, 2));\n            try {\n                const result = await provider.getList<TData>(params);\n                console.log('[Apito Debug] getList result:', JSON.stringify({\n                    total: result.total,\n                    data: result.data.length > 0 ? `${result.data.length} items` : 'empty array'\n                }, null, 2));\n                return result;\n            } catch (error) {\n                console.error('[Apito Debug] getList error:', error);\n                throw error;\n            }\n        },\n\n        getOne: async <TData extends BaseRecord = BaseRecord>(params: GetOneParams) => {\n            console.log('[Apito Debug] getOne called with params:', JSON.stringify(params, null, 2));\n            try {\n                const result = await provider.getOne<TData>(params);\n                console.log('[Apito Debug] getOne result:', JSON.stringify({\n                    id: result.data.id\n                }, null, 2));\n                return result;\n            } catch (error) {\n                console.error('[Apito Debug] getOne error:', error);\n                throw error;\n            }\n        },\n\n        create: async <TData extends BaseRecord = BaseRecord, TVariables = any>(params: CreateParams<TVariables>) => {\n            console.log('[Apito Debug] create called with params:', JSON.stringify(params, null, 2));\n            try {\n                const result = await provider.create<TData, TVariables>(params);\n                console.log('[Apito Debug] create result:', JSON.stringify({\n                    id: result.data.id\n                }, null, 2));\n                return result;\n            } catch (error) {\n                console.error('[Apito Debug] create error:', error);\n                throw error;\n            }\n        },\n\n        createMany: async <TData extends BaseRecord = BaseRecord, TVariables = any>(\n            params: CreateManyParams<TVariables>\n        ): Promise<{ data: TData[] }> => {\n            console.log('[Apito Debug] createMany called with params:', JSON.stringify(params, null, 2));\n            try {\n                // Use type assertion to tell TypeScript that createMany exists\n                const createManyFn = provider.createMany as any;\n                const result = await createManyFn(params);\n                console.log('[Apito Debug] createMany result:', JSON.stringify({\n                    count: Array.isArray(result.data) ? result.data.length : 0\n                }, null, 2));\n                return result as { data: TData[] };\n            } catch (error) {\n                console.error('[Apito Debug] createMany error:', error);\n                throw error;\n            }\n        },\n\n        update: async <TVariables = any>(params: UpdateParams<TVariables>) => {\n            console.log('[Apito Debug] update called with params:', JSON.stringify(params, null, 2));\n            try {\n                const result = await provider.update(params);\n                console.log('[Apito Debug] update result:', JSON.stringify(result, null, 2));\n                return result as any;\n            } catch (error) {\n                console.error('[Apito Debug] update error:', error);\n                throw error;\n            }\n        },\n\n        deleteOne: async <TVariables = any>(params: DeleteOneParams<TVariables>) => {\n            console.log('[Apito Debug] deleteOne called with params:', JSON.stringify(params, null, 2));\n            try {\n                const result = await provider.deleteOne(params);\n                console.log('[Apito Debug] deleteOne result:', JSON.stringify(result, null, 2));\n                return result as any;\n            } catch (error) {\n                console.error('[Apito Debug] deleteOne error:', error);\n                throw error;\n            }\n        },\n\n        custom: async (params: CustomParams<any, any>) => {\n            console.log('[Apito Debug] custom called with params:', JSON.stringify(params, null, 2));\n            try {\n                // Use type assertion to tell TypeScript that custom exists\n                const customFn = provider.custom as any;\n                const result = await customFn(params);\n                console.log('[Apito Debug] custom result:', JSON.stringify(result, null, 2));\n                return result;\n            } catch (error) {\n                console.error('[Apito Debug] custom error:', error);\n                throw error;\n            }\n        },\n    };\n};\n\nexport default debugApitoDataProvider; "]}