@elqnt/entity 2.2.0 → 2.2.2
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/dist/api/index.js +2 -2
- package/dist/api/index.mjs +1 -1
- package/dist/{chunk-SHMUKUYC.mjs → chunk-I4AGMG43.mjs} +9 -17
- package/dist/chunk-I4AGMG43.mjs.map +1 -0
- package/dist/{chunk-6SB5QDL5.js → chunk-PGP626VC.js} +9 -17
- package/dist/chunk-PGP626VC.js.map +1 -0
- package/dist/{chunk-F7ZN7FHI.mjs → chunk-WYJQU2QG.mjs} +29 -62
- package/dist/chunk-WYJQU2QG.mjs.map +1 -0
- package/dist/{chunk-5BPHCJ2G.js → chunk-ZPYEJEPU.js} +43 -76
- package/dist/chunk-ZPYEJEPU.js.map +1 -0
- package/dist/hooks/index.d.mts +3 -40
- package/dist/hooks/index.d.ts +3 -40
- package/dist/hooks/index.js +3 -3
- package/dist/hooks/index.mjs +2 -2
- package/dist/index.js +3 -3
- package/dist/index.mjs +2 -2
- package/package.json +3 -3
- package/dist/chunk-5BPHCJ2G.js.map +0 -1
- package/dist/chunk-6SB5QDL5.js.map +0 -1
- package/dist/chunk-F7ZN7FHI.mjs.map +0 -1
- package/dist/chunk-SHMUKUYC.mjs.map +0 -1
package/dist/api/index.js
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
var
|
|
18
|
+
var _chunkPGP626VCjs = require('../chunk-PGP626VC.js');
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
|
|
@@ -32,5 +32,5 @@ var _chunk6SB5QDL5js = require('../chunk-6SB5QDL5.js');
|
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
|
|
35
|
-
exports.bulkCreateEntityRecordsApi =
|
|
35
|
+
exports.bulkCreateEntityRecordsApi = _chunkPGP626VCjs.bulkCreateEntityRecordsApi; exports.bulkDeleteEntityRecordsApi = _chunkPGP626VCjs.bulkDeleteEntityRecordsApi; exports.bulkUpdateEntityRecordsApi = _chunkPGP626VCjs.bulkUpdateEntityRecordsApi; exports.countEntityRecordsApi = _chunkPGP626VCjs.countEntityRecordsApi; exports.createEntityDefinitionApi = _chunkPGP626VCjs.createEntityDefinitionApi; exports.createEntityRecordApi = _chunkPGP626VCjs.createEntityRecordApi; exports.deleteEntityDefinitionApi = _chunkPGP626VCjs.deleteEntityDefinitionApi; exports.deleteEntityRecordApi = _chunkPGP626VCjs.deleteEntityRecordApi; exports.getEntityDefinitionApi = _chunkPGP626VCjs.getEntityDefinitionApi; exports.getEntityRecordApi = _chunkPGP626VCjs.getEntityRecordApi; exports.listEntityDefinitionsApi = _chunkPGP626VCjs.listEntityDefinitionsApi; exports.provisionEntitiesApi = _chunkPGP626VCjs.provisionEntitiesApi; exports.queryEntityRecordsApi = _chunkPGP626VCjs.queryEntityRecordsApi; exports.updateEntityDefinitionApi = _chunkPGP626VCjs.updateEntityDefinitionApi; exports.updateEntityRecordApi = _chunkPGP626VCjs.updateEntityRecordApi;
|
|
36
36
|
//# sourceMappingURL=index.js.map
|
package/dist/api/index.mjs
CHANGED
|
@@ -18,15 +18,11 @@ async function deleteEntityDefinitionApi(entityName, options) {
|
|
|
18
18
|
return browserApiRequest(`/api/v1/entities/definitions/${entityName}`, { method: "DELETE", ...options });
|
|
19
19
|
}
|
|
20
20
|
async function queryEntityRecordsApi(entityName, query, options) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
21
|
+
return browserApiRequest(`/api/v1/entities/${entityName}/records/query`, {
|
|
22
|
+
method: "POST",
|
|
23
|
+
body: query,
|
|
24
|
+
...options
|
|
26
25
|
});
|
|
27
|
-
const queryString = params.toString();
|
|
28
|
-
const endpoint = `/api/v1/entities/${entityName}/records${queryString ? `?${queryString}` : ""}`;
|
|
29
|
-
return browserApiRequest(endpoint, { method: "GET", ...options });
|
|
30
26
|
}
|
|
31
27
|
async function getEntityRecordApi(entityName, recordId, options) {
|
|
32
28
|
return browserApiRequest(`/api/v1/entities/${entityName}/records/${recordId}`, { method: "GET", ...options });
|
|
@@ -50,15 +46,11 @@ async function bulkDeleteEntityRecordsApi(entityName, recordIds, options) {
|
|
|
50
46
|
return browserApiRequest(`/api/v1/entities/${entityName}/records/bulk`, { method: "DELETE", body: { recordIds }, ...options });
|
|
51
47
|
}
|
|
52
48
|
async function countEntityRecordsApi(entityName, filters, options) {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}
|
|
49
|
+
return browserApiRequest(`/api/v1/entities/${entityName}/records/count`, {
|
|
50
|
+
method: "POST",
|
|
51
|
+
body: filters,
|
|
52
|
+
...options
|
|
58
53
|
});
|
|
59
|
-
const queryString = params.toString();
|
|
60
|
-
const endpoint = `/api/v1/entities/${entityName}/records/count${queryString ? `?${queryString}` : ""}`;
|
|
61
|
-
return browserApiRequest(endpoint, { method: "GET", ...options });
|
|
62
54
|
}
|
|
63
55
|
async function provisionEntitiesApi(definitions, options) {
|
|
64
56
|
return browserApiRequest("/api/v1/admin/entities/update", {
|
|
@@ -85,4 +77,4 @@ export {
|
|
|
85
77
|
countEntityRecordsApi,
|
|
86
78
|
provisionEntitiesApi
|
|
87
79
|
};
|
|
88
|
-
//# sourceMappingURL=chunk-
|
|
80
|
+
//# sourceMappingURL=chunk-I4AGMG43.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../api/index.ts"],"sourcesContent":["/**\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 return browserApiRequest(`/api/v1/entities/${entityName}/records/query`, {\n method: \"POST\",\n body: query,\n ...options,\n });\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 return browserApiRequest(`/api/v1/entities/${entityName}/records/count`, {\n method: \"POST\",\n body: filters,\n ...options,\n });\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"],"mappings":";;;AAOA,SAAS,yBAAyB;AAgBlC,eAAsB,yBACpB,SACqD;AACrD,SAAO,kBAAkB,gCAAgC,EAAE,QAAQ,OAAO,GAAG,QAAQ,CAAC;AACxF;AAEA,eAAsB,uBACpB,YACA,SACgD;AAChD,SAAO,kBAAkB,gCAAgC,UAAU,IAAI,EAAE,QAAQ,OAAO,GAAG,QAAQ,CAAC;AACtG;AAEA,eAAsB,0BACpB,YACA,SACgD;AAChD,SAAO,kBAAkB,gCAAgC,EAAE,QAAQ,QAAQ,MAAM,YAAY,GAAG,QAAQ,CAAC;AAC3G;AAEA,eAAsB,0BACpB,YACA,YACA,SACgD;AAChD,SAAO,kBAAkB,gCAAgC,UAAU,IAAI,EAAE,QAAQ,OAAO,MAAM,YAAY,GAAG,QAAQ,CAAC;AACxH;AAEA,eAAsB,0BACpB,YACA,SACwE;AACxE,SAAO,kBAAkB,gCAAgC,UAAU,IAAI,EAAE,QAAQ,UAAU,GAAG,QAAQ,CAAC;AACzG;AAMA,eAAsB,sBACpB,YACA,OACA,SACiD;AACjD,SAAO,kBAAkB,oBAAoB,UAAU,kBAAkB;AAAA,IACvE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,GAAG;AAAA,EACL,CAAC;AACH;AAEA,eAAsB,mBACpB,YACA,UACA,SAC4C;AAC5C,SAAO,kBAAkB,oBAAoB,UAAU,YAAY,QAAQ,IAAI,EAAE,QAAQ,OAAO,GAAG,QAAQ,CAAC;AAC9G;AAEA,eAAsB,sBACpB,YACA,QACA,SAC4C;AAC5C,SAAO,kBAAkB,oBAAoB,UAAU,YAAY,EAAE,QAAQ,QAAQ,MAAM,QAAQ,GAAG,QAAQ,CAAC;AACjH;AAEA,eAAsB,sBACpB,YACA,UACA,QACA,SAC4C;AAC5C,SAAO,kBAAkB,oBAAoB,UAAU,YAAY,QAAQ,IAAI,EAAE,QAAQ,OAAO,MAAM,QAAQ,GAAG,QAAQ,CAAC;AAC5H;AAEA,eAAsB,sBACpB,YACA,UACA,SACwE;AACxE,SAAO,kBAAkB,oBAAoB,UAAU,YAAY,QAAQ,IAAI,EAAE,QAAQ,UAAU,GAAG,QAAQ,CAAC;AACjH;AAMA,eAAsB,2BACpB,YACA,SACA,SAC+E;AAC/E,SAAO,kBAAkB,oBAAoB,UAAU,iBAAiB,EAAE,QAAQ,QAAQ,MAAM,EAAE,QAAQ,GAAG,GAAG,QAAQ,CAAC;AAC3H;AAEA,eAAsB,2BACpB,YACA,SACA,SAC+E;AAC/E,SAAO,kBAAkB,oBAAoB,UAAU,iBAAiB,EAAE,QAAQ,OAAO,MAAM,EAAE,QAAQ,GAAG,GAAG,QAAQ,CAAC;AAC1H;AAEA,eAAsB,2BACpB,YACA,WACA,SACwE;AACxE,SAAO,kBAAkB,oBAAoB,UAAU,iBAAiB,EAAE,QAAQ,UAAU,MAAM,EAAE,UAAU,GAAG,GAAG,QAAQ,CAAC;AAC/H;AAMA,eAAsB,sBACpB,YACA,SACA,SACqE;AACrE,SAAO,kBAAkB,oBAAoB,UAAU,kBAAkB;AAAA,IACvE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,GAAG;AAAA,EACL,CAAC;AACH;AAqBA,eAAsB,qBACpB,aACA,SACiD;AACjD,SAAO,kBAAkB,iCAAiC;AAAA,IACxD,QAAQ;AAAA,IACR,MAAM,EAAE,YAAY;AAAA,IACpB,GAAG;AAAA,EACL,CAAC;AACH;","names":[]}
|
|
@@ -18,15 +18,11 @@ async function deleteEntityDefinitionApi(entityName, options) {
|
|
|
18
18
|
return _browser.browserApiRequest.call(void 0, `/api/v1/entities/definitions/${entityName}`, { method: "DELETE", ...options });
|
|
19
19
|
}
|
|
20
20
|
async function queryEntityRecordsApi(entityName, query, options) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
21
|
+
return _browser.browserApiRequest.call(void 0, `/api/v1/entities/${entityName}/records/query`, {
|
|
22
|
+
method: "POST",
|
|
23
|
+
body: query,
|
|
24
|
+
...options
|
|
26
25
|
});
|
|
27
|
-
const queryString = params.toString();
|
|
28
|
-
const endpoint = `/api/v1/entities/${entityName}/records${queryString ? `?${queryString}` : ""}`;
|
|
29
|
-
return _browser.browserApiRequest.call(void 0, endpoint, { method: "GET", ...options });
|
|
30
26
|
}
|
|
31
27
|
async function getEntityRecordApi(entityName, recordId, options) {
|
|
32
28
|
return _browser.browserApiRequest.call(void 0, `/api/v1/entities/${entityName}/records/${recordId}`, { method: "GET", ...options });
|
|
@@ -50,15 +46,11 @@ async function bulkDeleteEntityRecordsApi(entityName, recordIds, options) {
|
|
|
50
46
|
return _browser.browserApiRequest.call(void 0, `/api/v1/entities/${entityName}/records/bulk`, { method: "DELETE", body: { recordIds }, ...options });
|
|
51
47
|
}
|
|
52
48
|
async function countEntityRecordsApi(entityName, filters, options) {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}
|
|
49
|
+
return _browser.browserApiRequest.call(void 0, `/api/v1/entities/${entityName}/records/count`, {
|
|
50
|
+
method: "POST",
|
|
51
|
+
body: filters,
|
|
52
|
+
...options
|
|
58
53
|
});
|
|
59
|
-
const queryString = params.toString();
|
|
60
|
-
const endpoint = `/api/v1/entities/${entityName}/records/count${queryString ? `?${queryString}` : ""}`;
|
|
61
|
-
return _browser.browserApiRequest.call(void 0, endpoint, { method: "GET", ...options });
|
|
62
54
|
}
|
|
63
55
|
async function provisionEntitiesApi(definitions, options) {
|
|
64
56
|
return _browser.browserApiRequest.call(void 0, "/api/v1/admin/entities/update", {
|
|
@@ -85,4 +77,4 @@ async function provisionEntitiesApi(definitions, options) {
|
|
|
85
77
|
|
|
86
78
|
|
|
87
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; exports.provisionEntitiesApi = provisionEntitiesApi;
|
|
88
|
-
//# sourceMappingURL=chunk-
|
|
80
|
+
//# sourceMappingURL=chunk-PGP626VC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/eloquent/eloquent/packages/@elqnt/entity/dist/chunk-PGP626VC.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;AACM,EAAA;AAC7C,IAAA;AACF,IAAA;AACH,IAAA;AACJ,EAAA;AACH;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;AACd,EAAA;AAC7C,IAAA;AACF,IAAA;AACH,IAAA;AACJ,EAAA;AACH;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-PGP626VC.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 return browserApiRequest(`/api/v1/entities/${entityName}/records/query`, {\n method: \"POST\",\n body: query,\n ...options,\n });\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 return browserApiRequest(`/api/v1/entities/${entityName}/records/count`, {\n method: \"POST\",\n body: filters,\n ...options,\n });\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"]}
|
|
@@ -14,48 +14,11 @@ import {
|
|
|
14
14
|
queryEntityRecordsApi,
|
|
15
15
|
updateEntityDefinitionApi,
|
|
16
16
|
updateEntityRecordApi
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-I4AGMG43.mjs";
|
|
18
18
|
|
|
19
19
|
// hooks/use-entity-definitions.ts
|
|
20
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
|
-
}
|
|
21
|
+
import { useApiAsync } from "@elqnt/api-client/hooks";
|
|
59
22
|
|
|
60
23
|
// hooks/use-options-ref.ts
|
|
61
24
|
import { useRef, useEffect } from "react";
|
|
@@ -113,6 +76,7 @@ function useEntityDefinitions(options) {
|
|
|
113
76
|
|
|
114
77
|
// hooks/use-entity-records.ts
|
|
115
78
|
import { useMemo as useMemo2 } from "react";
|
|
79
|
+
import { useApiAsync as useApiAsync2 } from "@elqnt/api-client/hooks";
|
|
116
80
|
function useEntityRecords(options) {
|
|
117
81
|
const optionsRef = useOptionsRef(options);
|
|
118
82
|
const getEntityName = () => optionsRef.current.entityName;
|
|
@@ -120,7 +84,7 @@ function useEntityRecords(options) {
|
|
|
120
84
|
const { entityName: _, ...apiOptions } = optionsRef.current;
|
|
121
85
|
return apiOptions;
|
|
122
86
|
};
|
|
123
|
-
const { execute: queryRecords, loading: queryLoading, error: queryError } =
|
|
87
|
+
const { execute: queryRecords, loading: queryLoading, error: queryError } = useApiAsync2(
|
|
124
88
|
(params) => {
|
|
125
89
|
const queryParams = {
|
|
126
90
|
page: params?.page || 1,
|
|
@@ -155,42 +119,42 @@ function useEntityRecords(options) {
|
|
|
155
119
|
},
|
|
156
120
|
{ records: [], total: 0, page: 1, pageSize: 20 }
|
|
157
121
|
);
|
|
158
|
-
const { execute: getRecord, loading: getLoading, error: getError } =
|
|
122
|
+
const { execute: getRecord, loading: getLoading, error: getError } = useApiAsync2(
|
|
159
123
|
(recordId) => getEntityRecordApi(getEntityName(), recordId, getApiOptions()),
|
|
160
124
|
(data) => data.record || null,
|
|
161
125
|
null
|
|
162
126
|
);
|
|
163
|
-
const { execute: createRecord, loading: createLoading, error: createError } =
|
|
127
|
+
const { execute: createRecord, loading: createLoading, error: createError } = useApiAsync2(
|
|
164
128
|
(record) => createEntityRecordApi(getEntityName(), record, getApiOptions()),
|
|
165
129
|
(data) => data.record || null,
|
|
166
130
|
null
|
|
167
131
|
);
|
|
168
|
-
const { execute: updateRecord, loading: updateLoading, error: updateError } =
|
|
132
|
+
const { execute: updateRecord, loading: updateLoading, error: updateError } = useApiAsync2(
|
|
169
133
|
(recordId, record) => updateEntityRecordApi(getEntityName(), recordId, record, getApiOptions()),
|
|
170
134
|
(data) => data.record || null,
|
|
171
135
|
null
|
|
172
136
|
);
|
|
173
|
-
const { execute: deleteRecord, loading: deleteLoading, error: deleteError } =
|
|
137
|
+
const { execute: deleteRecord, loading: deleteLoading, error: deleteError } = useApiAsync2(
|
|
174
138
|
(recordId) => deleteEntityRecordApi(getEntityName(), recordId, getApiOptions()),
|
|
175
139
|
(data) => data.success,
|
|
176
140
|
false
|
|
177
141
|
);
|
|
178
|
-
const { execute: countRecords, loading: countLoading, error: countError } =
|
|
142
|
+
const { execute: countRecords, loading: countLoading, error: countError } = useApiAsync2(
|
|
179
143
|
(filters) => countEntityRecordsApi(getEntityName(), filters || {}, getApiOptions()),
|
|
180
144
|
(data) => data.count,
|
|
181
145
|
0
|
|
182
146
|
);
|
|
183
|
-
const { execute: bulkCreate, loading: bulkCreateLoading, error: bulkCreateError } =
|
|
147
|
+
const { execute: bulkCreate, loading: bulkCreateLoading, error: bulkCreateError } = useApiAsync2(
|
|
184
148
|
(records) => bulkCreateEntityRecordsApi(getEntityName(), records, getApiOptions()),
|
|
185
149
|
(data) => ({ records: data.records, success: true }),
|
|
186
150
|
{ success: false }
|
|
187
151
|
);
|
|
188
|
-
const { execute: bulkUpdate, loading: bulkUpdateLoading, error: bulkUpdateError } =
|
|
152
|
+
const { execute: bulkUpdate, loading: bulkUpdateLoading, error: bulkUpdateError } = useApiAsync2(
|
|
189
153
|
(records) => bulkUpdateEntityRecordsApi(getEntityName(), records, getApiOptions()),
|
|
190
154
|
(data) => ({ records: data.records, success: true }),
|
|
191
155
|
{ success: false }
|
|
192
156
|
);
|
|
193
|
-
const { execute: bulkDelete, loading: bulkDeleteLoading, error: bulkDeleteError } =
|
|
157
|
+
const { execute: bulkDelete, loading: bulkDeleteLoading, error: bulkDeleteError } = useApiAsync2(
|
|
194
158
|
(recordIds) => bulkDeleteEntityRecordsApi(getEntityName(), recordIds, getApiOptions()),
|
|
195
159
|
(data) => data.success,
|
|
196
160
|
false
|
|
@@ -228,11 +192,11 @@ function useEntityRecords(options) {
|
|
|
228
192
|
}
|
|
229
193
|
|
|
230
194
|
// hooks/use-entities.ts
|
|
231
|
-
import { useState
|
|
195
|
+
import { useState, useCallback } from "react";
|
|
232
196
|
function useEntities(options) {
|
|
233
|
-
const [loading, setLoading] =
|
|
234
|
-
const [error, setError] =
|
|
235
|
-
const listDefinitions =
|
|
197
|
+
const [loading, setLoading] = useState(false);
|
|
198
|
+
const [error, setError] = useState(null);
|
|
199
|
+
const listDefinitions = useCallback(async () => {
|
|
236
200
|
setLoading(true);
|
|
237
201
|
setError(null);
|
|
238
202
|
try {
|
|
@@ -250,7 +214,7 @@ function useEntities(options) {
|
|
|
250
214
|
setLoading(false);
|
|
251
215
|
}
|
|
252
216
|
}, [options]);
|
|
253
|
-
const getDefinition =
|
|
217
|
+
const getDefinition = useCallback(
|
|
254
218
|
async (entityName) => {
|
|
255
219
|
setLoading(true);
|
|
256
220
|
setError(null);
|
|
@@ -271,7 +235,7 @@ function useEntities(options) {
|
|
|
271
235
|
},
|
|
272
236
|
[options]
|
|
273
237
|
);
|
|
274
|
-
const queryRecords =
|
|
238
|
+
const queryRecords = useCallback(
|
|
275
239
|
async (entityName, query = {}) => {
|
|
276
240
|
setLoading(true);
|
|
277
241
|
setError(null);
|
|
@@ -319,7 +283,7 @@ function useEntities(options) {
|
|
|
319
283
|
},
|
|
320
284
|
[options]
|
|
321
285
|
);
|
|
322
|
-
const getRecord =
|
|
286
|
+
const getRecord = useCallback(
|
|
323
287
|
async (entityName, recordId) => {
|
|
324
288
|
setLoading(true);
|
|
325
289
|
setError(null);
|
|
@@ -340,7 +304,7 @@ function useEntities(options) {
|
|
|
340
304
|
},
|
|
341
305
|
[options]
|
|
342
306
|
);
|
|
343
|
-
const createRecord =
|
|
307
|
+
const createRecord = useCallback(
|
|
344
308
|
async (entityName, record) => {
|
|
345
309
|
setLoading(true);
|
|
346
310
|
setError(null);
|
|
@@ -361,7 +325,7 @@ function useEntities(options) {
|
|
|
361
325
|
},
|
|
362
326
|
[options]
|
|
363
327
|
);
|
|
364
|
-
const updateRecord =
|
|
328
|
+
const updateRecord = useCallback(
|
|
365
329
|
async (entityName, recordId, record) => {
|
|
366
330
|
setLoading(true);
|
|
367
331
|
setError(null);
|
|
@@ -382,7 +346,7 @@ function useEntities(options) {
|
|
|
382
346
|
},
|
|
383
347
|
[options]
|
|
384
348
|
);
|
|
385
|
-
const deleteRecord =
|
|
349
|
+
const deleteRecord = useCallback(
|
|
386
350
|
async (entityName, recordId) => {
|
|
387
351
|
setLoading(true);
|
|
388
352
|
setError(null);
|
|
@@ -416,12 +380,15 @@ function useEntities(options) {
|
|
|
416
380
|
};
|
|
417
381
|
}
|
|
418
382
|
|
|
383
|
+
// hooks/index.ts
|
|
384
|
+
import { useApiAsync as useApiAsync3, useAsync } from "@elqnt/api-client/hooks";
|
|
385
|
+
|
|
419
386
|
export {
|
|
420
|
-
useAsync,
|
|
421
|
-
useApiAsync,
|
|
422
387
|
useOptionsRef,
|
|
423
388
|
useEntityDefinitions,
|
|
424
389
|
useEntityRecords,
|
|
425
|
-
useEntities
|
|
390
|
+
useEntities,
|
|
391
|
+
useApiAsync3 as useApiAsync,
|
|
392
|
+
useAsync
|
|
426
393
|
};
|
|
427
|
-
//# sourceMappingURL=chunk-
|
|
394
|
+
//# sourceMappingURL=chunk-WYJQU2QG.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../hooks/use-entity-definitions.ts","../hooks/use-options-ref.ts","../hooks/use-entity-records.ts","../hooks/use-entities.ts","../hooks/index.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 \"@elqnt/api-client/hooks\";\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 * 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 \"@elqnt/api-client/hooks\";\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","\"use client\";\n\n/**\n * Entity hooks for React applications\n *\n * @example Entity Definitions\n * ```tsx\n * import { useEntityDefinitions } from \"@elqnt/entity/hooks\";\n *\n * function DefinitionsComponent() {\n * const { listDefinitions, getDefinition, createDefinition } = useEntityDefinitions({\n * baseUrl: apiGatewayUrl,\n * orgId: selectedOrgId,\n * });\n *\n * const definitions = await listDefinitions();\n * const contactsDef = await getDefinition(\"contacts\");\n * }\n * ```\n *\n * @example Entity Records\n * ```tsx\n * import { useEntityRecords } from \"@elqnt/entity/hooks\";\n *\n * function RecordsComponent() {\n * const {\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 count = await countRecords({ status: \"active\" });\n * }\n * ```\n *\n * @module hooks\n */\n\n// Entity definitions hook\nexport { useEntityDefinitions } from \"./use-entity-definitions\";\nexport type { UseEntityDefinitionsOptions } from \"./use-entity-definitions\";\n\n// Entity records hook\nexport { useEntityRecords } from \"./use-entity-records\";\nexport type {\n UseEntityRecordsOptions,\n QueryRecordsParams,\n QueryRecordsResult,\n BulkOperationResult,\n} from \"./use-entity-records\";\n\n// Legacy hook (kept for backward compatibility)\nexport {\n useEntities,\n type UseEntitiesOptions,\n type QueryOptions,\n type QueryResult,\n} from \"./use-entities\";\n\n// Re-export hook utilities for advanced usage\nexport { useApiAsync, useAsync } from \"@elqnt/api-client/hooks\";\nexport { useOptionsRef } from \"./use-options-ref\";\nexport type { UseAsyncOptions, UseAsyncReturn } from \"@elqnt/api-client/hooks\";\n"],"mappings":"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","names":["useMemo","useApiAsync","useApiAsync","useMemo","useApiAsync"]}
|
|
@@ -14,48 +14,11 @@
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
var
|
|
17
|
+
var _chunkPGP626VCjs = require('./chunk-PGP626VC.js');
|
|
18
18
|
|
|
19
19
|
// hooks/use-entity-definitions.ts
|
|
20
20
|
var _react = require('react');
|
|
21
|
-
|
|
22
|
-
// hooks/use-async.ts
|
|
23
|
-
|
|
24
|
-
function useAsync(asyncFn, transform, defaultValue, options = {}) {
|
|
25
|
-
const { resetErrorOnRequest = true } = options;
|
|
26
|
-
const [loading, setLoading] = _react.useState.call(void 0, false);
|
|
27
|
-
const [error, setError] = _react.useState.call(void 0, null);
|
|
28
|
-
const execute = _react.useCallback.call(void 0,
|
|
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
|
-
}
|
|
21
|
+
var _hooks = require('@elqnt/api-client/hooks');
|
|
59
22
|
|
|
60
23
|
// hooks/use-options-ref.ts
|
|
61
24
|
|
|
@@ -70,28 +33,28 @@ function useOptionsRef(options) {
|
|
|
70
33
|
// hooks/use-entity-definitions.ts
|
|
71
34
|
function useEntityDefinitions(options) {
|
|
72
35
|
const optionsRef = useOptionsRef(options);
|
|
73
|
-
const { execute: listDefinitions, loading: listLoading, error: listError } = useApiAsync(
|
|
74
|
-
() =>
|
|
36
|
+
const { execute: listDefinitions, loading: listLoading, error: listError } = _hooks.useApiAsync.call(void 0,
|
|
37
|
+
() => _chunkPGP626VCjs.listEntityDefinitionsApi.call(void 0, optionsRef.current),
|
|
75
38
|
(data) => data.definitions || [],
|
|
76
39
|
[]
|
|
77
40
|
);
|
|
78
|
-
const { execute: getDefinition, loading: getLoading, error: getError } = useApiAsync(
|
|
79
|
-
(entityName) =>
|
|
41
|
+
const { execute: getDefinition, loading: getLoading, error: getError } = _hooks.useApiAsync.call(void 0,
|
|
42
|
+
(entityName) => _chunkPGP626VCjs.getEntityDefinitionApi.call(void 0, entityName, optionsRef.current),
|
|
80
43
|
(data) => data.definition || null,
|
|
81
44
|
null
|
|
82
45
|
);
|
|
83
|
-
const { execute: createDefinition, loading: createLoading, error: createError } = useApiAsync(
|
|
84
|
-
(definition) =>
|
|
46
|
+
const { execute: createDefinition, loading: createLoading, error: createError } = _hooks.useApiAsync.call(void 0,
|
|
47
|
+
(definition) => _chunkPGP626VCjs.createEntityDefinitionApi.call(void 0, definition, optionsRef.current),
|
|
85
48
|
(data) => data.definition || null,
|
|
86
49
|
null
|
|
87
50
|
);
|
|
88
|
-
const { execute: updateDefinition, loading: updateLoading, error: updateError } = useApiAsync(
|
|
89
|
-
(entityName, definition) =>
|
|
51
|
+
const { execute: updateDefinition, loading: updateLoading, error: updateError } = _hooks.useApiAsync.call(void 0,
|
|
52
|
+
(entityName, definition) => _chunkPGP626VCjs.updateEntityDefinitionApi.call(void 0, entityName, definition, optionsRef.current),
|
|
90
53
|
(data) => data.definition || null,
|
|
91
54
|
null
|
|
92
55
|
);
|
|
93
|
-
const { execute: deleteDefinition, loading: deleteLoading, error: deleteError } = useApiAsync(
|
|
94
|
-
(entityName) =>
|
|
56
|
+
const { execute: deleteDefinition, loading: deleteLoading, error: deleteError } = _hooks.useApiAsync.call(void 0,
|
|
57
|
+
(entityName) => _chunkPGP626VCjs.deleteEntityDefinitionApi.call(void 0, entityName, optionsRef.current),
|
|
95
58
|
(data) => data.success,
|
|
96
59
|
false
|
|
97
60
|
);
|
|
@@ -113,6 +76,7 @@ function useEntityDefinitions(options) {
|
|
|
113
76
|
|
|
114
77
|
// hooks/use-entity-records.ts
|
|
115
78
|
|
|
79
|
+
|
|
116
80
|
function useEntityRecords(options) {
|
|
117
81
|
const optionsRef = useOptionsRef(options);
|
|
118
82
|
const getEntityName = () => optionsRef.current.entityName;
|
|
@@ -120,7 +84,7 @@ function useEntityRecords(options) {
|
|
|
120
84
|
const { entityName: _, ...apiOptions } = optionsRef.current;
|
|
121
85
|
return apiOptions;
|
|
122
86
|
};
|
|
123
|
-
const { execute: queryRecords, loading: queryLoading, error: queryError } = useApiAsync(
|
|
87
|
+
const { execute: queryRecords, loading: queryLoading, error: queryError } = _hooks.useApiAsync.call(void 0,
|
|
124
88
|
(params) => {
|
|
125
89
|
const queryParams = {
|
|
126
90
|
page: _optionalChain([params, 'optionalAccess', _2 => _2.page]) || 1,
|
|
@@ -135,7 +99,7 @@ function useEntityRecords(options) {
|
|
|
135
99
|
if (_optionalChain([params, 'optionalAccess', _6 => _6.sortOrder])) {
|
|
136
100
|
queryParams.sortOrder = params.sortOrder;
|
|
137
101
|
}
|
|
138
|
-
return
|
|
102
|
+
return _chunkPGP626VCjs.queryEntityRecordsApi.call(void 0, getEntityName(), queryParams, getApiOptions());
|
|
139
103
|
},
|
|
140
104
|
(data) => {
|
|
141
105
|
if (_optionalChain([data, 'optionalAccess', _7 => _7.records, 'optionalAccess', _8 => _8.items])) {
|
|
@@ -155,43 +119,43 @@ function useEntityRecords(options) {
|
|
|
155
119
|
},
|
|
156
120
|
{ records: [], total: 0, page: 1, pageSize: 20 }
|
|
157
121
|
);
|
|
158
|
-
const { execute: getRecord, loading: getLoading, error: getError } = useApiAsync(
|
|
159
|
-
(recordId) =>
|
|
122
|
+
const { execute: getRecord, loading: getLoading, error: getError } = _hooks.useApiAsync.call(void 0,
|
|
123
|
+
(recordId) => _chunkPGP626VCjs.getEntityRecordApi.call(void 0, getEntityName(), recordId, getApiOptions()),
|
|
160
124
|
(data) => data.record || null,
|
|
161
125
|
null
|
|
162
126
|
);
|
|
163
|
-
const { execute: createRecord, loading: createLoading, error: createError } = useApiAsync(
|
|
164
|
-
(record) =>
|
|
127
|
+
const { execute: createRecord, loading: createLoading, error: createError } = _hooks.useApiAsync.call(void 0,
|
|
128
|
+
(record) => _chunkPGP626VCjs.createEntityRecordApi.call(void 0, getEntityName(), record, getApiOptions()),
|
|
165
129
|
(data) => data.record || null,
|
|
166
130
|
null
|
|
167
131
|
);
|
|
168
|
-
const { execute: updateRecord, loading: updateLoading, error: updateError } = useApiAsync(
|
|
169
|
-
(recordId, record) =>
|
|
132
|
+
const { execute: updateRecord, loading: updateLoading, error: updateError } = _hooks.useApiAsync.call(void 0,
|
|
133
|
+
(recordId, record) => _chunkPGP626VCjs.updateEntityRecordApi.call(void 0, getEntityName(), recordId, record, getApiOptions()),
|
|
170
134
|
(data) => data.record || null,
|
|
171
135
|
null
|
|
172
136
|
);
|
|
173
|
-
const { execute: deleteRecord, loading: deleteLoading, error: deleteError } = useApiAsync(
|
|
174
|
-
(recordId) =>
|
|
137
|
+
const { execute: deleteRecord, loading: deleteLoading, error: deleteError } = _hooks.useApiAsync.call(void 0,
|
|
138
|
+
(recordId) => _chunkPGP626VCjs.deleteEntityRecordApi.call(void 0, getEntityName(), recordId, getApiOptions()),
|
|
175
139
|
(data) => data.success,
|
|
176
140
|
false
|
|
177
141
|
);
|
|
178
|
-
const { execute: countRecords, loading: countLoading, error: countError } = useApiAsync(
|
|
179
|
-
(filters) =>
|
|
142
|
+
const { execute: countRecords, loading: countLoading, error: countError } = _hooks.useApiAsync.call(void 0,
|
|
143
|
+
(filters) => _chunkPGP626VCjs.countEntityRecordsApi.call(void 0, getEntityName(), filters || {}, getApiOptions()),
|
|
180
144
|
(data) => data.count,
|
|
181
145
|
0
|
|
182
146
|
);
|
|
183
|
-
const { execute: bulkCreate, loading: bulkCreateLoading, error: bulkCreateError } = useApiAsync(
|
|
184
|
-
(records) =>
|
|
147
|
+
const { execute: bulkCreate, loading: bulkCreateLoading, error: bulkCreateError } = _hooks.useApiAsync.call(void 0,
|
|
148
|
+
(records) => _chunkPGP626VCjs.bulkCreateEntityRecordsApi.call(void 0, getEntityName(), records, getApiOptions()),
|
|
185
149
|
(data) => ({ records: data.records, success: true }),
|
|
186
150
|
{ success: false }
|
|
187
151
|
);
|
|
188
|
-
const { execute: bulkUpdate, loading: bulkUpdateLoading, error: bulkUpdateError } = useApiAsync(
|
|
189
|
-
(records) =>
|
|
152
|
+
const { execute: bulkUpdate, loading: bulkUpdateLoading, error: bulkUpdateError } = _hooks.useApiAsync.call(void 0,
|
|
153
|
+
(records) => _chunkPGP626VCjs.bulkUpdateEntityRecordsApi.call(void 0, getEntityName(), records, getApiOptions()),
|
|
190
154
|
(data) => ({ records: data.records, success: true }),
|
|
191
155
|
{ success: false }
|
|
192
156
|
);
|
|
193
|
-
const { execute: bulkDelete, loading: bulkDeleteLoading, error: bulkDeleteError } = useApiAsync(
|
|
194
|
-
(recordIds) =>
|
|
157
|
+
const { execute: bulkDelete, loading: bulkDeleteLoading, error: bulkDeleteError } = _hooks.useApiAsync.call(void 0,
|
|
158
|
+
(recordIds) => _chunkPGP626VCjs.bulkDeleteEntityRecordsApi.call(void 0, getEntityName(), recordIds, getApiOptions()),
|
|
195
159
|
(data) => data.success,
|
|
196
160
|
false
|
|
197
161
|
);
|
|
@@ -236,7 +200,7 @@ function useEntities(options) {
|
|
|
236
200
|
setLoading(true);
|
|
237
201
|
setError(null);
|
|
238
202
|
try {
|
|
239
|
-
const response = await
|
|
203
|
+
const response = await _chunkPGP626VCjs.listEntityDefinitionsApi.call(void 0, options);
|
|
240
204
|
if (response.error) {
|
|
241
205
|
setError(response.error);
|
|
242
206
|
return [];
|
|
@@ -255,7 +219,7 @@ function useEntities(options) {
|
|
|
255
219
|
setLoading(true);
|
|
256
220
|
setError(null);
|
|
257
221
|
try {
|
|
258
|
-
const response = await
|
|
222
|
+
const response = await _chunkPGP626VCjs.getEntityDefinitionApi.call(void 0, entityName, options);
|
|
259
223
|
if (response.error) {
|
|
260
224
|
setError(response.error);
|
|
261
225
|
return null;
|
|
@@ -289,7 +253,7 @@ function useEntities(options) {
|
|
|
289
253
|
if (query.sortOrder) {
|
|
290
254
|
queryParams.sortOrder = query.sortOrder;
|
|
291
255
|
}
|
|
292
|
-
const response = await
|
|
256
|
+
const response = await _chunkPGP626VCjs.queryEntityRecordsApi.call(void 0, entityName, queryParams, options);
|
|
293
257
|
if (response.error) {
|
|
294
258
|
setError(response.error);
|
|
295
259
|
return { records: [], total: 0, page: 1, pageSize: 20 };
|
|
@@ -324,7 +288,7 @@ function useEntities(options) {
|
|
|
324
288
|
setLoading(true);
|
|
325
289
|
setError(null);
|
|
326
290
|
try {
|
|
327
|
-
const response = await
|
|
291
|
+
const response = await _chunkPGP626VCjs.getEntityRecordApi.call(void 0, entityName, recordId, options);
|
|
328
292
|
if (response.error) {
|
|
329
293
|
setError(response.error);
|
|
330
294
|
return null;
|
|
@@ -345,7 +309,7 @@ function useEntities(options) {
|
|
|
345
309
|
setLoading(true);
|
|
346
310
|
setError(null);
|
|
347
311
|
try {
|
|
348
|
-
const response = await
|
|
312
|
+
const response = await _chunkPGP626VCjs.createEntityRecordApi.call(void 0, entityName, record, options);
|
|
349
313
|
if (response.error) {
|
|
350
314
|
setError(response.error);
|
|
351
315
|
return null;
|
|
@@ -366,7 +330,7 @@ function useEntities(options) {
|
|
|
366
330
|
setLoading(true);
|
|
367
331
|
setError(null);
|
|
368
332
|
try {
|
|
369
|
-
const response = await
|
|
333
|
+
const response = await _chunkPGP626VCjs.updateEntityRecordApi.call(void 0, entityName, recordId, record, options);
|
|
370
334
|
if (response.error) {
|
|
371
335
|
setError(response.error);
|
|
372
336
|
return null;
|
|
@@ -387,7 +351,7 @@ function useEntities(options) {
|
|
|
387
351
|
setLoading(true);
|
|
388
352
|
setError(null);
|
|
389
353
|
try {
|
|
390
|
-
const response = await
|
|
354
|
+
const response = await _chunkPGP626VCjs.deleteEntityRecordApi.call(void 0, entityName, recordId, options);
|
|
391
355
|
if (response.error) {
|
|
392
356
|
setError(response.error);
|
|
393
357
|
return false;
|
|
@@ -416,6 +380,9 @@ function useEntities(options) {
|
|
|
416
380
|
};
|
|
417
381
|
}
|
|
418
382
|
|
|
383
|
+
// hooks/index.ts
|
|
384
|
+
|
|
385
|
+
|
|
419
386
|
|
|
420
387
|
|
|
421
388
|
|
|
@@ -423,5 +390,5 @@ function useEntities(options) {
|
|
|
423
390
|
|
|
424
391
|
|
|
425
392
|
|
|
426
|
-
exports.
|
|
427
|
-
//# sourceMappingURL=chunk-
|
|
393
|
+
exports.useOptionsRef = useOptionsRef; exports.useEntityDefinitions = useEntityDefinitions; exports.useEntityRecords = useEntityRecords; exports.useEntities = useEntities; exports.useApiAsync = _hooks.useApiAsync; exports.useAsync = _hooks.useAsync;
|
|
394
|
+
//# sourceMappingURL=chunk-ZPYEJEPU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/eloquent/eloquent/packages/@elqnt/entity/dist/chunk-ZPYEJEPU.js","../hooks/use-entity-definitions.ts","../hooks/use-options-ref.ts","../hooks/use-entity-records.ts","../hooks/use-entities.ts","../hooks/index.ts"],"names":["useApiAsync","useMemo"],"mappings":"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","file":"/home/runner/work/eloquent/eloquent/packages/@elqnt/entity/dist/chunk-ZPYEJEPU.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 \"@elqnt/api-client/hooks\";\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 * 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 \"@elqnt/api-client/hooks\";\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","\"use client\";\n\n/**\n * Entity hooks for React applications\n *\n * @example Entity Definitions\n * ```tsx\n * import { useEntityDefinitions } from \"@elqnt/entity/hooks\";\n *\n * function DefinitionsComponent() {\n * const { listDefinitions, getDefinition, createDefinition } = useEntityDefinitions({\n * baseUrl: apiGatewayUrl,\n * orgId: selectedOrgId,\n * });\n *\n * const definitions = await listDefinitions();\n * const contactsDef = await getDefinition(\"contacts\");\n * }\n * ```\n *\n * @example Entity Records\n * ```tsx\n * import { useEntityRecords } from \"@elqnt/entity/hooks\";\n *\n * function RecordsComponent() {\n * const {\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 count = await countRecords({ status: \"active\" });\n * }\n * ```\n *\n * @module hooks\n */\n\n// Entity definitions hook\nexport { useEntityDefinitions } from \"./use-entity-definitions\";\nexport type { UseEntityDefinitionsOptions } from \"./use-entity-definitions\";\n\n// Entity records hook\nexport { useEntityRecords } from \"./use-entity-records\";\nexport type {\n UseEntityRecordsOptions,\n QueryRecordsParams,\n QueryRecordsResult,\n BulkOperationResult,\n} from \"./use-entity-records\";\n\n// Legacy hook (kept for backward compatibility)\nexport {\n useEntities,\n type UseEntitiesOptions,\n type QueryOptions,\n type QueryResult,\n} from \"./use-entities\";\n\n// Re-export hook utilities for advanced usage\nexport { useApiAsync, useAsync } from \"@elqnt/api-client/hooks\";\nexport { useOptionsRef } from \"./use-options-ref\";\nexport type { UseAsyncOptions, UseAsyncReturn } from \"@elqnt/api-client/hooks\";\n"]}
|
package/dist/hooks/index.d.mts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { ApiClientOptions
|
|
1
|
+
import { ApiClientOptions } from '@elqnt/api-client';
|
|
2
2
|
import { EntityDefinition, EntityRecord } from '../models/index.mjs';
|
|
3
3
|
export { Q as QueryOptions, a as QueryResult, U as UseEntitiesOptions, u as useEntities } from '../use-entities-gK_B9I2n.mjs';
|
|
4
|
+
export { UseAsyncOptions, UseAsyncReturn, useApiAsync, useAsync } from '@elqnt/api-client/hooks';
|
|
4
5
|
import * as react from 'react';
|
|
5
6
|
import '@elqnt/types';
|
|
6
7
|
|
|
@@ -85,44 +86,6 @@ declare function useEntityRecords(options: UseEntityRecordsOptions): {
|
|
|
85
86
|
bulkDelete: (recordIds: string[]) => Promise<boolean>;
|
|
86
87
|
};
|
|
87
88
|
|
|
88
|
-
interface UseAsyncOptions {
|
|
89
|
-
/** Reset error on new request */
|
|
90
|
-
resetErrorOnRequest?: boolean;
|
|
91
|
-
}
|
|
92
|
-
interface UseAsyncReturn<TArgs extends unknown[], TResult> {
|
|
93
|
-
execute: (...args: TArgs) => Promise<TResult>;
|
|
94
|
-
loading: boolean;
|
|
95
|
-
error: string | null;
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Generic async operation hook with loading/error states
|
|
99
|
-
*
|
|
100
|
-
* @example
|
|
101
|
-
* ```tsx
|
|
102
|
-
* const { execute: fetchUser, loading, error } = useAsync(
|
|
103
|
-
* (userId: string) => getUserApi(userId, options),
|
|
104
|
-
* (data) => data.user,
|
|
105
|
-
* null
|
|
106
|
-
* );
|
|
107
|
-
*
|
|
108
|
-
* const user = await fetchUser("user-123");
|
|
109
|
-
* ```
|
|
110
|
-
*/
|
|
111
|
-
declare function useAsync<TArgs extends unknown[], TData, TResult>(asyncFn: (...args: TArgs) => Promise<ApiResponse<TData>>, transform: (data: TData) => TResult, defaultValue: TResult, options?: UseAsyncOptions): UseAsyncReturn<TArgs, TResult>;
|
|
112
|
-
/**
|
|
113
|
-
* Simplified async hook for API operations
|
|
114
|
-
*
|
|
115
|
-
* @example
|
|
116
|
-
* ```tsx
|
|
117
|
-
* const { execute: getUsers, loading, error } = useApiAsync(
|
|
118
|
-
* () => listUsersApi(optionsRef.current),
|
|
119
|
-
* (data) => data.users,
|
|
120
|
-
* []
|
|
121
|
-
* );
|
|
122
|
-
* ```
|
|
123
|
-
*/
|
|
124
|
-
declare function useApiAsync<TArgs extends unknown[], TData, TResult>(asyncFn: (...args: TArgs) => Promise<ApiResponse<TData>>, transform: (data: TData) => TResult, defaultValue: TResult): UseAsyncReturn<TArgs, TResult>;
|
|
125
|
-
|
|
126
89
|
/**
|
|
127
90
|
* Hook that keeps options in a ref for stable callback access
|
|
128
91
|
*
|
|
@@ -138,4 +101,4 @@ declare function useApiAsync<TArgs extends unknown[], TData, TResult>(asyncFn: (
|
|
|
138
101
|
*/
|
|
139
102
|
declare function useOptionsRef<T>(options: T): react.RefObject<T>;
|
|
140
103
|
|
|
141
|
-
export { type BulkOperationResult, type QueryRecordsParams, type QueryRecordsResult, type
|
|
104
|
+
export { type BulkOperationResult, type QueryRecordsParams, type QueryRecordsResult, type UseEntityDefinitionsOptions, type UseEntityRecordsOptions, useEntityDefinitions, useEntityRecords, useOptionsRef };
|
package/dist/hooks/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { ApiClientOptions
|
|
1
|
+
import { ApiClientOptions } from '@elqnt/api-client';
|
|
2
2
|
import { EntityDefinition, EntityRecord } from '../models/index.js';
|
|
3
3
|
export { Q as QueryOptions, a as QueryResult, U as UseEntitiesOptions, u as useEntities } from '../use-entities-CC3WhBDv.js';
|
|
4
|
+
export { UseAsyncOptions, UseAsyncReturn, useApiAsync, useAsync } from '@elqnt/api-client/hooks';
|
|
4
5
|
import * as react from 'react';
|
|
5
6
|
import '@elqnt/types';
|
|
6
7
|
|
|
@@ -85,44 +86,6 @@ declare function useEntityRecords(options: UseEntityRecordsOptions): {
|
|
|
85
86
|
bulkDelete: (recordIds: string[]) => Promise<boolean>;
|
|
86
87
|
};
|
|
87
88
|
|
|
88
|
-
interface UseAsyncOptions {
|
|
89
|
-
/** Reset error on new request */
|
|
90
|
-
resetErrorOnRequest?: boolean;
|
|
91
|
-
}
|
|
92
|
-
interface UseAsyncReturn<TArgs extends unknown[], TResult> {
|
|
93
|
-
execute: (...args: TArgs) => Promise<TResult>;
|
|
94
|
-
loading: boolean;
|
|
95
|
-
error: string | null;
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Generic async operation hook with loading/error states
|
|
99
|
-
*
|
|
100
|
-
* @example
|
|
101
|
-
* ```tsx
|
|
102
|
-
* const { execute: fetchUser, loading, error } = useAsync(
|
|
103
|
-
* (userId: string) => getUserApi(userId, options),
|
|
104
|
-
* (data) => data.user,
|
|
105
|
-
* null
|
|
106
|
-
* );
|
|
107
|
-
*
|
|
108
|
-
* const user = await fetchUser("user-123");
|
|
109
|
-
* ```
|
|
110
|
-
*/
|
|
111
|
-
declare function useAsync<TArgs extends unknown[], TData, TResult>(asyncFn: (...args: TArgs) => Promise<ApiResponse<TData>>, transform: (data: TData) => TResult, defaultValue: TResult, options?: UseAsyncOptions): UseAsyncReturn<TArgs, TResult>;
|
|
112
|
-
/**
|
|
113
|
-
* Simplified async hook for API operations
|
|
114
|
-
*
|
|
115
|
-
* @example
|
|
116
|
-
* ```tsx
|
|
117
|
-
* const { execute: getUsers, loading, error } = useApiAsync(
|
|
118
|
-
* () => listUsersApi(optionsRef.current),
|
|
119
|
-
* (data) => data.users,
|
|
120
|
-
* []
|
|
121
|
-
* );
|
|
122
|
-
* ```
|
|
123
|
-
*/
|
|
124
|
-
declare function useApiAsync<TArgs extends unknown[], TData, TResult>(asyncFn: (...args: TArgs) => Promise<ApiResponse<TData>>, transform: (data: TData) => TResult, defaultValue: TResult): UseAsyncReturn<TArgs, TResult>;
|
|
125
|
-
|
|
126
89
|
/**
|
|
127
90
|
* Hook that keeps options in a ref for stable callback access
|
|
128
91
|
*
|
|
@@ -138,4 +101,4 @@ declare function useApiAsync<TArgs extends unknown[], TData, TResult>(asyncFn: (
|
|
|
138
101
|
*/
|
|
139
102
|
declare function useOptionsRef<T>(options: T): react.RefObject<T>;
|
|
140
103
|
|
|
141
|
-
export { type BulkOperationResult, type QueryRecordsParams, type QueryRecordsResult, type
|
|
104
|
+
export { type BulkOperationResult, type QueryRecordsParams, type QueryRecordsResult, type UseEntityDefinitionsOptions, type UseEntityRecordsOptions, useEntityDefinitions, useEntityRecords, useOptionsRef };
|
package/dist/hooks/index.js
CHANGED
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
var
|
|
11
|
-
require('../chunk-
|
|
10
|
+
var _chunkZPYEJEPUjs = require('../chunk-ZPYEJEPU.js');
|
|
11
|
+
require('../chunk-PGP626VC.js');
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
|
|
@@ -16,5 +16,5 @@ require('../chunk-6SB5QDL5.js');
|
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
exports.useApiAsync =
|
|
19
|
+
exports.useApiAsync = _chunkZPYEJEPUjs.useApiAsync; exports.useAsync = _chunkZPYEJEPUjs.useAsync; exports.useEntities = _chunkZPYEJEPUjs.useEntities; exports.useEntityDefinitions = _chunkZPYEJEPUjs.useEntityDefinitions; exports.useEntityRecords = _chunkZPYEJEPUjs.useEntityRecords; exports.useOptionsRef = _chunkZPYEJEPUjs.useOptionsRef;
|
|
20
20
|
//# sourceMappingURL=index.js.map
|
package/dist/hooks/index.mjs
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var _chunkZPYEJEPUjs = require('./chunk-ZPYEJEPU.js');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
@@ -17,7 +17,7 @@ var _chunk5BPHCJ2Gjs = require('./chunk-5BPHCJ2G.js');
|
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
|
|
20
|
-
var
|
|
20
|
+
var _chunkPGP626VCjs = require('./chunk-PGP626VC.js');
|
|
21
21
|
|
|
22
22
|
// store/entity-definition-slice.ts
|
|
23
23
|
var _toolkit = require('@reduxjs/toolkit');
|
|
@@ -248,5 +248,5 @@ var PREDEFINED_COLORS = [
|
|
|
248
248
|
|
|
249
249
|
|
|
250
250
|
|
|
251
|
-
exports.PREDEFINED_COLORS = PREDEFINED_COLORS; exports.bulkCreateEntityRecordsApi =
|
|
251
|
+
exports.PREDEFINED_COLORS = PREDEFINED_COLORS; exports.bulkCreateEntityRecordsApi = _chunkPGP626VCjs.bulkCreateEntityRecordsApi; exports.bulkDeleteEntityRecordsApi = _chunkPGP626VCjs.bulkDeleteEntityRecordsApi; exports.bulkUpdateEntityRecordsApi = _chunkPGP626VCjs.bulkUpdateEntityRecordsApi; exports.countEntityRecordsApi = _chunkPGP626VCjs.countEntityRecordsApi; exports.createEntityDefinitionApi = _chunkPGP626VCjs.createEntityDefinitionApi; exports.createEntityRecordApi = _chunkPGP626VCjs.createEntityRecordApi; exports.deleteEntityDefinitionApi = _chunkPGP626VCjs.deleteEntityDefinitionApi; exports.deleteEntityRecordApi = _chunkPGP626VCjs.deleteEntityRecordApi; exports.entityDefinitionReducer = entityDefinitionReducer; exports.entityRecordReducer = entityRecordReducer; exports.getEntityDefinitionApi = _chunkPGP626VCjs.getEntityDefinitionApi; exports.getEntityRecordApi = _chunkPGP626VCjs.getEntityRecordApi; exports.listEntityDefinitionsApi = _chunkPGP626VCjs.listEntityDefinitionsApi; exports.queryEntityRecordsApi = _chunkPGP626VCjs.queryEntityRecordsApi; exports.updateEntityDefinitionApi = _chunkPGP626VCjs.updateEntityDefinitionApi; exports.updateEntityRecordApi = _chunkPGP626VCjs.updateEntityRecordApi; exports.useEntities = _chunkZPYEJEPUjs.useEntities;
|
|
252
252
|
//# sourceMappingURL=index.js.map
|
package/dist/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
useEntities
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-WYJQU2QG.mjs";
|
|
5
5
|
import {
|
|
6
6
|
bulkCreateEntityRecordsApi,
|
|
7
7
|
bulkDeleteEntityRecordsApi,
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
queryEntityRecordsApi,
|
|
18
18
|
updateEntityDefinitionApi,
|
|
19
19
|
updateEntityRecordApi
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-I4AGMG43.mjs";
|
|
21
21
|
|
|
22
22
|
// store/entity-definition-slice.ts
|
|
23
23
|
import { createSlice } from "@reduxjs/toolkit";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elqnt/entity",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.2",
|
|
4
4
|
"description": "Complete entity management for Eloquent platform - models, API, hooks, and store",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@elqnt/types": "2.0.13",
|
|
40
|
-
"@elqnt/api-client": "1.0.
|
|
40
|
+
"@elqnt/api-client": "1.0.5"
|
|
41
41
|
},
|
|
42
42
|
"peerDependencies": {
|
|
43
43
|
"@reduxjs/toolkit": "^2.0.0",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"react-redux": "^9.1.2",
|
|
52
52
|
"tsup": "^8.0.0",
|
|
53
53
|
"typescript": "^5.0.0",
|
|
54
|
-
"@elqnt/api-client": "1.0.
|
|
54
|
+
"@elqnt/api-client": "1.0.5"
|
|
55
55
|
},
|
|
56
56
|
"scripts": {
|
|
57
57
|
"build": "tsup",
|
|
@@ -1 +0,0 @@
|
|
|
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"]}
|
|
@@ -1 +0,0 @@
|
|
|
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"]}
|
|
@@ -1 +0,0 @@
|
|
|
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":"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","names":["useMemo","useMemo","useState","useCallback","useState","useCallback"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../api/index.ts"],"sourcesContent":["/**\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"],"mappings":"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","names":[]}
|