monorise 0.0.2-dev.0 → 0.0.2-dev.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli/cli.js CHANGED
@@ -121,6 +121,18 @@ declare module '@monorise/base' {
121
121
  ${schemaMapEntries.join("\n ")}
122
122
  }
123
123
  }
124
+
125
+ declare module 'monorise/base' {
126
+ export enum Entity {
127
+ ${enumEntries.join(",\n ")}
128
+ }
129
+
130
+ ${typeEntries.join("\n ")}
131
+
132
+ export interface EntitySchemaMap {
133
+ ${schemaMapEntries.join("\n ")}
134
+ }
135
+ }
124
136
  `;
125
137
  fs.writeFileSync(configOutputPath, configOutputContent);
126
138
  console.log("Successfully generated config.ts!");
@@ -1 +1 @@
1
- {"version":3,"sources":["../cli.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport 'tsx';\nimport 'tsconfig-paths/register.js';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport chokidar from 'chokidar';\n\nfunction kebabToCamel(str: string): string {\n return str.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());\n}\n\nfunction kebabToPascal(kebab: string): string {\n return kebab\n .split('-')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join('');\n}\n\nasync function generateConfigFile(\n configDir: string,\n monoriseOutputDir: string,\n): Promise<string> {\n const configOutputPath = path.join(monoriseOutputDir, 'config.ts');\n const initialConfigContent = `\nexport enum Entity {}\n`;\n fs.writeFileSync(configOutputPath, initialConfigContent);\n\n const files = fs\n .readdirSync(configDir)\n .filter((file) => file.endsWith('.ts') && file !== 'index.ts');\n\n const names = new Set<string>();\n const nameRegex = /^[a-z]+(-[a-z]+)*$/;\n const imports: string[] = [];\n\n const enumEntries: string[] = [];\n const typeEntries: string[] = [];\n const schemaMapEntries: string[] = [];\n const configEntries: string[] = [];\n const schemaEntries: string[] = [];\n const allowedEntityEntries: string[] = [];\n const entityWithEmailAuthEntries: string[] = [];\n\n const relativePathToConfigDir = path.relative(monoriseOutputDir, configDir);\n const importPathPrefix = relativePathToConfigDir\n ? `${relativePathToConfigDir}/`\n : './';\n\n for (const file of files) {\n const fullPath = path.join(configDir, file);\n const module = await import(fullPath);\n const config = module.default;\n\n if (!nameRegex.test(config.name)) {\n throw new Error(\n `Invalid name format: ${config.name} in ${file}. Must be kebab-case.`,\n );\n }\n\n if (names.has(config.name)) {\n throw new Error(`Duplicate name found: ${config.name} in ${file}`);\n }\n names.add(config.name);\n\n const fileName = file.replace(/\\.ts$/, '');\n const variableName = kebabToCamel(fileName);\n imports.push(\n `import ${variableName} from '${importPathPrefix}${fileName}';`,\n );\n\n const enumKey = config.name.toUpperCase().replace(/-/g, '_');\n enumEntries.push(`${enumKey} = '${config.name}'`);\n typeEntries.push(\n `export type ${kebabToPascal(config.name)}Type = z.infer<(typeof ${variableName})['finalSchema']>;`,\n );\n schemaMapEntries.push(\n `[Entity.${enumKey}]: ${kebabToPascal(config.name)}Type;`,\n );\n\n configEntries.push(`[Entity.${enumKey}]: ${kebabToCamel(config.name)},`);\n schemaEntries.push(\n `[Entity.${enumKey}]: ${kebabToCamel(config.name)}.finalSchema,`,\n );\n\n allowedEntityEntries.push(`Entity.${enumKey}`);\n\n if (config.authMethod?.email) {\n entityWithEmailAuthEntries.push(`Entity.${enumKey}`);\n }\n }\n\n const configOutputContent = `\nimport type { z } from 'zod';\n${imports.join('\\n')}\n\nexport enum Entity {\n ${enumEntries.join(',\\n ')}\n}\n\n${typeEntries.join('\\n')}\n\nexport interface EntitySchemaMap {\n ${schemaMapEntries.join('\\n ')}\n}\n\nconst EntityConfig = {\n ${configEntries.join('\\n ')}\n};\n\nconst FormSchema = {\n ${schemaEntries.join('\\n ')}\n};\n\nconst AllowedEntityTypes = [\n ${allowedEntityEntries.join(',\\n ')}\n];\n\nconst EmailAuthEnabledEntities: Entity[] = [${entityWithEmailAuthEntries.join(', ')}];\n\nexport {\n EntityConfig,\n FormSchema,\n AllowedEntityTypes,\n EmailAuthEnabledEntities,\n};\n\nconst config = {\n EntityConfig,\n FormSchema,\n AllowedEntityTypes,\n EmailAuthEnabledEntities,\n};\n\nexport default config;\n\ndeclare module '@monorise/base' {\n export enum Entity {\n ${enumEntries.join(',\\n ')}\n }\n\n ${typeEntries.join('\\n ')}\n\n export interface EntitySchemaMap {\n ${schemaMapEntries.join('\\n ')}\n }\n}\n`;\n\n fs.writeFileSync(configOutputPath, configOutputContent);\n console.log('Successfully generated config.ts!');\n return configOutputPath;\n}\n\nasync function generateHandleFile(\n monoriseConfig: { customRoutes?: string; configDir: string },\n projectRoot: string,\n monoriseOutputDir: string,\n): Promise<string> {\n const handleOutputPath = path.join(monoriseOutputDir, 'handle.ts');\n const customRoutesPath = monoriseConfig.customRoutes;\n\n let routesImportLine = '';\n let appHandlerPayload = '{}'; // Default to an empty object for appHandler if no custom routes\n\n if (customRoutesPath) {\n const absoluteCustomRoutesPath = path.resolve(\n projectRoot,\n customRoutesPath,\n );\n\n if (\n !fs.existsSync(absoluteCustomRoutesPath) &&\n !fs.existsSync(`${absoluteCustomRoutesPath}.ts`) &&\n !fs.existsSync(`${absoluteCustomRoutesPath}.js`)\n ) {\n throw new Error(\n `Custom routes file not found: '${absoluteCustomRoutesPath}'. Please ensure 'customRoutes' in monorise.config.ts points to a valid file.`,\n );\n }\n\n let routesModule;\n try {\n routesModule = await import(absoluteCustomRoutesPath);\n } catch (e: any) {\n throw new Error(\n `Failed to load custom routes file at '${absoluteCustomRoutesPath}'. Ensure it's a valid JavaScript/TypeScript module. Error: ${e.message}`,\n );\n }\n\n const routesExport = routesModule.default;\n\n if (\n !routesExport ||\n routesExport === null ||\n (typeof routesExport === 'object' &&\n !(\n 'get' in routesExport &&\n 'post' in routesExport &&\n 'use' in routesExport\n ))\n ) {\n throw new Error(\n `Custom routes file at '${absoluteCustomRoutesPath}' must default export an instance of Hono (or an object with .get, .post, .use methods). Or a function that consume the dependency container provided by route handler.`,\n );\n }\n\n let relativePathToRoutes = path.relative(\n monoriseOutputDir,\n absoluteCustomRoutesPath,\n );\n relativePathToRoutes = relativePathToRoutes.replace(\n /\\.(ts|js|mjs|cjs)$/,\n '',\n );\n\n // If custom routes are provided, include the import statement and pass 'routes' to appHandler\n routesImportLine = `import routes from '${relativePathToRoutes}';`;\n appHandlerPayload = '{ routes }';\n }\n // If customRoutesPath is not provided, routesImportLine remains empty and appHandlerPayload remains `{}`\n\n const combinedContent = `\nimport CoreFactory from 'monorise/core';\nimport config from './config';\n${routesImportLine ? `${routesImportLine}\\n` : ''}const coreFactory = new CoreFactory(config);\n\nexport const replicationHandler = coreFactory.replicationProcessor;\nexport const mutualHandler = coreFactory.mutualProcessor;\nexport const tagHandler = coreFactory.tagProcessor;\nexport const treeHandler = coreFactory.prejoinProcessor;\nexport const appHandler = coreFactory.appHandler(${appHandlerPayload});\n`;\n fs.writeFileSync(handleOutputPath, combinedContent);\n console.log('Successfully generated handle.ts!');\n\n return handleOutputPath;\n}\n\nasync function generateFiles(rootPath?: string): Promise<string> {\n const baseDir = rootPath ? path.resolve(rootPath) : process.cwd();\n const configFilePathTS = path.join(baseDir, 'monorise.config.ts');\n const configFilePathJS = path.join(baseDir, 'monorise.config.js');\n\n let configFilePath: string;\n if (fs.existsSync(configFilePathTS)) {\n configFilePath = configFilePathTS;\n } else if (fs.existsSync(configFilePathJS)) {\n configFilePath = configFilePathJS;\n } else {\n throw new Error(\n 'Neither monorise.config.ts nor monorise.config.js found in the root of the project.',\n );\n }\n\n const projectRoot = path.dirname(configFilePath);\n const monoriseConfigModule = await import(configFilePath);\n const monoriseConfig = monoriseConfigModule.default;\n\n const configDir = path.resolve(projectRoot, monoriseConfig.configDir);\n const monoriseOutputDir = path.join(projectRoot, '.monorise');\n\n fs.mkdirSync(monoriseOutputDir, { recursive: true });\n\n await generateConfigFile(configDir, monoriseOutputDir);\n await generateHandleFile(monoriseConfig, projectRoot, monoriseOutputDir);\n\n return configDir;\n}\n\nconst MONORISE_LOGO = `\n\n\n\n ░░░░░░░\n ░░▒▒▒░░░░░░▒▒▒░\n ░▒▒░ ░▒▒░\n ░▒▒░ ░▒▒░\n ░▒░ ░▒▒░\n ░▒▒░ ▒▒▒░\n ░▒░░░▒░ ░▒░░▒▒░\n ░▒▒░ ░▒▒▒░ ░▒▒░ ░▒░░\n ░▒▒ ░▒▒░ ░▒▒░ ░▒░ ░▒░ ░▒░\n ░▒▒░ ░▒░ ░▒░░▒▒░░░ ░░▒▒░░▒░ ░▒▒ ░▒░\n ░░▒░ ░▒░ ░▒░ ░▒▒░░▒▒▒▒▒▒░░▒░ ░▒░░ ░▒░ ░▒░\n ░▒░ ░░▒░ ░▒░ ░░░ ░▒░ ░░ ░▒░ ░▒░ ░▒░░ ░░▒░\n ░▒░ ░▒░ ░▒░ ░▒ ░░ ░▒░ ░▒░ ░▒░ ░▒░ ░░░░\n ░░░ ░░░░ ░░░ ░░ ▒░ ░░░ ░░░ ░░░ ░░░ ░░░░\n ░░░ ░░░░ ░░░ ░░░ ░░░ ░░ ░░░ ░░░ ░░░ ░░░░\n ░░░ ░░░ ░░░ ░░░ ░░ ░░ ░░░ ░░░ ░░░ ░░░\n ░░░ ░░░░ ░░░ ░░░ ░░ ░░░ ░░ ░░░ ░░░ ░░░\n ░░ ░░░ ░░░ ░░░ ░░░ ░░ ░░░ ░░░ ░░░ ░░░\n ░░ ░░ ░░ ░░ ░░ ░░░ ░░░ ░░░ ░░░░ ░░░\n ░░░ ░░ ░░░ ░░░ ░░░\n ░░░░░▒░░░░░░░░░▒░░░░░░░░░ ░ ░░ ░░░ ░░░ ░░\n ░░░ ░░░░░░░░░ ░░░ ░░░\n ░░░ ░░░░░░ ░░ ░░░░░▒░░░░░░▒░░░░\n ░░░░░░░░░░░░░░░░░ ░░░░░ ░░░░░░░░ ░░\n ░░░░░░░ ░░░░░░░░░░░░░░ ░░░░ ░░░░░ ░▒░\n ░░░ ░░░░░░░ ░░░░░░ ░░░░░░░░\n ░░░░░░░░░░░░ ░░░░░░ ░░░░ ░░░░░░░░░░░░░\n ░▒▒░░░░░░░░░░░▒▒░░ ░░▒▒▒░░ ░▒▒░░ ░░░░\n ░▒░ ░░▒▒░ ░▒░ ░▒▒░ ░░▒░\n ░▒░ ░░░░▒▒▒▒▒▒▒▒▒▒░░ ░▒░ ▒▒░ ░░▒▒▒░\n ░▒▒▒▒▒░░░ ░░░▒▒▒▒▒░ ▒▒░ ░▒▒▒▒▒▒░\n ░▒▒░ ░▒▒▒▒ ▒▒▒ ▒▒▒\n ░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░ ░▒▒▒▒▒░ ░▒▒\n ▒▒▒ ░░▒▒▒▒▒▒░ ▒▒▒ ░▒▒\n ▒▒▒ ░▒▒▒▒ ░▒▒▒░\n ▒▓▓▓▒▒▒▓▓▒▒▒░ ▒▒▒░░▒▒░\n ▒▓░ ░▒▒▓▓▒░ ▒▓▓░\n ░▒▓░ ░▒▓▒░▒▓▒\n ░▒▓▒░ ░▒▓▓▒\n ░▒▒▓▓▓▓▓▓▒▒░\n\n\n\n`;\n\nasync function runInitCommand(rootPath?: string) {\n const projectRoot = rootPath ? path.resolve(rootPath) : process.cwd();\n console.log(MONORISE_LOGO);\n console.log(`Initializing Monorise project in ${projectRoot}...`);\n\n // 1. Create monorise.config.ts\n const monoriseConfigTsPath = path.join(projectRoot, 'monorise.config.ts');\n const monoriseConfigContent = `\nconst config = {\n configDir: './monorise/entities',\n // custom route file should export default an Hono object.\n // customRoutes: './path/to/custom/routes.ts'\n};\n\nexport default config;\n`;\n if (!fs.existsSync(monoriseConfigTsPath)) {\n fs.writeFileSync(monoriseConfigTsPath, monoriseConfigContent.trimStart());\n console.log(`Created ${path.relative(projectRoot, monoriseConfigTsPath)}`);\n } else {\n console.log(\n `${path.relative(projectRoot, monoriseConfigTsPath)} already exists. Skipping.`,\n );\n }\n\n // 2. Create ./monorise/entities/user.ts\n const monoriseEntitiesDir = path.join(projectRoot, 'monorise', 'entities');\n fs.mkdirSync(monoriseEntitiesDir, { recursive: true });\n\n const userEntityTsPath = path.join(monoriseEntitiesDir, 'user.ts');\n const userEntityContent = `\nimport { createEntityConfig } from 'monorise/base';\nimport { z } from 'zod';\n\nconst baseSchema = z\n .object({\n displayName: z\n .string()\n .min(1, 'Please provide a name for this user account'),\n firstName: z.string().min(1, 'Please provide first name'),\n lastName: z.string().min(1, 'Please provide last name'),\n jobTitle: z.string(),\n })\n .partial();\n\nconst config = createEntityConfig({\n name: 'user',\n baseSchema,\n});\n\nexport default config;\n`;\n if (!fs.existsSync(userEntityTsPath)) {\n fs.writeFileSync(userEntityTsPath, userEntityContent.trimStart());\n console.log(`Created ${path.relative(projectRoot, userEntityTsPath)}`);\n } else {\n console.log(\n `${path.relative(projectRoot, userEntityTsPath)} already exists. Skipping.`,\n );\n }\n\n // 3. Update package.json\n const packageJsonPath = path.join(projectRoot, 'package.json');\n if (fs.existsSync(packageJsonPath)) {\n try {\n const packageJsonContent = fs.readFileSync(packageJsonPath, 'utf8');\n const packageJson = JSON.parse(packageJsonContent);\n\n if (packageJson.type !== 'module') {\n packageJson.type = 'module';\n fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2));\n console.log(\n `Updated 'type' to 'module' in ${path.relative(projectRoot, packageJsonPath)}`,\n );\n } else {\n console.log(\n `'type: \"module\"' already set in ${path.relative(projectRoot, packageJsonPath)}. Skipping.`,\n );\n }\n } catch (error) {\n console.error(\n `Error reading or parsing ${path.relative(projectRoot, packageJsonPath)}:`,\n error,\n );\n }\n } else {\n console.warn(\n `Warning: ${path.relative(projectRoot, packageJsonPath)} not found. Cannot update 'type'.`,\n );\n }\n\n // 4. Add tsconfig path alias for .monorise directory\n const tsconfigPath = path.join(projectRoot, 'tsconfig.json');\n if (fs.existsSync(tsconfigPath)) {\n try {\n const tsconfigContent = fs.readFileSync(tsconfigPath, 'utf8');\n const tsconfig = JSON.parse(tsconfigContent);\n\n if (!tsconfig.compilerOptions) {\n tsconfig.compilerOptions = {};\n }\n if (!tsconfig.compilerOptions.paths) {\n tsconfig.compilerOptions.paths = {};\n }\n\n const pathKey = '#/monorise/*';\n const pathValue = ['./.monorise/*'];\n\n if (!tsconfig.compilerOptions.paths[pathKey]) {\n tsconfig.compilerOptions.paths[pathKey] = pathValue;\n fs.writeFileSync(tsconfigPath, JSON.stringify(tsconfig, null, 2));\n console.log(\n `Added '${pathKey}' path alias in ${path.relative(projectRoot, tsconfigPath)}`,\n );\n } else {\n console.log(\n `'${pathKey}' path alias already set in ${path.relative(projectRoot, tsconfigPath)}. Skipping.`,\n );\n }\n } catch (error) {\n console.error(\n `Error updating ${path.relative(projectRoot, tsconfigPath)}:`,\n error,\n );\n }\n } else {\n console.warn(\n `Warning: ${path.relative(projectRoot, tsconfigPath)} not found. Cannot add path alias.`,\n );\n }\n\n console.log('Monorise initialization complete!');\n}\n\nasync function runDevCommand(configDir: string, rootPath?: string) {\n console.log(MONORISE_LOGO);\n console.log(`Watching for changes in ${configDir}...`);\n const watcher = chokidar.watch(configDir, {\n ignored: (watchedPath: string) => {\n const fileName = path.basename(watchedPath);\n return (\n fileName === 'index.ts' || // Old name, still ignore in case it exists\n fileName === 'config.ts' || // Generated config file\n fileName === 'processors.ts' || // Generated processors file\n fileName === 'app.ts' || // Generated app file\n fileName.startsWith('.') ||\n watchedPath.endsWith('.js') ||\n watchedPath.endsWith('.jsx') ||\n watchedPath.endsWith('.d.ts')\n );\n },\n persistent: true,\n ignoreInitial: true,\n });\n\n watcher.on('add', async (filePath) => {\n console.log(`File ${filePath} has been added. Regenerating...`);\n try {\n await generateFiles(rootPath);\n } catch (err) {\n console.error('Regeneration failed:', err);\n }\n });\n\n watcher.on('change', async (filePath) => {\n console.log(`File ${filePath} has been changed. Regenerating...`);\n try {\n await generateFiles(rootPath);\n } catch (err) {\n console.error('Regeneration failed:', err);\n }\n });\n\n watcher.on('unlink', async (filePath) => {\n console.log(`File ${filePath} has been removed. Regenerating...`);\n try {\n await generateFiles(rootPath);\n } catch (err) {\n console.error('Regeneration failed:', err);\n }\n });\n\n process.on('SIGINT', () => {\n console.log('Monorise dev terminated. Closing watcher and sst dev...');\n watcher.close();\n process.exit(0);\n });\n process.on('SIGTERM', () => {\n console.log('Monorise dev terminated. Closing watcher and sst dev...');\n watcher.close();\n process.exit(0);\n });\n}\n\nasync function runBuildCommand(rootPath?: string) {\n console.log('Starting sst build...');\n await generateFiles(rootPath);\n}\n\nasync function main() {\n const args = process.argv.slice(2);\n const command = args[0];\n\n let rootPath: string | undefined;\n const rootFlagIndex = args.indexOf('--config-root');\n if (rootFlagIndex > -1 && args[rootFlagIndex + 1]) {\n rootPath = args[rootFlagIndex + 1];\n }\n\n try {\n if (command === 'dev') {\n const configDir = await generateFiles(rootPath);\n await runDevCommand(configDir, rootPath);\n } else if (command === 'build') {\n await runBuildCommand(rootPath);\n } else if (command === 'init') {\n await runInitCommand(rootPath);\n } else {\n console.error(\n 'Unknown command. Usage: monorise [dev|build|init] [--config-root <path>]',\n );\n process.exit(1);\n }\n } catch (err) {\n console.error('Monorise process failed:', err);\n process.exit(1);\n }\n}\n\nmain().catch((err) => {\n console.error('Monorise encountered an unhandled error:', err);\n process.exit(1);\n});\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../cli.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport 'tsx';\nimport 'tsconfig-paths/register.js';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport chokidar from 'chokidar';\n\nfunction kebabToCamel(str: string): string {\n return str.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());\n}\n\nfunction kebabToPascal(kebab: string): string {\n return kebab\n .split('-')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join('');\n}\n\nasync function generateConfigFile(\n configDir: string,\n monoriseOutputDir: string,\n): Promise<string> {\n const configOutputPath = path.join(monoriseOutputDir, 'config.ts');\n const initialConfigContent = `\nexport enum Entity {}\n`;\n fs.writeFileSync(configOutputPath, initialConfigContent);\n\n const files = fs\n .readdirSync(configDir)\n .filter((file) => file.endsWith('.ts') && file !== 'index.ts');\n\n const names = new Set<string>();\n const nameRegex = /^[a-z]+(-[a-z]+)*$/;\n const imports: string[] = [];\n\n const enumEntries: string[] = [];\n const typeEntries: string[] = [];\n const schemaMapEntries: string[] = [];\n const configEntries: string[] = [];\n const schemaEntries: string[] = [];\n const allowedEntityEntries: string[] = [];\n const entityWithEmailAuthEntries: string[] = [];\n\n const relativePathToConfigDir = path.relative(monoriseOutputDir, configDir);\n const importPathPrefix = relativePathToConfigDir\n ? `${relativePathToConfigDir}/`\n : './';\n\n for (const file of files) {\n const fullPath = path.join(configDir, file);\n const module = await import(fullPath);\n const config = module.default;\n\n if (!nameRegex.test(config.name)) {\n throw new Error(\n `Invalid name format: ${config.name} in ${file}. Must be kebab-case.`,\n );\n }\n\n if (names.has(config.name)) {\n throw new Error(`Duplicate name found: ${config.name} in ${file}`);\n }\n names.add(config.name);\n\n const fileName = file.replace(/\\.ts$/, '');\n const variableName = kebabToCamel(fileName);\n imports.push(\n `import ${variableName} from '${importPathPrefix}${fileName}';`,\n );\n\n const enumKey = config.name.toUpperCase().replace(/-/g, '_');\n enumEntries.push(`${enumKey} = '${config.name}'`);\n typeEntries.push(\n `export type ${kebabToPascal(config.name)}Type = z.infer<(typeof ${variableName})['finalSchema']>;`,\n );\n schemaMapEntries.push(\n `[Entity.${enumKey}]: ${kebabToPascal(config.name)}Type;`,\n );\n\n configEntries.push(`[Entity.${enumKey}]: ${kebabToCamel(config.name)},`);\n schemaEntries.push(\n `[Entity.${enumKey}]: ${kebabToCamel(config.name)}.finalSchema,`,\n );\n\n allowedEntityEntries.push(`Entity.${enumKey}`);\n\n if (config.authMethod?.email) {\n entityWithEmailAuthEntries.push(`Entity.${enumKey}`);\n }\n }\n\n const configOutputContent = `\nimport type { z } from 'zod';\n${imports.join('\\n')}\n\nexport enum Entity {\n ${enumEntries.join(',\\n ')}\n}\n\n${typeEntries.join('\\n')}\n\nexport interface EntitySchemaMap {\n ${schemaMapEntries.join('\\n ')}\n}\n\nconst EntityConfig = {\n ${configEntries.join('\\n ')}\n};\n\nconst FormSchema = {\n ${schemaEntries.join('\\n ')}\n};\n\nconst AllowedEntityTypes = [\n ${allowedEntityEntries.join(',\\n ')}\n];\n\nconst EmailAuthEnabledEntities: Entity[] = [${entityWithEmailAuthEntries.join(', ')}];\n\nexport {\n EntityConfig,\n FormSchema,\n AllowedEntityTypes,\n EmailAuthEnabledEntities,\n};\n\nconst config = {\n EntityConfig,\n FormSchema,\n AllowedEntityTypes,\n EmailAuthEnabledEntities,\n};\n\nexport default config;\n\ndeclare module '@monorise/base' {\n export enum Entity {\n ${enumEntries.join(',\\n ')}\n }\n\n ${typeEntries.join('\\n ')}\n\n export interface EntitySchemaMap {\n ${schemaMapEntries.join('\\n ')}\n }\n}\n\ndeclare module 'monorise/base' {\n export enum Entity {\n ${enumEntries.join(',\\n ')}\n }\n\n ${typeEntries.join('\\n ')}\n\n export interface EntitySchemaMap {\n ${schemaMapEntries.join('\\n ')}\n }\n}\n`;\n\n fs.writeFileSync(configOutputPath, configOutputContent);\n console.log('Successfully generated config.ts!');\n return configOutputPath;\n}\n\nasync function generateHandleFile(\n monoriseConfig: { customRoutes?: string; configDir: string },\n projectRoot: string,\n monoriseOutputDir: string,\n): Promise<string> {\n const handleOutputPath = path.join(monoriseOutputDir, 'handle.ts');\n const customRoutesPath = monoriseConfig.customRoutes;\n\n let routesImportLine = '';\n let appHandlerPayload = '{}'; // Default to an empty object for appHandler if no custom routes\n\n if (customRoutesPath) {\n const absoluteCustomRoutesPath = path.resolve(\n projectRoot,\n customRoutesPath,\n );\n\n if (\n !fs.existsSync(absoluteCustomRoutesPath) &&\n !fs.existsSync(`${absoluteCustomRoutesPath}.ts`) &&\n !fs.existsSync(`${absoluteCustomRoutesPath}.js`)\n ) {\n throw new Error(\n `Custom routes file not found: '${absoluteCustomRoutesPath}'. Please ensure 'customRoutes' in monorise.config.ts points to a valid file.`,\n );\n }\n\n let routesModule;\n try {\n routesModule = await import(absoluteCustomRoutesPath);\n } catch (e: any) {\n throw new Error(\n `Failed to load custom routes file at '${absoluteCustomRoutesPath}'. Ensure it's a valid JavaScript/TypeScript module. Error: ${e.message}`,\n );\n }\n\n const routesExport = routesModule.default;\n\n if (\n !routesExport ||\n routesExport === null ||\n (typeof routesExport === 'object' &&\n !(\n 'get' in routesExport &&\n 'post' in routesExport &&\n 'use' in routesExport\n ))\n ) {\n throw new Error(\n `Custom routes file at '${absoluteCustomRoutesPath}' must default export an instance of Hono (or an object with .get, .post, .use methods). Or a function that consume the dependency container provided by route handler.`,\n );\n }\n\n let relativePathToRoutes = path.relative(\n monoriseOutputDir,\n absoluteCustomRoutesPath,\n );\n relativePathToRoutes = relativePathToRoutes.replace(\n /\\.(ts|js|mjs|cjs)$/,\n '',\n );\n\n // If custom routes are provided, include the import statement and pass 'routes' to appHandler\n routesImportLine = `import routes from '${relativePathToRoutes}';`;\n appHandlerPayload = '{ routes }';\n }\n // If customRoutesPath is not provided, routesImportLine remains empty and appHandlerPayload remains `{}`\n\n const combinedContent = `\nimport CoreFactory from 'monorise/core';\nimport config from './config';\n${routesImportLine ? `${routesImportLine}\\n` : ''}const coreFactory = new CoreFactory(config);\n\nexport const replicationHandler = coreFactory.replicationProcessor;\nexport const mutualHandler = coreFactory.mutualProcessor;\nexport const tagHandler = coreFactory.tagProcessor;\nexport const treeHandler = coreFactory.prejoinProcessor;\nexport const appHandler = coreFactory.appHandler(${appHandlerPayload});\n`;\n fs.writeFileSync(handleOutputPath, combinedContent);\n console.log('Successfully generated handle.ts!');\n\n return handleOutputPath;\n}\n\nasync function generateFiles(rootPath?: string): Promise<string> {\n const baseDir = rootPath ? path.resolve(rootPath) : process.cwd();\n const configFilePathTS = path.join(baseDir, 'monorise.config.ts');\n const configFilePathJS = path.join(baseDir, 'monorise.config.js');\n\n let configFilePath: string;\n if (fs.existsSync(configFilePathTS)) {\n configFilePath = configFilePathTS;\n } else if (fs.existsSync(configFilePathJS)) {\n configFilePath = configFilePathJS;\n } else {\n throw new Error(\n 'Neither monorise.config.ts nor monorise.config.js found in the root of the project.',\n );\n }\n\n const projectRoot = path.dirname(configFilePath);\n const monoriseConfigModule = await import(configFilePath);\n const monoriseConfig = monoriseConfigModule.default;\n\n const configDir = path.resolve(projectRoot, monoriseConfig.configDir);\n const monoriseOutputDir = path.join(projectRoot, '.monorise');\n\n fs.mkdirSync(monoriseOutputDir, { recursive: true });\n\n await generateConfigFile(configDir, monoriseOutputDir);\n await generateHandleFile(monoriseConfig, projectRoot, monoriseOutputDir);\n\n return configDir;\n}\n\nconst MONORISE_LOGO = `\n\n\n\n ░░░░░░░\n ░░▒▒▒░░░░░░▒▒▒░\n ░▒▒░ ░▒▒░\n ░▒▒░ ░▒▒░\n ░▒░ ░▒▒░\n ░▒▒░ ▒▒▒░\n ░▒░░░▒░ ░▒░░▒▒░\n ░▒▒░ ░▒▒▒░ ░▒▒░ ░▒░░\n ░▒▒ ░▒▒░ ░▒▒░ ░▒░ ░▒░ ░▒░\n ░▒▒░ ░▒░ ░▒░░▒▒░░░ ░░▒▒░░▒░ ░▒▒ ░▒░\n ░░▒░ ░▒░ ░▒░ ░▒▒░░▒▒▒▒▒▒░░▒░ ░▒░░ ░▒░ ░▒░\n ░▒░ ░░▒░ ░▒░ ░░░ ░▒░ ░░ ░▒░ ░▒░ ░▒░░ ░░▒░\n ░▒░ ░▒░ ░▒░ ░▒ ░░ ░▒░ ░▒░ ░▒░ ░▒░ ░░░░\n ░░░ ░░░░ ░░░ ░░ ▒░ ░░░ ░░░ ░░░ ░░░ ░░░░\n ░░░ ░░░░ ░░░ ░░░ ░░░ ░░ ░░░ ░░░ ░░░ ░░░░\n ░░░ ░░░ ░░░ ░░░ ░░ ░░ ░░░ ░░░ ░░░ ░░░\n ░░░ ░░░░ ░░░ ░░░ ░░ ░░░ ░░ ░░░ ░░░ ░░░\n ░░ ░░░ ░░░ ░░░ ░░░ ░░ ░░░ ░░░ ░░░ ░░░\n ░░ ░░ ░░ ░░ ░░ ░░░ ░░░ ░░░ ░░░░ ░░░\n ░░░ ░░ ░░░ ░░░ ░░░\n ░░░░░▒░░░░░░░░░▒░░░░░░░░░ ░ ░░ ░░░ ░░░ ░░\n ░░░ ░░░░░░░░░ ░░░ ░░░\n ░░░ ░░░░░░ ░░ ░░░░░▒░░░░░░▒░░░░\n ░░░░░░░░░░░░░░░░░ ░░░░░ ░░░░░░░░ ░░\n ░░░░░░░ ░░░░░░░░░░░░░░ ░░░░ ░░░░░ ░▒░\n ░░░ ░░░░░░░ ░░░░░░ ░░░░░░░░\n ░░░░░░░░░░░░ ░░░░░░ ░░░░ ░░░░░░░░░░░░░\n ░▒▒░░░░░░░░░░░▒▒░░ ░░▒▒▒░░ ░▒▒░░ ░░░░\n ░▒░ ░░▒▒░ ░▒░ ░▒▒░ ░░▒░\n ░▒░ ░░░░▒▒▒▒▒▒▒▒▒▒░░ ░▒░ ▒▒░ ░░▒▒▒░\n ░▒▒▒▒▒░░░ ░░░▒▒▒▒▒░ ▒▒░ ░▒▒▒▒▒▒░\n ░▒▒░ ░▒▒▒▒ ▒▒▒ ▒▒▒\n ░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░ ░▒▒▒▒▒░ ░▒▒\n ▒▒▒ ░░▒▒▒▒▒▒░ ▒▒▒ ░▒▒\n ▒▒▒ ░▒▒▒▒ ░▒▒▒░\n ▒▓▓▓▒▒▒▓▓▒▒▒░ ▒▒▒░░▒▒░\n ▒▓░ ░▒▒▓▓▒░ ▒▓▓░\n ░▒▓░ ░▒▓▒░▒▓▒\n ░▒▓▒░ ░▒▓▓▒\n ░▒▒▓▓▓▓▓▓▒▒░\n\n\n\n`;\n\nasync function runInitCommand(rootPath?: string) {\n const projectRoot = rootPath ? path.resolve(rootPath) : process.cwd();\n console.log(MONORISE_LOGO);\n console.log(`Initializing Monorise project in ${projectRoot}...`);\n\n // 1. Create monorise.config.ts\n const monoriseConfigTsPath = path.join(projectRoot, 'monorise.config.ts');\n const monoriseConfigContent = `\nconst config = {\n configDir: './monorise/entities',\n // custom route file should export default an Hono object.\n // customRoutes: './path/to/custom/routes.ts'\n};\n\nexport default config;\n`;\n if (!fs.existsSync(monoriseConfigTsPath)) {\n fs.writeFileSync(monoriseConfigTsPath, monoriseConfigContent.trimStart());\n console.log(`Created ${path.relative(projectRoot, monoriseConfigTsPath)}`);\n } else {\n console.log(\n `${path.relative(projectRoot, monoriseConfigTsPath)} already exists. Skipping.`,\n );\n }\n\n // 2. Create ./monorise/entities/user.ts\n const monoriseEntitiesDir = path.join(projectRoot, 'monorise', 'entities');\n fs.mkdirSync(monoriseEntitiesDir, { recursive: true });\n\n const userEntityTsPath = path.join(monoriseEntitiesDir, 'user.ts');\n const userEntityContent = `\nimport { createEntityConfig } from 'monorise/base';\nimport { z } from 'zod';\n\nconst baseSchema = z\n .object({\n displayName: z\n .string()\n .min(1, 'Please provide a name for this user account'),\n firstName: z.string().min(1, 'Please provide first name'),\n lastName: z.string().min(1, 'Please provide last name'),\n jobTitle: z.string(),\n })\n .partial();\n\nconst config = createEntityConfig({\n name: 'user',\n baseSchema,\n});\n\nexport default config;\n`;\n if (!fs.existsSync(userEntityTsPath)) {\n fs.writeFileSync(userEntityTsPath, userEntityContent.trimStart());\n console.log(`Created ${path.relative(projectRoot, userEntityTsPath)}`);\n } else {\n console.log(\n `${path.relative(projectRoot, userEntityTsPath)} already exists. Skipping.`,\n );\n }\n\n // 3. Update package.json\n const packageJsonPath = path.join(projectRoot, 'package.json');\n if (fs.existsSync(packageJsonPath)) {\n try {\n const packageJsonContent = fs.readFileSync(packageJsonPath, 'utf8');\n const packageJson = JSON.parse(packageJsonContent);\n\n if (packageJson.type !== 'module') {\n packageJson.type = 'module';\n fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2));\n console.log(\n `Updated 'type' to 'module' in ${path.relative(projectRoot, packageJsonPath)}`,\n );\n } else {\n console.log(\n `'type: \"module\"' already set in ${path.relative(projectRoot, packageJsonPath)}. Skipping.`,\n );\n }\n } catch (error) {\n console.error(\n `Error reading or parsing ${path.relative(projectRoot, packageJsonPath)}:`,\n error,\n );\n }\n } else {\n console.warn(\n `Warning: ${path.relative(projectRoot, packageJsonPath)} not found. Cannot update 'type'.`,\n );\n }\n\n // 4. Add tsconfig path alias for .monorise directory\n const tsconfigPath = path.join(projectRoot, 'tsconfig.json');\n if (fs.existsSync(tsconfigPath)) {\n try {\n const tsconfigContent = fs.readFileSync(tsconfigPath, 'utf8');\n const tsconfig = JSON.parse(tsconfigContent);\n\n if (!tsconfig.compilerOptions) {\n tsconfig.compilerOptions = {};\n }\n if (!tsconfig.compilerOptions.paths) {\n tsconfig.compilerOptions.paths = {};\n }\n\n const pathKey = '#/monorise/*';\n const pathValue = ['./.monorise/*'];\n\n if (!tsconfig.compilerOptions.paths[pathKey]) {\n tsconfig.compilerOptions.paths[pathKey] = pathValue;\n fs.writeFileSync(tsconfigPath, JSON.stringify(tsconfig, null, 2));\n console.log(\n `Added '${pathKey}' path alias in ${path.relative(projectRoot, tsconfigPath)}`,\n );\n } else {\n console.log(\n `'${pathKey}' path alias already set in ${path.relative(projectRoot, tsconfigPath)}. Skipping.`,\n );\n }\n } catch (error) {\n console.error(\n `Error updating ${path.relative(projectRoot, tsconfigPath)}:`,\n error,\n );\n }\n } else {\n console.warn(\n `Warning: ${path.relative(projectRoot, tsconfigPath)} not found. Cannot add path alias.`,\n );\n }\n\n console.log('Monorise initialization complete!');\n}\n\nasync function runDevCommand(configDir: string, rootPath?: string) {\n console.log(MONORISE_LOGO);\n console.log(`Watching for changes in ${configDir}...`);\n const watcher = chokidar.watch(configDir, {\n ignored: (watchedPath: string) => {\n const fileName = path.basename(watchedPath);\n return (\n fileName === 'index.ts' || // Old name, still ignore in case it exists\n fileName === 'config.ts' || // Generated config file\n fileName === 'processors.ts' || // Generated processors file\n fileName === 'app.ts' || // Generated app file\n fileName.startsWith('.') ||\n watchedPath.endsWith('.js') ||\n watchedPath.endsWith('.jsx') ||\n watchedPath.endsWith('.d.ts')\n );\n },\n persistent: true,\n ignoreInitial: true,\n });\n\n watcher.on('add', async (filePath) => {\n console.log(`File ${filePath} has been added. Regenerating...`);\n try {\n await generateFiles(rootPath);\n } catch (err) {\n console.error('Regeneration failed:', err);\n }\n });\n\n watcher.on('change', async (filePath) => {\n console.log(`File ${filePath} has been changed. Regenerating...`);\n try {\n await generateFiles(rootPath);\n } catch (err) {\n console.error('Regeneration failed:', err);\n }\n });\n\n watcher.on('unlink', async (filePath) => {\n console.log(`File ${filePath} has been removed. Regenerating...`);\n try {\n await generateFiles(rootPath);\n } catch (err) {\n console.error('Regeneration failed:', err);\n }\n });\n\n process.on('SIGINT', () => {\n console.log('Monorise dev terminated. Closing watcher and sst dev...');\n watcher.close();\n process.exit(0);\n });\n process.on('SIGTERM', () => {\n console.log('Monorise dev terminated. Closing watcher and sst dev...');\n watcher.close();\n process.exit(0);\n });\n}\n\nasync function runBuildCommand(rootPath?: string) {\n console.log('Starting sst build...');\n await generateFiles(rootPath);\n}\n\nasync function main() {\n const args = process.argv.slice(2);\n const command = args[0];\n\n let rootPath: string | undefined;\n const rootFlagIndex = args.indexOf('--config-root');\n if (rootFlagIndex > -1 && args[rootFlagIndex + 1]) {\n rootPath = args[rootFlagIndex + 1];\n }\n\n try {\n if (command === 'dev') {\n const configDir = await generateFiles(rootPath);\n await runDevCommand(configDir, rootPath);\n } else if (command === 'build') {\n await runBuildCommand(rootPath);\n } else if (command === 'init') {\n await runInitCommand(rootPath);\n } else {\n console.error(\n 'Unknown command. Usage: monorise [dev|build|init] [--config-root <path>]',\n );\n process.exit(1);\n }\n } catch (err) {\n console.error('Monorise process failed:', err);\n process.exit(1);\n }\n}\n\nmain().catch((err) => {\n console.error('Monorise encountered an unhandled error:', err);\n process.exit(1);\n});\n"],"mappings":";;;AAEA,OAAO;AACP,OAAO;AACP,OAAO,QAAQ;AACf,OAAO,UAAU;AACjB,OAAO,cAAc;AAErB,SAAS,aAAa,KAAqB;AACzC,SAAO,IAAI,QAAQ,aAAa,CAAC,GAAG,WAAW,OAAO,YAAY,CAAC;AACrE;AAEA,SAAS,cAAc,OAAuB;AAC5C,SAAO,MACJ,MAAM,GAAG,EACT,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,EAAE,YAAY,IAAI,KAAK,MAAM,CAAC,CAAC,EAC1D,KAAK,EAAE;AACZ;AAEA,eAAe,mBACb,WACA,mBACiB;AACjB,QAAM,mBAAmB,KAAK,KAAK,mBAAmB,WAAW;AACjE,QAAM,uBAAuB;AAAA;AAAA;AAG7B,KAAG,cAAc,kBAAkB,oBAAoB;AAEvD,QAAM,QAAQ,GACX,YAAY,SAAS,EACrB,OAAO,CAAC,SAAS,KAAK,SAAS,KAAK,KAAK,SAAS,UAAU;AAE/D,QAAM,QAAQ,oBAAI,IAAY;AAC9B,QAAM,YAAY;AAClB,QAAM,UAAoB,CAAC;AAE3B,QAAM,cAAwB,CAAC;AAC/B,QAAM,cAAwB,CAAC;AAC/B,QAAM,mBAA6B,CAAC;AACpC,QAAM,gBAA0B,CAAC;AACjC,QAAM,gBAA0B,CAAC;AACjC,QAAM,uBAAiC,CAAC;AACxC,QAAM,6BAAuC,CAAC;AAE9C,QAAM,0BAA0B,KAAK,SAAS,mBAAmB,SAAS;AAC1E,QAAM,mBAAmB,0BACrB,GAAG,uBAAuB,MAC1B;AAEJ,aAAW,QAAQ,OAAO;AACxB,UAAM,WAAW,KAAK,KAAK,WAAW,IAAI;AAC1C,UAAM,SAAS,MAAM,OAAO;AAC5B,UAAM,SAAS,OAAO;AAEtB,QAAI,CAAC,UAAU,KAAK,OAAO,IAAI,GAAG;AAChC,YAAM,IAAI;AAAA,QACR,wBAAwB,OAAO,IAAI,OAAO,IAAI;AAAA,MAChD;AAAA,IACF;AAEA,QAAI,MAAM,IAAI,OAAO,IAAI,GAAG;AAC1B,YAAM,IAAI,MAAM,yBAAyB,OAAO,IAAI,OAAO,IAAI,EAAE;AAAA,IACnE;AACA,UAAM,IAAI,OAAO,IAAI;AAErB,UAAM,WAAW,KAAK,QAAQ,SAAS,EAAE;AACzC,UAAM,eAAe,aAAa,QAAQ;AAC1C,YAAQ;AAAA,MACN,UAAU,YAAY,UAAU,gBAAgB,GAAG,QAAQ;AAAA,IAC7D;AAEA,UAAM,UAAU,OAAO,KAAK,YAAY,EAAE,QAAQ,MAAM,GAAG;AAC3D,gBAAY,KAAK,GAAG,OAAO,OAAO,OAAO,IAAI,GAAG;AAChD,gBAAY;AAAA,MACV,eAAe,cAAc,OAAO,IAAI,CAAC,0BAA0B,YAAY;AAAA,IACjF;AACA,qBAAiB;AAAA,MACf,WAAW,OAAO,MAAM,cAAc,OAAO,IAAI,CAAC;AAAA,IACpD;AAEA,kBAAc,KAAK,WAAW,OAAO,MAAM,aAAa,OAAO,IAAI,CAAC,GAAG;AACvE,kBAAc;AAAA,MACZ,WAAW,OAAO,MAAM,aAAa,OAAO,IAAI,CAAC;AAAA,IACnD;AAEA,yBAAqB,KAAK,UAAU,OAAO,EAAE;AAE7C,QAAI,OAAO,YAAY,OAAO;AAC5B,iCAA2B,KAAK,UAAU,OAAO,EAAE;AAAA,IACrD;AAAA,EACF;AAEA,QAAM,sBAAsB;AAAA;AAAA,EAE5B,QAAQ,KAAK,IAAI,CAAC;AAAA;AAAA;AAAA,IAGhB,YAAY,KAAK,OAAO,CAAC;AAAA;AAAA;AAAA,EAG3B,YAAY,KAAK,IAAI,CAAC;AAAA;AAAA;AAAA,IAGpB,iBAAiB,KAAK,MAAM,CAAC;AAAA;AAAA;AAAA;AAAA,IAI7B,cAAc,KAAK,MAAM,CAAC;AAAA;AAAA;AAAA;AAAA,IAI1B,cAAc,KAAK,MAAM,CAAC;AAAA;AAAA;AAAA;AAAA,IAI1B,qBAAqB,KAAK,OAAO,CAAC;AAAA;AAAA;AAAA,8CAGQ,2BAA2B,KAAK,IAAI,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAoB7E,YAAY,KAAK,SAAS,CAAC;AAAA;AAAA;AAAA,IAG7B,YAAY,KAAK,MAAM,CAAC;AAAA;AAAA;AAAA,MAGtB,iBAAiB,KAAK,QAAQ,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAM/B,YAAY,KAAK,SAAS,CAAC;AAAA;AAAA;AAAA,IAG7B,YAAY,KAAK,MAAM,CAAC;AAAA;AAAA;AAAA,MAGtB,iBAAiB,KAAK,QAAQ,CAAC;AAAA;AAAA;AAAA;AAKnC,KAAG,cAAc,kBAAkB,mBAAmB;AACtD,UAAQ,IAAI,mCAAmC;AAC/C,SAAO;AACT;AAEA,eAAe,mBACb,gBACA,aACA,mBACiB;AACjB,QAAM,mBAAmB,KAAK,KAAK,mBAAmB,WAAW;AACjE,QAAM,mBAAmB,eAAe;AAExC,MAAI,mBAAmB;AACvB,MAAI,oBAAoB;AAExB,MAAI,kBAAkB;AACpB,UAAM,2BAA2B,KAAK;AAAA,MACpC;AAAA,MACA;AAAA,IACF;AAEA,QACE,CAAC,GAAG,WAAW,wBAAwB,KACvC,CAAC,GAAG,WAAW,GAAG,wBAAwB,KAAK,KAC/C,CAAC,GAAG,WAAW,GAAG,wBAAwB,KAAK,GAC/C;AACA,YAAM,IAAI;AAAA,QACR,kCAAkC,wBAAwB;AAAA,MAC5D;AAAA,IACF;AAEA,QAAI;AACJ,QAAI;AACF,qBAAe,MAAM,OAAO;AAAA,IAC9B,SAAS,GAAQ;AACf,YAAM,IAAI;AAAA,QACR,yCAAyC,wBAAwB,+DAA+D,EAAE,OAAO;AAAA,MAC3I;AAAA,IACF;AAEA,UAAM,eAAe,aAAa;AAElC,QACE,CAAC,gBACD,iBAAiB,QAChB,OAAO,iBAAiB,YACvB,EACE,SAAS,gBACT,UAAU,gBACV,SAAS,eAEb;AACA,YAAM,IAAI;AAAA,QACR,0BAA0B,wBAAwB;AAAA,MACpD;AAAA,IACF;AAEA,QAAI,uBAAuB,KAAK;AAAA,MAC9B;AAAA,MACA;AAAA,IACF;AACA,2BAAuB,qBAAqB;AAAA,MAC1C;AAAA,MACA;AAAA,IACF;AAGA,uBAAmB,uBAAuB,oBAAoB;AAC9D,wBAAoB;AAAA,EACtB;AAGA,QAAM,kBAAkB;AAAA;AAAA;AAAA,EAGxB,mBAAmB,GAAG,gBAAgB;AAAA,IAAO,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mDAME,iBAAiB;AAAA;AAElE,KAAG,cAAc,kBAAkB,eAAe;AAClD,UAAQ,IAAI,mCAAmC;AAE/C,SAAO;AACT;AAEA,eAAe,cAAc,UAAoC;AAC/D,QAAM,UAAU,WAAW,KAAK,QAAQ,QAAQ,IAAI,QAAQ,IAAI;AAChE,QAAM,mBAAmB,KAAK,KAAK,SAAS,oBAAoB;AAChE,QAAM,mBAAmB,KAAK,KAAK,SAAS,oBAAoB;AAEhE,MAAI;AACJ,MAAI,GAAG,WAAW,gBAAgB,GAAG;AACnC,qBAAiB;AAAA,EACnB,WAAW,GAAG,WAAW,gBAAgB,GAAG;AAC1C,qBAAiB;AAAA,EACnB,OAAO;AACL,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,QAAM,cAAc,KAAK,QAAQ,cAAc;AAC/C,QAAM,uBAAuB,MAAM,OAAO;AAC1C,QAAM,iBAAiB,qBAAqB;AAE5C,QAAM,YAAY,KAAK,QAAQ,aAAa,eAAe,SAAS;AACpE,QAAM,oBAAoB,KAAK,KAAK,aAAa,WAAW;AAE5D,KAAG,UAAU,mBAAmB,EAAE,WAAW,KAAK,CAAC;AAEnD,QAAM,mBAAmB,WAAW,iBAAiB;AACrD,QAAM,mBAAmB,gBAAgB,aAAa,iBAAiB;AAEvE,SAAO;AACT;AAEA,IAAM,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiDtB,eAAe,eAAe,UAAmB;AAC/C,QAAM,cAAc,WAAW,KAAK,QAAQ,QAAQ,IAAI,QAAQ,IAAI;AACpE,UAAQ,IAAI,aAAa;AACzB,UAAQ,IAAI,oCAAoC,WAAW,KAAK;AAGhE,QAAM,uBAAuB,KAAK,KAAK,aAAa,oBAAoB;AACxE,QAAM,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAS9B,MAAI,CAAC,GAAG,WAAW,oBAAoB,GAAG;AACxC,OAAG,cAAc,sBAAsB,sBAAsB,UAAU,CAAC;AACxE,YAAQ,IAAI,WAAW,KAAK,SAAS,aAAa,oBAAoB,CAAC,EAAE;AAAA,EAC3E,OAAO;AACL,YAAQ;AAAA,MACN,GAAG,KAAK,SAAS,aAAa,oBAAoB,CAAC;AAAA,IACrD;AAAA,EACF;AAGA,QAAM,sBAAsB,KAAK,KAAK,aAAa,YAAY,UAAU;AACzE,KAAG,UAAU,qBAAqB,EAAE,WAAW,KAAK,CAAC;AAErD,QAAM,mBAAmB,KAAK,KAAK,qBAAqB,SAAS;AACjE,QAAM,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsB1B,MAAI,CAAC,GAAG,WAAW,gBAAgB,GAAG;AACpC,OAAG,cAAc,kBAAkB,kBAAkB,UAAU,CAAC;AAChE,YAAQ,IAAI,WAAW,KAAK,SAAS,aAAa,gBAAgB,CAAC,EAAE;AAAA,EACvE,OAAO;AACL,YAAQ;AAAA,MACN,GAAG,KAAK,SAAS,aAAa,gBAAgB,CAAC;AAAA,IACjD;AAAA,EACF;AAGA,QAAM,kBAAkB,KAAK,KAAK,aAAa,cAAc;AAC7D,MAAI,GAAG,WAAW,eAAe,GAAG;AAClC,QAAI;AACF,YAAM,qBAAqB,GAAG,aAAa,iBAAiB,MAAM;AAClE,YAAM,cAAc,KAAK,MAAM,kBAAkB;AAEjD,UAAI,YAAY,SAAS,UAAU;AACjC,oBAAY,OAAO;AACnB,WAAG,cAAc,iBAAiB,KAAK,UAAU,aAAa,MAAM,CAAC,CAAC;AACtE,gBAAQ;AAAA,UACN,iCAAiC,KAAK,SAAS,aAAa,eAAe,CAAC;AAAA,QAC9E;AAAA,MACF,OAAO;AACL,gBAAQ;AAAA,UACN,mCAAmC,KAAK,SAAS,aAAa,eAAe,CAAC;AAAA,QAChF;AAAA,MACF;AAAA,IACF,SAAS,OAAO;AACd,cAAQ;AAAA,QACN,4BAA4B,KAAK,SAAS,aAAa,eAAe,CAAC;AAAA,QACvE;AAAA,MACF;AAAA,IACF;AAAA,EACF,OAAO;AACL,YAAQ;AAAA,MACN,YAAY,KAAK,SAAS,aAAa,eAAe,CAAC;AAAA,IACzD;AAAA,EACF;AAGA,QAAM,eAAe,KAAK,KAAK,aAAa,eAAe;AAC3D,MAAI,GAAG,WAAW,YAAY,GAAG;AAC/B,QAAI;AACF,YAAM,kBAAkB,GAAG,aAAa,cAAc,MAAM;AAC5D,YAAM,WAAW,KAAK,MAAM,eAAe;AAE3C,UAAI,CAAC,SAAS,iBAAiB;AAC7B,iBAAS,kBAAkB,CAAC;AAAA,MAC9B;AACA,UAAI,CAAC,SAAS,gBAAgB,OAAO;AACnC,iBAAS,gBAAgB,QAAQ,CAAC;AAAA,MACpC;AAEA,YAAM,UAAU;AAChB,YAAM,YAAY,CAAC,eAAe;AAElC,UAAI,CAAC,SAAS,gBAAgB,MAAM,OAAO,GAAG;AAC5C,iBAAS,gBAAgB,MAAM,OAAO,IAAI;AAC1C,WAAG,cAAc,cAAc,KAAK,UAAU,UAAU,MAAM,CAAC,CAAC;AAChE,gBAAQ;AAAA,UACN,UAAU,OAAO,mBAAmB,KAAK,SAAS,aAAa,YAAY,CAAC;AAAA,QAC9E;AAAA,MACF,OAAO;AACL,gBAAQ;AAAA,UACN,IAAI,OAAO,+BAA+B,KAAK,SAAS,aAAa,YAAY,CAAC;AAAA,QACpF;AAAA,MACF;AAAA,IACF,SAAS,OAAO;AACd,cAAQ;AAAA,QACN,kBAAkB,KAAK,SAAS,aAAa,YAAY,CAAC;AAAA,QAC1D;AAAA,MACF;AAAA,IACF;AAAA,EACF,OAAO;AACL,YAAQ;AAAA,MACN,YAAY,KAAK,SAAS,aAAa,YAAY,CAAC;AAAA,IACtD;AAAA,EACF;AAEA,UAAQ,IAAI,mCAAmC;AACjD;AAEA,eAAe,cAAc,WAAmB,UAAmB;AACjE,UAAQ,IAAI,aAAa;AACzB,UAAQ,IAAI,2BAA2B,SAAS,KAAK;AACrD,QAAM,UAAU,SAAS,MAAM,WAAW;AAAA,IACxC,SAAS,CAAC,gBAAwB;AAChC,YAAM,WAAW,KAAK,SAAS,WAAW;AAC1C,aACE,aAAa;AAAA,MACb,aAAa;AAAA,MACb,aAAa;AAAA,MACb,aAAa;AAAA,MACb,SAAS,WAAW,GAAG,KACvB,YAAY,SAAS,KAAK,KAC1B,YAAY,SAAS,MAAM,KAC3B,YAAY,SAAS,OAAO;AAAA,IAEhC;AAAA,IACA,YAAY;AAAA,IACZ,eAAe;AAAA,EACjB,CAAC;AAED,UAAQ,GAAG,OAAO,OAAO,aAAa;AACpC,YAAQ,IAAI,QAAQ,QAAQ,kCAAkC;AAC9D,QAAI;AACF,YAAM,cAAc,QAAQ;AAAA,IAC9B,SAAS,KAAK;AACZ,cAAQ,MAAM,wBAAwB,GAAG;AAAA,IAC3C;AAAA,EACF,CAAC;AAED,UAAQ,GAAG,UAAU,OAAO,aAAa;AACvC,YAAQ,IAAI,QAAQ,QAAQ,oCAAoC;AAChE,QAAI;AACF,YAAM,cAAc,QAAQ;AAAA,IAC9B,SAAS,KAAK;AACZ,cAAQ,MAAM,wBAAwB,GAAG;AAAA,IAC3C;AAAA,EACF,CAAC;AAED,UAAQ,GAAG,UAAU,OAAO,aAAa;AACvC,YAAQ,IAAI,QAAQ,QAAQ,oCAAoC;AAChE,QAAI;AACF,YAAM,cAAc,QAAQ;AAAA,IAC9B,SAAS,KAAK;AACZ,cAAQ,MAAM,wBAAwB,GAAG;AAAA,IAC3C;AAAA,EACF,CAAC;AAED,UAAQ,GAAG,UAAU,MAAM;AACzB,YAAQ,IAAI,yDAAyD;AACrE,YAAQ,MAAM;AACd,YAAQ,KAAK,CAAC;AAAA,EAChB,CAAC;AACD,UAAQ,GAAG,WAAW,MAAM;AAC1B,YAAQ,IAAI,yDAAyD;AACrE,YAAQ,MAAM;AACd,YAAQ,KAAK,CAAC;AAAA,EAChB,CAAC;AACH;AAEA,eAAe,gBAAgB,UAAmB;AAChD,UAAQ,IAAI,uBAAuB;AACnC,QAAM,cAAc,QAAQ;AAC9B;AAEA,eAAe,OAAO;AACpB,QAAM,OAAO,QAAQ,KAAK,MAAM,CAAC;AACjC,QAAM,UAAU,KAAK,CAAC;AAEtB,MAAI;AACJ,QAAM,gBAAgB,KAAK,QAAQ,eAAe;AAClD,MAAI,gBAAgB,MAAM,KAAK,gBAAgB,CAAC,GAAG;AACjD,eAAW,KAAK,gBAAgB,CAAC;AAAA,EACnC;AAEA,MAAI;AACF,QAAI,YAAY,OAAO;AACrB,YAAM,YAAY,MAAM,cAAc,QAAQ;AAC9C,YAAM,cAAc,WAAW,QAAQ;AAAA,IACzC,WAAW,YAAY,SAAS;AAC9B,YAAM,gBAAgB,QAAQ;AAAA,IAChC,WAAW,YAAY,QAAQ;AAC7B,YAAM,eAAe,QAAQ;AAAA,IAC/B,OAAO;AACL,cAAQ;AAAA,QACN;AAAA,MACF;AACA,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF,SAAS,KAAK;AACZ,YAAQ,MAAM,4BAA4B,GAAG;AAC7C,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;AAEA,KAAK,EAAE,MAAM,CAAC,QAAQ;AACpB,UAAQ,MAAM,4CAA4C,GAAG;AAC7D,UAAQ,KAAK,CAAC;AAChB,CAAC;","names":[]}
@@ -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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"}
@@ -645,7 +645,7 @@ var initCoreActions = (monoriseStore, appActions, coreService2) => {
645
645
  const { data } = await entityService.createEntity(entity, opts);
646
646
  monoriseStore.setState(
647
647
  produce4((state) => {
648
- var _a2, _b;
648
+ var _a2, _b, _c, _d;
649
649
  state.entity[entityType].dataMap.set(data.entityId, data);
650
650
  const tagConfigs = (_a2 = state.config[entityType]) == null ? void 0 : _a2.tags;
651
651
  if (tagConfigs) {
@@ -690,6 +690,35 @@ var initCoreActions = (monoriseStore, appActions, coreService2) => {
690
690
  }
691
691
  }
692
692
  }
693
+ const mutualFields = (_d = (_c = state.config[entityType]) == null ? void 0 : _c.mutual) == null ? void 0 : _d.mutualFields;
694
+ if (mutualFields) {
695
+ for (const [field, fieldConfig] of Object.entries(mutualFields)) {
696
+ const byEntityType = fieldConfig.entityType;
697
+ const ids = entity[field];
698
+ if (!Array.isArray(ids)) continue;
699
+ for (const byEntityId2 of ids) {
700
+ const mutualKey = getMutualStateKey(
701
+ byEntityType,
702
+ byEntityId2,
703
+ entityType
704
+ );
705
+ if (state.mutual[mutualKey] && state.mutual[mutualKey].isFirstFetched) {
706
+ state.mutual[mutualKey].dataMap.set(data.entityId, {
707
+ entityId: data.entityId,
708
+ entityType,
709
+ byEntityId: byEntityId2,
710
+ byEntityType,
711
+ mutualId: "",
712
+ data: data.data,
713
+ mutualData: {},
714
+ createdAt: data.createdAt,
715
+ updatedAt: data.updatedAt,
716
+ mutualUpdatedAt: data.updatedAt
717
+ });
718
+ }
719
+ }
720
+ }
721
+ }
693
722
  }),
694
723
  void 0,
695
724
  `mr/entity/create/${entityType}`
@@ -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 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","upsertEntity","editEntity","deleteEntity","getMutual","byEntityId","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) {\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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "monorise",
3
- "version": "0.0.2-dev.0",
3
+ "version": "0.0.2-dev.2",
4
4
  "description": "Monorise - A unified package for all Monorise functionality",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",