import type { ActionHooks } from './ActionHooks'; import type { MethodConfig } from './MethodConfig'; import type { PropertyConfig } from './PropertyConfig'; import type { SpecialProperty } from './SpecialProperty'; import { PropertyConfigMap } from './PropertyConfigMap'; export class ActionConfig { public timeout?: number; public placeOfInit: 'server' | 'client' = 'client'; public momentOfInit: 'call' | 'connect' | 'create' = 'call'; public permanent = false; public iKnow = false; public maxInstances = 5; public sendMetaOnCreate = false; public specialProperties?: Record; public properties = new PropertyConfigMap(); public methods: Record = {}; public hooks: Partial = {}; public client?: any; public handlers: { [type: string]: string; } = {}; // todo прикрутить тип для ключа... public shared = new Set(); // public getActionMeta() { // return { // ...this.getActionMetaData(), // properties: { // ...this.getFieldsMetaData(this.config.properties), // }, // methods: { // ...this.getFieldsMetaData(this.config.methods), // }, // }; // } // // private getActionMetaData() { // return { // ...this, // hooks: undefined, // properties: undefined, // methods: undefined, // }; // } // // private getFieldsMetaData(fields: Record) { // const props = Object.entries(fields) // .map(([prop, cfg]) => [prop, { // ...cfg, // hooks: undefined, // }]); // return Object.fromEntries(props); // } }