import { __awaiter } from "tslib";
import { Inject, Injectable, Optional } from '@angular/core';
import { LOGGER } from '@anglr/common';
import * as i0 from "@angular/core";
/**
 * Dynamic module items provider for rest module items
 */
export class RestDynamicModuleItemsProvider {
    //######################### constructor #########################
    constructor(_logger) {
        this._logger = _logger;
    }
    //######################### public methods - implementation of DynamicItemLoaderProvider #########################
    /**
     * @inheritdoc
     */
    tryToGet(source) {
        var _a, _b;
        return __awaiter(this, void 0, void 0, function* () {
            switch (source.package) {
                case 'rest-components':
                    {
                        try {
                            (_a = this._logger) === null || _a === void 0 ? void 0 : _a.debug('RestDynamicModuleItemsProvider: trying to get item {{@item}}', { item: { name: source.name, package: source.package } });
                            const dynamicItemModule = yield import(`../../dynamicItems/${source.name}/type`);
                            return dynamicItemModule;
                        }
                        catch (e) {
                            (_b = this._logger) === null || _b === void 0 ? void 0 : _b.debug('RestDynamicModuleItemsProvider: item {{@item}} was not found, reason: ' + e, { item: { name: source.name, package: source.package } });
                        }
                        break;
                    }
                default:
                    {
                        return null;
                    }
            }
            return null;
        });
    }
}
RestDynamicModuleItemsProvider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: RestDynamicModuleItemsProvider, deps: [{ token: LOGGER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
RestDynamicModuleItemsProvider.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: RestDynamicModuleItemsProvider });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: RestDynamicModuleItemsProvider, decorators: [{
            type: Injectable
        }], ctorParameters: () => [{ type: undefined, decorators: [{
                    type: Inject,
                    args: [LOGGER]
                }, {
                    type: Optional
                }] }] });
//# sourceMappingURL=restDynamicModuleItemsProvider.service.js.map