@elqnt/entity 1.0.8 → 2.0.5
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/index.d.mts +3 -91
- package/dist/index.d.ts +3 -91
- package/dist/index.js +2 -715
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -714
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -3
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../context/entity-definition-context.tsx","../hooks/use-entity-definition.ts","../store/entity-definition-slice.ts","../hooks/use-entity-definition-details.ts","../hooks/use-entity-record.ts","../store/entity-record-slice.ts","../hooks/use-debounce.ts","../context/entity-record-context.tsx","../consts/colors.ts"],"sourcesContent":["\"use client\";\n\nimport React, { createContext, useContext, useMemo } from \"react\";\nimport {\n useEntityDefinition,\n UseEntityDefinitionType,\n UseEntityDefinitionOptions,\n} from \"../hooks\";\n\nexport const EntityDefinitionContext = createContext<\n UseEntityDefinitionType | undefined\n>(undefined);\n\nexport interface EntityDefinitionProviderProps {\n children: React.ReactNode;\n orgId: string;\n entityName?: string;\n options?: UseEntityDefinitionOptions;\n}\n\nexport function EntityDefinitionProvider({\n children,\n orgId,\n entityName,\n options = {},\n}: EntityDefinitionProviderProps) {\n const hookValue = useEntityDefinition(orgId, entityName, options);\n const value = useMemo(() => hookValue, [hookValue]);\n\n return (\n <EntityDefinitionContext.Provider value={value}>\n {children}\n </EntityDefinitionContext.Provider>\n );\n}\n\nexport function useEntityDefinitionContext() {\n const context = useContext(EntityDefinitionContext);\n\n if (!context) {\n throw new Error(\n \"useEntityDefinitionContext must be used within an EntityDefinitionProvider\"\n );\n }\n\n return context;\n}\n","\"use client\";\n\nimport { useCallback, useEffect } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useNatsContext } from \"@elqnt/nats\";\nimport {\n CreateEntityDefinitionRequest,\n CreateOrgSchemaRequest,\n CreateOrgSchemaResponse,\n CreateViewRequest,\n DropOrgSchemaRequest,\n DropOrgSchemaResponse,\n DeleteEntityDefinitionRequest,\n DeleteViewRequest,\n EntityDefinition,\n EntityDefinitionCreate,\n EntityDefinitionDelete,\n EntityDefinitionGet,\n EntityDefinitionList,\n EntityDefinitionResponse,\n EntityDefinitionUpdate,\n EntityOrgSchemaCreate,\n EntityOrgSchemaDrop,\n EntityView,\n EntityViewCreate,\n EntityViewDelete,\n EntityViewList,\n EntityViewResponse,\n EntityViewUpdate,\n GetEntityDefinitionRequest,\n ListEntityDefinitionsRequest,\n ListEntityDefinitionsResponse,\n ListViewsRequest,\n ListViewsResponse,\n ResponseMetadata,\n UpdateEntityDefinitionRequest,\n UpdateViewRequest,\n} from \"../models\";\nimport {\n addDefinition,\n addView,\n EntityDefinitionSelector,\n removeDefinition,\n removeView,\n setDefinitions,\n setError,\n setLoading,\n setOperationLoading,\n setSelectedDefinition,\n setViews,\n updateDefinition,\n updateView,\n} from \"../store/entity-definition-slice\";\n\nexport type UseEntityDefinitionType = {\n // State\n definitions: Record<string, EntityDefinition>;\n selectedDefinition?: EntityDefinition;\n views: Record<string, EntityView[]>;\n selectedView?: EntityView;\n isLoading: boolean;\n loadingStates: Record<string, boolean>;\n error?: string;\n\n // Organization operations\n createOrgSchema: (orgId: string) => Promise<CreateOrgSchemaResponse>;\n dropOrgSchema: (orgId: string) => Promise<DropOrgSchemaResponse>;\n\n // Definition operations\n loadDefinitions: () => Promise<void>;\n loadDefinition: (name: string) => Promise<void>;\n createDefinition: (\n definition: EntityDefinition\n ) => Promise<EntityDefinitionResponse>;\n updateDefinition: (\n name: string,\n definition: EntityDefinition\n ) => Promise<EntityDefinitionResponse>;\n deleteDefinition: (name: string) => Promise<ResponseMetadata>;\n\n // View operations\n loadViews: (entityName: string) => Promise<void>;\n createView: (entityName: string, view: EntityView) => Promise<EntityView>;\n updateView: (entityName: string, view: EntityView) => Promise<EntityView>;\n deleteView: (\n entityName: string,\n viewId: string\n ) => Promise<{ success: boolean }>;\n\n // Utilities\n refresh: () => void;\n};\n\nexport interface UseEntityDefinitionOptions {\n autoLoad?: boolean;\n module?: string;\n}\n\n// todo: performance improvement: use selectors\n// const selectEntityDefinition = (state: EntityDefinitionSelector) => state.entityDefinition;\n\nexport function useEntityDefinition(\n orgId: string | undefined,\n entityName?: string,\n options: UseEntityDefinitionOptions = {}\n): UseEntityDefinitionType {\n const { autoLoad, module } = options;\n const { natsConnected, request } = useNatsContext();\n const dispatch = useDispatch();\n\n // todo: performance improvement: use selectors\n\n // const selectDefinitions = createSelector(\n // selectEntityDefinition,\n // (state) => state.definitions\n // );\n // const selectSelectedDefinition = createSelector(\n // selectEntityDefinition,\n // (state) => state.selectedDefinition\n // );\n\n // // Similar selectors for views, selectedView, isLoading, loadingStates, error...\n\n // // In the hook\n // const definitions = useSelector(selectDefinitions);\n // const selectedDefinition = useSelector(selectSelectedDefinition);\n // const views = useSelector(selectViews);\n\n const definitions = useSelector(\n (state: EntityDefinitionSelector) => state.entityDefinition.definitions\n );\n const selectedDefinition = useSelector(\n (state: EntityDefinitionSelector) =>\n state.entityDefinition.selectedDefinition\n );\n const views = useSelector(\n (state: EntityDefinitionSelector) => state.entityDefinition.views\n );\n const selectedView = useSelector(\n (state: EntityDefinitionSelector) => state.entityDefinition.selectedView\n );\n const isLoading = useSelector(\n (state: EntityDefinitionSelector) => state.entityDefinition.isLoading\n );\n const loadingStates = useSelector(\n (state: EntityDefinitionSelector) => state.entityDefinition.loadingStates\n );\n const error = useSelector(\n (state: EntityDefinitionSelector) => state.entityDefinition.error\n );\n\n const createOrgSchema = useCallback(\n async (targetOrgId: string): Promise<CreateOrgSchemaResponse> => {\n if (!natsConnected) {\n throw new Error(\"Not connected to NATS\");\n }\n\n dispatch(setOperationLoading({ operation: \"createOrgSchema\", loading: true }));\n\n try {\n const response = await request<\n CreateOrgSchemaRequest,\n CreateOrgSchemaResponse\n >(EntityOrgSchemaCreate, { orgId: targetOrgId });\n\n if (response instanceof Error) {\n throw response;\n }\n\n return response;\n } finally {\n dispatch(setOperationLoading({ operation: \"createOrgSchema\", loading: false }));\n }\n },\n [natsConnected, dispatch, request]\n );\n\n const dropOrgSchema = useCallback(\n async (targetOrgId: string): Promise<DropOrgSchemaResponse> => {\n if (!natsConnected) {\n throw new Error(\"Not connected to NATS\");\n }\n\n dispatch(setOperationLoading({ operation: \"dropOrgSchema\", loading: true }));\n\n try {\n const response = await request<\n DropOrgSchemaRequest,\n DropOrgSchemaResponse\n >(EntityOrgSchemaDrop, { orgId: targetOrgId });\n\n if (response instanceof Error) {\n throw response;\n }\n\n return response;\n } finally {\n dispatch(setOperationLoading({ operation: \"dropOrgSchema\", loading: false }));\n }\n },\n [natsConnected, dispatch, request]\n );\n\n const loadDefinitions = useCallback(async () => {\n if (!natsConnected || !orgId) return;\n\n const loadingKey = \"loadDefinitions\";\n if (loadingStates[loadingKey]) return; // Prevent concurrent loads\n\n dispatch(setOperationLoading({ operation: loadingKey, loading: true }));\n\n try {\n const response = await request<\n ListEntityDefinitionsRequest,\n ListEntityDefinitionsResponse\n >(EntityDefinitionList, { orgId, module });\n\n if (response instanceof Error) {\n dispatch(setError(response.message));\n } else {\n dispatch(setDefinitions(response?.definitions ?? []));\n }\n } catch (err) {\n dispatch(setError(err instanceof Error ? err.message : \"Unknown error\"));\n } finally {\n dispatch(setOperationLoading({ operation: loadingKey, loading: false }));\n }\n }, [natsConnected, orgId, options.module, dispatch, request]);\n\n useEffect(() => {\n let mounted = true;\n\n if (autoLoad && natsConnected && orgId && mounted) {\n loadDefinitions();\n }\n\n return () => {\n mounted = false;\n };\n }, [autoLoad, natsConnected, orgId]);\n\n const loadDefinition = useCallback(\n async (name: string) => {\n if (!natsConnected || !orgId) return;\n\n dispatch(\n setOperationLoading({ operation: `load_${name}`, loading: true })\n );\n try {\n const response = await request<\n GetEntityDefinitionRequest,\n EntityDefinitionResponse\n >(EntityDefinitionGet, { entityName: name, orgId }, {});\n\n if (response instanceof Error) {\n dispatch(setError(response.message));\n return;\n }\n\n dispatch(setSelectedDefinition(response.definition));\n } finally {\n dispatch(\n setOperationLoading({ operation: `load_${name}`, loading: false })\n );\n }\n },\n [natsConnected, orgId, dispatch, request]\n );\n\n useEffect(() => {\n if (natsConnected && orgId && entityName) {\n loadDefinition(entityName);\n }\n }, [natsConnected, orgId, entityName, loadDefinition]);\n\n const createDefinition = async (definition: EntityDefinition) => {\n if (!natsConnected || !orgId) {\n throw new Error(\"Not connected or missing orgId\");\n }\n\n dispatch(setOperationLoading({ operation: \"create\", loading: true }));\n\n try {\n const response = await request<\n CreateEntityDefinitionRequest,\n EntityDefinitionResponse\n >(EntityDefinitionCreate, { definition, orgId }, {});\n\n // console.log(\"createDefinition response\", response);\n\n if (response instanceof Error) {\n console.error(\"createDefinition error\", response);\n throw response;\n }\n\n if (response.metadata.success) {\n dispatch(addDefinition(response.definition));\n }\n return response;\n } finally {\n dispatch(setOperationLoading({ operation: \"create\", loading: false }));\n }\n };\n\n const updateDefinitionById = async (\n name: string,\n definition: EntityDefinition\n ) => {\n if (!natsConnected || !orgId) {\n throw new Error(\"Not connected or missing orgId\");\n }\n\n dispatch(\n setOperationLoading({ operation: `update_${name}`, loading: true })\n );\n try {\n const response = await request<\n UpdateEntityDefinitionRequest,\n EntityDefinitionResponse\n >(\n EntityDefinitionUpdate,\n {\n entityName: name,\n definition,\n orgId,\n },\n {}\n );\n\n if (response instanceof Error) {\n throw response;\n }\n\n if (response.metadata.success) {\n dispatch(updateDefinition(response.definition));\n }\n\n return response;\n } finally {\n dispatch(\n setOperationLoading({ operation: `update_${name}`, loading: false })\n );\n }\n };\n\n const deleteDefinition = async (name: string) => {\n if (!natsConnected || !orgId) {\n throw new Error(\"Not connected or missing orgId\");\n }\n\n dispatch(\n setOperationLoading({ operation: `delete_${name}`, loading: true })\n );\n try {\n const response = await request<\n DeleteEntityDefinitionRequest,\n ResponseMetadata\n >(EntityDefinitionDelete, { entityName: name, orgId }, {});\n\n if (response instanceof Error) {\n throw response;\n }\n\n dispatch(removeDefinition(name));\n return response;\n } finally {\n dispatch(\n setOperationLoading({ operation: `delete_${name}`, loading: false })\n );\n }\n };\n\n const loadViews = useCallback(\n async (entityName: string): Promise<void> => {\n if (!natsConnected || !orgId) return;\n\n const loadingKey = `loadViews_${entityName}`;\n if (loadingStates[loadingKey]) return; // Prevent concurrent loads\n\n dispatch(setOperationLoading({ operation: loadingKey, loading: true }));\n\n try {\n const response = await request<ListViewsRequest, ListViewsResponse>(\n EntityViewList,\n { entityName, orgId },\n {}\n );\n\n console.log(\"loadViews response\", response);\n\n if (response instanceof Error) {\n dispatch(setError(response.message));\n return;\n }\n\n dispatch(setViews({ entityName, views: response.views }));\n } catch (err) {\n dispatch(\n setError(err instanceof Error ? err.message : \"Unknown error\")\n );\n } finally {\n dispatch(\n setOperationLoading({ operation: loadingKey, loading: false })\n );\n }\n },\n [natsConnected, orgId, loadingStates, dispatch, request]\n );\n\n const createView = async (entityName: string, view: EntityView) => {\n if (!natsConnected || !orgId) {\n throw new Error(\"Not connected or missing orgId\");\n }\n\n dispatch(setOperationLoading({ operation: \"create_view\", loading: true }));\n try {\n const response = await request<CreateViewRequest, EntityViewResponse>(\n EntityViewCreate,\n { entityName, view, orgId },\n {}\n );\n\n if (response instanceof Error) {\n throw response;\n }\n\n dispatch(addView({ entityName, view: response.view }));\n return response.view;\n } finally {\n dispatch(\n setOperationLoading({ operation: \"create_view\", loading: false })\n );\n }\n };\n\n const updateViewById = async (entityName: string, view: EntityView) => {\n if (!natsConnected || !orgId || !view.id) {\n throw new Error(\"Not connected, missing orgId, or invalid view\");\n }\n\n dispatch(\n setOperationLoading({\n operation: `update_view_${view.id}`,\n loading: true,\n })\n );\n try {\n const response = await request<UpdateViewRequest, EntityViewResponse>(\n EntityViewUpdate,\n { view, orgId },\n {}\n );\n\n if (response instanceof Error) {\n throw response;\n }\n\n // console.log(\"updateViewById response\", response);\n\n dispatch(updateView({ entityName, view: response.view }));\n return response.view;\n } finally {\n dispatch(\n setOperationLoading({\n operation: `update_view_${view.id}`,\n loading: false,\n })\n );\n }\n };\n\n const deleteView = async (entityName: string, viewId: string) => {\n if (!natsConnected || !orgId) {\n throw new Error(\"Not connected or missing orgId\");\n }\n\n dispatch(\n setOperationLoading({ operation: `delete_view_${viewId}`, loading: true })\n );\n try {\n const response = await request<DeleteViewRequest, ResponseMetadata>(\n EntityViewDelete,\n { viewId, orgId },\n {}\n );\n\n if (response instanceof Error) {\n throw response;\n }\n\n dispatch(removeView({ entityName, viewId }));\n return response;\n } finally {\n dispatch(\n setOperationLoading({\n operation: `delete_view_${viewId}`,\n loading: false,\n })\n );\n }\n };\n\n const refresh = useCallback(() => {\n if (!natsConnected || !orgId) return;\n\n if (entityName) {\n loadDefinition(entityName);\n } else {\n dispatch(setLoading(true));\n loadDefinitions().finally(() => dispatch(setLoading(false)));\n }\n }, [natsConnected, orgId, entityName, loadDefinition, dispatch]);\n\n return {\n // State\n definitions,\n selectedDefinition,\n views,\n selectedView,\n isLoading,\n loadingStates,\n error,\n\n // Organization operations\n createOrgSchema,\n dropOrgSchema,\n\n // Definition operations\n loadDefinitions,\n loadDefinition,\n createDefinition,\n updateDefinition: updateDefinitionById,\n deleteDefinition,\n\n // View operations\n loadViews,\n createView,\n updateView: updateViewById,\n deleteView,\n\n // Utilities\n refresh,\n };\n}\n","// store/entityDefinitionSlice.ts\nimport { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\nimport { EntityDefinition, EntityView } from \"../models\";\nexport interface EntityDefinitionState {\n definitions: Record<string, EntityDefinition>;\n selectedDefinition?: EntityDefinition;\n views: Record<string, EntityView[]>;\n selectedView?: EntityView;\n isLoading: boolean;\n error?: string;\n loadingStates: Record<string, boolean>;\n}\n\nexport interface EntityDefinitionSelector {\n entityDefinition: EntityDefinitionState;\n}\n\nconst initialState: EntityDefinitionState = {\n definitions: {},\n views: {},\n isLoading: false,\n loadingStates: {},\n};\n\nconst entityDefinitionSlice = createSlice({\n name: \"entityDefinition\",\n initialState,\n reducers: {\n setLoading: (state, action: PayloadAction<boolean>) => {\n state.isLoading = action.payload;\n },\n setOperationLoading: (\n state,\n action: PayloadAction<{ operation: string; loading: boolean }>\n ) => {\n state.loadingStates[action.payload.operation] = action.payload.loading;\n },\n setError: (state, action: PayloadAction<string | undefined>) => {\n state.error = action.payload;\n },\n setDefinitions: (state, action: PayloadAction<EntityDefinition[]>) => {\n state.definitions = action.payload.reduce(\n (acc, def) => {\n acc[def.name] = def;\n return acc;\n },\n {} as Record<string, EntityDefinition>\n );\n },\n addDefinition: (state, action: PayloadAction<EntityDefinition>) => {\n const definition = action.payload;\n state.definitions[definition.name] = definition;\n },\n updateDefinition: (state, action: PayloadAction<EntityDefinition>) => {\n const definition = action.payload;\n state.definitions[definition.name] = definition;\n if (state.selectedDefinition?.name === definition.name) {\n state.selectedDefinition = definition;\n }\n },\n removeDefinition: (state, action: PayloadAction<string>) => {\n delete state.definitions[action.payload];\n if (state.selectedDefinition?.name === action.payload) {\n state.selectedDefinition = undefined;\n }\n },\n setSelectedDefinition: (\n state,\n action: PayloadAction<EntityDefinition | undefined>\n ) => {\n state.selectedDefinition = action.payload;\n },\n setViews: (\n state,\n action: PayloadAction<{ entityName: string; views: EntityView[] }>\n ) => {\n const { entityName, views } = action.payload;\n state.views[entityName] = views;\n },\n addView: (\n state,\n action: PayloadAction<{ entityName: string; view: EntityView }>\n ) => {\n const { entityName, view } = action.payload;\n if (!state.views[entityName]) {\n state.views[entityName] = [];\n }\n state.views[entityName].push(view);\n },\n updateView: (\n state,\n action: PayloadAction<{ entityName: string; view: EntityView }>\n ) => {\n const { entityName, view } = action.payload;\n const views = state.views[entityName];\n if (views) {\n const index = views.findIndex((v) => v.id === view.id);\n if (index !== -1) {\n views[index] = view;\n if (state.selectedView?.id === view.id) {\n state.selectedView = view;\n }\n }\n }\n },\n removeView: (\n state,\n action: PayloadAction<{ entityName: string; viewId: string }>\n ) => {\n const { entityName, viewId } = action.payload;\n const views = state.views[entityName];\n if (views) {\n state.views[entityName] = views.filter((v) => v.id !== viewId);\n if (state.selectedView?.id === viewId) {\n state.selectedView = undefined;\n }\n }\n },\n setSelectedView: (state, action: PayloadAction<EntityView | undefined>) => {\n state.selectedView = action.payload;\n },\n },\n});\n\nexport const {\n setLoading,\n setOperationLoading,\n setError,\n setDefinitions,\n addDefinition,\n updateDefinition,\n removeDefinition,\n setSelectedDefinition,\n setViews,\n addView,\n updateView,\n removeView,\n setSelectedView,\n} = entityDefinitionSlice.actions;\n\nexport const entityDefinitionReducer = entityDefinitionSlice.reducer;\n","\"use client\";\n\nimport { useCallback, useEffect } from \"react\";\nimport { useEntityDefinitionContext } from \"../context/entity-definition-context\";\nimport { EntityDefinition } from \"../models\";\n\nexport function useEntityDefinitionDetails(entityName: string) {\n const context = useEntityDefinitionContext();\n const definition = context.definitions[entityName];\n\n const loadDefinitionDetails = useCallback(async () => {\n return context.loadDefinition(entityName);\n }, [context, entityName]);\n\n useEffect(() => {\n if (entityName && !definition) {\n loadDefinitionDetails();\n }\n }, [definition, entityName, loadDefinitionDetails]);\n\n return {\n definition,\n isLoading: context.loadingStates[`load_${entityName}`],\n error: context.error,\n updateDefinition: (updatedDef: EntityDefinition) =>\n context.updateDefinition(entityName, updatedDef),\n deleteDefinition: () => context.deleteDefinition(entityName),\n refresh: loadDefinitionDetails,\n };\n}\n","\"use client\";\n\nimport { useCallback, useEffect } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useNatsContext } from \"@elqnt/nats\";\nimport {\n CreateRecordRequest,\n DeleteRecordRequest,\n EntityQuery,\n EntityRecord,\n EntityRecordCreate,\n EntityRecordDelete,\n EntityRecordGet,\n EntityRecordQuery,\n EntityRecordCount,\n EntityRecordResponse,\n EntityRecordUpdate,\n GetEntityRecordRequest,\n ListEntityRecordsResponse,\n QueryRequest,\n ResponseMetadata,\n UpdateRecordRequest,\n CountEntityRecordsRequest,\n CountEntityRecordsResponse,\n} from \"../models\";\nimport {\n addRecord,\n EntityRecordSelector,\n removeRecord,\n setError,\n setOperationLoading,\n setRecords,\n setSelected,\n setSelectedRecord,\n updateQueryParams,\n updateRecord,\n} from \"../store/entity-record-slice\";\n\nexport type UseEntityRecordType = {\n // State\n records: Record<string, EntityRecord>;\n selectedRecord?: EntityRecord;\n params: EntityQuery;\n selected: string[];\n isLoading: boolean;\n loadingStates: Record<string, boolean>;\n error?: string;\n\n // Operations\n loadRecords: (params?: Partial<EntityQuery>) => Promise<void>;\n createRecord: (record: EntityRecord) => Promise<EntityRecordResponse>;\n updateRecord: (record: EntityRecord) => Promise<EntityRecordResponse>;\n deleteRecord: (recordId: string) => Promise<ResponseMetadata>;\n loadRecord: (recordId: string) => Promise<void>;\n countRecords: (filters?: Record<string, any>) => Promise<number>;\n getEntityRecordById: (recordId: string) => Promise<EntityRecord | null>;\n\n\n // Selection\n selectRecords: (ids: string[]) => void;\n clearSelection: () => void;\n\n // Query\n updateParams: (params: Partial<EntityQuery>) => void;\n refresh: () => void;\n};\n\nconst defaultQuery: EntityQuery = {\n filters: {},\n page: 1,\n pageSize: 25,\n sortBy: \"metadata.createdAt\",\n sortOrder: -1,\n};\n\nexport function useEntityRecord(\n orgId: string | undefined,\n entityName: string,\n options: { autoLoad?: boolean } = {}\n): UseEntityRecordType {\n const { autoLoad = true } = options;\n const { natsConnected, request } = useNatsContext();\n const dispatch = useDispatch();\n\n const recordState = useSelector(\n (state: EntityRecordSelector) =>\n state.entityRecord.records[entityName] || {\n items: {},\n params: defaultQuery,\n meta: {\n items: [],\n totalCount: 0,\n currentPage: 1,\n pageSize: 25,\n totalPages: 0,\n },\n selected: [],\n }\n );\n\n const selectedRecord = useSelector(\n (state: EntityRecordSelector) => state.entityRecord.selectedRecord\n );\n\n const isLoading = useSelector(\n (state: EntityRecordSelector) => state.entityRecord.isLoading\n );\n const loadingStates = useSelector(\n (state: EntityRecordSelector) => state.entityRecord.loadingStates\n );\n const error = useSelector(\n (state: EntityRecordSelector) => state.entityRecord.error\n );\n\n const loadRecords = useCallback(\n async (params?: Partial<EntityQuery>) => {\n if (!natsConnected || !orgId) return;\n\n const loadingKey = `load_${entityName}`;\n if (loadingStates[loadingKey]) return;\n\n dispatch(setOperationLoading({ operation: loadingKey, loading: true }));\n\n try {\n const queryParams = { ...recordState.params, ...params };\n // console.log(\"will loadRecords\", queryParams);\n\n const response = await request<QueryRequest, ListEntityRecordsResponse>(\n EntityRecordQuery,\n {\n orgId,\n entityName,\n query: queryParams,\n }\n );\n\n if (response instanceof Error) {\n dispatch(setError(response.message));\n } else if (response.records) {\n dispatch(\n setRecords({\n entityName,\n records: response.records,\n params: queryParams,\n })\n );\n }\n } catch (err) {\n dispatch(\n setError(err instanceof Error ? err.message : \"Unknown error\")\n );\n } finally {\n dispatch(\n setOperationLoading({ operation: loadingKey, loading: false })\n );\n }\n },\n [natsConnected, orgId, entityName, recordState.params, dispatch, request]\n );\n\n const loadRecord = useCallback(\n async (recordId: string) => {\n if (!natsConnected || !orgId) return;\n\n const loadingKey = `load_${recordId}`;\n if (loadingStates[loadingKey]) return;\n\n dispatch(setOperationLoading({ operation: loadingKey, loading: true }));\n\n try {\n const response = await request<\n GetEntityRecordRequest,\n EntityRecordResponse\n >(EntityRecordGet, { entityName, recordId, orgId }, {});\n\n if (response instanceof Error) {\n dispatch(setError(response.message));\n return;\n }\n\n dispatch(setSelectedRecord({ record: response.record }));\n } finally {\n dispatch(\n setOperationLoading({ operation: loadingKey, loading: false })\n );\n }\n },\n [natsConnected, orgId, entityName, recordState.params, dispatch, request]\n );\n\n const createRecord = async (\n record: EntityRecord\n ): Promise<EntityRecordResponse> => {\n if (!natsConnected || !orgId) {\n throw new Error(\"Not connected or missing orgId\");\n }\n\n dispatch(\n setOperationLoading({ operation: \"create_record\", loading: true })\n );\n\n try {\n const response = await request<CreateRecordRequest, EntityRecordResponse>(\n EntityRecordCreate,\n {\n orgId,\n entityName,\n record,\n }\n );\n\n if (response instanceof Error) {\n throw response;\n }\n\n if (response.metadata.success) {\n dispatch(addRecord({ entityName, record: response.record }));\n }\n\n // Refresh list after create\n loadRecords();\n\n return response;\n } finally {\n dispatch(\n setOperationLoading({ operation: \"create_record\", loading: false })\n );\n }\n };\n\n const updateRecordById = async (\n record: EntityRecord\n ): Promise<EntityRecordResponse> => {\n if (!natsConnected || !orgId) {\n throw new Error(\"Not connected or missing orgId\");\n }\n\n dispatch(\n setOperationLoading({ operation: `update_${record.id}`, loading: true })\n );\n\n try {\n const response = await request<UpdateRecordRequest, EntityRecordResponse>(\n EntityRecordUpdate,\n {\n orgId,\n entityName,\n record,\n recordId: record.id,\n }\n );\n\n if (response instanceof Error) {\n throw response;\n }\n\n dispatch(updateRecord({ entityName, record: response.record }));\n return response;\n } finally {\n dispatch(\n setOperationLoading({\n operation: `update_${record.id}`,\n loading: false,\n })\n );\n }\n };\n\n const deleteRecordById = async (\n recordId: string\n ): Promise<ResponseMetadata> => {\n if (!natsConnected || !orgId) {\n throw new Error(\"Not connected or missing orgId\");\n }\n\n dispatch(\n setOperationLoading({ operation: `delete_${recordId}`, loading: true })\n );\n\n try {\n const response = await request<DeleteRecordRequest, ResponseMetadata>(\n EntityRecordDelete,\n {\n orgId,\n entityName,\n recordId,\n }\n );\n\n if (response instanceof Error) {\n throw response;\n }\n\n dispatch(removeRecord({ entityName, recordId }));\n return response;\n } finally {\n dispatch(\n setOperationLoading({ operation: `delete_${recordId}`, loading: false })\n );\n }\n };\n\n const countRecords = async (filters?: Record<string, any>): Promise<number> => {\n if (!natsConnected || !orgId) {\n throw new Error(\"Not connected or missing orgId\");\n }\n\n try {\n const response = await request<CountEntityRecordsRequest, CountEntityRecordsResponse>(\n EntityRecordCount,\n {\n orgId,\n entityName,\n filters: filters || {},\n }\n );\n\n if (response instanceof Error) {\n throw response;\n }\n\n if (!response.metadata?.success) {\n throw new Error(response.metadata?.error || \"Failed to count records\");\n }\n\n return response.count || 0;\n } catch (err) {\n console.error(\"Error counting records:\", err);\n return 0;\n }\n };\n\n const getEntityRecordById = async (\n recordId: string\n ): Promise<EntityRecord | null> => {\n if (!natsConnected || !orgId) {\n throw new Error(\"Not connected or missing orgId\");\n }\n\n try {\n const response = await request<\n GetEntityRecordRequest,\n EntityRecordResponse\n >(EntityRecordGet, { entityName, recordId, orgId }, {});\n\n if (response instanceof Error) {\n console.error(\"Error fetching record:\", response.message);\n return null;\n }\n\n return response.record || null;\n } catch (error) {\n console.error(\"Error in getEntityRecordById:\", error);\n return null;\n }\n };\n\n const selectRecords = (ids: string[]) => {\n dispatch(setSelected({ entityName, ids }));\n };\n\n const clearSelection = () => {\n dispatch(setSelected({ entityName, ids: [] }));\n };\n\n const updateParams = (params: Partial<EntityQuery>) => {\n console.log(\"updating query params\", params);\n dispatch(updateQueryParams({ entityName, params }));\n loadRecords(params);\n };\n\n const refresh = useCallback(() => {\n loadRecords();\n }, [loadRecords]);\n\n useEffect(() => {\n let mounted = true;\n\n if (autoLoad && natsConnected && orgId && mounted) {\n loadRecords();\n }\n\n return () => {\n mounted = false;\n };\n }, [autoLoad, natsConnected, orgId]);\n\n return {\n // State\n records: recordState.items,\n params: recordState.params,\n selected: recordState.selected,\n selectedRecord,\n isLoading,\n loadingStates,\n error,\n\n // Operations\n loadRecords,\n createRecord,\n updateRecord: updateRecordById,\n deleteRecord: deleteRecordById,\n loadRecord,\n countRecords,\n getEntityRecordById,\n // Selection\n selectRecords,\n clearSelection,\n\n // Query\n updateParams,\n refresh,\n };\n}\n","// store/entity-record-slice.ts\nimport { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\nimport { EntityQuery, EntityRecord, EntityView, ListResult } from \"../models\";\n\nexport interface EntityRecordState {\n records: {\n [entityName: string]: {\n items: Record<string, EntityRecord>;\n params: EntityQuery;\n meta: ListResult<EntityRecord>;\n selected: string[]; // Selected record IDs\n };\n };\n selectedRecord?: EntityRecord;\n activeView?: EntityView;\n isLoading: boolean;\n error?: string;\n loadingStates: Record<string, boolean>;\n}\n\nexport interface EntityRecordSelector {\n entityRecord: EntityRecordState;\n}\n\nconst initialState: EntityRecordState = {\n records: {},\n isLoading: false,\n loadingStates: {},\n};\n\nconst entityRecordSlice = createSlice({\n name: \"entityRecord\",\n initialState,\n reducers: {\n setLoading: (state, action: PayloadAction<boolean>) => {\n state.isLoading = action.payload;\n },\n\n setOperationLoading: (\n state,\n action: PayloadAction<{ operation: string; loading: boolean }>\n ) => {\n state.loadingStates[action.payload.operation] = action.payload.loading;\n },\n\n setError: (state, action: PayloadAction<string | undefined>) => {\n state.error = action.payload;\n },\n\n setRecords: (\n state,\n action: PayloadAction<{\n entityName: string;\n records: ListResult<EntityRecord>;\n params: EntityQuery;\n }>\n ) => {\n const { entityName, records, params } = action.payload;\n state.records[entityName] = {\n items: records.items.reduce(\n (acc, record) => {\n acc[record.id] = record;\n return acc;\n },\n {} as Record<string, EntityRecord>\n ),\n params,\n meta: records,\n selected: [],\n };\n },\n\n addRecord: (\n state,\n action: PayloadAction<{ entityName: string; record: EntityRecord }>\n ) => {\n const { entityName, record } = action.payload;\n if (state.records[entityName]) {\n state.records[entityName].items[record.id] = record;\n }\n },\n\n updateRecord: (\n state,\n action: PayloadAction<{ entityName: string; record: EntityRecord }>\n ) => {\n const { entityName, record } = action.payload;\n if (state.records[entityName]) {\n state.records[entityName].items[record.id] = record;\n }\n },\n\n removeRecord: (\n state,\n action: PayloadAction<{ entityName: string; recordId: string }>\n ) => {\n const { entityName, recordId } = action.payload;\n if (state.records[entityName]) {\n delete state.records[entityName].items[recordId];\n state.records[entityName].selected = state.records[\n entityName\n ].selected.filter((id) => id !== recordId);\n }\n },\n\n setSelected: (\n state,\n action: PayloadAction<{ entityName: string; ids: string[] }>\n ) => {\n const { entityName, ids } = action.payload;\n if (state.records[entityName]) {\n state.records[entityName].selected = ids;\n }\n },\n\n setActiveView: (state, action: PayloadAction<EntityView | undefined>) => {\n state.activeView = action.payload;\n },\n\n updateQueryParams: (\n state,\n action: PayloadAction<{\n entityName: string;\n params: Partial<EntityQuery>;\n }>\n ) => {\n const { entityName, params } = action.payload;\n if (state.records[entityName]) {\n state.records[entityName].params = {\n ...state.records[entityName].params,\n ...params,\n };\n }\n },\n\n setSelectedRecord: (\n state,\n action: PayloadAction<{ record: EntityRecord }>\n ) => {\n const { record } = action.payload;\n state.selectedRecord = record;\n },\n },\n});\n\nexport const {\n setLoading,\n setOperationLoading,\n setError,\n setRecords,\n addRecord,\n updateRecord,\n removeRecord,\n setSelected,\n setSelectedRecord,\n setActiveView,\n updateQueryParams,\n} = entityRecordSlice.actions;\n\nexport const entityRecordReducer = entityRecordSlice.reducer;\n","\"use client\";\n\nimport { useCallback, useRef } from 'react';\n\nexport function useDebounce<T extends (...args: any[]) => any>(\n callback: T,\n delay: number\n): (...args: Parameters<T>) => void {\n const timerRef = useRef<NodeJS.Timeout | null>(null);\n\n return useCallback((...args: Parameters<T>) => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n }\n\n timerRef.current = setTimeout(() => {\n callback(...args);\n }, delay);\n }, [callback, delay]);\n}\n\n","\"use client\";\n\nimport React, { createContext, useContext, useMemo } from \"react\";\nimport { useEntityRecord, UseEntityRecordType } from \"../hooks\";\n\nexport const EntityRecordContext = createContext<\n UseEntityRecordType | undefined\n>(undefined);\n\nexport interface EntityRecordProviderProps {\n children: React.ReactNode;\n orgId: string;\n entityName: string;\n options?: {\n autoLoad?: boolean;\n };\n}\n\nexport function EntityRecordProvider({\n children,\n orgId,\n entityName,\n options = {},\n}: EntityRecordProviderProps) {\n const hookValue = useEntityRecord(orgId, entityName, options);\n const value = useMemo(() => hookValue, [hookValue]);\n\n return (\n <EntityRecordContext.Provider value={value}>\n {children}\n </EntityRecordContext.Provider>\n );\n}\n\nexport function useEntityRecordContext() {\n const context = useContext(EntityRecordContext);\n\n if (!context) {\n throw new Error(\n \"useEntityRecordContext must be used within an EntityRecordProvider\"\n );\n }\n\n return context;\n}\n","// Predefined colors with their display names\nexport const PREDEFINED_COLORS = [\n { value: \"#EF4444\", name: \"Red\" },\n { value: \"#F97316\", name: \"Orange\" },\n { value: \"#EAB308\", name: \"Yellow\" },\n { value: \"#22C55E\", name: \"Green\" },\n { value: \"#06B6D4\", name: \"Cyan\" },\n { value: \"#3B82F6\", name: \"Blue\" },\n { value: \"#6366F1\", name: \"Indigo\" },\n { value: \"#A855F7\", name: \"Purple\" },\n];\n"],"mappings":"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","names":["entityName","useCallback","useEffect","useCallback","useEffect","useCallback","useEffect","useDispatch","useSelector","useNatsContext","createSlice","initialState","setLoading","setOperationLoading","setError","useNatsContext","useDispatch","useSelector","useCallback","setOperationLoading","setError","error","useEffect","useCallback","createContext","useContext","useMemo","jsx","createContext","useMemo","useContext"]}
|
|
1
|
+
{"version":3,"sources":["../store/entity-definition-slice.ts","../store/entity-record-slice.ts","../consts/colors.ts"],"sourcesContent":["// store/entityDefinitionSlice.ts\nimport { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\nimport { EntityDefinition, EntityView } from \"../models\";\nexport interface EntityDefinitionState {\n definitions: Record<string, EntityDefinition>;\n selectedDefinition?: EntityDefinition;\n views: Record<string, EntityView[]>;\n selectedView?: EntityView;\n isLoading: boolean;\n error?: string;\n loadingStates: Record<string, boolean>;\n}\n\nexport interface EntityDefinitionSelector {\n entityDefinition: EntityDefinitionState;\n}\n\nconst initialState: EntityDefinitionState = {\n definitions: {},\n views: {},\n isLoading: false,\n loadingStates: {},\n};\n\nconst entityDefinitionSlice = createSlice({\n name: \"entityDefinition\",\n initialState,\n reducers: {\n setLoading: (state, action: PayloadAction<boolean>) => {\n state.isLoading = action.payload;\n },\n setOperationLoading: (\n state,\n action: PayloadAction<{ operation: string; loading: boolean }>\n ) => {\n state.loadingStates[action.payload.operation] = action.payload.loading;\n },\n setError: (state, action: PayloadAction<string | undefined>) => {\n state.error = action.payload;\n },\n setDefinitions: (state, action: PayloadAction<EntityDefinition[]>) => {\n state.definitions = action.payload.reduce(\n (acc, def) => {\n acc[def.name] = def;\n return acc;\n },\n {} as Record<string, EntityDefinition>\n );\n },\n addDefinition: (state, action: PayloadAction<EntityDefinition>) => {\n const definition = action.payload;\n state.definitions[definition.name] = definition;\n },\n updateDefinition: (state, action: PayloadAction<EntityDefinition>) => {\n const definition = action.payload;\n state.definitions[definition.name] = definition;\n if (state.selectedDefinition?.name === definition.name) {\n state.selectedDefinition = definition;\n }\n },\n removeDefinition: (state, action: PayloadAction<string>) => {\n delete state.definitions[action.payload];\n if (state.selectedDefinition?.name === action.payload) {\n state.selectedDefinition = undefined;\n }\n },\n setSelectedDefinition: (\n state,\n action: PayloadAction<EntityDefinition | undefined>\n ) => {\n state.selectedDefinition = action.payload;\n },\n setViews: (\n state,\n action: PayloadAction<{ entityName: string; views: EntityView[] }>\n ) => {\n const { entityName, views } = action.payload;\n state.views[entityName] = views;\n },\n addView: (\n state,\n action: PayloadAction<{ entityName: string; view: EntityView }>\n ) => {\n const { entityName, view } = action.payload;\n if (!state.views[entityName]) {\n state.views[entityName] = [];\n }\n state.views[entityName].push(view);\n },\n updateView: (\n state,\n action: PayloadAction<{ entityName: string; view: EntityView }>\n ) => {\n const { entityName, view } = action.payload;\n const views = state.views[entityName];\n if (views) {\n const index = views.findIndex((v) => v.id === view.id);\n if (index !== -1) {\n views[index] = view;\n if (state.selectedView?.id === view.id) {\n state.selectedView = view;\n }\n }\n }\n },\n removeView: (\n state,\n action: PayloadAction<{ entityName: string; viewId: string }>\n ) => {\n const { entityName, viewId } = action.payload;\n const views = state.views[entityName];\n if (views) {\n state.views[entityName] = views.filter((v) => v.id !== viewId);\n if (state.selectedView?.id === viewId) {\n state.selectedView = undefined;\n }\n }\n },\n setSelectedView: (state, action: PayloadAction<EntityView | undefined>) => {\n state.selectedView = action.payload;\n },\n },\n});\n\nexport const {\n setLoading,\n setOperationLoading,\n setError,\n setDefinitions,\n addDefinition,\n updateDefinition,\n removeDefinition,\n setSelectedDefinition,\n setViews,\n addView,\n updateView,\n removeView,\n setSelectedView,\n} = entityDefinitionSlice.actions;\n\nexport const entityDefinitionReducer = entityDefinitionSlice.reducer;\n","// store/entity-record-slice.ts\nimport { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\nimport { EntityQuery, EntityRecord, EntityView, ListResult } from \"../models\";\n\nexport interface EntityRecordState {\n records: {\n [entityName: string]: {\n items: Record<string, EntityRecord>;\n params: EntityQuery;\n meta: ListResult<EntityRecord>;\n selected: string[]; // Selected record IDs\n };\n };\n selectedRecord?: EntityRecord;\n activeView?: EntityView;\n isLoading: boolean;\n error?: string;\n loadingStates: Record<string, boolean>;\n}\n\nexport interface EntityRecordSelector {\n entityRecord: EntityRecordState;\n}\n\nconst initialState: EntityRecordState = {\n records: {},\n isLoading: false,\n loadingStates: {},\n};\n\nconst entityRecordSlice = createSlice({\n name: \"entityRecord\",\n initialState,\n reducers: {\n setLoading: (state, action: PayloadAction<boolean>) => {\n state.isLoading = action.payload;\n },\n\n setOperationLoading: (\n state,\n action: PayloadAction<{ operation: string; loading: boolean }>\n ) => {\n state.loadingStates[action.payload.operation] = action.payload.loading;\n },\n\n setError: (state, action: PayloadAction<string | undefined>) => {\n state.error = action.payload;\n },\n\n setRecords: (\n state,\n action: PayloadAction<{\n entityName: string;\n records: ListResult<EntityRecord>;\n params: EntityQuery;\n }>\n ) => {\n const { entityName, records, params } = action.payload;\n state.records[entityName] = {\n items: records.items.reduce(\n (acc, record) => {\n acc[record.id] = record;\n return acc;\n },\n {} as Record<string, EntityRecord>\n ),\n params,\n meta: records,\n selected: [],\n };\n },\n\n addRecord: (\n state,\n action: PayloadAction<{ entityName: string; record: EntityRecord }>\n ) => {\n const { entityName, record } = action.payload;\n if (state.records[entityName]) {\n state.records[entityName].items[record.id] = record;\n }\n },\n\n updateRecord: (\n state,\n action: PayloadAction<{ entityName: string; record: EntityRecord }>\n ) => {\n const { entityName, record } = action.payload;\n if (state.records[entityName]) {\n state.records[entityName].items[record.id] = record;\n }\n },\n\n removeRecord: (\n state,\n action: PayloadAction<{ entityName: string; recordId: string }>\n ) => {\n const { entityName, recordId } = action.payload;\n if (state.records[entityName]) {\n delete state.records[entityName].items[recordId];\n state.records[entityName].selected = state.records[\n entityName\n ].selected.filter((id) => id !== recordId);\n }\n },\n\n setSelected: (\n state,\n action: PayloadAction<{ entityName: string; ids: string[] }>\n ) => {\n const { entityName, ids } = action.payload;\n if (state.records[entityName]) {\n state.records[entityName].selected = ids;\n }\n },\n\n setActiveView: (state, action: PayloadAction<EntityView | undefined>) => {\n state.activeView = action.payload;\n },\n\n updateQueryParams: (\n state,\n action: PayloadAction<{\n entityName: string;\n params: Partial<EntityQuery>;\n }>\n ) => {\n const { entityName, params } = action.payload;\n if (state.records[entityName]) {\n state.records[entityName].params = {\n ...state.records[entityName].params,\n ...params,\n };\n }\n },\n\n setSelectedRecord: (\n state,\n action: PayloadAction<{ record: EntityRecord }>\n ) => {\n const { record } = action.payload;\n state.selectedRecord = record;\n },\n },\n});\n\nexport const {\n setLoading,\n setOperationLoading,\n setError,\n setRecords,\n addRecord,\n updateRecord,\n removeRecord,\n setSelected,\n setSelectedRecord,\n setActiveView,\n updateQueryParams,\n} = entityRecordSlice.actions;\n\nexport const entityRecordReducer = entityRecordSlice.reducer;\n","// Predefined colors with their display names\nexport const PREDEFINED_COLORS = [\n { value: \"#EF4444\", name: \"Red\" },\n { value: \"#F97316\", name: \"Orange\" },\n { value: \"#EAB308\", name: \"Yellow\" },\n { value: \"#22C55E\", name: \"Green\" },\n { value: \"#06B6D4\", name: \"Cyan\" },\n { value: \"#3B82F6\", name: \"Blue\" },\n { value: \"#6366F1\", name: \"Indigo\" },\n { value: \"#A855F7\", name: \"Purple\" },\n];\n"],"mappings":"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","names":["createSlice","initialState","setLoading","setOperationLoading","setError"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elqnt/entity",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.5",
|
|
4
4
|
"description": "Dynamic entity management for Eloquent platform",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -30,8 +30,7 @@
|
|
|
30
30
|
"directory": "packages/entity"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@elqnt/
|
|
34
|
-
"@elqnt/types": "^1.0.0"
|
|
33
|
+
"@elqnt/types": "^2.0.0"
|
|
35
34
|
},
|
|
36
35
|
"peerDependencies": {
|
|
37
36
|
"@reduxjs/toolkit": "^2.0.0",
|