monorise 0.0.2-dev.2 → 0.0.2-dev.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"core.action.d.ts","sourceRoot":"","sources":["../../actions/core.action.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.action.d.ts","sourceRoot":"","sources":["../../actions/core.action.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
@@ -1379,10 +1379,10 @@ var initCoreActions = (monoriseStore, appActions, coreService2) => {
1379
1379
  }
1380
1380
  }, [all, params.all]);
1381
1381
  useEffect2(() => {
1382
- if (!isFirstFetched) {
1382
+ if (!isFirstFetched || (opts == null ? void 0 : opts.forceFetch)) {
1383
1383
  listEntities(entityType, { skRange, all }, opts);
1384
1384
  }
1385
- }, [all, entityType, skRange, opts, isFirstFetched]);
1385
+ }, [all, entityType, skRange, opts, isFirstFetched, opts == null ? void 0 : opts.forceFetch]);
1386
1386
  useEffect2(() => {
1387
1387
  var _a;
1388
1388
  let queryTimeout;
@@ -1501,7 +1501,7 @@ var initCoreActions = (monoriseStore, appActions, coreService2) => {
1501
1501
  const isLoading = useLoadStore2(requestKey);
1502
1502
  const error = useErrorStore2(requestKey);
1503
1503
  useEffect2(() => {
1504
- if (!isFirstFetched && byEntityType && entityType && byId) {
1504
+ if (byEntityType && entityType && byId && (!isFirstFetched || (opts == null ? void 0 : opts.forceFetch))) {
1505
1505
  listEntitiesByEntity(
1506
1506
  byEntityType,
1507
1507
  entityType,
@@ -1536,7 +1536,21 @@ var initCoreActions = (monoriseStore, appActions, coreService2) => {
1536
1536
  requestKey,
1537
1537
  error,
1538
1538
  isFirstFetched,
1539
- lastKey
1539
+ lastKey,
1540
+ refetch: async () => {
1541
+ if (byEntityType && entityType && byId) {
1542
+ return await listEntitiesByEntity(
1543
+ byEntityType,
1544
+ entityType,
1545
+ byId,
1546
+ __spreadProps(__spreadValues({}, opts), {
1547
+ forceFetch: true,
1548
+ stateKey
1549
+ }),
1550
+ chainEntityQuery
1551
+ );
1552
+ }
1553
+ }
1540
1554
  }, lastKey && {
1541
1555
  listMore: () => {
1542
1556
  if (byEntityType && entityType && byId) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../actions/app.action.ts","../actions/auth.action.ts","../actions/config.action.ts","../actions/core.action.ts","../lib/entity.ts","../lib/utils.ts","../lib/api.ts","../services/auth.service.ts","../services/core.service.ts","../services/filestore.service.ts","../store/monorise.store.ts","../index.ts"],"sourcesContent":["import { produce } from 'immer';\nimport { useEffect, useState } from 'react';\nimport type { ApplicationRequestError, ModalProps } from '../types/api.type';\nimport type { MonoriseStore } from '../store/monorise.store';\n\ntype StartLoadingPayload<T> = {\n requestKey: string;\n isInterruptive?: boolean;\n message?: string | boolean;\n request: Promise<T>;\n};\n\ntype EndLoadingPayload = {\n requestKey: string;\n isInterruptive?: boolean;\n};\n\ntype SetErrorPayload = {\n requestKey: string;\n error: ApplicationRequestError;\n};\n\ntype Options = {\n modals?: Record<string, React.ComponentType<unknown>>;\n};\n\nconst initAppActions = (store: MonoriseStore) => {\n let options: Options = {};\n\n const { modals = {} } = options;\n type AppModalProps = ModalProps<typeof modals>;\n\n const startLoading = <T>({\n requestKey,\n isInterruptive,\n message,\n request,\n }: StartLoadingPayload<T>) => {\n store.setState(\n produce((state) => {\n const stackType = isInterruptive ? 'intLoadStack' : 'loadStack';\n const requestKeyCount = state.app[stackType].get(requestKey);\n\n state.app.loadingMessage =\n typeof message === 'string' ? message : 'Loading';\n state.app.ongoingRequests.set(requestKey, request);\n state.app[stackType].set(\n requestKey,\n requestKeyCount ? requestKeyCount + 1 : 1,\n );\n }),\n undefined,\n `mr/start-loading/${requestKey}`,\n );\n };\n\n const endLoading = ({ requestKey, isInterruptive }: EndLoadingPayload) => {\n setTimeout(() => {\n store.setState(\n produce((state) => {\n const stackType = isInterruptive ? 'intLoadStack' : 'loadStack';\n const requestKeyCount = state.app[stackType].get(requestKey);\n\n if (state.app.ongoingRequests.has(requestKey)) {\n state.app.ongoingRequests.delete(requestKey);\n }\n\n if (typeof requestKeyCount === 'number' && requestKeyCount > 1) {\n state.app[stackType].set(requestKey, requestKeyCount - 1);\n } else {\n state.app[stackType].delete(requestKey);\n }\n }),\n undefined,\n `mr/end-loading/${requestKey}`,\n );\n }, 500);\n };\n\n const checkIsLoading = (requestKey?: string) => {\n const { intLoadStack, loadStack } = store.getState().app;\n if (!requestKey) {\n return intLoadStack.size > 0 || loadStack.size > 0;\n }\n\n const activeIntLoadingCount = intLoadStack.get(requestKey);\n const isIntLoading =\n typeof activeIntLoadingCount === 'number' && activeIntLoadingCount > 0;\n\n const activeLoadingCount = loadStack.get(requestKey);\n const isLoading =\n typeof activeLoadingCount === 'number' && activeLoadingCount > 0;\n\n return isIntLoading || isLoading;\n };\n\n const setError = ({ requestKey, error }: SetErrorPayload) =>\n store.setState(\n produce((state) => {\n state.app.errorStack.set(requestKey, error);\n }),\n undefined,\n `mr/set-error/${requestKey}`,\n );\n\n const getError = (requestKey: string) => {\n const { errorStack } = store.getState().app;\n return errorStack.get(requestKey);\n };\n\n const clearError = (requestKey: string) => {\n const { errorStack } = store.getState().app;\n\n if (errorStack.has(requestKey)) {\n store.setState(\n produce((state) => {\n state.app.errorStack.delete(requestKey);\n }),\n undefined,\n `mr/clear-error/${requestKey}`,\n );\n }\n };\n\n const openModal = (modal: {\n name: keyof AppModalProps;\n context?: AppModalProps[keyof AppModalProps];\n }) =>\n store.setState(\n produce((state) => {\n state.app.modal = modal;\n }),\n undefined,\n `mr/open-modal/${modal.name}`,\n );\n\n const closeModal = () =>\n store.setState(\n produce((state) => {\n state.app.modal = { name: null };\n }),\n undefined,\n 'mr/close-modal',\n );\n\n const useLoadStore = (requestKey?: string) => {\n const { loadStack, intLoadStack } = store((state) => ({\n loadStack: state.app.loadStack,\n intLoadStack: state.app.intLoadStack,\n }));\n const [isLoading, setIsLoading] = useState(false);\n\n useEffect(() => {\n if (loadStack && intLoadStack && requestKey) {\n setIsLoading(checkIsLoading(requestKey));\n }\n }, [loadStack, intLoadStack, requestKey]);\n\n return isLoading;\n };\n\n const useInterruptiveLoadStore = () => {\n const { intLoadStack, loadingMessage } = store((state) => ({\n intLoadStack: state.app.intLoadStack,\n loadingMessage: state.app.loadingMessage,\n }));\n\n return {\n isLoading: intLoadStack.size > 0,\n message: loadingMessage,\n };\n };\n\n const useErrorStore = (requestKey: string) => {\n const error = store((state) => state.app.errorStack.get(requestKey));\n\n useEffect(() => {\n if (error) {\n return () => {\n clearError(requestKey);\n };\n }\n }, [error, requestKey]);\n\n return error;\n };\n\n const useModalStore = () => {\n return store((state) => state.app.modal);\n };\n\n const setOptions = (opts: Options) => {\n options = {\n ...options,\n ...opts,\n };\n };\n\n return {\n startLoading,\n endLoading,\n setError,\n getError,\n clearError,\n openModal,\n closeModal,\n checkIsLoading,\n useLoadStore,\n useInterruptiveLoadStore,\n useErrorStore,\n useModalStore,\n setOptions,\n };\n};\n\nexport { initAppActions };\n\nexport type AppActions = ReturnType<typeof initAppActions>;\n","import type { Entity } from '@monorise/base';\nimport { produce } from 'immer';\nimport type { AuthService } from '../services/auth.service';\nimport type { MonoriseStore } from '../store/monorise.store';\n\nconst initAuthActions = (store: MonoriseStore, authService: AuthService) => {\n const requestLogin = async (\n entityType: Entity,\n payload: { email: string },\n ) => {\n const { data } = await authService.requestLoginMagicLink(\n entityType,\n payload,\n );\n\n return data;\n };\n\n const useProfile = <T extends Record<string, unknown>>(): T & {\n displayName: string;\n email: string;\n accountId: string;\n impersonatorId?: string;\n } => {\n const profile = store((state) => state.auth.profile);\n\n return profile as T & typeof profile;\n };\n\n const getProfile = async () => {\n try {\n const {\n data: { displayName, email, accountId, ...rest },\n } = await authService.getSessionProfile();\n\n store.setState(\n produce((state) => {\n state.auth.profile = { displayName, email, accountId, ...rest };\n state.auth.isUnauthorized = false;\n state.auth.isLoading = false;\n }),\n undefined,\n 'mr/auth/get-profile',\n );\n } catch {\n store.setState(\n produce((state) => {\n state.auth.profile = {};\n state.auth.isUnauthorized = true;\n state.auth.isLoading = false;\n }),\n undefined,\n 'mr/auth/get-profile',\n );\n }\n };\n\n const useIsUnauthorized = () => {\n const { isUnauthorized, profile, isLoading } = store((state) => state.auth);\n\n return { isUnauthorized: isUnauthorized && !profile.accountId, isLoading };\n };\n\n const setIsUnauthorized = (isUnauthorized: boolean) =>\n store.setState(\n produce((state) => {\n state.auth.isUnauthorized = isUnauthorized;\n }),\n );\n\n const logout = () => {\n authService.logout();\n store.setState(\n produce((state) => {\n state.auth.isUnauthorized = true;\n state.auth.profile = {};\n }),\n );\n };\n\n return {\n requestLogin,\n useProfile,\n getProfile,\n useIsUnauthorized,\n setIsUnauthorized,\n logout,\n };\n};\n\nexport { initAuthActions };\n\nexport type AuthActions = ReturnType<typeof initAuthActions>;\n","import type {\n CreatedEntity,\n Entity,\n MonoriseEntityConfig,\n} from '@monorise/base';\nimport { produce } from 'immer';\nimport type { MonoriseStore } from '../store/monorise.store';\nimport type { CommonStore } from '../types/monorise.type';\n\nconst initConfigActions = (store: MonoriseStore) => {\n const setConfig = (config: Record<Entity, MonoriseEntityConfig>) => {\n const entityMaps = Object.keys(config).reduce(\n (acc, entity) => {\n acc[entity as any] = {\n dataMap: new Map<string, CreatedEntity<Entity>>(),\n isFirstFetched: false,\n lastKey: '',\n } as CommonStore<CreatedEntity<Entity>>;\n return acc;\n },\n {} as Record<Entity, CommonStore<CreatedEntity<Entity>>>,\n );\n\n store.setState(\n produce((state) => {\n state.config = config;\n state.entity = entityMaps;\n }),\n );\n };\n\n const getConfig = () => {\n return store.getState().config;\n };\n\n const useConfig = () => {\n const config = store((state) => state.config);\n\n return config;\n };\n\n return {\n setConfig,\n getConfig,\n useConfig,\n };\n};\n\nexport { initConfigActions };\n\nexport type ConfigActions = ReturnType<typeof initConfigActions>;\n","import type {\n CreatedEntity,\n DraftEntity,\n Entity,\n EntitySchemaMap,\n} from '@monorise/base';\nimport { produce } from 'immer';\nimport { useEffect, useState } from 'react';\nimport {\n byEntityId,\n constructLocal,\n constructMutual,\n flipMutual,\n} from '../lib/entity';\nimport {\n convertToMap,\n getEntityRequestKey,\n getMutualRequestKey,\n getMutualStateKey,\n getTagRequestKey,\n getTagStateKey,\n getUniqueFieldRequestKey,\n getUniqueFieldStateKey,\n} from '../lib/utils';\nimport type {\n CommonOptions,\n CoreService,\n ListEntitiesByTagParams,\n} from '../services/core.service';\nimport type { MonoriseStore } from '../store/monorise.store';\nimport type { ApplicationRequestError } from '../types/api.type';\nimport type { CommonStore } from '../types/monorise.type';\nimport type { Mutual, MutualData } from '../types/mutual.type';\nimport type { AppActions } from './app.action';\n\n// ===== Important tips ======\n// Should we use store.getState() or store()?\n// USE store.getState() WHEN using within an action such as getEntity, getProfile\n// USE store() WHEN using within a react hook so that it gets the benefit of reactivity, such as useProfile, useEntity\n\nconst defaultOnError = (error: ApplicationRequestError | Error) => {\n if (!(error instanceof Error) && error.status >= 500) {\n // we only want server error to be captured by error tracking service\n throw error;\n }\n};\n\nconst initCoreActions = (\n monoriseStore: MonoriseStore,\n appActions: AppActions,\n coreService: CoreService,\n) => {\n const { makeEntityService, makeMutualService } = coreService;\n const { checkIsLoading, getError, useLoadStore, useErrorStore } = appActions;\n\n const listEntities = async <T extends Entity>(\n entityType: T,\n params: {\n skRange?: { start: string; end: string };\n all?: boolean;\n } = {},\n opts: CommonOptions = {},\n ) => {\n const store = monoriseStore.getState();\n const entityState = store.entity[entityType] ?? {};\n const { isFirstFetched } = entityState;\n const entityService = makeEntityService(entityType);\n const { skRange } = params;\n const requestKey = getEntityRequestKey('list', entityType);\n const isLoading = checkIsLoading(requestKey);\n const error = getError(requestKey);\n const onError = opts.onError ?? defaultOnError;\n\n if (error) {\n onError(error);\n return;\n }\n\n if (\n !opts.forceFetch &&\n ((isFirstFetched && !params.skRange) || isLoading)\n ) {\n return;\n }\n\n try {\n const { data: result } = await entityService.listEntities(\n {\n ...(params?.all ? {} : { limit: 20 }),\n start: skRange?.start,\n end: skRange?.end,\n },\n opts,\n );\n const newEntityMap = convertToMap<CreatedEntity<T>>(\n result.data,\n 'entityId',\n );\n\n const mergedMap = new Map([\n ...newEntityMap,\n ...store.entity[entityType].dataMap,\n ]);\n\n monoriseStore.setState(\n produce((state) => {\n state.entity[entityType] = {\n dataMap: params.skRange ? newEntityMap : mergedMap,\n isFirstFetched: true,\n lastKey: result.lastKey,\n };\n }),\n undefined,\n `mr/entity/list/${entityType}`,\n );\n } catch (err) {\n const error: Error & { originalError?: unknown } =\n err instanceof Error ? err : new Error('Unknown error occurred');\n\n return { error };\n }\n };\n\n const listMoreEntities = async <T extends Entity>(\n entityType: T,\n opts: CommonOptions = {},\n ) => {\n const requestKey = getEntityRequestKey('list', entityType);\n const store = monoriseStore.getState();\n const entityState = store.entity[entityType];\n const { dataMap, lastKey } = entityState;\n const entityService = makeEntityService(entityType);\n const error = getError(requestKey);\n const onError = opts.onError ?? defaultOnError;\n\n if (!lastKey) {\n return;\n }\n\n if (error) {\n onError(error);\n return;\n }\n\n try {\n const { data: result } = await entityService.listEntities(\n {\n limit: 20,\n lastKey,\n },\n opts,\n );\n\n monoriseStore.setState(\n produce((state) => {\n state.entity[entityType].isFirstFetched = true;\n state.entity[entityType].lastKey = result.lastKey;\n for (const i in result.data) {\n state.entity[entityType].dataMap.set(\n result.data[i].entityId,\n result.data[i],\n );\n }\n }),\n undefined,\n `mr/entity/list-more/${entityType}`,\n );\n } catch (err) {\n const error: Error & { originalError?: unknown } =\n err instanceof Error ? err : new Error('Unknown error occurred');\n\n return { error };\n }\n };\n\n const searchEntities = async <T extends Entity>(\n entityType: T,\n query: string,\n opts: CommonOptions = {},\n ) => {\n const requestKey = getEntityRequestKey('search', entityType);\n const entityService = makeEntityService(entityType);\n const error = getError(requestKey);\n const onError = opts.onError ?? defaultOnError;\n\n if (error) {\n onError(error);\n return;\n }\n\n try {\n const { data: result } = await entityService.searchEntities(query, opts);\n\n monoriseStore.setState(\n produce((state) => {\n state.entity[entityType].searchResults = result.data;\n for (const i in result.data) {\n state.entity[entityType].dataMap.set(\n result.data[i].entityId,\n result.data[i],\n );\n }\n }),\n );\n } catch (err) {\n const error: Error & { originalError?: unknown } =\n err instanceof Error ? err : new Error('Unknown error occurred');\n\n return { error };\n }\n };\n\n const listEntitiesByTag = async <T extends Entity>(\n entityType: T,\n tagName: string,\n opts: CommonOptions & { params?: ListEntitiesByTagParams } = {},\n ) => {\n const tagKey = getTagStateKey(entityType, tagName, opts.params);\n\n const state = monoriseStore.getState();\n const tagState = state.tag[tagKey] || {};\n const { isFirstFetched, dataMap } = tagState;\n const entityService = makeEntityService(entityType);\n const { forceFetch } = opts;\n const requestKey = getTagRequestKey(\n 'list',\n entityType,\n tagName,\n opts.params,\n );\n const isLoading = checkIsLoading(requestKey);\n const error = getError(requestKey);\n const onError = opts.onError ?? defaultOnError;\n\n if (!forceFetch) {\n if (error) {\n onError(error);\n return { error };\n }\n\n if (isFirstFetched || isLoading) {\n return {\n data: {\n entities: Array.from(dataMap?.values() || []),\n lastKey: null,\n },\n };\n }\n }\n\n try {\n const { data } = await entityService.listEntitiesByTag(tagName, {\n ...opts,\n requestKey,\n });\n const { entities, lastKey } = data;\n\n monoriseStore.setState(\n produce((state) => {\n for (const entity of entities) {\n state.entity[entityType].dataMap.set(entity.entityId, entity);\n }\n }),\n );\n\n monoriseStore.setState(\n produce((state) => {\n // Initialize tag state if it doesn't exist\n if (!state.tag[tagKey]) {\n state.tag[tagKey] = {\n dataMap: new Map(),\n isFirstFetched: false,\n };\n }\n\n // Merge new entities into existing dataMap instead of replacing\n for (const entity of entities) {\n state.tag[tagKey].dataMap.set(entity.entityId, entity);\n }\n\n state.tag[tagKey].isFirstFetched = true;\n state.tag[tagKey].lastKey = lastKey;\n }),\n );\n\n return { data };\n } catch (err) {\n const error: Error & { originalError?: unknown } =\n err instanceof Error ? err : new Error('Unknown error occurred');\n\n return { error };\n }\n };\n\n const getEntity = async <T extends Entity>(\n entityType: T,\n id: string,\n opts: CommonOptions = {},\n ): Promise<{\n data?: CreatedEntity<T>;\n error?: ApplicationRequestError | (Error & { originalError?: unknown });\n }> => {\n const store = monoriseStore.getState();\n const entityState = store.entity[entityType];\n const { dataMap } = entityState;\n const entityService = makeEntityService(entityType);\n let entity = dataMap.get(id);\n const requestKey = getEntityRequestKey('get', entityType, id);\n const isLoading = checkIsLoading(requestKey);\n const error = getError(requestKey);\n const { forceFetch } = opts;\n const onError = opts.onError ?? defaultOnError;\n\n if (!forceFetch) {\n if (error) {\n // If there's an existing error, handle it and return the error.\n onError?.(error);\n return { error };\n }\n\n if (entity) {\n // If entity already exists and no force fetch, return it.\n return { data: entity };\n }\n\n if (isLoading) {\n // If already loading, return undefined data and error to indicate ongoing operation.\n return {};\n }\n }\n\n try {\n ({ data: entity } = await entityService.getEntity(id, opts));\n\n monoriseStore.setState(\n produce((state) => {\n state.entity[entityType].dataMap.set(entity?.entityId, entity);\n }),\n undefined,\n `mr/entity/get/${entityType}/${id}`,\n );\n\n return { data: entity };\n } catch (err) {\n const error: Error & { originalError?: unknown } =\n err instanceof Error ? err : new Error('Unknown error occurred');\n\n return { error };\n }\n };\n\n const getEntityByUniqueField = async <T extends Entity>(\n entityType: T,\n fieldName: string,\n value: string,\n opts: CommonOptions = {},\n ) => {\n const store = monoriseStore.getState();\n const entityState = store.entity[entityType];\n const { dataMap } = entityState;\n const entityService = makeEntityService(entityType);\n const stateKey = getUniqueFieldStateKey(fieldName, value);\n let entity = dataMap.get(stateKey);\n const requestKey = getUniqueFieldRequestKey(entityType, fieldName, value);\n const isLoading = checkIsLoading(requestKey);\n const error = getError(requestKey);\n const { forceFetch } = opts;\n const onError = opts.onError ?? defaultOnError;\n\n if (!forceFetch) {\n if (error) {\n onError?.(error);\n return { error };\n }\n\n if (entity) {\n return { data: entity };\n }\n\n if (isLoading) {\n return {};\n }\n }\n\n try {\n ({ data: entity } = await entityService.getEntityByUniqueField(\n fieldName,\n value,\n opts,\n ));\n\n monoriseStore.setState(\n produce((state) => {\n state.entity[entityType].dataMap.set(entity?.entityId, entity);\n state.entity[entityType].dataMap.set(`${stateKey}`, entity);\n }),\n undefined,\n `mr/entity/unique/${entityType}/${stateKey}`,\n );\n\n return { data: entity };\n } catch (err) {\n const error: Error & { originalError?: unknown } =\n err instanceof Error ? err : new Error('Unknown error occurred');\n\n return { error };\n }\n };\n\n const createEntity = async <T extends Entity>(\n entityType: T,\n entity: DraftEntity<T>,\n opts: CommonOptions = {},\n ) => {\n const entityService = makeEntityService(entityType);\n const onError = opts.onError ?? defaultOnError;\n\n try {\n const { data } = await entityService.createEntity(entity, opts);\n\n monoriseStore.setState(\n produce((state) => {\n state.entity[entityType].dataMap.set(data.entityId, data);\n\n // auto-populate tag store based on entity config\n const tagConfigs = state.config[entityType]?.tags;\n if (tagConfigs) {\n for (const tagConfig of tagConfigs) {\n const { name, processor } = tagConfig;\n const processorResults = processor(\n data as CreatedEntity<Entity>,\n );\n\n for (const tagKey of Object.keys(state.tag)) {\n const [tagEntityType, tagName, ...paramParts] =\n tagKey.split('/');\n\n if (\n (tagEntityType as unknown as Entity) !== entityType ||\n tagName !== name\n ) {\n continue;\n }\n\n if (!state.tag[tagKey]?.isFirstFetched) {\n continue;\n }\n\n // parse params from key\n const keyParams: Record<string, string> = {};\n for (const part of paramParts) {\n const colonIdx = part.indexOf(':');\n if (colonIdx > 0) {\n keyParams[part.substring(0, colonIdx)] =\n part.substring(colonIdx + 1);\n }\n }\n\n // skip query-filtered stores (can't match client-side)\n if (keyParams.query) {\n continue;\n }\n\n // check if any processor result matches this tag store's params\n const matches = processorResults.some((result) => {\n if (keyParams.group && result.group !== keyParams.group) {\n return false;\n }\n if (\n keyParams.start &&\n (!result.sortValue || result.sortValue < keyParams.start)\n ) {\n return false;\n }\n if (\n keyParams.end &&\n (!result.sortValue || result.sortValue > keyParams.end)\n ) {\n return false;\n }\n return true;\n });\n\n if (matches) {\n state.tag[tagKey].dataMap.set(data.entityId, data);\n }\n }\n }\n }\n\n // auto-populate mutual store based on entity config\n const mutualFields =\n state.config[entityType]?.mutual?.mutualFields;\n if (mutualFields) {\n for (const [field, fieldConfig] of Object.entries(mutualFields)) {\n const byEntityType = fieldConfig.entityType;\n const ids = (entity as Record<string, any>)[field];\n if (!Array.isArray(ids)) continue;\n\n for (const byEntityId of ids) {\n const mutualKey = getMutualStateKey(\n byEntityType,\n byEntityId,\n entityType,\n );\n if (\n state.mutual[mutualKey] &&\n state.mutual[mutualKey].isFirstFetched\n ) {\n state.mutual[mutualKey].dataMap.set(data.entityId, {\n entityId: data.entityId,\n entityType,\n byEntityId,\n byEntityType,\n mutualId: '',\n data: data.data,\n mutualData: {},\n createdAt: data.createdAt,\n updatedAt: data.updatedAt,\n mutualUpdatedAt: data.updatedAt,\n });\n }\n }\n }\n }\n }),\n undefined,\n `mr/entity/create/${entityType}`,\n );\n\n return { data };\n } catch (err) {\n const error: Error & { originalError?: unknown } =\n err instanceof Error ? err : new Error('Unknown error occurred');\n\n onError?.(error);\n\n return { error };\n }\n };\n\n const upsertEntity = async <T extends Entity>(\n entityType: T,\n id: string,\n entity: DraftEntity<T>,\n opts: CommonOptions = {},\n ) => {\n const entityService = makeEntityService(entityType);\n const onError = opts.onError ?? defaultOnError;\n\n try {\n const { data } = await entityService.upsertEntity(id, entity, opts);\n\n monoriseStore.setState(\n produce((state) => {\n state.entity[entityType].dataMap.set(data.entityId, data);\n }),\n undefined,\n `mr/entity/upsert/${entityType}/${id}`,\n );\n return { data };\n } catch (err) {\n const error: Error & { originalError?: unknown } =\n err instanceof Error ? err : new Error('Unknown error occurred');\n onError(error);\n return { error };\n }\n };\n\n const editEntity = async <T extends Entity>(\n entityType: T,\n id: string,\n entity: Partial<DraftEntity<T>>,\n opts: CommonOptions = {},\n ) => {\n const entityService = makeEntityService(entityType);\n const onError = opts.onError ?? defaultOnError;\n\n try {\n const { data } = await entityService.editEntity(id, entity, opts);\n\n monoriseStore.setState(\n produce((state) => {\n state.entity[entityType].dataMap.set(data.entityId, data);\n\n // update mutual's entity data\n for (const key of Object.keys(state.mutual)) {\n const [_byEntity, _byId, _entityType] = key.split('/');\n if ((_entityType as unknown as Entity) === entityType) {\n const mutual = state.mutual[key].dataMap.get(id);\n if (mutual) {\n state.mutual[key].dataMap = new Map(\n state.mutual[key].dataMap,\n ).set(id, { ...mutual, data: data.data });\n }\n }\n }\n\n // update flipped mutual side (entity is the \"by\" entity)\n for (const key of Object.keys(state.mutual)) {\n const [_byEntity, _byId] = key.split('/');\n if ((_byEntity as unknown as Entity) === entityType && _byId === id) {\n const newDataMap = new Map(state.mutual[key].dataMap);\n for (const [entryId, mutual] of newDataMap) {\n newDataMap.set(entryId, { ...mutual, data: data.data });\n }\n state.mutual[key].dataMap = newDataMap;\n }\n }\n\n // update tag store entries\n for (const tagKey of Object.keys(state.tag)) {\n const [tagEntityType] = tagKey.split('/');\n if ((tagEntityType as unknown as Entity) === entityType) {\n if (state.tag[tagKey]?.dataMap?.has(id)) {\n state.tag[tagKey].dataMap.set(id, data);\n }\n }\n }\n }),\n undefined,\n `mr/entity/edit/${entityType}/${id}`,\n );\n return { data };\n } catch (err) {\n const error: Error & { originalError?: unknown } =\n err instanceof Error ? err : new Error('Unknown error occurred');\n onError(error);\n return { error };\n }\n };\n\n const deleteEntity = async <T extends Entity>(\n entityType: T,\n id: string,\n opts: CommonOptions = {},\n ) => {\n const entityService = makeEntityService(entityType);\n const onError = opts.onError ?? defaultOnError;\n\n try {\n await entityService.deleteEntity(id, opts);\n deleteLocalMutualsByEntity(entityType, id);\n\n monoriseStore.setState(\n produce((state) => {\n state.entity[entityType].dataMap.delete(id);\n\n // delete mutual's entity data\n for (const key of Object.keys(state.mutual)) {\n const [_byEntity, _byId, _entityType] = key.split('/');\n if ((_entityType as unknown as Entity) === entityType) {\n state.mutual[key].dataMap.delete(id);\n }\n }\n\n // delete from tag store\n for (const tagKey of Object.keys(state.tag)) {\n const [tagEntityType] = tagKey.split('/');\n if ((tagEntityType as unknown as Entity) === entityType) {\n state.tag[tagKey]?.dataMap?.delete(id);\n }\n }\n }),\n undefined,\n `mr/entity/delete/${entityType}/${id}`,\n );\n return { data: { entityId: id } }; // Indicate success with the deleted ID\n } catch (err) {\n const error: Error & { originalError?: unknown } =\n err instanceof Error ? err : new Error('Unknown error occurred');\n onError(error);\n return { error };\n }\n };\n\n const listEntitiesByEntity = async <B extends Entity, T extends Entity>(\n byEntityType: B,\n entityType: T,\n id: string,\n opts: CommonOptions = {},\n chainEntityQuery?: string,\n ) => {\n const onError = opts.onError ?? defaultOnError;\n const selfKey =\n opts.stateKey ??\n getMutualStateKey(\n byEntityType,\n id,\n entityType,\n undefined,\n chainEntityQuery,\n );\n const mutualService = makeMutualService(byEntityType, entityType);\n const store = monoriseStore.getState();\n const mutualState = store.mutual[selfKey] || {};\n const { isFirstFetched } = mutualState;\n const requestKey = getMutualRequestKey(\n 'list',\n byEntityType,\n entityType,\n id,\n undefined,\n chainEntityQuery,\n );\n const isLoading = checkIsLoading(requestKey);\n const error = getError(requestKey);\n const { forceFetch } = opts;\n\n if (!forceFetch) {\n if (error) {\n onError(error);\n return { error };\n }\n\n if (isFirstFetched || isLoading) {\n return {\n data: {\n entities: Array.from(mutualState.dataMap?.values() || []),\n lastKey: mutualState.lastKey,\n },\n };\n }\n }\n\n try {\n const { data } = await mutualService.listEntitiesByEntity(\n id,\n opts,\n chainEntityQuery,\n );\n const { entities, lastKey } = data;\n const newEntityDataMap = new Map();\n\n for (const i in entities) {\n newEntityDataMap.set(entities[i].entityId, entities[i]);\n }\n\n monoriseStore.setState(\n produce((state) => {\n for (const [key, value] of newEntityDataMap) {\n state.entity[entityType]?.dataMap.set(key, value);\n }\n\n // prepare or extend the mutual entry\n const existing = state.mutual[selfKey];\n if (existing) {\n // extend the existing map\n const incoming = convertToMap(entities, 'entityId');\n for (const [k, v] of incoming) {\n existing.dataMap.set(k, v);\n }\n existing.isFirstFetched = true;\n existing.lastKey = lastKey;\n } else {\n // first time: create it\n state.mutual[selfKey] = {\n dataMap: convertToMap(entities, 'entityId'),\n isFirstFetched: true,\n lastKey,\n };\n }\n }),\n undefined,\n `mr/mutual/list/${selfKey}`,\n );\n\n return { data };\n } catch (err) {\n const error: Error & { originalError?: unknown } =\n err instanceof Error ? err : new Error('Unknown error occurred');\n\n return { error };\n }\n };\n\n // todo: list more mutuals by entity\n // const listMoremutualsByEntity = async (\n // entityType: Entity,\n // otherEntityType: Entity,\n // id: string,\n // ) =>\n\n const getMutual = async <B extends Entity, T extends Entity>(\n byEntityType: B,\n entityType: T,\n byEntityId: string | null,\n entityId: string,\n opts: CommonOptions & {\n // if failed to retrieve, would still set a default mutual data\n defaultMutualData?: Record<string, any>;\n } = {},\n ) => {\n const selfKey = getMutualStateKey(byEntityType, byEntityId, entityType);\n const mutualService = makeMutualService(byEntityType, entityType);\n const store = monoriseStore.getState();\n const mutualState = store.mutual[selfKey] || {};\n const requestKey = getMutualRequestKey(\n 'get',\n byEntityType,\n entityType,\n byEntityId,\n entityId,\n );\n const isLoading = checkIsLoading(requestKey);\n const error = getError(requestKey);\n const onError = opts.onError ?? defaultOnError;\n\n if (error) {\n onError?.(error);\n return { error };\n }\n\n if (!byEntityId || isLoading) {\n return {\n data: mutualState.dataMap?.get(entityId) as Mutual<B, T>,\n };\n }\n\n if (mutualState.dataMap?.get(entityId)) {\n return {\n data: mutualState.dataMap.get(entityId) as Mutual<B, T>,\n };\n }\n\n let mutual: Omit<Mutual<B, T>, 'data'>;\n let hasRequestFailed = false;\n\n try {\n ({ data: mutual } = await mutualService.getMutual(\n byEntityId,\n entityId,\n opts,\n ));\n } catch (err) {\n if (!opts.defaultMutualData) {\n const error: Error & { originalError?: unknown } =\n err instanceof Error ? err : new Error('Unknown error occurred');\n return { error };\n }\n\n hasRequestFailed = true;\n mutual = {\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n mutualId: `${byEntityId}-${entityId}`,\n mutualUpdatedAt: new Date().toISOString(),\n byEntityType,\n byEntityId,\n entityType,\n entityId,\n mutualData: opts.defaultMutualData,\n };\n }\n\n const newMutualDataMap = new Map(store.mutual[selfKey]?.dataMap);\n newMutualDataMap.set(mutual.entityId, mutual as Mutual<B, T>);\n\n if (!hasRequestFailed) {\n const entityState = store.entity[entityType];\n const { dataMap: entityDataMap } = entityState;\n\n const newEntityDataMap = new Map(entityDataMap);\n newEntityDataMap.set(mutual.entityId, mutual as any);\n\n monoriseStore.setState(\n produce((state) => {\n state.mutual[selfKey] = {\n ...(state.mutual[selfKey] || {}),\n dataMap: newMutualDataMap,\n };\n state.entity[entityType].dataMap = newEntityDataMap;\n }),\n undefined,\n `mr/mutual/get/${getMutualStateKey(\n byEntityType,\n byEntityId,\n entityType,\n entityId,\n )}`,\n );\n }\n return { data: mutual as Mutual<B, T> };\n };\n\n const createMutual = async <B extends Entity, T extends Entity>(\n byEntityType: B,\n entityType: T,\n byEntityId: string,\n entityId: string,\n payload: MutualData<B, T> | Record<string, any> = {},\n opts: CommonOptions = {},\n ) => {\n const mutualService = makeMutualService(byEntityType, entityType);\n const onError = opts.onError ?? defaultOnError;\n\n try {\n const { data: mutual } = await mutualService.createMutual(\n byEntityId,\n entityId,\n payload,\n opts,\n );\n\n monoriseStore.setState(\n produce((state) => {\n const bySide = getMutualStateKey(\n byEntityType,\n byEntityId,\n entityType,\n );\n const side = getMutualStateKey(entityType, entityId, byEntityType);\n\n if (!state.mutual[bySide]) {\n state.mutual[bySide] = {\n dataMap: new Map(),\n };\n }\n\n state.mutual[bySide].dataMap = new Map(\n state.mutual[bySide]?.dataMap,\n ).set(mutual.entityId, mutual);\n\n if (!state.mutual[side]) {\n state.mutual[side] = {\n dataMap: new Map(),\n };\n }\n\n state.mutual[side].dataMap = new Map(state.mutual[side]?.dataMap).set(\n mutual.byEntityId,\n flipMutual(mutual),\n );\n }),\n undefined,\n `mr/mutual/create/${getMutualStateKey(byEntityType, byEntityId, entityType, entityId)}`,\n );\n return { data: mutual };\n } catch (err) {\n const error: Error & { originalError?: unknown } =\n err instanceof Error ? err : new Error('Unknown error occurred');\n onError(error);\n return { error };\n }\n };\n\n const createLocalMutual = async <B extends Entity, T extends Entity>(\n byEntityType: B,\n entityType: T,\n byEntityId: string,\n entityId: string,\n mutualData: MutualData<B, T>,\n data: EntitySchemaMap[T] | Record<string, any>,\n ) => {\n const mutual = constructMutual(\n byEntityType,\n byEntityId,\n entityType,\n entityId,\n mutualData,\n data as EntitySchemaMap[T],\n );\n\n monoriseStore.setState(\n produce((state) => {\n const bySide = getMutualStateKey(byEntityType, byEntityId, entityType);\n const side = getMutualStateKey(entityType, entityId, byEntityType);\n\n if (!state.mutual[bySide]) {\n state.mutual[bySide] = {\n dataMap: new Map(),\n };\n }\n\n state.mutual[bySide].dataMap = new Map(\n state.mutual[bySide]?.dataMap,\n ).set(mutual.entityId, mutual);\n\n if (!state.mutual[side]) {\n state.mutual[side] = {\n dataMap: new Map(),\n };\n }\n\n state.mutual[side].dataMap = new Map(state.mutual[side]?.dataMap).set(\n mutual.byEntityId,\n flipMutual(mutual),\n );\n }),\n undefined,\n `mr/mutual/create/${getMutualStateKey(byEntityType, byEntityId, entityType, entityId)}`,\n );\n };\n\n const updateLocalEntity = async <T extends Entity>(\n entityType: Entity,\n entityId: string,\n data: Partial<DraftEntity<T>> = {},\n ) => {\n const createdEntity = constructLocal(entityType, entityId, data);\n\n monoriseStore.setState(\n produce((state) => {\n state.entity[entityType].dataMap.set(entityId, createdEntity);\n }),\n undefined,\n `mr/entity/local-update/${entityType}/${entityId}`,\n );\n };\n\n const upsertLocalMutual = async <B extends Entity, T extends Entity>(\n byEntityType: B,\n entityType: T,\n byEntityId: string,\n entityId: string,\n mutualData: MutualData<B, T>,\n data: EntitySchemaMap[T] | Record<string, any> = {},\n ) => {\n const mutual = constructMutual(\n byEntityType,\n byEntityId,\n entityType,\n entityId,\n mutualData,\n data as EntitySchemaMap[T],\n );\n\n monoriseStore.setState(\n produce((state) => {\n const bySide = getMutualStateKey(byEntityType, byEntityId, entityType);\n const side = getMutualStateKey(entityType, entityId, byEntityType);\n\n if (!state.mutual[bySide]) {\n state.mutual[bySide] = {\n dataMap: new Map(),\n };\n }\n\n state.mutual[bySide].dataMap = new Map(\n state.mutual[bySide]?.dataMap,\n ).set(entityId, mutual);\n\n if (!state.mutual[side]) {\n state.mutual[side] = {\n dataMap: new Map(),\n };\n }\n\n state.mutual[side].dataMap = new Map(state.mutual[side]?.dataMap).set(\n byEntityId,\n flipMutual(mutual),\n );\n }),\n undefined,\n `mr/mutual/local-update/${getMutualStateKey(byEntityType, byEntityId, entityType, entityId)}`,\n );\n };\n\n const editMutual = async <B extends Entity, T extends Entity>(\n byEntityType: B,\n entityType: T,\n byEntityId: string,\n entityId: string,\n payload: MutualData<B, T> | Record<string, any> = {},\n opts: CommonOptions = {},\n ) => {\n const mutualService = makeMutualService(byEntityType, entityType);\n const onError = opts.onError ?? defaultOnError;\n\n try {\n const { data: mutual } = await mutualService.editMutual(\n byEntityId,\n entityId,\n payload,\n opts,\n );\n\n monoriseStore.setState(\n produce((state) => {\n const bySide = getMutualStateKey(\n byEntityType,\n byEntityId,\n entityType,\n );\n const side = getMutualStateKey(entityType, entityId, byEntityType);\n\n if (!state.mutual[bySide]) {\n state.mutual[bySide] = {\n dataMap: new Map(),\n };\n }\n\n state.mutual[bySide].dataMap = new Map(\n state.mutual[bySide]?.dataMap,\n ).set(mutual.entityId, mutual);\n\n if (!state.mutual[side]) {\n state.mutual[side] = {\n dataMap: new Map(),\n };\n }\n\n state.mutual[side].dataMap = new Map(state.mutual[side]?.dataMap).set(\n mutual.byEntityId,\n flipMutual(mutual),\n );\n }),\n undefined,\n `mr/mutual/edit/${getMutualStateKey(byEntityType, byEntityId, entityType, entityId)}`,\n );\n return { data: mutual };\n } catch (err) {\n const error: Error & { originalError?: unknown } =\n err instanceof Error ? err : new Error('Unknown error occurred');\n onError(error);\n return { error };\n }\n };\n\n const deleteMutual = async <B extends Entity, T extends Entity>(\n byEntityType: B,\n entityType: T,\n byEntityId: string,\n entityId = '',\n opts: CommonOptions = {},\n ) => {\n const mutualService = makeMutualService(byEntityType, entityType);\n const onError = opts.onError ?? defaultOnError;\n\n try {\n const { data } = await mutualService.deleteMutual(\n byEntityId,\n entityId,\n opts,\n );\n\n monoriseStore.setState(\n produce((state) => {\n const bySide = getMutualStateKey(\n byEntityType,\n byEntityId,\n entityType,\n );\n const side = getMutualStateKey(entityType, entityId, byEntityType);\n\n state.mutual[bySide].dataMap.delete(data.entityId);\n\n if (state.mutual[side]) {\n state.mutual[side].dataMap.delete(data.byEntityId);\n }\n }),\n undefined,\n `mr/mutual/delete/${getMutualStateKey(byEntityType, byEntityId, entityType, entityId)}`,\n );\n return { data };\n } catch (err) {\n const error: Error & { originalError?: unknown } =\n err instanceof Error ? err : new Error('Unknown error occurred');\n onError(error);\n return { error };\n }\n };\n\n const deleteLocalMutual = <B extends Entity, T extends Entity>(\n byEntityType: B,\n entityType: T,\n byEntityId: string,\n entityId: string,\n ) => {\n monoriseStore.setState(\n produce((state) => {\n const bySide = getMutualStateKey(byEntityType, byEntityId, entityType);\n const side = getMutualStateKey(entityType, entityId, byEntityType);\n const bySideDataMap = new Map(state.mutual[bySide]?.dataMap);\n const sideDataMap = new Map(state.mutual[side]?.dataMap);\n bySideDataMap.delete(entityId);\n sideDataMap.delete(byEntityId);\n\n if (state.mutual[bySide]) {\n state.mutual[bySide].dataMap.delete(entityId);\n }\n if (state.mutual[side]) {\n state.mutual[side].dataMap.delete(byEntityId);\n }\n }),\n undefined,\n `mr/mutual/local-delete/${getMutualStateKey(byEntityType, byEntityId, entityType, entityId)}`,\n );\n };\n\n const deleteLocalMutualsByEntity = <T extends Entity>(\n entityType: T,\n id: string,\n ) => {\n const store = monoriseStore.getState();\n const entityConfig = store.config; // Assuming store.config holds mutual related configurations\n let mutuals: Mutual[] = [];\n for (const i of Object.keys(entityConfig)) {\n const mutualState = store.mutual[`${entityType}/${id}/${i}`];\n mutuals = [\n ...mutuals,\n ...Array.from(mutualState?.dataMap.values() || []),\n ];\n }\n\n const updatedState = mutuals.reduce(\n (acc, mutual) => {\n const side = getMutualStateKey(\n mutual.entityType,\n mutual.entityId,\n mutual.byEntityType,\n );\n const dataMap = new Map(store.mutual[side]?.dataMap); // Use optional chaining\n dataMap.delete(id);\n acc[side] = {\n ...store.mutual[side],\n dataMap,\n };\n return acc;\n },\n {} as Record<string, CommonStore<Mutual>>,\n );\n\n monoriseStore.setState(\n produce((state) => {\n // This is a full replacement, might not be desired for partial updates.\n // If state.mutual can contain other keys, this might clear them.\n // Consider a more granular update if needed.\n for (const key in updatedState) {\n state.mutual[key] = updatedState[key];\n }\n }),\n undefined,\n `mr/mutual/local-delete-by-entity/${entityType}/${id}`,\n );\n };\n\n const useEntity = <T extends Entity>(\n entityType: T,\n id?: string,\n opts: CommonOptions = {},\n ): {\n entity: CreatedEntity<T> | undefined;\n isLoading: boolean;\n error?: ApplicationRequestError;\n requestKey: string;\n isFirstFetched?: boolean;\n refetch: () => Promise<CreatedEntity<T> | undefined>;\n } => {\n const dataMap = monoriseStore(\n (state) => state.entity[entityType]?.dataMap || new Map(),\n );\n const isFirstFetched = monoriseStore(\n (state) => state.entity[entityType]?.isFirstFetched,\n );\n const requestKey = getEntityRequestKey('get', entityType, id);\n const isLoading = useLoadStore(requestKey);\n const error = useErrorStore(requestKey);\n\n useEffect(() => {\n if (id) {\n getEntity(entityType, id, opts);\n }\n }, [id, entityType, opts]);\n\n return {\n entity: id ? dataMap.get(id) : undefined,\n isLoading,\n error,\n requestKey,\n isFirstFetched,\n refetch: async () => {\n if (id) {\n const { data, error: fetchError } = await getEntity(entityType, id, {\n ...opts,\n forceFetch: true,\n });\n if (fetchError) {\n // Handle refetch error if necessary, e.g., throw or set local state\n }\n return data;\n }\n },\n };\n };\n\n const useEntityByUniqueField = <T extends Entity>(\n entityType: T,\n fieldName: string,\n value?: string,\n opts: CommonOptions = {},\n ): {\n entity: CreatedEntity<T> | undefined;\n isLoading: boolean;\n error?: ApplicationRequestError;\n requestKey: string;\n isFirstFetched?: boolean;\n refetch: () => Promise<CreatedEntity<T> | undefined>;\n } => {\n const dataMap = monoriseStore(\n (state) => state.entity[entityType]?.dataMap || new Map(),\n );\n const isFirstFetched = monoriseStore(\n (state) => state.entity[entityType]?.isFirstFetched,\n );\n const stateKey = getUniqueFieldStateKey(fieldName, value || '');\n const requestKey = getUniqueFieldRequestKey(\n entityType,\n fieldName,\n value || '',\n );\n const isLoading = useLoadStore(requestKey);\n const error = useErrorStore(requestKey);\n\n useEffect(() => {\n if (value) {\n getEntityByUniqueField(entityType, fieldName, value, opts);\n }\n }, [fieldName, value, entityType, opts]);\n\n return {\n entity: value ? dataMap.get(`${stateKey}`) : undefined,\n isLoading,\n error,\n requestKey,\n isFirstFetched,\n refetch: async () => {\n if (value) {\n const { data, error: fetchError } = await getEntityByUniqueField(\n entityType,\n fieldName,\n value,\n {\n ...opts,\n forceFetch: true,\n },\n );\n if (fetchError) {\n // Handle refetch error if necessary\n }\n return data;\n }\n },\n };\n };\n\n const useEntities = <T extends Entity>(\n entityType: T,\n params: {\n skRange?: {\n start: string;\n end: string;\n };\n all?: boolean;\n } = {},\n opts: CommonOptions & { searchInterval?: number } = {},\n ): {\n isLoading: boolean;\n entities?: CreatedEntity<T>[];\n entitiesMap: Map<string, CreatedEntity<T>>;\n error?: ApplicationRequestError;\n requestKey: string;\n searchField: {\n value: string;\n onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n };\n lastKey?: string;\n isFirstFetched?: boolean;\n listMore: () => void;\n refetch: () => void;\n } => {\n const requestKey = getEntityRequestKey('list', entityType);\n const isListing = useLoadStore(requestKey);\n const error = useErrorStore(requestKey);\n const state = monoriseStore((state) => state.entity[entityType]);\n const { dataMap, searchResults, isFirstFetched, lastKey } = state ?? {\n dataMap: new Map(),\n };\n const [entities, setEntities] = useState<CreatedEntity<T>[]>();\n const [query, setQuery] = useState<string>('');\n const [skRange, setBetween] = useState(params.skRange);\n const [all, setAll] = useState(params.all);\n const [isSearching, setIsSearching] = useState(false);\n const isLoading = isListing || isSearching;\n\n useEffect(() => {\n if (\n params?.skRange &&\n skRange?.start !== params.skRange.start &&\n skRange?.end !== params.skRange.end\n ) {\n setBetween(params.skRange);\n }\n }, [skRange?.end, skRange?.start, params.skRange]);\n\n useEffect(() => {\n if (params?.all !== all) {\n setAll(params.all);\n }\n }, [all, params.all]);\n\n useEffect(() => {\n if (!isFirstFetched) {\n listEntities(entityType, { skRange, all }, opts);\n }\n }, [all, entityType, skRange, opts, isFirstFetched]);\n\n useEffect(() => {\n let queryTimeout: NodeJS.Timeout;\n\n if (query?.length) {\n setIsSearching(true);\n queryTimeout = setTimeout(async () => {\n await searchEntities(entityType, query);\n setIsSearching(false);\n }, opts.searchInterval ?? 700);\n }\n\n return () => queryTimeout && clearTimeout(queryTimeout);\n }, [entityType, query]);\n\n useEffect(() => {\n if (!query && dataMap.size !== entities?.length) {\n setIsSearching(false);\n setEntities(\n Array.from(dataMap.values()).sort(byEntityId) as CreatedEntity<T>[],\n );\n }\n\n if (query) {\n setEntities(searchResults as CreatedEntity<T>[]);\n }\n }, [\n dataMap,\n dataMap.size,\n entities?.length,\n query,\n searchResults,\n searchResults?.length,\n ]);\n\n const handleQueryChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setQuery(event.target.value);\n };\n\n const searchField = {\n value: query,\n onChange: handleQueryChange,\n };\n\n return {\n entities,\n entitiesMap: dataMap,\n searchField,\n isLoading,\n error,\n requestKey,\n isFirstFetched,\n lastKey,\n refetch: async () => {\n if (entityType && query) {\n await searchEntities(entityType, query);\n return;\n }\n await listEntities(\n entityType,\n { skRange, all },\n {\n ...opts,\n forceFetch: true,\n },\n );\n },\n listMore: async () => {\n if (!lastKey) return;\n\n await listMoreEntities(entityType, {\n ...opts,\n forceFetch: true,\n });\n },\n };\n };\n\n const useMutual = <B extends Entity, T extends Entity>(\n byEntityType: B,\n entityType: T,\n byId: string | null,\n id: string,\n opts: CommonOptions & {\n // if failed to retrieve, would still set a default mutual data\n defaultMutualData?: Record<string, any>;\n } = {},\n ): {\n mutual?: Mutual<B, T>;\n isLoading: boolean;\n error?: ApplicationRequestError;\n requestKey: string;\n } => {\n const stateKey = getMutualStateKey(byEntityType, byId, entityType);\n const state = monoriseStore((state) => state.mutual[stateKey]);\n const requestKey = getMutualRequestKey(\n 'get',\n byEntityType,\n entityType,\n byId,\n id,\n );\n const isLoading = useLoadStore(requestKey);\n const error = useErrorStore(requestKey);\n\n const { dataMap } = state || {\n dataMap: new Map(),\n };\n\n useEffect(() => {\n if (!dataMap.get(id)) {\n getMutual(byEntityType, entityType, byId, id, opts);\n }\n }, [byEntityType, byId, entityType, id, opts, dataMap]);\n\n return {\n mutual: dataMap.get(id) as Mutual<B, T>,\n isLoading,\n error,\n requestKey,\n };\n };\n\n const useMutuals = <B extends Entity, T extends Entity>(\n byEntityType: B,\n entityType: T,\n byId?: string,\n opts: CommonOptions = {},\n chainEntityQuery?: string, // chain entity query, refer to list-entities-by-entity.controller.ts\n ): {\n mutuals: Mutual<B, T>[];\n mutualsMap: Map<string, Mutual<B, T>>;\n isLoading: boolean;\n requestKey: string;\n error?: ApplicationRequestError;\n isFirstFetched?: boolean;\n lastKey?: string;\n listMore?: () => void;\n } => {\n const stateKey = getMutualStateKey(\n byEntityType,\n byId || '',\n entityType,\n undefined,\n chainEntityQuery,\n );\n const state = monoriseStore((state) => state.mutual[stateKey]);\n const { dataMap, isFirstFetched, lastKey } = state || {\n dataMap: new Map(),\n };\n const [mutuals, setMutuals] = useState<Mutual<B, T>[]>([]);\n const requestKey = getMutualRequestKey(\n 'list',\n byEntityType,\n entityType,\n byId || '',\n undefined,\n chainEntityQuery,\n );\n const isLoading = useLoadStore(requestKey);\n const error = useErrorStore(requestKey);\n\n useEffect(() => {\n if (!isFirstFetched && byEntityType && entityType && byId) {\n listEntitiesByEntity(\n byEntityType,\n entityType,\n byId,\n { ...opts, stateKey },\n chainEntityQuery,\n );\n }\n }, [\n isFirstFetched,\n byEntityType,\n byId,\n entityType,\n opts,\n chainEntityQuery,\n stateKey,\n opts?.forceFetch,\n opts?.noData,\n ]);\n\n useEffect(() => {\n const dataMapArray = Array.from(dataMap.values());\n if (\n dataMap.size !== mutuals?.length ||\n dataMapArray.some(\n (item, index) =>\n JSON.stringify(item) !== JSON.stringify(mutuals[index]),\n )\n ) {\n setMutuals(dataMapArray as Mutual<B, T>[]);\n }\n }, [dataMap, dataMap.size, mutuals?.length]);\n\n return {\n mutuals,\n mutualsMap: dataMap as Map<string, Mutual<B, T>>,\n isLoading,\n requestKey,\n error,\n isFirstFetched,\n lastKey,\n ...(lastKey && {\n listMore: () => {\n if (byEntityType && entityType && byId) {\n listEntitiesByEntity(\n byEntityType,\n entityType,\n byId,\n {\n ...opts,\n forceFetch: true,\n params: { ...opts.params, lastKey },\n stateKey,\n },\n chainEntityQuery,\n );\n }\n },\n }),\n };\n };\n\n const useTaggedEntities = <T extends Entity>(\n entityType: T,\n tagName: string,\n opts: CommonOptions & { params?: ListEntitiesByTagParams } = {},\n ) => {\n const { params } = opts || {};\n const stateKey = getTagStateKey(entityType, tagName, params);\n const state = monoriseStore((state) => state.tag[stateKey]);\n const { dataMap, isFirstFetched, lastKey } = state || {\n dataMap: new Map(),\n };\n const [entities, setEntities] = useState<CreatedEntity<T>[]>([]);\n const requestKey = getTagRequestKey('list', entityType, tagName, params);\n const isLoading = useLoadStore(requestKey);\n const error = useErrorStore(requestKey);\n\n useEffect(() => {\n if (entityType && tagName && Object.keys(params).length > 0) {\n listEntitiesByTag(entityType, tagName, opts);\n }\n }, [entityType, opts, tagName, params, opts?.forceFetch]);\n\n useEffect(() => {\n const dataMapArray = Array.from(dataMap.values());\n if (\n dataMap.size !== entities?.length ||\n dataMapArray.some(\n (item, index) =>\n JSON.stringify(item) !== JSON.stringify(entities[index]),\n )\n ) {\n setEntities(dataMapArray as CreatedEntity<T>[]);\n }\n }, [dataMap, dataMap.size, entities?.length]);\n\n return {\n entities,\n entitiesMap: dataMap as Map<string, CreatedEntity<T>>,\n isLoading,\n requestKey,\n error,\n isFirstFetched,\n lastKey,\n refetch: async () => {\n if (entityType && tagName && params?.group) {\n return await listEntitiesByTag(entityType, tagName, {\n ...opts,\n forceFetch: true,\n });\n }\n },\n listMore: async () => {\n if (entityType && tagName && params?.group) {\n return await listEntitiesByTag(entityType, tagName, {\n ...opts,\n forceFetch: true,\n params: { ...params, lastKey },\n });\n }\n },\n };\n };\n\n const useEntityState = <T extends Entity>(entityType: T) => {\n return monoriseStore((state) => state.entity[entityType]);\n };\n\n const updateLocalTaggedEntity = <T extends Entity>(\n entityType: T,\n entityId: string,\n tagName: string,\n data: Partial<DraftEntity<T>> = {},\n params?: ListEntitiesByTagParams,\n ) => {\n const tagKey = getTagStateKey(\n entityType,\n tagName,\n params as Record<string, string>,\n );\n\n monoriseStore.setState(\n produce((state) => {\n const entity = state.tag[tagKey]?.dataMap?.get(entityId);\n if (entity) {\n state.tag[tagKey].dataMap.set(entityId, {\n ...entity,\n data: { ...entity.data, ...data },\n });\n }\n }),\n undefined,\n `mr/tag/local-update/${entityType}/${entityId}`,\n );\n };\n\n const deleteLocalTaggedEntity = <T extends Entity>(\n entityType: T,\n entityId: string,\n tagName: string,\n params?: ListEntitiesByTagParams,\n ) => {\n const tagKey = getTagStateKey(\n entityType,\n tagName,\n params as Record<string, string>,\n );\n\n monoriseStore.setState(\n produce((state) => {\n if (state.tag[tagKey]?.dataMap?.has(entityId)) {\n state.tag[tagKey].dataMap.delete(entityId);\n }\n }),\n undefined,\n `mr/tag/local-delete/${entityType}/${entityId}`,\n );\n };\n\n return {\n listMoreEntities,\n createEntity,\n upsertEntity,\n getEntity,\n editEntity,\n deleteEntity,\n getMutual,\n updateLocalEntity,\n createMutual,\n createLocalMutual,\n upsertLocalMutual,\n editMutual,\n deleteMutual,\n deleteLocalMutual,\n useEntity,\n useEntityByUniqueField,\n useEntities,\n useMutual,\n useMutuals,\n useTaggedEntities,\n useEntityState,\n updateLocalTaggedEntity,\n deleteLocalTaggedEntity,\n };\n};\n\nexport { initCoreActions };\n\nexport type CoreActions = ReturnType<typeof initCoreActions>;\n","import type { CreatedEntity, Entity, EntitySchemaMap } from '@monorise/base';\nimport type { Mutual, MutualData } from '../types/mutual.type';\n\nexport const constructLocal = (\n entityType: Entity,\n entityId: string,\n data: any,\n): CreatedEntity<Entity> => {\n return {\n entityType: entityType as unknown as string,\n entityId,\n data,\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n };\n};\n\nexport const constructMutual = <B extends Entity, T extends Entity>(\n byEntityType: B,\n byEntityId: string,\n entityType: T,\n entityId: string,\n mutualData: Partial<MutualData<B, T>>,\n data: EntitySchemaMap[T],\n): Mutual => {\n return {\n mutualId: `${byEntityId}-${entityId}`,\n byEntityType,\n byEntityId,\n entityType,\n entityId,\n mutualData,\n data,\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n mutualUpdatedAt: new Date().toISOString(),\n };\n};\n\nexport const flipMutual = (mutual: Mutual): Mutual => {\n return {\n ...mutual,\n entityId: mutual.byEntityId,\n entityType: mutual.byEntityType,\n byEntityId: mutual.entityId,\n byEntityType: mutual.entityType,\n };\n};\n\nexport const byMutualIndex = (a: Mutual<any, any>, b: Mutual<any, any>) => {\n return a.mutualData.index - b.mutualData.index;\n};\n\nexport const byEntityId = (a: CreatedEntity<any>, b: CreatedEntity<any>) => {\n if (b.entityId < a.entityId) return -1;\n return 1;\n};\n\nexport const constructOrderByIndex = (mutuals: Mutual<any, any>[]) => {\n return mutuals.sort(byMutualIndex).map((mutual) => mutual.entityId);\n};\n\nexport const injectFields = <T extends Entity>(\n entity: CreatedEntity<T> | undefined,\n fields: Record<string, any>,\n): CreatedEntity<T> | undefined => {\n return entity\n ? {\n ...entity,\n data: {\n ...entity.data,\n ...fields,\n },\n }\n : undefined;\n};\n","import type { Entity } from '@monorise/base';\n\nexport const convertToMap = <T extends Record<string, any>>(\n data: T[],\n mapKey: string,\n) => {\n const map = new Map();\n\n for (const i in data) {\n map.set(data[i][mapKey], data[i]);\n }\n\n return map;\n};\n\nexport const getMutualStateKey = (\n byEntity: Entity,\n byEntityId: string | null,\n entity: Entity,\n entityId?: string,\n chainEntityQuery?: string,\n) => {\n return `${byEntity}/${byEntityId}/${entity}${entityId ? `/${entityId}` : ''}${chainEntityQuery ? `?${chainEntityQuery}` : ''}`;\n};\n\nexport const getTagStateKey = (\n entityType: Entity,\n tagName: string,\n params: Record<string, string> = {},\n) => {\n const { lastKey, ...stateParams } = params;\n\n const paramsKey = Object.keys(stateParams)\n .map((key) => `${key}:${stateParams[key]}`)\n .join('/');\n\n return `${entityType}/${tagName}/${paramsKey}`;\n};\n\nexport const getUniqueFieldStateKey = (\n fieldName: string,\n fieldValue: string,\n) => {\n return `${fieldName}/${fieldValue}`;\n};\n\nexport const getEntityRequestKey = (\n mode: 'create' | 'upsert' | 'edit' | 'delete' | 'get' | 'list' | 'search',\n entityType: Entity,\n entityId?: string,\n) => {\n return `entity/${entityType}/${mode}${entityId ? `/${entityId}` : ''}`;\n};\n\nexport const getMutualRequestKey = (\n mode: 'create' | 'update' | 'delete' | 'get' | 'list',\n byEntityType: Entity,\n entityType: Entity,\n byEntityId: string | null,\n entityId?: string,\n chainEntityQuery?: string,\n) => {\n return `mutual/${getMutualStateKey(byEntityType, byEntityId, entityType, entityId, chainEntityQuery)}/${mode}`;\n};\n\nexport const getTagRequestKey = (\n mode: 'list',\n entityType: Entity,\n tagName: string,\n params: Record<string, string> = {},\n) => {\n return `tag/${getTagStateKey(entityType, tagName, params)}/${mode}`;\n};\n\nexport const getUniqueFieldRequestKey = (\n entityType: Entity,\n fieldName: string,\n value: string,\n) => {\n return `entity/${entityType}/unique/${getUniqueFieldStateKey(fieldName, value)}`;\n};\n","import request, {\n type AxiosError,\n type AxiosRequestConfig,\n type AxiosResponse,\n} from 'axios';\nimport type { AppActions } from '../actions/app.action';\nimport type { AuthActions } from '../actions/auth.action';\nimport type { MonoriseStore } from '../store/monorise.store';\nimport type { ApplicationRequestError } from '../types/api.type';\n\ntype IntercepterAxiosRequestConfig<D> = AxiosRequestConfig<D> & {\n requestKey: string;\n isInterruptive?: boolean;\n feedback?: {\n loading?: string | boolean;\n success?: ((data: any) => string) | string | boolean;\n failure?: string | boolean;\n };\n};\n\nconst initAxiosInterceptor = (store: MonoriseStore, appActions: AppActions) => {\n const { startLoading } = appActions;\n\n const axiosInstance = request.create();\n\n function makeRequest<T = any, R = AxiosResponse<T, any>, D = any>(\n url: string,\n config: AxiosRequestConfig<D>,\n data?: D,\n ): Promise<R> {\n const { requestKey, isInterruptive = false, feedback } = config;\n const { ongoingRequests } = store.getState().app;\n\n if (ongoingRequests.has(requestKey)) {\n return ongoingRequests.get(requestKey) as Promise<R>;\n }\n\n const promise = axiosInstance.request<T, R, D>({\n ...config,\n url,\n data,\n headers: {\n ...(config.headers || {}),\n 'Mr-Interruptive': String(isInterruptive),\n },\n });\n startLoading({\n requestKey,\n isInterruptive,\n message: feedback?.loading,\n request: promise,\n });\n\n return promise;\n }\n\n const axios = {\n ...axiosInstance,\n post: <T = any, R = AxiosResponse<T, any>, D = any>(\n url: string,\n data: D,\n config: IntercepterAxiosRequestConfig<D>,\n ): Promise<R> => makeRequest(url, { ...config, method: 'POST' }, data),\n put: <T = any, R = AxiosResponse<T, any>, D = any>(\n url: string,\n data: D,\n config: IntercepterAxiosRequestConfig<D>,\n ): Promise<R> => makeRequest(url, { ...config, method: 'PUT' }, data),\n patch: <T = any, R = AxiosResponse<T, any>, D = any>(\n url: string,\n data: D,\n config: IntercepterAxiosRequestConfig<D>,\n ): Promise<R> => makeRequest(url, { ...config, method: 'PATCH' }, data),\n delete: <T = any, R = AxiosResponse<T, any>, D = any>(\n url: string,\n config: IntercepterAxiosRequestConfig<D>,\n ): Promise<R> => makeRequest(url, { ...config, method: 'DELETE' }),\n get: <T = any, R = AxiosResponse<T, any>, D = any>(\n url: string,\n config: IntercepterAxiosRequestConfig<D>,\n ): Promise<R> => makeRequest(url, { ...config, method: 'GET' }),\n };\n\n return axios;\n};\n\ntype ConfigOptions = {\n onApiSuccess?: <T>(\n response: AxiosResponse<T>,\n feedbackSuccess:\n | ((data: AxiosResponse<T>['data']) => React.ReactNode)\n | string\n | boolean,\n ) => void;\n};\n\nconst injectAxiosInterceptor = (\n appActions: AppActions,\n authActions: AuthActions,\n axios: ReturnType<typeof initAxiosInterceptor>,\n opts?: ConfigOptions,\n) => {\n let options: ConfigOptions = opts || {};\n const { endLoading, setError, clearError } = appActions;\n const { setIsUnauthorized } = authActions;\n\n const unknownError: ApplicationRequestError = {\n status: 500,\n code: 'UNKNOWN_EXCEPTION',\n message: \"Ops, something doesn't seems right\",\n };\n\n axios.interceptors.response.use(\n (response) => {\n const { requestKey, isInterruptive, feedback } = response.config;\n endLoading({ requestKey, isInterruptive });\n clearError(requestKey);\n\n if (feedback?.success) {\n options.onApiSuccess?.(response, feedback.success);\n }\n // switch (typeof feedback.success) {\n // case 'function':\n // toast(feedback.success(response.data));\n // break;\n // case 'string':\n // toast(\n // <Fragment>\n // <IconCircleCheckFilled color='rgb(34 197 94)' />\n // {feedback.success}\n // </Fragment>,\n // );\n // break;\n // case 'boolean':\n // toast('Request success');\n // break;\n // }\n\n return Promise.resolve(response);\n },\n (error: AxiosError<string>) => {\n const { requestKey, isInterruptive } = error.config as AxiosRequestConfig;\n endLoading({ requestKey, isInterruptive });\n\n const appError = error.response?.data\n ? {\n code: error.response?.statusText,\n status: error.response?.status,\n message: error.response?.data,\n }\n : unknownError;\n setError({ requestKey, error: appError });\n if (error.response?.status === 401) {\n setIsUnauthorized(true);\n }\n return Promise.reject(error);\n },\n );\n\n const setOptions = (opts: ConfigOptions) => {\n options = {\n ...options,\n ...opts,\n };\n };\n\n return { setOptions };\n};\n\nexport { initAxiosInterceptor, injectAxiosInterceptor };\n","import type { Entity } from '@monorise/base';\nimport type { AxiosInterceptor } from '../types/api.type';\n\ntype LoginPayload = {\n email: string;\n};\n\ntype Options = {\n apiBaseUrl?: string;\n};\n\nconst initAuthService = (axios: AxiosInterceptor) => {\n let options: Options = {};\n const { apiBaseUrl = '/api/auth' } = options;\n\n const requestLoginMagicLink = (entityType: Entity, payload: LoginPayload) => {\n return axios.post(\n `${apiBaseUrl}/${entityType}`,\n {\n body: { ...payload },\n },\n {\n requestKey: `auth/${entityType}/request-login`,\n isInterruptive: true,\n feedback: {\n loading: 'Requesting login link',\n },\n },\n );\n };\n\n const getSessionProfile = <T extends Record<string, unknown>>() =>\n axios.get<\n T & {\n displayName: string;\n email: string;\n accountId: string;\n }\n >('/session', {\n requestKey: 'auth/session',\n });\n\n const logout = () =>\n axios.get('/logout', {\n requestKey: 'auth/logout',\n });\n\n const setOptions = (opts: Options) => {\n options = {\n ...options,\n ...opts,\n };\n };\n\n return {\n requestLoginMagicLink,\n getSessionProfile,\n logout,\n setOptions,\n };\n};\n\nexport default initAuthService;\n\nexport type AuthService = ReturnType<typeof initAuthService>;\n","import type { CreatedEntity, DraftEntity, Entity } from '@monorise/base';\nimport type { AxiosRequestConfig } from 'axios';\nimport {\n getEntityRequestKey,\n getMutualRequestKey,\n getMutualStateKey,\n getTagRequestKey,\n getUniqueFieldRequestKey,\n getUniqueFieldStateKey,\n} from '../lib/utils';\nimport type { MonoriseStore } from '../store/monorise.store';\nimport type {\n ApplicationRequestError,\n AxiosInterceptor,\n} from '../types/api.type';\nimport type { Mutual, MutualData } from '../types/mutual.type';\n\nconst ENTITY_API_BASE_URL = '/api/core/entity';\nconst MUTUAL_API_BASE_URL = '/api/core/mutual';\nconst TAG_API_BASE_URL = '/api/core/tag';\n\ntype ListEntitiesPayload = {\n limit?: number;\n lastKey?: string;\n start?: string;\n end?: string;\n};\n\nexport type ListEntitiesByTagParams = {\n group?: string;\n query?: string;\n start?: string;\n end?: string;\n limit?: number;\n lastKey?: string;\n};\n\ntype ConfigOptions = {\n entityApiBaseUrl?: string;\n mutualApiBaseUrl?: string;\n tagApiBaseUrl?: string;\n};\n\nexport type CommonOptions = Partial<AxiosRequestConfig> & {\n customUrl?: string;\n isInterruptive?: boolean;\n feedback?: {\n success?: string;\n failure?: string;\n loading?: string;\n };\n stateKey?: string;\n forceFetch?: boolean;\n noData?: boolean;\n requestKey?: string;\n onError?: (error: ApplicationRequestError | Error) => void;\n limit?: number;\n};\n\nconst initCoreService = (\n monoriseStore: MonoriseStore,\n axios: AxiosInterceptor,\n opts?: ConfigOptions,\n) => {\n let options: ConfigOptions = opts || {};\n\n const listEntities = <T extends Entity>(\n entityType: T,\n payload?: ListEntitiesPayload,\n opts: CommonOptions = {},\n ) => {\n const { entityApiBaseUrl = ENTITY_API_BASE_URL } = options;\n return axios.get<{\n data: CreatedEntity<T>[];\n lastKey?: string;\n totalCount: number;\n }>(opts.customUrl || `${entityApiBaseUrl}/${entityType}`, {\n requestKey: getEntityRequestKey('list', entityType),\n params: payload ?? undefined,\n isInterruptive: opts.isInterruptive,\n feedback: opts.feedback,\n });\n };\n\n const searchEntities = <T extends Entity>(\n entityType: T,\n query: string,\n opts: CommonOptions = {},\n ) => {\n const { entityApiBaseUrl = ENTITY_API_BASE_URL } = options;\n return axios.get<{ data: CreatedEntity<T>[] }>(\n opts.customUrl || `${entityApiBaseUrl}/${entityType}`,\n {\n requestKey: getEntityRequestKey('search', entityType),\n params: { query },\n isInterruptive: opts.isInterruptive,\n feedback: opts.feedback,\n },\n );\n };\n\n const listEntitiesByTag = <T extends Entity>(\n entityType: T,\n tagName: string,\n opts: CommonOptions & { params?: ListEntitiesByTagParams } = {},\n ) => {\n const { tagApiBaseUrl = TAG_API_BASE_URL } = options;\n return axios.get<{ entities: CreatedEntity<T>[]; lastKey: string }>(\n opts.customUrl || `${tagApiBaseUrl}/${entityType}/${tagName}`,\n {\n requestKey:\n opts.requestKey ||\n getTagRequestKey('list', entityType, tagName, opts.params),\n params: opts.params,\n isInterruptive: opts.isInterruptive,\n feedback: opts.feedback,\n },\n );\n };\n\n const getEntity = <T extends Entity>(\n entityType: T,\n id: string,\n opts: CommonOptions = {},\n ) => {\n const { entityApiBaseUrl = ENTITY_API_BASE_URL } = options;\n return axios.get<CreatedEntity<T>>(\n opts.customUrl || `${entityApiBaseUrl}/${entityType}/${id}`,\n {\n requestKey: getEntityRequestKey('get', entityType, id),\n isInterruptive: opts.isInterruptive,\n feedback: {\n loading: `Retrieving ${entityType}`,\n ...(opts.feedback || {}),\n },\n },\n );\n };\n\n const getEntityByUniqueField = <T extends Entity>(\n entityType: T,\n fieldName: string,\n value: string,\n opts: CommonOptions = {},\n ) => {\n const { entityApiBaseUrl = ENTITY_API_BASE_URL } = options;\n return axios.get<CreatedEntity<T>>(\n opts.customUrl ||\n `${entityApiBaseUrl}/${entityType}/unique/${getUniqueFieldStateKey(fieldName, value)}`,\n {\n requestKey: getUniqueFieldRequestKey(entityType, fieldName, value),\n isInterruptive: opts.isInterruptive,\n feedback: {\n loading: `Retrieving ${entityType}`,\n ...(opts.feedback || {}),\n },\n },\n );\n };\n\n const createEntity = <T extends Entity>(\n entityType: T,\n values: DraftEntity<T>,\n opts: CommonOptions = {},\n ) => {\n const { entityApiBaseUrl = ENTITY_API_BASE_URL } = options;\n const entityConfig = monoriseStore.getState().config;\n return axios.post<CreatedEntity<T>>(\n opts.customUrl || `${entityApiBaseUrl}/${entityType}`,\n values,\n {\n requestKey:\n opts.requestKey || getEntityRequestKey('create', entityType),\n isInterruptive: opts.isInterruptive ?? true,\n feedback: {\n loading: `Creating ${entityConfig[entityType].displayName}`,\n success: `${entityConfig[entityType].displayName} created`,\n ...(opts.feedback || {}),\n },\n },\n );\n };\n\n const upsertEntity = <T extends Entity>(\n entityType: T,\n id: string,\n values: DraftEntity<T>,\n opts: CommonOptions = {},\n ) => {\n const { entityApiBaseUrl = ENTITY_API_BASE_URL } = options;\n const entityConfig = monoriseStore.getState().config;\n return axios.put<CreatedEntity<T>>(\n opts.customUrl || `${entityApiBaseUrl}/${entityType}/${id}`,\n values,\n {\n requestKey: getEntityRequestKey('upsert', entityType, id),\n isInterruptive: opts.isInterruptive ?? true,\n feedback: {\n loading: `Updating ${entityConfig[entityType].displayName}`,\n success: `${entityConfig[entityType].displayName} updated`,\n ...(opts.feedback || {}),\n },\n },\n );\n };\n\n const editEntity = <T extends Entity>(\n entityType: T,\n id: string,\n values: Partial<DraftEntity<T>>,\n opts: CommonOptions = {},\n ) => {\n const { entityApiBaseUrl = ENTITY_API_BASE_URL } = options;\n const entityConfig = monoriseStore.getState().config;\n return axios.patch<CreatedEntity<T>>(\n opts.customUrl || `${entityApiBaseUrl}/${entityType}/${id}`,\n values,\n {\n requestKey: getEntityRequestKey('edit', entityType, id),\n isInterruptive: opts.isInterruptive ?? true,\n feedback: {\n loading: `Updating ${entityConfig[entityType].displayName}`,\n success: `${entityConfig[entityType].displayName} updated`,\n ...(opts.feedback || {}),\n },\n },\n );\n };\n\n const deleteEntity = <T extends Entity>(\n entityType: T,\n id: string,\n opts: CommonOptions = {},\n ) => {\n const { entityApiBaseUrl = ENTITY_API_BASE_URL } = options;\n const entityConfig = monoriseStore.getState().config;\n return axios.delete(\n opts.customUrl || `${entityApiBaseUrl}/${entityType}/${id}`,\n {\n requestKey: getEntityRequestKey('delete', entityType, id),\n isInterruptive: opts.isInterruptive ?? true,\n feedback: {\n loading: `Deleting ${entityConfig[entityType].displayName}`,\n success: `${entityConfig[entityType].displayName} deleted`,\n ...(opts.feedback || {}),\n },\n },\n );\n };\n\n const listEntitiesByEntity = <B extends Entity, T extends Entity>(\n byEntityType: B,\n entityType: T,\n byEntityId: string,\n opts: CommonOptions = {},\n chainEntityQuery?: string,\n ) => {\n const { mutualApiBaseUrl = MUTUAL_API_BASE_URL } = options;\n return axios.get<{ entities: Mutual<B, T>[]; lastKey: string }>(\n opts.customUrl ||\n `${mutualApiBaseUrl}/${byEntityType}/${byEntityId}/${entityType}`,\n {\n requestKey: getMutualRequestKey(\n 'list',\n byEntityType,\n entityType,\n byEntityId,\n undefined,\n chainEntityQuery,\n ),\n isInterruptive: opts.isInterruptive,\n feedback: opts.feedback,\n params: {\n chainEntityQuery,\n limit: opts.limit,\n ...opts.params,\n ...(opts.noData && { projection: 'no-data' }),\n },\n },\n );\n };\n\n const getMutual = <B extends Entity, T extends Entity>(\n byEntityType: B,\n entityType: T,\n byEntityId: string,\n entityId: string,\n opts: CommonOptions = {},\n ) => {\n const { mutualApiBaseUrl = MUTUAL_API_BASE_URL } = options;\n return axios.get<Mutual<B, T>>(\n opts.customUrl ||\n `${mutualApiBaseUrl}/${getMutualStateKey(byEntityType, byEntityId, entityType, entityId)}`,\n {\n requestKey: getMutualRequestKey(\n 'get',\n byEntityType,\n entityType,\n byEntityId,\n entityId,\n ),\n isInterruptive: opts.isInterruptive ?? false,\n feedback: opts.feedback,\n },\n );\n };\n\n const createMutual = <B extends Entity, T extends Entity>(\n byEntityType: B,\n entityType: T,\n byEntityId: string,\n entityId: string,\n payload: MutualData<B, T> | Record<string, unknown>,\n opts: CommonOptions = {},\n ) => {\n const { mutualApiBaseUrl = MUTUAL_API_BASE_URL } = options;\n return axios.post<Mutual<B, T>>(\n opts.customUrl ||\n `${mutualApiBaseUrl}/${getMutualStateKey(byEntityType, byEntityId, entityType, entityId)}`,\n payload,\n {\n requestKey: getMutualRequestKey(\n 'create',\n byEntityType,\n entityType,\n byEntityId,\n ),\n isInterruptive: opts.isInterruptive ?? true,\n feedback: {\n loading: 'Creating linkage',\n success: 'Linkage created',\n ...(opts.feedback || {}),\n },\n },\n );\n };\n\n const editMutual = <B extends Entity, T extends Entity>(\n byEntityType: B,\n entityType: T,\n byEntityId: string,\n entityId: string,\n payload: MutualData<B, T> | Record<string, unknown>,\n opts: CommonOptions = {},\n ) => {\n const { mutualApiBaseUrl = MUTUAL_API_BASE_URL } = options;\n return axios.patch<Mutual<B, T>>(\n opts.customUrl ||\n `${mutualApiBaseUrl}/${getMutualStateKey(byEntityType, byEntityId, entityType, entityId)}`,\n payload,\n {\n requestKey: getMutualRequestKey(\n 'update',\n byEntityType,\n entityType,\n byEntityId,\n entityId,\n ),\n isInterruptive: opts.isInterruptive ?? true,\n feedback: {\n loading: 'Updating linkage',\n success: 'Linkage updated',\n ...(opts.feedback || {}),\n },\n },\n );\n };\n\n const deleteMutual = <B extends Entity, T extends Entity>(\n byEntityType: B,\n entityType: T,\n byEntityId: string,\n entityId: string,\n opts: CommonOptions = {},\n ) => {\n const { mutualApiBaseUrl = MUTUAL_API_BASE_URL } = options;\n return axios.delete(\n opts.customUrl ||\n `${mutualApiBaseUrl}/${getMutualStateKey(byEntityType, byEntityId, entityType, entityId)}`,\n {\n requestKey: getMutualRequestKey(\n 'delete',\n byEntityType,\n entityType,\n byEntityId,\n entityId,\n ),\n isInterruptive: opts.isInterruptive ?? true,\n feedback: {\n loading: 'Removing linkage',\n success: 'Linkage removed',\n ...(opts.feedback || {}),\n },\n },\n );\n };\n\n const makeEntityService = <T extends Entity>(entityType: T) => ({\n listEntities: (payload: ListEntitiesPayload, opts: CommonOptions = {}) =>\n listEntities(entityType, payload, opts),\n searchEntities: (query: string, opts: CommonOptions = {}) =>\n searchEntities(entityType, query, opts),\n listEntitiesByTag: (tagName: string, opts: CommonOptions = {}) =>\n listEntitiesByTag(entityType, tagName, opts),\n getEntity: (id: string, opts: CommonOptions = {}) =>\n getEntity(entityType, id, opts),\n getEntityByUniqueField: (\n fieldName: string,\n value: string,\n opts: CommonOptions = {},\n ) => getEntityByUniqueField(entityType, fieldName, value, opts),\n createEntity: (values: DraftEntity<T>, opts: CommonOptions = {}) =>\n createEntity(entityType, values, opts),\n upsertEntity: (\n id: string,\n values: DraftEntity<T>,\n opts: CommonOptions = {},\n ) => upsertEntity(entityType, id, values, opts),\n editEntity: (\n id: string,\n values: Partial<DraftEntity<T>>,\n opts: CommonOptions = {},\n ) => editEntity(entityType, id, values, opts),\n updateEntity: (\n id: string,\n values: DraftEntity<T>,\n opts: CommonOptions = {},\n ) => editEntity(entityType, id, values, opts),\n deleteEntity: (id: string, opts: CommonOptions = {}) =>\n deleteEntity(entityType, id, opts),\n });\n\n const makeMutualService = <B extends Entity, T extends Entity>(\n byEntityType: B,\n entityType: T,\n ) => ({\n listEntitiesByEntity: (\n byEntityId: string,\n opts: CommonOptions = {},\n chainEntityQuery?: string,\n ) =>\n listEntitiesByEntity(\n byEntityType,\n entityType,\n byEntityId,\n opts,\n chainEntityQuery,\n ),\n getMutual: (\n byEntityId: string,\n entityId: string,\n opts: CommonOptions = {},\n ) => getMutual(byEntityType, entityType, byEntityId, entityId, opts),\n createMutual: (\n byEntityId: string,\n entityId: string,\n payload: MutualData<B, T> | Record<string, unknown>,\n opts = {},\n ) =>\n createMutual(\n byEntityType,\n entityType,\n byEntityId,\n entityId,\n payload,\n opts,\n ),\n editMutual: (\n byEntityId: string,\n entityId: string,\n payload: MutualData<B, T> | Record<string, unknown>,\n opts = {},\n ) =>\n editMutual(byEntityType, entityType, byEntityId, entityId, payload, opts),\n deleteMutual: (\n byEntityId: string,\n entityId: string,\n opts: CommonOptions = {},\n ) => deleteMutual(byEntityType, entityType, byEntityId, entityId, opts),\n });\n\n const setOptions = (opts: ConfigOptions) => {\n options = {\n ...options,\n ...opts,\n };\n };\n\n return {\n makeEntityService,\n makeMutualService,\n setOptions,\n };\n};\n\nexport default initCoreService;\n\nexport type CoreService = ReturnType<typeof initCoreService>;\n","import type { AxiosInterceptor } from '../types/api.type';\n\ntype UploadFileProps = {\n file: File;\n scope: string;\n directory: string;\n name: string;\n disableLoading?: boolean;\n onProgress?: (progress: number) => void;\n};\n\ntype Options = {\n apiBaseUrl?: string;\n};\n\nconst initFilestoreService = (axios: AxiosInterceptor) => {\n let options: Options = {};\n const { apiBaseUrl = '/api/file' } = options;\n\n const uploadFile = async ({\n file,\n scope,\n directory,\n name,\n disableLoading,\n onProgress,\n }: UploadFileProps) => {\n const { data } = await axios.get(`${apiBaseUrl}/upload`, {\n requestKey: `filestore/presign/file/${name}`,\n isInterruptive: !disableLoading,\n feedback: {\n loading: 'Preparing upload',\n },\n params: {\n scope,\n directory,\n filename: name,\n },\n });\n\n return axios.put(data.url, file, {\n requestKey: `filestore/upload/${name}`,\n isInterruptive: !disableLoading,\n feedback: {\n loading: 'Uploading file',\n },\n headers: {\n 'Content-Type': file.type,\n 'Content-Disposition': 'inline',\n },\n onUploadProgress: (progressEvent) => {\n if (onProgress && progressEvent.total) {\n const progress = Math.round(\n (progressEvent.loaded / progressEvent.total) * 100,\n );\n onProgress(progress);\n }\n },\n });\n };\n\n const deleteFiles = async (keys: string[]) => {\n console.log('Deleting files', keys);\n const { data } = await axios.post(\n `${apiBaseUrl}/delete`,\n {\n keys,\n },\n {\n requestKey: 'filestore/delete',\n },\n );\n\n return data;\n };\n\n const uploadVideo = async ({\n file,\n scope,\n directory,\n name,\n }: UploadFileProps) => {\n const { data: presign } = await axios.get(`${apiBaseUrl}/upload`, {\n requestKey: `filestore/presign/video/${name}`,\n isInterruptive: true,\n feedback: {\n loading: 'Preparing upload',\n },\n params: {\n scope,\n directory,\n filename: name,\n },\n });\n\n await axios.put(presign.url, file, {\n requestKey: `filestore/upload/video/${name}`,\n isInterruptive: true,\n feedback: {\n loading: 'Uploading video',\n },\n headers: {\n 'Content-Type': file.type,\n },\n });\n\n const { data } = await axios.post(\n `${apiBaseUrl}/video/convert`,\n {\n scope,\n directory,\n filename: name,\n },\n {\n requestKey: 'filestore/convert/video',\n isInterruptive: true,\n feedback: {\n loading: 'Triggering video conversion',\n },\n },\n );\n\n return data;\n };\n\n const uploadAudio = async ({\n file,\n scope,\n directory,\n name,\n }: UploadFileProps) => {\n const { data: presign } = await axios.get(`${apiBaseUrl}/upload`, {\n requestKey: `filestore/presign/audio/${name}`,\n isInterruptive: true,\n feedback: {\n loading: 'Preparing upload',\n },\n params: {\n scope,\n directory,\n filename: name,\n },\n });\n\n await axios.put(presign.url, file, {\n requestKey: `filestore/upload/audio/${name}`,\n isInterruptive: true,\n feedback: {\n loading: 'Uploading audio',\n },\n headers: {\n 'Content-Type': file.type,\n },\n });\n\n const { data } = await axios.post(\n `${apiBaseUrl}/audio/convert`,\n {\n scope,\n directory,\n filename: name,\n },\n {\n requestKey: 'filestore/convert/audio',\n isInterruptive: true,\n feedback: {\n loading: 'Triggering audio conversion',\n },\n },\n );\n\n return data;\n };\n\n const getJobStatus = async (id: string) => {\n const { data } = await axios.get(`${apiBaseUrl}/job/${id}`, {\n requestKey: `filestore/get-job/${id}`,\n });\n\n return data;\n };\n\n const setOptions = (opts: Options) => {\n options = {\n ...options,\n ...opts,\n };\n };\n\n return {\n uploadFile,\n deleteFiles,\n uploadVideo,\n uploadAudio,\n getJobStatus,\n setOptions,\n };\n};\n\nexport default initFilestoreService;\n","import type {\n CreatedEntity,\n Entity,\n MonoriseEntityConfig,\n} from '@monorise/base';\nimport { enableMapSet } from 'immer';\nimport type React from 'react';\nimport { create } from 'zustand';\nimport { devtools } from 'zustand/middleware';\nimport type { ApplicationRequestError, ModalProps } from '../types/api.type';\nimport type { CommonStore } from '../types/monorise.type';\nimport type { Mutual } from '../types/mutual.type';\n\nenableMapSet();\n\nconst configureDevtools = (storeName: string) => ({\n name: `${storeName} Store`,\n anonymousActionType: `${storeName.toLowerCase()}/action`,\n enabled: !['prod', 'dev'].includes(process.env.NEXT_PUBLIC_ENVIRONMENT ?? ''),\n serialize: {\n options: {\n map: true,\n },\n },\n});\n\ntype Options = {\n modals?: Record<string, React.ComponentType<unknown>>;\n};\n\nconst initMonoriseStore = () => {\n let options: Options = {};\n const { modals = {} } = options;\n\n type AppModalProps = ModalProps<typeof modals>;\n\n const monoriseStore = create(\n devtools(\n (): {\n app: {\n ongoingRequests: Map<string, Promise<unknown>>;\n loadStack: Map<string, number>;\n intLoadStack: Map<string, number>;\n loadingMessage: string;\n errorStack: Map<string, ApplicationRequestError>;\n modal: {\n name: keyof AppModalProps | null;\n context?: AppModalProps[keyof AppModalProps];\n };\n };\n config: Record<Entity, MonoriseEntityConfig>;\n entity: Record<Entity, CommonStore<CreatedEntity<Entity>>>;\n mutual: Record<string, CommonStore<Mutual>>;\n tag: Record<string, CommonStore<CreatedEntity<Entity>>>;\n auth: {\n isUnauthorized: boolean;\n profile: {\n displayName: string;\n email: string;\n accountId: string;\n };\n isLoading: boolean;\n };\n } => ({\n app: {\n ongoingRequests: new Map(),\n loadStack: new Map(),\n intLoadStack: new Map(),\n loadingMessage: '',\n errorStack: new Map(),\n modal: {\n name: null,\n },\n },\n config: {},\n entity: {},\n mutual: {},\n tag: {},\n auth: {\n isUnauthorized: false,\n profile: {\n displayName: '',\n email: '',\n accountId: '',\n },\n isLoading: true,\n },\n }),\n configureDevtools('monorise'),\n ),\n );\n\n const setOptions = (opts: Options) => {\n options = {\n ...options,\n ...opts,\n };\n };\n\n return { setOptions, monoriseStore };\n};\n\nexport { initMonoriseStore };\n\nexport type MonoriseStore = Awaited<\n ReturnType<typeof initMonoriseStore>\n>['monoriseStore'];\n","import type { Entity, MonoriseEntityConfig } from '@monorise/base';\nimport type { AxiosResponse } from 'axios';\nimport { initAppActions } from './actions/app.action';\nimport { initAuthActions } from './actions/auth.action';\nimport { initConfigActions } from './actions/config.action';\nimport { initCoreActions } from './actions/core.action';\nimport { initAxiosInterceptor, injectAxiosInterceptor } from './lib/api';\nimport {\n getEntityRequestKey,\n getMutualRequestKey,\n getTagRequestKey,\n getUniqueFieldRequestKey,\n} from './lib/utils';\nimport initAuthService from './services/auth.service';\nimport initCoreService from './services/core.service';\nimport initFilestoreService from './services/filestore.service';\nimport { initMonoriseStore } from './store/monorise.store';\nimport {\n Mutual,\n MutualData,\n MutualDataMapping,\n MutualDataWithIndex,\n} from './types/mutual.type';\n\ntype Options<T extends Record<string, React.ComponentType<any>>> = {\n authBaseUrl?: string;\n filestoreBaseUrl?: string;\n entityBaseUrl?: string;\n mutualBaseUrl?: string;\n tagBaseUrl?: string;\n modals?: T;\n entityConfig: Record<Entity, MonoriseEntityConfig>;\n onApiSuccess?: <T>(\n response: AxiosResponse<T>,\n feedbackSuccess:\n | ((data: AxiosResponse<T>['data']) => React.ReactNode)\n | string\n | boolean,\n ) => void;\n};\n\nconst initMonorise = () => {\n const { monoriseStore: store, setOptions: setMonoriseOptions } =\n initMonoriseStore();\n const appActions = initAppActions(store);\n const configActions = initConfigActions(store);\n const axios = initAxiosInterceptor(store, appActions);\n\n const authService = initAuthService(axios);\n const filestoreService = initFilestoreService(axios);\n const coreService = initCoreService(store, axios);\n\n const authActions = initAuthActions(store, authService);\n const coreActions = initCoreActions(store, appActions, coreService);\n\n const axiosInterceptor = injectAxiosInterceptor(\n appActions,\n authActions,\n axios,\n );\n\n const config = <T extends Record<string, React.ComponentType<any>>>(\n opts: Options<T>,\n ) => {\n setMonoriseOptions({\n modals: opts.modals,\n });\n configActions.setConfig(opts.entityConfig);\n authService.setOptions({\n apiBaseUrl: opts.authBaseUrl,\n });\n filestoreService.setOptions({\n apiBaseUrl: opts.filestoreBaseUrl,\n });\n coreService.setOptions({\n entityApiBaseUrl: opts.entityBaseUrl,\n mutualApiBaseUrl: opts.mutualBaseUrl,\n tagApiBaseUrl: opts.tagBaseUrl,\n });\n axiosInterceptor.setOptions({\n onApiSuccess: opts.onApiSuccess,\n });\n };\n\n return {\n config,\n store,\n axios,\n authService,\n filestoreService,\n coreService,\n ...configActions,\n ...appActions,\n ...authActions,\n ...coreActions,\n };\n};\n\nconst Monorise = initMonorise();\n\nconst {\n store,\n axios,\n authService,\n filestoreService,\n coreService,\n setConfig,\n getConfig,\n useConfig,\n startLoading,\n endLoading,\n setError,\n getError,\n clearError,\n openModal,\n closeModal,\n useLoadStore,\n useInterruptiveLoadStore,\n useErrorStore,\n useModalStore,\n requestLogin,\n useProfile,\n getProfile,\n useIsUnauthorized,\n setIsUnauthorized,\n logout,\n listMoreEntities,\n createEntity,\n upsertEntity,\n editEntity,\n updateLocalEntity,\n deleteEntity,\n getMutual,\n createMutual,\n createLocalMutual,\n upsertLocalMutual,\n editMutual,\n deleteMutual,\n deleteLocalMutual,\n useEntity,\n useEntityByUniqueField,\n useEntities,\n useMutual,\n useMutuals,\n useTaggedEntities,\n useEntityState,\n getEntity,\n updateLocalTaggedEntity,\n deleteLocalTaggedEntity,\n} = Monorise;\n\nexport {\n store,\n axios,\n authService,\n filestoreService,\n coreService,\n setConfig,\n getConfig,\n useConfig,\n startLoading,\n endLoading,\n setError,\n getError,\n clearError,\n openModal,\n closeModal,\n useLoadStore,\n useInterruptiveLoadStore,\n useErrorStore,\n useModalStore,\n requestLogin,\n useProfile,\n getProfile,\n useIsUnauthorized,\n setIsUnauthorized,\n logout,\n listMoreEntities,\n createEntity,\n upsertEntity,\n editEntity,\n updateLocalEntity,\n deleteEntity,\n getMutual,\n createMutual,\n createLocalMutual,\n upsertLocalMutual,\n editMutual,\n deleteMutual,\n deleteLocalMutual,\n useEntity,\n useEntityByUniqueField,\n useEntities,\n useMutual,\n useMutuals,\n useTaggedEntities,\n useEntityState,\n getEntityRequestKey,\n getMutualRequestKey,\n getTagRequestKey,\n getUniqueFieldRequestKey,\n getEntity,\n updateLocalTaggedEntity,\n deleteLocalTaggedEntity,\n};\n\nexport default Monorise;\n\nexport { MutualDataWithIndex, MutualDataMapping, MutualData, Mutual };\n\nexport type {\n CreatedEntity,\n DraftEntity,\n Entity,\n EntitySchemaMap,\n} from '@monorise/base';\n"],"mappings":"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","names":["store","startLoading","request","endLoading","setError","getError","clearError","openModal","closeModal","useLoadStore","useInterruptiveLoadStore","useErrorStore","useModalStore","produce","store","authService","requestLogin","useProfile","getProfile","produce","useIsUnauthorized","setIsUnauthorized","logout","produce","store","setConfig","getConfig","useConfig","produce","useEffect","useState","byEntityId","byEntityId","coreService","getError","useLoadStore","useErrorStore","store","produce","error","listMoreEntities","state","getEntity","createEntity","_a","byEntityId","upsertEntity","editEntity","deleteEntity","getMutual","createMutual","createLocalMutual","updateLocalEntity","upsertLocalMutual","editMutual","deleteMutual","deleteLocalMutual","useEntity","useEffect","useEntityByUniqueField","useEntities","useState","useMutual","useMutuals","useTaggedEntities","useEntityState","updateLocalTaggedEntity","deleteLocalTaggedEntity","store","startLoading","axios","endLoading","setError","clearError","setIsUnauthorized","opts","axios","logout","axios","opts","getEntity","createEntity","upsertEntity","editEntity","deleteEntity","byEntityId","getMutual","createMutual","editMutual","deleteMutual","axios","store","axios","authService","filestoreService","coreService"]}
1
+ {"version":3,"sources":["../actions/app.action.ts","../actions/auth.action.ts","../actions/config.action.ts","../actions/core.action.ts","../lib/entity.ts","../lib/utils.ts","../lib/api.ts","../services/auth.service.ts","../services/core.service.ts","../services/filestore.service.ts","../store/monorise.store.ts","../index.ts"],"sourcesContent":["import { produce } from 'immer';\nimport { useEffect, useState } from 'react';\nimport type { ApplicationRequestError, ModalProps } from '../types/api.type';\nimport type { MonoriseStore } from '../store/monorise.store';\n\ntype StartLoadingPayload<T> = {\n requestKey: string;\n isInterruptive?: boolean;\n message?: string | boolean;\n request: Promise<T>;\n};\n\ntype EndLoadingPayload = {\n requestKey: string;\n isInterruptive?: boolean;\n};\n\ntype SetErrorPayload = {\n requestKey: string;\n error: ApplicationRequestError;\n};\n\ntype Options = {\n modals?: Record<string, React.ComponentType<unknown>>;\n};\n\nconst initAppActions = (store: MonoriseStore) => {\n let options: Options = {};\n\n const { modals = {} } = options;\n type AppModalProps = ModalProps<typeof modals>;\n\n const startLoading = <T>({\n requestKey,\n isInterruptive,\n message,\n request,\n }: StartLoadingPayload<T>) => {\n store.setState(\n produce((state) => {\n const stackType = isInterruptive ? 'intLoadStack' : 'loadStack';\n const requestKeyCount = state.app[stackType].get(requestKey);\n\n state.app.loadingMessage =\n typeof message === 'string' ? message : 'Loading';\n state.app.ongoingRequests.set(requestKey, request);\n state.app[stackType].set(\n requestKey,\n requestKeyCount ? requestKeyCount + 1 : 1,\n );\n }),\n undefined,\n `mr/start-loading/${requestKey}`,\n );\n };\n\n const endLoading = ({ requestKey, isInterruptive }: EndLoadingPayload) => {\n setTimeout(() => {\n store.setState(\n produce((state) => {\n const stackType = isInterruptive ? 'intLoadStack' : 'loadStack';\n const requestKeyCount = state.app[stackType].get(requestKey);\n\n if (state.app.ongoingRequests.has(requestKey)) {\n state.app.ongoingRequests.delete(requestKey);\n }\n\n if (typeof requestKeyCount === 'number' && requestKeyCount > 1) {\n state.app[stackType].set(requestKey, requestKeyCount - 1);\n } else {\n state.app[stackType].delete(requestKey);\n }\n }),\n undefined,\n `mr/end-loading/${requestKey}`,\n );\n }, 500);\n };\n\n const checkIsLoading = (requestKey?: string) => {\n const { intLoadStack, loadStack } = store.getState().app;\n if (!requestKey) {\n return intLoadStack.size > 0 || loadStack.size > 0;\n }\n\n const activeIntLoadingCount = intLoadStack.get(requestKey);\n const isIntLoading =\n typeof activeIntLoadingCount === 'number' && activeIntLoadingCount > 0;\n\n const activeLoadingCount = loadStack.get(requestKey);\n const isLoading =\n typeof activeLoadingCount === 'number' && activeLoadingCount > 0;\n\n return isIntLoading || isLoading;\n };\n\n const setError = ({ requestKey, error }: SetErrorPayload) =>\n store.setState(\n produce((state) => {\n state.app.errorStack.set(requestKey, error);\n }),\n undefined,\n `mr/set-error/${requestKey}`,\n );\n\n const getError = (requestKey: string) => {\n const { errorStack } = store.getState().app;\n return errorStack.get(requestKey);\n };\n\n const clearError = (requestKey: string) => {\n const { errorStack } = store.getState().app;\n\n if (errorStack.has(requestKey)) {\n store.setState(\n produce((state) => {\n state.app.errorStack.delete(requestKey);\n }),\n undefined,\n `mr/clear-error/${requestKey}`,\n );\n }\n };\n\n const openModal = (modal: {\n name: keyof AppModalProps;\n context?: AppModalProps[keyof AppModalProps];\n }) =>\n store.setState(\n produce((state) => {\n state.app.modal = modal;\n }),\n undefined,\n `mr/open-modal/${modal.name}`,\n );\n\n const closeModal = () =>\n store.setState(\n produce((state) => {\n state.app.modal = { name: null };\n }),\n undefined,\n 'mr/close-modal',\n );\n\n const useLoadStore = (requestKey?: string) => {\n const { loadStack, intLoadStack } = store((state) => ({\n loadStack: state.app.loadStack,\n intLoadStack: state.app.intLoadStack,\n }));\n const [isLoading, setIsLoading] = useState(false);\n\n useEffect(() => {\n if (loadStack && intLoadStack && requestKey) {\n setIsLoading(checkIsLoading(requestKey));\n }\n }, [loadStack, intLoadStack, requestKey]);\n\n return isLoading;\n };\n\n const useInterruptiveLoadStore = () => {\n const { intLoadStack, loadingMessage } = store((state) => ({\n intLoadStack: state.app.intLoadStack,\n loadingMessage: state.app.loadingMessage,\n }));\n\n return {\n isLoading: intLoadStack.size > 0,\n message: loadingMessage,\n };\n };\n\n const useErrorStore = (requestKey: string) => {\n const error = store((state) => state.app.errorStack.get(requestKey));\n\n useEffect(() => {\n if (error) {\n return () => {\n clearError(requestKey);\n };\n }\n }, [error, requestKey]);\n\n return error;\n };\n\n const useModalStore = () => {\n return store((state) => state.app.modal);\n };\n\n const setOptions = (opts: Options) => {\n options = {\n ...options,\n ...opts,\n };\n };\n\n return {\n startLoading,\n endLoading,\n setError,\n getError,\n clearError,\n openModal,\n closeModal,\n checkIsLoading,\n useLoadStore,\n useInterruptiveLoadStore,\n useErrorStore,\n useModalStore,\n setOptions,\n };\n};\n\nexport { initAppActions };\n\nexport type AppActions = ReturnType<typeof initAppActions>;\n","import type { Entity } from '@monorise/base';\nimport { produce } from 'immer';\nimport type { AuthService } from '../services/auth.service';\nimport type { MonoriseStore } from '../store/monorise.store';\n\nconst initAuthActions = (store: MonoriseStore, authService: AuthService) => {\n const requestLogin = async (\n entityType: Entity,\n payload: { email: string },\n ) => {\n const { data } = await authService.requestLoginMagicLink(\n entityType,\n payload,\n );\n\n return data;\n };\n\n const useProfile = <T extends Record<string, unknown>>(): T & {\n displayName: string;\n email: string;\n accountId: string;\n impersonatorId?: string;\n } => {\n const profile = store((state) => state.auth.profile);\n\n return profile as T & typeof profile;\n };\n\n const getProfile = async () => {\n try {\n const {\n data: { displayName, email, accountId, ...rest },\n } = await authService.getSessionProfile();\n\n store.setState(\n produce((state) => {\n state.auth.profile = { displayName, email, accountId, ...rest };\n state.auth.isUnauthorized = false;\n state.auth.isLoading = false;\n }),\n undefined,\n 'mr/auth/get-profile',\n );\n } catch {\n store.setState(\n produce((state) => {\n state.auth.profile = {};\n state.auth.isUnauthorized = true;\n state.auth.isLoading = false;\n }),\n undefined,\n 'mr/auth/get-profile',\n );\n }\n };\n\n const useIsUnauthorized = () => {\n const { isUnauthorized, profile, isLoading } = store((state) => state.auth);\n\n return { isUnauthorized: isUnauthorized && !profile.accountId, isLoading };\n };\n\n const setIsUnauthorized = (isUnauthorized: boolean) =>\n store.setState(\n produce((state) => {\n state.auth.isUnauthorized = isUnauthorized;\n }),\n );\n\n const logout = () => {\n authService.logout();\n store.setState(\n produce((state) => {\n state.auth.isUnauthorized = true;\n state.auth.profile = {};\n }),\n );\n };\n\n return {\n requestLogin,\n useProfile,\n getProfile,\n useIsUnauthorized,\n setIsUnauthorized,\n logout,\n };\n};\n\nexport { initAuthActions };\n\nexport type AuthActions = ReturnType<typeof initAuthActions>;\n","import type {\n CreatedEntity,\n Entity,\n MonoriseEntityConfig,\n} from '@monorise/base';\nimport { produce } from 'immer';\nimport type { MonoriseStore } from '../store/monorise.store';\nimport type { CommonStore } from '../types/monorise.type';\n\nconst initConfigActions = (store: MonoriseStore) => {\n const setConfig = (config: Record<Entity, MonoriseEntityConfig>) => {\n const entityMaps = Object.keys(config).reduce(\n (acc, entity) => {\n acc[entity as any] = {\n dataMap: new Map<string, CreatedEntity<Entity>>(),\n isFirstFetched: false,\n lastKey: '',\n } as CommonStore<CreatedEntity<Entity>>;\n return acc;\n },\n {} as Record<Entity, CommonStore<CreatedEntity<Entity>>>,\n );\n\n store.setState(\n produce((state) => {\n state.config = config;\n state.entity = entityMaps;\n }),\n );\n };\n\n const getConfig = () => {\n return store.getState().config;\n };\n\n const useConfig = () => {\n const config = store((state) => state.config);\n\n return config;\n };\n\n return {\n setConfig,\n getConfig,\n useConfig,\n };\n};\n\nexport { initConfigActions };\n\nexport type ConfigActions = ReturnType<typeof initConfigActions>;\n","import type {\n CreatedEntity,\n DraftEntity,\n Entity,\n EntitySchemaMap,\n} from '@monorise/base';\nimport { produce } from 'immer';\nimport { useEffect, useState } from 'react';\nimport {\n byEntityId,\n constructLocal,\n constructMutual,\n flipMutual,\n} from '../lib/entity';\nimport {\n convertToMap,\n getEntityRequestKey,\n getMutualRequestKey,\n getMutualStateKey,\n getTagRequestKey,\n getTagStateKey,\n getUniqueFieldRequestKey,\n getUniqueFieldStateKey,\n} from '../lib/utils';\nimport type {\n CommonOptions,\n CoreService,\n ListEntitiesByTagParams,\n} from '../services/core.service';\nimport type { MonoriseStore } from '../store/monorise.store';\nimport type { ApplicationRequestError } from '../types/api.type';\nimport type { CommonStore } from '../types/monorise.type';\nimport type { Mutual, MutualData } from '../types/mutual.type';\nimport type { AppActions } from './app.action';\n\n// ===== Important tips ======\n// Should we use store.getState() or store()?\n// USE store.getState() WHEN using within an action such as getEntity, getProfile\n// USE store() WHEN using within a react hook so that it gets the benefit of reactivity, such as useProfile, useEntity\n\nconst defaultOnError = (error: ApplicationRequestError | Error) => {\n if (!(error instanceof Error) && error.status >= 500) {\n // we only want server error to be captured by error tracking service\n throw error;\n }\n};\n\nconst initCoreActions = (\n monoriseStore: MonoriseStore,\n appActions: AppActions,\n coreService: CoreService,\n) => {\n const { makeEntityService, makeMutualService } = coreService;\n const { checkIsLoading, getError, useLoadStore, useErrorStore } = appActions;\n\n const listEntities = async <T extends Entity>(\n entityType: T,\n params: {\n skRange?: { start: string; end: string };\n all?: boolean;\n } = {},\n opts: CommonOptions = {},\n ) => {\n const store = monoriseStore.getState();\n const entityState = store.entity[entityType] ?? {};\n const { isFirstFetched } = entityState;\n const entityService = makeEntityService(entityType);\n const { skRange } = params;\n const requestKey = getEntityRequestKey('list', entityType);\n const isLoading = checkIsLoading(requestKey);\n const error = getError(requestKey);\n const onError = opts.onError ?? defaultOnError;\n\n if (error) {\n onError(error);\n return;\n }\n\n if (\n !opts.forceFetch &&\n ((isFirstFetched && !params.skRange) || isLoading)\n ) {\n return;\n }\n\n try {\n const { data: result } = await entityService.listEntities(\n {\n ...(params?.all ? {} : { limit: 20 }),\n start: skRange?.start,\n end: skRange?.end,\n },\n opts,\n );\n const newEntityMap = convertToMap<CreatedEntity<T>>(\n result.data,\n 'entityId',\n );\n\n const mergedMap = new Map([\n ...newEntityMap,\n ...store.entity[entityType].dataMap,\n ]);\n\n monoriseStore.setState(\n produce((state) => {\n state.entity[entityType] = {\n dataMap: params.skRange ? newEntityMap : mergedMap,\n isFirstFetched: true,\n lastKey: result.lastKey,\n };\n }),\n undefined,\n `mr/entity/list/${entityType}`,\n );\n } catch (err) {\n const error: Error & { originalError?: unknown } =\n err instanceof Error ? err : new Error('Unknown error occurred');\n\n return { error };\n }\n };\n\n const listMoreEntities = async <T extends Entity>(\n entityType: T,\n opts: CommonOptions = {},\n ) => {\n const requestKey = getEntityRequestKey('list', entityType);\n const store = monoriseStore.getState();\n const entityState = store.entity[entityType];\n const { dataMap, lastKey } = entityState;\n const entityService = makeEntityService(entityType);\n const error = getError(requestKey);\n const onError = opts.onError ?? defaultOnError;\n\n if (!lastKey) {\n return;\n }\n\n if (error) {\n onError(error);\n return;\n }\n\n try {\n const { data: result } = await entityService.listEntities(\n {\n limit: 20,\n lastKey,\n },\n opts,\n );\n\n monoriseStore.setState(\n produce((state) => {\n state.entity[entityType].isFirstFetched = true;\n state.entity[entityType].lastKey = result.lastKey;\n for (const i in result.data) {\n state.entity[entityType].dataMap.set(\n result.data[i].entityId,\n result.data[i],\n );\n }\n }),\n undefined,\n `mr/entity/list-more/${entityType}`,\n );\n } catch (err) {\n const error: Error & { originalError?: unknown } =\n err instanceof Error ? err : new Error('Unknown error occurred');\n\n return { error };\n }\n };\n\n const searchEntities = async <T extends Entity>(\n entityType: T,\n query: string,\n opts: CommonOptions = {},\n ) => {\n const requestKey = getEntityRequestKey('search', entityType);\n const entityService = makeEntityService(entityType);\n const error = getError(requestKey);\n const onError = opts.onError ?? defaultOnError;\n\n if (error) {\n onError(error);\n return;\n }\n\n try {\n const { data: result } = await entityService.searchEntities(query, opts);\n\n monoriseStore.setState(\n produce((state) => {\n state.entity[entityType].searchResults = result.data;\n for (const i in result.data) {\n state.entity[entityType].dataMap.set(\n result.data[i].entityId,\n result.data[i],\n );\n }\n }),\n );\n } catch (err) {\n const error: Error & { originalError?: unknown } =\n err instanceof Error ? err : new Error('Unknown error occurred');\n\n return { error };\n }\n };\n\n const listEntitiesByTag = async <T extends Entity>(\n entityType: T,\n tagName: string,\n opts: CommonOptions & { params?: ListEntitiesByTagParams } = {},\n ) => {\n const tagKey = getTagStateKey(entityType, tagName, opts.params);\n\n const state = monoriseStore.getState();\n const tagState = state.tag[tagKey] || {};\n const { isFirstFetched, dataMap } = tagState;\n const entityService = makeEntityService(entityType);\n const { forceFetch } = opts;\n const requestKey = getTagRequestKey(\n 'list',\n entityType,\n tagName,\n opts.params,\n );\n const isLoading = checkIsLoading(requestKey);\n const error = getError(requestKey);\n const onError = opts.onError ?? defaultOnError;\n\n if (!forceFetch) {\n if (error) {\n onError(error);\n return { error };\n }\n\n if (isFirstFetched || isLoading) {\n return {\n data: {\n entities: Array.from(dataMap?.values() || []),\n lastKey: null,\n },\n };\n }\n }\n\n try {\n const { data } = await entityService.listEntitiesByTag(tagName, {\n ...opts,\n requestKey,\n });\n const { entities, lastKey } = data;\n\n monoriseStore.setState(\n produce((state) => {\n for (const entity of entities) {\n state.entity[entityType].dataMap.set(entity.entityId, entity);\n }\n }),\n );\n\n monoriseStore.setState(\n produce((state) => {\n // Initialize tag state if it doesn't exist\n if (!state.tag[tagKey]) {\n state.tag[tagKey] = {\n dataMap: new Map(),\n isFirstFetched: false,\n };\n }\n\n // Merge new entities into existing dataMap instead of replacing\n for (const entity of entities) {\n state.tag[tagKey].dataMap.set(entity.entityId, entity);\n }\n\n state.tag[tagKey].isFirstFetched = true;\n state.tag[tagKey].lastKey = lastKey;\n }),\n );\n\n return { data };\n } catch (err) {\n const error: Error & { originalError?: unknown } =\n err instanceof Error ? err : new Error('Unknown error occurred');\n\n return { error };\n }\n };\n\n const getEntity = async <T extends Entity>(\n entityType: T,\n id: string,\n opts: CommonOptions = {},\n ): Promise<{\n data?: CreatedEntity<T>;\n error?: ApplicationRequestError | (Error & { originalError?: unknown });\n }> => {\n const store = monoriseStore.getState();\n const entityState = store.entity[entityType];\n const { dataMap } = entityState;\n const entityService = makeEntityService(entityType);\n let entity = dataMap.get(id);\n const requestKey = getEntityRequestKey('get', entityType, id);\n const isLoading = checkIsLoading(requestKey);\n const error = getError(requestKey);\n const { forceFetch } = opts;\n const onError = opts.onError ?? defaultOnError;\n\n if (!forceFetch) {\n if (error) {\n // If there's an existing error, handle it and return the error.\n onError?.(error);\n return { error };\n }\n\n if (entity) {\n // If entity already exists and no force fetch, return it.\n return { data: entity };\n }\n\n if (isLoading) {\n // If already loading, return undefined data and error to indicate ongoing operation.\n return {};\n }\n }\n\n try {\n ({ data: entity } = await entityService.getEntity(id, opts));\n\n monoriseStore.setState(\n produce((state) => {\n state.entity[entityType].dataMap.set(entity?.entityId, entity);\n }),\n undefined,\n `mr/entity/get/${entityType}/${id}`,\n );\n\n return { data: entity };\n } catch (err) {\n const error: Error & { originalError?: unknown } =\n err instanceof Error ? err : new Error('Unknown error occurred');\n\n return { error };\n }\n };\n\n const getEntityByUniqueField = async <T extends Entity>(\n entityType: T,\n fieldName: string,\n value: string,\n opts: CommonOptions = {},\n ) => {\n const store = monoriseStore.getState();\n const entityState = store.entity[entityType];\n const { dataMap } = entityState;\n const entityService = makeEntityService(entityType);\n const stateKey = getUniqueFieldStateKey(fieldName, value);\n let entity = dataMap.get(stateKey);\n const requestKey = getUniqueFieldRequestKey(entityType, fieldName, value);\n const isLoading = checkIsLoading(requestKey);\n const error = getError(requestKey);\n const { forceFetch } = opts;\n const onError = opts.onError ?? defaultOnError;\n\n if (!forceFetch) {\n if (error) {\n onError?.(error);\n return { error };\n }\n\n if (entity) {\n return { data: entity };\n }\n\n if (isLoading) {\n return {};\n }\n }\n\n try {\n ({ data: entity } = await entityService.getEntityByUniqueField(\n fieldName,\n value,\n opts,\n ));\n\n monoriseStore.setState(\n produce((state) => {\n state.entity[entityType].dataMap.set(entity?.entityId, entity);\n state.entity[entityType].dataMap.set(`${stateKey}`, entity);\n }),\n undefined,\n `mr/entity/unique/${entityType}/${stateKey}`,\n );\n\n return { data: entity };\n } catch (err) {\n const error: Error & { originalError?: unknown } =\n err instanceof Error ? err : new Error('Unknown error occurred');\n\n return { error };\n }\n };\n\n const createEntity = async <T extends Entity>(\n entityType: T,\n entity: DraftEntity<T>,\n opts: CommonOptions = {},\n ) => {\n const entityService = makeEntityService(entityType);\n const onError = opts.onError ?? defaultOnError;\n\n try {\n const { data } = await entityService.createEntity(entity, opts);\n\n monoriseStore.setState(\n produce((state) => {\n state.entity[entityType].dataMap.set(data.entityId, data);\n\n // auto-populate tag store based on entity config\n const tagConfigs = state.config[entityType]?.tags;\n if (tagConfigs) {\n for (const tagConfig of tagConfigs) {\n const { name, processor } = tagConfig;\n const processorResults = processor(\n data as CreatedEntity<Entity>,\n );\n\n for (const tagKey of Object.keys(state.tag)) {\n const [tagEntityType, tagName, ...paramParts] =\n tagKey.split('/');\n\n if (\n (tagEntityType as unknown as Entity) !== entityType ||\n tagName !== name\n ) {\n continue;\n }\n\n if (!state.tag[tagKey]?.isFirstFetched) {\n continue;\n }\n\n // parse params from key\n const keyParams: Record<string, string> = {};\n for (const part of paramParts) {\n const colonIdx = part.indexOf(':');\n if (colonIdx > 0) {\n keyParams[part.substring(0, colonIdx)] =\n part.substring(colonIdx + 1);\n }\n }\n\n // skip query-filtered stores (can't match client-side)\n if (keyParams.query) {\n continue;\n }\n\n // check if any processor result matches this tag store's params\n const matches = processorResults.some((result) => {\n if (keyParams.group && result.group !== keyParams.group) {\n return false;\n }\n if (\n keyParams.start &&\n (!result.sortValue || result.sortValue < keyParams.start)\n ) {\n return false;\n }\n if (\n keyParams.end &&\n (!result.sortValue || result.sortValue > keyParams.end)\n ) {\n return false;\n }\n return true;\n });\n\n if (matches) {\n state.tag[tagKey].dataMap.set(data.entityId, data);\n }\n }\n }\n }\n\n // auto-populate mutual store based on entity config\n const mutualFields =\n state.config[entityType]?.mutual?.mutualFields;\n if (mutualFields) {\n for (const [field, fieldConfig] of Object.entries(mutualFields)) {\n const byEntityType = fieldConfig.entityType;\n const ids = (entity as Record<string, any>)[field];\n if (!Array.isArray(ids)) continue;\n\n for (const byEntityId of ids) {\n const mutualKey = getMutualStateKey(\n byEntityType,\n byEntityId,\n entityType,\n );\n if (\n state.mutual[mutualKey] &&\n state.mutual[mutualKey].isFirstFetched\n ) {\n state.mutual[mutualKey].dataMap.set(data.entityId, {\n entityId: data.entityId,\n entityType,\n byEntityId,\n byEntityType,\n mutualId: '',\n data: data.data,\n mutualData: {},\n createdAt: data.createdAt,\n updatedAt: data.updatedAt,\n mutualUpdatedAt: data.updatedAt,\n });\n }\n }\n }\n }\n }),\n undefined,\n `mr/entity/create/${entityType}`,\n );\n\n return { data };\n } catch (err) {\n const error: Error & { originalError?: unknown } =\n err instanceof Error ? err : new Error('Unknown error occurred');\n\n onError?.(error);\n\n return { error };\n }\n };\n\n const upsertEntity = async <T extends Entity>(\n entityType: T,\n id: string,\n entity: DraftEntity<T>,\n opts: CommonOptions = {},\n ) => {\n const entityService = makeEntityService(entityType);\n const onError = opts.onError ?? defaultOnError;\n\n try {\n const { data } = await entityService.upsertEntity(id, entity, opts);\n\n monoriseStore.setState(\n produce((state) => {\n state.entity[entityType].dataMap.set(data.entityId, data);\n }),\n undefined,\n `mr/entity/upsert/${entityType}/${id}`,\n );\n return { data };\n } catch (err) {\n const error: Error & { originalError?: unknown } =\n err instanceof Error ? err : new Error('Unknown error occurred');\n onError(error);\n return { error };\n }\n };\n\n const editEntity = async <T extends Entity>(\n entityType: T,\n id: string,\n entity: Partial<DraftEntity<T>>,\n opts: CommonOptions = {},\n ) => {\n const entityService = makeEntityService(entityType);\n const onError = opts.onError ?? defaultOnError;\n\n try {\n const { data } = await entityService.editEntity(id, entity, opts);\n\n monoriseStore.setState(\n produce((state) => {\n state.entity[entityType].dataMap.set(data.entityId, data);\n\n // update mutual's entity data\n for (const key of Object.keys(state.mutual)) {\n const [_byEntity, _byId, _entityType] = key.split('/');\n if ((_entityType as unknown as Entity) === entityType) {\n const mutual = state.mutual[key].dataMap.get(id);\n if (mutual) {\n state.mutual[key].dataMap = new Map(\n state.mutual[key].dataMap,\n ).set(id, { ...mutual, data: data.data });\n }\n }\n }\n\n // update flipped mutual side (entity is the \"by\" entity)\n for (const key of Object.keys(state.mutual)) {\n const [_byEntity, _byId] = key.split('/');\n if ((_byEntity as unknown as Entity) === entityType && _byId === id) {\n const newDataMap = new Map(state.mutual[key].dataMap);\n for (const [entryId, mutual] of newDataMap) {\n newDataMap.set(entryId, { ...mutual, data: data.data });\n }\n state.mutual[key].dataMap = newDataMap;\n }\n }\n\n // update tag store entries\n for (const tagKey of Object.keys(state.tag)) {\n const [tagEntityType] = tagKey.split('/');\n if ((tagEntityType as unknown as Entity) === entityType) {\n if (state.tag[tagKey]?.dataMap?.has(id)) {\n state.tag[tagKey].dataMap.set(id, data);\n }\n }\n }\n }),\n undefined,\n `mr/entity/edit/${entityType}/${id}`,\n );\n return { data };\n } catch (err) {\n const error: Error & { originalError?: unknown } =\n err instanceof Error ? err : new Error('Unknown error occurred');\n onError(error);\n return { error };\n }\n };\n\n const deleteEntity = async <T extends Entity>(\n entityType: T,\n id: string,\n opts: CommonOptions = {},\n ) => {\n const entityService = makeEntityService(entityType);\n const onError = opts.onError ?? defaultOnError;\n\n try {\n await entityService.deleteEntity(id, opts);\n deleteLocalMutualsByEntity(entityType, id);\n\n monoriseStore.setState(\n produce((state) => {\n state.entity[entityType].dataMap.delete(id);\n\n // delete mutual's entity data\n for (const key of Object.keys(state.mutual)) {\n const [_byEntity, _byId, _entityType] = key.split('/');\n if ((_entityType as unknown as Entity) === entityType) {\n state.mutual[key].dataMap.delete(id);\n }\n }\n\n // delete from tag store\n for (const tagKey of Object.keys(state.tag)) {\n const [tagEntityType] = tagKey.split('/');\n if ((tagEntityType as unknown as Entity) === entityType) {\n state.tag[tagKey]?.dataMap?.delete(id);\n }\n }\n }),\n undefined,\n `mr/entity/delete/${entityType}/${id}`,\n );\n return { data: { entityId: id } }; // Indicate success with the deleted ID\n } catch (err) {\n const error: Error & { originalError?: unknown } =\n err instanceof Error ? err : new Error('Unknown error occurred');\n onError(error);\n return { error };\n }\n };\n\n const listEntitiesByEntity = async <B extends Entity, T extends Entity>(\n byEntityType: B,\n entityType: T,\n id: string,\n opts: CommonOptions = {},\n chainEntityQuery?: string,\n ) => {\n const onError = opts.onError ?? defaultOnError;\n const selfKey =\n opts.stateKey ??\n getMutualStateKey(\n byEntityType,\n id,\n entityType,\n undefined,\n chainEntityQuery,\n );\n const mutualService = makeMutualService(byEntityType, entityType);\n const store = monoriseStore.getState();\n const mutualState = store.mutual[selfKey] || {};\n const { isFirstFetched } = mutualState;\n const requestKey = getMutualRequestKey(\n 'list',\n byEntityType,\n entityType,\n id,\n undefined,\n chainEntityQuery,\n );\n const isLoading = checkIsLoading(requestKey);\n const error = getError(requestKey);\n const { forceFetch } = opts;\n\n if (!forceFetch) {\n if (error) {\n onError(error);\n return { error };\n }\n\n if (isFirstFetched || isLoading) {\n return {\n data: {\n entities: Array.from(mutualState.dataMap?.values() || []),\n lastKey: mutualState.lastKey,\n },\n };\n }\n }\n\n try {\n const { data } = await mutualService.listEntitiesByEntity(\n id,\n opts,\n chainEntityQuery,\n );\n const { entities, lastKey } = data;\n const newEntityDataMap = new Map();\n\n for (const i in entities) {\n newEntityDataMap.set(entities[i].entityId, entities[i]);\n }\n\n monoriseStore.setState(\n produce((state) => {\n for (const [key, value] of newEntityDataMap) {\n state.entity[entityType]?.dataMap.set(key, value);\n }\n\n // prepare or extend the mutual entry\n const existing = state.mutual[selfKey];\n if (existing) {\n // extend the existing map\n const incoming = convertToMap(entities, 'entityId');\n for (const [k, v] of incoming) {\n existing.dataMap.set(k, v);\n }\n existing.isFirstFetched = true;\n existing.lastKey = lastKey;\n } else {\n // first time: create it\n state.mutual[selfKey] = {\n dataMap: convertToMap(entities, 'entityId'),\n isFirstFetched: true,\n lastKey,\n };\n }\n }),\n undefined,\n `mr/mutual/list/${selfKey}`,\n );\n\n return { data };\n } catch (err) {\n const error: Error & { originalError?: unknown } =\n err instanceof Error ? err : new Error('Unknown error occurred');\n\n return { error };\n }\n };\n\n // todo: list more mutuals by entity\n // const listMoremutualsByEntity = async (\n // entityType: Entity,\n // otherEntityType: Entity,\n // id: string,\n // ) =>\n\n const getMutual = async <B extends Entity, T extends Entity>(\n byEntityType: B,\n entityType: T,\n byEntityId: string | null,\n entityId: string,\n opts: CommonOptions & {\n // if failed to retrieve, would still set a default mutual data\n defaultMutualData?: Record<string, any>;\n } = {},\n ) => {\n const selfKey = getMutualStateKey(byEntityType, byEntityId, entityType);\n const mutualService = makeMutualService(byEntityType, entityType);\n const store = monoriseStore.getState();\n const mutualState = store.mutual[selfKey] || {};\n const requestKey = getMutualRequestKey(\n 'get',\n byEntityType,\n entityType,\n byEntityId,\n entityId,\n );\n const isLoading = checkIsLoading(requestKey);\n const error = getError(requestKey);\n const onError = opts.onError ?? defaultOnError;\n\n if (error) {\n onError?.(error);\n return { error };\n }\n\n if (!byEntityId || isLoading) {\n return {\n data: mutualState.dataMap?.get(entityId) as Mutual<B, T>,\n };\n }\n\n if (mutualState.dataMap?.get(entityId)) {\n return {\n data: mutualState.dataMap.get(entityId) as Mutual<B, T>,\n };\n }\n\n let mutual: Omit<Mutual<B, T>, 'data'>;\n let hasRequestFailed = false;\n\n try {\n ({ data: mutual } = await mutualService.getMutual(\n byEntityId,\n entityId,\n opts,\n ));\n } catch (err) {\n if (!opts.defaultMutualData) {\n const error: Error & { originalError?: unknown } =\n err instanceof Error ? err : new Error('Unknown error occurred');\n return { error };\n }\n\n hasRequestFailed = true;\n mutual = {\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n mutualId: `${byEntityId}-${entityId}`,\n mutualUpdatedAt: new Date().toISOString(),\n byEntityType,\n byEntityId,\n entityType,\n entityId,\n mutualData: opts.defaultMutualData,\n };\n }\n\n const newMutualDataMap = new Map(store.mutual[selfKey]?.dataMap);\n newMutualDataMap.set(mutual.entityId, mutual as Mutual<B, T>);\n\n if (!hasRequestFailed) {\n const entityState = store.entity[entityType];\n const { dataMap: entityDataMap } = entityState;\n\n const newEntityDataMap = new Map(entityDataMap);\n newEntityDataMap.set(mutual.entityId, mutual as any);\n\n monoriseStore.setState(\n produce((state) => {\n state.mutual[selfKey] = {\n ...(state.mutual[selfKey] || {}),\n dataMap: newMutualDataMap,\n };\n state.entity[entityType].dataMap = newEntityDataMap;\n }),\n undefined,\n `mr/mutual/get/${getMutualStateKey(\n byEntityType,\n byEntityId,\n entityType,\n entityId,\n )}`,\n );\n }\n return { data: mutual as Mutual<B, T> };\n };\n\n const createMutual = async <B extends Entity, T extends Entity>(\n byEntityType: B,\n entityType: T,\n byEntityId: string,\n entityId: string,\n payload: MutualData<B, T> | Record<string, any> = {},\n opts: CommonOptions = {},\n ) => {\n const mutualService = makeMutualService(byEntityType, entityType);\n const onError = opts.onError ?? defaultOnError;\n\n try {\n const { data: mutual } = await mutualService.createMutual(\n byEntityId,\n entityId,\n payload,\n opts,\n );\n\n monoriseStore.setState(\n produce((state) => {\n const bySide = getMutualStateKey(\n byEntityType,\n byEntityId,\n entityType,\n );\n const side = getMutualStateKey(entityType, entityId, byEntityType);\n\n if (!state.mutual[bySide]) {\n state.mutual[bySide] = {\n dataMap: new Map(),\n };\n }\n\n state.mutual[bySide].dataMap = new Map(\n state.mutual[bySide]?.dataMap,\n ).set(mutual.entityId, mutual);\n\n if (!state.mutual[side]) {\n state.mutual[side] = {\n dataMap: new Map(),\n };\n }\n\n state.mutual[side].dataMap = new Map(state.mutual[side]?.dataMap).set(\n mutual.byEntityId,\n flipMutual(mutual),\n );\n }),\n undefined,\n `mr/mutual/create/${getMutualStateKey(byEntityType, byEntityId, entityType, entityId)}`,\n );\n return { data: mutual };\n } catch (err) {\n const error: Error & { originalError?: unknown } =\n err instanceof Error ? err : new Error('Unknown error occurred');\n onError(error);\n return { error };\n }\n };\n\n const createLocalMutual = async <B extends Entity, T extends Entity>(\n byEntityType: B,\n entityType: T,\n byEntityId: string,\n entityId: string,\n mutualData: MutualData<B, T>,\n data: EntitySchemaMap[T] | Record<string, any>,\n ) => {\n const mutual = constructMutual(\n byEntityType,\n byEntityId,\n entityType,\n entityId,\n mutualData,\n data as EntitySchemaMap[T],\n );\n\n monoriseStore.setState(\n produce((state) => {\n const bySide = getMutualStateKey(byEntityType, byEntityId, entityType);\n const side = getMutualStateKey(entityType, entityId, byEntityType);\n\n if (!state.mutual[bySide]) {\n state.mutual[bySide] = {\n dataMap: new Map(),\n };\n }\n\n state.mutual[bySide].dataMap = new Map(\n state.mutual[bySide]?.dataMap,\n ).set(mutual.entityId, mutual);\n\n if (!state.mutual[side]) {\n state.mutual[side] = {\n dataMap: new Map(),\n };\n }\n\n state.mutual[side].dataMap = new Map(state.mutual[side]?.dataMap).set(\n mutual.byEntityId,\n flipMutual(mutual),\n );\n }),\n undefined,\n `mr/mutual/create/${getMutualStateKey(byEntityType, byEntityId, entityType, entityId)}`,\n );\n };\n\n const updateLocalEntity = async <T extends Entity>(\n entityType: Entity,\n entityId: string,\n data: Partial<DraftEntity<T>> = {},\n ) => {\n const createdEntity = constructLocal(entityType, entityId, data);\n\n monoriseStore.setState(\n produce((state) => {\n state.entity[entityType].dataMap.set(entityId, createdEntity);\n }),\n undefined,\n `mr/entity/local-update/${entityType}/${entityId}`,\n );\n };\n\n const upsertLocalMutual = async <B extends Entity, T extends Entity>(\n byEntityType: B,\n entityType: T,\n byEntityId: string,\n entityId: string,\n mutualData: MutualData<B, T>,\n data: EntitySchemaMap[T] | Record<string, any> = {},\n ) => {\n const mutual = constructMutual(\n byEntityType,\n byEntityId,\n entityType,\n entityId,\n mutualData,\n data as EntitySchemaMap[T],\n );\n\n monoriseStore.setState(\n produce((state) => {\n const bySide = getMutualStateKey(byEntityType, byEntityId, entityType);\n const side = getMutualStateKey(entityType, entityId, byEntityType);\n\n if (!state.mutual[bySide]) {\n state.mutual[bySide] = {\n dataMap: new Map(),\n };\n }\n\n state.mutual[bySide].dataMap = new Map(\n state.mutual[bySide]?.dataMap,\n ).set(entityId, mutual);\n\n if (!state.mutual[side]) {\n state.mutual[side] = {\n dataMap: new Map(),\n };\n }\n\n state.mutual[side].dataMap = new Map(state.mutual[side]?.dataMap).set(\n byEntityId,\n flipMutual(mutual),\n );\n }),\n undefined,\n `mr/mutual/local-update/${getMutualStateKey(byEntityType, byEntityId, entityType, entityId)}`,\n );\n };\n\n const editMutual = async <B extends Entity, T extends Entity>(\n byEntityType: B,\n entityType: T,\n byEntityId: string,\n entityId: string,\n payload: MutualData<B, T> | Record<string, any> = {},\n opts: CommonOptions = {},\n ) => {\n const mutualService = makeMutualService(byEntityType, entityType);\n const onError = opts.onError ?? defaultOnError;\n\n try {\n const { data: mutual } = await mutualService.editMutual(\n byEntityId,\n entityId,\n payload,\n opts,\n );\n\n monoriseStore.setState(\n produce((state) => {\n const bySide = getMutualStateKey(\n byEntityType,\n byEntityId,\n entityType,\n );\n const side = getMutualStateKey(entityType, entityId, byEntityType);\n\n if (!state.mutual[bySide]) {\n state.mutual[bySide] = {\n dataMap: new Map(),\n };\n }\n\n state.mutual[bySide].dataMap = new Map(\n state.mutual[bySide]?.dataMap,\n ).set(mutual.entityId, mutual);\n\n if (!state.mutual[side]) {\n state.mutual[side] = {\n dataMap: new Map(),\n };\n }\n\n state.mutual[side].dataMap = new Map(state.mutual[side]?.dataMap).set(\n mutual.byEntityId,\n flipMutual(mutual),\n );\n }),\n undefined,\n `mr/mutual/edit/${getMutualStateKey(byEntityType, byEntityId, entityType, entityId)}`,\n );\n return { data: mutual };\n } catch (err) {\n const error: Error & { originalError?: unknown } =\n err instanceof Error ? err : new Error('Unknown error occurred');\n onError(error);\n return { error };\n }\n };\n\n const deleteMutual = async <B extends Entity, T extends Entity>(\n byEntityType: B,\n entityType: T,\n byEntityId: string,\n entityId = '',\n opts: CommonOptions = {},\n ) => {\n const mutualService = makeMutualService(byEntityType, entityType);\n const onError = opts.onError ?? defaultOnError;\n\n try {\n const { data } = await mutualService.deleteMutual(\n byEntityId,\n entityId,\n opts,\n );\n\n monoriseStore.setState(\n produce((state) => {\n const bySide = getMutualStateKey(\n byEntityType,\n byEntityId,\n entityType,\n );\n const side = getMutualStateKey(entityType, entityId, byEntityType);\n\n state.mutual[bySide].dataMap.delete(data.entityId);\n\n if (state.mutual[side]) {\n state.mutual[side].dataMap.delete(data.byEntityId);\n }\n }),\n undefined,\n `mr/mutual/delete/${getMutualStateKey(byEntityType, byEntityId, entityType, entityId)}`,\n );\n return { data };\n } catch (err) {\n const error: Error & { originalError?: unknown } =\n err instanceof Error ? err : new Error('Unknown error occurred');\n onError(error);\n return { error };\n }\n };\n\n const deleteLocalMutual = <B extends Entity, T extends Entity>(\n byEntityType: B,\n entityType: T,\n byEntityId: string,\n entityId: string,\n ) => {\n monoriseStore.setState(\n produce((state) => {\n const bySide = getMutualStateKey(byEntityType, byEntityId, entityType);\n const side = getMutualStateKey(entityType, entityId, byEntityType);\n const bySideDataMap = new Map(state.mutual[bySide]?.dataMap);\n const sideDataMap = new Map(state.mutual[side]?.dataMap);\n bySideDataMap.delete(entityId);\n sideDataMap.delete(byEntityId);\n\n if (state.mutual[bySide]) {\n state.mutual[bySide].dataMap.delete(entityId);\n }\n if (state.mutual[side]) {\n state.mutual[side].dataMap.delete(byEntityId);\n }\n }),\n undefined,\n `mr/mutual/local-delete/${getMutualStateKey(byEntityType, byEntityId, entityType, entityId)}`,\n );\n };\n\n const deleteLocalMutualsByEntity = <T extends Entity>(\n entityType: T,\n id: string,\n ) => {\n const store = monoriseStore.getState();\n const entityConfig = store.config; // Assuming store.config holds mutual related configurations\n let mutuals: Mutual[] = [];\n for (const i of Object.keys(entityConfig)) {\n const mutualState = store.mutual[`${entityType}/${id}/${i}`];\n mutuals = [\n ...mutuals,\n ...Array.from(mutualState?.dataMap.values() || []),\n ];\n }\n\n const updatedState = mutuals.reduce(\n (acc, mutual) => {\n const side = getMutualStateKey(\n mutual.entityType,\n mutual.entityId,\n mutual.byEntityType,\n );\n const dataMap = new Map(store.mutual[side]?.dataMap); // Use optional chaining\n dataMap.delete(id);\n acc[side] = {\n ...store.mutual[side],\n dataMap,\n };\n return acc;\n },\n {} as Record<string, CommonStore<Mutual>>,\n );\n\n monoriseStore.setState(\n produce((state) => {\n // This is a full replacement, might not be desired for partial updates.\n // If state.mutual can contain other keys, this might clear them.\n // Consider a more granular update if needed.\n for (const key in updatedState) {\n state.mutual[key] = updatedState[key];\n }\n }),\n undefined,\n `mr/mutual/local-delete-by-entity/${entityType}/${id}`,\n );\n };\n\n const useEntity = <T extends Entity>(\n entityType: T,\n id?: string,\n opts: CommonOptions = {},\n ): {\n entity: CreatedEntity<T> | undefined;\n isLoading: boolean;\n error?: ApplicationRequestError;\n requestKey: string;\n isFirstFetched?: boolean;\n refetch: () => Promise<CreatedEntity<T> | undefined>;\n } => {\n const dataMap = monoriseStore(\n (state) => state.entity[entityType]?.dataMap || new Map(),\n );\n const isFirstFetched = monoriseStore(\n (state) => state.entity[entityType]?.isFirstFetched,\n );\n const requestKey = getEntityRequestKey('get', entityType, id);\n const isLoading = useLoadStore(requestKey);\n const error = useErrorStore(requestKey);\n\n useEffect(() => {\n if (id) {\n getEntity(entityType, id, opts);\n }\n }, [id, entityType, opts]);\n\n return {\n entity: id ? dataMap.get(id) : undefined,\n isLoading,\n error,\n requestKey,\n isFirstFetched,\n refetch: async () => {\n if (id) {\n const { data, error: fetchError } = await getEntity(entityType, id, {\n ...opts,\n forceFetch: true,\n });\n if (fetchError) {\n // Handle refetch error if necessary, e.g., throw or set local state\n }\n return data;\n }\n },\n };\n };\n\n const useEntityByUniqueField = <T extends Entity>(\n entityType: T,\n fieldName: string,\n value?: string,\n opts: CommonOptions = {},\n ): {\n entity: CreatedEntity<T> | undefined;\n isLoading: boolean;\n error?: ApplicationRequestError;\n requestKey: string;\n isFirstFetched?: boolean;\n refetch: () => Promise<CreatedEntity<T> | undefined>;\n } => {\n const dataMap = monoriseStore(\n (state) => state.entity[entityType]?.dataMap || new Map(),\n );\n const isFirstFetched = monoriseStore(\n (state) => state.entity[entityType]?.isFirstFetched,\n );\n const stateKey = getUniqueFieldStateKey(fieldName, value || '');\n const requestKey = getUniqueFieldRequestKey(\n entityType,\n fieldName,\n value || '',\n );\n const isLoading = useLoadStore(requestKey);\n const error = useErrorStore(requestKey);\n\n useEffect(() => {\n if (value) {\n getEntityByUniqueField(entityType, fieldName, value, opts);\n }\n }, [fieldName, value, entityType, opts]);\n\n return {\n entity: value ? dataMap.get(`${stateKey}`) : undefined,\n isLoading,\n error,\n requestKey,\n isFirstFetched,\n refetch: async () => {\n if (value) {\n const { data, error: fetchError } = await getEntityByUniqueField(\n entityType,\n fieldName,\n value,\n {\n ...opts,\n forceFetch: true,\n },\n );\n if (fetchError) {\n // Handle refetch error if necessary\n }\n return data;\n }\n },\n };\n };\n\n const useEntities = <T extends Entity>(\n entityType: T,\n params: {\n skRange?: {\n start: string;\n end: string;\n };\n all?: boolean;\n } = {},\n opts: CommonOptions & { searchInterval?: number } = {},\n ): {\n isLoading: boolean;\n entities?: CreatedEntity<T>[];\n entitiesMap: Map<string, CreatedEntity<T>>;\n error?: ApplicationRequestError;\n requestKey: string;\n searchField: {\n value: string;\n onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n };\n lastKey?: string;\n isFirstFetched?: boolean;\n listMore: () => void;\n refetch: () => void;\n } => {\n const requestKey = getEntityRequestKey('list', entityType);\n const isListing = useLoadStore(requestKey);\n const error = useErrorStore(requestKey);\n const state = monoriseStore((state) => state.entity[entityType]);\n const { dataMap, searchResults, isFirstFetched, lastKey } = state ?? {\n dataMap: new Map(),\n };\n const [entities, setEntities] = useState<CreatedEntity<T>[]>();\n const [query, setQuery] = useState<string>('');\n const [skRange, setBetween] = useState(params.skRange);\n const [all, setAll] = useState(params.all);\n const [isSearching, setIsSearching] = useState(false);\n const isLoading = isListing || isSearching;\n\n useEffect(() => {\n if (\n params?.skRange &&\n skRange?.start !== params.skRange.start &&\n skRange?.end !== params.skRange.end\n ) {\n setBetween(params.skRange);\n }\n }, [skRange?.end, skRange?.start, params.skRange]);\n\n useEffect(() => {\n if (params?.all !== all) {\n setAll(params.all);\n }\n }, [all, params.all]);\n\n useEffect(() => {\n if (!isFirstFetched || opts?.forceFetch) {\n listEntities(entityType, { skRange, all }, opts);\n }\n }, [all, entityType, skRange, opts, isFirstFetched, opts?.forceFetch]);\n\n useEffect(() => {\n let queryTimeout: NodeJS.Timeout;\n\n if (query?.length) {\n setIsSearching(true);\n queryTimeout = setTimeout(async () => {\n await searchEntities(entityType, query);\n setIsSearching(false);\n }, opts.searchInterval ?? 700);\n }\n\n return () => queryTimeout && clearTimeout(queryTimeout);\n }, [entityType, query]);\n\n useEffect(() => {\n if (!query && dataMap.size !== entities?.length) {\n setIsSearching(false);\n setEntities(\n Array.from(dataMap.values()).sort(byEntityId) as CreatedEntity<T>[],\n );\n }\n\n if (query) {\n setEntities(searchResults as CreatedEntity<T>[]);\n }\n }, [\n dataMap,\n dataMap.size,\n entities?.length,\n query,\n searchResults,\n searchResults?.length,\n ]);\n\n const handleQueryChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setQuery(event.target.value);\n };\n\n const searchField = {\n value: query,\n onChange: handleQueryChange,\n };\n\n return {\n entities,\n entitiesMap: dataMap,\n searchField,\n isLoading,\n error,\n requestKey,\n isFirstFetched,\n lastKey,\n refetch: async () => {\n if (entityType && query) {\n await searchEntities(entityType, query);\n return;\n }\n await listEntities(\n entityType,\n { skRange, all },\n {\n ...opts,\n forceFetch: true,\n },\n );\n },\n listMore: async () => {\n if (!lastKey) return;\n\n await listMoreEntities(entityType, {\n ...opts,\n forceFetch: true,\n });\n },\n };\n };\n\n const useMutual = <B extends Entity, T extends Entity>(\n byEntityType: B,\n entityType: T,\n byId: string | null,\n id: string,\n opts: CommonOptions & {\n // if failed to retrieve, would still set a default mutual data\n defaultMutualData?: Record<string, any>;\n } = {},\n ): {\n mutual?: Mutual<B, T>;\n isLoading: boolean;\n error?: ApplicationRequestError;\n requestKey: string;\n } => {\n const stateKey = getMutualStateKey(byEntityType, byId, entityType);\n const state = monoriseStore((state) => state.mutual[stateKey]);\n const requestKey = getMutualRequestKey(\n 'get',\n byEntityType,\n entityType,\n byId,\n id,\n );\n const isLoading = useLoadStore(requestKey);\n const error = useErrorStore(requestKey);\n\n const { dataMap } = state || {\n dataMap: new Map(),\n };\n\n useEffect(() => {\n if (!dataMap.get(id)) {\n getMutual(byEntityType, entityType, byId, id, opts);\n }\n }, [byEntityType, byId, entityType, id, opts, dataMap]);\n\n return {\n mutual: dataMap.get(id) as Mutual<B, T>,\n isLoading,\n error,\n requestKey,\n };\n };\n\n const useMutuals = <B extends Entity, T extends Entity>(\n byEntityType: B,\n entityType: T,\n byId?: string,\n opts: CommonOptions = {},\n chainEntityQuery?: string, // chain entity query, refer to list-entities-by-entity.controller.ts\n ): {\n mutuals: Mutual<B, T>[];\n mutualsMap: Map<string, Mutual<B, T>>;\n isLoading: boolean;\n requestKey: string;\n error?: ApplicationRequestError;\n isFirstFetched?: boolean;\n lastKey?: string;\n listMore?: () => void;\n } => {\n const stateKey = getMutualStateKey(\n byEntityType,\n byId || '',\n entityType,\n undefined,\n chainEntityQuery,\n );\n const state = monoriseStore((state) => state.mutual[stateKey]);\n const { dataMap, isFirstFetched, lastKey } = state || {\n dataMap: new Map(),\n };\n const [mutuals, setMutuals] = useState<Mutual<B, T>[]>([]);\n const requestKey = getMutualRequestKey(\n 'list',\n byEntityType,\n entityType,\n byId || '',\n undefined,\n chainEntityQuery,\n );\n const isLoading = useLoadStore(requestKey);\n const error = useErrorStore(requestKey);\n\n useEffect(() => {\n if (byEntityType && entityType && byId && (!isFirstFetched || opts?.forceFetch)) {\n listEntitiesByEntity(\n byEntityType,\n entityType,\n byId,\n { ...opts, stateKey },\n chainEntityQuery,\n );\n }\n }, [\n isFirstFetched,\n byEntityType,\n byId,\n entityType,\n opts,\n chainEntityQuery,\n stateKey,\n opts?.forceFetch,\n opts?.noData,\n ]);\n\n useEffect(() => {\n const dataMapArray = Array.from(dataMap.values());\n if (\n dataMap.size !== mutuals?.length ||\n dataMapArray.some(\n (item, index) =>\n JSON.stringify(item) !== JSON.stringify(mutuals[index]),\n )\n ) {\n setMutuals(dataMapArray as Mutual<B, T>[]);\n }\n }, [dataMap, dataMap.size, mutuals?.length]);\n\n return {\n mutuals,\n mutualsMap: dataMap as Map<string, Mutual<B, T>>,\n isLoading,\n requestKey,\n error,\n isFirstFetched,\n lastKey,\n refetch: async () => {\n if (byEntityType && entityType && byId) {\n return await listEntitiesByEntity(\n byEntityType,\n entityType,\n byId,\n {\n ...opts,\n forceFetch: true,\n stateKey,\n },\n chainEntityQuery,\n );\n }\n },\n ...(lastKey && {\n listMore: () => {\n if (byEntityType && entityType && byId) {\n listEntitiesByEntity(\n byEntityType,\n entityType,\n byId,\n {\n ...opts,\n forceFetch: true,\n params: { ...opts.params, lastKey },\n stateKey,\n },\n chainEntityQuery,\n );\n }\n },\n }),\n };\n };\n\n const useTaggedEntities = <T extends Entity>(\n entityType: T,\n tagName: string,\n opts: CommonOptions & { params?: ListEntitiesByTagParams } = {},\n ) => {\n const { params } = opts || {};\n const stateKey = getTagStateKey(entityType, tagName, params);\n const state = monoriseStore((state) => state.tag[stateKey]);\n const { dataMap, isFirstFetched, lastKey } = state || {\n dataMap: new Map(),\n };\n const [entities, setEntities] = useState<CreatedEntity<T>[]>([]);\n const requestKey = getTagRequestKey('list', entityType, tagName, params);\n const isLoading = useLoadStore(requestKey);\n const error = useErrorStore(requestKey);\n\n useEffect(() => {\n if (entityType && tagName && Object.keys(params).length > 0) {\n listEntitiesByTag(entityType, tagName, opts);\n }\n }, [entityType, opts, tagName, params, opts?.forceFetch]);\n\n useEffect(() => {\n const dataMapArray = Array.from(dataMap.values());\n if (\n dataMap.size !== entities?.length ||\n dataMapArray.some(\n (item, index) =>\n JSON.stringify(item) !== JSON.stringify(entities[index]),\n )\n ) {\n setEntities(dataMapArray as CreatedEntity<T>[]);\n }\n }, [dataMap, dataMap.size, entities?.length]);\n\n return {\n entities,\n entitiesMap: dataMap as Map<string, CreatedEntity<T>>,\n isLoading,\n requestKey,\n error,\n isFirstFetched,\n lastKey,\n refetch: async () => {\n if (entityType && tagName && params?.group) {\n return await listEntitiesByTag(entityType, tagName, {\n ...opts,\n forceFetch: true,\n });\n }\n },\n listMore: async () => {\n if (entityType && tagName && params?.group) {\n return await listEntitiesByTag(entityType, tagName, {\n ...opts,\n forceFetch: true,\n params: { ...params, lastKey },\n });\n }\n },\n };\n };\n\n const useEntityState = <T extends Entity>(entityType: T) => {\n return monoriseStore((state) => state.entity[entityType]);\n };\n\n const updateLocalTaggedEntity = <T extends Entity>(\n entityType: T,\n entityId: string,\n tagName: string,\n data: Partial<DraftEntity<T>> = {},\n params?: ListEntitiesByTagParams,\n ) => {\n const tagKey = getTagStateKey(\n entityType,\n tagName,\n params as Record<string, string>,\n );\n\n monoriseStore.setState(\n produce((state) => {\n const entity = state.tag[tagKey]?.dataMap?.get(entityId);\n if (entity) {\n state.tag[tagKey].dataMap.set(entityId, {\n ...entity,\n data: { ...entity.data, ...data },\n });\n }\n }),\n undefined,\n `mr/tag/local-update/${entityType}/${entityId}`,\n );\n };\n\n const deleteLocalTaggedEntity = <T extends Entity>(\n entityType: T,\n entityId: string,\n tagName: string,\n params?: ListEntitiesByTagParams,\n ) => {\n const tagKey = getTagStateKey(\n entityType,\n tagName,\n params as Record<string, string>,\n );\n\n monoriseStore.setState(\n produce((state) => {\n if (state.tag[tagKey]?.dataMap?.has(entityId)) {\n state.tag[tagKey].dataMap.delete(entityId);\n }\n }),\n undefined,\n `mr/tag/local-delete/${entityType}/${entityId}`,\n );\n };\n\n return {\n listMoreEntities,\n createEntity,\n upsertEntity,\n getEntity,\n editEntity,\n deleteEntity,\n getMutual,\n updateLocalEntity,\n createMutual,\n createLocalMutual,\n upsertLocalMutual,\n editMutual,\n deleteMutual,\n deleteLocalMutual,\n useEntity,\n useEntityByUniqueField,\n useEntities,\n useMutual,\n useMutuals,\n useTaggedEntities,\n useEntityState,\n updateLocalTaggedEntity,\n deleteLocalTaggedEntity,\n };\n};\n\nexport { initCoreActions };\n\nexport type CoreActions = ReturnType<typeof initCoreActions>;\n","import type { CreatedEntity, Entity, EntitySchemaMap } from '@monorise/base';\nimport type { Mutual, MutualData } from '../types/mutual.type';\n\nexport const constructLocal = (\n entityType: Entity,\n entityId: string,\n data: any,\n): CreatedEntity<Entity> => {\n return {\n entityType: entityType as unknown as string,\n entityId,\n data,\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n };\n};\n\nexport const constructMutual = <B extends Entity, T extends Entity>(\n byEntityType: B,\n byEntityId: string,\n entityType: T,\n entityId: string,\n mutualData: Partial<MutualData<B, T>>,\n data: EntitySchemaMap[T],\n): Mutual => {\n return {\n mutualId: `${byEntityId}-${entityId}`,\n byEntityType,\n byEntityId,\n entityType,\n entityId,\n mutualData,\n data,\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n mutualUpdatedAt: new Date().toISOString(),\n };\n};\n\nexport const flipMutual = (mutual: Mutual): Mutual => {\n return {\n ...mutual,\n entityId: mutual.byEntityId,\n entityType: mutual.byEntityType,\n byEntityId: mutual.entityId,\n byEntityType: mutual.entityType,\n };\n};\n\nexport const byMutualIndex = (a: Mutual<any, any>, b: Mutual<any, any>) => {\n return a.mutualData.index - b.mutualData.index;\n};\n\nexport const byEntityId = (a: CreatedEntity<any>, b: CreatedEntity<any>) => {\n if (b.entityId < a.entityId) return -1;\n return 1;\n};\n\nexport const constructOrderByIndex = (mutuals: Mutual<any, any>[]) => {\n return mutuals.sort(byMutualIndex).map((mutual) => mutual.entityId);\n};\n\nexport const injectFields = <T extends Entity>(\n entity: CreatedEntity<T> | undefined,\n fields: Record<string, any>,\n): CreatedEntity<T> | undefined => {\n return entity\n ? {\n ...entity,\n data: {\n ...entity.data,\n ...fields,\n },\n }\n : undefined;\n};\n","import type { Entity } from '@monorise/base';\n\nexport const convertToMap = <T extends Record<string, any>>(\n data: T[],\n mapKey: string,\n) => {\n const map = new Map();\n\n for (const i in data) {\n map.set(data[i][mapKey], data[i]);\n }\n\n return map;\n};\n\nexport const getMutualStateKey = (\n byEntity: Entity,\n byEntityId: string | null,\n entity: Entity,\n entityId?: string,\n chainEntityQuery?: string,\n) => {\n return `${byEntity}/${byEntityId}/${entity}${entityId ? `/${entityId}` : ''}${chainEntityQuery ? `?${chainEntityQuery}` : ''}`;\n};\n\nexport const getTagStateKey = (\n entityType: Entity,\n tagName: string,\n params: Record<string, string> = {},\n) => {\n const { lastKey, ...stateParams } = params;\n\n const paramsKey = Object.keys(stateParams)\n .map((key) => `${key}:${stateParams[key]}`)\n .join('/');\n\n return `${entityType}/${tagName}/${paramsKey}`;\n};\n\nexport const getUniqueFieldStateKey = (\n fieldName: string,\n fieldValue: string,\n) => {\n return `${fieldName}/${fieldValue}`;\n};\n\nexport const getEntityRequestKey = (\n mode: 'create' | 'upsert' | 'edit' | 'delete' | 'get' | 'list' | 'search',\n entityType: Entity,\n entityId?: string,\n) => {\n return `entity/${entityType}/${mode}${entityId ? `/${entityId}` : ''}`;\n};\n\nexport const getMutualRequestKey = (\n mode: 'create' | 'update' | 'delete' | 'get' | 'list',\n byEntityType: Entity,\n entityType: Entity,\n byEntityId: string | null,\n entityId?: string,\n chainEntityQuery?: string,\n) => {\n return `mutual/${getMutualStateKey(byEntityType, byEntityId, entityType, entityId, chainEntityQuery)}/${mode}`;\n};\n\nexport const getTagRequestKey = (\n mode: 'list',\n entityType: Entity,\n tagName: string,\n params: Record<string, string> = {},\n) => {\n return `tag/${getTagStateKey(entityType, tagName, params)}/${mode}`;\n};\n\nexport const getUniqueFieldRequestKey = (\n entityType: Entity,\n fieldName: string,\n value: string,\n) => {\n return `entity/${entityType}/unique/${getUniqueFieldStateKey(fieldName, value)}`;\n};\n","import request, {\n type AxiosError,\n type AxiosRequestConfig,\n type AxiosResponse,\n} from 'axios';\nimport type { AppActions } from '../actions/app.action';\nimport type { AuthActions } from '../actions/auth.action';\nimport type { MonoriseStore } from '../store/monorise.store';\nimport type { ApplicationRequestError } from '../types/api.type';\n\ntype IntercepterAxiosRequestConfig<D> = AxiosRequestConfig<D> & {\n requestKey: string;\n isInterruptive?: boolean;\n feedback?: {\n loading?: string | boolean;\n success?: ((data: any) => string) | string | boolean;\n failure?: string | boolean;\n };\n};\n\nconst initAxiosInterceptor = (store: MonoriseStore, appActions: AppActions) => {\n const { startLoading } = appActions;\n\n const axiosInstance = request.create();\n\n function makeRequest<T = any, R = AxiosResponse<T, any>, D = any>(\n url: string,\n config: AxiosRequestConfig<D>,\n data?: D,\n ): Promise<R> {\n const { requestKey, isInterruptive = false, feedback } = config;\n const { ongoingRequests } = store.getState().app;\n\n if (ongoingRequests.has(requestKey)) {\n return ongoingRequests.get(requestKey) as Promise<R>;\n }\n\n const promise = axiosInstance.request<T, R, D>({\n ...config,\n url,\n data,\n headers: {\n ...(config.headers || {}),\n 'Mr-Interruptive': String(isInterruptive),\n },\n });\n startLoading({\n requestKey,\n isInterruptive,\n message: feedback?.loading,\n request: promise,\n });\n\n return promise;\n }\n\n const axios = {\n ...axiosInstance,\n post: <T = any, R = AxiosResponse<T, any>, D = any>(\n url: string,\n data: D,\n config: IntercepterAxiosRequestConfig<D>,\n ): Promise<R> => makeRequest(url, { ...config, method: 'POST' }, data),\n put: <T = any, R = AxiosResponse<T, any>, D = any>(\n url: string,\n data: D,\n config: IntercepterAxiosRequestConfig<D>,\n ): Promise<R> => makeRequest(url, { ...config, method: 'PUT' }, data),\n patch: <T = any, R = AxiosResponse<T, any>, D = any>(\n url: string,\n data: D,\n config: IntercepterAxiosRequestConfig<D>,\n ): Promise<R> => makeRequest(url, { ...config, method: 'PATCH' }, data),\n delete: <T = any, R = AxiosResponse<T, any>, D = any>(\n url: string,\n config: IntercepterAxiosRequestConfig<D>,\n ): Promise<R> => makeRequest(url, { ...config, method: 'DELETE' }),\n get: <T = any, R = AxiosResponse<T, any>, D = any>(\n url: string,\n config: IntercepterAxiosRequestConfig<D>,\n ): Promise<R> => makeRequest(url, { ...config, method: 'GET' }),\n };\n\n return axios;\n};\n\ntype ConfigOptions = {\n onApiSuccess?: <T>(\n response: AxiosResponse<T>,\n feedbackSuccess:\n | ((data: AxiosResponse<T>['data']) => React.ReactNode)\n | string\n | boolean,\n ) => void;\n};\n\nconst injectAxiosInterceptor = (\n appActions: AppActions,\n authActions: AuthActions,\n axios: ReturnType<typeof initAxiosInterceptor>,\n opts?: ConfigOptions,\n) => {\n let options: ConfigOptions = opts || {};\n const { endLoading, setError, clearError } = appActions;\n const { setIsUnauthorized } = authActions;\n\n const unknownError: ApplicationRequestError = {\n status: 500,\n code: 'UNKNOWN_EXCEPTION',\n message: \"Ops, something doesn't seems right\",\n };\n\n axios.interceptors.response.use(\n (response) => {\n const { requestKey, isInterruptive, feedback } = response.config;\n endLoading({ requestKey, isInterruptive });\n clearError(requestKey);\n\n if (feedback?.success) {\n options.onApiSuccess?.(response, feedback.success);\n }\n // switch (typeof feedback.success) {\n // case 'function':\n // toast(feedback.success(response.data));\n // break;\n // case 'string':\n // toast(\n // <Fragment>\n // <IconCircleCheckFilled color='rgb(34 197 94)' />\n // {feedback.success}\n // </Fragment>,\n // );\n // break;\n // case 'boolean':\n // toast('Request success');\n // break;\n // }\n\n return Promise.resolve(response);\n },\n (error: AxiosError<string>) => {\n const { requestKey, isInterruptive } = error.config as AxiosRequestConfig;\n endLoading({ requestKey, isInterruptive });\n\n const appError = error.response?.data\n ? {\n code: error.response?.statusText,\n status: error.response?.status,\n message: error.response?.data,\n }\n : unknownError;\n setError({ requestKey, error: appError });\n if (error.response?.status === 401) {\n setIsUnauthorized(true);\n }\n return Promise.reject(error);\n },\n );\n\n const setOptions = (opts: ConfigOptions) => {\n options = {\n ...options,\n ...opts,\n };\n };\n\n return { setOptions };\n};\n\nexport { initAxiosInterceptor, injectAxiosInterceptor };\n","import type { Entity } from '@monorise/base';\nimport type { AxiosInterceptor } from '../types/api.type';\n\ntype LoginPayload = {\n email: string;\n};\n\ntype Options = {\n apiBaseUrl?: string;\n};\n\nconst initAuthService = (axios: AxiosInterceptor) => {\n let options: Options = {};\n const { apiBaseUrl = '/api/auth' } = options;\n\n const requestLoginMagicLink = (entityType: Entity, payload: LoginPayload) => {\n return axios.post(\n `${apiBaseUrl}/${entityType}`,\n {\n body: { ...payload },\n },\n {\n requestKey: `auth/${entityType}/request-login`,\n isInterruptive: true,\n feedback: {\n loading: 'Requesting login link',\n },\n },\n );\n };\n\n const getSessionProfile = <T extends Record<string, unknown>>() =>\n axios.get<\n T & {\n displayName: string;\n email: string;\n accountId: string;\n }\n >('/session', {\n requestKey: 'auth/session',\n });\n\n const logout = () =>\n axios.get('/logout', {\n requestKey: 'auth/logout',\n });\n\n const setOptions = (opts: Options) => {\n options = {\n ...options,\n ...opts,\n };\n };\n\n return {\n requestLoginMagicLink,\n getSessionProfile,\n logout,\n setOptions,\n };\n};\n\nexport default initAuthService;\n\nexport type AuthService = ReturnType<typeof initAuthService>;\n","import type { CreatedEntity, DraftEntity, Entity } from '@monorise/base';\nimport type { AxiosRequestConfig } from 'axios';\nimport {\n getEntityRequestKey,\n getMutualRequestKey,\n getMutualStateKey,\n getTagRequestKey,\n getUniqueFieldRequestKey,\n getUniqueFieldStateKey,\n} from '../lib/utils';\nimport type { MonoriseStore } from '../store/monorise.store';\nimport type {\n ApplicationRequestError,\n AxiosInterceptor,\n} from '../types/api.type';\nimport type { Mutual, MutualData } from '../types/mutual.type';\n\nconst ENTITY_API_BASE_URL = '/api/core/entity';\nconst MUTUAL_API_BASE_URL = '/api/core/mutual';\nconst TAG_API_BASE_URL = '/api/core/tag';\n\ntype ListEntitiesPayload = {\n limit?: number;\n lastKey?: string;\n start?: string;\n end?: string;\n};\n\nexport type ListEntitiesByTagParams = {\n group?: string;\n query?: string;\n start?: string;\n end?: string;\n limit?: number;\n lastKey?: string;\n};\n\ntype ConfigOptions = {\n entityApiBaseUrl?: string;\n mutualApiBaseUrl?: string;\n tagApiBaseUrl?: string;\n};\n\nexport type CommonOptions = Partial<AxiosRequestConfig> & {\n customUrl?: string;\n isInterruptive?: boolean;\n feedback?: {\n success?: string;\n failure?: string;\n loading?: string;\n };\n stateKey?: string;\n forceFetch?: boolean;\n noData?: boolean;\n requestKey?: string;\n onError?: (error: ApplicationRequestError | Error) => void;\n limit?: number;\n};\n\nconst initCoreService = (\n monoriseStore: MonoriseStore,\n axios: AxiosInterceptor,\n opts?: ConfigOptions,\n) => {\n let options: ConfigOptions = opts || {};\n\n const listEntities = <T extends Entity>(\n entityType: T,\n payload?: ListEntitiesPayload,\n opts: CommonOptions = {},\n ) => {\n const { entityApiBaseUrl = ENTITY_API_BASE_URL } = options;\n return axios.get<{\n data: CreatedEntity<T>[];\n lastKey?: string;\n totalCount: number;\n }>(opts.customUrl || `${entityApiBaseUrl}/${entityType}`, {\n requestKey: getEntityRequestKey('list', entityType),\n params: payload ?? undefined,\n isInterruptive: opts.isInterruptive,\n feedback: opts.feedback,\n });\n };\n\n const searchEntities = <T extends Entity>(\n entityType: T,\n query: string,\n opts: CommonOptions = {},\n ) => {\n const { entityApiBaseUrl = ENTITY_API_BASE_URL } = options;\n return axios.get<{ data: CreatedEntity<T>[] }>(\n opts.customUrl || `${entityApiBaseUrl}/${entityType}`,\n {\n requestKey: getEntityRequestKey('search', entityType),\n params: { query },\n isInterruptive: opts.isInterruptive,\n feedback: opts.feedback,\n },\n );\n };\n\n const listEntitiesByTag = <T extends Entity>(\n entityType: T,\n tagName: string,\n opts: CommonOptions & { params?: ListEntitiesByTagParams } = {},\n ) => {\n const { tagApiBaseUrl = TAG_API_BASE_URL } = options;\n return axios.get<{ entities: CreatedEntity<T>[]; lastKey: string }>(\n opts.customUrl || `${tagApiBaseUrl}/${entityType}/${tagName}`,\n {\n requestKey:\n opts.requestKey ||\n getTagRequestKey('list', entityType, tagName, opts.params),\n params: opts.params,\n isInterruptive: opts.isInterruptive,\n feedback: opts.feedback,\n },\n );\n };\n\n const getEntity = <T extends Entity>(\n entityType: T,\n id: string,\n opts: CommonOptions = {},\n ) => {\n const { entityApiBaseUrl = ENTITY_API_BASE_URL } = options;\n return axios.get<CreatedEntity<T>>(\n opts.customUrl || `${entityApiBaseUrl}/${entityType}/${id}`,\n {\n requestKey: getEntityRequestKey('get', entityType, id),\n isInterruptive: opts.isInterruptive,\n feedback: {\n loading: `Retrieving ${entityType}`,\n ...(opts.feedback || {}),\n },\n },\n );\n };\n\n const getEntityByUniqueField = <T extends Entity>(\n entityType: T,\n fieldName: string,\n value: string,\n opts: CommonOptions = {},\n ) => {\n const { entityApiBaseUrl = ENTITY_API_BASE_URL } = options;\n return axios.get<CreatedEntity<T>>(\n opts.customUrl ||\n `${entityApiBaseUrl}/${entityType}/unique/${getUniqueFieldStateKey(fieldName, value)}`,\n {\n requestKey: getUniqueFieldRequestKey(entityType, fieldName, value),\n isInterruptive: opts.isInterruptive,\n feedback: {\n loading: `Retrieving ${entityType}`,\n ...(opts.feedback || {}),\n },\n },\n );\n };\n\n const createEntity = <T extends Entity>(\n entityType: T,\n values: DraftEntity<T>,\n opts: CommonOptions = {},\n ) => {\n const { entityApiBaseUrl = ENTITY_API_BASE_URL } = options;\n const entityConfig = monoriseStore.getState().config;\n return axios.post<CreatedEntity<T>>(\n opts.customUrl || `${entityApiBaseUrl}/${entityType}`,\n values,\n {\n requestKey:\n opts.requestKey || getEntityRequestKey('create', entityType),\n isInterruptive: opts.isInterruptive ?? true,\n feedback: {\n loading: `Creating ${entityConfig[entityType].displayName}`,\n success: `${entityConfig[entityType].displayName} created`,\n ...(opts.feedback || {}),\n },\n },\n );\n };\n\n const upsertEntity = <T extends Entity>(\n entityType: T,\n id: string,\n values: DraftEntity<T>,\n opts: CommonOptions = {},\n ) => {\n const { entityApiBaseUrl = ENTITY_API_BASE_URL } = options;\n const entityConfig = monoriseStore.getState().config;\n return axios.put<CreatedEntity<T>>(\n opts.customUrl || `${entityApiBaseUrl}/${entityType}/${id}`,\n values,\n {\n requestKey: getEntityRequestKey('upsert', entityType, id),\n isInterruptive: opts.isInterruptive ?? true,\n feedback: {\n loading: `Updating ${entityConfig[entityType].displayName}`,\n success: `${entityConfig[entityType].displayName} updated`,\n ...(opts.feedback || {}),\n },\n },\n );\n };\n\n const editEntity = <T extends Entity>(\n entityType: T,\n id: string,\n values: Partial<DraftEntity<T>>,\n opts: CommonOptions = {},\n ) => {\n const { entityApiBaseUrl = ENTITY_API_BASE_URL } = options;\n const entityConfig = monoriseStore.getState().config;\n return axios.patch<CreatedEntity<T>>(\n opts.customUrl || `${entityApiBaseUrl}/${entityType}/${id}`,\n values,\n {\n requestKey: getEntityRequestKey('edit', entityType, id),\n isInterruptive: opts.isInterruptive ?? true,\n feedback: {\n loading: `Updating ${entityConfig[entityType].displayName}`,\n success: `${entityConfig[entityType].displayName} updated`,\n ...(opts.feedback || {}),\n },\n },\n );\n };\n\n const deleteEntity = <T extends Entity>(\n entityType: T,\n id: string,\n opts: CommonOptions = {},\n ) => {\n const { entityApiBaseUrl = ENTITY_API_BASE_URL } = options;\n const entityConfig = monoriseStore.getState().config;\n return axios.delete(\n opts.customUrl || `${entityApiBaseUrl}/${entityType}/${id}`,\n {\n requestKey: getEntityRequestKey('delete', entityType, id),\n isInterruptive: opts.isInterruptive ?? true,\n feedback: {\n loading: `Deleting ${entityConfig[entityType].displayName}`,\n success: `${entityConfig[entityType].displayName} deleted`,\n ...(opts.feedback || {}),\n },\n },\n );\n };\n\n const listEntitiesByEntity = <B extends Entity, T extends Entity>(\n byEntityType: B,\n entityType: T,\n byEntityId: string,\n opts: CommonOptions = {},\n chainEntityQuery?: string,\n ) => {\n const { mutualApiBaseUrl = MUTUAL_API_BASE_URL } = options;\n return axios.get<{ entities: Mutual<B, T>[]; lastKey: string }>(\n opts.customUrl ||\n `${mutualApiBaseUrl}/${byEntityType}/${byEntityId}/${entityType}`,\n {\n requestKey: getMutualRequestKey(\n 'list',\n byEntityType,\n entityType,\n byEntityId,\n undefined,\n chainEntityQuery,\n ),\n isInterruptive: opts.isInterruptive,\n feedback: opts.feedback,\n params: {\n chainEntityQuery,\n limit: opts.limit,\n ...opts.params,\n ...(opts.noData && { projection: 'no-data' }),\n },\n },\n );\n };\n\n const getMutual = <B extends Entity, T extends Entity>(\n byEntityType: B,\n entityType: T,\n byEntityId: string,\n entityId: string,\n opts: CommonOptions = {},\n ) => {\n const { mutualApiBaseUrl = MUTUAL_API_BASE_URL } = options;\n return axios.get<Mutual<B, T>>(\n opts.customUrl ||\n `${mutualApiBaseUrl}/${getMutualStateKey(byEntityType, byEntityId, entityType, entityId)}`,\n {\n requestKey: getMutualRequestKey(\n 'get',\n byEntityType,\n entityType,\n byEntityId,\n entityId,\n ),\n isInterruptive: opts.isInterruptive ?? false,\n feedback: opts.feedback,\n },\n );\n };\n\n const createMutual = <B extends Entity, T extends Entity>(\n byEntityType: B,\n entityType: T,\n byEntityId: string,\n entityId: string,\n payload: MutualData<B, T> | Record<string, unknown>,\n opts: CommonOptions = {},\n ) => {\n const { mutualApiBaseUrl = MUTUAL_API_BASE_URL } = options;\n return axios.post<Mutual<B, T>>(\n opts.customUrl ||\n `${mutualApiBaseUrl}/${getMutualStateKey(byEntityType, byEntityId, entityType, entityId)}`,\n payload,\n {\n requestKey: getMutualRequestKey(\n 'create',\n byEntityType,\n entityType,\n byEntityId,\n ),\n isInterruptive: opts.isInterruptive ?? true,\n feedback: {\n loading: 'Creating linkage',\n success: 'Linkage created',\n ...(opts.feedback || {}),\n },\n },\n );\n };\n\n const editMutual = <B extends Entity, T extends Entity>(\n byEntityType: B,\n entityType: T,\n byEntityId: string,\n entityId: string,\n payload: MutualData<B, T> | Record<string, unknown>,\n opts: CommonOptions = {},\n ) => {\n const { mutualApiBaseUrl = MUTUAL_API_BASE_URL } = options;\n return axios.patch<Mutual<B, T>>(\n opts.customUrl ||\n `${mutualApiBaseUrl}/${getMutualStateKey(byEntityType, byEntityId, entityType, entityId)}`,\n payload,\n {\n requestKey: getMutualRequestKey(\n 'update',\n byEntityType,\n entityType,\n byEntityId,\n entityId,\n ),\n isInterruptive: opts.isInterruptive ?? true,\n feedback: {\n loading: 'Updating linkage',\n success: 'Linkage updated',\n ...(opts.feedback || {}),\n },\n },\n );\n };\n\n const deleteMutual = <B extends Entity, T extends Entity>(\n byEntityType: B,\n entityType: T,\n byEntityId: string,\n entityId: string,\n opts: CommonOptions = {},\n ) => {\n const { mutualApiBaseUrl = MUTUAL_API_BASE_URL } = options;\n return axios.delete(\n opts.customUrl ||\n `${mutualApiBaseUrl}/${getMutualStateKey(byEntityType, byEntityId, entityType, entityId)}`,\n {\n requestKey: getMutualRequestKey(\n 'delete',\n byEntityType,\n entityType,\n byEntityId,\n entityId,\n ),\n isInterruptive: opts.isInterruptive ?? true,\n feedback: {\n loading: 'Removing linkage',\n success: 'Linkage removed',\n ...(opts.feedback || {}),\n },\n },\n );\n };\n\n const makeEntityService = <T extends Entity>(entityType: T) => ({\n listEntities: (payload: ListEntitiesPayload, opts: CommonOptions = {}) =>\n listEntities(entityType, payload, opts),\n searchEntities: (query: string, opts: CommonOptions = {}) =>\n searchEntities(entityType, query, opts),\n listEntitiesByTag: (tagName: string, opts: CommonOptions = {}) =>\n listEntitiesByTag(entityType, tagName, opts),\n getEntity: (id: string, opts: CommonOptions = {}) =>\n getEntity(entityType, id, opts),\n getEntityByUniqueField: (\n fieldName: string,\n value: string,\n opts: CommonOptions = {},\n ) => getEntityByUniqueField(entityType, fieldName, value, opts),\n createEntity: (values: DraftEntity<T>, opts: CommonOptions = {}) =>\n createEntity(entityType, values, opts),\n upsertEntity: (\n id: string,\n values: DraftEntity<T>,\n opts: CommonOptions = {},\n ) => upsertEntity(entityType, id, values, opts),\n editEntity: (\n id: string,\n values: Partial<DraftEntity<T>>,\n opts: CommonOptions = {},\n ) => editEntity(entityType, id, values, opts),\n updateEntity: (\n id: string,\n values: DraftEntity<T>,\n opts: CommonOptions = {},\n ) => editEntity(entityType, id, values, opts),\n deleteEntity: (id: string, opts: CommonOptions = {}) =>\n deleteEntity(entityType, id, opts),\n });\n\n const makeMutualService = <B extends Entity, T extends Entity>(\n byEntityType: B,\n entityType: T,\n ) => ({\n listEntitiesByEntity: (\n byEntityId: string,\n opts: CommonOptions = {},\n chainEntityQuery?: string,\n ) =>\n listEntitiesByEntity(\n byEntityType,\n entityType,\n byEntityId,\n opts,\n chainEntityQuery,\n ),\n getMutual: (\n byEntityId: string,\n entityId: string,\n opts: CommonOptions = {},\n ) => getMutual(byEntityType, entityType, byEntityId, entityId, opts),\n createMutual: (\n byEntityId: string,\n entityId: string,\n payload: MutualData<B, T> | Record<string, unknown>,\n opts = {},\n ) =>\n createMutual(\n byEntityType,\n entityType,\n byEntityId,\n entityId,\n payload,\n opts,\n ),\n editMutual: (\n byEntityId: string,\n entityId: string,\n payload: MutualData<B, T> | Record<string, unknown>,\n opts = {},\n ) =>\n editMutual(byEntityType, entityType, byEntityId, entityId, payload, opts),\n deleteMutual: (\n byEntityId: string,\n entityId: string,\n opts: CommonOptions = {},\n ) => deleteMutual(byEntityType, entityType, byEntityId, entityId, opts),\n });\n\n const setOptions = (opts: ConfigOptions) => {\n options = {\n ...options,\n ...opts,\n };\n };\n\n return {\n makeEntityService,\n makeMutualService,\n setOptions,\n };\n};\n\nexport default initCoreService;\n\nexport type CoreService = ReturnType<typeof initCoreService>;\n","import type { AxiosInterceptor } from '../types/api.type';\n\ntype UploadFileProps = {\n file: File;\n scope: string;\n directory: string;\n name: string;\n disableLoading?: boolean;\n onProgress?: (progress: number) => void;\n};\n\ntype Options = {\n apiBaseUrl?: string;\n};\n\nconst initFilestoreService = (axios: AxiosInterceptor) => {\n let options: Options = {};\n const { apiBaseUrl = '/api/file' } = options;\n\n const uploadFile = async ({\n file,\n scope,\n directory,\n name,\n disableLoading,\n onProgress,\n }: UploadFileProps) => {\n const { data } = await axios.get(`${apiBaseUrl}/upload`, {\n requestKey: `filestore/presign/file/${name}`,\n isInterruptive: !disableLoading,\n feedback: {\n loading: 'Preparing upload',\n },\n params: {\n scope,\n directory,\n filename: name,\n },\n });\n\n return axios.put(data.url, file, {\n requestKey: `filestore/upload/${name}`,\n isInterruptive: !disableLoading,\n feedback: {\n loading: 'Uploading file',\n },\n headers: {\n 'Content-Type': file.type,\n 'Content-Disposition': 'inline',\n },\n onUploadProgress: (progressEvent) => {\n if (onProgress && progressEvent.total) {\n const progress = Math.round(\n (progressEvent.loaded / progressEvent.total) * 100,\n );\n onProgress(progress);\n }\n },\n });\n };\n\n const deleteFiles = async (keys: string[]) => {\n console.log('Deleting files', keys);\n const { data } = await axios.post(\n `${apiBaseUrl}/delete`,\n {\n keys,\n },\n {\n requestKey: 'filestore/delete',\n },\n );\n\n return data;\n };\n\n const uploadVideo = async ({\n file,\n scope,\n directory,\n name,\n }: UploadFileProps) => {\n const { data: presign } = await axios.get(`${apiBaseUrl}/upload`, {\n requestKey: `filestore/presign/video/${name}`,\n isInterruptive: true,\n feedback: {\n loading: 'Preparing upload',\n },\n params: {\n scope,\n directory,\n filename: name,\n },\n });\n\n await axios.put(presign.url, file, {\n requestKey: `filestore/upload/video/${name}`,\n isInterruptive: true,\n feedback: {\n loading: 'Uploading video',\n },\n headers: {\n 'Content-Type': file.type,\n },\n });\n\n const { data } = await axios.post(\n `${apiBaseUrl}/video/convert`,\n {\n scope,\n directory,\n filename: name,\n },\n {\n requestKey: 'filestore/convert/video',\n isInterruptive: true,\n feedback: {\n loading: 'Triggering video conversion',\n },\n },\n );\n\n return data;\n };\n\n const uploadAudio = async ({\n file,\n scope,\n directory,\n name,\n }: UploadFileProps) => {\n const { data: presign } = await axios.get(`${apiBaseUrl}/upload`, {\n requestKey: `filestore/presign/audio/${name}`,\n isInterruptive: true,\n feedback: {\n loading: 'Preparing upload',\n },\n params: {\n scope,\n directory,\n filename: name,\n },\n });\n\n await axios.put(presign.url, file, {\n requestKey: `filestore/upload/audio/${name}`,\n isInterruptive: true,\n feedback: {\n loading: 'Uploading audio',\n },\n headers: {\n 'Content-Type': file.type,\n },\n });\n\n const { data } = await axios.post(\n `${apiBaseUrl}/audio/convert`,\n {\n scope,\n directory,\n filename: name,\n },\n {\n requestKey: 'filestore/convert/audio',\n isInterruptive: true,\n feedback: {\n loading: 'Triggering audio conversion',\n },\n },\n );\n\n return data;\n };\n\n const getJobStatus = async (id: string) => {\n const { data } = await axios.get(`${apiBaseUrl}/job/${id}`, {\n requestKey: `filestore/get-job/${id}`,\n });\n\n return data;\n };\n\n const setOptions = (opts: Options) => {\n options = {\n ...options,\n ...opts,\n };\n };\n\n return {\n uploadFile,\n deleteFiles,\n uploadVideo,\n uploadAudio,\n getJobStatus,\n setOptions,\n };\n};\n\nexport default initFilestoreService;\n","import type {\n CreatedEntity,\n Entity,\n MonoriseEntityConfig,\n} from '@monorise/base';\nimport { enableMapSet } from 'immer';\nimport type React from 'react';\nimport { create } from 'zustand';\nimport { devtools } from 'zustand/middleware';\nimport type { ApplicationRequestError, ModalProps } from '../types/api.type';\nimport type { CommonStore } from '../types/monorise.type';\nimport type { Mutual } from '../types/mutual.type';\n\nenableMapSet();\n\nconst configureDevtools = (storeName: string) => ({\n name: `${storeName} Store`,\n anonymousActionType: `${storeName.toLowerCase()}/action`,\n enabled: !['prod', 'dev'].includes(process.env.NEXT_PUBLIC_ENVIRONMENT ?? ''),\n serialize: {\n options: {\n map: true,\n },\n },\n});\n\ntype Options = {\n modals?: Record<string, React.ComponentType<unknown>>;\n};\n\nconst initMonoriseStore = () => {\n let options: Options = {};\n const { modals = {} } = options;\n\n type AppModalProps = ModalProps<typeof modals>;\n\n const monoriseStore = create(\n devtools(\n (): {\n app: {\n ongoingRequests: Map<string, Promise<unknown>>;\n loadStack: Map<string, number>;\n intLoadStack: Map<string, number>;\n loadingMessage: string;\n errorStack: Map<string, ApplicationRequestError>;\n modal: {\n name: keyof AppModalProps | null;\n context?: AppModalProps[keyof AppModalProps];\n };\n };\n config: Record<Entity, MonoriseEntityConfig>;\n entity: Record<Entity, CommonStore<CreatedEntity<Entity>>>;\n mutual: Record<string, CommonStore<Mutual>>;\n tag: Record<string, CommonStore<CreatedEntity<Entity>>>;\n auth: {\n isUnauthorized: boolean;\n profile: {\n displayName: string;\n email: string;\n accountId: string;\n };\n isLoading: boolean;\n };\n } => ({\n app: {\n ongoingRequests: new Map(),\n loadStack: new Map(),\n intLoadStack: new Map(),\n loadingMessage: '',\n errorStack: new Map(),\n modal: {\n name: null,\n },\n },\n config: {},\n entity: {},\n mutual: {},\n tag: {},\n auth: {\n isUnauthorized: false,\n profile: {\n displayName: '',\n email: '',\n accountId: '',\n },\n isLoading: true,\n },\n }),\n configureDevtools('monorise'),\n ),\n );\n\n const setOptions = (opts: Options) => {\n options = {\n ...options,\n ...opts,\n };\n };\n\n return { setOptions, monoriseStore };\n};\n\nexport { initMonoriseStore };\n\nexport type MonoriseStore = Awaited<\n ReturnType<typeof initMonoriseStore>\n>['monoriseStore'];\n","import type { Entity, MonoriseEntityConfig } from '@monorise/base';\nimport type { AxiosResponse } from 'axios';\nimport { initAppActions } from './actions/app.action';\nimport { initAuthActions } from './actions/auth.action';\nimport { initConfigActions } from './actions/config.action';\nimport { initCoreActions } from './actions/core.action';\nimport { initAxiosInterceptor, injectAxiosInterceptor } from './lib/api';\nimport {\n getEntityRequestKey,\n getMutualRequestKey,\n getTagRequestKey,\n getUniqueFieldRequestKey,\n} from './lib/utils';\nimport initAuthService from './services/auth.service';\nimport initCoreService from './services/core.service';\nimport initFilestoreService from './services/filestore.service';\nimport { initMonoriseStore } from './store/monorise.store';\nimport {\n Mutual,\n MutualData,\n MutualDataMapping,\n MutualDataWithIndex,\n} from './types/mutual.type';\n\ntype Options<T extends Record<string, React.ComponentType<any>>> = {\n authBaseUrl?: string;\n filestoreBaseUrl?: string;\n entityBaseUrl?: string;\n mutualBaseUrl?: string;\n tagBaseUrl?: string;\n modals?: T;\n entityConfig: Record<Entity, MonoriseEntityConfig>;\n onApiSuccess?: <T>(\n response: AxiosResponse<T>,\n feedbackSuccess:\n | ((data: AxiosResponse<T>['data']) => React.ReactNode)\n | string\n | boolean,\n ) => void;\n};\n\nconst initMonorise = () => {\n const { monoriseStore: store, setOptions: setMonoriseOptions } =\n initMonoriseStore();\n const appActions = initAppActions(store);\n const configActions = initConfigActions(store);\n const axios = initAxiosInterceptor(store, appActions);\n\n const authService = initAuthService(axios);\n const filestoreService = initFilestoreService(axios);\n const coreService = initCoreService(store, axios);\n\n const authActions = initAuthActions(store, authService);\n const coreActions = initCoreActions(store, appActions, coreService);\n\n const axiosInterceptor = injectAxiosInterceptor(\n appActions,\n authActions,\n axios,\n );\n\n const config = <T extends Record<string, React.ComponentType<any>>>(\n opts: Options<T>,\n ) => {\n setMonoriseOptions({\n modals: opts.modals,\n });\n configActions.setConfig(opts.entityConfig);\n authService.setOptions({\n apiBaseUrl: opts.authBaseUrl,\n });\n filestoreService.setOptions({\n apiBaseUrl: opts.filestoreBaseUrl,\n });\n coreService.setOptions({\n entityApiBaseUrl: opts.entityBaseUrl,\n mutualApiBaseUrl: opts.mutualBaseUrl,\n tagApiBaseUrl: opts.tagBaseUrl,\n });\n axiosInterceptor.setOptions({\n onApiSuccess: opts.onApiSuccess,\n });\n };\n\n return {\n config,\n store,\n axios,\n authService,\n filestoreService,\n coreService,\n ...configActions,\n ...appActions,\n ...authActions,\n ...coreActions,\n };\n};\n\nconst Monorise = initMonorise();\n\nconst {\n store,\n axios,\n authService,\n filestoreService,\n coreService,\n setConfig,\n getConfig,\n useConfig,\n startLoading,\n endLoading,\n setError,\n getError,\n clearError,\n openModal,\n closeModal,\n useLoadStore,\n useInterruptiveLoadStore,\n useErrorStore,\n useModalStore,\n requestLogin,\n useProfile,\n getProfile,\n useIsUnauthorized,\n setIsUnauthorized,\n logout,\n listMoreEntities,\n createEntity,\n upsertEntity,\n editEntity,\n updateLocalEntity,\n deleteEntity,\n getMutual,\n createMutual,\n createLocalMutual,\n upsertLocalMutual,\n editMutual,\n deleteMutual,\n deleteLocalMutual,\n useEntity,\n useEntityByUniqueField,\n useEntities,\n useMutual,\n useMutuals,\n useTaggedEntities,\n useEntityState,\n getEntity,\n updateLocalTaggedEntity,\n deleteLocalTaggedEntity,\n} = Monorise;\n\nexport {\n store,\n axios,\n authService,\n filestoreService,\n coreService,\n setConfig,\n getConfig,\n useConfig,\n startLoading,\n endLoading,\n setError,\n getError,\n clearError,\n openModal,\n closeModal,\n useLoadStore,\n useInterruptiveLoadStore,\n useErrorStore,\n useModalStore,\n requestLogin,\n useProfile,\n getProfile,\n useIsUnauthorized,\n setIsUnauthorized,\n logout,\n listMoreEntities,\n createEntity,\n upsertEntity,\n editEntity,\n updateLocalEntity,\n deleteEntity,\n getMutual,\n createMutual,\n createLocalMutual,\n upsertLocalMutual,\n editMutual,\n deleteMutual,\n deleteLocalMutual,\n useEntity,\n useEntityByUniqueField,\n useEntities,\n useMutual,\n useMutuals,\n useTaggedEntities,\n useEntityState,\n getEntityRequestKey,\n getMutualRequestKey,\n getTagRequestKey,\n getUniqueFieldRequestKey,\n getEntity,\n updateLocalTaggedEntity,\n deleteLocalTaggedEntity,\n};\n\nexport default Monorise;\n\nexport { MutualDataWithIndex, MutualDataMapping, MutualData, Mutual };\n\nexport type {\n CreatedEntity,\n DraftEntity,\n Entity,\n EntitySchemaMap,\n} from '@monorise/base';\n"],"mappings":"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","names":["store","startLoading","request","endLoading","setError","getError","clearError","openModal","closeModal","useLoadStore","useInterruptiveLoadStore","useErrorStore","useModalStore","produce","store","authService","requestLogin","useProfile","getProfile","produce","useIsUnauthorized","setIsUnauthorized","logout","produce","store","setConfig","getConfig","useConfig","produce","useEffect","useState","byEntityId","byEntityId","coreService","getError","useLoadStore","useErrorStore","store","produce","error","listMoreEntities","state","getEntity","createEntity","_a","byEntityId","upsertEntity","editEntity","deleteEntity","getMutual","createMutual","createLocalMutual","updateLocalEntity","upsertLocalMutual","editMutual","deleteMutual","deleteLocalMutual","useEntity","useEffect","useEntityByUniqueField","useEntities","useState","useMutual","useMutuals","useTaggedEntities","useEntityState","updateLocalTaggedEntity","deleteLocalTaggedEntity","store","startLoading","axios","endLoading","setError","clearError","setIsUnauthorized","opts","axios","logout","axios","opts","getEntity","createEntity","upsertEntity","editEntity","deleteEntity","byEntityId","getMutual","createMutual","editMutual","deleteMutual","axios","store","axios","authService","filestoreService","coreService"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "monorise",
3
- "version": "0.0.2-dev.2",
3
+ "version": "0.0.2-dev.3",
4
4
  "description": "Monorise - A unified package for all Monorise functionality",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",