{"version":3,"sources":["../src/provider.ts","../src/debugProvider.ts"],"names":["field","operator","value","resource","variables","meta","query"],"mappings":"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","file":"index.mjs","sourcesContent":["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, fetchExchange, gql } from \"@urql/core\";\nimport pluralize from \"pluralize\";\nimport {\n    ApitoGraphQLError,\n    CustomResponse,\n    ExtendedDataProvider,\n    ResponseType,\n    SingleResponseType\n} from \"./types\";\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 * @returns An HttpError object with appropriate status code and message\n */\nconst handleGraphQLError = (error: CombinedError | undefined): 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        return {\n            message: `Network error: ${error.networkError.message}`,\n            statusCode: 503, // Service Unavailable\n        };\n    }\n\n    // Handle GraphQL errors\n    if (error.graphQLErrors && error.graphQLErrors.length > 0) {\n        const errorMessages = error.graphQLErrors.map(err => err.message).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): ExtendedDataProvider => {\n    const client = new Client({\n        url: apiUrl,\n        exchanges: [fetchExchange],\n        fetchOptions: () => ({ headers: { Authorization: `Bearer ${token}` } }),\n    });\n\n    return {\n        getApiUrl: () => apiUrl,\n        getApiClient: () => {\n            return new Client({\n                url: apiUrl,\n                exchanges: [fetchExchange],\n                fetchOptions: () => ({ headers: { Authorization: `Bearer ${token}` } }),\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 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, variables)\n                        .toPromise();\n\n                    if (response.error) {\n                        return Promise.reject(handleGraphQLError(response.error));\n                    }\n\n                    const queryResponse = response?.data?.[queryKey];\n                    const responseData = (Array.isArray(queryResponse) ? queryResponse as unknown as TData[] : []) 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 pluralResource =\n                        pluralize.plural(resource).charAt(0).toUpperCase() +\n                        pluralize.plural(resource).slice(1);\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\n                            const nestedCondition: Record<string, any> = {};\n                            value.forEach(condition => {\n                                const { field: subField, operator: subOperator, value: subValue } = condition;\n                                if (subField && subOperator && subValue !== undefined) {\n                                    if (!nestedCondition[subField]) {\n                                        nestedCondition[subField] = {};\n                                    }\n                                    nestedCondition[subField][subOperator] = subValue;\n                                }\n                            });\n                            return { [field]: nestedCondition };\n                        }\n\n                        // Handle OR operation\n                        if (operator === 'or' && Array.isArray(value)) {\n                            const orConditions: Record<string, any> = {};\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                                    orConditions[adjustedField] = { [operator]: value };\n                                }\n                            });\n                            return { OR: orConditions };\n                        }\n\n                        // Handle AND operation\n                        if (operator === 'and' && Array.isArray(value)) {\n                            const andConditions: Record<string, any> = {};\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                                    andConditions[adjustedField] = { [operator]: value };\n                                }\n                            });\n                            return { AND: andConditions };\n                        }\n\n                        // Handle regular field filters\n                        if (field === '_key') {\n                            return { _key: { [operator || \"eq\"]: value } };\n                        }\n\n                        if (field && field.includes('relation.')) {\n                            const relationPath = field.replace('relation.', '').split('.');\n                            const relationCondition: 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] = {};\n                                }\n                                current = current[part];\n                            }\n\n                            const lastPart = relationPath[relationPath.length - 1];\n                            if (operator && value !== undefined) {\n                                current[lastPart] = { [operator]: value };\n                            }\n\n                            return { relation: relationCondition };\n                        }\n\n                        if (operator && value !== undefined) {\n                            // Adjust `data.name` to `name`\n                            const adjustedField = field.startsWith(\"data.\")\n                                ? field.replace(\"data.\", \"\")\n                                : field;\n                            return { [adjustedField]: { [operator]: value } };\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                            }\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: ${resource.toUpperCase()}LIST_KEY_CONDITION` : null,\n                        `$connection: ${resource.toUpperCase()}_CONNECTION_FILTER_CONDITION`,\n                        `$where: ${resource.toUpperCase()}LIST_INPUT_WHERE_PAYLOAD`,\n                        hasRelationWhere ? `$relationWhere: ${resource.toUpperCase()}_WHERE_RELATION_FILTER_CONDITION` : null,\n                        hasKey ? `$_keyCount: ${resource.toUpperCase()}LIST_COUNT_KEY_CONDITION` : null,\n                        `$whereCount: ${resource.toUpperCase()}LIST_COUNT_INPUT_WHERE_PAYLOAD`,\n                        hasRelationWhere ? `$relationWhereCount: ${resource.toUpperCase()}_WHERE_RELATION_FILTER_CONDITION` : null,\n                        `$sort: ${resource.toUpperCase()}LIST_INPUT_SORT_PAYLOAD`,\n                        `$page: Int`,\n                        `$limit: Int`,\n                        `$local: LOCAL_TYPE_ENUM`\n                    ].filter(Boolean).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                    ].filter(Boolean).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                    ].filter(Boolean).join(', ');\n\n                    query = gql`\n                        query Get${pluralResource}(\n                            ${queryVariables}\n                        ) {\n                            ${resource}List(${queryArguments}) {\n                                id\n                                data {\n                                    ${fields.join(\"\\n\")}\n                                }\n                                ${Object.keys(connectionFields).map((key) => `${key} { ${connectionFields[key]} }`).join(\"\\n\")}\n                                meta {\n                                    created_at\n                                    status\n                                    updated_at\n                                }\n                            }\n                            ${resource}ListCount(${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(\n                            (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                            {}\n                        ),\n                        page: pagination?.current,\n                        limit: pagination?.pageSize,\n                    };\n\n                    const response = await client\n                        .query<ResponseType>(query, variables)\n                        .toPromise();\n\n                    if (response.error) {\n                        return Promise.reject(handleGraphQLError(response.error));\n                    }\n\n                    data = (response?.data?.[`${resource}List`] ?? []) as unknown as TData[];\n                    total = ('total' in (response?.data?.[`${resource}ListCount`] || {})\n                        ? (response?.data?.[`${resource}ListCount`] as SingleResponseType).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 singularResource = pluralize.singular(resource);\n                const query = gql`\n                  query Get${singularResource.charAt(0).toUpperCase() + singularResource.slice(1)}($id: String!) {\n                      ${singularResource}(_id: $id) {\n                          id\n                          data {\n                              ${fields.join(\"\\n\")}\n                          }\n                          ${Object.keys(connectionFields).map((key) => `${key} { ${connectionFields[key]} }`).join(\"\\n\")}\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(handleGraphQLError(response.error));\n                }\n\n                const data = (response?.data?.[singularResource] ?? {}) 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: (error as Error)?.message || `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, _variables)\n                        .toPromise();\n\n                    if (response.error) {\n                        return Promise.reject(handleGraphQLError(response.error));\n                    }\n\n                    return {\n                        data:\n                            (response?.data?.[\n                                `create${resource.charAt(0).toUpperCase() + resource.slice(1)}`\n                            ] as SingleResponseType)?.data ?? {},\n                    };\n                } else {\n                    try {\n                        const { resource, variables, meta } = params;\n                        const singularResource = pluralize.singular(resource);\n                        const fields = meta?.fields || [\"id\"]; // Fallback to 'id' if fields are not provided\n                        const name =\n                            singularResource.charAt(0).toUpperCase() + singularResource.slice(1);\n\n                        const query = gql`\n                  mutation Create${name}($payload: ${name}_Create_Payload!, $connect: ${name}_Relation_Connect_Payload) {\n                      create${name}(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\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(handleGraphQLError(response.error));\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: (error as Error)?.message || `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: (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 singularResource = pluralize.singular(resource);\n                const fields = meta?.fields || [\"id\"]; // Fallback to 'id' if fields are not provided\n                const name =\n                    singularResource.charAt(0).toUpperCase() + singularResource.slice(1);\n\n                const mutation = gql`\n                  mutation Upsert${name}List($payloads: [${name}List_Upsert_Payload!]!, $connect: ${name}_Relation_Connect_Payload) {\n                      upsert${name}List(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(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(handleGraphQLError(response.error));\n                }\n\n                const data = (response?.data?.[`upsert${name}List`] ?? []) 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: (error as Error)?.message || `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, _variables)\n                        .toPromise();\n\n                    if (response.error) {\n                        return Promise.reject(handleGraphQLError(response.error));\n                    }\n\n                    return {\n                        data:\n                            (response?.data?.[\n                                `update${resource.charAt(0).toUpperCase() + resource.slice(1)}`\n                            ] as SingleResponseType)?.data ?? {},\n                    };\n                } else {\n                    const fields = meta?.fields || [\"id\"]; // Fallback to 'id' if fields are not provided\n                    const singularResource = pluralize.singular(resource);\n                    const name =\n                        singularResource.charAt(0).toUpperCase() + singularResource.slice(1);\n                    query = gql`\n                      mutation Update${name}(\n                          $id: String!, \n                          $payload: ${name}_Update_Payload!, \n                          $connect: ${name}_Relation_Connect_Payload,\n                          $disconnect: ${name}_Relation_Disconnect_Payload\n                      ) {\n                          update${name}(_id: $id, payload: $payload, connect: $connect, disconnect: $disconnect, 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                        payload: (variables as Record<string, any>).data,\n                        connect: (variables as Record<string, any>).connect,\n                        disconnect: (variables as Record<string, any>).disconnect,\n                    };\n                    const response = await client\n                        .mutation<ResponseType>(query, _variables)\n                        .toPromise();\n\n                    if (response.error) {\n                        return Promise.reject(handleGraphQLError(response.error));\n                    }\n\n                    return {\n                        data:\n                            (response?.data?.[\n                                `update${resource.charAt(0).toUpperCase() + resource.slice(1)}`\n                            ] as SingleResponseType)?.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: (error as Error)?.message || `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 singularResource = pluralize.singular(resource);\n                const name =\n                    singularResource.charAt(0).toUpperCase() + singularResource.slice(1);\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(handleGraphQLError(response.error));\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                        (response?.data?.[\n                            `delete${resource.charAt(0).toUpperCase() + resource.slice(1)}`\n                        ] as SingleResponseType)?.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: (error as Error)?.message || `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>(params: CustomParams<any, any>): 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: '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 (variables?.payloads && typeof variables.payloads === 'object' && !Array.isArray(variables.payloads)) {\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, variables)\n                        .toPromise();\n                } else {\n                    response = await client\n                        .mutation<ResponseType>(mutation, variables)\n                        .toPromise();\n                }\n\n                //debugger;\n\n                if (response.error) {\n                    return Promise.reject(handleGraphQLError(response.error));\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: (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; "]}