{"version":3,"file":"morphi.mjs","sources":["../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/models.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/crud/formly-repeat-component.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/crud/formly-group-wrapper-component.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/symbols.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/helpers.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/framework/framework-context-base.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/realtime/realtime.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/realtime/realtime-subs-manager.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/realtime/broadcast-channel-dummy.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/realtime/broadcast-api-io-mock-client.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/realtime/realtime-browser-rxjs.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/framework/framework-context-browser-app.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/realtime/broadcast-api-io-mock-server.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/realtime/realtime-nodejs.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/realtime/index.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/framework/framework-context-node-app.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/framework/framework-context.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/init-method/init-method-browser.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/init-method/transform-to-browser.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/init-method/entity-process.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/init-method/init-method-node.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/init-method/index.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/crud/activate-base-crud.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/decorators/decorators-endpoint-class.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/decorators/decorators-methods.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/decorators/decorators-params.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/crud/crud-helpers.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/crud/db-crud.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/crud/base-crud-model.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/crud/type-from-entity.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/crud/fromly.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/crud/formly.models.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/crud/pagination-config.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/crud/index.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/decorators/index.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/framework/framework-helpers.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/framework/framework-controller.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/framework/framework-entity.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/framework/framework-repository.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/framework/framework-start.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/framework/framework-models.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/framework/index.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/lib/index.ts","../../../tmp-libs-for-dist-websql/morphi/projects/morphi/src/morphi.ts"],"sourcesContent":["\n\nimport { Response, RequestHandler } from 'express';\nimport { Response as ExpressResponse, Request as ExpressRequest } from 'express';\nimport { Models as ModelsNg2Rest } from 'ng2-rest/websql';\n\n\nimport { CLASS } from 'typescript-class-helpers/websql';\n\n\nexport namespace Models {\n\n  export import Rest = ModelsNg2Rest;\n\n  export type ContextENDPOINT = { target: Function; initFN: Function; };\n\n  export type FormlyFromType = 'material' | 'bootstrap';\n\n\n  export type ExpressContext<T> = (req: ExpressRequest, res: ExpressResponse) => T;\n\n  export type SyncResponse<T> = string | T;\n\n  export type ResponseFuncOpt<T> = {\n    limitSize?: (enties: Function | Function[], include: string[], exclude: string[]) => void;\n  }\n\n  export type SyncResponseFunc<T> = (options?: ResponseFuncOpt<T>) => SyncResponse<T>;\n  export type MixResponse<T> = SyncResponse<T> | ExpressContext<T>;\n\n  export interface ClientAction<T> {\n    received?: Rest.PromiseObservableMix<Rest.HttpResponse<T>>;\n  }\n\n  export interface __Response<T> {\n\n    send?: MixResponse<T>;\n\n  }\n\n  export interface AsyncResponse<T> {\n    (req?: ExpressRequest, res?: ExpressResponse): Promise<SyncResponse<T> | SyncResponseFunc<T>>;\n  }\n\n  export type Response<T = string> = (__Response<T> | AsyncResponse<T>) & ClientAction<T> & __Response<T>;\n\n  export class Errors {\n\n    public toString = (): string => {\n      return this.message\n    }\n\n    private constructor(public message: string, private code: ModelsNg2Rest.HttpCode = 400) {\n\n    }\n\n    private static create(message: string, code: ModelsNg2Rest.HttpCode = 400) {\n      return new Errors(message, code);\n    }\n\n    public static entityNotFound(entity?: Function) {\n      return Errors.create(`Entity ${CLASS.getName(entity)} not found`);\n    }\n\n    public static custom(message: string, code: ModelsNg2Rest.HttpCode = 400) {\n      return Errors.create(message, code);\n    }\n\n  }\n\n\n  export interface AuthCallBack {\n    (methodReference: Function): RequestHandler;\n  }\n\n\n\n}\n\n ;({}); // @--end-of-file-for-module=morphi lib/models.ts","\n\nimport { Component } from '@angular/core';\nimport { FieldArrayType, FormlyFormBuilder } from '@ngx-formly/core';\n\n/*\n\nDON'T FORGET\n...\n FormlyModule.forRoot({\n      types: [\n        { name: 'repeat', component: RepeatTypeComponent },\n      ],\n    }),\n...\n\n*/\n\n\n@Component({\n  selector: 'formly-repeat-section',\n  template: `\n    <div  *ngIf=\"field.fieldGroup && field.fieldGroup.length === 0\" >\n      Press button to add new element...\n    </div>\n    <div *ngFor=\"let field of field.fieldGroup; let i = index;\" class=\"firedev-formly-array\"  >\n      <formly-group\n        [model]=\"model[i]\"\n        [field]=\"field\"\n        [options]=\"options\"\n        [form]=\"formControl\">\n        <div>\n          <button class=\"btn btn-danger\" type=\"button\" (click)=\"remove(i)\">Remove</button>\n        </div>\n      </formly-group>\n    </div>\n    <div>\n      <button class=\"btn btn-primary\" type=\"button\" (click)=\"add()\">{{ labelTemplate }}</button>\n    </div>\n  `,\n  styles: [\n    `\n      :host {\n        display: block;\n        padding: 5px;\n        margin-bottom: 5px;\n        border: 1px solid gray;\n      }\n\n      formly-group {\n        display: block;\n        border: 1px dashed gray;\n        margin-bottom: 5px;\n        padding: 5px;\n      }\n\n      .firedev-formly-array {\n        padding: 5px;\n        background: white;\n      }\n\n    `\n  ]\n})\nexport class RepeatTypeComponent extends FieldArrayType {\n  get labelTemplate() {\n    // @ts-ignore\n    return this.field.fieldArray.templateOptions.label; // TODO QUICK_FIX @LAST\n  }\n  constructor(builder: FormlyFormBuilder) { // TODO QUICK_FIX\n    // @ts-ignore\n    super(builder);\n  }\n}\n\n ;({}); // @--end-of-file-for-module=morphi lib/crud/formly-repeat-component.ts","\n\nimport { Component, ViewChild, ViewContainerRef } from '@angular/core';\nimport { FieldWrapper } from '@ngx-formly/core';\n\n@Component({\n  selector: 'formly-horizontal-wrapper',\n  template: `\n    <div class=\"form-group row\">\n      <label [attr.for]=\"id\" class=\"col-sm-2 col-form-label\" *ngIf=\"to.label\">\n        {{ to.label }}\n        <ng-container *ngIf=\"to.required && to.hideRequiredMarker !== true\">*</ng-container>\n      </label>\n      <div class=\"col-sm-10\">\n        <ng-template #fieldComponent></ng-template>\n      </div>\n    </div>\n  `,\n  styles: [\n    `\n    :host {\n      display: block;\n      padding: 5px;\n      margin-bottom: 5px;\n      border: 1px dotted gray;\n    }\n    `\n  ]\n})\nexport class FormlyHorizontalWrapper extends FieldWrapper {\n  @ViewChild('fieldComponent', { read: ViewContainerRef }) fieldComponent: ViewContainerRef;\n}\n\n ;({}); // @--end-of-file-for-module=morphi lib/crud/formly-group-wrapper-component.ts","\n\nimport { _ } from 'tnp-core/websql';\n\nexport const SYMBOL = {\n  HAS_TABLE_IN_DB: Symbol(),\n  MDC_KEY: 'modeldataconfig',\n  WEBSQL_REST_PROGRESS_FUN: Symbol(),\n  WEBSQL_REST_PROGRESS_FUN_START: Symbol(),\n  WEBSQL_REST_PROGRESS_FUN_DONE: Symbol(),\n  WEBSQL_REST_PROGRESS_TIMEOUT: Symbol(),\n  REALTIME: {\n    NAMESPACE: 'firedevrealtime',\n    TABLE_CHANGE(tableName: string) {\n      return `listentablename${tableName}`;\n    },\n    /**\n    * for backendSocket.in(ROOM_NAME).emit(EVENT)\n    *\n    * Room names are uniqe..\n    * here I am limiting number of event for clients.\n    */\n    ROOM_NAME: { // it identifys group of client to notify\n      CUSTOM(customEvent: string) {\n        return `roomcustomevnet${customEvent}`;\n      },\n      UPDATE_ENTITY(className: string, entityId: number | string) {\n        return `room${_.camelCase(className)}${entityId}`.toLowerCase();\n      },\n      UPDATE_ENTITY_PROPERTY(className: string, property: string, entityId: number | string) {\n        return `room${_.camelCase(className)}${_.camelCase(property)}${entityId}`.toLowerCase();\n      },\n\n      SUBSCRIBE: {\n        CUSTOM: 'roomSubscribeCustomRoomEvent',\n        ENTITY_UPDATE_EVENTS: 'roomSubscribeEntityEvents',\n        ENTITY_PROPERTY_UPDATE_EVENTS: 'roomSubscribeEntityPropertyEvents',\n      },\n      UNSUBSCRIBE: {\n        CUSTOM: 'roomUnsubscribeCustomRoomEvent',\n        ENTITY_UPDATE_EVENTS: 'roomUnsubscribeEntityEvents',\n        ENTITY_PROPERTY_UPDATE_EVENTS: 'roomUnsubscribeEntityPropertyEvents',\n      }\n    }\n  },\n  X_TOTAL_COUNT: 'x-total-count',\n  CRUD_TABLE_MODEL: 'model',\n  CRUD_TABLE_MODELS: 'models',\n  CIRCURAL_OBJECTS_MAP_BODY: 'circuralmapbody',\n  CIRCURAL_OBJECTS_MAP_QUERY_PARAM: 'circuralmapbody',\n  MAPPING_CONFIG_HEADER: 'mappingheader',\n  MAPPING_CONFIG_HEADER_BODY_PARAMS: 'mhbodyparams',\n  MAPPING_CONFIG_HEADER_QUERY_PARAMS: 'mhqueryparams',\n  ENDPOINT_META_CONFIG: 'ng2_rest_endpoint_config',\n  CLASS_DECORATOR_CONTEXT: '$$ng2_rest_class_context',\n  SOCKET_MSG: 'socketmessageng2rest',\n  ANGULAR: {\n    INPUT_NAMES: Symbol()\n  },\n  ERROR_MESSAGES: {\n    CLASS_NAME_MATCH: `Please check if your \"class name\" matches  @Controller( className ) or @Entity( className )`\n  }\n}\n\n ;({}); // @--end-of-file-for-module=morphi lib/symbols.ts","\n\n\nimport { Helpers, _, crossPlatformPath } from 'tnp-core/websql';\n\nimport { path } from 'tnp-core/websql';\n\n/* */\n/* */\n/* */\n/* */\n  \n\nimport * as JSON5 from 'json5';\nimport { Helpers as HelpersNg2Rest } from 'ng2-rest/websql';\nimport { Models } from './models';\n\n\nimport type { Response as ExpressResponse, Request as ExpressRequest } from 'express';\n\nimport { CLASS } from 'typescript-class-helpers/websql';\n\n\nexport class MorphiHelpers extends HelpersNg2Rest {\n\n\n\n\n  static string(s: string) {\n    return {\n      fillUpTo(nCharacters: number) {\n        return _.times(nCharacters, n => {\n          if (s.charAt(n)) {\n            return s.charAt(n);\n          }\n          return ' ';\n        }).join('')\n      }\n    }\n  }\n\n\n\n  static isGoodPath(p: string) {\n    return p && typeof p === 'string' && p.trim() !== ''\n  }\n\n\n\n  static getPathFor(target: Function) {\n    const configs = CLASS.getConfigs(target) as any[];\n\n    const classConfig: Models.Rest.ClassConfig = configs[0];\n    const parentscalculatedPath = _\n      .slice(configs, 1)\n      .reverse()\n      .map(bc => {\n        if (MorphiHelpers.isGoodPath(bc.path)) {\n          return bc.path\n        }\n        return CLASS.getName(bc.classReference);\n      }).join('/');\n\n    return `/${parentscalculatedPath}/${CLASS.getName(target)}`;\n  }\n\n\n\n  static hasParentClassWithName(target: Function, name: string, targets = []): boolean {\n    if (!target) {\n\n      return false;\n    }\n    targets.push(target)\n    let targetProto = target['__proto__'] as Function;\n    if (_.isFunction(targetProto) && CLASS.getName(targetProto) === name) {\n\n      return true;\n    }\n    return this.hasParentClassWithName(targetProto, name, targets);\n  }\n\n\n\n  static tryTransformParam(param) {\n    if (typeof param === 'string') {\n      let n = Number(param);\n      if (!isNaN(n)) return n;\n      const bool = param.trim().toLowerCase();\n      if (bool === 'true') {\n        return true;\n      }\n      if (bool === 'false') {\n        return false;\n      }\n      try {\n        const t = JSON5.parse(param);\n        return t;\n      } catch (e) {\n        return param;\n      }\n    }\n    return param;\n  }\n\n\n\n  static getExpressPath(c: Models.Rest.ClassConfig, pathOrClassConfig: Models.Rest.MethodConfig | string) {\n    if (typeof pathOrClassConfig === 'string') return `${c.calculatedPath}${pathOrClassConfig}`.replace(/\\/$/, '')\n    return `${c.calculatedPath}${pathOrClassConfig.path}`.replace(/\\/$/, '')\n  }\n\n\n\n  static defaultType(value) {\n    if (typeof value === 'string') return '';\n    if (typeof value === 'boolean') return false;\n    if (Array.isArray(value)) return {};\n    if (typeof value === 'object') return {};\n  }\n\n\n\n  static parseJSONwithStringJSONs(object: Object, waring = false): Object {\n\n    if (!_.isObject(object)) {\n      if (waring) {\n        console.error(`\n        parseJSONwithStringJSONs(...)\n        Parameter should be a object, but is ${typeof object}\n        `, object)\n      }\n\n      return object;\n    }\n\n    let res = _.cloneDeep(object);\n\n    Object.keys(res).forEach(key => {\n      let isJson = false;\n      try {\n        const possibleJSON = JSON.parse(res[key]);\n        res[key] = possibleJSON;\n        isJson = true;\n      } catch (e) {\n        isJson = false;\n      }\n\n      if (isJson) {\n        res[key] = this.parseJSONwithStringJSONs(res[key], false)\n      }\n    });\n\n    return res;\n  }\n\n\n\n\n\n  static getResponseValue<T>(response: Models.Response<T>, options?: { req: ExpressRequest, res: ExpressResponse }): Promise<T> {\n\n    const { req, res } = options || {};\n    return new Promise<T>(async (resolve, reject) => {\n\n      const resp: Models.__Response<T> = response;\n      if (!response && response.send === undefined) {\n        console.error('[firedev] Bad response value for function');\n        resolve(undefined);\n      }\n      else if (typeof response === 'function') {\n        const asyncResponse: Models.AsyncResponse<T> = response as any;\n        try {\n          const result = await asyncResponse(req, res);\n          resolve(result as any);\n        } catch (e) {\n          console.error('[firedev] Error during function call inside controller')\n          Helpers.renderError(e);\n          reject(e);\n        }\n      } else if (typeof response === 'object') {\n        try {\n          if (typeof response.send === 'function') {\n            const result = (response as any).send(req, res) as any\n            resolve(result)\n          } else {\n            resolve(response.send as any)\n          }\n        } catch (error) {\n          console.error('[firedev] Bad synchonus function call ')\n          Helpers.renderError(error);\n          reject(error);\n        }\n      } else reject(`[firedev] Not recognized type of reposne ${response}`);\n\n    });\n\n  }\n\n\n\n\n\n  static isPlainFileOrFolder(filePath) {\n    return /^([a-zA-Z]|\\-|\\_|\\@|\\#|\\$|\\!|\\^|\\&|\\*|\\(|\\))+$/.test(filePath);\n  }\n\n\n\n\n\n}\n\n ;({}); // @--end-of-file-for-module=morphi lib/helpers.ts","\n\n\nexport class FrameworkContextBase {\n\n\n}\n\n ;({}); // @--end-of-file-for-module=morphi lib/framework/framework-context-base.ts","\n\nimport { Socket } from 'socket.io'\nimport * as socketio from 'socket.io'\nimport { FrameworkContext } from '../framework/framework-context';\nimport type { BroadcastApiIoMockServer } from './broadcast-api-io-mock-server';\nimport type { BroadcastApiIoMockClient } from './broadcast-api-io-mock-client';\n\nexport class RealtimeBase {\n\n  private static contexts = [];\n  private static instances = [];\n  public static by(context: FrameworkContext): RealtimeBase {\n    const indexContext = this.contexts.findIndex(c => c === context);\n    if (indexContext === -1) {\n      this.contexts.push(context);\n      const instance = new RealtimeBase(context)\n      this.instances.push(instance);\n      return instance;\n    } else {\n      return this.instances[indexContext];\n    }\n  }\n\n  public FE: BroadcastApiIoMockClient; //  Socket; // TODO QUICK_FIX\n  public FE_REALTIME: BroadcastApiIoMockClient; //  Socket; // TODO QUICK_FIX;\n\n  public BE: BroadcastApiIoMockServer; // socketio.Server;\n  public BE_REALTIME: BroadcastApiIoMockServer; // socketio.Namespace;\n\n\n\n  private constructor(protected context: FrameworkContext) {\n\n  }\n\n  public pathFor(namespace?: string) {\n    const uri = this.context.uri;\n    const nsp = namespace ? namespace : '';\n    const pathname = uri.pathname !== '/' ? uri.pathname : '';\n    const prefix = `socketnodejs`;\n    const href = `${uri.origin}${pathname}/${prefix}${nsp}`;\n\n    return new URL(href) as URL;\n  }\n\n}\n\n ;({}); // @--end-of-file-for-module=morphi lib/realtime/realtime.ts","\n\nimport * as _ from 'lodash';\nimport { Level, Log } from 'ng2-logger/websql';\nimport { Subscriber } from \"rxjs\";\nimport { Helpers } from 'tnp-core/websql';\nimport { FrameworkContext } from \"../framework/framework-context\";\nimport { SYMBOL } from \"../symbols\";\nimport type { BroadcastApiIoMockClient } from './broadcast-api-io-mock-client';\n\nimport { RealtimeBase } from \"./realtime\";\n/* */\n/* */\n  \n\nconst log = Log.create('REALTIME SUBS MANAGER',\n  Level.__NOTHING\n)\n\nexport type SubscribtionRealtime = {\n  context: FrameworkContext;\n  customEvent: string;\n  roomName: string;\n  property: string;\n}\nexport class RealtimeSubsManager {\n\n  private static idFrm(options: SubscribtionRealtime) {\n    const url = new URL(options.context.host);\n    return `${url.origin}|${options.roomName}|${options.property}|${options.customEvent}`;\n  }\n  private static roomSubs = {};\n  public static from(options: SubscribtionRealtime) {\n    const pathToInstance = RealtimeSubsManager.idFrm(options);\n    if (!RealtimeSubsManager.roomSubs[pathToInstance]) {\n      RealtimeSubsManager.roomSubs[pathToInstance] = new RealtimeSubsManager(options);\n    }\n    return RealtimeSubsManager.roomSubs[pathToInstance] as RealtimeSubsManager;\n  }\n\n  private isListening = false;\n  private constructor(private options: SubscribtionRealtime) { }\n\n  private observers: Subscriber<any>[] = []\n\n  startListenIfNotStarted(realtime: BroadcastApiIoMockClient) {\n\n    if (this.options.context.disabledRealtime) {\n      console.warn(`[Firedev][startListenIfNotStarted] sockets are disabled`)\n      return;\n    }\n\n    if (!realtime) {\n      console.warn(`[Firedev][startListenIfNotStarted] invalid socket connection`)\n      return;\n    }\n\n    if (!this.isListening) {\n\n      log.i(`subscribe to ${this.options?.roomName}`, this.options)\n      this.isListening = true;\n\n      if (this.options.customEvent) { // this means: send to current client custom event notification\n        realtime.emit(SYMBOL.REALTIME.ROOM_NAME.SUBSCRIBE.CUSTOM, this.options.roomName);\n      } else {\n        if (_.isString(this.options.property)) {\n\n          realtime.emit(SYMBOL.REALTIME.ROOM_NAME.SUBSCRIBE.ENTITY_PROPERTY_UPDATE_EVENTS, this.options.roomName);\n        } else {\n\n          realtime.emit(SYMBOL.REALTIME.ROOM_NAME.SUBSCRIBE.ENTITY_UPDATE_EVENTS, this.options.roomName);\n        }\n      }\n\n\n      realtime.on(this.options.roomName, (data) => {\n\n        this.update(data);\n      });\n    }\n  }\n\n  add(observer: Subscriber<any>) {\n\n    this.observers.push(observer);\n  }\n\n  remove(observer: Subscriber<any>) {\n\n    this.observers = this.observers.filter(obs => obs !== observer);\n    if (this.observers.length === 0) {\n\n      this.isListening = false;\n      const { context, customEvent, roomName, property } = this.options;\n      const base = RealtimeBase.by(context);\n      const realtime = base.FE_REALTIME;\n\n      if (customEvent) {\n        realtime.emit(SYMBOL.REALTIME.ROOM_NAME.UNSUBSCRIBE.CUSTOM, roomName)\n      } else {\n        if (_.isString(property)) {\n          realtime.emit(SYMBOL.REALTIME.ROOM_NAME.UNSUBSCRIBE.ENTITY_PROPERTY_UPDATE_EVENTS, roomName)\n        } else {\n          realtime.emit(SYMBOL.REALTIME.ROOM_NAME.UNSUBSCRIBE.ENTITY_UPDATE_EVENTS, roomName)\n        }\n      }\n    }\n  }\n\n  private update(data: any) {\n\n\n    const ngZone = this.options.context.ngZone;\n\n\n    this.observers.forEach(observer => {\n\n      if (!observer.closed) {\n        if (ngZone) {\n          ngZone.run(() => {\n            observer.next(data);\n          })\n        } else {\n          observer.next(data);\n        }\n      }\n    });\n  }\n\n}\n\n ;({}); // @--end-of-file-for-module=morphi lib/realtime/realtime-subs-manager.ts","\n\nimport { _ } from 'tnp-core/websql';\nimport { Log, Level } from \"ng2-logger/websql\";\nimport { Observable, Subject, Subscription } from \"rxjs\";\n/* */\n/* */\n  \nconst log = Log.create('[CLIENT/SERVER] broadcast dummy channel',\n  Level.__NOTHING\n);\n\nexport class IsomorphicBroadCastChannel {\n\n  public static hosts: {\n    [serverHref: string]: {\n      events: { [eventName: string]: IsomorphicBroadCastChannel; }\n    }\n  } = {};\n\n  static for(eventName: string, serverHref: string) {\n    const url = new URL(serverHref);\n\n    serverHref = url.origin;\n    if (!IsomorphicBroadCastChannel.hosts[serverHref]) {\n      IsomorphicBroadCastChannel.hosts[serverHref] = {\n        events: {}\n      };\n    }\n\n    if (!IsomorphicBroadCastChannel.hosts[serverHref].events[eventName]) {\n      IsomorphicBroadCastChannel.hosts[serverHref].events[eventName] = new IsomorphicBroadCastChannel(\n        serverHref,\n        eventName,\n      );\n    }\n    const event = IsomorphicBroadCastChannel.hosts[serverHref].events[eventName] as IsomorphicBroadCastChannel;\n    return event;\n  }\n\n  private callbacks = [];\n\n  public set onmessage(callback: (a: MessageEvent) => any) {\n    this.callbacks.push(callback);\n  }\n\n  private sub = new Subject();\n  private subscribtion: Subscription;\n\n  private constructor(\n    public readonly serverHref: string,\n    public readonly eventName: string\n  ) {\n\n    this.subscribtion = (this.sub as Observable<any>).subscribe((data) => {\n\n\n\n\n      this.callbacks.forEach(callback => {\n\n\n        callback({\n          data\n        })\n      });\n    })\n  }\n\n  postMessage(data) {\n    setTimeout(() => {\n      this.sub.next(data);\n    });\n  }\n\n  close() {\n\n    this.subscribtion.unsubscribe()\n    delete IsomorphicBroadCastChannel.hosts[this.serverHref].events[this.eventName];\n  }\n\n}\n\n ;({}); // @--end-of-file-for-module=morphi lib/realtime/broadcast-channel-dummy.ts","\n\nimport { Level, Log } from 'ng2-logger/websql';\nimport { _ } from 'tnp-core/websql';\nimport { CLASS } from 'typescript-class-helpers/websql';\nimport { SYMBOL } from '../symbols';\nimport { BroadcastApiClient, BroadcastApiIoOptions, BroadcastApiIoOptionsClient } from './broadcast-api-io.models';\nimport { IsomorphicBroadCastChannel } from './broadcast-channel-dummy';\nconst log = Log.create('[CLIENT] broadcast api mock',\n  Level.__NOTHING\n);\n\n@CLASS.NAME('BroadcastApiIoMockClient')\nexport class BroadcastApiIoMockClient {\n  private static _instaceKey(origin: string, pathname: string) {\n\n    return origin;\n  }\n\n  private static _instances = {};\n  static _isntanceBy(origin: string, options?: BroadcastApiIoOptionsClient) {\n    const key = BroadcastApiIoMockClient._instaceKey(\n      origin,\n      ''// options?.path\n    );\n    if (!BroadcastApiIoMockClient._instances[key]) {\n      BroadcastApiIoMockClient._instances[key] = new BroadcastApiIoMockClient(\n        origin,\n        options\n      );\n    }\n    return BroadcastApiIoMockClient._instances[key] as BroadcastApiIoMockClient;\n  }\n\n  static connect(origin: string, options?: BroadcastApiIoOptionsClient) {\n    return BroadcastApiIoMockClient._isntanceBy(origin, options);\n  }\n\n  public allowedToListenRooms: string[] = [];\n\n  private readonly _url: URL;\n  /**\n   * path name of url.. examples:\n   * /\n   * /something\n   *\n   */\n  readonly nsp: string;\n\n  private constructor(originUrl: string, options?: BroadcastApiIoOptionsClient) {\n    this._url = new URL(originUrl);\n    this.nsp = this._url.pathname;\n  }\n\n  on(roomNameAsEvent: 'connect' | string, callback: (dataFromServer?: any) => any) {\n    if (roomNameAsEvent === 'connect') {\n      setTimeout(() => {\n        callback();\n      })\n      return;\n    }\n\n    const room = IsomorphicBroadCastChannel.for(roomNameAsEvent, this._url.href)\n    room.onmessage = (messageEvent: MessageEvent) => {\n\n      if (this.allowedToListenRooms.includes(roomNameAsEvent)) {\n\n        callback(messageEvent?.data);\n      } else {\n\n      }\n\n    }\n  }\n\n  emit(roomNameForSubOrUnsub: string, data: any) {\n    const room = IsomorphicBroadCastChannel.for(\n      roomNameForSubOrUnsub,\n      this._url.href,\n    );\n\n    room.postMessage(data);\n  }\n\n}\n\nexport const mockIoClient = BroadcastApiIoMockClient as Pick<typeof BroadcastApiIoMockClient, 'connect'>;\n\n ;({}); // @--end-of-file-for-module=morphi lib/realtime/broadcast-api-io-mock-client.ts","\n\nimport { Level, Log } from \"ng2-logger/websql\";\nimport { FrameworkContext } from \"../framework/framework-context\";\nimport { SYMBOL } from \"../symbols\";\nimport { RealtimeBase } from \"./realtime\";\nimport { Helpers, _ } from 'tnp-core/websql';\nimport * as ioClientIo from 'socket.io-client';\nimport { CLASS } from \"typescript-class-helpers/websql\";\nimport { Observable, Subscriber } from 'rxjs';\nimport { RealtimeSubsManager, SubscribtionRealtime } from \"./realtime-subs-manager\";\n\nimport { mockIoClient } from \"./broadcast-api-io-mock-client\";\n\n\nconst log = Log.create('REALTIME RXJS',\n  Level.__NOTHING\n);\n\n\n\nexport type RealtimeBrowserRxjsOptions = {\n  property?: string\n  overrideContext?: FrameworkContext;\n  customEvent?: string;\n};\n\n\nexport class RealtimeBrowserRxjs {\n\n\n  constructor(private context: FrameworkContext) {\n\n    const base = RealtimeBase.by(context);\n\n    if (!context.disabledRealtime) {\n\n      let io\n\n        : typeof mockIoClient\n\n        = ioClientIo?.default ? ioClientIo.default : ioClientIo;\n\n      if (Helpers.isWebSQL) {\n        // @ts-ignore\n        io = mockIoClient;\n      }\n\n      const nspPath = {\n        global: base.pathFor(),\n        realtime: base.pathFor(SYMBOL.REALTIME.NAMESPACE)\n      };\n\n      log.i('[CLIENT] NAMESPACE GLOBAL ', nspPath.global.href + ` host: ${context.host}`)\n      log.i('[CLIENT] NAMESPACE REALTIME', nspPath.realtime.href + ` host: ${context.host}`)\n\n      const global = io.connect(nspPath.global.origin, {\n        path: nspPath.global.pathname\n      });\n\n      base.FE = global as any;\n\n      global.on('connect', () => {\n        log.i(`[CLIENT] conented to GLOBAL namespace ${global.nsp} of host: ${context.host}`)\n      });\n\n\n\n      const realtime = io.connect(nspPath.realtime.origin, {\n        path: nspPath.realtime.pathname\n      }) as any;\n\n      base.FE_REALTIME = realtime;\n\n      realtime.on('connect', () => {\n        log.i(`[CLIENT] conented to REALTIME namespace ${realtime.nsp} host: ${context.host}`)\n      });\n\n\n    }\n\n\n\n  }\n\n\n\n  /**\n   * Changes trigger on backend needs to be done manually.. example code:\n   *\n   * ...\n   * Firedev.Realtime.Server.TrigggerEntityChanges(myEntityInstance);\n   * ...\n   */\n  static listenChangesEntity(entityClassFn, idOrUniqValue: any, options?: RealtimeBrowserRxjsOptions) {\n    options = options || {} as any;\n\n\n    const { property, customEvent } = options;\n    const className = !customEvent && CLASS.getName(entityClassFn);\n\n    if (_.isString(property)) {\n      if (property.trim() === '') {\n        throw new Error(`[Firedev][listenChangesEntity.. incorect property '' for ${className}`);\n      }\n    }\n\n\n    return new Observable((observer) => {\n\n\n      const context = options.overrideContext\n        ? options.overrideContext\n        : FrameworkContext.findForTraget(entityClassFn);\n\n      if (context.disabledRealtime) {\n        Helpers.error(`[Firedev][realtime rxjs] remove firedev config flag:\n\n        ...\n        disabledRealtime: true\n        ...\n\nto use socket realtime connection;\n        `)\n        return () => {\n\n        };\n      }\n      const base = RealtimeBase.by(context);\n      const realtime = base.FE_REALTIME;\n      let roomName: string;\n\n      if (customEvent) {\n        roomName = SYMBOL.REALTIME.ROOM_NAME.CUSTOM(customEvent);\n      } else {\n        roomName = _.isString(property) ?\n          SYMBOL.REALTIME.ROOM_NAME.UPDATE_ENTITY_PROPERTY(className, property, idOrUniqValue) :\n          SYMBOL.REALTIME.ROOM_NAME.UPDATE_ENTITY(className, idOrUniqValue);\n      }\n\n      const roomSubOptions: SubscribtionRealtime = {\n        context,\n        property,\n        roomName,\n        customEvent,\n      };\n\n\n      const inst = RealtimeSubsManager.from(roomSubOptions);\n      inst.add(observer);\n\n      inst.startListenIfNotStarted(realtime);\n\n      return () => {\n        inst.remove(observer);\n      };\n    });\n  }\n\n\n\n\n  static listenChangesEntityTable(entityClassFn: Function) {\n    const className = CLASS.getName(entityClassFn);\n    return RealtimeBrowserRxjs.listenChangesEntity(entityClassFn, void 0, {\n      customEvent: SYMBOL.REALTIME.TABLE_CHANGE(className),\n    })\n  }\n\n\n\n\n  /**\n  * Changes trigger on backend needs to be done manually.. example code:\n  *\n  * ...\n  * Firedev.Realtime.Server.TrigggerEntityChanges(myEntityInstance);\n  * // or\n  * Firedev.Realtime.Server.TrigggerEntityPropertyChanges(myEntityInstance,{ property: 'geolocationX' });\n  * ...\n  */\n  static listenChangesEntityObj(entity, options?: RealtimeBrowserRxjsOptions) {\n    const classFn = CLASS.getFromObject(entity);\n    const config = CLASS.getConfig(classFn);\n    return RealtimeBrowserRxjs.listenChangesEntity(classFn, entity[config.uniqueKey], options);\n  }\n\n\n\n  static listenChangesCustomEvent(context: FrameworkContext, customEvent: string) {\n    return RealtimeBrowserRxjs.listenChangesEntity(void 0, void 0, {\n      overrideContext: context,\n      customEvent,\n    });\n  }\n\n  listenChangesCustomEvent(customEvent: string) {\n    return RealtimeBrowserRxjs.listenChangesCustomEvent(this.context, customEvent);\n  }\n\n\n}\n\n ;({}); // @--end-of-file-for-module=morphi lib/realtime/realtime-browser-rxjs.ts","\n\nimport type { FrameworkContext } from './framework-context';\nimport { Helpers } from 'tnp-core/websql';\nimport { Models } from '../models';\nimport { SYMBOL } from '../symbols';\nimport { CLASS } from 'typescript-class-helpers/websql';\nimport { FrameworkContextBase } from './framework-context-base';\nimport { RealtimeBrowserRxjs } from '../realtime/realtime-browser-rxjs';\n\nexport class FrameworkContextBrowserApp extends FrameworkContextBase {\n\n  readonly realtimerxjs: RealtimeBrowserRxjs;\n  constructor(\n    private context: FrameworkContext) {\n    super();\n  }\n\n  init() {\n    if ((Helpers.isBrowser && !Helpers.isWebSQL)\n/* */\n/* */\n  \n    ) {\n      const notFound: Function[] = [];\n      const providers = this.context.controllersClasses.filter(ctrl => {\n\n        const e = this.context.initFunc.find(e => ctrl === e.target);\n        if (e) {\n\n          e.initFN();\n          return true;\n        } else {\n          const context: Models.ContextENDPOINT = ctrl.prototype[SYMBOL.CLASS_DECORATOR_CONTEXT];\n          if (!context) {\n            notFound.push(ctrl);\n            return false;\n          } else {\n            context.initFN();\n            return true;\n          }\n        }\n      })\n      notFound.forEach(ctrl => {\n        throw `\n\nDecorator \"@ENDPOINT(..)\" is missing on class ${CLASS.getName(ctrl)}\n\nor you are trying to use Entity as Controller\n\n`;\n      });\n      providers.forEach(p => this.context.Providers.push(p))\n    }\n\n    if (Helpers.isBrowser\n/* */\n/* */\n  \n\n      || Helpers.isWebSQL\n\n    ) {\n      //@ts-ignore\n\n      //@ts-ignore\n      this.realtimerxjs = new RealtimeBrowserRxjs(this.context);\n    }\n\n  }\n\n}\n\n ;({}); // @--end-of-file-for-module=morphi lib/framework/framework-context-browser-app.ts","\n\n\nimport { Level, Log } from 'ng2-logger/websql';\nimport { _ } from 'tnp-core/websql';\nimport { CLASS } from 'typescript-class-helpers/websql';\nimport { SYMBOL } from '../symbols';\nimport type { BroadcastApiIoMockClient } from './broadcast-api-io-mock-client';\nimport { BroadcastApiIoOptions } from './broadcast-api-io.models';\nimport { IsomorphicBroadCastChannel } from './broadcast-channel-dummy';\n\n\nconst log = Log.create('[SERVER] broadcast api mock',\n  Level.__NOTHING\n)\n\n\n\nexport class BroadcastApiIoMockServerSocket {\n\n  constructor(\n    public readonly server: BroadcastApiIoMockServer\n  ) {\n\n  }\n\n  private get currentClient() {\n    const BroadcastApiIoMockClientClass: typeof BroadcastApiIoMockClient = CLASS.getBy('BroadcastApiIoMockClient') as any;\n    const ins = BroadcastApiIoMockClientClass._isntanceBy(\n      this.server._url.origin,\n      { path: this.server._url.pathname },\n    );\n    return ins;\n  }\n\n  get nsp() {\n    return {\n      get name() {\n        return '/'; /// I am actuall not using namespaces\n      }\n    }\n  }\n\n\n  /**\n   * Backend gets notyfications from client\n   */\n  on(roomNameToListen: string, callback: (roomNameForEvents: string) => any) {\n\n    if ([\n      SYMBOL.REALTIME.ROOM_NAME.SUBSCRIBE.CUSTOM,\n      SYMBOL.REALTIME.ROOM_NAME.SUBSCRIBE.ENTITY_UPDATE_EVENTS,\n      SYMBOL.REALTIME.ROOM_NAME.SUBSCRIBE.ENTITY_PROPERTY_UPDATE_EVENTS,\n      SYMBOL.REALTIME.ROOM_NAME.UNSUBSCRIBE.CUSTOM,\n      SYMBOL.REALTIME.ROOM_NAME.UNSUBSCRIBE.ENTITY_UPDATE_EVENTS,\n      SYMBOL.REALTIME.ROOM_NAME.UNSUBSCRIBE.ENTITY_PROPERTY_UPDATE_EVENTS,\n    ].includes(roomNameToListen)) {\n      const room = IsomorphicBroadCastChannel.for(\n        roomNameToListen,\n        this.server._url.href,\n      );\n      room.onmessage = (e) => {\n        callback(e.data);\n      };\n    }\n  }\n\n  join(roomName: string) {\n\n    this.currentClient.allowedToListenRooms.push(roomName);\n  }\n\n  leave(roomName: string) {\n    const roomToClose = IsomorphicBroadCastChannel.for(roomName, this.server._url.href);\n    if (roomToClose) {\n      roomToClose.close();\n      this.currentClient.allowedToListenRooms = this.currentClient.allowedToListenRooms\n        .filter(allowedRoomTolisten => allowedRoomTolisten !== roomName);\n    }\n\n  }\n}\n\n\n\nexport class BroadcastApiIoMockServer {\n  readonly _url: URL;\n\n  path() {\n    return this._url.pathname;\n  }\n\n  readonly socket: BroadcastApiIoMockServerSocket;\n  constructor(httpServer: any, options?: BroadcastApiIoOptions) {\n\n    this._url = new URL(options.href);\n\n    this.socket = new BroadcastApiIoMockServerSocket(this);\n\n  }\n\n  on(action: 'connection' | string, callback: (socket: BroadcastApiIoMockServerSocket) => any) {\n    setTimeout(() => {\n      callback(this.socket);\n    });\n  }\n\n  in(roomName: string) {\n    return {\n\n      emit: (eventName: string, data: any) => {\n        const room = IsomorphicBroadCastChannel.for(roomName, this._url.href)\n        room.postMessage(data);\n      }\n    }\n  }\n}\n\n\n\nexport const mockIoServer = (httpServer: any, options?: BroadcastApiIoOptions) => {\n  return new BroadcastApiIoMockServer(httpServer, options)\n};\n\n\n ;({}); // @--end-of-file-for-module=morphi lib/realtime/broadcast-api-io-mock-server.ts","\n\n\n/* */\n/* */\n  \nimport { _ } from 'tnp-core/websql';\nimport { SYMBOL } from '../symbols';\nimport { Log, Level } from 'ng2-logger/websql';\nimport { Helpers } from 'tnp-core/websql';\nimport { BASE_ENTITY } from '../framework/framework-entity';\nimport { RealtimeBase } from './realtime';\nimport { CLASS } from 'typescript-class-helpers/websql';\nimport { FrameworkContext } from '../framework/framework-context';\nimport { mockIoServer } from './broadcast-api-io-mock-server';\n\n\n\nconst log = Log.create('RealtimeNodejs',\n  Level.__NOTHING\n);\n\nconst SOCKET_EVENT_DEBOUNCE = 500;\n\n\nexport class RealtimeNodejs {\n\n  private static jobs = {};\n\n\n  constructor(private context: FrameworkContext) {\n\n    const base = RealtimeBase.by(context);\n    if (!context.disabledRealtime) {\n\n      // @ts-ignore;\n      let io: (typeof mockIoServer)\n/* */\n/* */\n  \n\n      if (Helpers.isWebSQL) {\n        // @ts-ignore\n        io = mockIoServer;\n      }\n\n      const nspPath = {\n        global: base.pathFor(),\n        realtime: base.pathFor(SYMBOL.REALTIME.NAMESPACE)\n      };\n\n      base.BE = io(context.node.httpServer, {\n        path: nspPath.global.pathname,\n\n        href: nspPath.global.href,\n\n      });\n\n      const ioGlobalNsp = base.BE;\n\n      ioGlobalNsp.on('connection', (clientSocket) => {\n        log.i(`client conected to namespace \"${clientSocket.nsp.name}\",  host: ${context.host}`)\n      })\n\n      log.i(`CREATE GLOBAL NAMESPACE: '${ioGlobalNsp.path()}' , path: '${nspPath.global.pathname}'`)\n\n      const ioRealtimeNsp = io(context.node.httpServer, {\n        path: nspPath.realtime.pathname,\n\n        href: nspPath.realtime.href,\n\n      });\n\n\n      log.i(`CREATE REALTIME NAMESPACE: '${ioRealtimeNsp.path()}' , path: '${nspPath.realtime.pathname}' `)\n\n      base.BE_REALTIME = ioRealtimeNsp as any;\n\n      ioRealtimeNsp.on('connection', (backendSocketForClient) => {\n        log.i(`client conected to namespace \"${backendSocketForClient.nsp.name}\",  host: ${context.host}`)\n\n        backendSocketForClient.on(SYMBOL.REALTIME.ROOM_NAME.SUBSCRIBE.CUSTOM, roomName => {\n          log.i(`Joining room ${roomName} in namespace  REALTIME` + ` host: ${context.host}`)\n          backendSocketForClient.join(roomName);\n        });\n\n        backendSocketForClient.on(SYMBOL.REALTIME.ROOM_NAME.SUBSCRIBE.ENTITY_UPDATE_EVENTS, roomName => {\n          log.i(`Joining room ${roomName} in namespace  REALTIME` + ` host: ${context.host}`)\n          backendSocketForClient.join(roomName);\n        });\n\n        backendSocketForClient.on(SYMBOL.REALTIME.ROOM_NAME.SUBSCRIBE.ENTITY_PROPERTY_UPDATE_EVENTS, roomName => {\n          log.i(`Joining room ${roomName} in namespace REALTIME ` + ` host: ${context.host}`)\n          backendSocketForClient.join(roomName);\n        });\n\n        backendSocketForClient.on(SYMBOL.REALTIME.ROOM_NAME.UNSUBSCRIBE.CUSTOM, roomName => {\n          log.i(`Leaving room ${roomName} in namespace  REALTIME` + ` host: ${context.host}`)\n          backendSocketForClient.leave(roomName);\n        });\n\n        backendSocketForClient.on(SYMBOL.REALTIME.ROOM_NAME.UNSUBSCRIBE.ENTITY_UPDATE_EVENTS, roomName => {\n          log.i(`Leaving room ${roomName} in namespace REALTIME ` + ` host: ${context.host}`)\n          backendSocketForClient.leave(roomName);\n        });\n\n        backendSocketForClient.on(SYMBOL.REALTIME.ROOM_NAME.UNSUBSCRIBE.ENTITY_PROPERTY_UPDATE_EVENTS, roomName => {\n          log.i(`Leaving room ${roomName} in namespace REALTIME ` + ` host: ${context.host}`)\n          backendSocketForClient.leave(roomName);\n        });\n\n      })\n    }\n\n  }\n\n\n\n\n  private static __TrigggerEntityChanges(\n    context: FrameworkContext,\n    entityObjOrClass: BASE_ENTITY<any> | Function,\n    property?: string,\n    valueOfUniquPropery?: number | string,\n    customEvent?: string,\n    customEventData?: any,\n  ) {\n    log.i('__triger entity changes')\n\n\n    const base = RealtimeBase.by(context);\n    let roomName: string;\n\n    if (context.disabledRealtime) {\n      return;\n    }\n\n    if (customEvent) {\n      roomName = SYMBOL.REALTIME.ROOM_NAME.CUSTOM(customEvent);\n    } else {\n\n      let entityFn = entityObjOrClass as Function;\n      const enittyIsObject = (!_.isFunction(entityObjOrClass) && _.isObject(entityObjOrClass));\n\n      if (enittyIsObject) {\n        entityFn = CLASS.getBy(CLASS.getNameFromObject(entityObjOrClass)) as any;\n      }\n      const config = CLASS.getConfig(entityFn);\n      const uniqueKey = config.uniqueKey;\n\n      if (enittyIsObject) {\n        valueOfUniquPropery = entityObjOrClass[uniqueKey];\n      }\n\n      if (!valueOfUniquPropery) {\n        Helpers.error(`[Firedev][Realtime] Entity without iD ! ${config.className} `, true, true);\n        return;\n      }\n\n      roomName = _.isString(property) ?\n        SYMBOL.REALTIME.ROOM_NAME.UPDATE_ENTITY_PROPERTY(config.className, property, valueOfUniquPropery) :\n        SYMBOL.REALTIME.ROOM_NAME.UPDATE_ENTITY(config.className, valueOfUniquPropery);\n\n    }\n\n    const job = () => {\n\n      base.BE_REALTIME.in(roomName).emit(roomName, // roomName == eventName in room na\n        customEventData ? customEventData : ''\n      );\n    }\n\n    if (!_.isFunction(RealtimeNodejs.jobs[roomName])) {\n      RealtimeNodejs.jobs[roomName] = _.debounce(() => {\n        job()\n      }, SOCKET_EVENT_DEBOUNCE);\n    }\n\n    RealtimeNodejs.jobs[roomName]();\n\n  }\n\n  public static TrigggerEntityChanges(entityObjOrClass: BASE_ENTITY<any> | Function, idToTrigger?: number | string) {\n    const context = FrameworkContext.findForTraget(entityObjOrClass);\n    if (context.disabledRealtime) {\n      const className = _.isFunction(entityObjOrClass)\n        ? CLASS.getName(entityObjOrClass)\n        : CLASS.getNameFromObject(entityObjOrClass);\n\n      console.warn(`[Firedev][TrigggerEntityChanges] Entity \"${className}' is not realtime`);\n      return;\n    }\n    RealtimeNodejs.__TrigggerEntityChanges(context, entityObjOrClass as any, void 0, idToTrigger);\n  }\n\n\n\n  public static TrigggerEntityPropertyChanges<ENTITY = any>(\n    entityObjOrClass: BASE_ENTITY<any> | Function,\n    property: (keyof ENTITY) | (keyof ENTITY)[],\n    idToTrigger?: number | string,\n  ) {\n    const context = FrameworkContext.findForTraget(entityObjOrClass);\n    if (context.disabledRealtime) {\n      const className = _.isFunction(entityObjOrClass)\n        ? CLASS.getName(entityObjOrClass)\n        : CLASS.getNameFromObject(entityObjOrClass);\n\n      // @ts-ignore\n      console.warn(`[Firedev][TrigggerEntityPropertyChanges][property=${property}] Entity \"${className}' is not realtime`);\n      return;\n    }\n\n    if (_.isArray(property)) {\n      property.forEach(propertyFromArr => {\n        RealtimeNodejs.__TrigggerEntityChanges(context, entityObjOrClass, propertyFromArr as any, idToTrigger)\n      })\n    } else {\n      RealtimeNodejs.__TrigggerEntityChanges(context, entityObjOrClass, property as any, idToTrigger)\n    };\n  }\n\n\n\n  public triggerCustomEvent(customEvent: string, dataToPush: any) {\n    RealtimeNodejs.TrigggerCustomEvent(this.context, customEvent, dataToPush);\n  }\n\n  public static TrigggerCustomEvent(context: FrameworkContext, customEvent: string, dataToPush: any) {\n    RealtimeNodejs.__TrigggerEntityChanges(context, void 0, void 0, void 0, customEvent, dataToPush);\n  }\n\n\n\n  public static TrigggerEntityTableChanges(entityClass: Function) {\n\n    const context = FrameworkContext.findForTraget(entityClass);\n    const className = CLASS.getName(entityClass)\n    if (context.disabledRealtime) {\n      console.warn(`[Firedev][TrigggerEntityTableChanges] Entity \"${className}' is not realtime`);\n      return;\n    }\n\n    RealtimeNodejs.__TrigggerEntityChanges(\n      context,\n      entityClass as any,\n      void 0, void 0,\n      SYMBOL.REALTIME.TABLE_CHANGE(className),\n    );\n  }\n\n  public TrigggerEntityTableChanges(entityClass: Function) {\n    RealtimeNodejs.TrigggerEntityTableChanges(entityClass);\n  }\n\n\n\n\n}\n\n\n ;({}); // @--end-of-file-for-module=morphi lib/realtime/realtime-nodejs.ts","\n\nimport { RealtimeBase } from './realtime';\n\nimport { RealtimeNodejs } from './realtime-nodejs';\n\nimport { RealtimeBrowserRxjs } from './realtime-browser-rxjs';\n\nexport { RealtimeBase } from './realtime';\n\nexport { RealtimeNodejs } from './realtime-nodejs';\n\n\nexport { RealtimeBrowserRxjs } from './realtime-browser-rxjs';\n\n\n ;({}); // @--end-of-file-for-module=morphi lib/realtime/index.ts","\n\nimport type { FrameworkContext } from './framework-context';\nimport { Log, Level } from 'ng2-logger/websql';\n\nimport type { Application } from 'express';\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n  \nimport { _ } from 'tnp-core/websql';\nimport { Helpers } from 'tnp-helpers/websql';\n\nimport { path } from 'tnp-core/websql';\n\n/* */\n/* */\n/* */\n/* */\n/* */\n  \n\nimport { SYMBOL } from '../symbols';\n\nimport { createConnections, getConnection, DataSource } from 'firedev-typeorm/websql';\nimport type {\n  TransactionRollbackEvent, TransactionCommitEvent, TransactionStartEvent,\n  RecoverEvent, SoftRemoveEvent, RemoveEvent, UpdateEvent, InsertEvent\n} from 'firedev-typeorm';\nimport { Connection } from 'firedev-typeorm/websql';\n\nimport { CLASS } from 'typescript-class-helpers/websql';\nimport { Models } from '../models';\nimport { FrameworkContextBase } from './framework-context-base';\nimport type { BASE_CONTROLLER } from './framework-controller';\n\nimport { RealtimeNodejs } from '../realtime';\nimport { MorphiHelpers } from '../helpers';\nimport { ISession, ISessionExposed } from './framework-models';\nimport { config } from 'tnp-config/websql';\n\n\n\n\nconst log = Log.create('context node app',\n  Level.__NOTHING\n)\n\nexport class FrameworkContextNodeApp extends FrameworkContextBase {\n\n  public readonly app: Application;\n\n\n  private get admin() {\n\n    if (Helpers.isBrowser) {\n      const admin = window['firedev'];\n      return admin // as FiredevAdmin;\n    }\n\n    return void 0;\n  }\n\n  get keepWebsqlDbDataAfterReload() {\n\n    if (Helpers.isBrowser) {\n      const keepWebsqlDbDataAfterReload = this.admin?.keepWebsqlDbDataAfterReload;\n      return keepWebsqlDbDataAfterReload;\n    }\n\n    return true;\n  }\n\n\n  public readonly httpServer\n/* */\n/* */\n  \n  public readonly connection: Connection | DataSource;\n  readonly realtime: RealtimeNodejs;\n  constructor(private context: FrameworkContext) {\n    super();\n  }\n\n  private async initConnection() {\n\n    if (this.context.mode === 'backend/frontend' || this.context.mode === 'tests' || this.context.mode === 'backend/frontend-worker'  // @LAST mode work\n\n      ||\n      this.context.mode === 'websql/backend-frontend'\n\n    ) {\n\n      if (Helpers.isWebSQL) {\n\n\n        log.info('PREPARING WEBSQL TYPEORM CONNECTION')\n        log.d(this.context.config)\n        try {\n          // @ts-ignore\n          const connection = new DataSource(this.context.config);\n          // @ts-ignore\n          this.connection = connection;\n          await this.connection.initialize();\n          let admin: any;\n          if (Helpers.isBrowser) {\n\n            const win = window['firedev'];\n            admin = win?.db?.register(this.context);\n\n          }\n\n        } catch (error) {\n          Helpers.error(error, false, true)\n\n        }\n\n\n\n\n\n\n        //     // @ts-ignore\n\n        //     // @ts-ignore\n\n\n\n        //   // @ts-ignore\n\n\n\n\n      } else {\n\n        log.info('PREPARING BACKEND TYPEORM CONNECTION')\n        log.d(this.context.config)\n        try {\n          // @ts-ignore\n          const connection = new DataSource(this.context.config);\n          // @ts-ignore\n          this.connection = connection;\n          await this.connection.initialize();\n          log.i('this.connection.isInitialized', this.connection.isInitialized)\n\n        } catch (error) {\n          console.log(error);\n        }\n\n\n\n\n\n\n\n\n\n\n\n\n        // // @ts-ignore\n\n\n      }\n    }\n\n    if (!this.connection.isInitialized && this.context.mode !== 'remote-backend') {\n      console.log(this.connection);\n      Helpers.error(`Something wrong with connection init in ${this.context.mode}`, false, true);\n    }\n    log.info(`PREPARING TYPEORM CONNECTION DONE. initialize=${this.connection.isInitialized}`)\n\n  }\n\n\n  private entitiesTriggers = {};\n\n  initSubscribers() {\n\n    const entities = this.context.entitiesClasses;\n    for (let index = 0; index < entities.length; index++) {\n      const Entity = entities[index];\n\n      const className = CLASS.getName(Entity);\n      this.entitiesTriggers[className] = _.debounce(() => {\n        this.context.node.realtime.TrigggerEntityTableChanges(Entity);\n      }, 1000);\n\n      const notifyFn = (nameOfEvent, entityData) => {\n\n        this.entitiesTriggers[className]();\n      };\n\n\n      const sub = {\n        listenTo() {\n          return Entity\n        },\n        /**\n         * Called after entity is loaded.\n         */\n        afterLoad(entity: any) { // TOOD this triggers too much\n\n        }\n\n        /**\n         * Called before post insertion.\n         */,\n        beforeInsert(event: InsertEvent<any>) {\n          notifyFn(`BEFORE POST INSERTED: `, event.entity)\n        }\n\n        /**\n         * Called after entity insertion.\n         */,\n        afterInsert(event: InsertEvent<any>) {\n          notifyFn(`AFTER ENTITY INSERTED: `, event.entity)\n        }\n\n        /**\n         * Called before entity update.\n         */,\n        beforeUpdate(event: UpdateEvent<any>) {\n          notifyFn(`BEFORE ENTITY UPDATED: `, event.entity)\n        }\n\n        /**\n         * Called after entity update.\n         */,\n        afterUpdate(event: UpdateEvent<any>) {\n          notifyFn(`AFTER ENTITY UPDATED: `, event.entity)\n        }\n\n        /**\n         * Called before entity removal.\n         */,\n        beforeRemove(event: RemoveEvent<any>) {\n          notifyFn(\n            `BEFORE ENTITY WITH ID ${event.entityId} REMOVED: `,\n            event.entity,\n          )\n        }\n\n        /**\n         * Called after entity removal.\n         */,\n        afterRemove(event: RemoveEvent<any>) {\n          notifyFn(\n            `AFTER ENTITY WITH ID ${event.entityId} REMOVED: `,\n            event.entity,\n          )\n        }\n\n        /**\n         * Called before entity removal.\n         */,\n        beforeSoftRemove(event: SoftRemoveEvent<any>) {\n          notifyFn(\n            `BEFORE ENTITY WITH ID ${event.entityId} SOFT REMOVED: `,\n            event.entity,\n          )\n        }\n\n        /**\n         * Called after entity removal.\n         */,\n        afterSoftRemove(event: SoftRemoveEvent<any>) {\n          notifyFn(\n            `AFTER ENTITY WITH ID ${event.entityId} SOFT REMOVED: `,\n            event.entity,\n          )\n        }\n\n        /**\n         * Called before entity recovery.\n         */,\n        beforeRecover(event: RecoverEvent<any>) {\n          notifyFn(\n            `BEFORE ENTITY WITH ID ${event.entityId} RECOVERED: `,\n            event.entity,\n          )\n        }\n\n        /**\n         * Called after entity recovery.\n         */,\n        afterRecover(event: RecoverEvent<any>) {\n          notifyFn(\n            `AFTER ENTITY WITH ID ${event.entityId} RECOVERED: `,\n            event.entity,\n          )\n        }\n\n        /**\n         * Called before transaction start.\n         */,\n        beforeTransactionStart(event: TransactionStartEvent) {\n          notifyFn(`BEFORE TRANSACTION STARTED: `, event)\n        }\n\n        /**\n         * Called after transaction start.\n         */,\n        afterTransactionStart(event: TransactionStartEvent) {\n          notifyFn(`AFTER TRANSACTION STARTED: `, event)\n        }\n\n        /**\n         * Called before transaction commit.\n         */,\n        beforeTransactionCommit(event: TransactionCommitEvent) {\n          notifyFn(`BEFORE TRANSACTION COMMITTED: `, event)\n        }\n\n        /**\n         * Called after transaction commit.\n         */,\n        afterTransactionCommit(event: TransactionCommitEvent) {\n          notifyFn(`AFTER TRANSACTION COMMITTED: `, event)\n        }\n\n        /**\n         * Called before transaction rollback.\n         */,\n        beforeTransactionRollback(event: TransactionRollbackEvent) {\n          notifyFn(`BEFORE TRANSACTION ROLLBACK: `, event)\n        }\n\n        /**\n         * Called after transaction rollback.\n         */,\n        afterTransactionRollback(event: TransactionRollbackEvent) {\n          notifyFn(`AFTER TRANSACTION ROLLBACK: `, event)\n        }\n      };\n\n\n      // @ts-ignore\n      this.context.connection.subscribers.push(sub);\n\n\n    }\n\n  }\n\n\n\n  async init() {\n\n\n\n\n\n\n\n\n\n    if (this.context.onlyForBackendRemoteServerAccess) {\n      // @ts-ignore\n      this.app = {} as any;\n    } else {\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n  \n\n      await this.initConnection();\n      await this.initSubscribers();\n      this.initDecoratorsFunctions();\n\n      const { contexts } = (await import('./framework-context')).FrameworkContext;\n\n\n      this.writeActiveRoutes(contexts);\n\n\n/* */\n/* */\n/* */\n/* */\n  \n\n      // @ts-ignore\n      this.realtime = new RealtimeNodejs(this.context);\n\n      if (this.admin && this.keepWebsqlDbDataAfterReload && !Helpers.isNode) {\n\n\n\n\n      } else {\n        await this.reinitControllersData();\n      }\n    }\n  }\n\n  async reinitControllersData() {\n\n    const instancesOfControllers: BASE_CONTROLLER<any>[] = this.context\n      .allControllersInstances\n      .filter(f => _.isFunction((f as any as BASE_CONTROLLER<any>).initExampleDbData)) as any;\n\n    for (let index = 0; index < instancesOfControllers.length; index++) {\n      const controllerInstance = instancesOfControllers[index]\n\n\n      await controllerInstance.initExampleDbData(this.context.workerMode);\n    }\n\n\n  }\n\n\n  private initDecoratorsFunctions() {\n    this.context.initFunc.filter(e => {\n      const currentCtrl = this.context.controllersClasses.find(ctrl => ctrl === e.target);\n      if (currentCtrl) {\n        e.initFN();\n\n        ((controller: Function) => {\n\n          const instance = this.context.getInstanceBy(controller);\n          const config = CLASS.getConfig(currentCtrl);\n\n          config.injections.forEach(inj => {\n            Object.defineProperty(instance, inj.propertyName, { get: inj.getter as any });\n          });\n\n\n\n        })(currentCtrl);\n\n      }\n    });\n\n  }\n\n  public activeRoutes: { routePath: string; method: Models.Rest.HttpMethod }[] = []\n\n  private writeActiveRoutes(contexts: FrameworkContext[], isWorker = false) {\n\n\n    let routes = [];\n    for (let index = 0; index < contexts.length; index++) {\n      const context = contexts[index];\n\n      const troutes = context.node.activeRoutes.map(({ method, routePath }) => {\n        return `${MorphiHelpers.string(method.toUpperCase() + ':').fillUpTo(10)}${context.uri.href.replace(/\\/$/, '')}${routePath}`\n      });\n      const tinstanceClass = _.first(context.controllersClasses) as any;\n\n      const isWorker = context.workerMode;\n\n      const fileNameFor = path.join(\n/* */\n/* */\n  \n        `tmp-routes--worker--`\n        + `${path.basename(CLASS.getName(tinstanceClass)).replace(/\\.js$/, '')}.json`);\n\n      if (isWorker) {\n        log.i(`FILE: ${fileNameFor}`)\n        log.i(JSON.stringify(routes, null, 4))\n/* */\n/* */\n/* */\n/* */\n/* */\n  \n      } else { // @ts-ignore\n        routes = [\n          ...routes,\n          ...(['', `---------- FOR HOST ${context.uri.href} ----------`]),\n          ...troutes,\n        ];\n      }\n    }\n    const fileName = path.join(\n/* */\n/* */\n  \n      `tmp-routes.json`\n    )\n\n    log.d(`FILE: ${fileName}`)\n    log.d(JSON.stringify(routes, null, 4))\n/* */\n/* */\n/* */\n/* */\n/* */\n  \n\n  }\n\n  private initMidleware() {\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/* */\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 ;({}); // @--end-of-file-for-module=morphi lib/framework/framework-context-node-app.ts","\n\nimport { _, Helpers } from 'tnp-core/websql';\nimport { StartOptions, FrameworkMode, MiddlewareType } from './framework-models';\nimport { FrameworkContextBrowserApp } from './framework-context-browser-app';\nimport { CLASS } from 'typescript-class-helpers/websql';\nimport { IConnectionOptions } from './framework-models';\nimport { FrameworkContextBase } from './framework-context-base';\n\nimport { FrameworkContextNodeApp } from './framework-context-node-app';\n/* */\n/* */\n  \n\n\nimport type { BASE_CONTROLLER } from './framework-controller';\nimport { BaseCRUD } from '../crud';\nimport { SYMBOL } from '../symbols';\n\nexport class FrameworkContext extends FrameworkContextBase {\n\n  public static readonly initFunc: { initFN: Function, target: Function }[] = [];\n  get initFunc() {\n    return FrameworkContext.initFunc.filter(a => this.controllersClasses.includes(a.target));\n  }\n\n\n\n\n\n\n\n\n\n\n  public readonly Providers: Function[] = [];\n\n  private static readonly ngZoneInstance: any;\n\n  public static get isNgZoneInited() {\n    return !!FrameworkContext.ngZoneInstance;\n  }\n  public static initNGZone(ngZoneInstance: any) {\n    if (ngZoneInstance) {\n      // @ts-ignore\n      FrameworkContext.ngZoneInstance = ngZoneInstance;\n    }\n  }\n  private static contextByClassName: { [className in string]: FrameworkContext; } = {};\n  public static get contexts(): FrameworkContext[] {\n\n    const res = _.sortedUniq(Object\n      .keys(FrameworkContext.contextByClassName)\n      .map(className => FrameworkContext.contextByClassName[className]));\n\n    return res;\n  }\n\n  static destroy(context: FrameworkContext) {\n    Object\n      .keys(FrameworkContext.contextByClassName)\n      .forEach(className => {\n        const c = FrameworkContext.contextByClassName[className];\n        if (c.host === context.host) {\n          delete FrameworkContext.contextByClassName[className];\n        }\n      });\n    debugger;\n  }\n\n  destroy() {\n    FrameworkContext.destroy(this);\n  }\n\n  public static findByHost(host: string) {\n    const uri = new URL(host);\n    return FrameworkContext.contexts.find(c => c.uri.host === uri.host);\n  }\n\n  /**\n   * Get global context for target\n   * @param target class name or class function or class object\n   */\n  public static findForTraget(target: Function | object | string): FrameworkContext {\n    let className: string;\n    if (_.isArray(target)) {\n      throw new Error(`[Firedev][findForTraget] incorrect target:\n      shoould be string, function or object\n      `)\n    }\n    if (_.isFunction(target)) {\n      className = CLASS.getName(target);\n    } else if (_.isObject(target)) {\n      className = CLASS.getNameFromObject(target);\n    } else if (_.isString(target)) {\n      className = target;\n    }\n    if (!className) {\n      if (Helpers.isBrowser) {\n        throw new Error(`[Firedev][findForTarget] incorrect/missing class name: \"${className}\"`)\n      } else {\n/* */\n/* */\n  \n      }\n\n    }\n\n    const result = FrameworkContext.contextByClassName[className];\n    if (!result) {\n\n      if (FrameworkContext.contexts.length === 1 &&\n        _.first(FrameworkContext.contexts).mode === 'backend/frontend-worker') {\n        return _.first(FrameworkContext.contexts);\n      }\n\n\n\n      if (Helpers.isBrowser) {\n        throw new Error(`[Firedev][findForTarget] not able to find target by name: \"${className}\"`)\n      } else {\n/* */\n/* */\n  \n      }\n\n    }\n    return result;\n  }\n\n  private static _isProductionModeAlreadySet = false;\n  private static readonly _isProductionMode = false;\n  public static get isProductionMode() {\n    return FrameworkContext._isProductionMode;\n  }\n\n  public static set isProductionMode(v: boolean) {\n    if (!FrameworkContext._isProductionModeAlreadySet) {\n      FrameworkContext._isProductionModeAlreadySet = true;\n    } else {\n      throw `[Firedev] production mode already set`\n    }\n    // @ts-ignore\n    FrameworkContext._isProductionMode = v;\n  }\n\n  public readonly uri: URL;\n  private readonly context: StartOptions;\n  public readonly allowedHosts: URL[] = [];\n  public readonly disabledRealtime = false;\n  public browser: FrameworkContextBrowserApp;\n\n  public node: FrameworkContextNodeApp;\n\n\n\n  public get ngZone() {\n    return FrameworkContext.ngZoneInstance;\n  }\n\n  public get host() {\n    return this.context.host;\n  }\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n  \n\n  public get controllersClasses() {\n    return [\n      ...(this.context.controllers as any[]),\n    ]\n  }\n\n  public get allControllersInstances(): (object)[] {\n    let ctrls: Function[] = this.context.controllers as any;\n\n    if (this.context.InitDataPriority) {\n      ctrls = [\n        ...(this.context.InitDataPriority ? this.context.InitDataPriority : []),\n        ...(ctrls.filter(f => !(this.context.InitDataPriority as Function[]).includes(f)))\n      ] as any;\n    }\n\n    return ctrls.map(c => this.getInstanceBy(c as any)).filter(f => !!f);\n  }\n\n  public get crudControllersInstances(): BASE_CONTROLLER<any>[] {\n    return this.allControllersInstances.filter(c => {\n      return c instanceof BaseCRUD;\n    }).map(c => {\n      return c as BASE_CONTROLLER<any>;\n    });\n  }\n\n  private instances = {};\n\n  /**\n   * Get controller instace by name of class function\n   */\n  public getInstanceBy(ctrlClassOrName: Function | string) {\n    if (!ctrlClassOrName) {\n      return;\n    }\n    const className = _.isString(ctrlClassOrName) ? ctrlClassOrName : CLASS.getName(ctrlClassOrName);\n    if (!this.instances[className]) {\n      this.instances[className] = new (ctrlClassOrName as any)();\n    }\n    return this.instances[className] as (object | BASE_CONTROLLER<any>)\n  }\n\n  public get entitiesClasses() {\n    return (this.context.entities as Function[]) || [];\n  }\n\n\n  public get mode() {\n    return this.context.mode;\n  }\n\n  public get connection(): any {\n    return this.node?.connection;\n  }\n\n  public get publicAssets() {\n    return this.context.publicAssets || [];\n  }\n\n  public get InitDataPriority() {\n    return this.context.InitDataPriority || [];\n  }\n\n  public get config() {\n    return this.context.config as IConnectionOptions;\n  }\n\n  get onlyForBackendRemoteServerAccess() {\n    return this.context.mode === 'remote-backend';\n  }\n\n  get workerMode() {\n    return this.context.mode === 'backend/frontend-worker';\n  }\n\n  get testMode() {\n    return this.context.mode === 'tests';\n  }\n\n  get websqlBackendOnFrontend() {\n    return this.context.mode === 'websql/backend-frontend';\n  }\n\n\n  constructor(context: StartOptions) {\n    super();\n    this.context = context;\n    this.initUrl();\n    this.checkContextIfExists();\n    validateClassFunctions(context.controllers, context.entities);\n    this.prepareControllers();\n\n    if (_.isArray(context.allowedHosts)) {\n      context.allowedHosts.forEach(h => this.allowedHosts.push(new URL(h)));\n    }\n    if (_.isBoolean(context.disabledRealtime) && context.disabledRealtime) {\n      // @ts-ignore\n      this.disabledRealtime = true;\n    }\n\n    validateConfigAndAssignEntites(context.config as any, this.mode, this.entitiesClasses);\n\n    this.prepareEntities();\n  }\n\n\n  private prepareEntities() {\n\n    if (this.context.config) {\n      this.context.config['entities'] = this.entitiesClasses as any;\n    };\n\n    this.entitiesClasses\n      .forEach(c => {\n        const className = CLASS.getName(c);\n        if (FrameworkContext.contextByClassName[className]) {\n          throw new Error(`[Firedev][frameworkcontext]\n${SYMBOL.ERROR_MESSAGES.CLASS_NAME_MATCH}\n\n          Context already register for class \"${className}\"\nThis is class names based framework....\nYou can create subclass from this class to fix this\n\n@Morphi.Entity({\n  ...\n  className: '${className}Extended'\n  ...\n})\nclass ${className}Extended extends ${className} {\n  ...\n}\n\n          `);\n        }\n        FrameworkContext.contextByClassName[className] = this;\n      });\n  }\n  private prepareControllers() {\n\n    this.context.controllers = _.sortedUniq(this.context.controllers as Function[]);\n    this.context.controllers\n      .forEach(c => {\n        const className = CLASS.getName(c);\n        if (FrameworkContext.contextByClassName[className]) {\n          throw new Error(`[Firedev][frameworkcontext]\n${SYMBOL.ERROR_MESSAGES.CLASS_NAME_MATCH}\n\n          Context already register for class \"${className}\"\nThis is class names based framework....\nYou can create subclass from this class to fix this\n\n@Firedev.Controller({\n  ...\n  className: '${className}Extended'\n  ...\n})\nclass ${className}Extended extends ${className} {\n  ...\n}\n\n          `);\n        }\n        FrameworkContext.contextByClassName[className] = this;\n      });\n  }\n\n  private initAllControllersInstances() {\n    for (const c of this.context.controllers) {\n      // @ts-ignore\n      this.getInstanceBy(c);\n    }\n  }\n\n  public async initNode() {\n\n    this.node = new FrameworkContextNodeApp(this);\n    await this.node.init();\n    this.initAllControllersInstances();\n\n  }\n\n  public initBrowser() {\n    if (Helpers.isBrowser && _.isUndefined(this.ngZone) && !!window['ng']) {\n      console.warn(`Please probide ngZone instance in angular apps`)\n    }\n\n\n    this.browser = new FrameworkContextBrowserApp(this);\n    this.browser.init();\n    this.initAllControllersInstances();\n  }\n\n  private initUrl() {\n    // @ts-ignore\n    this.uri = new URL(this.host);\n  }\n\n\n\n  private checkContextIfExists() {\n    if (FrameworkContext.contexts.includes(this)) {\n      throw `[framework-context] Context already exists`;\n    }\n    if (FrameworkContext.contexts.find(c => c.host === this.host)) {\n      throw `[framework-context] Context with host ${this.host} already exists`;\n    }\n  }\n\n}\n\n\n\nfunction validateConfigAndAssignEntites(\n  config: IConnectionOptions,\n  mode: FrameworkMode,\n  entities: Function[]) {\n\n  if (!config) {\n    config = {} as any;\n\n    if (mode === 'backend/frontend') {\n      console.error(`\n\n      Missing config for backend:\n\n\n      Firedev.init({\n        ...\n        config: <YOUR DB CONFIG HERE>\n        ...\n      })\n\n    `);\n    }\n  }\n}\n\n\nfunction validateClassFunctions(controllers, entities) {\n\n  if (_.isArray(controllers) && controllers.filter(f => !_.isFunction(f)).length > 0) {\n    console.error('controllers', controllers)\n    throw `\n\nIncorect value for property \"controllers\" inside Firedev.Init(...)\n\n`\n  }\n\n  if (_.isArray(entities) && entities.filter(f => !_.isFunction(f)).length > 0) {\n    console.error('entites', entities)\n    throw `\n\nIncorect value for property \"entities\" inside Firedev.Init(...)\n\n`\n  }\n}\n\n ;({}); // @--end-of-file-for-module=morphi lib/framework/framework-context.ts","\n\n\nimport { SYMBOL } from '../symbols';\nimport { _ } from 'tnp-core/websql';\nimport { Models } from '../models';\nimport { Resource, Rest, RestHeaders } from 'ng2-rest/websql';\nimport { Models as Ng2RestModels } from 'ng2-rest/websql';\nimport { Helpers } from 'tnp-core/websql';\nimport { MorphiHelpers } from '../helpers';\nimport { FrameworkContext } from '../framework/framework-context';\nimport { from, Observable, Subject } from 'rxjs';\nimport { CLASS } from 'typescript-class-helpers/websql';\n\n\nexport function initMethodBrowser(\n\n  target: Function,\n  type: Models.Rest.HttpMethod,\n  methodConfig: Models.Rest.MethodConfig,\n  expressPath: string,\n\n)\n\n {\n\n\n  let storage: any;\n  if (Helpers.isBrowser) {\n    storage = window;\n  }\n/* */\n/* */\n/* */\n/* */\n  \n\n\n  const context = FrameworkContext.findForTraget(target);\n  const uri: URL = context.uri;\n\n\n\n\n\n  const MIN_TIMEOUT = 500;\n  const MIN_TIMEOUT_STEP = 200;\n  const timeout = window[SYMBOL.WEBSQL_REST_PROGRESS_TIMEOUT] || MIN_TIMEOUT;\n\n  let updateFun: Subject<number> = window[SYMBOL.WEBSQL_REST_PROGRESS_FUN];\n  if (!window[SYMBOL.WEBSQL_REST_PROGRESS_FUN]) {\n    window[SYMBOL.WEBSQL_REST_PROGRESS_FUN] = new Subject();\n  }\n  updateFun = window[SYMBOL.WEBSQL_REST_PROGRESS_FUN];\n\n  let startFun: Subject<void> = window[SYMBOL.WEBSQL_REST_PROGRESS_FUN_START];\n  if (!window[SYMBOL.WEBSQL_REST_PROGRESS_FUN_START]) {\n    window[SYMBOL.WEBSQL_REST_PROGRESS_FUN_START] = new Subject();\n  }\n  startFun = window[SYMBOL.WEBSQL_REST_PROGRESS_FUN_START];\n\n  let doneFun: Subject<void> = window[SYMBOL.WEBSQL_REST_PROGRESS_FUN_DONE];\n  if (!window[SYMBOL.WEBSQL_REST_PROGRESS_FUN_DONE]) {\n    window[SYMBOL.WEBSQL_REST_PROGRESS_FUN_DONE] = new Subject();\n  }\n  doneFun = window[SYMBOL.WEBSQL_REST_PROGRESS_FUN_DONE];\n\n  let periodsToUpdate = 0;\n  if (timeout >= MIN_TIMEOUT) {\n    periodsToUpdate = Math.floor(timeout / MIN_TIMEOUT_STEP);\n  }\n\n\n\n  const periods = async () => {\n    startFun.next();\n    for (let n = 1; n <= periodsToUpdate; n++) {\n\n\n\n      let upValue = Math.round(((MIN_TIMEOUT_STEP * n) / timeout) * 100);\n      if (upValue > 100) {\n        upValue = 100;\n      }\n\n      updateFun.next(upValue);\n\n      await new Promise((resolve, reject) => {\n        setTimeout(() => {\n          resolve(void 0);\n        }, MIN_TIMEOUT_STEP)\n      })\n\n    }\n    doneFun.next();\n  }\n\n\n  const orgMethods = target.prototype[methodConfig.methodName];\n\n  target.prototype[methodConfig.methodName] = function (...args) {\n\n\n\n    const received = new Promise(async (resolve, reject) => {\n      const headers = {};\n      const { request, response } = websqlMocks(headers)\n\n      let res: any;\n      try {\n        res = await Helpers.runSyncOrAsync({\n          functionFn: orgMethods,\n          context: this,\n          arrayOfParams: args\n        });\n\n        if (typeof res === 'function') {\n          res = await Helpers.runSyncOrAsync({\n            functionFn: res,\n            context: this,\n            arrayOfParams: [request, response]\n          });\n        }\n\n        if (typeof res === 'function') {\n          res = await Helpers.runSyncOrAsync({\n            functionFn: res,\n            context: this,\n            arrayOfParams: [request, response]\n          });\n        }\n\n\n        if ((typeof res === 'object') && res?.received) {\n          res = await res.received;\n        }\n\n        const body = res;\n\n        res = new Ng2RestModels.HttpResponse({\n          body: void 0,\n          isArray: void 0 as any,\n          method: methodConfig.type,\n          url: `${uri.origin}${'' // TODO express path\n            }${methodConfig.path}`\n        },\n          (Helpers.isBlob(body) || _.isString(body)) ? body : JSON.stringify(body),\n          RestHeaders.from(headers),\n          void 0,\n          () => body,\n        );\n\n\n\n\n\n        await periods();\n        resolve(res);\n      } catch (error) {\n        await periods();\n        console.error(error)\n\n\n\n        reject(error);\n\n\n      }\n    });\n    received['observable'] = from(received);\n\n    if (Helpers.isWebSQL) {\n      return {\n        received\n      }\n    }\n\n  }\n  if (Helpers.isWebSQL) {\n    return;\n  }\n\n\n\n\n\n\n\n  target.prototype[methodConfig.methodName] = function (...args) {\n\n\n\n\n\n    if (!storage[SYMBOL.ENDPOINT_META_CONFIG]) storage[SYMBOL.ENDPOINT_META_CONFIG] = {};\n    if (!storage[SYMBOL.ENDPOINT_META_CONFIG][uri.href]) storage[SYMBOL.ENDPOINT_META_CONFIG][uri.href] = {};\n    const endpoints = storage[SYMBOL.ENDPOINT_META_CONFIG];\n    let rest: Ng2RestModels.ResourceModel<any, any>;\n    if (!endpoints[uri.href][expressPath]) {\n      let headers = {};\n      if (methodConfig.contentType && !methodConfig.responseType) {\n        rest = Resource.create(uri.href, expressPath, SYMBOL.MAPPING_CONFIG_HEADER as any,\n          SYMBOL.CIRCURAL_OBJECTS_MAP_BODY as any,\n          RestHeaders.from({\n            'Content-Type': methodConfig.contentType,\n            'Accept': methodConfig.contentType,\n          }),\n        );\n      } else if (methodConfig.contentType && methodConfig.responseType) {\n        rest = Resource.create(uri.href, expressPath, SYMBOL.MAPPING_CONFIG_HEADER as any,\n          SYMBOL.CIRCURAL_OBJECTS_MAP_BODY as any,\n          RestHeaders.from({\n            'Content-Type': methodConfig.contentType,\n            'Accept': methodConfig.contentType,\n            'responsetypeaxios': methodConfig.responseType\n          }),\n        );\n      } else if (!methodConfig.contentType && methodConfig.responseType) {\n        rest = Resource.create(uri.href, expressPath, SYMBOL.MAPPING_CONFIG_HEADER as any,\n          SYMBOL.CIRCURAL_OBJECTS_MAP_BODY as any,\n          RestHeaders.from({\n            'responsetypeaxios': methodConfig.responseType\n          }),\n        );\n      } else {\n        rest = Resource.create(uri.href, expressPath, SYMBOL.MAPPING_CONFIG_HEADER as any,\n          SYMBOL.CIRCURAL_OBJECTS_MAP_BODY as any,\n        );\n      }\n\n      endpoints[uri.href][expressPath] = rest;\n    } else {\n      rest = endpoints[uri.href][expressPath] as any;\n    }\n\n    const method = type.toLowerCase();\n    const isWithBody = (method === 'put' || method === 'post');\n    const pathPrams = {};\n    let queryParams = {};\n    let bodyObject = {};\n    args.forEach((param, i) => {\n      let currentParam: Models.Rest.ParamConfig = void 0 as any;\n\n      for (let pp in methodConfig.parameters) {\n        let v = methodConfig.parameters[pp];\n        if (v.index === i) {\n          currentParam = v;\n          break;\n        }\n      }\n\n\n      if (currentParam.paramType === 'Path') {\n        pathPrams[currentParam.paramName] = param;\n      }\n      if (currentParam.paramType === 'Query') {\n        if (currentParam.paramName) {\n          const mapping = MorphiHelpers.Mapping.decode(param, !FrameworkContext.isProductionMode);\n          if (mapping) {\n            rest.headers.set(\n              `${SYMBOL.MAPPING_CONFIG_HEADER_QUERY_PARAMS}${currentParam.paramName}`,\n              JSON.stringify(mapping))\n          }\n          queryParams[currentParam.paramName] = param;\n        } else {\n          const mapping = MorphiHelpers.Mapping.decode(param, !FrameworkContext.isProductionMode);\n          if (mapping) {\n            rest.headers.set(\n              SYMBOL.MAPPING_CONFIG_HEADER_QUERY_PARAMS,\n              JSON.stringify(mapping))\n          }\n          queryParams = _.cloneDeep(param);\n        }\n      }\n      if (currentParam.paramType === 'Header') {\n        if (currentParam.paramName) {\n          if (currentParam.paramName === SYMBOL.MDC_KEY) { // parese MDC\n            rest.headers.set(currentParam.paramName, encodeURIComponent(JSON.stringify(param)))\n          } else {\n            rest.headers.set(currentParam.paramName, param)\n          }\n        } else {\n          for (let header in param) {\n            rest.headers.set(header, param[header])\n          }\n        }\n      }\n      if (currentParam.paramType === 'Cookie') {\n        Resource.Cookies.write(currentParam.paramName, param, currentParam.expireInSeconds);\n      }\n      if (currentParam.paramType === 'Body') {\n        if (currentParam.paramName) {\n          if (CLASS.getNameFromObject(bodyObject) === 'FormData') {\n            throw new Error(`[firedev-framework] Don use param names when posting/putting FormData.\n            Use this:\n\n            (@Firedev.Http.Param.Body() formData: FormData) ...\n\n\n            instead\n\n            (@Firedev.Http.Param.Body('${currentParam.paramName}') formData: FormData) ...\n\n            `)\n          }\n          const mapping = MorphiHelpers.Mapping.decode(param, !FrameworkContext.isProductionMode);\n          if (mapping) {\n            rest.headers.set(\n              `${SYMBOL.MAPPING_CONFIG_HEADER_BODY_PARAMS}${currentParam.paramName}`,\n              JSON.stringify(mapping))\n          }\n          bodyObject[currentParam.paramName] = param;\n        } else {\n          const mapping = MorphiHelpers.Mapping.decode(param, !FrameworkContext.isProductionMode);\n          if (mapping) {\n            rest.headers.set(\n              SYMBOL.MAPPING_CONFIG_HEADER_BODY_PARAMS,\n              JSON.stringify(mapping))\n          }\n          bodyObject = param;\n        }\n      }\n    });\n\n    if (typeof bodyObject === 'object' && (CLASS.getNameFromObject(bodyObject) !== 'FormData')) {\n      let circuralFromItem = []\n      bodyObject = MorphiHelpers.JSON.parse(MorphiHelpers.JSON.stringify(bodyObject, void 0, void 0, circs => {\n        // @ts-ignore\n        circuralFromItem = circs;\n      }))\n      rest.headers.set(\n        SYMBOL.CIRCURAL_OBJECTS_MAP_BODY,\n        JSON.stringify(circuralFromItem)\n      )\n    }\n\n    if (typeof queryParams === 'object') {\n      let circuralFromQueryParams = []\n      queryParams = MorphiHelpers.JSON.parse(MorphiHelpers.JSON.stringify(queryParams, void 0, void 0, circs => {\n        // @ts-ignore\n        circuralFromQueryParams = circs;\n      }))\n\n      rest.headers.set(\n        SYMBOL.CIRCURAL_OBJECTS_MAP_QUERY_PARAM,\n        JSON.stringify(circuralFromQueryParams))\n    }\n\n\n    return {\n      received: isWithBody ? rest.model(pathPrams)[method](bodyObject, [queryParams]) : rest.model(pathPrams)[method]([queryParams])\n    }\n  };\n}\n\n\n\n\nfunction websqlMocks(headers) {\n\n  const response: Express.Response = {\n\n     status(status: any) {\n\n      return {\n        send(send: any) {\n\n        }\n      }\n    },\n    setHeader(key: string, value: any) {\n\n      headers[key] = value;\n    }\n  };\n  const request: Express.Request = {\n\n  };\n  return { request, response }\n}\n\n\n ;({}); // @--end-of-file-for-module=morphi lib/init-method/init-method-browser.ts","\n\n\nimport { _ } from 'tnp-core/websql';\nimport { CLASS } from 'typescript-class-helpers/websql';\n\nexport function getTransformFunction(target: Function) {\n  if (!target) {\n    return;\n  }\n\n  const className = CLASS.getName(target)\n  target = CLASS.getBy(className);\n\n  if (!target) {\n    return void 0;\n  }\n  const configs = CLASS.getConfigs(target);\n\n  const functions = configs\n    .map(c => {\n      if (_.isFunction(c.browserTransformFn)) {\n        return c.browserTransformFn;\n      }\n    })\n    .filter(f => _.isFunction(f));\n\n  return (functions.length === 0) ? (void 0) : function (entity) {\n\n    for (let index = functions.length - 1; index >= 0; index--) {\n      const transformFun = functions[index];\n      transformFun(entity)\n    }\n    return entity;\n  }\n}\n\nexport function singleTransform(json: any) {\n\n  let ptarget = CLASS.getFromObject(json);\n  let pbrowserTransformFn = getTransformFunction(ptarget);\n  if (pbrowserTransformFn) {\n    const newValue = pbrowserTransformFn(json)\n    if (!_.isObject(newValue)) {\n      console.error(`Please return object in transform function for class: ${CLASS.getNameFromObject(json)}`)\n    } else {\n      json = newValue;\n    }\n  }\n  return json;\n}\n\n\n\n ;({}); // @--end-of-file-for-module=morphi lib/init-method/transform-to-browser.ts","\n\n\nimport { _ } from 'tnp-core/websql';\nimport { MorphiHelpers } from '../helpers';\nimport { getTransformFunction, singleTransform } from './transform-to-browser';\nimport { SYMBOL } from '../symbols';\nimport * as express from 'express';\nimport { walk } from 'lodash-walk-object/websql';\nimport { CLASS } from 'typescript-class-helpers/websql';\nimport { config } from 'tnp-config/websql';\n\nexport class EntityProcess {\n\n  static async init(result: any, response: express.Response) {\n    return await (new EntityProcess(result, response).run());\n  }\n\n  /**\n   * Data to send\n   */\n  data: any;\n\n  constructor(\n    /**\n     * Data from backend\n     */\n    private result: any,\n    private response: express.Response\n  ) {\n\n  }\n\n  /**\n   * Say yes to:\n   * - circural object\n   * - transform browser fn in decorator\n   */\n  private advancedManipulation = false;\n  private checkAdvancedManiupulation() {\n    if (_.isFunction(this.result)) {\n      this.advancedManipulation = true;\n      this.result = this.result()\n    }\n  }\n\n  private entityMapping: any;\n  private circural = [];\n\n  public async run() {\n    this.checkAdvancedManiupulation()\n    this.data = this.result;\n\n    if (_.isObject(this.result)) {\n      if (this.advancedManipulation) {\n        this.applayTransformFn()\n      }\n\n      this.setHeaders()\n    }\n    this.send()\n  }\n\n\n  applayTransformFn() {\n    if (_.isObject(this.data) && !_.isArray(this.data)) {\n      this.data = singleTransform(this.data)\n    }\n    const { include } = { include: [] };\n    walk.Object(this.data, (value, lodashPath, changeValue, { skipObject, isCircural }) => {\n\n      if (!isCircural) {\n        if (!_.isArray(value) && _.isObject(value)) {\n          changeValue(singleTransform(value))\n        }\n      }\n\n    }, { checkCircural: true, breadthWalk: true, include })\n\n    const { circs } = walk.Object(this.data, void 0, { checkCircural: true, breadthWalk: true, include })\n    this.circural = circs;\n  }\n\n  setHeaders() {\n    const { include } = { include: [] };\n\n    const className = CLASS.getNameFromObject(this.data);\n\n    const doNothing = _.isNil(this.data) || ['Object', '', void 0, null].includes(className);\n\n    if (!doNothing) {\n      const cleaned = MorphiHelpers.JSON.cleaned(this.data, void 0, { breadthWalk: true, include })\n      this.entityMapping = MorphiHelpers.Mapping.decode(cleaned, !this.advancedManipulation);\n\n      this.response.set(SYMBOL.MAPPING_CONFIG_HEADER, JSON.stringify(this.entityMapping));\n      if (this.advancedManipulation) {\n        this.response.set(SYMBOL.CIRCURAL_OBJECTS_MAP_BODY, JSON.stringify(this.circural));\n      }\n    }\n  }\n\n\n  send() {\n    if (!_.isObject(this.data)) {\n      if (_.isNumber(this.data)) {\n        this.response.send(this.data.toString());\n      } else {\n        this.response.send(this.data)\n      }\n      return\n    }\n    if (this.advancedManipulation) {\n\n      const browserKey = config.folder.browser;\n      let toSend = _.isArray(this.data) ? [] : {};\n\n\n      const { include = [], exclude = [] } = { include: [], exclude: [] };\n\n      walk.Object(this.data, (value, lodashPath, changeVAlue, { isCircural, skipObject }) => {\n\n        if (isCircural) {\n          _.set(toSend, lodashPath, null);\n        } else {\n          const fun = getTransformFunction(CLASS.getFromObject(value));\n\n          if (_.isFunction(fun)) {\n            _.set(toSend, `${lodashPath}.${browserKey}`, value[browserKey]);\n            const indexProp = CLASS.OBJECT(value).indexProperty;\n            _.set(toSend, `${lodashPath}.${indexProp}`, value[indexProp]);\n\n          } else {\n            _.set(toSend, lodashPath, value);\n          }\n\n        }\n      }, { checkCircural: true, breadthWalk: true, include })\n\n      if (!_.isArray(this.data)) {\n        let funParent = getTransformFunction(CLASS.getFromObject(this.data));\n\n\n\n        if (_.isFunction(funParent)) {\n          toSend = {\n            [browserKey]: toSend[browserKey]\n          };\n        }\n        Object.keys(this.data).forEach(prop => {\n          if (prop !== browserKey) {\n            const v = this.data[prop];\n            if (!(\n              ((include.length > 0) && !include.includes(prop)) ||\n              ((exclude.length > 0) && exclude.includes(prop))\n            )) {\n              if (CLASS.OBJECT(v).isClassObject &&\n                _.isFunction(getTransformFunction(CLASS.getFromObject(v)))) {\n                toSend[prop] = {\n                  [browserKey]: v[browserKey]\n                }\n                const indexProp = CLASS.OBJECT(v).indexProperty;\n                toSend[prop][indexProp] = this.data[prop][indexProp]\n                for (const key in v) {\n                  if (_.isObject(v) && v.hasOwnProperty(key) &&\n                    ![indexProp, config.folder.browser].includes(key) &&\n                    (\n                      _.isString(v[key]) ||\n                      _.isNumber(v[key]) ||\n                      _.isDate(v[key]) ||\n                      _.isNull(v[key]) ||\n                      _.isBoolean(v[key])\n                    )\n                  ) {\n                    toSend[prop][key] = v[key];\n                  }\n                }\n              } else {\n                toSend[prop] = v;\n              }\n            }\n          }\n        });\n\n      }\n\n\n\n\n      this.response.json(toSend)\n    } else {\n      this.response.json(this.data)\n    }\n  }\n\n}\n\n\n\n ;({}); // @--end-of-file-for-module=morphi lib/init-method/entity-process.ts","\n\n\n\nimport { Helpers, _ } from 'tnp-core/websql';\nimport { Models } from '../models';\nimport { MorphiHelpers } from '../helpers';\nimport { SYMBOL } from '../symbols';\nimport { EntityProcess } from './entity-process';\nimport { FrameworkContext } from '../framework/framework-context';\nimport { Models as ModelsNg2Rest } from 'ng2-rest/websql';\n/* */\n/* */\n  \n\n\n\n// @ts-ignore\nexport function initMethodNodejs(\n\n  type: Models.Rest.HttpMethod,\n  methodConfig: Models.Rest.MethodConfig,\n  classConfig: Models.Rest.ClassConfig,\n  expressPath: string,\n  target: Function\n\n): any {\n\n\n  const requestHandler = (methodConfig.requestHandler && typeof methodConfig.requestHandler === 'function')\n    ? methodConfig.requestHandler : (req, res, next) => { next() };\n\n  const context = FrameworkContext.findForTraget(target);\n  const url = context.uri;\n\n  url.pathname = url.pathname.replace(/\\/$/, '');\n  expressPath = url.pathname.startsWith('/') ? `${url.pathname}${expressPath}` : expressPath;\n  expressPath = expressPath.replace(/\\/\\//g, '/')\n\n\n\n\n\n  if (!context.node.app) {\n    // @ts-ignore\n    context.node.app = {}\n  }\n\n\n\n  if (!context.onlyForBackendRemoteServerAccess) {\n\n\n\n    if (!context.node.app[type.toLowerCase()]) {\n      context.node.app[type.toLowerCase()] = () => { }\n    }\n\n/* */\n/* */\n  \n      console.log(`[${type.toUpperCase()}] ${expressPath}`);\n/* */\n/* */\n  \n\n\n\n\n    context.node.app[type.toLowerCase()](expressPath, requestHandler, async (req, res) => {\n\n\n      const args: any[] = [];\n\n      let tBody = req.body;\n      let tParams = req.params;\n      let tQuery = req.query;\n\n      if (req.headers[SYMBOL.CIRCURAL_OBJECTS_MAP_BODY]) {\n        try {\n          tBody = MorphiHelpers.JSON.parse(JSON.stringify(tBody), JSON.parse(req.headers[SYMBOL.CIRCURAL_OBJECTS_MAP_BODY]));\n        } catch (e) { }\n      }\n\n      if (req.headers[SYMBOL.CIRCURAL_OBJECTS_MAP_QUERY_PARAM]) {\n        try {\n          tQuery = MorphiHelpers.JSON.parse(JSON.stringify(tQuery), JSON.parse(req.headers[SYMBOL.CIRCURAL_OBJECTS_MAP_QUERY_PARAM]));\n        } catch (e) { }\n      }\n\n\n\n      if (req.headers[SYMBOL.MAPPING_CONFIG_HEADER_BODY_PARAMS]) {\n        try {\n          const entity = JSON.parse(req.headers[SYMBOL.MAPPING_CONFIG_HEADER_BODY_PARAMS]);\n          tBody = MorphiHelpers.Mapping.encode(tBody, entity);\n        } catch (e) { }\n      } else {\n        Object.keys(tBody).forEach(paramName => {\n          try {\n            const entityForParam = JSON.parse(req.headers[`${SYMBOL.MAPPING_CONFIG_HEADER_BODY_PARAMS}${paramName}`]);\n            tBody[paramName] = MorphiHelpers.Mapping.encode(tBody[paramName], entityForParam);\n          } catch (e) { }\n        })\n      }\n\n\n\n      if (req.headers[SYMBOL.MAPPING_CONFIG_HEADER_QUERY_PARAMS]) {\n\n        try {\n          const entity = JSON.parse(req.headers[SYMBOL.MAPPING_CONFIG_HEADER_QUERY_PARAMS]);\n          tQuery = MorphiHelpers.parseJSONwithStringJSONs(MorphiHelpers.Mapping.encode(tQuery, entity));\n        } catch (e) { }\n      } else {\n        Object.keys(tQuery).forEach(queryParamName => {\n          try {\n            const entityForParam = JSON.parse(req.headers[`${SYMBOL.MAPPING_CONFIG_HEADER_QUERY_PARAMS}${queryParamName}`]);\n            let beforeTransofrm = tQuery[queryParamName];\n            if (_.isString(beforeTransofrm)) {\n              try {\n                const paresed = MorphiHelpers.tryTransformParam(beforeTransofrm)\n                beforeTransofrm = paresed;\n              } catch (e) { }\n            }\n            const afterEncoding = MorphiHelpers.Mapping.encode(beforeTransofrm, entityForParam);\n            tQuery[queryParamName] = MorphiHelpers.parseJSONwithStringJSONs(afterEncoding);\n          } catch (e) { }\n        });\n      }\n\n      Object.keys(methodConfig.parameters).forEach(paramName => {\n        let p: Models.Rest.ParamConfig = methodConfig.parameters[paramName];\n        if (p.paramType === 'Path' && tParams) {\n          args.push(tParams[p.paramName])\n        }\n        if (p.paramType === 'Query' && tQuery) {\n          if (p.paramName) {\n            args.push(tQuery[p.paramName])\n          } else {\n            args.push(tQuery);\n          }\n        }\n\n        if (p.paramType === 'Header' && req.headers) {\n          args.push(req.headers[p.paramName.toLowerCase()])\n        }\n        if (p.paramType === 'Cookie' && req.cookies) {\n          args.push(req.cookies[p.paramName])\n        }\n        if (p.paramType === 'Body' && tBody) {\n          if (p.paramName && typeof tBody === 'object') {\n            args.push(tBody[p.paramName])\n          } else {\n            args.push(tBody)\n          }\n        }\n      })\n\n\n      const resolvedParams = args.reverse().map(v => MorphiHelpers.tryTransformParam(v));\n\n      try {\n        const response: Models.Response<any> = methodConfig.descriptor.value.apply(\n          /**\n           * Context for method @GET,@PUT etc.\n           */\n          context.getInstanceBy(target),\n          /**\n           * Params for metjod @GET, @PUT etc.\n           */\n          resolvedParams\n        );\n        let result = await MorphiHelpers.getResponseValue(response, { req, res });\n\n        if (result instanceof Blob && (methodConfig.responseType as ModelsNg2Rest.ResponseTypeAxios) === 'blob') {\n          console.log('INSTANCE OF BLOB')\n\n          const blob = result as Blob;\n          const file = Buffer.from(await blob.arrayBuffer());\n          res.writeHead(200, {\n            'Content-Type': blob.type,\n            'Content-Length': file.length\n          });\n          res.end(file);\n\n        } else if (_.isString(result) && (methodConfig.responseType as ModelsNg2Rest.ResponseTypeAxios) === 'blob') {\n          console.log('BASE64')\n\n          const img_base64 = result;\n          const m = /^data:(.+?);base64,(.+)$/.exec(img_base64)\n          if (!m) {\n            throw new Error(`[firedev-framework] Not a base64 image [${img_base64}]`)\n          }\n          const [_, content_type, file_base64] = m\n          const file = Buffer.from(file_base64, 'base64')\n\n          res.writeHead(200, {\n            'Content-Type': content_type,\n            'Content-Length': file.length\n          });\n          res.end(file);\n\n        } else {\n\n\n          await EntityProcess.init(result, res);\n\n        }\n      } catch (error) {\n\n        if (_.isString(error)) {\n          res.status(400).send(MorphiHelpers.JSON.stringify({\n            message: `\n  Error inside: ${req.path}\n\n  ${error}\n\n  `\n          }))\n        } else if (error instanceof Models.Errors) {\n          Helpers.error(error, true, false)\n          const err: Models.Errors = error;\n          res.status(400).send(MorphiHelpers.JSON.stringify(err))\n        } else if (error instanceof Error) {\n          const err: Error = error;\n          Helpers.error(error, true, false)\n          res.status(400).send(MorphiHelpers.JSON.stringify({\n            stack: err.stack,\n            message: err.message\n          }))\n        } else {\n          Helpers.log(error)\n          Helpers.error(`[Firedev] Bad result isomorphic method: ${error}`, true, false)\n          res.status(400).send(MorphiHelpers.JSON.stringify(error))\n        }\n\n      }\n    });\n  }\n\n  return {\n    routePath: expressPath,\n    method: methodConfig.type\n  }\n\n}\n\n\n\n ;({}); // @--end-of-file-for-module=morphi lib/init-method/init-method-node.ts","\n\nexport * from './init-method-browser';\n\nexport * from './init-method-node';\n\n\n ;({}); // @--end-of-file-for-module=morphi lib/init-method/index.ts","\n\nimport { _ } from 'tnp-core/websql';\nimport { MorphiHelpers } from '../helpers';\nimport { CLASS } from 'typescript-class-helpers/websql';\nimport type { FrameworkContext } from '../framework/framework-context';\n\ndeclare const global: any;\n\n\nconst abstractClasses = ['BASE_CONTROLLER'];\n\nexport function activateBaseCrud(\n  target: Function,\n  entity: Function,\n  context: FrameworkContext) {\n\n  if (_.isFunction(target) && MorphiHelpers.hasParentClassWithName(target, 'BaseCRUD') &&\n    !abstractClasses.includes(CLASS.getName(target))) {\n    if (_.isUndefined(entity)) {\n      if (CLASS.getName(target) === CLASS.getName(target['__proto__'])) {\n\n        return;\n      }\n\n\n      if (context.mode === 'backend/frontend' || context.mode === 'websql/backend-frontend') {\n\n        !global.hideLog && console.warn(`\n        You are extending BaseCRUD class.. CRUD functionality won't work\n        unless you provide \"entity\" property for CRUD operations on db.\n        @Firedev.Controller({\n          ...\n          entity: <YOUR ENTITY CLASS HERE>\n          ...\n        })\n        class ${CLASS.getName(target)} extends  ...\n              `)\n\n      }\n\n\n    } else {\n\n      target.prototype['entity'] = entity;\n    }\n  } else {\n\n  }\n\n\n}\n\n ;({}); // @--end-of-file-for-module=morphi lib/crud/activate-base-crud.ts","\n\nimport {   initMethodBrowser, } from '../init-method';/* */\n/* */\n\n\nimport {   initMethodNodejs } from '../init-method';/* */\n/* */\n\n\nexport { CLASS } from 'typescript-class-helpers/websql';\nimport { CLASS } from 'typescript-class-helpers/websql';\nimport { _, Helpers } from 'tnp-core/websql';\nimport { SYMBOL } from '../symbols';\nimport { MorphiHelpers } from '../helpers';\nimport { activateBaseCrud } from '../crud/activate-base-crud';\nimport { Models } from '../models';\nimport { FrameworkContext } from '../framework/framework-context';\nexport { Connection } from 'firedev-typeorm/websql';\n\nexport function __ENDPOINT(baseEntity?: Function): (...args: any[]) => any {\n  return ENDPOINT();\n}\n\nexport function ENDPOINT(options?: {\n  path?: string,\n  entity?: Function,\n  additionalEntities?: Function[],\n  auth?\n\n  : Models.AuthCallBack\n\n}) {\n  return function (target: Function) {\n\n    let { path, auth, entity } = options ? options : {} as any;\n\n    const initFN = (function (target, targetPath, auth) {\n      return function () {\n        const context = FrameworkContext.findForTraget(target);\n\n        activateBaseCrud(target, entity, context)\n\n        const configs = CLASS.getConfigs(target) as any[];\n\n        const classConfig: Models.Rest.ClassConfig = configs[0];\n        classConfig.path = targetPath;\n        const parentscalculatedPath = _\n          .slice(configs, 1)\n          .reverse()\n          .map(bc => {\n            if (MorphiHelpers.isGoodPath(bc.path)) {\n              return bc.path\n            }\n            return CLASS.getName(bc.classReference);\n          }).join('/')\n\n        if (MorphiHelpers.isGoodPath(targetPath)) {\n          classConfig.calculatedPath = targetPath;\n        } else {\n          classConfig.calculatedPath = `/${parentscalculatedPath}/${CLASS.getName(target)}`\n            .replace(/\\/\\//g, '/');\n        }\n\n\n        const checkAuthFn = (auth && typeof auth === 'function');\n\n        _.slice(configs, 1).forEach(bc => {\n          const alreadyIs = classConfig.methods;\n          const toMerge = _.cloneDeep(bc.methods)\n          for (const key in toMerge) {\n            if (toMerge.hasOwnProperty(key) && !alreadyIs[key]) {\n              const element = toMerge[key];\n              alreadyIs[key] = element;\n            }\n          }\n        })\n\n/* */\n/* */\n  \n          console.groupCollapsed(`express routes [${classConfig.className}]`);\n/* */\n/* */\n  \n\n\n        Object.keys(classConfig.methods).forEach(methodName => {\n          const methodConfig: Models.Rest.MethodConfig = classConfig.methods[methodName];\n          const type: Models.Rest.HttpMethod = methodConfig.type;\n          const expressPath = methodConfig.global\n            ? `/${methodConfig.path?.replace(/\\//, '')}`\n            : MorphiHelpers.getExpressPath(classConfig, methodConfig);\n\n\n          if (Helpers.isNode\n\n            || Helpers.isWebSQL\n\n          ) {\n\n            if (checkAuthFn) {\n              methodConfig.requestHandler = auth(methodConfig.descriptor.value);\n            }\n\n            const { routePath, method } = initMethodNodejs(type, methodConfig, classConfig, expressPath, target);\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n  \n\n\n          }\n          if (Helpers.isBrowser\n/* */\n/* */\n  \n\n            || Helpers.isWebSQL\n\n          ) {\n            initMethodBrowser(target, type, methodConfig, expressPath)\n          }\n        });\n\n/* */\n/* */\n  \n          console.groupEnd();\n/* */\n/* */\n  \n\n\n      }\n    })(target, path, auth);\n    target.prototype[SYMBOL.CLASS_DECORATOR_CONTEXT] = { initFN, target };\n    FrameworkContext.initFunc.push({ initFN, target });\n  } as any;\n}\n\n ;({}); // @--end-of-file-for-module=morphi lib/decorators/decorators-endpoint-class.ts","\n\nimport { CoreModels, _ } from 'tnp-core/websql';\nimport { Models } from '../models';\nimport { CLASS } from 'typescript-class-helpers/websql';\nimport { Models as ModelsNg2Rest } from 'ng2-rest/websql';\n\nconst defaultResponseType = 'text or JSON';\n\nfunction metaReq(\n  method: Models.Rest.HttpMethod,\n  path: string,\n  target: any, propertyKey: string,\n  descriptor: PropertyDescriptor,\n  options: FiredevHttpDecoratorOptions) {\n  const { pathIsGlobal, overrideContentType, overridResponseType } = (_.isObject(options) ? options : {}) as any as FiredevHttpDecoratorOptions;\n\n\n  const config = CLASS.getConfig(target.constructor as any);\n\n\n  config.methods[propertyKey] = (\n    !config.methods[propertyKey] ? new Models.Rest.MethodConfig() : config.methods[propertyKey]\n  ) as Models.Rest.MethodConfig;\n  const methodConfig: Models.Rest.MethodConfig = config.methods[propertyKey];\n\n  methodConfig.methodName = propertyKey;\n  methodConfig.type = method;\n  if (!path) {\n    let paramsPathConcatedPath = '';\n    for (const key in methodConfig.parameters) {\n      if (methodConfig.parameters.hasOwnProperty(key)) {\n        const element = methodConfig.parameters[key];\n        if (element.paramType === 'Path' && _.isString(element.paramName) && element.paramName.trim().length > 0) {\n          paramsPathConcatedPath += `/${element.paramName}/:${element.paramName}`\n        }\n      }\n    }\n    methodConfig.path = `/${propertyKey}${paramsPathConcatedPath}`\n\n  } else {\n    methodConfig.path = path;\n  }\n\n  methodConfig.descriptor = descriptor;\n  methodConfig.global = pathIsGlobal;\n  methodConfig.contentType = overrideContentType;\n  methodConfig.responseType = overridResponseType;\n  checkIfMethodsWithReponseTYpeAlowed(_.values(config.methods).filter(f => f !== methodConfig), methodConfig)\n}\n\nfunction checkIfMethodsWithReponseTYpeAlowed(methods: Models.Rest.MethodConfig[], current: Models.Rest.MethodConfig) {\n  if (!current.responseType) {\n    return;\n  }\n  for (let index = 0; index < methods.length; index++) {\n    const m = methods[index];\n    if (m.path === current.path && m.responseType !== current.responseType) {\n      throw new Error(`\n[firedev] you can have 2 methods with same path but differetn reponseType-s\n\n        ${(m.methodName)}( ... path: ${m.path} )  -> responseType: ${m.responseType || defaultResponseType}\n        ${(current.methodName)}( ... path: ${current.path} ) -> responseType: ${current.responseType}\n\n  Please change path name on of the methods.\n\n      `)\n    }\n  }\n}\n\nexport interface FiredevHttpDecoratorOptions {\n  path?: string;\n  pathIsGlobal?: boolean;\n  overrideContentType?: CoreModels.ContentType;\n  overridResponseType?: ModelsNg2Rest.ResponseTypeAxios,\n}\n\n\nexport function GET(pathOrOptions?: string | FiredevHttpDecoratorOptions, pathIsGlobal = false) {\n  let obj: FiredevHttpDecoratorOptions;\n  if (typeof pathOrOptions === 'object') {\n    obj = pathOrOptions;\n    pathOrOptions = obj.path;\n    pathIsGlobal = !!obj.pathIsGlobal;\n  } else {\n    obj = { pathOrOptions, pathIsGlobal } as any;\n  }\n  return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {\n    metaReq('get', pathOrOptions as string, target, propertyKey, descriptor, obj);\n  }\n}\n\nexport function HEAD(pathOrOptions?: string | FiredevHttpDecoratorOptions, pathIsGlobal = false) {\n  let obj: FiredevHttpDecoratorOptions;\n  if (typeof pathOrOptions === 'object') {\n    obj = pathOrOptions;\n    pathOrOptions = obj.path;\n    pathIsGlobal = !!obj.pathIsGlobal;\n  } else {\n    obj = { pathOrOptions, pathIsGlobal } as any;\n  }\n  return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {\n    metaReq('head', pathOrOptions as string, target, propertyKey, descriptor, obj);\n  }\n}\n\nexport function POST(pathOrOptions?: string | FiredevHttpDecoratorOptions, pathIsGlobal = false) {\n  let obj: FiredevHttpDecoratorOptions;\n  if (typeof pathOrOptions === 'object') {\n    obj = pathOrOptions;\n    pathOrOptions = obj.path;\n    pathIsGlobal = !!obj.pathIsGlobal;\n  } else {\n    obj = { pathOrOptions, pathIsGlobal } as any;\n  }\n  return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {\n    metaReq('post', pathOrOptions as string, target, propertyKey, descriptor, obj);\n  }\n}\n\nexport function PUT(pathOrOptions?: string | FiredevHttpDecoratorOptions, pathIsGlobal = false) {\n  let obj: FiredevHttpDecoratorOptions;\n  if (typeof pathOrOptions === 'object') {\n    obj = pathOrOptions;\n    pathOrOptions = obj.path;\n    pathIsGlobal = !!obj.pathIsGlobal;\n  } else {\n    obj = { pathOrOptions, pathIsGlobal } as any;\n  }\n  return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {\n    metaReq('put', pathOrOptions as string, target, propertyKey, descriptor, obj);\n  }\n}\n\nexport function PATCH(pathOrOptions?: string | FiredevHttpDecoratorOptions, pathIsGlobal = false) {\n  let obj: FiredevHttpDecoratorOptions;\n  if (typeof pathOrOptions === 'object') {\n    obj = pathOrOptions;\n    pathOrOptions = obj.path;\n    pathIsGlobal = !!obj.pathIsGlobal;\n  } else {\n    obj = { pathOrOptions, pathIsGlobal } as any;\n  }\n  return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {\n    metaReq('patch', pathOrOptions as string, target, propertyKey, descriptor, obj);\n  }\n}\n\nexport function DELETE(pathOrOptions?: string | FiredevHttpDecoratorOptions, pathIsGlobal = false) {\n  let obj: FiredevHttpDecoratorOptions;\n  if (typeof pathOrOptions === 'object') {\n    obj = pathOrOptions;\n    pathOrOptions = obj.path;\n    pathIsGlobal = !!obj.pathIsGlobal;\n  } else {\n    obj = { pathOrOptions, pathIsGlobal } as any;\n  }\n  return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {\n    metaReq('delete', pathOrOptions as string, target, propertyKey, descriptor, obj);\n  }\n}\n\n ;({}); // @--end-of-file-for-module=morphi lib/decorators/decorators-methods.ts","\n\nimport { Models } from '../models';\nimport { CLASS } from 'typescript-class-helpers/websql';\n\nfunction metaParam(param: Models.Rest.ParamType, name: string, expire: number, defaultValue = undefined, ...args: any[]) {\n  const methodName = args[1];\n  const config = CLASS.getConfig(args[0].constructor);\n  const m = config.methods[methodName] = (!config.methods[methodName] ? new Models.Rest.MethodConfig() : config.methods[methodName]);\n\n  const nameKey = name ? name : param;\n  const p = m.parameters[nameKey] = (!m.parameters[nameKey] ? new Models.Rest.ParamConfig() : m.parameters[nameKey]);\n  p.index = args[2];\n  p.paramName = name;\n  p.paramType = param;\n  p.defaultType = defaultValue;\n  p.expireInSeconds = expire;\n}\n\nexport function Path(name: string) {\n  return function (...args: any[]) {\n    metaParam('Path', name, undefined, {}, ...args)\n  };\n}\n\nexport function Query(name?: string) {\n  return function (...args: any[]) {\n    metaParam('Query', name, undefined, {}, ...args)\n  };\n}\n\nexport function Cookie(name: string, expireInSecond: number = 3600) {\n  return function (...args: any[]) {\n    metaParam('Cookie', name, expireInSecond, {}, ...args)\n  };\n}\n\nexport function Header(name?: string) {\n  return function (...args: any[]) {\n    metaParam('Header', name, undefined, {}, ...args)\n  };\n}\n\nexport function Body(name?: string) {\n  return function (...args: any[]) {\n    metaParam('Body', name, undefined, {}, ...args)\n  };\n}\n\n ;({}); // @--end-of-file-for-module=morphi lib/decorators/decorators-params.ts","\n\n\nimport * as _ from 'lodash';\nimport { Repository, Connection, getRepository } from 'firedev-typeorm/websql';\nimport { CLASS } from 'typescript-class-helpers/websql';\nimport type { IBASE_ENTITY } from '../framework/framework-entity';\nimport { SYMBOL } from '../symbols';\n\nexport namespace CrudHelpers {\n\n  export async function getModels(repo: any) {\n    if (!repo) {\n      return void 0;\n    }\n    let results = await repo.find();\n    return results;\n  }\n\n  export async function getModel(id: number | string, repo: any) {\n    if (!repo) {\n      return void 0;\n    }\n    let res = await repo.findOne({\n      where: { id }\n    })\n    return res;\n  }\n\n  export function prepareData(data: IBASE_ENTITY | IBASE_ENTITY[], id?: number | string) {\n    if (data === void 0) {\n      return;\n    }\n    preventUndefinedModel(data, id);\n  }\n\n  export function preventUndefinedModel(model, id) {\n    if (_.isUndefined(model)) {\n      throw `Bad update by id, config, id: ${id}`\n    }\n  }\n\n  export function forObjectPropertiesOf(item) {\n    return {\n      async run(action: (r: Repository<any>, partialItem: Object, entityClass?: Function,) => Promise<any>) {\n        const objectPropertiesToUpdate = [];\n        Object.keys(item).forEach(propertyName => {\n          const partialItem = item[propertyName];\n          if (_.isObject(partialItem) && !_.isArray(partialItem)) {\n            const entityClass = CLASS.getFromObject(partialItem);\n            const repo = entityClass && entityClass[SYMBOL.HAS_TABLE_IN_DB] && getRepository(entityClass);\n            if (repo) {\n              objectPropertiesToUpdate.push(action(repo, partialItem, entityClass))\n            }\n          }\n        })\n        return Promise.all(objectPropertiesToUpdate);\n      }\n    }\n  }\n\n\n}\n\n\n ;({}); // @--end-of-file-for-module=morphi lib/crud/crud-helpers.ts","\n\n\nimport * as _ from 'lodash';\nimport { Repository, Connection } from 'firedev-typeorm/websql';\nimport { CrudHelpers } from './crud-helpers';\n\nconst INDEX_KEYS_NO_FOR_UPDATE = [\n  'id',\n];\n\nexport class DbCrud<T> {\n\n  public static from<T = any>(connection: Connection, entityClass: Function) {\n    return new DbCrud<T>(connection, entityClass);\n  }\n\n  readonly repo: Repository<T>;\n  constructor(\n    connection: Connection,\n    private entity: Function,\n  ) {\n    this.repo = connection.getRepository(entity);\n  }\n\n\n  async getAll() {\n    const totalCount = await this.repo.count();\n    const models = await CrudHelpers.getModels(this.repo);\n    CrudHelpers.prepareData(models)\n    return { models, totalCount };\n  }\n\n  async getBy(id: number | string) {\n    const model = await CrudHelpers.getModel(id, this.repo);\n    CrudHelpers.prepareData(model, id);\n    return { model };\n  }\n\n  async update(item: T) {\n    const { id } = item as any;\n    return await this.updateById(id, item);\n  }\n\n  async updateById(id: number | string, item: T) {\n    const allowedPropsToUpdate = [];\n    for (const key in item) {\n      if (\n        _.isObject(item) && item.hasOwnProperty(key)\n        && typeof item[key] !== 'object'\n        && !_.isUndefined(this.repo.metadata.ownColumns.find(c => c.propertyName === key))\n      ) {\n        allowedPropsToUpdate.push(key);\n      }\n    }\n\n\n\n    for (let i = 0; i < allowedPropsToUpdate.length; i++) {\n      const key: string = allowedPropsToUpdate[i];\n      if (!INDEX_KEYS_NO_FOR_UPDATE.includes(key.toLowerCase())) {\n\n        const toSet = item[key];\n\n\n        await this.repo.update({\n          id\n        } as any, {\n          [key]: toSet\n        } as any);\n\n\n\n\n\n      }\n    }\n\n    let model = await CrudHelpers.getModel(id, this.repo);\n\n    CrudHelpers.prepareData(model, id);\n    return { model };\n  }\n\n  async bulkUpdate(items: T[]) {\n    const models = [];\n    for (let index = 0; index < items.length; index++) {\n      const item = items[index];\n      const { id } = item as any; // TOOD\n      const { model } = await this.updateById(id, item);\n      models.push(model);\n    }\n    return { models };\n  }\n\n  async deleteById(id: number | string) {\n    const deletedEntity = await CrudHelpers.getModel(id, this.repo);\n    const idCopy = deletedEntity.id;\n    await this.repo.remove(deletedEntity);\n    CrudHelpers.prepareData(deletedEntity, id);\n    deletedEntity.id = idCopy;\n    return { model: deletedEntity };\n  }\n\n  async bulkDelete(ids: (number | string)[]) {\n    const models = [];\n    for (let index = 0; index < ids.length; index++) {\n      const id = ids[index];\n      const { model } = await this.deleteById(id);\n      models.push(model);\n    }\n    return { models };\n  }\n\n  async create(item: T) {\n    // @ts-ignore\n    let model = await this.repo.create(item)\n    // @ts-ignore\n    model = await this.repo.save(model);\n    const { id } = model as any;\n\n    model = await CrudHelpers.getModel(id, this.repo);\n\n    CrudHelpers.prepareData(model as any, id);\n    return { model };\n  }\n\n  async bulkCreate(items: T[]) {\n    const models = [];\n    for (let index = 0; index < items.length; index++) {\n      const item = items[index];\n      const { model } = await this.create(item);\n      models.push(model);\n    }\n    return { models };\n  }\n\n}\n\n\n\n ;({}); // @--end-of-file-for-module=morphi lib/crud/db-crud.ts","\n\nimport { _, Helpers } from 'tnp-core/websql';\nimport { CLASS } from 'typescript-class-helpers/websql';\nimport { SYMBOL } from '../symbols';\nimport { __ENDPOINT } from '../decorators/decorators-endpoint-class';\nimport { GET, PUT, DELETE, POST, HEAD, PATCH } from '../decorators/decorators-methods';\nimport { Query, Path, Body } from '../decorators/decorators-params';\nimport { Models } from '../models';\nimport { Level, Log } from 'ng2-logger/websql';\n\n\nimport { Repository, Connection, Like } from 'firedev-typeorm/websql';\nimport { FrameworkContext } from '../framework/framework-context';\nimport { DbCrud } from './db-crud';\ndeclare const global: any;\nimport { CrudHelpers } from './crud-helpers';\nimport { MySqlQuerySource } from 'firedev-type-sql/websql';\n\n\nconst log = Log.create('base crud model',\n  Level.__NOTHING\n)\n\nconst Firedev = {\n  symbols: SYMBOL,\n  Http: {\n    GET, PUT, DELETE, POST, HEAD, PATCH\n  }\n}\n\n@CLASS.NAME('BaseCRUD')\n@__ENDPOINT(BaseCRUD)\nexport abstract class BaseCRUD<T> {\n\n  connection: Connection;\n  public get repository(): Repository<T> {\n    return this.repo;\n  }\n  private repo: Repository<any>;\n\n\n  public entity: any;\n\n  constructor() {\n    this.init()\n  }\n\n\n  readonly db: DbCrud<T>;\n  readonly dbQuery: MySqlQuerySource;\n\n\n  private init() {\n\n    const context = FrameworkContext.findForTraget(this);\n\n    this.connection = context.connection;\n\n    if (\n      (Helpers.isNode\n\n        || Helpers.isWebSQL\n\n      )\n      && this.entity && this.connection && this.entity[SYMBOL.HAS_TABLE_IN_DB]) {\n      this.repo = this.connection.getRepository(this.entity as any)\n      log.i(`Base CRUD inited for: ${(this.entity as any).name}`);\n      // @ts-ignore\n      this.db = DbCrud.from(this.connection, this.entity);\n      // @ts-ignore\n      this.dbQuery = new MySqlQuerySource(this.connection);\n    } else {\n      log.w(`Base CRUD NOT inited for: ${this.entity && (this.entity as any).name}`)\n    }\n\n  }\n\n  @Firedev.Http.GET(`/${Firedev.symbols.CRUD_TABLE_MODEL}/:id/property/:property`)\n  bufforedChanges(\n    @Path(`id`) id: number | string,\n    @Path(`property`) property: string,\n    @Query('alreadyLength') alreadyLength?: number\n  ): Models.Response<string | any[]> {\n\n    return async (request, response) => {\n\n      const model = await CrudHelpers.getModel(id, this.repo);\n      if (model === void 0) {\n        return;\n      }\n      CrudHelpers.preventUndefinedModel(model, id)\n      let value = model[property];\n      let result: any;\n      if (_.isString(value) || _.isArray(value)) {\n        result = (value as string).slice(alreadyLength);\n\n      }\n\n\n      return result;\n    }\n\n  }\n\n  @Firedev.Http.GET(`/${Firedev.symbols.CRUD_TABLE_MODELS}-pagination`)\n  pagination<T = any>(\n    @Query('pageNumber') pageNumber: number = 1,\n    @Query('pageSize') pageSize: number = 10,\n    @Query('search') search: string = '',\n  ): Models.Response<T[]> {\n\n    return async (request, response) => {\n      if (this.repo) {\n\n        const query = {\n          page: pageNumber,\n          take: pageSize,\n          keyword: search,\n        };\n\n\n\n\n        const take = query.take || 10\n        const page = query.page || 1;\n        const skip = (page - 1) * take;\n        const keyword = query.keyword || ''\n\n        const data = await this.repo.findAndCount(\n          {\n\n\n            take: take,\n            skip: skip\n          }\n        );\n\n        const [result, total] = data;\n        response?.setHeader(SYMBOL.X_TOTAL_COUNT, total)\n\n\n\n\n\n\n\n\n\n        return result;\n      }\n      return []\n    }\n\n  }\n\n\n\n\n  @Firedev.Http.GET(`/${Firedev.symbols.CRUD_TABLE_MODELS}`)\n  getAll(): Models.Response<T[]> {\n\n    return async (request, response) => {\n      if (this.repo) {\n        const { models, totalCount } = await this.db.getAll();\n        response?.setHeader(SYMBOL.X_TOTAL_COUNT, totalCount)\n        return models;\n      }\n      return [];\n    }\n\n  }\n\n  @Firedev.Http.GET(`/${Firedev.symbols.CRUD_TABLE_MODEL}/:id`)\n  getBy(@Path(`id`) id: number | string): Models.Response<T> {\n\n    return async () => {\n      const { model } = await this.db.getBy(id);\n      return model;\n    }\n\n  }\n\n\n  @Firedev.Http.PUT(`/${Firedev.symbols.CRUD_TABLE_MODEL}/:id`)\n  updateById(@Path(`id`) id: number | string, @Body() item: T): Models.Response<T> {\n\n\n    return async () => {\n      const { model } = await this.db.updateById(id, item as any);\n      return model;\n\n    }\n\n  }\n\n  @Firedev.Http.PUT(`/bulk/${Firedev.symbols.CRUD_TABLE_MODELS}`)\n  bulkUpdate(@Body() items: T[]): Models.Response<T[]> {\n\n    return async () => {\n      if (!Array.isArray(items) || (items?.length === 0)) {\n        return [];\n      }\n      const { models } = await this.db.bulkUpdate(items);\n      return models;\n    }\n\n  }\n\n  @Firedev.Http.DELETE(`/${Firedev.symbols.CRUD_TABLE_MODEL}/:id`)\n  deleteById(@Path(`id`) id: number): Models.Response<T> {\n\n    return async () => {\n      const { model } = await this.db.deleteById(id);\n      return model;\n    }\n\n  }\n\n  @Firedev.Http.DELETE(`/bulk/${Firedev.symbols.CRUD_TABLE_MODELS}/:ids`)\n  bulkDelete(@Path(`ids`) ids: (number | string)[]): Models.Response<(number | string | T)[]> {\n\n    return async () => {\n      const { models } = await this.db.bulkDelete(ids);\n      return models;\n    }\n\n  }\n\n\n  @Firedev.Http.POST(`/${Firedev.symbols.CRUD_TABLE_MODEL}/`)\n  create(@Body() item: T): Models.Response<T> {\n\n    return async () => {\n      const { model } = await this.db.create(item as any);\n      return model;\n    }\n\n  }\n\n  @Firedev.Http.POST(`/bulk/${Firedev.symbols.CRUD_TABLE_MODELS}/`)\n  bulkCreate(@Body() items: T): Models.Response<T[]> {\n\n    return async () => {\n      const { models } = await this.db.bulkCreate(items as any);\n      return models;\n    }\n\n  }\n\n}\n\n ;({}); // @--end-of-file-for-module=morphi lib/crud/base-crud-model.ts","\n\nimport { _ } from 'tnp-core/websql';\nimport { CLASS } from 'typescript-class-helpers/websql';\n\nexport function findTypeForEntity(entity: Function, isArray: boolean = false) {\n  if (!_.isArray(RegisterComponentType.prototype.types)) {\n    RegisterComponentType.prototype.types = []\n  }\n  return getRegisteredComponents().find(c => (c.entity === entity && c.isArray === isArray));\n}\n\nexport type FormlyEntityType = { name: string, component: Function; entity?: Function, isArray?: boolean; };\n\nexport function typeFromEntity(component: Function, entity?: Function | Function[]) {\n  const isArray = _.isArray(entity);\n  if (isArray) {\n    entity = _.first(entity as any);\n  }\n  let name = CLASS.getName(component)\n  let res = { name, component, entity, isArray };\n\n  return res;\n}\n\nexport function typeFromName(component: Function, name: string) {\n  let res = { name, component };\n  return res;\n}\n\nexport function RegisterComponentTypeForEntity(entity: Function | Function[]) {\n  if (!_.isArray(RegisterComponentType.prototype.types)) {\n    RegisterComponentType.prototype.types = []\n  }\n  return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {\n    RegisterComponentType.prototype.types.push(typeFromEntity(target, entity))\n  } as any;\n}\n\nexport function RegisterComponentType(className: string, ...optionslNames: string[]) {\n  if (!_.isArray(RegisterComponentType.prototype.types)) {\n    RegisterComponentType.prototype.types = []\n  }\n  return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {\n    CLASS.NAME(className)(target)\n    RegisterComponentType.prototype.types.push(typeFromEntity(target))\n    optionslNames.forEach(name => {\n      RegisterComponentType.prototype.types.push(typeFromName(target, name))\n    })\n  } as any;\n}\n\n\nexport function getRegisteredComponents() {\n  let registered = RegisterComponentType.prototype.types as FormlyEntityType[];\n  if (!Array.isArray(registered)) {\n    return []\n  }\n\n  return registered;\n}\n\n ;({}); // @--end-of-file-for-module=morphi lib/crud/type-from-entity.ts","\n\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport { _ } from 'tnp-core/websql';\nimport { Mapping } from 'ng2-rest/websql';\nimport { findTypeForEntity } from './type-from-entity';\nimport { CLASS } from 'typescript-class-helpers/websql';\nimport { CoreModels } from 'tnp-core/websql';\nimport { FormlyInputType } from './formly.models';\n\nexport function getFromlyConfigFor(\n  target: Function,\n  options: {\n    formType?: CoreModels.UIFramework;\n    keysPathesToInclude?: string[];\n    keysPathesToExclude?: string[];\n    parentModel?: string;\n    relativePath?: string;\n    level?: number;\n    maxLevel?: number;\n  } = {}\n) {\n  const { formType = 'material', keysPathesToExclude = [], keysPathesToInclude = [],\n    parentModel, relativePath = '', level = 0, maxLevel = 4,\n  } = options;\n\n\n  if (level === maxLevel) {\n    return [];\n  }\n\n  const mapping: Mapping.Mapping = Mapping.getModelsMapping(target);\n\n  const fieldNames = CLASS.describeProperites(target);\n  const checkExclude = (_.isArray(keysPathesToExclude) && keysPathesToExclude.length > 0);\n  const checkInclude = (_.isArray(keysPathesToInclude) && keysPathesToInclude.length > 0);\n  if (checkExclude && checkInclude) {\n    throw new Error(`In Firedev function getFromlyConfigFor(...) please use keysPathesToInclude or keysPathesToExclude, `)\n  }\n\n\n\n\n\n\n\n\n  let fields: FormlyFieldConfig[] = [];\n\n\n  function inputToPush(key: string, type: FormlyInputType, model: string,\n    inptToPushOptions?: {\n      targetChild?: Function,\n      selectOptions?: any[],\n    }) {\n    const { targetChild, selectOptions } = inptToPushOptions || {};\n\n    let res: FormlyFieldConfig;\n    if (type === 'repeat') {\n      const fieldGroup = getFromlyConfigFor(targetChild,\n        {\n          formType, keysPathesToInclude, keysPathesToExclude,\n          relativePath: `${relativePath}.${key}`,\n          level: (level + 1), maxLevel\n        })\n      if (fieldGroup.length > 0) {\n        res = {\n          key,\n          type,\n          defaultValue: [],\n          fieldArray: {\n            fieldGroupClassName: 'row',\n            templateOptions: {\n              label: `Add new ${_.startCase(key)}`\n            },\n            fieldGroup\n          }\n        }\n      }\n\n    } else if (type === 'group') {\n      const fieldGroup = getFromlyConfigFor(targetChild,\n        {\n          formType, keysPathesToInclude, keysPathesToExclude, parentModel: model,\n          relativePath: `${relativePath}.${key}`,\n          level: (level + 1), maxLevel\n        })\n      if (fieldGroup.length > 0) {\n        res = {\n          fieldGroupClassName: 'row',\n          templateOptions: {\n            label: `${_.startCase(key)}`\n          },\n          wrappers: ['groupwrap'],\n          fieldGroup\n        }\n      }\n    } else {\n      res = {\n        key,\n        model,\n        type,\n        defaultValue: !_.isUndefined(target.prototype[key]) ? target.prototype[key] : undefined,\n        templateOptions: {\n          label: _.isString(model) ? `${model.split('.').map(l => _.startCase(l)).join(' / ')} / ${_.startCase(key)}`\n            : _.startCase(key),\n          options: selectOptions,\n        }\n      }\n    }\n    if (res) {\n      Object.keys(res).forEach(key => res[key] === undefined ? delete res[key] : '');\n    }\n    return res;\n  }\n\n\n\n  function isAlowedPath(key: string) {\n    let isAlowed = true;\n    const matchPath = relativePath === '' ? key : `${relativePath}:${key}`\n    if (checkExclude) {\n      if (keysPathesToExclude.includes(matchPath)) {\n\n        isAlowed = false;\n      } else {\n        isAlowed = true;\n      }\n    } else if (checkInclude) {\n      if (keysPathesToInclude.includes(matchPath)) {\n\n        isAlowed = true;\n      } else {\n        isAlowed = false;\n      }\n    }\n\n    return isAlowed;\n  }\n\n\n  const simpleResolved = []\n\n\n  function resolveSimpleTypes() {\n\n    for (const key in target.prototype) {\n      if (target.prototype.hasOwnProperty(key) && !_.isFunction(target.prototype[key])) {\n\n        if (!isAlowedPath(key)) {\n          continue;\n        }\n\n        if (!_.isUndefined(mapping[key])) {\n          continue;\n        }\n\n        const element = target.prototype[key];\n        let type: FormlyInputType = 'input';\n        if (_.isBoolean(element)) {\n          type = 'switch'\n        } else if (_.isDate(element)) {\n          type = 'datepicker'\n        } else if (_.isFunction(target['getOptionsFor'])) {\n          var selectOptions = target['getOptionsFor'](key);\n          if (!_.isUndefined(selectOptions)) {\n            type = 'select'\n          }\n        } else if (_.isFunction(target.prototype?.getOptionsFor)) {\n          var selectOptions = target.prototype?.getOptionsFor(key);\n          if (!_.isUndefined(selectOptions)) {\n            type = 'select'\n          }\n        }\n        fields.push(inputToPush(key, type, parentModel, { selectOptions }))\n        simpleResolved.push(key)\n      }\n    }\n  }\n\n\n\n  function resolveComplexTypes() {\n\n    fieldNames\n      .filter(key => !simpleResolved.includes(key))\n      .forEach(key => {\n\n        if (isAlowedPath(key) && !_.isUndefined(mapping[key])) {\n          let className = mapping[key]\n          const isArray = _.isArray(className)\n          className = isArray ? _.first(className) : className;\n\n          if (className === 'Date') {\n            fields.push(inputToPush(key, 'datepicker', parentModel))\n          } else {\n            const targetChild = CLASS.getBy(className);\n\n            if (targetChild) {\n\n\n              const ftype = findTypeForEntity(targetChild, isArray);\n\n              if (ftype) {\n                fields = fields.concat(inputToPush(key, ftype.name as any, key))\n              } else {\n                if (isArray) {\n                  fields = fields.concat(inputToPush(key, 'repeat', key, { targetChild }))\n                } else {\n                  fields = fields.concat(inputToPush(key, 'group', key, { targetChild }))\n                }\n              }\n\n            }\n          }\n\n        }\n      });\n  }\n\n\n  function generate() {\n    resolveSimpleTypes();\n\n    resolveComplexTypes()\n\n  }\n\n  generate()\n  return fields.filter(f => !!f);\n}\n\nexport type FormlyArrayTransformFn =\n  (fieldsArray: FormlyFieldConfig[],\n    fieldObject?: { [propKey: string]: FormlyFieldConfig })\n    => FormlyFieldConfig[]\n\n ;({}); // @--end-of-file-for-module=morphi lib/crud/fromly.ts","\n\n\nexport type FormlyInputType = 'input' | 'switch' | 'datepicker' | 'repeat' | 'group' | 'select';\n\n ;({}); // @--end-of-file-for-module=morphi lib/crud/formly.models.ts","\n\nimport { _ } from 'tnp-core/websql';\nimport { CLASS } from 'typescript-class-helpers/websql';\n\nconst DEFAULT_PAGE_SIZE = 10;\n\n@CLASS.NAME('PaginationConfig')\nexport class PaginationConfig<T = any> {\n\n  public static defaultConfig<T>() {\n    return PaginationConfig.from<T>({} as any);\n  }\n\n  public static from<T>(dataObj: Partial<PaginationConfig>): PaginationConfig<T> {\n    dataObj = _.omit(dataObj, ['content']);\n    const instance = Object.assign(new PaginationConfig(), dataObj) as PaginationConfig;\n    ([\n      'totalElements',\n      'totalPages',\n      'number',\n      'numberOfElements',\n    ] as ((keyof PaginationConfig)[])).forEach((key) => {\n      if (_.isUndefined(instance[key])) {\n        // @ts-ignore\n        instance[key] = 0;\n      }\n    });\n    ([\n      'hasNext',\n      'hasPrevious',\n      'first',\n      'last',\n      'pageable',\n    ] as ((keyof PaginationConfig)[])).forEach((key) => {\n      if (_.isUndefined(instance[key])) {\n        // @ts-ignore\n        instance[key] = false;\n      }\n    });\n    if (_.isNil(instance.sortOrders)) {\n      instance.sortOrders = [];\n    }\n    if (_.isNil(instance.size)) {\n      instance.size = DEFAULT_PAGE_SIZE;\n    }\n    return instance;\n  }\n\n  content: T[];\n  totalElements: number;\n  totalPages: number;\n  number: number;\n  numberOfElements?: number;\n  size?: number;\n  sortOrders?: any[];\n  hasNext?: boolean;\n  hasPrevious?: boolean;\n  first?: boolean;\n  last?: boolean;\n  pageable?: boolean;\n  private constructor() { }\n\n  params() {\n    const config = _.cloneDeep(this);\n    const allowed = _.pick(config, ([\n      'number',\n      'size',\n    ] as (keyof PaginationConfig)[]) as any);\n    return Object\n      .keys(allowed)\n      .reduce((a, b) => {\n        return _.merge(a, {\n          ['page-' + b]: config[b],\n        });\n      }, {});\n  }\n\n  clone(): PaginationConfig {\n    return _.merge(new PaginationConfig(), _.cloneDeep(this));\n  }\n}\n\n ;({}); // @--end-of-file-for-module=morphi lib/crud/pagination-config.ts","\n\nexport * from './base-crud-model';\nexport * from './fromly';\nexport * from './type-from-entity';\nexport * from './formly.models';\nexport * from './pagination-config';\n\nexport * from './db-crud';\n\n\n ;({}); // @--end-of-file-for-module=morphi lib/crud/index.ts","\n\nexport * from './decorators-endpoint-class';\nexport * from './decorators-methods';\nexport * from './decorators-params';\n\n ;({}); // @--end-of-file-for-module=morphi lib/decorators/index.ts","\n\n/* */\n/* */\n  \n\nimport { Repository } from 'firedev-typeorm/websql';\nimport { Connection } from 'firedev-typeorm/websql';\nexport { Connection } from 'firedev-typeorm/websql';\n\nimport { SYMBOL } from '../symbols';\nimport { CLASS } from 'typescript-class-helpers/websql';\n\n\nimport { _ } from 'tnp-core/websql';\nimport { BASE_ENTITY } from './framework-entity';\nimport { BASE_REPOSITORY } from './framework-repository';\nimport { FrameworkContext } from './framework-context';\n\n\nexport function tableNameFrom(entityClass: Function | BASE_ENTITY<any>) {\n  entityClass = entityClass as Function;\n  const className = CLASS.getName(entityClass);\n  return className;\n}\n\n\nexport function classNameVlidation(className, target: Function) {\n\n  setTimeout(() => {\n\n    if (_.isUndefined(className) && FrameworkContext.isProductionMode) {\n      throw `[Firedev]\n    Please provide \"className\" property for each Controller and Entity:\n\n        @Firedev.Controller({ className: 'MyExampleCtrl'  })\n        class MyExampleCtrl {\n          ...\n        }\n\n        @Firedev.Entity({ className: 'MyExampleEntity'  })\n        class MyExampleEntity {\n          ...\n        }\n\n  Notice that minified javascript code does not preserve\n  Functions/Classes names -this is only solution to preserve classes names.\n\n      `;\n    }\n  });\n\n  return _.isUndefined(className) ? target.name : className;\n}\n\n\nexport function repositoryFrom<E, R = Repository<E>>(connection: Connection, entityFN: Function, repoFn?: Function): R {\n  if (!connection) {\n    console.error(`[Morphi][repositoryFrom] no connection!\nPlease check your Morphi.Repository(...) decorators `, entityFN, repoFn)\n    return\n  }\n  const context = FrameworkContext.findForTraget(entityFN);\n  let repo: Repository<any>;\n  if (!!entityFN && !entityFN[SYMBOL.HAS_TABLE_IN_DB]) {\n    if (_.isFunction(repoFn)) {\n      let repo = context.getInstanceBy(repoFn);\n      return repo as any;\n    }\n    console.warn(`Repository function not abailable for ${CLASS.getName(entityFN)}`)\n    return;\n  }\n\n  if (repoFn) {\n    repo = connection.getCustomRepository(repoFn);\n    let existedRepo = context.getInstanceBy(repoFn);\n\n  } else {\n    repo = connection.getRepository(entityFN) as any;\n  }\n  repo['_'] = {};\n  repo['__'] = {};\n\n  const compolexProperties = (repo as BASE_REPOSITORY<any, any>).globalAliases;\n\n  if (Array.isArray(compolexProperties)) {\n\n    compolexProperties.forEach(alias => {\n      repo['__'][alias] = {};\n\n      const describedProps = CLASS.describeProperites(entityFN)\n\n\n      describedProps.concat(compolexProperties as any).forEach(prop => {\n        repo['__'][alias][prop] = `${alias as any}.${prop}`; // TODO_NOT_IMPORTANT temp solution\n      })\n\n      const props = CLASS.describeProperites(entityFN)\n\n      props.forEach(prop => {\n        repo['__'][alias][prop] = `${alias as any}.${prop}`; // TODO_NOT_IMPORTANT ideal solution\n      })\n\n    })\n\n    compolexProperties.forEach(alias => {\n      repo['_'][alias] = alias; // TODO_NOT_IMPORTANT make it getter with reference\n    })\n  }\n\n  return repo as any;\n}\n\n\n ;({}); // @--end-of-file-for-module=morphi lib/framework/framework-helpers.ts","\n\n\nimport {   EventSubscriber } from 'firedev-typeorm/websql';/* */\n/* */\n\n\n\nimport { _ } from 'tnp-core/websql';\nimport { ENDPOINT, __ENDPOINT } from '../decorators/decorators-endpoint-class';\nimport { BaseCRUD } from '../crud/base-crud-model';\nimport { classNameVlidation } from './framework-helpers';\nimport { Models } from '../models';\nimport { CLASS } from 'typescript-class-helpers/websql';\nimport { FrameworkContext } from './framework-context';\n\nconst updatedWithCtrl = {};\nconst updatedStaticWithCtrl = {};\n\nfunction getSing(target) {\n  const context = FrameworkContext.findForTraget(target);\n\n  const res = context.getInstanceBy(target);\n  if (!res) {\n    console.warn('[firedev][getSing] can not get instance by target', target);\n  }\n  return res;\n}\n\nfunction updateChain(entity: Function, target: Function) {\n  if (!_.isFunction(entity)) {\n    return\n  }\n  const className = CLASS.getName(entity);\n\n  if (updatedWithCtrl[className]) {\n    console.warn(`[Firedev] Property 'ctrl' already exist for ${className}`);\n    try {\n      Object.defineProperty(entity.prototype, 'ctrl', {\n        get: function () {\n          return getSing(target);\n        }\n      })\n    } catch (error) { }\n  } else {\n    updatedWithCtrl[className] = true;\n    Object.defineProperty(entity.prototype, 'ctrl', {\n      get: function () {\n        return getSing(target);\n      }\n    })\n  }\n  if (updatedStaticWithCtrl[className]) {\n    console.warn(`[Firedev] Static property 'ctrl' already exist for \"${className}\"`);\n    try {\n      Object.defineProperty(entity, 'ctrl', {\n        get: function () {\n          return getSing(target);\n        }\n      })\n    } catch (error) { }\n  } else {\n    updatedStaticWithCtrl[className] = true;\n    Object.defineProperty(entity, 'ctrl', {\n      get: function () {\n        return getSing(target);\n      }\n    })\n  }\n\n\n}\n\nexport function Controller(options?: {\n  className?: string;\n  /**\n   * typeorm realtime subscribtion // TODO disabled for now, does not make sense ?s\n   */\n\n  /**\n   * Entity required fro CRUD functions\n   */\n  entity?: Function,\n\n  /**\n   * override default path for controller api\n   */\n  path?: string,\n  autoinit?: boolean,\n\n  auth?: Models.AuthCallBack\n\n}) {\n  let { className, realtime, autoinit = false, entity, additionalEntities } = options || {} as any;\n\n  return function (target: Function) {\n\n    if (realtime) {\n      EventSubscriber()(target)\n    }\n\n\n\n\n    className = classNameVlidation(className, target);\n    CLASS.NAME(className)(target);\n\n\n\n\n\n\n    //\n    if (autoinit) {\n\n      __ENDPOINT(target)(target)\n    } else {\n\n      ENDPOINT(options)(target)\n    }\n\n    if (_.isArray(additionalEntities)) {\n      additionalEntities.forEach(c => {\n        updateChain(c, target)\n      })\n    }\n    if (_.isFunction(entity)) {\n      updateChain(entity, target);\n    }\n    return target as any;\n  }\n}\n\n\nexport interface BASE_CONTROLLER_INIT {\n  initExampleDbData?: (isWoker?: boolean) => Promise<any>;\n}\n\n\n@Controller({\n  className: 'BASE_CONTROLLER',\n  autoinit: true\n})\nexport abstract class BASE_CONTROLLER<EntityType> extends BaseCRUD<EntityType>\n\n  implements BASE_CONTROLLER_INIT\n\n{\n\n\n\n\n\n\n\n\n\n  async initExampleDbData(isWorker = false) {\n\n  }\n\n\n\n}\n\n ;({}); // @--end-of-file-for-module=morphi lib/framework/framework-controller.ts","\n\nimport { _ } from 'tnp-core/websql';\nimport { Log, Level } from 'ng2-logger/websql';\nimport { SYMBOL } from '../symbols';\nimport { classNameVlidation } from './framework-helpers';\nimport { Mapping, Models } from 'ng2-rest/websql';\n\n\nimport {   Entity as TypeormEntity, Tree } from 'firedev-typeorm/websql';/* */\n/* */\n\nimport { tableNameFrom } from './framework-helpers';\n\nimport { CLASS } from 'typescript-class-helpers/websql';\n\nconst log = Log.create('Framework entity',\n  Level.__NOTHING\n)\n\n\nfunction getUpdateID(id, entityName, propterty, config) {\n  return `${_.kebabCase(id)}-${_.kebabCase(entityName)}-${_.kebabCase(propterty)}-${_.isObject(config) ? _.kebabCase(JSON.stringify(config)) : ''\n    }`\n}\n\nexport interface IBASE_ENTITY extends BASE_ENTITY<any> {\n\n}\n\nconst IS_RELATIME = Symbol()\nconst IS_RELATIME_PROPERTY = Symbol()\n\nfunction getRealtimeIsRealtime(entity, property: string) {\n  if (!_.isObject(entity[IS_RELATIME_PROPERTY])) {\n    entity[IS_RELATIME_PROPERTY] = {};\n  }\n  return entity[IS_RELATIME_PROPERTY][property]\n}\n\nexport function Entity<T = {}>(options?: {\n  className?: string;\n\n  defaultModelValues?: Mapping.ModelValue<T>;\n  defaultModelMapping?: Mapping.Mapping<T>;\n  /**\n   * default unique property is \"id\"\n   * for your entity it may be something else\n   */\n  uniqueKeyProp?: (keyof T);\n\n  defaultModelMappingDeep?: { [lodashPathes: string]: string | [string]; }\n\n\n\n\n\n\n\n  createTable?: boolean;\n\n\n}) {\n\n\n\n\n\n\n  let {\n    defaultModelValues,\n\n    defaultModelMapping,\n    defaultModelMappingDeep = {},\n    uniqueKeyProp = 'id',\n\n    className,\n\n\n\n\n\n\n\n\n    createTable = true,\n\n  } = options;\n  return function (target: any) {\n\n\n    className = classNameVlidation(className, target);\n\n    CLASS.NAME(className, {\n      uniqueKey: uniqueKeyProp,\n\n\n    } as any)(target)\n    Mapping.DefaultModelWithMapping<T>(defaultModelValues, _.merge(defaultModelMapping, defaultModelMappingDeep))(target)\n\n\n    Mapping.DefaultModelWithMapping<T>(void 0, {})(target)\n\n\n\n\n\n\n\n\n    if (createTable) {\n\n      TypeormEntity(tableNameFrom(target))(target)\n    }\n    target[SYMBOL.HAS_TABLE_IN_DB] = createTable;\n\n\n\n\n\n  }\n\n}\n\nexport abstract class BASE_ENTITY<T = any> {\n\n  /**\n   * reserver property for uniq identifier\n   * Note: if id is not uniq.. maybe create getter for id ?\n   */\n  abstract id?: number | string;\n  /**\n   * here will be injected Firedev controller instance for entity\n   * for easy creation of intuitive api\n   */\n  public ctrl?: any;\n  /**\n   * here will be injected Firedev controller instance for entity\n   * for easy creation of intuitive api\n   */\n  public static ctrl?: any;\n}\n\n ;({}); // @--end-of-file-for-module=morphi lib/framework/framework-entity.ts","\n\nimport {   Repository as TypeormRepository, EntityRepository } from 'firedev-typeorm/websql';/* */\n/* */\n\nimport { _ } from 'tnp-core/websql';\n\nexport function Repository(entity: Function) {\n  return function (target: any) {\n    EntityRepository(entity)(target)\n  }\n}\n\n\nexport abstract class BASE_REPOSITORY<Entity, GlobalAliases = {}> extends TypeormRepository<Entity> {\n  __?: { [prop in keyof GlobalAliases]: { [propertyName in keyof Entity]: string } };\n  _?: GlobalAliases;\n\n  globalAliases?: (keyof GlobalAliases)[];\n\n  pagination() {\n\n  }\n\n}\n\n ;({}); // @--end-of-file-for-module=morphi lib/framework/framework-repository.ts","\n\nimport { _ } from 'tnp-core/websql';\nimport { IConnectionOptions, StartOptions } from './framework-models';\nimport { FrameworkContext } from './framework-context';\nimport { Helpers } from 'tnp-helpers/websql';\nimport axios from 'axios';\nimport { Subject } from 'rxjs';\n\n\n\n\nexport function start(options: Omit<StartOptions,\n  'InitDataPrioritypublicAssets' |\n  'publicAssets' |\n  'allowedHosts'\n>) {\n\n\n\n\n  //   // @ts-ignore\n  //   let ngZone = window.ng.probe(windowgetAllAngularRootElements()[0]) // @ts-ignore\n\n\n\n\n\n\n\n\n  //   // @ts-ignore\n  //   let ngZone = window.ng.getComponent(windowgetAllAngularRootElements()[0]) // @ts-ignore\n\n\n\n\n\n\n\n\n  let admin\n\n\n\n  if (Helpers.isBrowser) {\n    admin = window['firedev'];\n  }\n\n\n  return new Promise<FrameworkContext>(async (resolve, reject) => {\n\n    let {\n      host,\n      controllers = [],\n      entities = [],\n      disabledRealtime,\n      allowedHosts,\n      session,\n\n      mode,\n      config,\n      InitDataPriority,\n      publicAssets = [],\n      middlewares = [],\n\n    } = options as StartOptions;\n/* */\n/* */\n/* */\n/* */\n  \n\n\n    mode = 'websql/backend-frontend';\n    if (config) { // @ts-ignore\n      config.type = 'sqljs';\n      // @ts-ignore\n      config.autoSave = true;\n      config['useLocalForage'] = !!window['localforage']\n\n      // @ts-ignore\n      config.location = (config.database || '').replace('.sqlite', '');\n\n      delete config.database;\n    }\n    // @ts-ignore\n\n\n\n\n\n\n    if (session) {\n      const oneHour = 1000 * 60 * 60 * 1; // 24;\n      if (!session.maxAge) {\n        session.maxAge = oneHour;\n      }\n      if (Helpers.isBrowser) {\n        axios.defaults.withCredentials = true;\n      }\n    }\n\n\n\n    if (config) {\n\n      const c = config as any as IConnectionOptions;\n      if (!admin || !admin.keepWebsqlDbDataAfterReload\n\n      ) {\n\n        c.dropSchema = true;\n        c.synchronize = true;\n      } else {\n\n        c.dropSchema = false;\n        delete c.synchronize // false is not auto synchonize - from what I understand\n      }\n    }\n\n    controllers = Array.isArray(controllers) ? controllers : [];\n    entities = Array.isArray(entities) ? entities : [];\n\n\n\n    const context = new FrameworkContext({\n      host,\n      controllers,\n      entities,\n      allowedHosts,\n      disabledRealtime,\n      session,\n\n      mode,\n      InitDataPriority,\n      publicAssets,\n      config,\n      middlewares,\n\n    });\n\n\n    await context.initNode();\n\n\n\n    context.initBrowser();\n\n\n    if (Helpers.isBrowser) {\n      setTimeout(() => {\n        // @ts-ignore\n        let angularVer = _.first(getAllAngularRootElements()[0].attributes['ng-version']?.value?.split('.'));\n\n        const verNum = Number(angularVer);\n\n        if (!isNaN(verNum) && !FrameworkContext.isNgZoneInited) {\n          Helpers.error(`\n  [Firedev] Angular ${verNum} version detected...\n  [Firedev] NgZone instance is not inited... please use:\n\n  constructor(\n    ...\n    ngzone:NgZone\n    ...\n  ) {\n    Firedev.initNgZone(ngzone);\n  }\n\n          `, true, true)\n        }\n      });\n\n    }\n\n\n    let obs: Subject<boolean>;\n    if (!window['firedev']['contextLoaded']) {\n      obs = new Subject<boolean>();\n      window['firedev']['contextLoaded'] = obs;\n    } else {\n      obs = window['firedev']['contextLoaded'];\n    }\n    obs['anyContextLoaded'] = true;\n    obs.next(true);\n\n\n    resolve(context);\n  })\n\n\n}\n\n ;({}); // @--end-of-file-for-module=morphi lib/framework/framework-start.ts","\n\nimport type { BASE_CONTROLLER } from './framework-controller';\nimport type { BASE_ENTITY } from './framework-entity';\nimport { CoreModels } from 'tnp-core/websql';\n\n\nexport interface IConnectionOptions {\n  database: string;\n  type?: CoreModels.DatabaseType;\n  synchronize: boolean;\n  dropSchema: boolean;\n  logging: boolean;\n}\n\n\nexport type IConnectionOptionInit = Pick<IConnectionOptions, 'database' | 'logging' | 'type'>;\nexport type ISession = {\n  /**\n     * frontend host only needed when we are using\n     * withCredentials for axios\n     * and session cookie\n     */\n  frontendHost: string;\n  secret: string,\n  saveUninitialized: boolean,\n  cookie: {\n    maxAge: number,\n    /**\n     * true only for https, false fopr the rest\n     * when is true and http => everytime new session\n     */\n    secure: boolean\n  },\n  resave: boolean,\n}\n\nexport type ISessionExposed = {\n  /**\n   * REQUIRED - backend need to know that to negotiate credentials\n   * frontend host only needed when we are using\n   * withCredentials for axios\n   * and session cookie\n   */\n  frontendHost: string;\n  /**\n   * max age of session\n   */\n  maxAge?: number;\n}\n\nexport type MiddlewareType = [Function, any[]];\n\nexport type FrameworkMode =\n  'backend/frontend' |\n  'remote-backend' |\n  'tests' |\n  'backend/frontend-worker' |\n  'websql/backend-frontend'\n  ;\n\nexport interface StartOptions {\n\n  /**\n   * start server on this host\n   */\n  host: string;\n\n  /**\n   * Put firedev controllers here\n   */\n  controllers?: BASE_CONTROLLER<any>[] | Function[];\n\n  /**\n   * Put firedev entities here\n   */\n  entities?: BASE_ENTITY<any>[] | Function[];\n  /**\n   * Disable realtime/socket for this context\n   */\n  disabledRealtime?: boolean;\n\n  /**\n   * @deprecated\n   */\n  allowedHosts?: string[];\n  /**\n   * config for express http cookie sesison\n   */\n  session?: ISessionExposed;\n\n\n\n  mode?: FrameworkMode;\n  config?: IConnectionOptionInit;\n  middlewares?: MiddlewareType[];\n  /**\n   * @deprecated\n   */\n  InitDataPrioritypublicAssets?: { path: string; location: string }[];\n  /**\n * Put (some/all) firedev controllers here in data init priority order\n */\n  InitDataPriority?: BASE_CONTROLLER<any>[] | Function[];\n  /**\n   * @deprecated\n   */\n  publicAssets?: { path: string; location: string; }[];\n\n\n}\n\n ;({}); // @--end-of-file-for-module=morphi lib/framework/framework-models.ts","\n\nexport * from './framework-controller';\nexport * from './framework-entity';\nexport * from './framework-repository'\nexport * from './framework-start';\nexport * from './framework-models';\nexport * from './framework-helpers';\n\n ;({}); // @--end-of-file-for-module=morphi lib/framework/index.ts","\n\nexport { Models } from './models';\n\nexport { RepeatTypeComponent } from './crud/formly-repeat-component';\nexport { FormlyHorizontalWrapper } from './crud/formly-group-wrapper-component';\n\nimport { Observable, Subject } from 'rxjs';\n\nexport { Log, Level } from 'ng2-logger/websql';\n\nimport { _, Utils } from 'tnp-core/websql';\nimport * as crudMorph from './crud';\nimport * as decoratorsMorphi from './decorators';\nimport * as framework from './framework';\nimport * as realtime from './realtime';\nimport * as models from './models';\nimport * as sym from './symbols';\nimport { Helpers } from 'tnp-core/websql';\nimport { FrameworkContext } from './framework/framework-context';\nexport { FrameworkContext } from './framework/framework-context';\nimport * as context from './framework/framework-context';\nimport { MorphiHelpers } from './helpers';\n\n\nimport * as tsorm from 'firedev-typeorm/websql'\n\n\n/* */\n/* */\n/* */\n/* */\n  \n\n\nlet generate\n/* */\n/* */\n  \n\n\n// @ts-ignore\ngenerate = () => { }\n\n\n\n\nimport { Repository } from 'firedev-typeorm/websql';\n\n\nexport class TypeormRepository<T>\n\n  extends Repository<T>\n\n{\n\n}\n\n\nexport namespace Morphi {\n  export const symbols = sym.SYMBOL;\n  export const IsNode = Helpers.isNode;\n  export const IsBrowser = Helpers.isBrowser;\n  export function initNgZone(ngZone: any) {\n    context.FrameworkContext.initNGZone(ngZone);\n  }\n\n  /**\n   * Function only for websql mode\n   */\n  export const anyContextLoaded = () => {\n\n    let obs: Subject<boolean>;\n    if (!window['firedev']['contextLoaded']) {\n      obs = new Subject<boolean>();\n      window['firedev']['contextLoaded'] = obs;\n    } else {\n      obs = window['firedev']['contextLoaded'];\n    }\n    setTimeout(() => {\n      obs.next(!!obs['anyContextLoaded']);\n    })\n    return obs.asObservable();\n\n  }\n\n  export const isNode = Helpers.isNode;\n  export const isBrowser = Helpers.isBrowser;\n  export import FrameworkContext = context.FrameworkContext;\n  export function destroyContext(contextOrHost: FrameworkContext | string) {\n    if (_.isString(contextOrHost)) {\n      Helpers.log(`[Firedev] Destroying context by host: ${contextOrHost}`)\n      const context = FrameworkContext.findByHost(contextOrHost);\n      if (!context) {\n        Helpers.log(`[Firedev] no context to delete by host: \"${contextOrHost}\"`);\n        return;\n      }\n      contextOrHost = context;\n    }\n    FrameworkContext.destroy(contextOrHost);\n  }\n\n  export function getHttpPathBy<T = Function>(classFn: new () => T, port: number, method: (keyof T)) {\n    return `http://localhost:${port}${MorphiHelpers.getPathFor(classFn as any)}/${method as any}`;\n  }\n\n  /**\n   * Header name for model data config\n   */\n  export const MDC_KEY = sym.SYMBOL.MDC_KEY;\n  export const Platform = IsNode ? 'node' : 'browser';\n\n\n\n  export import Response = models.Models.Response;\n\n  export function enableProductionMode() {\n    FrameworkContext.isProductionMode = true;\n  }\n\n  export import Controller = framework.Controller;\n  export import Entity = framework.Entity;\n\n  export type Session = {\n    [additionalvalues: string]: any;\n    destroy: () => void;\n    save: () => void;\n    reload: () => void;\n    id: string;\n    token: string;\n    req: any;\n    userId: number | string;\n    cookie: any;\n  };\n\n  export import BASE_CONTROLLER_INIT = framework.BASE_CONTROLLER_INIT;\n  export import Repository = framework.Repository;\n  export const getResponseValue = MorphiHelpers.getResponseValue;\n\n\n\n  export import init = framework.start;\n  export import InitOptions = framework.StartOptions;\n  export import IConnectionOptions = framework.IConnectionOptions;\n  export import SYMBOL = sym.SYMBOL;\n\n\n\n  export namespace Realtime {\n    export namespace Browser {\n\n      export const listenChangesTableEntity = realtime.RealtimeBrowserRxjs.listenChangesEntityTable;\n      export const listenChangesEntity = realtime.RealtimeBrowserRxjs.listenChangesEntity;\n      export const listenChangesEntityObj = realtime.RealtimeBrowserRxjs.listenChangesEntityObj\n\n\n\n\n\n\n\n\n\n\n    }\n\n\n    export namespace Server {\n      export const TrigggerEntityTableChanges = realtime.RealtimeNodejs.TrigggerEntityTableChanges;\n      export const TrigggerEntityChanges = realtime.RealtimeNodejs.TrigggerEntityChanges;\n      export const TrigggerEntityPropertyChanges = realtime.RealtimeNodejs.TrigggerEntityPropertyChanges;\n    }\n\n  }\n\n  export namespace CRUD {\n    export import Base = crudMorph.BaseCRUD;\n\n    export import DB = crudMorph.DbCrud;\n\n  }\n\n  export namespace Formly {\n    export import getFrom = crudMorph.getFromlyConfigFor;\n    export import RegisterComponentForEntity = crudMorph.RegisterComponentTypeForEntity;\n  }\n\n  export namespace Base {\n    export import Controller = framework.BASE_CONTROLLER;\n    export import Entity = framework.BASE_ENTITY;\n\n    export import Repository = framework.BASE_REPOSITORY;\n\n  }\n\n  export namespace Http {\n    export import GET = decoratorsMorphi.GET;\n    export import POST = decoratorsMorphi.POST;\n    export import PUT = decoratorsMorphi.PUT;\n    export import DELETE = decoratorsMorphi.DELETE;\n    export import PATCH = decoratorsMorphi.PATCH;\n    export import HEAD = decoratorsMorphi.HEAD;\n    export namespace Param {\n      export import Query = decoratorsMorphi.Query;\n      export import Path = decoratorsMorphi.Path;\n      export import Body = decoratorsMorphi.Body;\n      export import Cookie = decoratorsMorphi.Cookie;\n      export import Header = decoratorsMorphi.Header;\n    }\n    export namespace Resopnse {\n      export import Success = models.Models.Rest.HttpResponse;\n      export import Error = models.Models.Rest.HttpResponseError;\n    }\n  }\n\n\n  export namespace Websql {\n    export function useFakeTimeout(miliseconds: number) {\n\n      window[sym.SYMBOL.WEBSQL_REST_PROGRESS_TIMEOUT] = miliseconds;\n\n    }\n  }\n\n  export namespace Auth {\n\n    export namespace Password {\n      export namespace Hash {\n        export const Generate = generate;\n      }\n    }\n\n  }\n\n\n  /**\n   * Check typeorm\n   * https://typeorm.io\n   */\n  export namespace Orm {\n    export const Repository = TypeormRepository;\n\n    export import getConnection = tsorm.getConnection;\n    export import Errors = models.Models.Errors;\n    export import Connection = tsorm.Connection;\n    export import TableNameFrom = framework.tableNameFrom;\n    export import RepositoryFrom = framework.repositoryFrom\n    export namespace ListenEvent {\n      export import AfterInsert = tsorm.AfterInsert;\n      export import AfterLoad = tsorm.AfterLoad;\n      export import AfterRecover = tsorm.AfterRecover;\n      export import AfterRemove = tsorm.AfterRemove;\n      export import AfterSoftRemove = tsorm.AfterSoftRemove;\n      export import AfterUpdate = tsorm.AfterUpdate;\n      export import BeforeInsert = tsorm.BeforeInsert;\n      export import BeforeRecover = tsorm.BeforeRecover;\n      export import BeforeRemove = tsorm.BeforeRemove;\n      export import BeforeSoftRemove = tsorm.BeforeSoftRemove;\n      export import BeforeUpdate = tsorm.BeforeUpdate;\n    }\n\n    export namespace Tree {\n      export import Children = tsorm.TreeChildren;\n      export import Parent = tsorm.TreeParent;\n    }\n    export namespace Column {\n      export import Generated = tsorm.PrimaryGeneratedColumn;\n      export import Primary = tsorm.PrimaryColumn;\n      export import Index = tsorm.Index;\n      export import CreateDate = tsorm.CreateDateColumn;\n      export import UpdateDate = tsorm.UpdateDateColumn\n      export import DeleteDate = tsorm.DeleteDateColumn\n      export import Custom = tsorm.Column;\n      export const SimpleJson = () => tsorm.Column({ type: 'simple-json', nullable: true });\n\n      export const Boolean = (defaultValue: boolean) => tsorm.Column({ type: 'boolean', default: defaultValue });\n\n\n\n      export import Version = tsorm.VersionColumn;\n      export import Virtual = tsorm.VirtualColumn;\n    }\n\n    export namespace Join {\n      export import Table = tsorm.JoinTable;\n      export import Column = tsorm.JoinColumn;\n    }\n    export namespace Relation {\n      export import OneToMany = tsorm.OneToMany;\n      export import OneToOne = tsorm.OneToOne;\n      export import ManyToMany = tsorm.ManyToMany;\n      export import ManyToOne = tsorm.ManyToOne;\n    }\n\n  }\n\n\n\n}\n\n ;({}); // @--end-of-file-for-module=morphi lib/index.ts","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ModelsNg2Rest","_","HelpersNg2Rest","Helpers","log","Ng2RestModels","TypeormEntity","TypeormRepository","Repository","sym.SYMBOL","context.FrameworkContext","framework.Controller","framework.Entity","framework.Repository","framework.start","realtime.RealtimeBrowserRxjs","realtime.RealtimeNodejs","crudMorph.BaseCRUD","crudMorph.DbCrud","crudMorph.getFromlyConfigFor","crudMorph.RegisterComponentTypeForEntity","framework.BASE_CONTROLLER","framework.BASE_ENTITY","framework.BASE_REPOSITORY","decoratorsMorphi.GET","decoratorsMorphi.POST","decoratorsMorphi.PUT","decoratorsMorphi.DELETE","decoratorsMorphi.PATCH","decoratorsMorphi.HEAD","decoratorsMorphi.Query","decoratorsMorphi.Path","decoratorsMorphi.Body","decoratorsMorphi.Cookie","decoratorsMorphi.Header","models.Models","framework.tableNameFrom","framework.repositoryFrom"],"mappings":"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"}