{"version":3,"sources":["../src/Container.ts","../src/Application.ts","../src/Controller.ts","../src/ServiceProvider.ts","../src/Contracts/ServiceProviderConstructor.ts","../src/Di/Inject.ts","../src/Exceptions/Handler.ts","../src/Http/Kernel.ts","../src/Providers/CoreServiceProvider.ts","../src/Providers/ViewServiceProvider.ts","../src/index.ts"],"sourcesContent":["import type { Bindings, IContainer, UseKey } from '@h3ravel/shared'\n\ntype IBinding = UseKey | (new (..._args: any[]) => unknown)\n\nexport class Container implements IContainer {\n    private bindings = new Map<IBinding, () => unknown>()\n    private singletons = new Map<IBinding, unknown>()\n\n    /**\n     * Check if the target has any decorators\n     * \n     * @param target \n     * @returns \n     */\n    static hasAnyDecorator (target: Function): boolean {\n        if (Reflect.getMetadataKeys(target).length > 0) return true\n\n        const paramLength = target.length\n\n        for (let i = 0; i < paramLength; i++) {\n            if (Reflect.getMetadataKeys(target, `__param_${i}`).length > 0) {\n                return true\n            }\n        }\n\n        return false\n    }\n\n    /**\n     * Bind a transient service to the container\n     */\n    bind<T> (key: new (...args: any[]) => T, factory: () => T): void\n    bind<T extends UseKey> (key: T, factory: () => Bindings[T]): void\n    bind<T extends UseKey> (\n        key: T,\n        factory: () => Bindings[T] | T\n    ) {\n        this.bindings.set(key, factory)\n    }\n\n    /**\n     * Bind a singleton service to the container\n     */\n    singleton<T extends UseKey> (\n        key: T | (new (..._args: any[]) => Bindings[T]),\n        factory: () => Bindings[T]\n    ) {\n        this.bindings.set(key, () => {\n            if (!this.singletons.has(key)) {\n                this.singletons.set(key, factory())\n            }\n            return this.singletons.get(key)!\n        })\n    }\n\n    /**\n     * Resolve a service from the container\n     */\n    make<T extends UseKey, X = undefined> (\n        key: T | (new (..._args: any[]) => Bindings[T])\n    ): X extends undefined ? Bindings[T] : X {\n        /**\n         * Direct factory binding\n         */\n        if (this.bindings.has(key)) {\n            return this.bindings.get(key)!() as Bindings[T]\n        }\n\n        /**\n         * If this is a class constructor, auto-resolve via reflection\n         */\n        if (typeof key === 'function') {\n            return this.build(key)\n        }\n\n        throw new Error(\n            `No binding found for key: ${typeof key === 'string' ? key : (key as any)?.name}`\n        )\n    }\n\n    /**\n     * Automatically build a class with constructor dependency injection\n     */\n    private build<T extends UseKey> (ClassType: new (..._args: any[]) => Bindings[T]): Bindings[T] {\n        let dependencies: any[] = [];\n\n        if (Array.isArray((ClassType as any).__inject__)) {\n            dependencies = (ClassType as any).__inject__.map((alias: any) => {\n                return this.make(alias)\n            });\n        } else {\n            const paramTypes: any[] = Reflect.getMetadata('design:paramtypes', ClassType) || []\n            dependencies = paramTypes.map((dep) => this.make(dep))\n        }\n\n        return new ClassType(...dependencies);\n    }\n\n    /**\n     * Check if a service is registered\n     */\n    has (key: UseKey): boolean {\n        return this.bindings.has(key)\n    }\n}\n","import { IApplication, IPathName, IServiceProvider } from '@h3ravel/shared'\n\nimport { Container } from './Container'\nimport { PathLoader } from '@h3ravel/shared'\nimport dotenv from 'dotenv'\nimport path from 'node:path'\n\nexport class Application extends Container implements IApplication {\n    paths = new PathLoader()\n    private booted = false\n    private versions = { app: '0', ts: '0' }\n    private basePath: string\n\n    private providers: IServiceProvider[] = []\n    protected externalProviders: Array<new (_app: Application) => IServiceProvider> = []\n\n    constructor(basePath: string) {\n        super()\n        this.basePath = basePath\n        this.setPath('base', basePath)\n        this.loadOptions()\n        this.registerBaseBindings();\n        dotenv.config({ quiet: true })\n    }\n\n    /**\n     * Register core bindings into the container\n     */\n    protected registerBaseBindings () {\n        this.bind(Application, () => this)\n        this.bind('path.base', () => this.basePath)\n        this.bind('load.paths', () => this.paths)\n    }\n\n    /**\n     * Dynamically register all configured providers\n     */\n    public async registerConfiguredProviders () {\n        const providers = await this.getAllProviders()\n\n        for (const ProviderClass of providers) {\n            if (!ProviderClass) continue\n            const provider = new ProviderClass(this)\n            await this.register(provider)\n        }\n    }\n\n    protected async loadOptions () {\n        const app = await this.safeImport(this.getPath('base', 'package.json'))\n        const core = await this.safeImport('../package.json')\n\n        if (app && app.dependencies) {\n            this.versions.app = app.dependencies['@h3ravel/core']\n        }\n        if (core && core.devDependencies) {\n            this.versions.ts = app.devDependencies.typescript\n        }\n    }\n\n    /**\n     * Load default and optional providers dynamically\n     * \n     * Auto-Registration Behavior\n     * \n     * Minimal App: Loads only core, config, http, router by default.\n     * Full-Stack App: Installs database, mail, queue, cache → they self-register via their providers.\n     */\n    protected async getConfiguredProviders (): Promise<Array<new (_app: Application) => IServiceProvider>> {\n        return [\n            (await import('@h3ravel/core')).CoreServiceProvider,\n            (await import('@h3ravel/core')).ViewServiceProvider,\n        ]\n    }\n\n    protected async getAllProviders (): Promise<Array<new (_app: Application) => IServiceProvider>> {\n        const coreProviders = await this.getConfiguredProviders();\n        const allProviders = [...coreProviders, ...this.externalProviders];\n\n        /**\n         * Deduplicate by class reference\n         */\n        const uniqueProviders = Array.from(new Set(allProviders));\n\n        return this.sortProviders(uniqueProviders);\n    }\n\n    private sortProviders (providers: Array<new (_app: Application) => IServiceProvider>) {\n        const priorityMap = new Map<string, number>();\n\n        /**\n         * Base priority (default 0)\n         */\n        providers.forEach((Provider) => {\n            priorityMap.set(Provider.name, (Provider as any).priority ?? 0);\n        });\n\n        /**\n         * Handle before/after adjustments\n         */\n        providers.forEach((Provider) => {\n            const order = (Provider as any).order;\n            if (!order) return;\n\n            const [direction, target] = order.split(':');\n            const targetPriority = priorityMap.get(target) ?? 0;\n\n            if (direction === 'before') {\n                priorityMap.set(Provider.name, targetPriority - 1);\n            } else if (direction === 'after') {\n                priorityMap.set(Provider.name, targetPriority + 1);\n            }\n        });\n\n        /**\n         * Sort the service providers based on thier name and priority\n         */\n        const sorted = providers.sort(\n            (A, B) => (priorityMap.get(B.name) ?? 0) - (priorityMap.get(A.name) ?? 0)\n        );\n\n        /**\n         * If debug is enabled, let's show the loaded service provider info\n         */\n        if (process.env.APP_DEBUG === 'true') {\n            console.table(\n                sorted.map((P) => ({\n                    Provider: P.name,\n                    Priority: priorityMap.get(P.name),\n                    Order: (P as any).order || 'N/A',\n                }))\n            );\n        }\n\n        return sorted\n    }\n\n    registerProviders (providers: Array<new (_app: Application) => IServiceProvider>): void {\n        this.externalProviders.push(...providers)\n    }\n\n    /**\n     * Register a provider\n     */\n    public async register (provider: IServiceProvider) {\n        await provider.register()\n        this.providers.push(provider)\n    }\n\n    /**\n     * Boot all providers after registration\n     */\n    public async boot () {\n        if (this.booted) return\n\n        for (const provider of this.providers) {\n            if (provider.boot) {\n                await provider.boot()\n            }\n        }\n\n        this.booted = true\n    }\n\n    /**\n     * Attempt to dynamically import an optional module\n     */\n    private async safeImport (moduleName: string) {\n        try {\n            const mod = await import(moduleName)\n            return mod.default ?? mod ?? {}\n        } catch {\n            return null\n        }\n    }\n\n    /**\n     * Get the base path of the app\n     * \n     * @returns \n     */\n    getBasePath (): string {\n        return this.basePath\n    }\n\n    /**\n     * Dynamically retrieves a path property from the class.\n     * Any property ending with \"Path\" is accessible automatically.\n     *\n     * @param name - The base name of the path property\n     * @returns \n     */\n    getPath (name: IPathName, pth?: string) {\n        return path.join(this.paths.getPath(name, this.basePath), pth ?? '')\n    }\n\n    /**\n     * Programatically set the paths.\n     *\n     * @param name - The base name of the path property\n     * @param path - The new path\n     * @returns \n     */\n    setPath (name: IPathName, path: string) {\n        return this.paths.setPath(name, path, this.basePath)\n    }\n\n    /**\n     * Returns the installed version of the system core and typescript.\n     *\n     * @returns \n     */\n    getVersion (key: 'app' | 'ts') {\n        return this.versions[key]?.replaceAll(/\\^|~/g, '')\n    }\n}\n","import { Application } from '.'\nimport { IController } from '@h3ravel/shared'\n\n/**\n * Base controller class\n */\nexport abstract class Controller implements IController {\n    protected app: Application\n\n    constructor(app: Application) {\n        this.app = app\n    }\n\n    public show (..._ctx: any[]): any { return }\n    public index (..._ctx: any[]): any { return }\n    public store (..._ctx: any[]): any { return }\n    public update (..._ctx: any[]): any { return }\n    public destroy (..._ctx: any[]): any { return }\n}\n","import { Application } from './Application'\nimport { IServiceProvider } from '@h3ravel/shared'\n\nexport abstract class ServiceProvider implements IServiceProvider {\n    public static order?: `before:${string}` | `after:${string}` | string | undefined;\n    public static priority = 0;\n    protected app: Application\n\n    constructor(app: Application) {\n        this.app = app\n    }\n\n    /**\n     * Register bindings to the container.\n     * Runs before boot().\n     */\n    abstract register (): void | Promise<void>\n\n    /**\n     * Perform post-registration booting of services.\n     * Runs after all providers have been registered.\n     */\n    boot?(): void | Promise<void>\n}\n","import { Application, ServiceProvider } from \"..\";\n\nimport { IServiceProvider } from \"@h3ravel/shared\";\n\nexport type ServiceProviderConstructor = (new (app: Application) => ServiceProvider) & IServiceProvider;\n","export function Inject (...dependencies: string[]) {\n    return function (target: any) {\n        target.__inject__ = dependencies;\n    };\n}\n\n/**\n * Allows binding dependencies to both class and class methods \n * \n * @returns \n */\nexport function Injectable (): ClassDecorator & MethodDecorator {\n    return (...args: any[]) => {\n        if (args.length === 1) {\n            void args[0]; // class target\n        }\n        if (args.length === 3) {\n            void args[0]; // target\n            void args[1]; // propertyKey\n            void args[2]; // descriptor\n        }\n    };\n}\n","export default class { }\n","import { HttpContext, IMiddleware } from '@h3ravel/shared'\n\nimport type { H3Event } from 'h3'\n\n/**\n * Kernel class handles middleware execution and response transformations.\n * It acts as the core middleware pipeline for HTTP requests.\n */\nexport class Kernel {\n    /**\n     * @param context - A factory function that converts an H3Event into an HttpContext.\n     * @param middleware - An array of middleware classes that will be executed in sequence.\n     */\n    constructor(\n        protected context: (event: H3Event) => HttpContext,\n        protected middleware: IMiddleware[] = [],\n    ) { }\n\n    /**\n     * Handles an incoming request and passes it through middleware before invoking the next handler.\n     * \n     * @param event - The raw H3 event object.\n     * @param next - A callback function that represents the next layer (usually the controller or final handler).\n     * @returns A promise resolving to the result of the request pipeline.\n     */\n    async handle (\n        event: H3Event,\n        next: (ctx: HttpContext) => Promise<unknown>\n    ): Promise<unknown> {\n        /**\n         * Convert the raw event into a standardized HttpContext\n         */\n        const ctx = this.context(event)\n        const { app } = ctx.request\n\n        /**\n         * Dynamically bind the view renderer to the service container.\n         * This allows any part of the request lifecycle to render templates using Edge.\n         */\n        app.bind('view', () => async (template: string, params?: Record<string, any>) => {\n            const edge = app.make('edge')\n            return ctx.response.html(await edge.render(template, params))\n        })\n\n        /**\n         * Run middleware stack and obtain result\n         */\n        const result = await this.runMiddleware(ctx, () => next(ctx))\n\n        /**\n         * If a plain object is returned from a controller or middleware,\n         * automatically set the JSON Content-Type header for the response.\n         */\n        if (result !== undefined && this.isPlainObject(result)) {\n            event.res.headers.set('Content-Type', 'application/json; charset=UTF-8')\n        }\n\n        return result\n    }\n\n    /**\n     * Sequentially runs middleware in the order they were registered.\n     * \n     * @param context - The standardized HttpContext.\n     * @param next - Callback to execute when middleware completes.\n     * @returns A promise resolving to the final handler's result.\n     */\n    private async runMiddleware (\n        context: HttpContext,\n        next: (ctx: HttpContext) => Promise<unknown>\n    ) {\n        let index = -1\n\n        const runner = async (i: number): Promise<unknown> => {\n            if (i <= index) throw new Error('next() called multiple times')\n            index = i\n            const middleware = this.middleware[i]\n\n            if (middleware) {\n                /**\n                 * Execute the current middleware and proceed to the next one\n                 */\n                return middleware.handle(context, () => runner(i + 1))\n            } else {\n                /**\n                 * If no more middleware, call the final handler\n                 */\n                return next(context)\n            }\n        }\n\n        return runner(0)\n    }\n\n    /**\n     * Utility function to determine if a value is a plain object or array.\n     * \n     * @param value - The value to check.\n     * @returns True if the value is a plain object or array, otherwise false.\n     */\n    private isPlainObject (value: unknown): value is Record<string, unknown> {\n        return typeof value === 'object' &&\n            value !== null &&\n            (value.constructor === Object || value.constructor === Array)\n    }\n}\n","import 'reflect-metadata'\n\nimport { ServiceProvider } from '../ServiceProvider'\n\n/**\n * Bootstraps core services and bindings.\n * \n * Bind essential services to the container (logger, config repository).\n * Register app-level singletons.\n * Set up exception handling.\n * \n * Auto-Registered\n */\nexport class CoreServiceProvider extends ServiceProvider {\n    public static priority = 999;\n\n    register () {\n        // Core bindings\n    }\n}\n","import { Edge } from 'edge.js'\nimport { ServiceProvider } from '../ServiceProvider'\n\nexport class ViewServiceProvider extends ServiceProvider {\n    public static priority = 995;\n\n    register (): void {\n        const config = this.app.make('config')\n        const edge = Edge.create({\n            cache: process.env.NODE_ENV === 'production'\n        })\n\n        edge.mount(this.app.getPath('views'))\n\n        edge.global('asset', this.app.make('asset'))\n        edge.global('config', config.get)\n        edge.global('app', this.app)\n\n        this.app.bind('edge', () => edge)\n    }\n}\n","/**\n * @file Automatically generated by barrelsby.\n */\n\nexport * from './Application';\nexport * from './Container';\nexport * from './Controller';\nexport * from './ServiceProvider';\nexport * from './Contracts/ServiceProviderConstructor';\nexport * from './Di/Inject';\nexport * from './Exceptions/Handler';\nexport * from './Http/Kernel';\nexport * from './Providers/CoreServiceProvider';\nexport * from './Providers/ViewServiceProvider';\n"],"mappings":"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","names":["Container","bindings","Map","singletons","hasAnyDecorator","target","Reflect","getMetadataKeys","length","paramLength","i","bind","key","factory","set","singleton","has","get","make","build","Error","name","ClassType","dependencies","Array","isArray","__inject__","map","alias","paramTypes","getMetadata","dep","Application","Container","paths","PathLoader","booted","versions","app","ts","basePath","providers","externalProviders","setPath","loadOptions","registerBaseBindings","dotenv","config","quiet","bind","registerConfiguredProviders","getAllProviders","ProviderClass","provider","register","safeImport","getPath","core","dependencies","devDependencies","typescript","getConfiguredProviders","CoreServiceProvider","ViewServiceProvider","coreProviders","allProviders","uniqueProviders","Array","from","Set","sortProviders","priorityMap","Map","forEach","Provider","set","name","priority","order","direction","target","split","targetPriority","get","sorted","sort","A","B","process","env","APP_DEBUG","console","table","map","P","Priority","Order","registerProviders","push","boot","moduleName","mod","default","getBasePath","pth","path","join","getVersion","key","replaceAll","Controller","app","show","_ctx","index","store","update","destroy","ServiceProvider","order","priority","app","Inject","dependencies","target","__inject__","Injectable","args","length","Kernel","context","middleware","handle","event","next","ctx","app","request","bind","template","params","edge","make","response","html","render","result","runMiddleware","undefined","isPlainObject","res","headers","set","index","runner","i","Error","value","Object","Array","CoreServiceProvider","ServiceProvider","priority","register","ViewServiceProvider","ServiceProvider","priority","register","config","app","make","edge","Edge","create","cache","process","env","NODE_ENV","mount","getPath","global","get","bind"]}