{"version":3,"file":"acorex-platform-runtime.mjs","sources":["../../../../libs/platform/runtime/src/lib/commands/command-events.service.ts","../../../../libs/platform/runtime/src/lib/commands/command.middleware.ts","../../../../libs/platform/runtime/src/lib/commands/command.registry.ts","../../../../libs/platform/runtime/src/lib/commands/command.extension.token.ts","../../../../libs/platform/runtime/src/lib/commands/command.executor.ts","../../../../libs/platform/runtime/src/lib/commands/command.service.ts","../../../../libs/platform/runtime/src/lib/commands/provide-command-middleware.ts","../../../../libs/platform/runtime/src/lib/commands/provide-command-setups.ts","../../../../libs/platform/runtime/src/lib/queries/query.registry.ts","../../../../libs/platform/runtime/src/lib/queries/query.extension.token.ts","../../../../libs/platform/runtime/src/lib/queries/provide-query-middleware.ts","../../../../libs/platform/runtime/src/lib/queries/provide-query-setups.ts","../../../../libs/platform/runtime/src/lib/queries/query.middleware.ts","../../../../libs/platform/runtime/src/lib/queries/query.executor.ts","../../../../libs/platform/runtime/src/lib/queries/query.service.ts","../../../../libs/platform/runtime/src/lib/views/view.middleware.ts","../../../../libs/platform/runtime/src/lib/views/view.registry.ts","../../../../libs/platform/runtime/src/lib/views/view.extension.token.ts","../../../../libs/platform/runtime/src/lib/views/view.executor.ts","../../../../libs/platform/runtime/src/lib/views/view.service.ts","../../../../libs/platform/runtime/src/lib/views/provide-view-setups.ts","../../../../libs/platform/runtime/src/lib/policy/policy.middleware.ts","../../../../libs/platform/runtime/src/lib/policy/policy.interface.ts","../../../../libs/platform/runtime/src/lib/policy/policy.extension.token.ts","../../../../libs/platform/runtime/src/lib/policy/policy.registry.ts","../../../../libs/platform/runtime/src/lib/policy/policy.service.ts","../../../../libs/platform/runtime/src/lib/policy/policy.directive.ts","../../../../libs/platform/runtime/src/lib/policy/policy-middleware-provider.ts","../../../../libs/platform/runtime/src/lib/views/provide-view-middleware.ts","../../../../libs/platform/runtime/src/lib/runtime.module.ts","../../../../libs/platform/runtime/src/index.ts","../../../../libs/platform/runtime/src/acorex-platform-runtime.ts"],"sourcesContent":["//#region ----   Imports   ----\n\nimport { inject, Injectable } from '@angular/core';\nimport { AXPExecuteCommandResult } from '@acorex/platform/contracts';\nimport { AXPBroadcastEventService } from '@acorex/platform/core';\nimport { AXPDistributedEventListenerService } from '@acorex/platform/core';\n\n//#endregion\n\n//#region ----   Types   ----\n\nexport type AXPCommandExecutionStage = 'before' | 'after';\n\nexport interface AXPCommandExecutionEvent<TInput = unknown, TResult = unknown> {\n    stage: AXPCommandExecutionStage;\n    key: string;\n    input: TInput;\n    success?: boolean;\n    result?: AXPExecuteCommandResult<TResult> | null;\n    error?: unknown;\n}\n\ntype CommandExecutionHandler<TInput, TResult> = (event: AXPCommandExecutionEvent<TInput, TResult>) => void;\n\n//#endregion\n\nconst COMMAND_EXECUTION_EVENT_KEY = '@commands:execution';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPCommandEventsService {\n    //#region ----   Services & Dependencies   ----\n\n    private readonly broadcast = inject(AXPBroadcastEventService);\n    private readonly distributedEvents = inject(AXPDistributedEventListenerService, { optional: true });\n\n    //#endregion\n\n    //#region ----   Public API   ----\n\n    listen<TInput = unknown, TResult = unknown>(\n        handler: CommandExecutionHandler<TInput, TResult>,\n    ): () => void {\n        const subscription = this.broadcast\n            .listen<AXPCommandExecutionEvent<TInput, TResult>>(COMMAND_EXECUTION_EVENT_KEY)\n            .subscribe(({ data }) => handler(data));\n\n        return () => subscription.unsubscribe();\n    }\n\n    async emit<TInput = unknown, TResult = unknown>(\n        event: AXPCommandExecutionEvent<TInput, TResult>,\n    ): Promise<void> {\n        const safePayload = this.serializeForBroadcast(event);\n        this.broadcast.publish(COMMAND_EXECUTION_EVENT_KEY, safePayload);\n        await this.distributedEvents?.dispatch(COMMAND_EXECUTION_EVENT_KEY, safePayload);\n    }\n\n    //#endregion\n\n    //#region ----   Broadcast payload (structured-clone safe)   ----\n\n    /**\n     * Removes functions, symbols, and cycles so {@link AXPBroadcastEventService.publish}\n     * can use `BroadcastChannel.postMessage` without DataCloneError (e.g. command input with `dialogRef`).\n     */\n    private serializeForBroadcast<TInput, TResult>(\n        event: AXPCommandExecutionEvent<TInput, TResult>,\n    ): AXPCommandExecutionEvent {\n        return {\n            stage: event.stage,\n            key: event.key,\n            success: event.success,\n            input: this.stripNonSerializable(event.input),\n            result:\n                event.result === undefined || event.result === null\n                    ? event.result\n                    : (this.stripNonSerializable(event.result) as AXPExecuteCommandResult<TResult>),\n            error:\n                event.error instanceof Error\n                    ? { name: event.error.name, message: event.error.message }\n                    : this.stripNonSerializable(event.error),\n        };\n    }\n\n    private stripNonSerializable(value: unknown): unknown {\n        const seen = new WeakSet<object>();\n\n        const walk = (v: unknown): unknown => {\n            if (v === null || v === undefined) {\n                return v;\n            }\n            const t = typeof v;\n            if (t === 'function' || t === 'symbol') {\n                return undefined;\n            }\n            if (t === 'bigint') {\n                return v.toString();\n            }\n            if (t !== 'object') {\n                return v;\n            }\n            if (v instanceof Date) {\n                return v.toISOString();\n            }\n            if (Array.isArray(v)) {\n                if (seen.has(v)) {\n                    return '[Circular]';\n                }\n                seen.add(v);\n                return v.map((item) => walk(item)).filter((item) => item !== undefined);\n            }\n            if (seen.has(v)) {\n                return '[Circular]';\n            }\n            seen.add(v);\n            const obj = v as Record<string, unknown>;\n            const out: Record<string, unknown> = {};\n            for (const key of Object.keys(obj)) {\n                const child = walk(obj[key]);\n                if (child !== undefined) {\n                    out[key] = child;\n                }\n            }\n            return out;\n        };\n\n        return walk(value);\n    }\n\n    //#endregion\n}\n\n","import { AXPExecuteCommandResult } from '@acorex/platform/contracts';\n\n//#region ----   Middleware Types   ----\n\n/**\n * Represents a middleware function in the command execution pipeline.\n */\nexport type AXPCommandMiddleware<TInput = any, TResult = any> = (\n    input: TInput,\n    next: (input: TInput) => Promise<AXPExecuteCommandResult<TResult>>\n) => Promise<AXPExecuteCommandResult<TResult>>;\n\n//#endregion\n\n//#region ----   Middleware Composition   ----\n\n/**\n * Creates a composed handler by chaining the provided command middlewares.\n */\nexport function composeCommandMiddlewares<TInput, TResult>(\n    middlewares: AXPCommandMiddleware<TInput, TResult>[]\n): (\n    handler: (input: TInput) => Promise<AXPExecuteCommandResult<TResult>>\n) => (input: TInput) => Promise<AXPExecuteCommandResult<TResult>> {\n    return (\n        handler: (input: TInput) => Promise<AXPExecuteCommandResult<TResult>>\n    ) => {\n        let composed = handler;\n\n        for (let i = middlewares.length - 1; i >= 0; i--) {\n            const mw = middlewares[i];\n            const next = composed;\n\n            composed = (input: TInput) => mw(input, next);\n        }\n\n        return composed;\n    };\n}\n\n//#endregion\n","import { Injectable } from '@angular/core';\nimport { AXPCommand } from '@acorex/platform/runtime-contracts';\nimport { AXPCommandMiddleware } from './command.middleware';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPCommandRegistry {\n    private registry = new Map<string, () => Promise<AXPCommand>>();\n    private middlewares: AXPCommandMiddleware[] = [];\n\n    register(key: string, loader: () => Promise<AXPCommand>): void {\n        this.registry.set(key, loader);\n    }\n\n    unregister(key: string): boolean {\n        return this.registry.delete(key);\n    }\n\n    use(middleware: AXPCommandMiddleware): void {\n        this.middlewares.push(middleware);\n    }\n\n    exists(key: string): boolean {\n        return this.registry.has(key);\n    }\n\n    getLoader(key: string): (() => Promise<AXPCommand>) | undefined {\n        return this.registry.get(key);\n    }\n\n    getMiddlewares(): readonly AXPCommandMiddleware[] {\n        return [...this.middlewares];\n    }\n\n    getRegisteredKeys(): string[] {\n        return Array.from(this.registry.keys());\n    }\n\n    clear(): void {\n        this.registry.clear();\n        this.middlewares.length = 0;\n    }\n}\n","// plugins/command.extension.token.ts\nimport { InjectionToken } from '@angular/core';\nimport { AXPCommandMiddleware } from './command.middleware';\n\nexport interface AXPCommandExtension {\n    target: string | RegExp;\n    middleware: AXPCommandMiddleware;\n}\n\nexport const AXP_COMMAND_EXTENSION = new InjectionToken<AXPCommandExtension[]>('AXP_COMMAND_EXTENSION');\n","import { EnvironmentInjector, Injectable, inject, runInInjectionContext } from '@angular/core';\nimport { AXPExecuteCommandResult } from '@acorex/platform/contracts';\n\nimport { AXPCommandMiddleware, composeCommandMiddlewares } from './command.middleware';\nimport { AXPCommandRegistry } from './command.registry';\nimport { AXP_COMMAND_EXTENSION } from './command.extension.token';\nimport { AXPCommandEventsService, AXPCommandExecutionEvent } from './command-events.service';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPCommandExecutor {\n    private readonly injector = inject(EnvironmentInjector);\n    private readonly registry = inject(AXPCommandRegistry);\n    private readonly extensions = inject(AXP_COMMAND_EXTENSION, { optional: true });\n    private readonly commandEvents = inject(AXPCommandEventsService);\n\n    async execute<TInput = any, TResult = any>(\n        key: string,\n        input: TInput\n    ): Promise<AXPExecuteCommandResult<TResult> | null> {\n        const loader = this.registry.getLoader(key);\n        if (!loader) {\n            throw new Error(`Command '${key}' is not registered`);\n        }\n\n        const command = await loader();\n        const handler = (i: TInput) => command.execute(i) as Promise<AXPExecuteCommandResult<TResult>>;\n\n        const pluginMiddlewares = this.getPluginMiddlewares(key);\n        const globalMiddlewares = this.registry.getMiddlewares();\n\n        const wrappedMiddlewares: AXPCommandMiddleware<TInput, TResult>[] = [\n            ...globalMiddlewares,\n            ...pluginMiddlewares,\n        ].map(middleware => {\n            return (input: TInput, next: (input: TInput) => Promise<AXPExecuteCommandResult<TResult>>) =>\n                runInInjectionContext(this.injector, () => middleware(input, next));\n        });\n\n        const composed = composeCommandMiddlewares<TInput, TResult>(wrappedMiddlewares)(handler);\n\n        const beforeEvent = {\n            stage: 'before' as const,\n            key,\n            input,\n        } satisfies AXPCommandExecutionEvent<TInput>;\n\n        await this.commandEvents.emit(beforeEvent);\n\n        try {\n            const result = await composed(input);\n\n            const afterEvent = {\n                stage: 'after' as const,\n                key,\n                input,\n                success: true,\n                result,\n            } satisfies AXPCommandExecutionEvent<TInput, TResult>;\n\n            await this.commandEvents.emit(afterEvent);\n\n            return result;\n        } catch (error) {\n            const afterEvent = {\n                stage: 'after' as const,\n                key,\n                input,\n                success: false,\n                error,\n            } satisfies AXPCommandExecutionEvent<TInput, TResult>;\n\n            await this.commandEvents.emit(afterEvent);\n\n            throw error;\n        }\n    }\n\n    private getPluginMiddlewares(key: string): AXPCommandMiddleware[] {\n        return this.extensions\n            ?.filter(ext => ext.target instanceof RegExp ? ext.target.test(key) : ext.target === key)\n            .map(ext => ext.middleware) ?? [];\n    }\n} ","import { Injectable, inject } from '@angular/core';\nimport { AXPExecuteCommandResult } from '@acorex/platform/contracts';\n\nimport { AXPCommand } from '@acorex/platform/runtime-contracts';\nimport { AXPCommandMiddleware } from './command.middleware';\nimport { AXPCommandRegistry } from './command.registry';\nimport { AXPCommandExecutor } from './command.executor';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPCommandService {\n    private readonly registry = inject(AXPCommandRegistry);\n    private readonly executor = inject(AXPCommandExecutor);\n\n    // Registry methods\n    register(key: string, loader: () => Promise<AXPCommand>): void {\n        this.registry.register(key, loader);\n    }\n\n    unregister(key: string): boolean {\n        return this.registry.unregister(key);\n    }\n\n    use(middleware: AXPCommandMiddleware): void {\n        this.registry.use(middleware);\n    }\n\n    exists(key: string): boolean {\n        return this.registry.exists(key);\n    }\n\n    getRegisteredKeys(): string[] {\n        return this.registry.getRegisteredKeys();\n    }\n\n    clear(): void {\n        this.registry.clear();\n    }\n\n    // Executor methods\n    async execute<TInput = any, TResult = any>(\n        key: string,\n        input: TInput\n    ): Promise<AXPExecuteCommandResult<TResult> | null> {\n        return this.executor.execute<TInput, TResult>(key, input);\n    }\n} ","import {\n    EnvironmentProviders,\n    inject,\n    InjectionToken,\n    makeEnvironmentProviders\n} from '@angular/core';\nimport { AXPCommandRegistry } from './command.registry';\nimport { AXPCommandMiddleware } from './command.middleware';\nimport { AXP_COMMAND_EXTENSION } from './command.extension.token';\n\nexport const AXP_COMMAND_MIDDLEWARE_SETUP = new InjectionToken<void>('AXP_COMMAND_MIDDLEWARE_SETUP');\n\ntype AXPCommandMiddlewareEntry =\n    (AXPCommandMiddleware | { target: string | RegExp; middleware: AXPCommandMiddleware })[];\n\nexport function provideCommandMiddleware(\n    entries: AXPCommandMiddlewareEntry\n): EnvironmentProviders {\n    const global: AXPCommandMiddleware[] = [];\n    const extensions: { target: string | RegExp; middleware: AXPCommandMiddleware }[] = [];\n\n    for (const entry of entries) {\n        if (typeof entry === 'function') {\n            global.push(entry);\n        } else {\n            extensions.push(entry);\n        }\n    }\n\n    return makeEnvironmentProviders([\n        // Plugin middleware entries\n        ...extensions.map(ext => ({\n            provide: AXP_COMMAND_EXTENSION,\n            useValue: ext,\n            multi: true\n        })),\n\n        // Global middleware setup (triggered via this token)\n        {\n            provide: AXP_COMMAND_MIDDLEWARE_SETUP,\n            useFactory: () => {\n                const registry = inject(AXPCommandRegistry);\n                for (const mw of global) {\n                    registry.use(mw);\n                }\n                return true;\n            }\n        }\n    ]);\n}","import { EnvironmentInjector, EnvironmentProviders, inject, InjectionToken, makeEnvironmentProviders, runInInjectionContext, Type } from '@angular/core';\nimport { AXPCommandRegistry } from './command.registry';\nimport { AXPCommand } from '@acorex/platform/runtime-contracts';\n\n\nexport const AXP_COMMAND_SETUP = new InjectionToken<void>('AXP_COMMAND_SETUP');\n\n\ntype AXPCommandLoader = {\n    key: string;\n    command: () => Type<AXPCommand> | Promise<Type<AXPCommand>>;\n};\n\n\nexport function provideCommandSetups(entries: AXPCommandLoader[]): EnvironmentProviders {\n\n    return makeEnvironmentProviders([\n        {\n            provide: AXP_COMMAND_SETUP,\n            useFactory: () => {\n                const registry = inject(AXPCommandRegistry);\n                const injector = inject(EnvironmentInjector);\n\n                for (const entry of entries) {\n                    registry.register(entry.key, async () => {\n                        const CommandType = await entry.command();\n                        // Try to get from DI first, if fails create new instance\n                        try {\n                            return injector.get(CommandType);\n                        } catch (e) {\n                            // If not in DI (e.g., for activities), create new instance\n                            return runInInjectionContext(injector, () => new CommandType());\n                        }\n                    });\n                }\n\n                return true;\n            },\n            multi: true\n        }\n    ]);\n}\n\n\nexport function provideCommand(\n    key: string,\n    loader: () => Type<AXPCommand> | Promise<Type<AXPCommand>>\n): EnvironmentProviders {\n    return provideCommandSetups([\n        {\n            key,\n            command: loader\n        }\n    ]);\n}\n\n\n","// queries/query.registry.ts\nimport { Injectable } from '@angular/core';\nimport { AXPQuery } from '@acorex/platform/runtime-contracts';\nimport { AXPQueryMiddleware } from './query.middleware';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPQueryRegistry {\n    private registry = new Map<string, () => Promise<AXPQuery>>();\n    private middlewares: AXPQueryMiddleware[] = [];\n\n    register(key: string, loader: () => Promise<AXPQuery>): void {\n        this.registry.set(key, loader);\n    }\n\n    unregister(key: string): boolean {\n        return this.registry.delete(key);\n    }\n\n    use(middleware: AXPQueryMiddleware): void {\n        this.middlewares.push(middleware);\n    }\n\n    exists(key: string): boolean {\n        return this.registry.has(key);\n    }\n\n    getLoader(key: string): (() => Promise<AXPQuery>) | undefined {\n        return this.registry.get(key);\n    }\n\n    getMiddlewares(): readonly AXPQueryMiddleware[] {\n        return [...this.middlewares];\n    }\n\n    getRegisteredKeys(): string[] {\n        return Array.from(this.registry.keys());\n    }\n\n    clear(): void {\n        this.registry.clear();\n        this.middlewares.length = 0;\n    }\n}\n","// plugins/query.extension.token.ts\nimport { InjectionToken } from '@angular/core';\nimport { AXPQueryMiddleware } from './query.middleware';\n\nexport interface AXPQueryExtension {\n    target: string | RegExp;\n    middleware: AXPQueryMiddleware;\n}\n\nexport const AXP_QUERY_EXTENSION = new InjectionToken<AXPQueryExtension[]>('AXP_QUERY_EXTENSION');\n","import {\n    EnvironmentProviders,\n    inject,\n    InjectionToken,\n    makeEnvironmentProviders\n} from '@angular/core';\nimport { AXPQueryRegistry } from './query.registry';\nimport { AXPQueryMiddleware } from './query.middleware';\nimport { AXP_QUERY_EXTENSION } from './query.extension.token';\n\nexport const AXP_QUERY_MIDDLEWARE_SETUP = new InjectionToken<void>('AXP_QUERY_MIDDLEWARE_SETUP');\n\ntype AXPQueryMiddlewareEntry =\n    (AXPQueryMiddleware | { key: string; middleware: AXPQueryMiddleware })[];\n\nexport function provideQueryMiddleware(\n    entries: AXPQueryMiddlewareEntry\n): EnvironmentProviders {\n    const global: AXPQueryMiddleware[] = [];\n    const extensions: { key: string; middleware: AXPQueryMiddleware }[] = [];\n\n    for (const entry of entries) {\n        if (typeof entry === 'function') {\n            global.push(entry);\n        } else {\n            extensions.push(entry);\n        }\n    }\n\n    return makeEnvironmentProviders([\n        // Plugin middleware entries\n        ...extensions.map(ext => ({\n            provide: AXP_QUERY_EXTENSION,\n            useValue: ext,\n            multi: true\n        })),\n\n        // Global middleware setup (triggered via this token)\n        {\n            provide: AXP_QUERY_MIDDLEWARE_SETUP,\n            useFactory: () => {\n                const registry = inject(AXPQueryRegistry);\n                for (const mw of global) {\n                    registry.use(mw);\n                }\n                return true;\n            }\n        }\n    ]);\n} ","import { EnvironmentInjector, EnvironmentProviders, inject, InjectionToken, makeEnvironmentProviders, Provider, Type } from '@angular/core';\nimport { AXPQueryRegistry } from './query.registry';\nimport { AXPQuery } from '@acorex/platform/runtime-contracts';\n\nexport const AXP_QUERY_SETUP = new InjectionToken<void>('AXP_QUERY_SETUP');\n\ntype AXPQueryLoaderEntry = {\n    key: string,\n    loader: () => Type<AXPQuery> | Promise<Type<AXPQuery>>;\n};\n\nexport function provideQuerySetups(\n    entries: AXPQueryLoaderEntry[]\n): EnvironmentProviders {\n    return makeEnvironmentProviders([\n        {\n            provide: AXP_QUERY_SETUP,\n            useFactory: () => {\n                const registry = inject(AXPQueryRegistry);\n                const injector = inject(EnvironmentInjector);\n\n                for (const entry of entries) {\n                    registry.register(entry.key, async () => {\n                        const CommandType = await entry.loader();\n                        return injector.get(CommandType);\n                    });\n                }\n\n                return true;\n            },\n            multi: true\n        }\n    ]);\n} ","// queries/query.middleware.ts\nexport type AXPQueryMiddleware<TInput = any, TResult = any> = (\n    input: TInput,\n    next: (input: TInput) => Promise<TResult>\n) => Promise<TResult>;\n\nexport function composeQueryMiddlewares<TInput, TResult>(\n    middlewares: AXPQueryMiddleware<TInput, TResult>[]\n): (handler: (input: TInput) => Promise<TResult>) => (input: TInput) => Promise<TResult> {\n    return (handler: (input: TInput) => Promise<TResult>) => {\n        let composed = handler;\n\n        for (let i = middlewares.length - 1; i >= 0; i--) {\n            const mw = middlewares[i];\n            const next = composed;\n\n            composed = (input: TInput) => mw(input, next);\n        }\n\n        return composed;\n    };\n}\n","import { Injectable, EnvironmentInjector, inject, runInInjectionContext } from '@angular/core';\nimport { AXPQueryMiddleware, composeQueryMiddlewares } from './query.middleware';\nimport { AXPQueryRegistry } from './query.registry';\nimport { AXP_QUERY_EXTENSION } from './query.extension.token';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPQueryExecutor {\n    private readonly injector = inject(EnvironmentInjector);\n    private readonly registry = inject(AXPQueryRegistry);\n    private readonly extensions = inject(AXP_QUERY_EXTENSION, { optional: true });\n\n    async fetch<TInput = any, TResult = any>(\n        key: string,\n        input: TInput\n    ): Promise<TResult | null> {\n        const loader = this.registry.getLoader(key);\n        if (!loader) {\n            return null;\n        }\n\n        const query = await loader();\n        const handler = (i: TInput) => query.fetch(i);\n\n        const pluginMiddlewares = this.getPluginMiddlewares(key);\n        const globalMiddlewares = this.registry.getMiddlewares();\n\n        const wrappedMiddlewares = [...globalMiddlewares, ...pluginMiddlewares].map(middleware => {\n            return (input: TInput, next: (input: TInput) => Promise<TResult>) =>\n                runInInjectionContext(this.injector, () => middleware(input, next));\n        });\n\n        const composed = composeQueryMiddlewares(wrappedMiddlewares)(handler);\n        return composed(input);\n    }\n\n    private getPluginMiddlewares(key: string): AXPQueryMiddleware[] {\n        return this.extensions\n            ?.filter(ext => ext.target instanceof RegExp ? ext.target.test(key) : ext.target === key)\n            .map(ext => ext.middleware) ?? [];\n    }\n} ","import { Injectable, inject } from '@angular/core';\nimport { AXPQuery } from '@acorex/platform/runtime-contracts';\nimport { AXPQueryMiddleware } from './query.middleware';\nimport { AXPQueryRegistry } from './query.registry';\nimport { AXPQueryExecutor } from './query.executor';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPQueryService {\n    private readonly registry = inject(AXPQueryRegistry);\n    private readonly executor = inject(AXPQueryExecutor);\n\n    // Registry methods\n    register(key: string, loader: () => Promise<AXPQuery>): void {\n        this.registry.register(key, loader);\n    }\n\n    unregister(key: string): boolean {\n        return this.registry.unregister(key);\n    }\n\n    use(middleware: AXPQueryMiddleware): void {\n        this.registry.use(middleware);\n    }\n\n    exists(key: string): boolean {\n        return this.registry.exists(key);\n    }\n\n    getRegisteredKeys(): string[] {\n        return this.registry.getRegisteredKeys();\n    }\n\n    clear(): void {\n        this.registry.clear();\n    }\n\n    // Executor methods\n    async fetch<TInput = any, TResult = any>(\n        key: string,\n        input: TInput\n    ): Promise<TResult | null> {\n        return this.executor.fetch<TInput, TResult>(key, input);\n    }\n} ","import { AXPViewDefinition } from '@acorex/platform/contracts';\n\nexport type AXPViewMiddleware<TInput = any> = (\n    input: TInput,\n    next: (input: TInput) => Promise<AXPViewDefinition>\n) => Promise<AXPViewDefinition>;\n\nexport function composeViewMiddlewares<TInput>(\n    middlewares: AXPViewMiddleware<TInput>[]\n): (handler: (input: TInput) => Promise<AXPViewDefinition>) => (input: TInput) => Promise<AXPViewDefinition> {\n    return (handler: (input: TInput) => Promise<AXPViewDefinition>) => {\n        let composed = handler;\n\n        for (let i = middlewares.length - 1; i >= 0; i--) {\n            const mw = middlewares[i];\n            const next = composed;\n\n            composed = (input: TInput) => mw(input, next);\n        }\n\n        return composed;\n    };\n} ","import { Injectable } from '@angular/core';\nimport { AXPViewProvider } from '@acorex/platform/runtime-contracts';\nimport { AXPViewMiddleware } from './view.middleware';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPViewRegistry {\n    private registry = new Map<string, () => Promise<AXPViewProvider>>();\n    private middlewares: AXPViewMiddleware[] = [];\n\n    register(key: string, loader: () => Promise<AXPViewProvider>): void {\n        this.registry.set(key, loader);\n    }\n\n    unregister(key: string): boolean {\n        return this.registry.delete(key);\n    }\n\n    use(middleware: AXPViewMiddleware): void {\n        this.middlewares.push(middleware);\n    }\n\n    exists(key: string): boolean {\n        return this.registry.has(key);\n    }\n\n    getLoader(key: string): (() => Promise<AXPViewProvider>) | undefined {\n        return this.registry.get(key);\n    }\n\n    getMiddlewares(): readonly AXPViewMiddleware[] {\n        return [...this.middlewares];\n    }\n\n    getRegisteredKeys(): string[] {\n        return Array.from(this.registry.keys());\n    }\n\n    clear(): void {\n        this.registry.clear();\n        this.middlewares.length = 0;\n    }\n} ","import { InjectionToken } from '@angular/core';\nimport { AXPViewMiddleware } from './view.middleware';\n\nexport interface AXPViewExtension {\n    target: string | RegExp;\n    middleware: AXPViewMiddleware;\n}\n\nexport const AXP_VIEW_EXTENSION = new InjectionToken<AXPViewExtension[]>('AXP_VIEW_EXTENSION'); ","import { Injectable, EnvironmentInjector, inject, runInInjectionContext } from '@angular/core';\nimport { AXPViewMiddleware, composeViewMiddlewares } from './view.middleware';\nimport { AXPViewRegistry } from './view.registry';\nimport { AXP_VIEW_EXTENSION } from './view.extension.token';\nimport { AXPViewDefinition } from '@acorex/platform/contracts';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPViewExecutor {\n    private readonly injector = inject(EnvironmentInjector);\n    private readonly registry = inject(AXPViewRegistry);\n    private readonly extensions = inject(AXP_VIEW_EXTENSION, { optional: true });\n\n    async provide<TInput = any>(\n        key: string,\n        input: TInput\n    ): Promise<AXPViewDefinition | null> {\n        const loader = this.registry.getLoader(key);\n        if (!loader) {\n            return null;\n        }\n\n        const provider = await loader();\n        const handler = (i: TInput) => provider.provide(i);\n\n        const pluginMiddlewares = this.getPluginMiddlewares(key);\n        const globalMiddlewares = this.registry.getMiddlewares();\n\n        const wrappedMiddlewares = [...globalMiddlewares, ...pluginMiddlewares].map(middleware => {\n            return (input: TInput, next: (input: TInput) => Promise<AXPViewDefinition>) =>\n                runInInjectionContext(this.injector, () => middleware(input, next));\n        });\n\n        const composed = composeViewMiddlewares(wrappedMiddlewares)(handler);\n        return composed(input);\n    }\n\n    private getPluginMiddlewares(key: string): AXPViewMiddleware[] {\n        return this.extensions\n            ?.filter(ext => ext.target instanceof RegExp ? ext.target.test(key) : ext.target === key)\n            .map(ext => ext.middleware) ?? [];\n    }\n} ","import { Injectable, inject } from '@angular/core';\nimport { AXPViewProvider } from '@acorex/platform/runtime-contracts';\nimport { AXPViewMiddleware } from './view.middleware';\nimport { AXPViewRegistry } from './view.registry';\nimport { AXPViewExecutor } from './view.executor';\nimport { AXPViewDefinition } from '@acorex/platform/contracts';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPViewService {\n    private readonly registry = inject(AXPViewRegistry);\n    private readonly executor = inject(AXPViewExecutor);\n\n    //#region ----   Registry Methods   ----\n\n    register(key: string, loader: () => Promise<AXPViewProvider>): void {\n        this.registry.register(key, loader);\n    }\n\n    unregister(key: string): boolean {\n        return this.registry.unregister(key);\n    }\n\n    use(middleware: AXPViewMiddleware): void {\n        this.registry.use(middleware);\n    }\n\n    exists(key: string): boolean {\n        return this.registry.exists(key);\n    }\n\n    getRegisteredKeys(): string[] {\n        return this.registry.getRegisteredKeys();\n    }\n\n    clear(): void {\n        this.registry.clear();\n    }\n\n    //#endregion\n\n    //#region ----   Executor Methods   ----\n\n    async provide<TInput = any>(\n        key: string,\n        input: TInput\n    ): Promise<AXPViewDefinition | null> {\n        return this.executor.provide<TInput>(key, input);\n    }\n\n    //#endregion\n} ","import { EnvironmentProviders, inject, InjectionToken, makeEnvironmentProviders, Provider } from '@angular/core';\nimport { AXPViewRegistry } from './view.registry';\nimport { AXPViewProvider } from '@acorex/platform/runtime-contracts';\n\nexport const AXP_VIEW_SETUP = new InjectionToken<void>('AXP_VIEW_SETUP');\n\nexport function provideViewSetups(providers: Provider[]): EnvironmentProviders {\n    return makeEnvironmentProviders([\n        ...providers,\n        {\n            provide: AXP_VIEW_SETUP,\n            useFactory: () => {\n                const registry = inject(AXPViewRegistry);\n\n                // Setup will be handled by the provided registration functions\n                return;\n            },\n            multi: true\n        }\n    ]);\n}\n\nexport function provideViewSetup(\n    key: string,\n    loader: () => Promise<AXPViewProvider>\n): Provider {\n    return {\n        provide: AXP_VIEW_SETUP,\n        useFactory: () => {\n            const registry = inject(AXPViewRegistry);\n            registry.register(key, loader);\n            return;\n        },\n        multi: true\n    };\n} ","import { AXPPolicyEngineContext } from \"./policy.interface\";\n\nexport type AXPPolicyEngineMiddleware = (\n    context: AXPPolicyEngineContext,\n    next: (context: AXPPolicyEngineContext) => Promise<void>,\n) => Promise<void>;\n\nexport function composePolicyEngineMiddlewares(\n    middlewares: AXPPolicyEngineMiddleware[]\n): (handler: (context: AXPPolicyEngineContext) => Promise<void>) => (context: AXPPolicyEngineContext) => Promise<void> {\n    return (handler) => {\n        let composed = handler;\n        for (let i = middlewares.length - 1; i >= 0; i--) {\n            const mw = middlewares[i];\n            const next = composed;\n            composed = (context: AXPPolicyEngineContext) => mw(context, next);\n        }\n        return composed;\n    };\n} ","import { AXPPolicyOptions } from \"./policy.types\";\n\nexport interface AXPPolicy {\n    apply(context: AXPPolicyEngineContext): Promise<void>;\n}\n\n\nexport class AXPPolicyEngineContext {\n\n    private _id: string;\n    private _sender: AXPPolicyOptions['sender'];\n    private _visible = true;\n    private _enabled = true;\n\n    constructor(options: AXPPolicyOptions) {\n        this._id = options.id;\n        this._sender = options.sender;\n    }\n\n    public get sender(): AXPPolicyOptions['sender'] {\n        return this._sender;\n    }\n\n    public get id() {\n        return this._id;\n    }\n\n    public get visible() {\n        return this._visible;\n    }\n\n    public get enabled() {\n        return this._enabled;\n    }\n\n    setVisible(visible: boolean) {\n        this._visible = visible;\n        return this;\n    }\n    setEnabled(enabled: boolean) {\n        this._enabled = enabled;\n        return this;\n    }\n}       \n","// plugins/command.extension.token.ts\nimport { InjectionToken } from '@angular/core';\nimport { AXPPolicyEngineMiddleware } from './policy.middleware';\n\nexport interface AXPPolicyExtension {\n    key: string;\n    middleware: AXPPolicyEngineMiddleware;\n}\n\nexport const AXP_POLICY_EXTENSION = new InjectionToken<AXPPolicyExtension[]>('AXP_POLICY_EXTENSION');\n","import { EnvironmentInjector, Inject, inject, Injectable, Optional, runInInjectionContext } from '@angular/core';\nimport { AXPPolicyEngineMiddleware, composePolicyEngineMiddlewares } from './policy.middleware';\nimport { AXPPolicyEngineContext } from './policy.interface';\nimport { AXPPolicyOptions } from './policy.types';\nimport { AXPPolicy } from './policy.interface';\nimport { AXP_POLICY_EXTENSION } from './policy.extension.token';\nimport { AXPPolicyExtension } from './policy.extension.token';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPPolicyEngineRegistry {\n    private registry = new Map<string, () => Promise<AXPPolicy>>();\n    private middlewares: AXPPolicyEngineMiddleware[] = [];\n    private extensions = inject(AXP_POLICY_EXTENSION, { optional: true });\n\n    private injector = inject(EnvironmentInjector);\n\n\n    use(mw: AXPPolicyEngineMiddleware): void {\n        this.middlewares.push(mw);\n    }\n\n    exists(key: string): boolean {\n        return this.registry.has(key);\n    }\n\n    getPolicies(): string[] {\n        return Array.from(this.registry.keys());\n    }\n\n    register(key: string, loader: () => Promise<AXPPolicy>): void {\n        this.registry.set(key, loader);\n    }\n\n\n    private getPluginMiddlewares(key: string): AXPPolicyEngineMiddleware[] {\n        return this.extensions\n            ?.filter(ext => ext.key === key)\n            .map(ext => ext.middleware) ?? [];\n    }\n\n\n\n    async execute(\n        policy: string,\n        instance: AXPPolicyOptions\n    ): Promise<AXPPolicyEngineContext> {\n        const loader = this.registry.get(policy);\n        if (!loader) {\n            throw new Error(`${policy} not implemented`);\n        }\n        const context = new AXPPolicyEngineContext(instance);\n        const applier = await loader();\n        const handler = (i: AXPPolicyEngineContext) => applier.apply(i);\n\n        const pluginMws = this.getPluginMiddlewares(policy);\n\n        const wrappedMws = [...this.middlewares, ...pluginMws].map(mw => {\n            return (input: AXPPolicyEngineContext, next: (input: AXPPolicyEngineContext) => Promise<void>) =>\n                runInInjectionContext(this.injector, () => mw(input, next));\n        });\n\n        const composed = composePolicyEngineMiddlewares(wrappedMws)(handler);\n        await composed(context);\n        return context;\n    }\n} ","import { inject, Injectable } from \"@angular/core\";\nimport { AXPPolicyEngineRegistry } from \"./policy.registry\";\nimport { AXPPolicyOptions } from \"./policy.types\";\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class AXPPolicyEngineService {\n    private registry = inject(AXPPolicyEngineRegistry);\n\n\n\n    async apply(options: AXPPolicyOptions) {\n        const allPolicies = this.registry.getPolicies().filter(p => (options.policies?.length ?? 0) == 0 || options.policies?.includes(p));\n\n        await Promise.all(allPolicies.map(async policy => {\n            const context = await this.registry.execute(policy, options);\n            return context;\n        }));\n\n\n\n        //\n        // if (instance instanceof HTMLElement) {\n        //     if (context.visible === false) {\n        //         instance.style.display = 'none';\n        //     } else {\n        //         instance.style.display = '';\n        //     }\n        // }\n        // //\n        // if (instance instanceof MXBaseComponent) {\n        //     if (context.visible === false) {\n        //         instance.getHostElement().style.display = 'none';\n        //     } else {\n        //         instance.getHostElement().style.display = '';\n        //     }\n        // }\n        // // Handle disabled state for interactive components\n        // if (instance instanceof MXInteractiveComponent) {\n        //     if (context.enabled === false) {\n        //         instance.disabled = true;\n        //     } else {\n        //         instance.disabled = false;\n        //     }\n        // }\n        // // TODO: Handle object properties   \n        // if (instance instanceof Object) {\n        //     if (context.visible === false) {\n        //         set(instance, 'visible', false);\n        //     }\n        //     if (context.enabled === false) {\n        //         set(instance, 'disabled', true);\n        //     }\n        // }\n    }\n\n\n\n}\n","import { Directive, ElementRef, input, effect, inject } from '@angular/core';\nimport { AXPPolicyEngineService } from './policy.service';\nimport { castArray } from 'lodash-es';\n\n@Directive({\n    selector: '[axp-apply-policy]',\n    standalone: true\n})\nexport class AXPPolicyEngineDirective {\n    policy = input.required<string | undefined | null>({ alias: 'axp-apply-policy' });\n    private service = inject(AXPPolicyEngineService);\n    private elementRef = inject(ElementRef<HTMLElement>);\n\n\n    #eff = effect(async () => {\n        const policy = this.policy();\n        if (!policy) {\n            return;\n        }\n        await this.service.apply({\n            id: this.elementRef.nativeElement.id,\n            policies: castArray(policy),\n            sender: this.elementRef.nativeElement\n        });\n    });\n\n}\n","import { EnvironmentInjector, EnvironmentProviders, inject, InjectionToken, makeEnvironmentProviders, Type } from '@angular/core';\nimport { AXPPolicyEngineRegistry } from './policy.registry';\nimport { AXPPolicy } from './policy.interface';\n\nexport const AXP_POLICY_ENGINE_MIDDLEWARE_SETUP = new InjectionToken<void>('AXP_POLICY_ENGINE_MIDDLEWARE_SETUP');\n\n\n\ntype AXPPolicyLoader = {\n    key: string;\n    policy: () => Type<AXPPolicy> | Promise<Type<AXPPolicy>>;\n};\n\n\nexport function providePolicySetups(entries: AXPPolicyLoader[]): EnvironmentProviders {\n    return makeEnvironmentProviders([\n        {\n            provide: AXP_POLICY_ENGINE_MIDDLEWARE_SETUP,\n            useFactory: () => {\n                const registry = inject(AXPPolicyEngineRegistry);\n                const injector = inject(EnvironmentInjector);\n\n                for (const entry of entries) {\n                    registry.register(entry.key, async () => {\n                        const PolicyType = await entry.policy();\n                        return injector.get(PolicyType);\n                    });\n                }\n\n                return true;\n            }\n        }\n    ]);\n}","import { EnvironmentProviders, inject, InjectionToken, makeEnvironmentProviders, Provider } from '@angular/core';\nimport { AXPViewRegistry } from './view.registry';\nimport { AXPViewMiddleware } from './view.middleware';\n\nexport const AXP_VIEW_MIDDLEWARE_SETUP = new InjectionToken<void>('AXP_VIEW_MIDDLEWARE_SETUP');\n\nexport function provideViewMiddleware(middlewares: AXPViewMiddleware[]): EnvironmentProviders {\n    return makeEnvironmentProviders([\n        {\n            provide: AXP_VIEW_MIDDLEWARE_SETUP,\n            useFactory: () => {\n                const registry = inject(AXPViewRegistry);\n                middlewares.forEach(middleware => registry.use(middleware));\n                return;\n            },\n            multi: true\n        }\n    ]);\n}\n\nexport function provideViewMiddlewareSetup(\n    middleware: AXPViewMiddleware\n): Provider {\n    return {\n        provide: AXP_VIEW_MIDDLEWARE_SETUP,\n        useFactory: () => {\n            const registry = inject(AXPViewRegistry);\n            registry.use(middleware);\n            return;\n        },\n        multi: true\n    };\n} ","import { NgModule, Inject, isDevMode, Optional, inject } from \"@angular/core\";\nimport { AXP_COMMAND_SETUP } from \"./commands/provide-command-setups\";\nimport { AXP_COMMAND_MIDDLEWARE_SETUP } from \"./commands/provide-command-middleware\";\nimport { AXP_QUERY_SETUP } from \"./queries/provide-query-setups\";\nimport { AXP_QUERY_MIDDLEWARE_SETUP } from \"./queries/provide-query-middleware\";\nimport { AXP_VIEW_SETUP } from \"./views/provide-view-setups\";\nimport { AXP_VIEW_MIDDLEWARE_SETUP } from \"./views/provide-view-middleware\";\nimport { AXP_POLICY_ENGINE_MIDDLEWARE_SETUP } from \"./policy/policy-middleware-provider\";\n\n@NgModule()\nexport class AXPRuntimeModule {\n\n    private _commandSetup = inject(AXP_COMMAND_SETUP, { optional: true });\n    private _commandMiddlewareSetup = inject(AXP_COMMAND_MIDDLEWARE_SETUP, { optional: true });\n\n    private _querySetup = inject(AXP_QUERY_SETUP, { optional: true });\n    private _queryMiddlewareSetup = inject(AXP_QUERY_MIDDLEWARE_SETUP, { optional: true });\n\n    private _viewSetup = inject(AXP_VIEW_SETUP, { optional: true });\n    private _viewMiddlewareSetup = inject(AXP_VIEW_MIDDLEWARE_SETUP, { optional: true });\n\n    private _policyEngineSetup = inject(AXP_POLICY_ENGINE_MIDDLEWARE_SETUP, { optional: true });\n\n    constructor() {\n        if (isDevMode() && false) {\n            console.log('[AXPRuntimeModule] Command Setup:', this._commandSetup);\n            console.log('[AXPRuntimeModule] Command Middleware Setup:', this._commandMiddlewareSetup);\n            console.log('[AXPRuntimeModule] Query Setup:', this._querySetup);\n            console.log('[AXPRuntimeModule] Query Middleware Setup:', this._queryMiddlewareSetup);\n            console.log('[AXPRuntimeModule] View Setup:', this._viewSetup);\n            console.log('[AXPRuntimeModule] View Middleware Setup:', this._viewMiddlewareSetup);\n            console.log('[AXPRuntimeModule] Policy Engine Setup:', this._policyEngineSetup);\n        }\n    }\n}\n","// Commands\nexport * from './lib/commands';\n\n// Queries\nexport * from './lib/queries';\n\n// Views\nexport * from './lib/views';\n\n// Policy\nexport * from './lib/policy';\n\n// Runtime\nexport * from './lib/runtime.module';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}