@elqnt/entity 2.1.2 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +70 -19
- package/dist/api/index.d.mts +17 -2
- package/dist/api/index.d.ts +17 -2
- package/dist/api/index.js +4 -2
- package/dist/api/index.js.map +1 -1
- package/dist/api/index.mjs +3 -1
- package/dist/chunk-5BPHCJ2G.js +427 -0
- package/dist/chunk-5BPHCJ2G.js.map +1 -0
- package/dist/{chunk-SXBB42DJ.js → chunk-6SB5QDL5.js} +10 -2
- package/dist/chunk-6SB5QDL5.js.map +1 -0
- package/dist/chunk-F7ZN7FHI.mjs +427 -0
- package/dist/chunk-F7ZN7FHI.mjs.map +1 -0
- package/dist/{chunk-UHASYUCH.mjs → chunk-SHMUKUYC.mjs} +10 -2
- package/dist/{chunk-UHASYUCH.mjs.map → chunk-SHMUKUYC.mjs.map} +1 -1
- package/dist/hooks/index.d.mts +113 -18
- package/dist/hooks/index.d.ts +113 -18
- package/dist/hooks/index.js +13 -3
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +14 -4
- package/dist/index.d.mts +5 -5
- package/dist/index.d.ts +5 -5
- package/dist/index.js +3 -147
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -146
- package/dist/index.mjs.map +1 -1
- package/dist/models/index.js +108 -73
- package/dist/models/index.js.map +1 -1
- package/dist/models/index.mjs +108 -73
- package/dist/models/index.mjs.map +1 -1
- package/dist/use-entities-CC3WhBDv.d.ts +45 -0
- package/dist/use-entities-gK_B9I2n.d.mts +45 -0
- package/package.json +15 -13
- package/dist/chunk-4GC36G4D.js +0 -184
- package/dist/chunk-4GC36G4D.js.map +0 -1
- package/dist/chunk-GQJJP4YL.js +0 -204
- package/dist/chunk-GQJJP4YL.js.map +0 -1
- package/dist/chunk-JEDTIUWW.mjs +0 -204
- package/dist/chunk-JEDTIUWW.mjs.map +0 -1
- package/dist/chunk-LIACJMHV.mjs +0 -184
- package/dist/chunk-LIACJMHV.mjs.map +0 -1
- package/dist/chunk-SXBB42DJ.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/eloquent/eloquent/packages/@elqnt/entity/dist/chunk-5BPHCJ2G.js","../hooks/use-entity-definitions.ts","../hooks/use-async.ts","../hooks/use-options-ref.ts","../hooks/use-entity-records.ts","../hooks/use-entities.ts"],"names":["useMemo","useState","useCallback"],"mappings":"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","file":"/home/runner/work/eloquent/eloquent/packages/@elqnt/entity/dist/chunk-5BPHCJ2G.js","sourcesContent":[null,"\"use client\";\n\n/**\n * Entity definition hooks for React applications\n *\n * Provides React hooks for entity definition CRUD operations with loading/error states.\n */\n\nimport { useMemo } from \"react\";\nimport type { ApiClientOptions } from \"@elqnt/api-client\";\nimport type { EntityDefinition } from \"../models\";\nimport {\n listEntityDefinitionsApi,\n getEntityDefinitionApi,\n createEntityDefinitionApi,\n updateEntityDefinitionApi,\n deleteEntityDefinitionApi,\n} from \"../api\";\nimport { useApiAsync } from \"./use-async\";\nimport { useOptionsRef } from \"./use-options-ref\";\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\nexport type UseEntityDefinitionsOptions = ApiClientOptions;\n\n// =============================================================================\n// USE ENTITY DEFINITIONS HOOK\n// =============================================================================\n\n/**\n * Hook for entity definition CRUD operations\n *\n * @example\n * ```tsx\n * const { loading, error, listDefinitions, getDefinition, createDefinition } = useEntityDefinitions({\n * baseUrl: apiGatewayUrl,\n * orgId: selectedOrgId,\n * });\n *\n * const definitions = await listDefinitions();\n * const definition = await getDefinition(\"contacts\");\n * const newDef = await createDefinition({ name: \"leads\", title: \"Leads\" });\n * ```\n */\nexport function useEntityDefinitions(options: UseEntityDefinitionsOptions) {\n const optionsRef = useOptionsRef(options);\n\n const { execute: listDefinitions, loading: listLoading, error: listError } = useApiAsync(\n () => listEntityDefinitionsApi(optionsRef.current),\n (data) => data.definitions || [],\n [] as EntityDefinition[]\n );\n\n const { execute: getDefinition, loading: getLoading, error: getError } = useApiAsync(\n (entityName: string) => getEntityDefinitionApi(entityName, optionsRef.current),\n (data) => data.definition || null,\n null as EntityDefinition | null\n );\n\n const { execute: createDefinition, loading: createLoading, error: createError } = useApiAsync(\n (definition: Partial<EntityDefinition>) =>\n createEntityDefinitionApi(definition, optionsRef.current),\n (data) => data.definition || null,\n null as EntityDefinition | null\n );\n\n const { execute: updateDefinition, loading: updateLoading, error: updateError } = useApiAsync(\n (entityName: string, definition: Partial<EntityDefinition>) =>\n updateEntityDefinitionApi(entityName, definition, optionsRef.current),\n (data) => data.definition || null,\n null as EntityDefinition | null\n );\n\n const { execute: deleteDefinition, loading: deleteLoading, error: deleteError } = useApiAsync(\n (entityName: string) => deleteEntityDefinitionApi(entityName, optionsRef.current),\n (data) => data.success,\n false\n );\n\n const loading = listLoading || getLoading || createLoading || updateLoading || deleteLoading;\n const error = listError || getError || createError || updateError || deleteError;\n\n return useMemo(\n () => ({\n loading,\n error,\n listDefinitions,\n getDefinition,\n createDefinition,\n updateDefinition,\n deleteDefinition,\n }),\n [loading, error, listDefinitions, getDefinition, createDefinition, updateDefinition, deleteDefinition]\n );\n}\n","\"use client\";\n\n/**\n * Async operation hooks with loading/error state management\n */\n\nimport { useState, useCallback } from \"react\";\nimport type { ApiResponse } from \"@elqnt/api-client\";\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\nexport interface UseAsyncOptions {\n /** Reset error on new request */\n resetErrorOnRequest?: boolean;\n}\n\nexport interface UseAsyncReturn<TArgs extends unknown[], TResult> {\n execute: (...args: TArgs) => Promise<TResult>;\n loading: boolean;\n error: string | null;\n}\n\n// =============================================================================\n// USE ASYNC HOOK\n// =============================================================================\n\n/**\n * Generic async operation hook with loading/error states\n *\n * @example\n * ```tsx\n * const { execute: fetchUser, loading, error } = useAsync(\n * (userId: string) => getUserApi(userId, options),\n * (data) => data.user,\n * null\n * );\n *\n * const user = await fetchUser(\"user-123\");\n * ```\n */\nexport function useAsync<TArgs extends unknown[], TData, TResult>(\n asyncFn: (...args: TArgs) => Promise<ApiResponse<TData>>,\n transform: (data: TData) => TResult,\n defaultValue: TResult,\n options: UseAsyncOptions = {}\n): UseAsyncReturn<TArgs, TResult> {\n const { resetErrorOnRequest = true } = options;\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const execute = useCallback(\n async (...args: TArgs): Promise<TResult> => {\n setLoading(true);\n if (resetErrorOnRequest) {\n setError(null);\n }\n\n try {\n const response = await asyncFn(...args);\n\n if (response.error) {\n setError(response.error);\n return defaultValue;\n }\n\n if (!response.data) {\n return defaultValue;\n }\n\n return transform(response.data);\n } catch (err) {\n const message = err instanceof Error ? err.message : \"An error occurred\";\n setError(message);\n return defaultValue;\n } finally {\n setLoading(false);\n }\n },\n [asyncFn, transform, defaultValue, resetErrorOnRequest]\n );\n\n return { execute, loading, error };\n}\n\n/**\n * Simplified async hook for API operations\n *\n * @example\n * ```tsx\n * const { execute: getUsers, loading, error } = useApiAsync(\n * () => listUsersApi(optionsRef.current),\n * (data) => data.users,\n * []\n * );\n * ```\n */\nexport function useApiAsync<TArgs extends unknown[], TData, TResult>(\n asyncFn: (...args: TArgs) => Promise<ApiResponse<TData>>,\n transform: (data: TData) => TResult,\n defaultValue: TResult\n): UseAsyncReturn<TArgs, TResult> {\n return useAsync(asyncFn, transform, defaultValue);\n}\n","\"use client\";\n\n/**\n * Options ref hook for stable callback references\n *\n * Keeps options in a ref to avoid stale closures in callbacks\n * while maintaining referential stability.\n */\n\nimport { useRef, useEffect } from \"react\";\n\n/**\n * Hook that keeps options in a ref for stable callback access\n *\n * @example\n * ```tsx\n * const optionsRef = useOptionsRef({ baseUrl, orgId });\n *\n * const fetchData = useCallback(async () => {\n * // Always accesses latest options without recreating callback\n * await api.fetch(optionsRef.current);\n * }, []); // No dependencies needed\n * ```\n */\nexport function useOptionsRef<T>(options: T) {\n const optionsRef = useRef(options);\n\n useEffect(() => {\n optionsRef.current = options;\n }, [options]);\n\n return optionsRef;\n}\n","\"use client\";\n\n/**\n * Entity record hooks for React applications\n *\n * Provides React hooks for entity record CRUD operations with loading/error states.\n */\n\nimport { useMemo } from \"react\";\nimport type { ApiClientOptions } from \"@elqnt/api-client\";\nimport type { EntityRecord } from \"../models\";\nimport {\n queryEntityRecordsApi,\n getEntityRecordApi,\n createEntityRecordApi,\n updateEntityRecordApi,\n deleteEntityRecordApi,\n countEntityRecordsApi,\n bulkCreateEntityRecordsApi,\n bulkUpdateEntityRecordsApi,\n bulkDeleteEntityRecordsApi,\n} from \"../api\";\nimport { useApiAsync } from \"./use-async\";\nimport { useOptionsRef } from \"./use-options-ref\";\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\nexport interface UseEntityRecordsOptions extends ApiClientOptions {\n /** Entity name to operate on */\n entityName: string;\n}\n\nexport interface QueryRecordsParams {\n page?: number;\n pageSize?: number;\n filters?: Record<string, unknown>;\n sortBy?: string;\n sortOrder?: \"asc\" | \"desc\";\n}\n\nexport interface QueryRecordsResult {\n records: EntityRecord[];\n total: number;\n page: number;\n pageSize: number;\n}\n\nexport interface BulkOperationResult {\n records?: EntityRecord[];\n success: boolean;\n}\n\n// =============================================================================\n// USE ENTITY RECORDS HOOK\n// =============================================================================\n\n/**\n * Hook for entity record CRUD operations\n *\n * @example\n * ```tsx\n * const {\n * loading, error,\n * queryRecords, getRecord, createRecord, updateRecord, deleteRecord,\n * countRecords, bulkCreate, bulkUpdate, bulkDelete\n * } = useEntityRecords({\n * baseUrl: apiGatewayUrl,\n * orgId: selectedOrgId,\n * entityName: \"contacts\",\n * });\n *\n * const { records, total } = await queryRecords({ page: 1, pageSize: 20 });\n * const record = await getRecord(\"record-id\");\n * const count = await countRecords({ status: \"active\" });\n * ```\n */\nexport function useEntityRecords(options: UseEntityRecordsOptions) {\n const optionsRef = useOptionsRef(options);\n\n const getEntityName = () => optionsRef.current.entityName;\n const getApiOptions = (): ApiClientOptions => {\n const { entityName: _, ...apiOptions } = optionsRef.current;\n return apiOptions;\n };\n\n const { execute: queryRecords, loading: queryLoading, error: queryError } = useApiAsync(\n (params?: QueryRecordsParams) => {\n const queryParams: Record<string, unknown> = {\n page: params?.page || 1,\n pageSize: params?.pageSize || 20,\n };\n if (params?.filters) {\n queryParams.filters = JSON.stringify(params.filters);\n }\n if (params?.sortBy) {\n queryParams.sortBy = params.sortBy;\n }\n if (params?.sortOrder) {\n queryParams.sortOrder = params.sortOrder;\n }\n return queryEntityRecordsApi(getEntityName(), queryParams, getApiOptions());\n },\n (data): QueryRecordsResult => {\n // Handle both direct records array and nested ListResult structure\n if (data?.records?.items) {\n return {\n records: data.records.items,\n total: data.records.totalCount,\n page: data.records.currentPage,\n pageSize: data.records.pageSize,\n };\n }\n // Fallback for simpler response structure\n return {\n records: (data as any)?.records || [],\n total: (data as any)?.total || 0,\n page: (data as any)?.page || 1,\n pageSize: (data as any)?.pageSize || 20,\n };\n },\n { records: [], total: 0, page: 1, pageSize: 20 } as QueryRecordsResult\n );\n\n const { execute: getRecord, loading: getLoading, error: getError } = useApiAsync(\n (recordId: string) => getEntityRecordApi(getEntityName(), recordId, getApiOptions()),\n (data) => data.record || null,\n null as EntityRecord | null\n );\n\n const { execute: createRecord, loading: createLoading, error: createError } = useApiAsync(\n (record: Partial<EntityRecord>) => createEntityRecordApi(getEntityName(), record, getApiOptions()),\n (data) => data.record || null,\n null as EntityRecord | null\n );\n\n const { execute: updateRecord, loading: updateLoading, error: updateError } = useApiAsync(\n (recordId: string, record: Partial<EntityRecord>) =>\n updateEntityRecordApi(getEntityName(), recordId, record, getApiOptions()),\n (data) => data.record || null,\n null as EntityRecord | null\n );\n\n const { execute: deleteRecord, loading: deleteLoading, error: deleteError } = useApiAsync(\n (recordId: string) => deleteEntityRecordApi(getEntityName(), recordId, getApiOptions()),\n (data) => data.success,\n false\n );\n\n const { execute: countRecords, loading: countLoading, error: countError } = useApiAsync(\n (filters?: Record<string, unknown>) =>\n countEntityRecordsApi(getEntityName(), filters || {}, getApiOptions()),\n (data) => data.count,\n 0\n );\n\n const { execute: bulkCreate, loading: bulkCreateLoading, error: bulkCreateError } = useApiAsync(\n (records: Partial<EntityRecord>[]) =>\n bulkCreateEntityRecordsApi(getEntityName(), records, getApiOptions()),\n (data): BulkOperationResult => ({ records: data.records, success: true }),\n { success: false } as BulkOperationResult\n );\n\n const { execute: bulkUpdate, loading: bulkUpdateLoading, error: bulkUpdateError } = useApiAsync(\n (records: Partial<EntityRecord>[]) =>\n bulkUpdateEntityRecordsApi(getEntityName(), records, getApiOptions()),\n (data): BulkOperationResult => ({ records: data.records, success: true }),\n { success: false } as BulkOperationResult\n );\n\n const { execute: bulkDelete, loading: bulkDeleteLoading, error: bulkDeleteError } = useApiAsync(\n (recordIds: string[]) =>\n bulkDeleteEntityRecordsApi(getEntityName(), recordIds, getApiOptions()),\n (data) => data.success,\n false\n );\n\n const loading =\n queryLoading || getLoading || createLoading || updateLoading || deleteLoading ||\n countLoading || bulkCreateLoading || bulkUpdateLoading || bulkDeleteLoading;\n\n const error =\n queryError || getError || createError || updateError || deleteError ||\n countError || bulkCreateError || bulkUpdateError || bulkDeleteError;\n\n return useMemo(\n () => ({\n loading,\n error,\n queryRecords,\n getRecord,\n createRecord,\n updateRecord,\n deleteRecord,\n countRecords,\n bulkCreate,\n bulkUpdate,\n bulkDelete,\n }),\n [\n loading, error,\n queryRecords, getRecord, createRecord, updateRecord, deleteRecord,\n countRecords, bulkCreate, bulkUpdate, bulkDelete,\n ]\n );\n}\n","\"use client\";\n\n/**\n * Entity hooks for React applications\n *\n * Provides React hooks for entity CRUD operations with loading/error states.\n */\n\nimport { useState, useCallback } from \"react\";\nimport type { ApiClientOptions } from \"@elqnt/api-client\";\nimport type { EntityDefinition, EntityRecord } from \"../models\";\nimport {\n listEntityDefinitionsApi,\n getEntityDefinitionApi,\n queryEntityRecordsApi,\n getEntityRecordApi,\n createEntityRecordApi,\n updateEntityRecordApi,\n deleteEntityRecordApi,\n} from \"../api\";\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\nexport type UseEntitiesOptions = ApiClientOptions;\n\nexport interface QueryOptions {\n page?: number;\n pageSize?: number;\n filters?: Record<string, unknown>;\n sortBy?: string;\n sortOrder?: \"asc\" | \"desc\";\n}\n\nexport interface QueryResult {\n records: EntityRecord[];\n total: number;\n page: number;\n pageSize: number;\n}\n\n// =============================================================================\n// USE ENTITIES HOOK\n// =============================================================================\n\n/**\n * Hook for entity CRUD operations\n *\n * @example\n * ```tsx\n * const { loading, error, queryRecords, createRecord } = useEntities({\n * baseUrl: apiGatewayUrl,\n * orgId: selectedOrgId,\n * userId: user?.id,\n * userEmail: user?.email,\n * });\n *\n * const records = await queryRecords(\"contacts\", { page: 1, pageSize: 20 });\n * ```\n */\nexport function useEntities(options: UseEntitiesOptions) {\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const listDefinitions = useCallback(async (): Promise<EntityDefinition[]> => {\n setLoading(true);\n setError(null);\n try {\n const response = await listEntityDefinitionsApi(options);\n if (response.error) {\n setError(response.error);\n return [];\n }\n return response.data?.definitions || [];\n } catch (err) {\n const message = err instanceof Error ? err.message : \"Failed to load definitions\";\n setError(message);\n return [];\n } finally {\n setLoading(false);\n }\n }, [options]);\n\n const getDefinition = useCallback(\n async (entityName: string): Promise<EntityDefinition | null> => {\n setLoading(true);\n setError(null);\n try {\n const response = await getEntityDefinitionApi(entityName, options);\n if (response.error) {\n setError(response.error);\n return null;\n }\n return response.data?.definition || null;\n } catch (err) {\n const message = err instanceof Error ? err.message : \"Failed to get definition\";\n setError(message);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [options]\n );\n\n const queryRecords = useCallback(\n async (entityName: string, query: QueryOptions = {}): Promise<QueryResult> => {\n setLoading(true);\n setError(null);\n try {\n const queryParams: Record<string, unknown> = {\n page: query.page || 1,\n pageSize: query.pageSize || 20,\n };\n if (query.filters) {\n queryParams.filters = JSON.stringify(query.filters);\n }\n if (query.sortBy) {\n queryParams.sortBy = query.sortBy;\n }\n if (query.sortOrder) {\n queryParams.sortOrder = query.sortOrder;\n }\n\n const response = await queryEntityRecordsApi(entityName, queryParams, options);\n if (response.error) {\n setError(response.error);\n return { records: [], total: 0, page: 1, pageSize: 20 };\n }\n\n // Handle both direct records array and nested ListResult structure\n const data = response.data;\n if (data?.records?.items) {\n // ListEntityRecordsResponse with ListResult\n return {\n records: data.records.items,\n total: data.records.totalCount,\n page: data.records.currentPage,\n pageSize: data.records.pageSize,\n };\n }\n // Fallback for simpler response structure\n return {\n records: (data as any)?.records || [],\n total: (data as any)?.total || 0,\n page: (data as any)?.page || 1,\n pageSize: (data as any)?.pageSize || 20,\n };\n } catch (err) {\n const message = err instanceof Error ? err.message : \"Failed to query records\";\n setError(message);\n return { records: [], total: 0, page: 1, pageSize: 20 };\n } finally {\n setLoading(false);\n }\n },\n [options]\n );\n\n const getRecord = useCallback(\n async (entityName: string, recordId: string): Promise<EntityRecord | null> => {\n setLoading(true);\n setError(null);\n try {\n const response = await getEntityRecordApi(entityName, recordId, options);\n if (response.error) {\n setError(response.error);\n return null;\n }\n return response.data?.record || null;\n } catch (err) {\n const message = err instanceof Error ? err.message : \"Failed to get record\";\n setError(message);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [options]\n );\n\n const createRecord = useCallback(\n async (entityName: string, record: Partial<EntityRecord>): Promise<EntityRecord | null> => {\n setLoading(true);\n setError(null);\n try {\n const response = await createEntityRecordApi(entityName, record, options);\n if (response.error) {\n setError(response.error);\n return null;\n }\n return response.data?.record || null;\n } catch (err) {\n const message = err instanceof Error ? err.message : \"Failed to create record\";\n setError(message);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [options]\n );\n\n const updateRecord = useCallback(\n async (\n entityName: string,\n recordId: string,\n record: Partial<EntityRecord>\n ): Promise<EntityRecord | null> => {\n setLoading(true);\n setError(null);\n try {\n const response = await updateEntityRecordApi(entityName, recordId, record, options);\n if (response.error) {\n setError(response.error);\n return null;\n }\n return response.data?.record || null;\n } catch (err) {\n const message = err instanceof Error ? err.message : \"Failed to update record\";\n setError(message);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [options]\n );\n\n const deleteRecord = useCallback(\n async (entityName: string, recordId: string): Promise<boolean> => {\n setLoading(true);\n setError(null);\n try {\n const response = await deleteEntityRecordApi(entityName, recordId, options);\n if (response.error) {\n setError(response.error);\n return false;\n }\n return true;\n } catch (err) {\n const message = err instanceof Error ? err.message : \"Failed to delete record\";\n setError(message);\n return false;\n } finally {\n setLoading(false);\n }\n },\n [options]\n );\n\n return {\n loading,\n error,\n listDefinitions,\n getDefinition,\n queryRecords,\n getRecord,\n createRecord,\n updateRecord,\n deleteRecord,\n };\n}\n"]}
|
|
@@ -60,6 +60,14 @@ async function countEntityRecordsApi(entityName, filters, options) {
|
|
|
60
60
|
const endpoint = `/api/v1/entities/${entityName}/records/count${queryString ? `?${queryString}` : ""}`;
|
|
61
61
|
return _browser.browserApiRequest.call(void 0, endpoint, { method: "GET", ...options });
|
|
62
62
|
}
|
|
63
|
+
async function provisionEntitiesApi(definitions, options) {
|
|
64
|
+
return _browser.browserApiRequest.call(void 0, "/api/v1/admin/entities/update", {
|
|
65
|
+
method: "POST",
|
|
66
|
+
body: { definitions },
|
|
67
|
+
...options
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
|
|
63
71
|
|
|
64
72
|
|
|
65
73
|
|
|
@@ -76,5 +84,5 @@ async function countEntityRecordsApi(entityName, filters, options) {
|
|
|
76
84
|
|
|
77
85
|
|
|
78
86
|
|
|
79
|
-
exports.listEntityDefinitionsApi = listEntityDefinitionsApi; exports.getEntityDefinitionApi = getEntityDefinitionApi; exports.createEntityDefinitionApi = createEntityDefinitionApi; exports.updateEntityDefinitionApi = updateEntityDefinitionApi; exports.deleteEntityDefinitionApi = deleteEntityDefinitionApi; exports.queryEntityRecordsApi = queryEntityRecordsApi; exports.getEntityRecordApi = getEntityRecordApi; exports.createEntityRecordApi = createEntityRecordApi; exports.updateEntityRecordApi = updateEntityRecordApi; exports.deleteEntityRecordApi = deleteEntityRecordApi; exports.bulkCreateEntityRecordsApi = bulkCreateEntityRecordsApi; exports.bulkUpdateEntityRecordsApi = bulkUpdateEntityRecordsApi; exports.bulkDeleteEntityRecordsApi = bulkDeleteEntityRecordsApi; exports.countEntityRecordsApi = countEntityRecordsApi;
|
|
80
|
-
//# sourceMappingURL=chunk-
|
|
87
|
+
exports.listEntityDefinitionsApi = listEntityDefinitionsApi; exports.getEntityDefinitionApi = getEntityDefinitionApi; exports.createEntityDefinitionApi = createEntityDefinitionApi; exports.updateEntityDefinitionApi = updateEntityDefinitionApi; exports.deleteEntityDefinitionApi = deleteEntityDefinitionApi; exports.queryEntityRecordsApi = queryEntityRecordsApi; exports.getEntityRecordApi = getEntityRecordApi; exports.createEntityRecordApi = createEntityRecordApi; exports.updateEntityRecordApi = updateEntityRecordApi; exports.deleteEntityRecordApi = deleteEntityRecordApi; exports.bulkCreateEntityRecordsApi = bulkCreateEntityRecordsApi; exports.bulkUpdateEntityRecordsApi = bulkUpdateEntityRecordsApi; exports.bulkDeleteEntityRecordsApi = bulkDeleteEntityRecordsApi; exports.countEntityRecordsApi = countEntityRecordsApi; exports.provisionEntitiesApi = provisionEntitiesApi;
|
|
88
|
+
//# sourceMappingURL=chunk-6SB5QDL5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/eloquent/eloquent/packages/@elqnt/entity/dist/chunk-6SB5QDL5.js","../api/index.ts"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACA;ACKA,oDAAkC;AAgBlC,MAAA,SAAsB,wBAAA,CACpB,OAAA,EACqD;AACrD,EAAA,OAAO,wCAAA,8BAAkB,EAAgC,EAAE,MAAA,EAAQ,KAAA,EAAO,GAAG,QAAQ,CAAC,CAAA;AACxF;AAEA,MAAA,SAAsB,sBAAA,CACpB,UAAA,EACA,OAAA,EACgD;AAChD,EAAA,OAAO,wCAAA,CAAkB,6BAAA,EAAgC,UAAU,CAAA,CAAA;AACrE;AAKkD;AACmB,EAAA;AACrE;AAKE;AAEmE,EAAA;AACrE;AAK0E;AACL,EAAA;AACrE;AAUmD;AACd,EAAA;AACa,EAAA;AACH,IAAA;AACZ,MAAA;AAC/B,IAAA;AACD,EAAA;AACmC,EAAA;AACsB,EAAA;AACM,EAAA;AAClE;AAM8C;AACuB,EAAA;AACrE;AAM8C;AACuB,EAAA;AACrE;AAME;AAEmE,EAAA;AACrE;AAM0E;AACL,EAAA;AACrE;AASE;AAEuD,EAAA;AACzD;AAKE;AAEuD,EAAA;AACzD;AAKE;AAEuD,EAAA;AACzD;AAUuE;AAClC,EAAA;AACe,EAAA;AACL,IAAA;AACZ,MAAA;AAC/B,IAAA;AACD,EAAA;AACmC,EAAA;AAC4B,EAAA;AACA,EAAA;AAClE;AAwBmD;AACS,EAAA;AAChD,IAAA;AACY,IAAA;AACjB,IAAA;AACJ,EAAA;AACH;ADtHsE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/eloquent/eloquent/packages/@elqnt/entity/dist/chunk-6SB5QDL5.js","sourcesContent":[null,"/**\n * Entity API functions\n *\n * Browser-side API client for entity operations.\n * Uses @elqnt/api-client for HTTP requests with automatic token management.\n */\n\nimport { browserApiRequest } from \"@elqnt/api-client/browser\";\nimport type { ApiResponse, ApiClientOptions } from \"@elqnt/api-client\";\nimport type { ResponseMetadata } from \"@elqnt/types\";\nimport type {\n EntityDefinition,\n EntityRecord,\n ListEntityDefinitionsResponse,\n EntityDefinitionResponse,\n ListEntityRecordsResponse,\n EntityRecordResponse,\n} from \"../models\";\n\n// =============================================================================\n// ENTITY DEFINITIONS\n// =============================================================================\n\nexport async function listEntityDefinitionsApi(\n options: ApiClientOptions\n): Promise<ApiResponse<ListEntityDefinitionsResponse>> {\n return browserApiRequest(\"/api/v1/entities/definitions\", { method: \"GET\", ...options });\n}\n\nexport async function getEntityDefinitionApi(\n entityName: string,\n options: ApiClientOptions\n): Promise<ApiResponse<EntityDefinitionResponse>> {\n return browserApiRequest(`/api/v1/entities/definitions/${entityName}`, { method: \"GET\", ...options });\n}\n\nexport async function createEntityDefinitionApi(\n definition: Partial<EntityDefinition>,\n options: ApiClientOptions\n): Promise<ApiResponse<EntityDefinitionResponse>> {\n return browserApiRequest(\"/api/v1/entities/definitions\", { method: \"POST\", body: definition, ...options });\n}\n\nexport async function updateEntityDefinitionApi(\n entityName: string,\n definition: Partial<EntityDefinition>,\n options: ApiClientOptions\n): Promise<ApiResponse<EntityDefinitionResponse>> {\n return browserApiRequest(`/api/v1/entities/definitions/${entityName}`, { method: \"PUT\", body: definition, ...options });\n}\n\nexport async function deleteEntityDefinitionApi(\n entityName: string,\n options: ApiClientOptions\n): Promise<ApiResponse<{ success: boolean; metadata: ResponseMetadata }>> {\n return browserApiRequest(`/api/v1/entities/definitions/${entityName}`, { method: \"DELETE\", ...options });\n}\n\n// =============================================================================\n// ENTITY RECORDS\n// =============================================================================\n\nexport async function queryEntityRecordsApi(\n entityName: string,\n query: Record<string, unknown>,\n options: ApiClientOptions\n): Promise<ApiResponse<ListEntityRecordsResponse>> {\n const params = new URLSearchParams();\n Object.entries(query).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n params.set(key, String(value));\n }\n });\n const queryString = params.toString();\n const endpoint = `/api/v1/entities/${entityName}/records${queryString ? `?${queryString}` : \"\"}`;\n return browserApiRequest(endpoint, { method: \"GET\", ...options });\n}\n\nexport async function getEntityRecordApi(\n entityName: string,\n recordId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<EntityRecordResponse>> {\n return browserApiRequest(`/api/v1/entities/${entityName}/records/${recordId}`, { method: \"GET\", ...options });\n}\n\nexport async function createEntityRecordApi(\n entityName: string,\n record: Partial<EntityRecord>,\n options: ApiClientOptions\n): Promise<ApiResponse<EntityRecordResponse>> {\n return browserApiRequest(`/api/v1/entities/${entityName}/records`, { method: \"POST\", body: record, ...options });\n}\n\nexport async function updateEntityRecordApi(\n entityName: string,\n recordId: string,\n record: Partial<EntityRecord>,\n options: ApiClientOptions\n): Promise<ApiResponse<EntityRecordResponse>> {\n return browserApiRequest(`/api/v1/entities/${entityName}/records/${recordId}`, { method: \"PUT\", body: record, ...options });\n}\n\nexport async function deleteEntityRecordApi(\n entityName: string,\n recordId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<{ success: boolean; metadata: ResponseMetadata }>> {\n return browserApiRequest(`/api/v1/entities/${entityName}/records/${recordId}`, { method: \"DELETE\", ...options });\n}\n\n// =============================================================================\n// BULK OPERATIONS\n// =============================================================================\n\nexport async function bulkCreateEntityRecordsApi(\n entityName: string,\n records: Partial<EntityRecord>[],\n options: ApiClientOptions\n): Promise<ApiResponse<{ records: EntityRecord[]; metadata: ResponseMetadata }>> {\n return browserApiRequest(`/api/v1/entities/${entityName}/records/bulk`, { method: \"POST\", body: { records }, ...options });\n}\n\nexport async function bulkUpdateEntityRecordsApi(\n entityName: string,\n records: Partial<EntityRecord>[],\n options: ApiClientOptions\n): Promise<ApiResponse<{ records: EntityRecord[]; metadata: ResponseMetadata }>> {\n return browserApiRequest(`/api/v1/entities/${entityName}/records/bulk`, { method: \"PUT\", body: { records }, ...options });\n}\n\nexport async function bulkDeleteEntityRecordsApi(\n entityName: string,\n recordIds: string[],\n options: ApiClientOptions\n): Promise<ApiResponse<{ success: boolean; metadata: ResponseMetadata }>> {\n return browserApiRequest(`/api/v1/entities/${entityName}/records/bulk`, { method: \"DELETE\", body: { recordIds }, ...options });\n}\n\n// =============================================================================\n// COUNT\n// =============================================================================\n\nexport async function countEntityRecordsApi(\n entityName: string,\n filters: Record<string, unknown>,\n options: ApiClientOptions\n): Promise<ApiResponse<{ count: number; metadata: ResponseMetadata }>> {\n const params = new URLSearchParams();\n Object.entries(filters).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n params.set(key, String(value));\n }\n });\n const queryString = params.toString();\n const endpoint = `/api/v1/entities/${entityName}/records/count${queryString ? `?${queryString}` : \"\"}`;\n return browserApiRequest(endpoint, { method: \"GET\", ...options });\n}\n\n// =============================================================================\n// PROVISIONING\n// =============================================================================\n\nexport interface ProvisionEntitiesResponse {\n created: number;\n updated: number;\n errors: string[];\n success: boolean;\n metadata: ResponseMetadata;\n}\n\n/**\n * Provision entity definitions for an organization.\n * Creates or updates entity definitions in bulk.\n *\n * @param definitions - Array of EntityDefinition to provision\n * @param options - API client options (baseUrl, orgId)\n */\nexport async function provisionEntitiesApi(\n definitions: EntityDefinition[],\n options: ApiClientOptions\n): Promise<ApiResponse<ProvisionEntitiesResponse>> {\n return browserApiRequest(\"/api/v1/admin/entities/update\", {\n method: \"POST\",\n body: { definitions },\n ...options,\n });\n}\n"]}
|
|
@@ -0,0 +1,427 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
bulkCreateEntityRecordsApi,
|
|
4
|
+
bulkDeleteEntityRecordsApi,
|
|
5
|
+
bulkUpdateEntityRecordsApi,
|
|
6
|
+
countEntityRecordsApi,
|
|
7
|
+
createEntityDefinitionApi,
|
|
8
|
+
createEntityRecordApi,
|
|
9
|
+
deleteEntityDefinitionApi,
|
|
10
|
+
deleteEntityRecordApi,
|
|
11
|
+
getEntityDefinitionApi,
|
|
12
|
+
getEntityRecordApi,
|
|
13
|
+
listEntityDefinitionsApi,
|
|
14
|
+
queryEntityRecordsApi,
|
|
15
|
+
updateEntityDefinitionApi,
|
|
16
|
+
updateEntityRecordApi
|
|
17
|
+
} from "./chunk-SHMUKUYC.mjs";
|
|
18
|
+
|
|
19
|
+
// hooks/use-entity-definitions.ts
|
|
20
|
+
import { useMemo } from "react";
|
|
21
|
+
|
|
22
|
+
// hooks/use-async.ts
|
|
23
|
+
import { useState, useCallback } from "react";
|
|
24
|
+
function useAsync(asyncFn, transform, defaultValue, options = {}) {
|
|
25
|
+
const { resetErrorOnRequest = true } = options;
|
|
26
|
+
const [loading, setLoading] = useState(false);
|
|
27
|
+
const [error, setError] = useState(null);
|
|
28
|
+
const execute = useCallback(
|
|
29
|
+
async (...args) => {
|
|
30
|
+
setLoading(true);
|
|
31
|
+
if (resetErrorOnRequest) {
|
|
32
|
+
setError(null);
|
|
33
|
+
}
|
|
34
|
+
try {
|
|
35
|
+
const response = await asyncFn(...args);
|
|
36
|
+
if (response.error) {
|
|
37
|
+
setError(response.error);
|
|
38
|
+
return defaultValue;
|
|
39
|
+
}
|
|
40
|
+
if (!response.data) {
|
|
41
|
+
return defaultValue;
|
|
42
|
+
}
|
|
43
|
+
return transform(response.data);
|
|
44
|
+
} catch (err) {
|
|
45
|
+
const message = err instanceof Error ? err.message : "An error occurred";
|
|
46
|
+
setError(message);
|
|
47
|
+
return defaultValue;
|
|
48
|
+
} finally {
|
|
49
|
+
setLoading(false);
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
[asyncFn, transform, defaultValue, resetErrorOnRequest]
|
|
53
|
+
);
|
|
54
|
+
return { execute, loading, error };
|
|
55
|
+
}
|
|
56
|
+
function useApiAsync(asyncFn, transform, defaultValue) {
|
|
57
|
+
return useAsync(asyncFn, transform, defaultValue);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// hooks/use-options-ref.ts
|
|
61
|
+
import { useRef, useEffect } from "react";
|
|
62
|
+
function useOptionsRef(options) {
|
|
63
|
+
const optionsRef = useRef(options);
|
|
64
|
+
useEffect(() => {
|
|
65
|
+
optionsRef.current = options;
|
|
66
|
+
}, [options]);
|
|
67
|
+
return optionsRef;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// hooks/use-entity-definitions.ts
|
|
71
|
+
function useEntityDefinitions(options) {
|
|
72
|
+
const optionsRef = useOptionsRef(options);
|
|
73
|
+
const { execute: listDefinitions, loading: listLoading, error: listError } = useApiAsync(
|
|
74
|
+
() => listEntityDefinitionsApi(optionsRef.current),
|
|
75
|
+
(data) => data.definitions || [],
|
|
76
|
+
[]
|
|
77
|
+
);
|
|
78
|
+
const { execute: getDefinition, loading: getLoading, error: getError } = useApiAsync(
|
|
79
|
+
(entityName) => getEntityDefinitionApi(entityName, optionsRef.current),
|
|
80
|
+
(data) => data.definition || null,
|
|
81
|
+
null
|
|
82
|
+
);
|
|
83
|
+
const { execute: createDefinition, loading: createLoading, error: createError } = useApiAsync(
|
|
84
|
+
(definition) => createEntityDefinitionApi(definition, optionsRef.current),
|
|
85
|
+
(data) => data.definition || null,
|
|
86
|
+
null
|
|
87
|
+
);
|
|
88
|
+
const { execute: updateDefinition, loading: updateLoading, error: updateError } = useApiAsync(
|
|
89
|
+
(entityName, definition) => updateEntityDefinitionApi(entityName, definition, optionsRef.current),
|
|
90
|
+
(data) => data.definition || null,
|
|
91
|
+
null
|
|
92
|
+
);
|
|
93
|
+
const { execute: deleteDefinition, loading: deleteLoading, error: deleteError } = useApiAsync(
|
|
94
|
+
(entityName) => deleteEntityDefinitionApi(entityName, optionsRef.current),
|
|
95
|
+
(data) => data.success,
|
|
96
|
+
false
|
|
97
|
+
);
|
|
98
|
+
const loading = listLoading || getLoading || createLoading || updateLoading || deleteLoading;
|
|
99
|
+
const error = listError || getError || createError || updateError || deleteError;
|
|
100
|
+
return useMemo(
|
|
101
|
+
() => ({
|
|
102
|
+
loading,
|
|
103
|
+
error,
|
|
104
|
+
listDefinitions,
|
|
105
|
+
getDefinition,
|
|
106
|
+
createDefinition,
|
|
107
|
+
updateDefinition,
|
|
108
|
+
deleteDefinition
|
|
109
|
+
}),
|
|
110
|
+
[loading, error, listDefinitions, getDefinition, createDefinition, updateDefinition, deleteDefinition]
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// hooks/use-entity-records.ts
|
|
115
|
+
import { useMemo as useMemo2 } from "react";
|
|
116
|
+
function useEntityRecords(options) {
|
|
117
|
+
const optionsRef = useOptionsRef(options);
|
|
118
|
+
const getEntityName = () => optionsRef.current.entityName;
|
|
119
|
+
const getApiOptions = () => {
|
|
120
|
+
const { entityName: _, ...apiOptions } = optionsRef.current;
|
|
121
|
+
return apiOptions;
|
|
122
|
+
};
|
|
123
|
+
const { execute: queryRecords, loading: queryLoading, error: queryError } = useApiAsync(
|
|
124
|
+
(params) => {
|
|
125
|
+
const queryParams = {
|
|
126
|
+
page: params?.page || 1,
|
|
127
|
+
pageSize: params?.pageSize || 20
|
|
128
|
+
};
|
|
129
|
+
if (params?.filters) {
|
|
130
|
+
queryParams.filters = JSON.stringify(params.filters);
|
|
131
|
+
}
|
|
132
|
+
if (params?.sortBy) {
|
|
133
|
+
queryParams.sortBy = params.sortBy;
|
|
134
|
+
}
|
|
135
|
+
if (params?.sortOrder) {
|
|
136
|
+
queryParams.sortOrder = params.sortOrder;
|
|
137
|
+
}
|
|
138
|
+
return queryEntityRecordsApi(getEntityName(), queryParams, getApiOptions());
|
|
139
|
+
},
|
|
140
|
+
(data) => {
|
|
141
|
+
if (data?.records?.items) {
|
|
142
|
+
return {
|
|
143
|
+
records: data.records.items,
|
|
144
|
+
total: data.records.totalCount,
|
|
145
|
+
page: data.records.currentPage,
|
|
146
|
+
pageSize: data.records.pageSize
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
return {
|
|
150
|
+
records: data?.records || [],
|
|
151
|
+
total: data?.total || 0,
|
|
152
|
+
page: data?.page || 1,
|
|
153
|
+
pageSize: data?.pageSize || 20
|
|
154
|
+
};
|
|
155
|
+
},
|
|
156
|
+
{ records: [], total: 0, page: 1, pageSize: 20 }
|
|
157
|
+
);
|
|
158
|
+
const { execute: getRecord, loading: getLoading, error: getError } = useApiAsync(
|
|
159
|
+
(recordId) => getEntityRecordApi(getEntityName(), recordId, getApiOptions()),
|
|
160
|
+
(data) => data.record || null,
|
|
161
|
+
null
|
|
162
|
+
);
|
|
163
|
+
const { execute: createRecord, loading: createLoading, error: createError } = useApiAsync(
|
|
164
|
+
(record) => createEntityRecordApi(getEntityName(), record, getApiOptions()),
|
|
165
|
+
(data) => data.record || null,
|
|
166
|
+
null
|
|
167
|
+
);
|
|
168
|
+
const { execute: updateRecord, loading: updateLoading, error: updateError } = useApiAsync(
|
|
169
|
+
(recordId, record) => updateEntityRecordApi(getEntityName(), recordId, record, getApiOptions()),
|
|
170
|
+
(data) => data.record || null,
|
|
171
|
+
null
|
|
172
|
+
);
|
|
173
|
+
const { execute: deleteRecord, loading: deleteLoading, error: deleteError } = useApiAsync(
|
|
174
|
+
(recordId) => deleteEntityRecordApi(getEntityName(), recordId, getApiOptions()),
|
|
175
|
+
(data) => data.success,
|
|
176
|
+
false
|
|
177
|
+
);
|
|
178
|
+
const { execute: countRecords, loading: countLoading, error: countError } = useApiAsync(
|
|
179
|
+
(filters) => countEntityRecordsApi(getEntityName(), filters || {}, getApiOptions()),
|
|
180
|
+
(data) => data.count,
|
|
181
|
+
0
|
|
182
|
+
);
|
|
183
|
+
const { execute: bulkCreate, loading: bulkCreateLoading, error: bulkCreateError } = useApiAsync(
|
|
184
|
+
(records) => bulkCreateEntityRecordsApi(getEntityName(), records, getApiOptions()),
|
|
185
|
+
(data) => ({ records: data.records, success: true }),
|
|
186
|
+
{ success: false }
|
|
187
|
+
);
|
|
188
|
+
const { execute: bulkUpdate, loading: bulkUpdateLoading, error: bulkUpdateError } = useApiAsync(
|
|
189
|
+
(records) => bulkUpdateEntityRecordsApi(getEntityName(), records, getApiOptions()),
|
|
190
|
+
(data) => ({ records: data.records, success: true }),
|
|
191
|
+
{ success: false }
|
|
192
|
+
);
|
|
193
|
+
const { execute: bulkDelete, loading: bulkDeleteLoading, error: bulkDeleteError } = useApiAsync(
|
|
194
|
+
(recordIds) => bulkDeleteEntityRecordsApi(getEntityName(), recordIds, getApiOptions()),
|
|
195
|
+
(data) => data.success,
|
|
196
|
+
false
|
|
197
|
+
);
|
|
198
|
+
const loading = queryLoading || getLoading || createLoading || updateLoading || deleteLoading || countLoading || bulkCreateLoading || bulkUpdateLoading || bulkDeleteLoading;
|
|
199
|
+
const error = queryError || getError || createError || updateError || deleteError || countError || bulkCreateError || bulkUpdateError || bulkDeleteError;
|
|
200
|
+
return useMemo2(
|
|
201
|
+
() => ({
|
|
202
|
+
loading,
|
|
203
|
+
error,
|
|
204
|
+
queryRecords,
|
|
205
|
+
getRecord,
|
|
206
|
+
createRecord,
|
|
207
|
+
updateRecord,
|
|
208
|
+
deleteRecord,
|
|
209
|
+
countRecords,
|
|
210
|
+
bulkCreate,
|
|
211
|
+
bulkUpdate,
|
|
212
|
+
bulkDelete
|
|
213
|
+
}),
|
|
214
|
+
[
|
|
215
|
+
loading,
|
|
216
|
+
error,
|
|
217
|
+
queryRecords,
|
|
218
|
+
getRecord,
|
|
219
|
+
createRecord,
|
|
220
|
+
updateRecord,
|
|
221
|
+
deleteRecord,
|
|
222
|
+
countRecords,
|
|
223
|
+
bulkCreate,
|
|
224
|
+
bulkUpdate,
|
|
225
|
+
bulkDelete
|
|
226
|
+
]
|
|
227
|
+
);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
// hooks/use-entities.ts
|
|
231
|
+
import { useState as useState2, useCallback as useCallback2 } from "react";
|
|
232
|
+
function useEntities(options) {
|
|
233
|
+
const [loading, setLoading] = useState2(false);
|
|
234
|
+
const [error, setError] = useState2(null);
|
|
235
|
+
const listDefinitions = useCallback2(async () => {
|
|
236
|
+
setLoading(true);
|
|
237
|
+
setError(null);
|
|
238
|
+
try {
|
|
239
|
+
const response = await listEntityDefinitionsApi(options);
|
|
240
|
+
if (response.error) {
|
|
241
|
+
setError(response.error);
|
|
242
|
+
return [];
|
|
243
|
+
}
|
|
244
|
+
return response.data?.definitions || [];
|
|
245
|
+
} catch (err) {
|
|
246
|
+
const message = err instanceof Error ? err.message : "Failed to load definitions";
|
|
247
|
+
setError(message);
|
|
248
|
+
return [];
|
|
249
|
+
} finally {
|
|
250
|
+
setLoading(false);
|
|
251
|
+
}
|
|
252
|
+
}, [options]);
|
|
253
|
+
const getDefinition = useCallback2(
|
|
254
|
+
async (entityName) => {
|
|
255
|
+
setLoading(true);
|
|
256
|
+
setError(null);
|
|
257
|
+
try {
|
|
258
|
+
const response = await getEntityDefinitionApi(entityName, options);
|
|
259
|
+
if (response.error) {
|
|
260
|
+
setError(response.error);
|
|
261
|
+
return null;
|
|
262
|
+
}
|
|
263
|
+
return response.data?.definition || null;
|
|
264
|
+
} catch (err) {
|
|
265
|
+
const message = err instanceof Error ? err.message : "Failed to get definition";
|
|
266
|
+
setError(message);
|
|
267
|
+
return null;
|
|
268
|
+
} finally {
|
|
269
|
+
setLoading(false);
|
|
270
|
+
}
|
|
271
|
+
},
|
|
272
|
+
[options]
|
|
273
|
+
);
|
|
274
|
+
const queryRecords = useCallback2(
|
|
275
|
+
async (entityName, query = {}) => {
|
|
276
|
+
setLoading(true);
|
|
277
|
+
setError(null);
|
|
278
|
+
try {
|
|
279
|
+
const queryParams = {
|
|
280
|
+
page: query.page || 1,
|
|
281
|
+
pageSize: query.pageSize || 20
|
|
282
|
+
};
|
|
283
|
+
if (query.filters) {
|
|
284
|
+
queryParams.filters = JSON.stringify(query.filters);
|
|
285
|
+
}
|
|
286
|
+
if (query.sortBy) {
|
|
287
|
+
queryParams.sortBy = query.sortBy;
|
|
288
|
+
}
|
|
289
|
+
if (query.sortOrder) {
|
|
290
|
+
queryParams.sortOrder = query.sortOrder;
|
|
291
|
+
}
|
|
292
|
+
const response = await queryEntityRecordsApi(entityName, queryParams, options);
|
|
293
|
+
if (response.error) {
|
|
294
|
+
setError(response.error);
|
|
295
|
+
return { records: [], total: 0, page: 1, pageSize: 20 };
|
|
296
|
+
}
|
|
297
|
+
const data = response.data;
|
|
298
|
+
if (data?.records?.items) {
|
|
299
|
+
return {
|
|
300
|
+
records: data.records.items,
|
|
301
|
+
total: data.records.totalCount,
|
|
302
|
+
page: data.records.currentPage,
|
|
303
|
+
pageSize: data.records.pageSize
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
return {
|
|
307
|
+
records: data?.records || [],
|
|
308
|
+
total: data?.total || 0,
|
|
309
|
+
page: data?.page || 1,
|
|
310
|
+
pageSize: data?.pageSize || 20
|
|
311
|
+
};
|
|
312
|
+
} catch (err) {
|
|
313
|
+
const message = err instanceof Error ? err.message : "Failed to query records";
|
|
314
|
+
setError(message);
|
|
315
|
+
return { records: [], total: 0, page: 1, pageSize: 20 };
|
|
316
|
+
} finally {
|
|
317
|
+
setLoading(false);
|
|
318
|
+
}
|
|
319
|
+
},
|
|
320
|
+
[options]
|
|
321
|
+
);
|
|
322
|
+
const getRecord = useCallback2(
|
|
323
|
+
async (entityName, recordId) => {
|
|
324
|
+
setLoading(true);
|
|
325
|
+
setError(null);
|
|
326
|
+
try {
|
|
327
|
+
const response = await getEntityRecordApi(entityName, recordId, options);
|
|
328
|
+
if (response.error) {
|
|
329
|
+
setError(response.error);
|
|
330
|
+
return null;
|
|
331
|
+
}
|
|
332
|
+
return response.data?.record || null;
|
|
333
|
+
} catch (err) {
|
|
334
|
+
const message = err instanceof Error ? err.message : "Failed to get record";
|
|
335
|
+
setError(message);
|
|
336
|
+
return null;
|
|
337
|
+
} finally {
|
|
338
|
+
setLoading(false);
|
|
339
|
+
}
|
|
340
|
+
},
|
|
341
|
+
[options]
|
|
342
|
+
);
|
|
343
|
+
const createRecord = useCallback2(
|
|
344
|
+
async (entityName, record) => {
|
|
345
|
+
setLoading(true);
|
|
346
|
+
setError(null);
|
|
347
|
+
try {
|
|
348
|
+
const response = await createEntityRecordApi(entityName, record, options);
|
|
349
|
+
if (response.error) {
|
|
350
|
+
setError(response.error);
|
|
351
|
+
return null;
|
|
352
|
+
}
|
|
353
|
+
return response.data?.record || null;
|
|
354
|
+
} catch (err) {
|
|
355
|
+
const message = err instanceof Error ? err.message : "Failed to create record";
|
|
356
|
+
setError(message);
|
|
357
|
+
return null;
|
|
358
|
+
} finally {
|
|
359
|
+
setLoading(false);
|
|
360
|
+
}
|
|
361
|
+
},
|
|
362
|
+
[options]
|
|
363
|
+
);
|
|
364
|
+
const updateRecord = useCallback2(
|
|
365
|
+
async (entityName, recordId, record) => {
|
|
366
|
+
setLoading(true);
|
|
367
|
+
setError(null);
|
|
368
|
+
try {
|
|
369
|
+
const response = await updateEntityRecordApi(entityName, recordId, record, options);
|
|
370
|
+
if (response.error) {
|
|
371
|
+
setError(response.error);
|
|
372
|
+
return null;
|
|
373
|
+
}
|
|
374
|
+
return response.data?.record || null;
|
|
375
|
+
} catch (err) {
|
|
376
|
+
const message = err instanceof Error ? err.message : "Failed to update record";
|
|
377
|
+
setError(message);
|
|
378
|
+
return null;
|
|
379
|
+
} finally {
|
|
380
|
+
setLoading(false);
|
|
381
|
+
}
|
|
382
|
+
},
|
|
383
|
+
[options]
|
|
384
|
+
);
|
|
385
|
+
const deleteRecord = useCallback2(
|
|
386
|
+
async (entityName, recordId) => {
|
|
387
|
+
setLoading(true);
|
|
388
|
+
setError(null);
|
|
389
|
+
try {
|
|
390
|
+
const response = await deleteEntityRecordApi(entityName, recordId, options);
|
|
391
|
+
if (response.error) {
|
|
392
|
+
setError(response.error);
|
|
393
|
+
return false;
|
|
394
|
+
}
|
|
395
|
+
return true;
|
|
396
|
+
} catch (err) {
|
|
397
|
+
const message = err instanceof Error ? err.message : "Failed to delete record";
|
|
398
|
+
setError(message);
|
|
399
|
+
return false;
|
|
400
|
+
} finally {
|
|
401
|
+
setLoading(false);
|
|
402
|
+
}
|
|
403
|
+
},
|
|
404
|
+
[options]
|
|
405
|
+
);
|
|
406
|
+
return {
|
|
407
|
+
loading,
|
|
408
|
+
error,
|
|
409
|
+
listDefinitions,
|
|
410
|
+
getDefinition,
|
|
411
|
+
queryRecords,
|
|
412
|
+
getRecord,
|
|
413
|
+
createRecord,
|
|
414
|
+
updateRecord,
|
|
415
|
+
deleteRecord
|
|
416
|
+
};
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
export {
|
|
420
|
+
useAsync,
|
|
421
|
+
useApiAsync,
|
|
422
|
+
useOptionsRef,
|
|
423
|
+
useEntityDefinitions,
|
|
424
|
+
useEntityRecords,
|
|
425
|
+
useEntities
|
|
426
|
+
};
|
|
427
|
+
//# sourceMappingURL=chunk-F7ZN7FHI.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../hooks/use-entity-definitions.ts","../hooks/use-async.ts","../hooks/use-options-ref.ts","../hooks/use-entity-records.ts","../hooks/use-entities.ts"],"sourcesContent":["\"use client\";\n\n/**\n * Entity definition hooks for React applications\n *\n * Provides React hooks for entity definition CRUD operations with loading/error states.\n */\n\nimport { useMemo } from \"react\";\nimport type { ApiClientOptions } from \"@elqnt/api-client\";\nimport type { EntityDefinition } from \"../models\";\nimport {\n listEntityDefinitionsApi,\n getEntityDefinitionApi,\n createEntityDefinitionApi,\n updateEntityDefinitionApi,\n deleteEntityDefinitionApi,\n} from \"../api\";\nimport { useApiAsync } from \"./use-async\";\nimport { useOptionsRef } from \"./use-options-ref\";\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\nexport type UseEntityDefinitionsOptions = ApiClientOptions;\n\n// =============================================================================\n// USE ENTITY DEFINITIONS HOOK\n// =============================================================================\n\n/**\n * Hook for entity definition CRUD operations\n *\n * @example\n * ```tsx\n * const { loading, error, listDefinitions, getDefinition, createDefinition } = useEntityDefinitions({\n * baseUrl: apiGatewayUrl,\n * orgId: selectedOrgId,\n * });\n *\n * const definitions = await listDefinitions();\n * const definition = await getDefinition(\"contacts\");\n * const newDef = await createDefinition({ name: \"leads\", title: \"Leads\" });\n * ```\n */\nexport function useEntityDefinitions(options: UseEntityDefinitionsOptions) {\n const optionsRef = useOptionsRef(options);\n\n const { execute: listDefinitions, loading: listLoading, error: listError } = useApiAsync(\n () => listEntityDefinitionsApi(optionsRef.current),\n (data) => data.definitions || [],\n [] as EntityDefinition[]\n );\n\n const { execute: getDefinition, loading: getLoading, error: getError } = useApiAsync(\n (entityName: string) => getEntityDefinitionApi(entityName, optionsRef.current),\n (data) => data.definition || null,\n null as EntityDefinition | null\n );\n\n const { execute: createDefinition, loading: createLoading, error: createError } = useApiAsync(\n (definition: Partial<EntityDefinition>) =>\n createEntityDefinitionApi(definition, optionsRef.current),\n (data) => data.definition || null,\n null as EntityDefinition | null\n );\n\n const { execute: updateDefinition, loading: updateLoading, error: updateError } = useApiAsync(\n (entityName: string, definition: Partial<EntityDefinition>) =>\n updateEntityDefinitionApi(entityName, definition, optionsRef.current),\n (data) => data.definition || null,\n null as EntityDefinition | null\n );\n\n const { execute: deleteDefinition, loading: deleteLoading, error: deleteError } = useApiAsync(\n (entityName: string) => deleteEntityDefinitionApi(entityName, optionsRef.current),\n (data) => data.success,\n false\n );\n\n const loading = listLoading || getLoading || createLoading || updateLoading || deleteLoading;\n const error = listError || getError || createError || updateError || deleteError;\n\n return useMemo(\n () => ({\n loading,\n error,\n listDefinitions,\n getDefinition,\n createDefinition,\n updateDefinition,\n deleteDefinition,\n }),\n [loading, error, listDefinitions, getDefinition, createDefinition, updateDefinition, deleteDefinition]\n );\n}\n","\"use client\";\n\n/**\n * Async operation hooks with loading/error state management\n */\n\nimport { useState, useCallback } from \"react\";\nimport type { ApiResponse } from \"@elqnt/api-client\";\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\nexport interface UseAsyncOptions {\n /** Reset error on new request */\n resetErrorOnRequest?: boolean;\n}\n\nexport interface UseAsyncReturn<TArgs extends unknown[], TResult> {\n execute: (...args: TArgs) => Promise<TResult>;\n loading: boolean;\n error: string | null;\n}\n\n// =============================================================================\n// USE ASYNC HOOK\n// =============================================================================\n\n/**\n * Generic async operation hook with loading/error states\n *\n * @example\n * ```tsx\n * const { execute: fetchUser, loading, error } = useAsync(\n * (userId: string) => getUserApi(userId, options),\n * (data) => data.user,\n * null\n * );\n *\n * const user = await fetchUser(\"user-123\");\n * ```\n */\nexport function useAsync<TArgs extends unknown[], TData, TResult>(\n asyncFn: (...args: TArgs) => Promise<ApiResponse<TData>>,\n transform: (data: TData) => TResult,\n defaultValue: TResult,\n options: UseAsyncOptions = {}\n): UseAsyncReturn<TArgs, TResult> {\n const { resetErrorOnRequest = true } = options;\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const execute = useCallback(\n async (...args: TArgs): Promise<TResult> => {\n setLoading(true);\n if (resetErrorOnRequest) {\n setError(null);\n }\n\n try {\n const response = await asyncFn(...args);\n\n if (response.error) {\n setError(response.error);\n return defaultValue;\n }\n\n if (!response.data) {\n return defaultValue;\n }\n\n return transform(response.data);\n } catch (err) {\n const message = err instanceof Error ? err.message : \"An error occurred\";\n setError(message);\n return defaultValue;\n } finally {\n setLoading(false);\n }\n },\n [asyncFn, transform, defaultValue, resetErrorOnRequest]\n );\n\n return { execute, loading, error };\n}\n\n/**\n * Simplified async hook for API operations\n *\n * @example\n * ```tsx\n * const { execute: getUsers, loading, error } = useApiAsync(\n * () => listUsersApi(optionsRef.current),\n * (data) => data.users,\n * []\n * );\n * ```\n */\nexport function useApiAsync<TArgs extends unknown[], TData, TResult>(\n asyncFn: (...args: TArgs) => Promise<ApiResponse<TData>>,\n transform: (data: TData) => TResult,\n defaultValue: TResult\n): UseAsyncReturn<TArgs, TResult> {\n return useAsync(asyncFn, transform, defaultValue);\n}\n","\"use client\";\n\n/**\n * Options ref hook for stable callback references\n *\n * Keeps options in a ref to avoid stale closures in callbacks\n * while maintaining referential stability.\n */\n\nimport { useRef, useEffect } from \"react\";\n\n/**\n * Hook that keeps options in a ref for stable callback access\n *\n * @example\n * ```tsx\n * const optionsRef = useOptionsRef({ baseUrl, orgId });\n *\n * const fetchData = useCallback(async () => {\n * // Always accesses latest options without recreating callback\n * await api.fetch(optionsRef.current);\n * }, []); // No dependencies needed\n * ```\n */\nexport function useOptionsRef<T>(options: T) {\n const optionsRef = useRef(options);\n\n useEffect(() => {\n optionsRef.current = options;\n }, [options]);\n\n return optionsRef;\n}\n","\"use client\";\n\n/**\n * Entity record hooks for React applications\n *\n * Provides React hooks for entity record CRUD operations with loading/error states.\n */\n\nimport { useMemo } from \"react\";\nimport type { ApiClientOptions } from \"@elqnt/api-client\";\nimport type { EntityRecord } from \"../models\";\nimport {\n queryEntityRecordsApi,\n getEntityRecordApi,\n createEntityRecordApi,\n updateEntityRecordApi,\n deleteEntityRecordApi,\n countEntityRecordsApi,\n bulkCreateEntityRecordsApi,\n bulkUpdateEntityRecordsApi,\n bulkDeleteEntityRecordsApi,\n} from \"../api\";\nimport { useApiAsync } from \"./use-async\";\nimport { useOptionsRef } from \"./use-options-ref\";\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\nexport interface UseEntityRecordsOptions extends ApiClientOptions {\n /** Entity name to operate on */\n entityName: string;\n}\n\nexport interface QueryRecordsParams {\n page?: number;\n pageSize?: number;\n filters?: Record<string, unknown>;\n sortBy?: string;\n sortOrder?: \"asc\" | \"desc\";\n}\n\nexport interface QueryRecordsResult {\n records: EntityRecord[];\n total: number;\n page: number;\n pageSize: number;\n}\n\nexport interface BulkOperationResult {\n records?: EntityRecord[];\n success: boolean;\n}\n\n// =============================================================================\n// USE ENTITY RECORDS HOOK\n// =============================================================================\n\n/**\n * Hook for entity record CRUD operations\n *\n * @example\n * ```tsx\n * const {\n * loading, error,\n * queryRecords, getRecord, createRecord, updateRecord, deleteRecord,\n * countRecords, bulkCreate, bulkUpdate, bulkDelete\n * } = useEntityRecords({\n * baseUrl: apiGatewayUrl,\n * orgId: selectedOrgId,\n * entityName: \"contacts\",\n * });\n *\n * const { records, total } = await queryRecords({ page: 1, pageSize: 20 });\n * const record = await getRecord(\"record-id\");\n * const count = await countRecords({ status: \"active\" });\n * ```\n */\nexport function useEntityRecords(options: UseEntityRecordsOptions) {\n const optionsRef = useOptionsRef(options);\n\n const getEntityName = () => optionsRef.current.entityName;\n const getApiOptions = (): ApiClientOptions => {\n const { entityName: _, ...apiOptions } = optionsRef.current;\n return apiOptions;\n };\n\n const { execute: queryRecords, loading: queryLoading, error: queryError } = useApiAsync(\n (params?: QueryRecordsParams) => {\n const queryParams: Record<string, unknown> = {\n page: params?.page || 1,\n pageSize: params?.pageSize || 20,\n };\n if (params?.filters) {\n queryParams.filters = JSON.stringify(params.filters);\n }\n if (params?.sortBy) {\n queryParams.sortBy = params.sortBy;\n }\n if (params?.sortOrder) {\n queryParams.sortOrder = params.sortOrder;\n }\n return queryEntityRecordsApi(getEntityName(), queryParams, getApiOptions());\n },\n (data): QueryRecordsResult => {\n // Handle both direct records array and nested ListResult structure\n if (data?.records?.items) {\n return {\n records: data.records.items,\n total: data.records.totalCount,\n page: data.records.currentPage,\n pageSize: data.records.pageSize,\n };\n }\n // Fallback for simpler response structure\n return {\n records: (data as any)?.records || [],\n total: (data as any)?.total || 0,\n page: (data as any)?.page || 1,\n pageSize: (data as any)?.pageSize || 20,\n };\n },\n { records: [], total: 0, page: 1, pageSize: 20 } as QueryRecordsResult\n );\n\n const { execute: getRecord, loading: getLoading, error: getError } = useApiAsync(\n (recordId: string) => getEntityRecordApi(getEntityName(), recordId, getApiOptions()),\n (data) => data.record || null,\n null as EntityRecord | null\n );\n\n const { execute: createRecord, loading: createLoading, error: createError } = useApiAsync(\n (record: Partial<EntityRecord>) => createEntityRecordApi(getEntityName(), record, getApiOptions()),\n (data) => data.record || null,\n null as EntityRecord | null\n );\n\n const { execute: updateRecord, loading: updateLoading, error: updateError } = useApiAsync(\n (recordId: string, record: Partial<EntityRecord>) =>\n updateEntityRecordApi(getEntityName(), recordId, record, getApiOptions()),\n (data) => data.record || null,\n null as EntityRecord | null\n );\n\n const { execute: deleteRecord, loading: deleteLoading, error: deleteError } = useApiAsync(\n (recordId: string) => deleteEntityRecordApi(getEntityName(), recordId, getApiOptions()),\n (data) => data.success,\n false\n );\n\n const { execute: countRecords, loading: countLoading, error: countError } = useApiAsync(\n (filters?: Record<string, unknown>) =>\n countEntityRecordsApi(getEntityName(), filters || {}, getApiOptions()),\n (data) => data.count,\n 0\n );\n\n const { execute: bulkCreate, loading: bulkCreateLoading, error: bulkCreateError } = useApiAsync(\n (records: Partial<EntityRecord>[]) =>\n bulkCreateEntityRecordsApi(getEntityName(), records, getApiOptions()),\n (data): BulkOperationResult => ({ records: data.records, success: true }),\n { success: false } as BulkOperationResult\n );\n\n const { execute: bulkUpdate, loading: bulkUpdateLoading, error: bulkUpdateError } = useApiAsync(\n (records: Partial<EntityRecord>[]) =>\n bulkUpdateEntityRecordsApi(getEntityName(), records, getApiOptions()),\n (data): BulkOperationResult => ({ records: data.records, success: true }),\n { success: false } as BulkOperationResult\n );\n\n const { execute: bulkDelete, loading: bulkDeleteLoading, error: bulkDeleteError } = useApiAsync(\n (recordIds: string[]) =>\n bulkDeleteEntityRecordsApi(getEntityName(), recordIds, getApiOptions()),\n (data) => data.success,\n false\n );\n\n const loading =\n queryLoading || getLoading || createLoading || updateLoading || deleteLoading ||\n countLoading || bulkCreateLoading || bulkUpdateLoading || bulkDeleteLoading;\n\n const error =\n queryError || getError || createError || updateError || deleteError ||\n countError || bulkCreateError || bulkUpdateError || bulkDeleteError;\n\n return useMemo(\n () => ({\n loading,\n error,\n queryRecords,\n getRecord,\n createRecord,\n updateRecord,\n deleteRecord,\n countRecords,\n bulkCreate,\n bulkUpdate,\n bulkDelete,\n }),\n [\n loading, error,\n queryRecords, getRecord, createRecord, updateRecord, deleteRecord,\n countRecords, bulkCreate, bulkUpdate, bulkDelete,\n ]\n );\n}\n","\"use client\";\n\n/**\n * Entity hooks for React applications\n *\n * Provides React hooks for entity CRUD operations with loading/error states.\n */\n\nimport { useState, useCallback } from \"react\";\nimport type { ApiClientOptions } from \"@elqnt/api-client\";\nimport type { EntityDefinition, EntityRecord } from \"../models\";\nimport {\n listEntityDefinitionsApi,\n getEntityDefinitionApi,\n queryEntityRecordsApi,\n getEntityRecordApi,\n createEntityRecordApi,\n updateEntityRecordApi,\n deleteEntityRecordApi,\n} from \"../api\";\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\nexport type UseEntitiesOptions = ApiClientOptions;\n\nexport interface QueryOptions {\n page?: number;\n pageSize?: number;\n filters?: Record<string, unknown>;\n sortBy?: string;\n sortOrder?: \"asc\" | \"desc\";\n}\n\nexport interface QueryResult {\n records: EntityRecord[];\n total: number;\n page: number;\n pageSize: number;\n}\n\n// =============================================================================\n// USE ENTITIES HOOK\n// =============================================================================\n\n/**\n * Hook for entity CRUD operations\n *\n * @example\n * ```tsx\n * const { loading, error, queryRecords, createRecord } = useEntities({\n * baseUrl: apiGatewayUrl,\n * orgId: selectedOrgId,\n * userId: user?.id,\n * userEmail: user?.email,\n * });\n *\n * const records = await queryRecords(\"contacts\", { page: 1, pageSize: 20 });\n * ```\n */\nexport function useEntities(options: UseEntitiesOptions) {\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const listDefinitions = useCallback(async (): Promise<EntityDefinition[]> => {\n setLoading(true);\n setError(null);\n try {\n const response = await listEntityDefinitionsApi(options);\n if (response.error) {\n setError(response.error);\n return [];\n }\n return response.data?.definitions || [];\n } catch (err) {\n const message = err instanceof Error ? err.message : \"Failed to load definitions\";\n setError(message);\n return [];\n } finally {\n setLoading(false);\n }\n }, [options]);\n\n const getDefinition = useCallback(\n async (entityName: string): Promise<EntityDefinition | null> => {\n setLoading(true);\n setError(null);\n try {\n const response = await getEntityDefinitionApi(entityName, options);\n if (response.error) {\n setError(response.error);\n return null;\n }\n return response.data?.definition || null;\n } catch (err) {\n const message = err instanceof Error ? err.message : \"Failed to get definition\";\n setError(message);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [options]\n );\n\n const queryRecords = useCallback(\n async (entityName: string, query: QueryOptions = {}): Promise<QueryResult> => {\n setLoading(true);\n setError(null);\n try {\n const queryParams: Record<string, unknown> = {\n page: query.page || 1,\n pageSize: query.pageSize || 20,\n };\n if (query.filters) {\n queryParams.filters = JSON.stringify(query.filters);\n }\n if (query.sortBy) {\n queryParams.sortBy = query.sortBy;\n }\n if (query.sortOrder) {\n queryParams.sortOrder = query.sortOrder;\n }\n\n const response = await queryEntityRecordsApi(entityName, queryParams, options);\n if (response.error) {\n setError(response.error);\n return { records: [], total: 0, page: 1, pageSize: 20 };\n }\n\n // Handle both direct records array and nested ListResult structure\n const data = response.data;\n if (data?.records?.items) {\n // ListEntityRecordsResponse with ListResult\n return {\n records: data.records.items,\n total: data.records.totalCount,\n page: data.records.currentPage,\n pageSize: data.records.pageSize,\n };\n }\n // Fallback for simpler response structure\n return {\n records: (data as any)?.records || [],\n total: (data as any)?.total || 0,\n page: (data as any)?.page || 1,\n pageSize: (data as any)?.pageSize || 20,\n };\n } catch (err) {\n const message = err instanceof Error ? err.message : \"Failed to query records\";\n setError(message);\n return { records: [], total: 0, page: 1, pageSize: 20 };\n } finally {\n setLoading(false);\n }\n },\n [options]\n );\n\n const getRecord = useCallback(\n async (entityName: string, recordId: string): Promise<EntityRecord | null> => {\n setLoading(true);\n setError(null);\n try {\n const response = await getEntityRecordApi(entityName, recordId, options);\n if (response.error) {\n setError(response.error);\n return null;\n }\n return response.data?.record || null;\n } catch (err) {\n const message = err instanceof Error ? err.message : \"Failed to get record\";\n setError(message);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [options]\n );\n\n const createRecord = useCallback(\n async (entityName: string, record: Partial<EntityRecord>): Promise<EntityRecord | null> => {\n setLoading(true);\n setError(null);\n try {\n const response = await createEntityRecordApi(entityName, record, options);\n if (response.error) {\n setError(response.error);\n return null;\n }\n return response.data?.record || null;\n } catch (err) {\n const message = err instanceof Error ? err.message : \"Failed to create record\";\n setError(message);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [options]\n );\n\n const updateRecord = useCallback(\n async (\n entityName: string,\n recordId: string,\n record: Partial<EntityRecord>\n ): Promise<EntityRecord | null> => {\n setLoading(true);\n setError(null);\n try {\n const response = await updateEntityRecordApi(entityName, recordId, record, options);\n if (response.error) {\n setError(response.error);\n return null;\n }\n return response.data?.record || null;\n } catch (err) {\n const message = err instanceof Error ? err.message : \"Failed to update record\";\n setError(message);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [options]\n );\n\n const deleteRecord = useCallback(\n async (entityName: string, recordId: string): Promise<boolean> => {\n setLoading(true);\n setError(null);\n try {\n const response = await deleteEntityRecordApi(entityName, recordId, options);\n if (response.error) {\n setError(response.error);\n return false;\n }\n return true;\n } catch (err) {\n const message = err instanceof Error ? err.message : \"Failed to delete record\";\n setError(message);\n return false;\n } finally {\n setLoading(false);\n }\n },\n [options]\n );\n\n return {\n loading,\n error,\n listDefinitions,\n getDefinition,\n queryRecords,\n getRecord,\n createRecord,\n updateRecord,\n deleteRecord,\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAQA,SAAS,eAAe;;;ACFxB,SAAS,UAAU,mBAAmB;AAoC/B,SAAS,SACd,SACA,WACA,cACA,UAA2B,CAAC,GACI;AAChC,QAAM,EAAE,sBAAsB,KAAK,IAAI;AACvC,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,KAAK;AAC5C,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAwB,IAAI;AAEtD,QAAM,UAAU;AAAA,IACd,UAAU,SAAkC;AAC1C,iBAAW,IAAI;AACf,UAAI,qBAAqB;AACvB,iBAAS,IAAI;AAAA,MACf;AAEA,UAAI;AACF,cAAM,WAAW,MAAM,QAAQ,GAAG,IAAI;AAEtC,YAAI,SAAS,OAAO;AAClB,mBAAS,SAAS,KAAK;AACvB,iBAAO;AAAA,QACT;AAEA,YAAI,CAAC,SAAS,MAAM;AAClB,iBAAO;AAAA,QACT;AAEA,eAAO,UAAU,SAAS,IAAI;AAAA,MAChC,SAAS,KAAK;AACZ,cAAM,UAAU,eAAe,QAAQ,IAAI,UAAU;AACrD,iBAAS,OAAO;AAChB,eAAO;AAAA,MACT,UAAE;AACA,mBAAW,KAAK;AAAA,MAClB;AAAA,IACF;AAAA,IACA,CAAC,SAAS,WAAW,cAAc,mBAAmB;AAAA,EACxD;AAEA,SAAO,EAAE,SAAS,SAAS,MAAM;AACnC;AAcO,SAAS,YACd,SACA,WACA,cACgC;AAChC,SAAO,SAAS,SAAS,WAAW,YAAY;AAClD;;;AC/FA,SAAS,QAAQ,iBAAiB;AAe3B,SAAS,cAAiB,SAAY;AAC3C,QAAM,aAAa,OAAO,OAAO;AAEjC,YAAU,MAAM;AACd,eAAW,UAAU;AAAA,EACvB,GAAG,CAAC,OAAO,CAAC;AAEZ,SAAO;AACT;;;AFcO,SAAS,qBAAqB,SAAsC;AACzE,QAAM,aAAa,cAAc,OAAO;AAExC,QAAM,EAAE,SAAS,iBAAiB,SAAS,aAAa,OAAO,UAAU,IAAI;AAAA,IAC3E,MAAM,yBAAyB,WAAW,OAAO;AAAA,IACjD,CAAC,SAAS,KAAK,eAAe,CAAC;AAAA,IAC/B,CAAC;AAAA,EACH;AAEA,QAAM,EAAE,SAAS,eAAe,SAAS,YAAY,OAAO,SAAS,IAAI;AAAA,IACvE,CAAC,eAAuB,uBAAuB,YAAY,WAAW,OAAO;AAAA,IAC7E,CAAC,SAAS,KAAK,cAAc;AAAA,IAC7B;AAAA,EACF;AAEA,QAAM,EAAE,SAAS,kBAAkB,SAAS,eAAe,OAAO,YAAY,IAAI;AAAA,IAChF,CAAC,eACC,0BAA0B,YAAY,WAAW,OAAO;AAAA,IAC1D,CAAC,SAAS,KAAK,cAAc;AAAA,IAC7B;AAAA,EACF;AAEA,QAAM,EAAE,SAAS,kBAAkB,SAAS,eAAe,OAAO,YAAY,IAAI;AAAA,IAChF,CAAC,YAAoB,eACnB,0BAA0B,YAAY,YAAY,WAAW,OAAO;AAAA,IACtE,CAAC,SAAS,KAAK,cAAc;AAAA,IAC7B;AAAA,EACF;AAEA,QAAM,EAAE,SAAS,kBAAkB,SAAS,eAAe,OAAO,YAAY,IAAI;AAAA,IAChF,CAAC,eAAuB,0BAA0B,YAAY,WAAW,OAAO;AAAA,IAChF,CAAC,SAAS,KAAK;AAAA,IACf;AAAA,EACF;AAEA,QAAM,UAAU,eAAe,cAAc,iBAAiB,iBAAiB;AAC/E,QAAM,QAAQ,aAAa,YAAY,eAAe,eAAe;AAErE,SAAO;AAAA,IACL,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,CAAC,SAAS,OAAO,iBAAiB,eAAe,kBAAkB,kBAAkB,gBAAgB;AAAA,EACvG;AACF;;;AGxFA,SAAS,WAAAA,gBAAe;AAsEjB,SAAS,iBAAiB,SAAkC;AACjE,QAAM,aAAa,cAAc,OAAO;AAExC,QAAM,gBAAgB,MAAM,WAAW,QAAQ;AAC/C,QAAM,gBAAgB,MAAwB;AAC5C,UAAM,EAAE,YAAY,GAAG,GAAG,WAAW,IAAI,WAAW;AACpD,WAAO;AAAA,EACT;AAEA,QAAM,EAAE,SAAS,cAAc,SAAS,cAAc,OAAO,WAAW,IAAI;AAAA,IAC1E,CAAC,WAAgC;AAC/B,YAAM,cAAuC;AAAA,QAC3C,MAAM,QAAQ,QAAQ;AAAA,QACtB,UAAU,QAAQ,YAAY;AAAA,MAChC;AACA,UAAI,QAAQ,SAAS;AACnB,oBAAY,UAAU,KAAK,UAAU,OAAO,OAAO;AAAA,MACrD;AACA,UAAI,QAAQ,QAAQ;AAClB,oBAAY,SAAS,OAAO;AAAA,MAC9B;AACA,UAAI,QAAQ,WAAW;AACrB,oBAAY,YAAY,OAAO;AAAA,MACjC;AACA,aAAO,sBAAsB,cAAc,GAAG,aAAa,cAAc,CAAC;AAAA,IAC5E;AAAA,IACA,CAAC,SAA6B;AAE5B,UAAI,MAAM,SAAS,OAAO;AACxB,eAAO;AAAA,UACL,SAAS,KAAK,QAAQ;AAAA,UACtB,OAAO,KAAK,QAAQ;AAAA,UACpB,MAAM,KAAK,QAAQ;AAAA,UACnB,UAAU,KAAK,QAAQ;AAAA,QACzB;AAAA,MACF;AAEA,aAAO;AAAA,QACL,SAAU,MAAc,WAAW,CAAC;AAAA,QACpC,OAAQ,MAAc,SAAS;AAAA,QAC/B,MAAO,MAAc,QAAQ;AAAA,QAC7B,UAAW,MAAc,YAAY;AAAA,MACvC;AAAA,IACF;AAAA,IACA,EAAE,SAAS,CAAC,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG;AAAA,EACjD;AAEA,QAAM,EAAE,SAAS,WAAW,SAAS,YAAY,OAAO,SAAS,IAAI;AAAA,IACnE,CAAC,aAAqB,mBAAmB,cAAc,GAAG,UAAU,cAAc,CAAC;AAAA,IACnF,CAAC,SAAS,KAAK,UAAU;AAAA,IACzB;AAAA,EACF;AAEA,QAAM,EAAE,SAAS,cAAc,SAAS,eAAe,OAAO,YAAY,IAAI;AAAA,IAC5E,CAAC,WAAkC,sBAAsB,cAAc,GAAG,QAAQ,cAAc,CAAC;AAAA,IACjG,CAAC,SAAS,KAAK,UAAU;AAAA,IACzB;AAAA,EACF;AAEA,QAAM,EAAE,SAAS,cAAc,SAAS,eAAe,OAAO,YAAY,IAAI;AAAA,IAC5E,CAAC,UAAkB,WACjB,sBAAsB,cAAc,GAAG,UAAU,QAAQ,cAAc,CAAC;AAAA,IAC1E,CAAC,SAAS,KAAK,UAAU;AAAA,IACzB;AAAA,EACF;AAEA,QAAM,EAAE,SAAS,cAAc,SAAS,eAAe,OAAO,YAAY,IAAI;AAAA,IAC5E,CAAC,aAAqB,sBAAsB,cAAc,GAAG,UAAU,cAAc,CAAC;AAAA,IACtF,CAAC,SAAS,KAAK;AAAA,IACf;AAAA,EACF;AAEA,QAAM,EAAE,SAAS,cAAc,SAAS,cAAc,OAAO,WAAW,IAAI;AAAA,IAC1E,CAAC,YACC,sBAAsB,cAAc,GAAG,WAAW,CAAC,GAAG,cAAc,CAAC;AAAA,IACvE,CAAC,SAAS,KAAK;AAAA,IACf;AAAA,EACF;AAEA,QAAM,EAAE,SAAS,YAAY,SAAS,mBAAmB,OAAO,gBAAgB,IAAI;AAAA,IAClF,CAAC,YACC,2BAA2B,cAAc,GAAG,SAAS,cAAc,CAAC;AAAA,IACtE,CAAC,UAA+B,EAAE,SAAS,KAAK,SAAS,SAAS,KAAK;AAAA,IACvE,EAAE,SAAS,MAAM;AAAA,EACnB;AAEA,QAAM,EAAE,SAAS,YAAY,SAAS,mBAAmB,OAAO,gBAAgB,IAAI;AAAA,IAClF,CAAC,YACC,2BAA2B,cAAc,GAAG,SAAS,cAAc,CAAC;AAAA,IACtE,CAAC,UAA+B,EAAE,SAAS,KAAK,SAAS,SAAS,KAAK;AAAA,IACvE,EAAE,SAAS,MAAM;AAAA,EACnB;AAEA,QAAM,EAAE,SAAS,YAAY,SAAS,mBAAmB,OAAO,gBAAgB,IAAI;AAAA,IAClF,CAAC,cACC,2BAA2B,cAAc,GAAG,WAAW,cAAc,CAAC;AAAA,IACxE,CAAC,SAAS,KAAK;AAAA,IACf;AAAA,EACF;AAEA,QAAM,UACJ,gBAAgB,cAAc,iBAAiB,iBAAiB,iBAChE,gBAAgB,qBAAqB,qBAAqB;AAE5D,QAAM,QACJ,cAAc,YAAY,eAAe,eAAe,eACxD,cAAc,mBAAmB,mBAAmB;AAEtD,SAAOC;AAAA,IACL,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MAAS;AAAA,MACT;AAAA,MAAc;AAAA,MAAW;AAAA,MAAc;AAAA,MAAc;AAAA,MACrD;AAAA,MAAc;AAAA,MAAY;AAAA,MAAY;AAAA,IACxC;AAAA,EACF;AACF;;;ACtMA,SAAS,YAAAC,WAAU,eAAAC,oBAAmB;AAqD/B,SAAS,YAAY,SAA6B;AACvD,QAAM,CAAC,SAAS,UAAU,IAAIC,UAAS,KAAK;AAC5C,QAAM,CAAC,OAAO,QAAQ,IAAIA,UAAwB,IAAI;AAEtD,QAAM,kBAAkBC,aAAY,YAAyC;AAC3E,eAAW,IAAI;AACf,aAAS,IAAI;AACb,QAAI;AACF,YAAM,WAAW,MAAM,yBAAyB,OAAO;AACvD,UAAI,SAAS,OAAO;AAClB,iBAAS,SAAS,KAAK;AACvB,eAAO,CAAC;AAAA,MACV;AACA,aAAO,SAAS,MAAM,eAAe,CAAC;AAAA,IACxC,SAAS,KAAK;AACZ,YAAM,UAAU,eAAe,QAAQ,IAAI,UAAU;AACrD,eAAS,OAAO;AAChB,aAAO,CAAC;AAAA,IACV,UAAE;AACA,iBAAW,KAAK;AAAA,IAClB;AAAA,EACF,GAAG,CAAC,OAAO,CAAC;AAEZ,QAAM,gBAAgBA;AAAA,IACpB,OAAO,eAAyD;AAC9D,iBAAW,IAAI;AACf,eAAS,IAAI;AACb,UAAI;AACF,cAAM,WAAW,MAAM,uBAAuB,YAAY,OAAO;AACjE,YAAI,SAAS,OAAO;AAClB,mBAAS,SAAS,KAAK;AACvB,iBAAO;AAAA,QACT;AACA,eAAO,SAAS,MAAM,cAAc;AAAA,MACtC,SAAS,KAAK;AACZ,cAAM,UAAU,eAAe,QAAQ,IAAI,UAAU;AACrD,iBAAS,OAAO;AAChB,eAAO;AAAA,MACT,UAAE;AACA,mBAAW,KAAK;AAAA,MAClB;AAAA,IACF;AAAA,IACA,CAAC,OAAO;AAAA,EACV;AAEA,QAAM,eAAeA;AAAA,IACnB,OAAO,YAAoB,QAAsB,CAAC,MAA4B;AAC5E,iBAAW,IAAI;AACf,eAAS,IAAI;AACb,UAAI;AACF,cAAM,cAAuC;AAAA,UAC3C,MAAM,MAAM,QAAQ;AAAA,UACpB,UAAU,MAAM,YAAY;AAAA,QAC9B;AACA,YAAI,MAAM,SAAS;AACjB,sBAAY,UAAU,KAAK,UAAU,MAAM,OAAO;AAAA,QACpD;AACA,YAAI,MAAM,QAAQ;AAChB,sBAAY,SAAS,MAAM;AAAA,QAC7B;AACA,YAAI,MAAM,WAAW;AACnB,sBAAY,YAAY,MAAM;AAAA,QAChC;AAEA,cAAM,WAAW,MAAM,sBAAsB,YAAY,aAAa,OAAO;AAC7E,YAAI,SAAS,OAAO;AAClB,mBAAS,SAAS,KAAK;AACvB,iBAAO,EAAE,SAAS,CAAC,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG;AAAA,QACxD;AAGA,cAAM,OAAO,SAAS;AACtB,YAAI,MAAM,SAAS,OAAO;AAExB,iBAAO;AAAA,YACL,SAAS,KAAK,QAAQ;AAAA,YACtB,OAAO,KAAK,QAAQ;AAAA,YACpB,MAAM,KAAK,QAAQ;AAAA,YACnB,UAAU,KAAK,QAAQ;AAAA,UACzB;AAAA,QACF;AAEA,eAAO;AAAA,UACL,SAAU,MAAc,WAAW,CAAC;AAAA,UACpC,OAAQ,MAAc,SAAS;AAAA,UAC/B,MAAO,MAAc,QAAQ;AAAA,UAC7B,UAAW,MAAc,YAAY;AAAA,QACvC;AAAA,MACF,SAAS,KAAK;AACZ,cAAM,UAAU,eAAe,QAAQ,IAAI,UAAU;AACrD,iBAAS,OAAO;AAChB,eAAO,EAAE,SAAS,CAAC,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG;AAAA,MACxD,UAAE;AACA,mBAAW,KAAK;AAAA,MAClB;AAAA,IACF;AAAA,IACA,CAAC,OAAO;AAAA,EACV;AAEA,QAAM,YAAYA;AAAA,IAChB,OAAO,YAAoB,aAAmD;AAC5E,iBAAW,IAAI;AACf,eAAS,IAAI;AACb,UAAI;AACF,cAAM,WAAW,MAAM,mBAAmB,YAAY,UAAU,OAAO;AACvE,YAAI,SAAS,OAAO;AAClB,mBAAS,SAAS,KAAK;AACvB,iBAAO;AAAA,QACT;AACA,eAAO,SAAS,MAAM,UAAU;AAAA,MAClC,SAAS,KAAK;AACZ,cAAM,UAAU,eAAe,QAAQ,IAAI,UAAU;AACrD,iBAAS,OAAO;AAChB,eAAO;AAAA,MACT,UAAE;AACA,mBAAW,KAAK;AAAA,MAClB;AAAA,IACF;AAAA,IACA,CAAC,OAAO;AAAA,EACV;AAEA,QAAM,eAAeA;AAAA,IACnB,OAAO,YAAoB,WAAgE;AACzF,iBAAW,IAAI;AACf,eAAS,IAAI;AACb,UAAI;AACF,cAAM,WAAW,MAAM,sBAAsB,YAAY,QAAQ,OAAO;AACxE,YAAI,SAAS,OAAO;AAClB,mBAAS,SAAS,KAAK;AACvB,iBAAO;AAAA,QACT;AACA,eAAO,SAAS,MAAM,UAAU;AAAA,MAClC,SAAS,KAAK;AACZ,cAAM,UAAU,eAAe,QAAQ,IAAI,UAAU;AACrD,iBAAS,OAAO;AAChB,eAAO;AAAA,MACT,UAAE;AACA,mBAAW,KAAK;AAAA,MAClB;AAAA,IACF;AAAA,IACA,CAAC,OAAO;AAAA,EACV;AAEA,QAAM,eAAeA;AAAA,IACnB,OACE,YACA,UACA,WACiC;AACjC,iBAAW,IAAI;AACf,eAAS,IAAI;AACb,UAAI;AACF,cAAM,WAAW,MAAM,sBAAsB,YAAY,UAAU,QAAQ,OAAO;AAClF,YAAI,SAAS,OAAO;AAClB,mBAAS,SAAS,KAAK;AACvB,iBAAO;AAAA,QACT;AACA,eAAO,SAAS,MAAM,UAAU;AAAA,MAClC,SAAS,KAAK;AACZ,cAAM,UAAU,eAAe,QAAQ,IAAI,UAAU;AACrD,iBAAS,OAAO;AAChB,eAAO;AAAA,MACT,UAAE;AACA,mBAAW,KAAK;AAAA,MAClB;AAAA,IACF;AAAA,IACA,CAAC,OAAO;AAAA,EACV;AAEA,QAAM,eAAeA;AAAA,IACnB,OAAO,YAAoB,aAAuC;AAChE,iBAAW,IAAI;AACf,eAAS,IAAI;AACb,UAAI;AACF,cAAM,WAAW,MAAM,sBAAsB,YAAY,UAAU,OAAO;AAC1E,YAAI,SAAS,OAAO;AAClB,mBAAS,SAAS,KAAK;AACvB,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT,SAAS,KAAK;AACZ,cAAM,UAAU,eAAe,QAAQ,IAAI,UAAU;AACrD,iBAAS,OAAO;AAChB,eAAO;AAAA,MACT,UAAE;AACA,mBAAW,KAAK;AAAA,MAClB;AAAA,IACF;AAAA,IACA,CAAC,OAAO;AAAA,EACV;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":["useMemo","useMemo","useState","useCallback","useState","useCallback"]}
|
|
@@ -60,6 +60,13 @@ async function countEntityRecordsApi(entityName, filters, options) {
|
|
|
60
60
|
const endpoint = `/api/v1/entities/${entityName}/records/count${queryString ? `?${queryString}` : ""}`;
|
|
61
61
|
return browserApiRequest(endpoint, { method: "GET", ...options });
|
|
62
62
|
}
|
|
63
|
+
async function provisionEntitiesApi(definitions, options) {
|
|
64
|
+
return browserApiRequest("/api/v1/admin/entities/update", {
|
|
65
|
+
method: "POST",
|
|
66
|
+
body: { definitions },
|
|
67
|
+
...options
|
|
68
|
+
});
|
|
69
|
+
}
|
|
63
70
|
|
|
64
71
|
export {
|
|
65
72
|
listEntityDefinitionsApi,
|
|
@@ -75,6 +82,7 @@ export {
|
|
|
75
82
|
bulkCreateEntityRecordsApi,
|
|
76
83
|
bulkUpdateEntityRecordsApi,
|
|
77
84
|
bulkDeleteEntityRecordsApi,
|
|
78
|
-
countEntityRecordsApi
|
|
85
|
+
countEntityRecordsApi,
|
|
86
|
+
provisionEntitiesApi
|
|
79
87
|
};
|
|
80
|
-
//# sourceMappingURL=chunk-
|
|
88
|
+
//# sourceMappingURL=chunk-SHMUKUYC.mjs.map
|